Transcript Document

마이크로 연산과 제어장치
IT CookBook, 컴퓨터 구조와 원리 2.0
학습목표
 프로세스 내의 제어장치의 기능과 역할을 공부한다.
 제어장치의 구성과 마이크로 연산을 공부한다.
 제어장치의 구현 방법을 알아본다.
 마이크로 프로그램을 이용한 제어장치의 구조와 동작을
이해한다.
목차
 제어장치의 개념
 마이크로 연산
 제어장치 모델의 구현
마이크로 프로그램을 이용한 제어
01 제어장치의 개념
 제어장치는 주기억장치에 저장된 명령을 해독하고, 해독한 명령이
지시하는 연산이 수행되도록 해당 장치에 제어 신호를 전달한다.
• 제어장치의 동작을 이해하면 어떤 과정을 통해서 명령어가 처리되지 알 수
있고 결과적으로 컴퓨터의 동작을 이해할 수 있다.
 제어장치는 구현하는 방법에 따라서 하드 와이어드(Hard Wired)
제어와 마이크로 프로그램(Micro Programmed) 제어, 두 가지 방법으로
분류한다.
• 하드 와이어드 제어방식은 일반적인 논리회로인 논리 게이트와
플립플롭으로 제어장치를 설계한 것으로 마이크로 연산을 빠르게 수행할 수
있다. 그러나 속도적인 장점에도 불구하고 융통성이 없다.
• 현대의 컴퓨터에서는 마이크로 프로그래밍 기법을 사용하여 제어장치를
구성하는 마이크로 프로그램 제어를 사용하고 있다. 이 방법은 제어 함수나
제어 단어와 같은 제어 정보를 특별한 기억장치에 0과 1로 기억시킨
구조로서, 기억장치의 내용을 변경할 수 있어 융통성이 좋다.
01 제어장치의 개념
 제어장치의 구성
• 제어장치는 명령어가 저장된 기억장치에서 명령어를 인출하기 위한
레지스터와 명령어 해독기 그리고 명령어의 순서를 제어하기 위한 프로그램
카운터를 비롯한 각종 장치가 필요하다.
 제어장치의 내부 구성
• 제어장치는 기억장치 버퍼 레지스터, 기억장치 주소 레지스터, 명령
레지스터, 명령 해독기, 프로그램 카운터로 구성된다.
• 프로그램 카운터를 통해서 다음 명령어를 결정한다. 그리고 주기억장치에서
명령을 인출하여 기억장치 버퍼 레지스터와 명령 레지스터에 임시저장
과정을 거쳐서, 명령 해독기에서 명령어를 해독하게 된다. 마지막으로
해독된 내용들은 연산장치로 전달된다.
01 제어장치의 개념
 제어장치에서 명령어 사이클 수행
• 명령어 사이클은 명령어 인출 단계와 실행 단계로 구성되며, 제어장치에서
수행되는 명령어 인출과 명령어 실행을 통해서 명령의 해독과 실행과정을
파악가능하다.
 명령어 인출
• 명령어를 해독하려면 해독할 명령을 주기억장치에서 제어장치로 읽어와야
하는데, 이것을 명령어 인출이라고 한다.
• 명령어 인출 과정
01 제어장치의 개념
 명령어 실행
• 명령어 인출이 완료되면 명령어 실행 사이클이 시작된다. 명령 실행단계에서
는 이미 명령 코드가 명령 레지스터에 저장되어 있다.
• 명령어 실행 과정
02 마이크로 연산
• 프로그램 실행 과정에서 각 명령은 명령어 사이클에 의해서 수행된다.
• 명령어 사이클은 부 사이클인 명령어 인출과 실행 사이클로 구성되며, 부
사이클도 여러 단계로 이루어 진다.
• 부 사이클의 각 단계에서 수행되는 동작은 프로그램 수행에서 가장
기본단위의 수행으로 마이크로-연산이라고 한다. 이러한 이유로 원자
연산이라고도 한다.
• 따라서 마이크로 연산을 통해서 제어과정을 이해할 수 있다.
 마이크로 연산의 형식
• 마이크로 연산을 표현하기 위해서는 동작 기호를 사용한다.
02 마이크로 연산
 마이크로 연산의 동작 기호
 대문자 또는 대문자와 숫자가 함께 표현 경우
• 레지스터를 문자 기호로 나타낸 것이다. 표현의 예에서 R은 R레지스터를
나타내고 MAR은 기억장치 주소 레지스터를 나타낸다. 그리고 R2는 두 번째
레지스터라는 의미로 표현된 것이다.
 레지스터를 표현하는 문자 기호의 아래첨자
• 레지스터 내의 비트 위치를 나타낸다. 표현의 예에서 R1은 R레지스터의
1번째 비트를 나타내고, B2는 B레지스터의 2번째 비트를 나타낸다.
 괄호()
