처리장치 개요
중앙처리장치(CPU)는 데이터를 처리하는 연산을 실행하는 "처리장치(Processing Unit)"와 연산의 실행 순서를 결정하는 "제어장치(Control Unit)"로 분류된다. 처리장치는 연산장치와 레지스터들로 구성되며 연산장치는 말 그대로 산술, 논리, 비트 연산들을 수행하고, 레지스터는 데이터나 연산의 결과를 저장한다. 이때, 연산장치는 독립적으로 데이터 처리를 할 수는 없고 레지스터들과 조합되어 데이터를 처리한다.
마이크로연산 (Micro-Operations)
마이크로연산이란 레지스터에 저장된 데이터에 대해 실행하는 기본 연산을 말한다. 마이크로연산은 일반적으로 "레지스터 전송 마이크로연산", "산술 마이크로연산", "논리 마이크로연산", "시프트 마이크로연산" 이렇게 4가지로 분류된다.
레지스터 전송 마이크로연산
레지스터 전송 마이크로연산은 한 레지스터에서 다른 레지스터로 이진 데이터를 전송하는 연산이다. 이때, 레지스터 전송은 한 레지스터에서 다른 레지스터로 데이터를 복사하거나 이동하는 연산을 말한다. 레지스터 전송 마이크로연산은 "단순 전송 연산", "조건부 전송 연산", "병렬 전송 연산"으로 나눌 수 있다.
단순 전송 연산
: 레지스터 간 데이터를 직접 복사하는 연산으로, 레지스터 전송 마이크로연산 중 가장 기본적인 연산이다.조건부 전송 연산
: 어떤 조건이 참일 경우에만 데이터를 전송하는 연산이다.병렬 전송 연산
: 여러 개의 비트(혹은 여러 레지스터)를 한 번에 동시에 전송하는 연산이다.
이러한 레지스터 전송 마이크로연산은 전송문을 통하여 식으로 표현되는데, 이때 사용되는 기호는 다음과 같다.
기호 | 의미 | 예시 |
영문자(숫자 포함) | 레지스터를 의미한다. | |
괄호 | 레지스터의 일부분을 의미한다. | |
화살표 | 데이터의 이동을 의미한다. | |
쉼표 | 동시에 실행되는 2개 이상의 마이크로연산을 구분한다. | |
대괄호 | 메모리에서의 주소 표현을 의미한다. |
레지스터 전송 마이크로연산은 다음과 같이 식으로 표현된다.
NOTE!
단순 전송 연산:
조건부 전송 연산: (이때, 이 식은 와 동일하다.)
병렬 전송 연산:
산술 마이크로연산
산술 마이크로연산은 레지스터 내의 데이터들에 대해 진행하는 기본적인 산술 연산이며, 덧셈, 뺄셈, 1 증가, 1 감소, 보수 연산 등을 수행한다. 산술 마이크로연산에서 사용되는 기호는 다음과 같다.
기호 | 의미 |
과 의 합을 에 저장한다. | |
의 보수(1의 보수)를 에 저장한다. | |
에 2의 보수를 계산하여 저장한다. | |
에 의 2의 보수를 더한 후 에 저장한다. | |
에 1을 더한다. (상승 카운트) | |
에 1을 뺀다 (하강 카운트) |
논리 마이크로연산
논리 마이크로연산은 레지스터 내의 데이터에 대해 비트를 조작하는 연산이다. 이때, 레지스터에 저장된 각 비트를 독립된 이진 값으로 취급한다.
기호 | 의미 |
비트별 논리적 NOT (1의 보수) | |
비트별 논리적 AND (비트 클리어) | |
비트별 논리적 OR (비트 세트) | |
비트별 논리적 XOR (비트별 보수) |
시프트 마이크로연산
시프트 마이크로연산은 레지스터 내의 데이터를 시프트 시키는 연산이다. 데이터의 측면 이동에 사용되며, 출발 레지스터에 있는 내용은 왼쪽 또는 오른쪽으로 시프트될 수 있다. 왼쪽은 최상위 비트의 방향이고 오른쪽은 최하위 비트의 방향으로 이동하는 것이다.
유형 | 기호 | 8비트 데이터의 경우 | |
출발지 | 시프트 후: 목적지 | ||
왼쪽 시프트 | |||
오른쪽 시프트 |
처리장치 동작 원리
처리장치는 마이크로연산을 수행할 수 있는 레지스터와 산술/논리 연산장치(ALU)로 구성된다. 그리고 레지스터와 산술/논리 연산장치 사이에는 연결선로인 버스가 있다. 처리장치의 동작 원리는 다음과 같다.
NOTE!
처리장치에서 하나의 마이크로연산은 지정된 출발 레지스터의 내용이 산술/논리 연산장치(ALU)의 입력으로 전달되고, ALU에서 그 연산을 실행한 후 그 결과가 도착 레지스터에 전송된다.
내부 버스 (Internal Bus)
내부 버스란 중앙처리장치 내부의 연산장치와 레지스터 사이의 정보 전송 경로를 말한다. 반면, 중앙처리장치와 중앙처리장치 외부의 장치 사이에 정보를 전송하는 경로는 외부 버스이다.
내부 버스는 처리장치 내부에 있는 레지스터들 간의 데이터 전송을 위한 공통 선로의 집합으로 레지스터 간의 통신이 가능하도록 한다. 내부 버스는 멀티플렉서와 디코더를 이용하여 구성한다. 이때, 멀티플렉서는 출발 레지스터, 디코더는 도착 레지스터를 선택한다.
산술/논리 연산장치 (Arithmetic Logic Unit: ALU)
ALU는 기본적인 산술연산과 논리연산을 실행하는 조합논리회로이며, 산술연산회로와 논리연산회로의 결합으로 구성된다.
산술연산회로
산술연산회로는 기본적으로 병렬가산기로 구성되며, 여러 개의 전가산기 회로를 연속적으로 연결시켜 만든다.
병렬가산기로 들어가는 제어입력값을 선택하면 여러 가지 형태의 산술연산이 실행 가능하다. 병렬가산기에 입력되는 두 입력 중 한 입력은 선택신호 , 에 의해 제어된다. 다음은 병렬가산기에는 와 , 두 가지가 입력되고 선택입력 와 을 조절하여 값을 제어하여 얻을 수 있는 여러 산술연산이다.
선택 신호 | 입력값 | 출력 | ||
모두 | (전송) | (증가) | ||
(가산) | ||||
(감산) | ||||
모두 | (감소) | (전송) |
논리연산회로
논리연산회로는 입력된 데이터의 각 비트를 독립된 이진 변수로 간주하여 비트별 연산을 수행한다. 논리연산에는 AND, OR, XOR, NOT 등이 있다.
논리연산회로는 4개의 게이트와 4X1 멀티플렉서로 구성된다. 4개의 논리 연산은 각각 해당 연산을 행하는 게이트를 통과하면 구해지며, 게이트의 출력은 2개의 선택신호 , 을 가지는 멀티플렉서에 입력되고, 선택신호는 멀티플렉서의 입력 중 하나를 선택하여 값을 출력으로 내준다.
출력 | 연산 | ||
AND | |||
OR | |||
XOR | |||
NOT |
상태 레지스터 (Status Register)
상태 레지스터는 ALU에서 산술연산을 수행한 후 연산 결과에 대한 상태를 저장하는 레지스터이다. 상태 레지스터는 (Carry Bit), (Sign Bit), (Zero Bit), (Overflow Bit)로 구성되어있으며, 1개 상태가 1개 비트씩 기억되도록 비트 단위로 되어있다.
Carry Bit(C)
: 두 수를 가산 또는 감산하여 받아올림이나 받아내림이 발생하면 비트가 1로 세트되고, 아니면 0이 된다.Sign Bit(S)
: 최상위 비트가 0이면 양수, 1이면 음수를 나타낸다.Zero Bit(Z)
: 두 수를 연산 후, 결과값이 0이면 1로 세트, 0이 아니면 0으로 세트된다.Overflow Bit(O)
: 산술 연산에서 두 수를 가산할 때 결과를 저장할 수 있는 레지스터의 자릿수가 모자랄 때(오버플로우) 비트가 1로 세트된다.
시프터 (Shifter)
ALU에는 데이터를 비트 단위로 이동시키는 시프트 기능이 없기에, ALU 출력 단에 시프터를 연결하여 시프트 연산을 수행한다. 시프트 연산은 입력 데이터의 모든 비트를 각각 서로 이웃한 비트로 자리를 옮기는 연산을 말한다.
연산 | 기능 | ||
시프트 없이 전송 | |||
오른쪽 시프트하여 전송 | |||
왼쪽 시프트하여 전송 | |||
모든 출력비트에 을 전송 |
제어단어 (Control Word)
처리장치에 있는 선택신호는 처리장치 내에서 수행되는 마이크로연산을 선택하는 변수이다. 선택신호는 마이크로연산을 제어하기에 제어변수로 표현되기도 한다.
처리장치에는 16개의 이진 제어변수가 있으며, 이를 묶어 제어단어(Control Word)를 구성한다. 16비트 제어단어는 필드라는 다섯 부분으로 구성되고 다음과 같이 정의된다.
A 필드
: ALU로 입력되는 A 버스 선택 (3비트)B 필드
: ALU로 입력되는 B 버스 선택 (3비트)D 필드
: 도착 레지스터 선택 (3비트)F 필드
: ALU의 연산 선택 (4비트)H 필드
: 시프터의 연산 선택 (3비트)
16비트로 구성된 제어단어를 처리장치의 각 구성요소에 선택신호로 추가하면 해당 마이크로연산이 수행된다. 제어단어를 생성시키는 가장 효과적인 방법은 제어단어를 기억장치에 저장하고, 기억장치의 출력을 처리장치의 각 구성요소의 선택신호로 연결하는 것이다. 이를 통해 연속적인 제어단어를 읽음으로 처리장치에서의 마이크로연산을 정해진 순서대로, 연속적으로 수행하는 것이 가능해진다.