가. 연산 코드 (Operation Code)
연산 코드(Operation Code)는 CPU가 수행하는 연산의 종류를 나타내는 부분입니다. 주로 다음과 같은 네 가지 기능으로 나뉩니다:
- 연산 기능: 연산 코드는 사칙연산(덧셈, 뺄셈, 곱셈, 나눗셈), 이동(shift), 보수(complement) 등의 산술연산과 논리곱, 논리합, 부정 등의 논리 연산을 수행합니다. 이러한 연산은 CPU의 ALU(산술 논리 연산 장치)에서 처리됩니다.
- 제어 기능: 연산 코드는 조건 분기(conditional branch)와 무조건 분기(unconditional branch) 등을 사용하여 명령어의 실행 순서를 제어합니다. 이는 프로그램 흐름을 조절하는 데 중요한 역할을 합니다.
- 데이터 전달 기능: 연산 코드는 레지스터와 레지스터 간의 데이터 전달, 혹은 주기억장치와 레지스터 간의 데이터 전달을 담당합니다. 데이터 전달은 CPU 내부의 레지스터 간이나 주기억장치와의 데이터 이동을 의미합니다.
- 입출력 기능: 연산 코드는 프로그램과 데이터를 주기억장치에 전달하고, 연산 결과를 출력장치에 전달하는 등의 입출력 동작을 수행합니다. 이는 컴퓨터 시스템과 외부 장치 간의 데이터 이동을 담당합니다.
이러한 연산 코드는 CPU의 명령어 집합에 포함되어 있으며, 프로그램이나 운영체제가 CPU에게 명령을 내릴 때 사용됩니다. 최신 기술 동향에서는 연산 코드가 더욱 다양하고 효율적인 연산을 지원하며, 병렬 처리 및 벡터화 등의 기술이 연산 코드에 적용되어 성능을 향상시키는 방향으로 발전하고 있습니다.
나. 피연산자 (Operand)
피연산자(Operand)는 연산자(Operator)가 작동할 때 필요한 데이터 또는 값입니다. 주로 다음과 같은 형태로 나타납니다:
- 주소(Address): 피연산자로서 주소가 사용될 경우, 이는 기억장치(memory)나 레지스터(register)의 주소가 저장됩니다. 프로그램이나 데이터가 저장된 위치를 가리키는 역할을 합니다.
- 숫자/문자(Number/Character): 숫자는 정수, 고정 소수점 수, 부동 소수점 수 등의 형태로 저장될 수 있습니다. 또한, 문자는 아스키코드 또는 유니코드와 같은 문자 인코딩 체계에 따라 저장됩니다.
- 논리 데이터(Boolean Data): 피연산자로서 논리 데이터가 사용될 경우, 이는 참(true) 또는 거짓(false)을 표현하는 데 사용됩니다. 주로 비트(bit)나 플래그(flag)로 저장되며, 조건문이나 논리 연산에 활용됩니다.
피연산자는 연산의 대상이 되는 데이터이므로, 연산자에 따라 그 형태와 처리 방식이 달라질 수 있습니다. 최신 기술 동향에서는 효율적인 피연산자 처리를 위해 SIMD(Single Instruction, Multiple Data) 및 벡터화 등의 기술이 발전하고 있으며, 이를 통해 다양한 데이터 유형에 대한 병렬 처리가 가능해지고 있습니다.
다. 명령어 사이클
인출 사이클과 특수 목적 레지스터의 동작 과정은 일반적으로 다음과 같습니다:
- 인출 사이클 (Fetch Cycle):
- 주기억장치에서 현재 실행할 명령어를 인출합니다.
- 명령어 주소는 프로그램 카운터(Program Counter, PC)에 의해 결정됩니다.
- 프로그램 카운터의 값은 다음 명령어의 주소를 가리킵니다.
- 명령어를 인출한 후에는 PC 값이 증가하여 다음 명령어의 주소를 가리킵니다.
- 특수 목적 레지스터의 동작 과정:
- MAR(Memory Address Register, 메모리 주소 레지스터)는 프로그램 카운터의 값을 받아들여 해당 주소로 주기억장치에 접근합니다.
- MBR(Memory Buffer Register, 메모리 버퍼 레지스터)는 주기억장치에서 인출한 명령어를 저장합니다.
- IR(Instruction Register, 명령어 레지스터)는 MBR에서 인출된 명령어를 받아들여 보관합니다.
위의 동작 과정은 기본적인 명령어 사이클의 일부분으로, CPU가 명령어를 수행하기 위해 필요한 데이터를 인출하고 저장하는 과정을 설명합니다.
[명령어 수행 과정] T0 : MAR <- PC T1 : MBR <- M[MAR], PC <- PC + 1 T2 : IR <- MBR |
○ 실행 사이클과 특수 목적 레지스터의 동작 과정(더하기(ADD) 연산으로 과정)
[명령어 수행 과정] ADD addr 명령어 연산 T0 : MAR <- IR(Addr) T1 : MBR <- M[MAR] T2 : AC <- AC + MBR |
위의 동작들은 각각의 단계에서 이루어지며 명령어의 실행을 위해 필요한 데이터의 준비를 수행합니다. 아래는 각 동작에 대한 설명입니다.
위의 동작 과정은 기본적인 명령어 사이클의 일부분으로, CPU가 명령어를 수행하기 위해 필요한 데이터를 인출하고 저장하는 과정을 설명합니다.
[명령어 수행 과정] T0 : MAR <- PC T1 : MBR <- M[MAR], PC <- PC + 1 T2 : IR <- MBR |
○ 실행 사이클과 특수 목적 레지스터의 동작 과정(더하기(ADD) 연산으로 과정)
[명령어 수행 과정] ADD addr 명령어 연산 T0 : MAR <- IR(Addr) T1 : MBR <- M[MAR] T2 : AC <- AC + MBR |
위의 동작들은 각각의 단계에서 이루어지며 명령어의 실행을 위해 필요한 데이터의 준비를 수행합니다. 아래는 각 동작에 대한 설명입니다.
1. 명령어 레지스터(IR)의 내용을 메모리 주소 레지스터(MAR)로 전달:
- 명령어 레지스터(IR)에는 현재 실행 중인 명령어가 저장됩니다.
- 메모리 주소 레지스터(MAR)은 명령어에서 필요한 데이터의 주소를 저장하는 데 사용됩니다.
- 따라서 명령어 레지스터(IR)의 내용은 메모리 주소 레지스터(MAR)로 전달되어 해당 명령어에서 필요한 데이터가 위치한 주소를 지정합니다.
2. 메모리에 저장된 데이터 값을 메모리 버퍼 레지스터(MBR)에 저장:
- 메모리 버퍼 레지스터(MBR)는 주기억장치에서 데이터를 읽거나 쓸 때 사용됩니다.
- 메모리 주소 레지스터(MAR)에 저장된 주소를 기반으로 메모리에서 데이터를 읽어와 메모리 버퍼 레지스터(MBR)에 저장합니다.
- 이 데이터는 다음 단계에서 필요한 레지스터로 전달되거나 연산에 사용될 수 있습니다.
3. 누산기(AC)에 저장된 값에 ADD 연산을 실행:
- 누산기(AC)는 연산 결과를 저장하는 레지스터로 일반적으로 산술 및 논리 연산을 수행하는 데 사용됩니다.
- ADD 연산이 실행되면 누산기(AC)에 저장된 값에 다음 단계에서 읽어온 데이터나 레지스터의 값이 더해집니다.
- 이러한 연산은 프로그램의 흐름에 따라 실행되며, 필요한 데이터를 누산기에 더하는 등의 연산을 수행합니다.
위의 과정은 명령어의 실행을 위해 필요한 데이터를 메모리에서 읽어오고, 해당 데이터를 이용하여 연산을 수행하는 과정을 나타냅니다.
이 글의 내용 및 그림, 사진 등의 콘텐츠는 작성자에게 저작권이 있습니다.
이를 무단으로 복제, 수정, 배포하는 행위는 불법이며, 관련 법률에 의해 엄격하게 제재될 수 있습니다.
작성자의 동의 없이 이 콘텐츠를 사용하는 경우, 민사 및 형사상의 책임을 물을 수 있습니다.
Copyright. 우리의인공지능항해 All rights reserved.
댓글 없음:
댓글 쓰기