• 레지스터 내의 위치를 나타낸 것으로, 기억장치 경우에서는 주소가 지정하는
기억장치 위치를 나타내는 용도로 많이 사용된다.
• I(1-5)는 I레지스터의 1~5번 위치의 데이터를 나타내며, M(MAR)에서는
MAR에 저장된 번지의 기억장치의 위치를 나타낸다. MAR에 100을 저장하고
있다면 M(MAR)은 기억장치 100번지를 나타낸다.
02 마이크로 연산
 마이크로 연산의 동작 기호
 화살표
• 정보가 전달되는 것을 나타낸 것으로 R←B는 B레지스터의 데이터를
R레지스터로 이동하는 것을 나타낸다.
 그침표( :)
• 제어를 수행하는 기능을 표시한다. 따라서 P: R←B는 제어기능 P에 의해 B의
레지스터 데이터가 R의 레지스터로 이동한다는 의미를 갖는다.
 쉼표(,)
• 2개 이상의 마이크로 연산을 구분하는데 사용된다.
02 마이크로 연산
 명령어 사이클의 마이크로 연산
 명령들의 집합인 프로그램은 계층 구조를 형성
• 프로그램이 실행된다는 것은 프로그램을 구성하는 명령어들이 순차적으로
중앙처리장치에서 해독되고 제어 신호를 발생하여서 실행한한.
• 완전한 명령어 사이클은 네 개의 부 사이클로 구성
 인출 사이클은 기억장치에서 명령어를 중앙처리장치로 읽어오는 과정이다.
 간접 사이클은 간접 주소지정 방법을 사용하는 경우에 유효 주소를 찾는 사이클이다.
 실행 사이클은 실제적으로 명령어가 실행되며, 여러 종류의 명령어가 존재하므로
해당 명령어에 맞게 동작을 실행하는 단계다.
 인터럽트 사이클은 프로그램 수행 중에 인터럽트 발생여부를 파악하고, 인터럽트가
발생했으면 인터럽트 서브 루틴이 수행 될 수 있도록 해주는 사이클이다.
 각 부 사이클의 실행은 여러 단계의 마이크로 연산으로 구성된다.
02 마이크로 연산
 인출 사이클(Fetch cycle)의 마이크로 연산
 명령어 인출 사이클의 마이크로 연산과정에서 필요한 레지스터들
• 기억장치 주소 레지스터는 주소 데이터를 전달하는 주소 버스와 접속되며, 읽
기 또는 쓰기 동작을 위해서 사용되는 주소를 임시로 저장한다.
• 기억장치 버퍼 레지스터는 데이터를 전송하는 데이터 버스와 접속되며, 읽기
또는 쓰기 동작을 수행할 데이터를 임시로 저장한다.
• 인출과정에서는 다음에 인출될 명령어의 주소를 가지고 있는 프로그램 카운
터와 인출된 명령을 임시로 저장하는 명령어 레지스터를 이용한다.
 인출의 과정을 마이크로 연산
 첫 번째 클록 t0에서는 다음 명령어의
주소가 저장된 PC 내용을 MAR로
이동시킨다.
 두 번째 클록 t1에서는 MAR에 저장된
주소에 근거하여, 해당 기억장치에 저장되어 있는 명령어를 MBR로 이동시킨다. 이와 동시
에 PC를 명령어 바이트 수만큼 증가시켜서 다음 명령어의 주소를 표시해 준다.
 MBR에 저장된 명령어 내용을 실행하기 위해서 IR로 이동하고 명령어 인출 단계를
완료한다. 그런데 인출 사이클에서 PC의 증가 단계는 세 번째 클록에서 수행될 수도 있다.
02 마이크로 연산
 간접 사이클(Indirect Cycle)의 마이크로 연산
 간접 사이클은 간접 주소지정 방식을 사용하는 명령어에서
오퍼랜드부분의 유효 주소를 결정하는데 사용된다.
• 간접 주소지정 방식을 사용한 명령어의 오퍼랜드 필드에는 읽거나 쓰기
동작을 수행할 데이터가 저장되어 있는 기억장치의 주소를 표시한다.
• 오퍼랜드 필드에 저장된 주소가 지시하는 기억 장소에 유효 주소가 저장되어
있다.
 기억장치에서의 간접 주소지정 방식과 레지스터 간접 주소지정 방식
02 마이크로 연산
 간접 사이클의 마이크로 연산
