컴퓨터 구조론 4장 [제어 유니트- 제어유니트의 기능과 구조]
제어 유니트가 수행하는 주요 기능들
- 명령어 코드의 해독
- 명령어 실행에 필요한 제어 신호들의 발생
마이크로 연산(micro-operation)
명령어 실행 사이클의 각 주기동안 수행되는 기본적인 CPU 동작
- 제어 유니트는 컴퓨터 프로그램을 구성하고 있는 명령어들을 해독(decode)하고, 그 결과에 따라 명령어 실행에 필요한 동작들을 수행시키기 위한 제어 신호들을 발생하는 장치이다.
- 명령어 사이클이 적절히 수행되도록 모든 동작들을 제어하는장치이다.
- 명령어 사이클은 부 사이클인 인출 사이클, 간접 사이클, 실행 사이클 및 인터럽트 사이클로 이루어지며, 각 사이클에서는 여러 개의 마이크로 연산들이 수행된다.
ex) 인출 사이클에서 수행되는 마이크로-연산들
t0 : MAR <- PC
t1 : MBR <- M[MAR], PC <-PC+1
t2 : IR <- MBR
마이크로명령어(microinstruction)
- 각 마이크로-연산을 나타내는 2진 비트 표현으로서, 제어 단어(control word)라고도 한다.
루틴(routine)
- CPU의 특정 기능을 수행하기 위한 마이크로프로그램(microprogram)
CPU 클록 주기마다 서로 다른 마이크로-연산들이 수행되며, 결과적으로 명령어 인출 동작은 세 주기만에 종료된다. 단 이 예시에서두 번째 주기에서는 두 개의 마이크로-연산들이 동시에 수행된다. 각 마이크로-연산이 실제 수행되기 위해서는 2진 비트들로 표현되어야 하는데, 그와 같이 비트들로 이루어진 각 단어를 마이크로 명령어 혹은 제어 단어 라고 부른다. 그리고 마이크로 명령어들의 집합을 마이크로프로그램이라고 한다.
마이크로 명령어들은 명령어 인출과 같은 CPU의 특정 기능을 위하여 그룹 단위로 작성되는데, 이러한 각 그룹을 루틴이라 부른다. 결과적으로, 명령어 사이클을 위한 마잌크로 프로그램은 인출 사이클 루틴, 간접 사이클 루틴, 그리고 실행 사이클 루틴들로 구성된다.
ex) 모든 명령어들에 공통인 인출 사이클 루틴은 세 개의 마이크로명령어들로 이루어진다. 실행 사이클 루틴은 각 명령어마다 서로 다르며, 각 루틴의 길이도 명령어에 따라 결정된다.
제어 유니트의 구조
제어 유니트의 주요 구성 요소
- 명령어 해독기(instructrion decoder) : 명령어 레지스터(IR)로부터 들어오는 명령어의 연산 코드를 해독하여 해당 연산을 수행하기 위한 루틴의 시작 주소를 결정한다.
- 제어 주소 레지스터(control address register : CAR) 다ㅣ음에 실행할 마이크로명령어의 주소를 저장하는 레지스터이다. 이 주소는 제어 기억장치의 특정 위치를 가리킨다.
- 제어 기억장치(control memory) : 마이크로명령어들로 이루어진 마이크로프로그램을 저장하는 내부 기억장치이다.
- 제어 버퍼 레지스터(control buffer register : CBR) : 제어 기억장치로부터 읽혀진 마이크로명령어를 일시적으로 저장하는 레지스터이다.
- 서브루틴 레지스터(subroutine register : SBR) : 마이크로프로그램에서 서브루틴이 호출되는 경우에, 현재의 CAR 내용을 일시적으로 저장하는 레지스터이다.
- 순서제어 모듈(sequencing module) : 마이크로 명령어의 실행 순서를 결정하는 회로들의 집합이다.
CPU의 명령어 세트를 설계 및 구현과정
- 1. 명령어들의 종류와 비트 패턴을 정의하고,
- 2. 그 명령어들의 실행에 필요한 하드웨어를 설계하며,
- 3. 각 명령어를 위한실행 사이클 루틴을 마이크로프로그래밍 한다는 것을 의미한다.
- 마이크로프로그래밍은 그러한 루틴들의 집합이므로 CPU 설계 단계에서 확정되고, 그 후에는 변하지 않는다.
- 따라서 마이크로프로그램을 저장하는 제어 기억장치는 ROM으로 만들어져 CPU 칩 내에 포함된다.
루틴들의 길이와 제어 기억장치에 저장되는 위치는 CPU마다 다르다.
ex) 제어기억장치의 용량이 128 단어인 CPU에서 제어 기억장치는 위와 같이 구성될 수 있다.
제어 기억장치의 처음 절반(64 단어) 부분에 공통 루틴들, 즉 인출과 간접 및 인터럽트 사이클을 위한 마이크로프로그램 루틴들을 저장하고, 하반부 64 단어들에는 각 명령어를 위한 실행 사이클 루틴들을 저장하고 있다.
인출사이클 동안에 명령어 레지스터로 적재된 명령어 비트들 중에서 연산 코드(op-code) 부분은 제어 유니트의 명령어 해독기로 들어온다. 이 연산 코드가 지정하는 연산은 실행 사이클 동안에 제어 기억장치에 저장된 해당 루틴을 실행함으로써 수행된다. 따라서 명령어 해독기는 연산 코드를 이용하여 제어 기억장치 내 해당 실행 사이클 루틴의 시작 주소를 찾아야 한다.(이 과정을 명령어를 해독한다 라고 말한다.) 그 방법에는 몇 가지가 있다.
사상(mapping) 방식
- 명령어의 연산 코드를 이용하여 해당 사이클 루틴의 시작 주소를 찾는 기법을 말한다.
사상 방식에서는 명령어의 연산 코드를 특정 비트 패턴과 혼합시킴으로써 그 연산의 수행에 필요한 실행 사이클 루틴의 시작 주소를 찾아낸다. 위의 그림과 같이, 실행 상이클 루틴들이 제어 기억장치의 64번지부터 저장되어 있고, 각 루틴은 최대 네 개씩의 마이크로명령어들로 구성된다고 가정했을 때, 만약 16-비트길이의 명령어가 4비트의 연산 코드, 1비트의 간접 주소지정(I) 비트 및 11비트의 길이 주소로 구성되어 있다면, 사상 과정은 다음과 같아진다.
사상 함수의 최상위 비트가 1이므로, 사상에 의해 결정되는 주소가 64번지부터 시작할 수 있게 된다.
ex) LOAD 명령어의 연산 코드가 0001이라면, 사상 함수에 의하여 이 연산을 위한 실행 사이클 루틴의 시작 주소는 1000100, 즉 64 + 4 = 68번지로 결정된다. 따라서 그 주소가 CAR로 입력되며, 명령어 실행 사이클이 시작되면 그 위치부터 마이크로 명령어들을 순차적으로 인출하여 수행하게 된다.
Reference
컴퓨터 구조론 개정 5판
https://yz-zone.tistory.com/78
[ 컴퓨터구조 ] 4.1-2 제어 유니트의 기능/ 구조
제어 유니트의 기능 ▣ 제어 유니트의 기능 ▪ 명령어 코드의 해독 ▪ 명령어 실행에 필요한 제어 신호들의 발생 ▣ 마이크로명령어(micro-instruction) ▪ 명령어 사이클의 각 주기에서 실행되는 각
yz-zone.tistory.com