12장. 제어 장치 다루는 내용 CPU속의 제어장치 마이크로 연산 제어장치의 동작
Section 01 개념으로 살펴본 CPU 속의 제어장치 중앙처리 장치 산술논리 연산장치(ALU) 레지스터 집합 제어장치 내부버스 명령어를 수행하는데 필요한 제어신호를 만들어 내는 장치 제어장치 내의 구성 순서제어 논리 장치(sequencing logic) 제어장치 레지스터들(control unit registers) 명령어 해독기(decoder), 제어 메모리(control memory) 제어장치 레지스터 제어 주소 레지스터(control address register) 제어 버퍼 레지스터(control buffer register) 서브루틴 레지스터(subroutine register)
제어장치의 구성 [그림 12-1] 제어장치의 구성
Section 02 마이크로 연산 마이크로-연산(Micro-Operations) 완전한 명령어의 사이클 명령어 인출 및 실행 사이클은 또한 여러 개의 단계(step) 에서 실제 수행되는 동작 프로그램 수행에서 가장 기본단위의 수행 프로세서의 기능적 연산 원자 연산(atomic operation) 완전한 명령어의 사이클 인출 사이클 기억장치로부터 명령어를 CPU로 읽어오는 과정 간접 사이클 간접 주소지정 방법을 사용하는 경우, 유효를 주소를 찾는 사이클 실행되는 사이클 해당 명령어에 맞게 동작 인터럽트 사이클 인터럽트 발생여부를 파악, 인터럽트가 발생했으면 인터럽트 서브 루틴이 수행 될 수 있도록 해주는 사이클
프로그램 실행의 계층 구성 [그림 12-2] 프로그램 실행의 계층 구조
인출사이클의 마이크로 연산 명령어 인출에 필요한 레지스터 기억장치 주소 레지스터(Memory Address Register : MAR) 기억장치 버퍼 레지스터(Memory Buffer Register : MBR) 프로그램 카운터(Program Counter : PC) 명령어 레지스터(Instruction Register : IR)
인출단계에서 PC의 증가 단계가 세번째 클럭에서 수행 인출사이클의 마이크로 연산 t1 : MAR ← (PC) t2 : MBR ← memory PC ← (PC) + 1 t3 : IR ← (MBR) 첫번째 클럭 : 다음 명령어의 주소가 저장된 PC 내용을 MAR로 이동 두번째 클럭 : MAR주소에 근거, 기억장치에 저장되어 있는 명령어를 MBR로 이동.PC를 명령어 바이트 수만큼 증가시켜서 다음 명령어의 주소를 표시 세번째 클럭 : MBR에 저장된 명령어 내용을 실행하기 위해서 IR로 이동 인출단계에서 PC의 증가 단계가 세번째 클럭에서 수행 t3 : PC ← (PC) + 1 IR ← (MBR)
간접 사이클의 마이크로 연산 간접 사이클 간접 주소지정 방식을 사용하는 명령어에서 오퍼랜드부분의 유효주소를 결정하는데 사용 [그림 12-3] 간접 주소 지정 방식 [그림 12-4] 레지스터 간접 주소 지정 방식
t2 : MBR ← (memory or register) t3 : IR(addr) ← (MBR(addr)) 간접 사이클의 마이크로 연산 t1 : MAR ← (IR(addr)) t2 : MBR ← (memory or register) t3 : IR(addr) ← (MBR(addr)) 첫 번째 클럭 명령어 레지스터에 저장되어 있는 명령어의 오퍼랜드 부분 즉, 주소 부분을 MAR로 이동 유효주소가 아니면, 유효주소가 저장되어 있는 곳의 주소 두 번째 클럭 유효주소가 저장된 기억장치 또는 레지스터의 내용을 MBR에 저장 세 번째 클럭 MBR의 저장되어 있는 유효 주소를 명령어 레지스터의 주소부분으로 이동
실행 사이클의 마이크로 연산 ADD R1, X ; R 1← R1 + Memory(X) 마이크로-연산 표현 t1 : MAR ← (IR(addr)) t2 : MBR ← memory t3 : R1 ← R1 + (MBR) 첫 번째 클럭 : 명령어 레지스터의 주소 부분을 MAR로 이동 두 번째 클럭 : 해당 주소의 기억장치 내용을 MBR로 이동 세 번째 클럭 기억장치에서부터 이동된 데이터가 저장된 MBR의 내용과 R1을 덧셈, 그 결과값을 R1에 저장
ISZ (Increment and Skip-if-zero) 실행 사이클의 마이크로 연산 ISZ (Increment and Skip-if-zero) 오퍼랜드가 지정하는 기억장치의 값을 하나 증가시키고 그 결과 값이 0이면 다음 명령어를 실행하지 않고 건너뛰는 명령어 어셈블리 표현 ISZ X ; if (X)+1 = 0, Skip 마이크로-연산 t1 : MAR ← (IR(addr)) t2 : MBR ← memory t3 : MBR ← (MBR)+1 t4 : memory ← (MBR) If ((MBR) = 0) then (PC ← PC + I)
BSA(Branch and Save return address) 실행 사이클의 마이크로 연산 BSA(Branch and Save return address) 분기하고 복귀할 주소를 저장하는 명령어로 서브 루틴 프로그램으로 분기하기 위하여 사용되는 명령 어셈블리 표현 BSA X 마이크로-연산 t1 : MAR ← (IR(addr)) MBR ← (PC) t2 : PC ← (IR(addr)) memory ← (MBR) t3 : PC ← PC + 1
BSA의 마이크로 연산 첫 번째 클럭 두 번째 클럭 세 번째 클럭 명령어 레지스터의 주소부분 내용(어셈블리 표현에서 X)을 MAR에 적재 동시에 프로그램 카운터의 내용, 다음 명령어 주소를 MBR에 적재 두 번째 클럭 명령어 레지스터의 주소부분 내용을 프로그램 카운터에 적재 X번지에 MBR의 내용 저장. 복귀 주소가 저장 세 번째 클럭 서브 루틴을 시작하기 위해서 X+1번지가 되도록 프로그램 카운터를 증가
스택(Stack)의 기본동작
인터럽트 사이클의 마이크로 연산 마이크로 연산 t1 : MBR ← (PC) t2 : MAR ← SP(스택 포인터) PC ← Routine-address t3 : Memory ← (MBR) 첫 번째 클럭 복귀주소를 저장하기 위해서 프로그램 카운터 내용을 MBR로 이동 두 번째 클럭 스택 포인터를 MAR로 이동, 인터럽트 처리 루틴 시작 주소를 PC에 적재 스택 포인터는 MBR에 저장되어 있는 내용을 스택에 저장하기 위해 저장할 위치를 지정하기 위해 사용 세 번째 클럭 MBR의 내용을 MAR에 근거하여 해당 스택 포인터의 스택에 저장
Section 03 제어장치의 동작 프로세서가 수행할 마이크로-연산들을 정의 제어 장치가 수행할 기능을 결정 레지스터들 간의 데이터 전송 유형 레지스터로부터 외부로의 데이터 전송 유형 외부로부터 레지스터로의 데이터 전송 유형 산술 혹은 논리 연산의 수행 유형 제어 장치가 수행할 기능을 결정 순서 제어(Sequencing)기능 실행(Execution)기능
제어장치 모델 [그림 12-6] 제어장치 모델
제어장치로 들어오는 입력 클럭(Clock)신호 명령어 레지스터 플래그(flag)들 제어 버스로부터 입력되는 제어 신호들 제어 장치 동작의 타이밍 기준이 되는 신호 하나의 클럭 펄스마다 하나의 마이크로-연산 이 수행 명령어 레지스터 연산 코드를 제어 장치로 입력시켜서 수행할 연산을 결정 플래그(flag)들 프로세서의 상태를 나타내거나 ALU 연산의 결과에 대한 검사 제어 버스로부터 입력되는 제어 신호들 시스템 버스의 제어 버스 부분을 통해 들어오는 신호 인터럽트 요구 신호 및 확인 신호
제어장치로부터 나가는 출력들 프로세서 내 제어 신호들 제어 버스를 통해서 출력되는 제어 신호들 레지스터간의 데이터를 전송할 때 발생 특정 산술논리연산(ALU) 기능을 활성화시킬 때 제어 버스를 통해서 출력되는 제어 신호들 CPU 밖의 기억장치로 보내지는 제어신호 입출력 장치 모듈로 보내지는 제어 신호
하드와이어 구현 (hardwired implementation) 또는 고정배선 방식 제어장치의 구현 하드와이어 구현 (hardwired implementation) 또는 고정배선 방식 제어신호 생성을 위해서 순차와 조합논리를 구성 이 회로의 입력 신호들은 출력 신호들로 변형 출력 신호들이 제어 신호 마이크로 프로그램을 이용한 구현(micro-programmed implementation) 제어신호 생성을 위해서 순차 및 조합논리를 사용하지 않음 제어신호를 위한 마이크로 명령어를 저장 장치에 저장 이것을 실행시켜서 제어 신호를 발생 마이크로 순차기가 대표적
하드와이어 방식의 제어장치 [그림 12-8] 하드와이어 방식의 제어장치
마이크로 순차기 (Micro-sequencing) [그림 12-9] 마이크로 순차기
Section 04 마이크로 프로그램을 이용한 제어 마이크로 명령어 제어장치의 구조와 동작 마이크로 명령어의 순서제어 마이크로 명령어의 실행
마이크로 명령어 마이크로-연산은 실제적으로 기계어 사용의 편리성을 위해, 기호들(symbols)로 표현해서 나타낸 것을 마이크로 프로그래밍 언어(micro-programming language)라고 한다 마이크로 명령어(micro-instruction) 마이크로-연산들의 집합 마이크로 프로그램(micro-program) 마이크로 명령어 들을 이용하여 작성된 프로그램 펌웨어(firmware) 루틴(routine) 마이크로 프로그램에서 CPU의 특정 기능을 수행하기 위한 마이크로 명령어들의 그룹 마이크로 명령어 사이클에서는 인출 사이클 루틴, 실행 사이클 루틴, 인터럽트 사이클 루틴 등이 존재
마이크로 명령어 형식 [그림 12-10] 마이크로 명령어 형식
마이크로 명령어의 각 필드의 비트가 각 제어 신호에 대응되도록 하는 방식 수평적 마이크로 명령어 마이크로 명령어의 각 필드의 비트가 각 제어 신호에 대응되도록 하는 방식 CPU내부의 제어 신호들과 시스템 버스의 제어 신호들에 대해 필드들이 할당 분기에서 사용될 조건을 나타내는 조건 필드와 분기 발생시 다음에 실행될 마이크로 명령어의 주소를 가지고 있는 필드 존재 수평 마이크로 명령어의 장단점 하드웨어가 간단하고, 해독에 따른 지연 시간이 없다. 더 큰 용량의 제어 기억장치가 필요하다
코드화된 비트들을 이용하여 마이크로 명령어의 각 기능 코드(function code)를 구성하는 방식 수직적 마이크로 명령어 코드화된 비트들을 이용하여 마이크로 명령어의 각 기능 코드(function code)를 구성하는 방식 제어 기억장치의 용량 줄임 마이크로 명령어의 연산 필드에 적은 수의 코드화된 비트들을 포함 해독기를 이용하여 그 코드를 필요한 수만큼의 제어 신호들로 확장하는 방식 장점 마이크로 명령어의 비트 수가 감소 단점 제어 신호 발생을 위하여 코드화 된 비트들을 해독하기 위한 지연이 발생
수직적 마이크로 명령어 제어신호 발생 [그림 12-11] 수직적 마이크로 명령어 제어 신호 발생
제어장치의 구조와 동작 명령어 해독기(instruction decoder) 제어 주소 레지스터(control address register: CAR) 제어 기억장치(control memory) 제어 버퍼 레지스터(control buffer register: CBR) 서브루틴 레지스터(subroutine register: SBR) 순서제어 모듈(sequencing module)
제어장치의 마이크로 구조 [그림 12-12] 제어장치의 마이크로 구조
제어 기억장치 전반부 후반부 명령어 사이클의 인출, 간접, 인터럽트 등의 부 사이클에 해당하는 공통 루틴들을 저장 명령어의 실행 사이클 루틴들이 저장 순차적으로 실행 [그림 12-13] 제어 기억장치의 조직
마이크로 프로그램을 이용한 제어장치의 동작과정 [그림 12-15] 마이크로 프로그램된 제어장치의 동작