• 첫 번째 클록 t0에서는 명령어 레지스터에 저장되어 있는 명령어의 오퍼랜드
부분 즉, 주소 부분을 MAR로 이동한다. 이 주소는 유효 주소이거나, 유효
주소가 저장되어 있는 곳의 주소를 나타낸다.
• 두 번째 클록 t1에서는 유효 주소가 저장된 기억장치 또는 레지스터의 내용을
MBR에 저장한다.
• 세 번째 클록 t2에서는 MBR의 저장되어 있는 유효 주소를 명령어 레지스터의
주소부분으로 이동시킨다. 따라서 명령어 레지스터의 명령어 오퍼랜드
부분에 유효 주소가 자리를 잡게 된다. 그리고 실행사이클로 넘어 갈 것이다.
02 마이크로 연산
 실행 사이클의 마이크로 연산
• 컴퓨터에는 다양한 명령이 존재하며, 이 명령을 실행하는 실행 사이클에서
처리되는 마이크로 연산 또한 다양하다.
 덧셈 연산
• 덧셈 연산을 수행하는 ADD 명령어의 어셈블리 언어 표현
ADD R, X ; R ← R + Memory(X)
 기억장치 X번지의 내용과 레지스터 R이 덧셈
연산을 수행하고 그 결과는 다시 레지스터 R에 저장한다.
• 이 명령어가 실행되는 것을 마이크로
연산으로 표현하면
 t0 : 인출과정에서 얻은 명령어를 저장하고 있는 명령어 레지스터의 주소 부분만을
MAR로 이동시킨다. 이 과정은 액세스할 데이터가 저장된 기억장치 주소를 얻는
과정이다.
 t1 : 해당 주소의 기억장치 내용을 MBR로 이동시킨다. 즉, 덧셈 연산을 수행하게 될
데이터가 기억장치 버퍼 레지스터(MBR)로 이동하게 되는 것이다.
 t2 : 기억장치에서부터 이동된 데이터가 저장된 MBR의 내용과 R의 내용을 더하고,
그 결과값을 다시 R에 저장하게 된다.
02 마이크로 연산
 ISZ
• ISZ 명령어는 ‘Increment and Skip-if-Zero’의 약자로, 오퍼랜드의 값을 하나
증가시키고 그 결과 값이 0이면 다음 명령어를 실행하지 않고 건너뛰는
명령어다.
ISZ X
• X번지의 내용을 1 증가시키고, 그 결과가 0이면 다음 명령어를 실행하지 않고
건너뛰는 명령어 실행이 되는데 마이크로 연산은 네 개의 사이클로 구성된다.
 t0 : 명령어 레지스터 내의 주소부분 내용
(어셈블리 표현에서 X 번지)을 MAR에
적재한다.
 t1 : MAR에서 제시된 기억장치 주소에
의거하여, 기억장치에 저장된 데이터를
MBR로 적재한다.
 t2 : MBR의 내용을 하나 증가시킨다.
 t3 : 증가된 MBR의 내용을 원래의 기억장치에
저장하다. 이와 동시에, MBR의 내용을
검사하여서 그 값이 0이면 프로그램 카운터를 증가시켜서 다음의 명령어를 하나
건너뛰고 그 다음 명령어를 수행한다.
02 마이크로 연산
 BSA
• ‘Branch and Save return address’로 분기하고 복귀할 주소를 저장하는 명령
어로 서브 루틴 프로그램으로 분기하기 위해 사용된다. 어셈블리 표현은 다음
과 같다.
BSA X
• 이 명령어는 BSA 다음 명령어를 X번지에 저장하고, 새로운 X+1번지부터
실행을 계속하라는 의미다. 이 때, X번지에 저장된 데이터는 복귀 주소를
나타내고, 서브 루틴의 시작 주소는 X+1번지다. 마이크로 연산은 세 개의
클록으로 이루어진다.
 t0 : 명령어 레지스터의 주소부분 내용(어셈블리
표현에서 X)을 MAR에 적재한다. 그리고 동시에
프로그램 카운터의 내용, 다음 명령어 주소를
MBR에 적재한다.
 t1 : 명령어 레지스터의 주소부분 내용을 프로그램
카운터에 적재한다. 그리고 X번지에 MBR의 내용을
저장한다. 즉, 복귀 주소가 저장된다.
 t2 : 서브 루틴을 시작하기 위해서 X+1번지가 되도록 프로그램 카운터를 증가시킨다.
02 마이크로 연산
 인터럽트 사이클의 마이크로 연산
• 중앙처리장치가 현재 처리 중인 프로그램 루틴을 중단하고, 다른 프로그램을
수행하도록 하는 것이 인터럽트다.
• 명령어 사이클에서 인터럽트를 수행하려면 명령어 실행 사이클이 수행된 후
인터럽트 요청이 있는지 여부를 판단하고, 요청이 있을 경우 인터럽트 서비스
루틴이 시작되도록 해야 한다.
• 이러한 사이클을 인터럽트 사이클이라 한다. 다음은 인터럽트 사이클의 마이
크로 연산을 나타낸 것으로, 세 개의 클록으로 구성된다.
 t0 : 복귀주소를 저장하기 위해서 프로그램
카운터 내용을 MBR로 이동 시킨다.
 t1 : SP(스택 포인터)를 MAR로 이동시키고
인터럽트 처리 루틴 시작 주소를 PC에
적재한다. SP는 MBR에 저장되어 있는 내용을
스택에 저장하기 위해서 저장할 위치를
지정하는 데 사용된다.
 t2 : MBR의 내용을 MAR에 근거하여 해당
스택 포인터의 스택에 저장된다
02 마이크로 연산
 명령어 사이클 코드(Instruction Cycle Code)
• 중앙처리장치가 프로그램을 수행하면서 명령어가 명령어 사이클의 어느
부분을 수행하고 있는지 나타내는 코드를 명령어 사이클 코드라고 한다.
다음과 같이 명령어의 부 사이클을 이진수로 정의한다.
00 : 인출 , 01 : 간접, 10 : 실행, 11 : 인터럽트
 명령어 사이클의 흐름도
03 제어장치 모델의 구현
 중앙처리장치를 제어하기 위해 필요한 기능적 요구 사항
 중앙처리장치가 갖추어야 할 필수적인 구성 요소
•
•
•
•
산술 및 논리 연산장치(ALU)
레지스터 집합
내부 및 외부 데이터 통로
제어장치
 중앙처리장치가 수행할 마이크로 연산의 정의
•
•
•
•
레지스터들 간의 데이터 전송
레지스터에서 외부로의 데이터 전송
외부에서 레지스터로의 데이터 전송
산술 및 논리 연산 수행
 제어장치가 수행할 기능의 정의
• 순서제어(Sequencing)기능 : 중앙처리장치가 마이크로 연산을 적절한
순서대로 처리하도록 해주는 기능이 필요하다.
• 실행(Execution)기능 : 다양한 마이크로 연산에 대한 수행 기능이 필요하다.
03 제어장치 모델의 구현
 제어장치 모델
• 중앙처리장치를 제어하는 제어장치에는 여러 종류의 입력이 존재하며, 이
입력들의 조합으로 제어 신호를 생성하고 출력하게 된다.
 기본적인 제어장치의 모델
• 제어장치의 입력에는 클록, 명령어 레지스터에서의 연산코드, 플래그(flag)
신호, 제어 버스를 통해 입력되는 제어 신호가 있다.
• 제어장치의 출력에는 중앙처리장치로 보내는 제어 신호와 제어 버스를
통해서 외부로 보내는 제어 신호가 존재한다.
03 제어장치 모델의 구현
 제어장치의 입출력 신호
 제어장치로 들어오는 입력 신호
• 클록(Clock) 신호 : 제어장치의 동작 타이밍 기준이 되는 신호로서, 하나의
클록 펄스마다 하나의 마이크로 연산 혹은 마이크로 연산의 집합이
수행된다.
• 명령어 레지스터 : 명령어의 연산 코드 필드를 제어장치에 입력하여
수행해야 할 연산을 결정하게 한다.
• 플래그(flag)들 : 중앙처리장치의 상태를 나타내거나 이전 산술 및 논리
연산장치의 연산 결과를 검사하기 위해서 사용된다.
• 제어 버스에서 입력되는 제어 신호 : 인터럽트 처리의 요구 신호 및 확인
신호 등, 외부에서 들어오는 제어 신호다.
 제어장치에서 내보내는 출력 신호
• 중앙처리장치로 전달되는 제어 신호 : 레지스터 간 데이터를 전송할 때
발생되며, 특정 산술 및 논리 연산의 기능을 활성화할 때 출력 된다.
• 제어 버스를 통해 외부로 출력되는 제어 신호 : 중앙처리장치 밖의
기억장치나 입출력장치 모듈로 보내는 제어 신호가 존재한다.
03 제어장치 모델의 구현
 명령어 사이클에서의 제어 신호
 인출 사이클에서 발생되는 제어 신호
• t0의 MAR ← PC 과정에서는 PC에서 전달된 MAR의 내용이 주소 버스에
적재되려면 게이트를 열어주는 제어 신호가 필요하다. 그래서 다음 명령어의
주소가 주소 버스에 실리게 된다.
• t1의 MBR ← M(MAR) 과정에서는 제어 버스상의 ‘기억장치 읽기 제어 신호’를
활성화 한다. 그리고 데이터 버스의 내용이 MBR에 저장되도록 게이트를
열어주는 제어 신호가 발생된다.
• 같은 t1의 ‘PC ← PC + 1’의 과정에서는 프로그램 카운터의 내용에 1을 더하고
그 결과를 다시 프로그램 카운터에 저장하는 제어가 필요하다.
• t2의 IR ← MBR 과정에서는 MBR과 IR 사이에 있는 게이트를 열기 위한 제어
신호가 필요하다.
03 제어장치 모델의 구현
 간접 사이클에서 발생되는 제어 신호
• 간접 사이클은 간접 주소지정 방식에서만 이용되므로 먼저, 간접 주소지정
방식인지의 여부를 명령어 레지스터에서 검사하고 간접 사이클을 수행할지를
판단하는 제어 신호가 필요하다.
• t0의 ‘MAR ←IR(Address)’ 과정에서는 명령어 레지스터의 주소가 MAR로
전달되려면 게이트를 열어주기 위한 제어 신호가 필요하다.
• t1의 ‘MBR ← M(MAR)’ 과정에서는 시스템 버스에서 읽기 제어 신호가
활성화되고, 데이터 버스의 내용이 MBR에 저장되도록 게이트를 열어주는
제어 신호 발생된다.
• t2의 ‘IR(Address) ← MBR(Address)’ 과정에서는 인출 사이클과 마찬가지로
MBR과 IR 사이에 있는 게이트를 열어주기 위한 제어 신호가 사용된다.
 실행 사이클에서 발생되는 제어 신호
• 제어장치는 연산 코드(operation code)를 먼저 검사하고, 그 결과에 근거하여
실행 사이클 수행을 위한 마이크로 연산 순서를 결정한다.
• 그리고 이에 알맞은 제어 신호가 발생할 것이다. 즉, 다양한 명령 실행에
적합한 제어 신호를 발생한다.
03 제어장치 모델의 구현
 인터럽트 사이클에서 발생된 제어 신호
• 인터럽트 발생여부에 따라서 인터럽트 사이클의 수행여부가 결정된다.
그래서 인터럽트를 제어하는 신호가 필요하다. 만약, 인터럽트가 수행되면 세
개의 클록에 의해 동작이 수행된다.
• t0의 ‘MBR ← PC’ 과정에서는 MAR의 내용을 주소 버스에 싣도록 게이트를
열어주는 제어 신호가 사용된다.
• t1의 ‘MAR ← SP’ 과정과 ‘PC ← Routine-address’ 과정에서는 주소가
전달되므로 주소 버스를 제어하는 과정이 필요하다. 그래서 주소 버스의
게이트를 열어주는 제어 신호가 사용된다.
• t2의 ‘M(MAR) ← MBR’ 과정에서는 시스템 버스에서 쓰기 제어 신호가
활성화되고 데이터 버스의 내용이 기억장치에 저장되도록 게이트를 열어주는
제어 신호가 발생된다.
03 제어장치 모델의 구현
 데이터 통로상의 제어 신호
• 데이터 통로상에서 제어 신호들이 종료되는 곳을 Ci로 표시한다.
• 제어장치는 클록, 명령어 레지스터 그리고 플래그들에서 입력을 받고, 모든
입력을 조합하여 제어 신호를 발생한다.
03 제어장치 모델의 구현
 명령어 사이클과 제어 신호
03 제어장치 모델의 구현
 제어장치의 구현 방법
• 제어장치는 하드웨어적인 방법과 소프트웨어적인 방법, 두 가지 형태의 구현
방법이 존재한다.
 하드 와이어드 구현(hard wired implementation)
• 제어 신호 생성을 위해서 순차와 조합논리의 설계를 통해서 구성된다.
• 이 회로의 입력 신호는 출력 신호로 변환된다.
• 하드 와이어드의 구조
 제어장치를 중심으로 명령어 레지스터에서 입력이
해독될 수 있도록 해독기(Decoder)가 존재한다.
 클록을 입력으로 받아서 수행되는 시간발생기가
존재한다. 제어장치의 입력 신호 중 플래그와 제어
버스 신호들은 각 비트들 마다 규정된 의미를 갖는다.
 명령어 레지스터는 연산 코드를 해독하여 각 명령들이
여러 가지 연산을 수행할 수 있도록 한다.
 해독기는 각 연산 코드를 고유의 논리 입력을 가지도록 변환해주는 역할을 한다.
 클록은 마이크로 연산의 주기를 측정하는데 사용되며, 클록 펄스의 주기는 신호가
데이터 경로와 중앙처리장치 회로를 통과하는 데 걸리는 시간만큼 길어야 한다.
03 제어장치 모델의 구현
 마이크로 프로그램을 이용한 구현(micro programmed implementation)
• 마이크로 명령어를 제어 기억장치에 저장하고 이것을 실행시켜서 제어
신호를 발생하는 방법이다.
• 마이크로 프로그램을 이용하여 구현된 대표적인
제어장치로는 마이크로 순서기(Micro-sequencing)가
있다.
• 마이크로 순서기의 구조
 명령어 레지스터의 연산코드, 플래그, 마이크로
코드 기억장치의 출력이 다음 명령의 주소를 결정한다.
 얻어진 마이크로 코드 기억장치의 주소는 레지스터에
임시로 저장되었다가 다시 이 주소에 근거하여,
마이크로 코드가 실행이 된다.
 이 실행 결과의 출력이 제어 신호가 된다.
04 마이크로 프로그램을 이용한 제어
• 하드 와이어드 제어 방식은 마이크로 연산의 실행 순서제어와 수행을 위한
회로 그리고 연산 코드의 해석 및 ALU 플래그들의 검사 등을 위한 논리
회로를 포함해야 한다.
 이 과정에서 하드웨어의 설계와 검사는 복잡한 과정이며, 회로의 융통성도 낮다고 할
수 있다.
 새로운 명령을 추가하기 위하여 설계를 변경하는 것이 쉬운 일이 아니다.
• 오늘날 제어장치의 구현은 하드 와이어드 구현보다는 마이크로 프로그램을
이용한다.
 중앙처리장치에서 마이크로 프로그램을 이용하는 제어장치의 구성
• 제어장치는 순서제어 논리장치, 제어장치
레지스터들, 명령어 해독기, 제어 기억장치로
구성된다. 그리고 제어장치 레지스터는 제어
주소 레지스터, 제어 버퍼 레지스터, 서브루틴
레지스터 등으로 구성된다.
04 마이크로 프로그램을 이용한 제어
 마이크로 명령어(micro instruction)
 마이크로 프로그래밍 언어(micro-programming language)
• 마이크로 연산은 기계어이므로 이진 비트로 표현되지만, 사용의 편리성을
위해서 기호들(symbols)을 이용해서 표현하는데, 이것을 마이크로
프로그래밍 언어라고 한다.
 마이크로 명령어(micro instruction)
• 명령어 사이클에서 인출 사이클, 간접 사이클, 실행 사이클, 인터럽트
사이클은 여러 단계의 마이크로 연산들로 표현되는데 동시에 수행되는
마이크로 연산 집합을 마이크로 명령어라고 한다. 그래서 명령어 사이클은
마이크로 명령어들로 표현된다.
 마이크로 프로그램(micro-program)
• 마이크로 명령어들을 이용하여 작성된 프로그램을 마이크로 프로그램이라고
하는데, 이것은 펌웨어(firmware)라고도 불린다.
 루틴(routine)
• 마이크로 프로그램에서 중앙처리장치의 특정 기능을 수행하기 위한
마이크로 명령어들의 그룹을 루틴(routine)이라고 한다.
04 마이크로 프로그램을 이용한 제어
 마이크로 명령어 형식
• 마이크로 명령어 형식에는 수평적 마이크로 명령어와 수직적 마이크로
명령어가 있다.
04 마이크로 프로그램을 이용한 제어
 수평적 마이크로 명령어(horizontal microinstruction)
• 마이크로 명령어의 각 필드가 각 제어 신호에 대응되는 방식으로, 중앙처리장
치 내부의 각 제어 신호들과 시스템 버스의 각 제어 신호들에 필드가 할당된다.
• 분기에서 사용될 조건을 나타내는 조건 필드와 분기 발생시 다음에 실행될 마
이크로 명령어의 주소를 가지고 있는 필드가 있다.
 수평 마이크로 명령어의 동작
• 마이크로 명령어 실행을 위하여 비트 값이 1로 표시된 모든 제어 선을 ON.
• 비트 값이 0인 모든 제어 선을 OFF 시킨다. 이 결과로 발생되는 제어 신호들은
한 개 이상의 마이크로 연산을 수행시킬 것이다.
• 만약 분기 조건 비트의 값이 만족되지 않으면, 다음에 위치한 마이크로 명령어
가 순서대로 실행된다.
• 만약 조건 비트의 값이 만족되면, 다음에 실행될 마이크로 명령어는 주소 필드
에 의하여 지정된다.
 수평 마이크로 명령어의 장단점
• 하드웨어가 간단하고, 해독에 따른 지연 시간이 없다는 장점을 갖는다.
• 마이크로 명령어의 비트 수가 길어서 큰 용량의 제어 기억장치가 필요하다.
04 마이크로 프로그램을 이용한 제어
 수직적 마이크로 명령어(vertical microinstruction)
• 코드화된 비트들을 이용하여 마이크로 명령어의 각 기능 코드를 구성.
• 마이크로 명령어의 연산 필드에 적은 수의 코드화된(encoded) 비트들을 포함
시켜 제어 기억장치의 용량을 줄이고, 해독기를 이용하여 코드를 필요한 수만
큼의 제어 신호들로 확장하는 방식이다.
• 마이크로 명령어의 비트 수가 감소되는 장점을 가진다. 그러나 제어 신호 발생
을 위하여 코드화된 비트들을 해독하기 위한 지연이 발생한다.
 수직적 마이크로 명령어의 제어 신호 발생 방법
• 각 연산 필드의 내용은 코드화된 비트이고
해독기에서 그 내용이 해독되고 제어
신호들이 발생한다.
• 3 X 8 해독기는 코드화된 3비트를
입력으로 받아들여서 8비트의 제어
신호가 되도록 코드를 해독한다.
04 마이크로 프로그램을 이용한 제어
 제어장치의 구조와 동작
• 마이크로 프로그램을 이용하는 제어장치는 명령어 해독기, 제어주소
레지스터, 제어 기억장치, 제어버퍼 레지스터, 서브루틴 레지스터, 순서제어
모듈로 구성된다.
04 마이크로 프로그램을 이용한 제어
 명령어 해독기(instruction decoder)
• 명령어 레지스터(IR)가 보낸 명령어의 연산 코드를 해독하여 해당 연산을
수행하기 위한 루틴의 시작 주소를 결정하는 역할을 한다.
 제어 주소 레지스터(CAR, Control Address Register)
• 다음에 실행할 마이크로 명령어의 주소를 저장하는 레지스터다. 저장된
주소는 제어 기억장치의 특정 위치를 지칭한다.
 제어 기억장치(control memory)
• 마이크로 명령어들로 이루어진 마이크로 프로그램을 저장하는 내부 기억장치다.
 제어 버퍼 레지스터(CBR, Control Buffer Register)
• 제어기억장치에서 읽은 마이크로 명령어 비트들을 일시적으로 저장하는
레지스터다.
 서브루틴 레지스터(SBR, Subroutine Register)
• 마이크로 프로그램에서 서브루틴이 호출되는 경우에 현재의 CAR 내용을
일시적으로 저장하는 레지스터다.
 순서제어 모듈(sequencing module)
• 마이크로 명령어의 실행 순서를 결정하는 회로들의 집합이다.
04 마이크로 프로그램을 이용한 제어
 제어 기억장치
 마이크로 프로그램 코드들은 최종적으로 제어 기억장치에 저장
 제어 기억장치의 내부 구성
• 전반부에는 명령어 사이클의 인출,
간접, 인터럽트 등의 부 사이클에
해당하는 공통 루틴들을 저장한다.
• 후반부는 각 명령어의 실행 사이클
루틴들이 저장된다.
• 각 루틴 내의 마이크로 명령어들은
순차적으로 실행되며, 각 루틴은
다음에 실행할 위치를 나타내는
분기 혹은 점프 명령어로 끝난다.
04 마이크로 프로그램을 이용한 제어
 제어 기억장치에 저장된 마이크로 명령어 형식
• 연산 필드가 두 개이므로, 두 개의 마이크로 연산을 동시에 수행 가능하다.
• 그리고 조건 필드는 분기에 사용될 조건 플래그를 지정하고 분기 필드는
분기의 종류와 다음에 실행할 마이크로 명령어의 주소를 결정하는 방법을
명시한다.
• 마지막으로 주소 필드의 내용은 분기가 발생하는 경우에 목적지 마이크로
명령어 주소로 사용된다.
04 마이크로 프로그램을 이용한 제어
 마이크로 프로그램을 이용한 제어장치의 동작과정
 마이크로 프로그램을 이용한 제어장치의 동작 흐름도
• 순서제어 논리장치 또는 순서제어
모듈이 제어 기억장치로 READ
명령어를 보낸다.
• 제어 주소 레지스터 CAR에 명시된
제어 기억장치 주소에 저장되어
있는 단어가 읽혀져 제어 버퍼
레지스터 CBR로 옮겨진다.
• 제어 버퍼 레지스터 CBR의 내용에
따라 제어 신호들과 다음 주소
정보가 발생된다.
• 순서제어 논리장치 또는 순서제어
모듈은 CBR의 내용과 ALU
플래그들에 근거하여 새로운
주소를 CAR에 적재한다. 그리고
다시 위의 과정을 반복하게 된다.
04 마이크로 프로그램을 이용한 제어
 순서제어 논리장치와 해독기
 순서제어 논리장치 또는 순서제어 모듈
• 입력되는 ALU 플래그들과 제어 버퍼 레지스터 내용은 여러 동작을 결정한다.
• 가장 기본적으로 다음 명령어를 인출하기 위해서 제어 주소 레지스터의 내용
에 1을 더하는 결정을 내린다.
• 그리고 제어 버퍼 레지스터의 주소 필드 값을 제어 주소 레지스터에 적재하여
서, 점프 마이크로 명령어에 의하여 새로운 루틴으로 점프하게 한다.
• 또한, 명령어 레지스터 IR에 있는 연산 코드에 근거하여 해당 루틴의 주소를
제어 주소 레지스터에 적재해서 명령어 루틴으로 점프하게 한다.
 해독기
• 제어장치에는 해독기 2개가 존재한다.
• 명령어 레지스터의 바로 아래에 존재하는 해독기는 명령어 레지스터 IR의 연
산 코드를 제어 기억장치 주소로 변경하는 역할을 한다.
• 다음으로 제어 버퍼 레지스터 밑에 존재하는 해독기는 수직 마이크로 명령어
에서 코드화된 비트를 해독하는 데에 사용된다.
04 마이크로 프로그램을 이용한 제어
 마이크로 명령어의 순서제어
 제어장치의 기본 동작
• 제어기억장치에서 다음 마이크로
명령어를 읽어오는 마이크로 명령
어 순서제어다.
• 마이크로 명령어 실행에 필요한 제
어 신호들 발생하는 마이크로 명령
어의 실행이다.
 순서제어 논리장치를 포함하고
있는 제어장치
• MUX 1은 다음에 실행할 마이크로
명령어의 주소를 선택하는 장치다.
• MUX 2는 조건 플래그를 선택하여
주소선택 회로로 전송한다.
04 마이크로 프로그램을 이용한 제어
 마이크로 명령어의 실행
 마이크로 명령어의 사이클
• 명령어의 사이클처럼 마이크로 명령어도 사이클로 구성된다.
• 마이크로 프로그램을 이용하는 프로세서에서 가장 기본적인 사건(event)으로,
두 개의 사건들로 구성된다.
 인출(Fetch) 사건
• 마이크로 명령어를 제어 기억장치에서 제어 버퍼 레지스터로 읽어 오는 과정이다.
 실행(Execute) 사건
• 제어 신호들을 발생하는 과정이다.
• 생성된 제어 신호는 프로세서 내의 각 부분들을 제어하며, 나머지 신호들은 외
부 제어 버스나 다른 외부 인터페이스로 보내진다.
• 실행 사건의 부수적인 기능으로 다음 마이크로 명령어의 주소를 결정한다.
04 마이크로 프로그램을 이용한 제어
 제어장치에서 마이크로 명령어의 시행
• 순서제어 논리 모듈은 명령어 레지스터, ALU 플래그들, 제어 주소 레지스터
그리고 제어 버퍼 레지스터를 입력으로 사용하여 다음 마이크로 명령어의
주소를 생성한다.
• 제어 버퍼 레지스터는 실제 주소나 제어 비트들 또는 두 가지 모두를 제공한다.
• 제어 논리 모듈은 마이크로 명령어 내의 몇몇 비트들의 값에 근거하여 제어
신호들을 발생하게 된다.
04 마이크로 프로그램을 이용한 제어
 마이크로 명령어의 코드화(encoding) 방식들
 제어장치는 전혀 코드화되지 않은 마이크로 명령어 형식이나 수평
마이크로 명령어 형식을 사용해서 설계되지 않는다.
• 제어 기억장치의 폭을 줄이고 마이크로 프로그래밍을 단순화하기 위하여
적어도 어느 정도의 코드화는 사용된다.
• 마이크로 명령어의 여러 개의 필드들은 코드를 가지고 있으며, 해독되어 하나
혹은 다수의 제어 신호들을 활성화시킨다.
 직접 코드화 방식과 간접 코드화 방식으로 구분된다.
• 직접 코드화 방식은 마이크로 명령어가 실행될 때, 각 필드가 해독되어 제어
신호들을 발생한다.
• 간접 코드화 방식은 간접 주소지정 방식의 개념과 유사하게 한 필드가 다른
필드를 해석하는 방법을 지정하는데 사용된다.
04 마이크로 프로그램을 이용한 제어
 직접 코드화 방식과 간접 코드화 방식의 개념
04 마이크로 프로그램을 이용한 제어
 직접 코드화 방식과 간접 코드화 방식의 개념
 직접 코드화 방법
• 마이크로 명령어의 각 필드들이 코드화된 데이터를 가지고 있다가 제어
신호를 생성하기 위해서 해당하는 해독 논리(decode Logic)장치를 이용하여
해독과정을 거친다. 해독된 신호들은 최종의 제어 신호가 된다.
 간접 코드화 방법
• 각각의 마이크로 명령어 필드들이 코드화된 데이터를 가지고 있다.
• 첫 번째 단계에서는 각각의 필드에 대한 해독 과정을 수행한다. 그리고 두
번째 단계에서는 필요에 따라서 한 필드의 해독된 내용이 다른 필드들의 또
다른 해독의 방법을 지정하기 위해서 사용된다.
• 두 번째 필드가 두 번의 해독을 통해서 제어 신호가 생성되는 것을 확인할 수
있다.
IT CookBook, 컴퓨터 구조와 원리 2.0