컴퓨터시스템 구조 Computer System Architecture
제 7 장 제어 장치 제어 장치의 개념 메이저 상태와 타이밍 상태 명령어 사이클 제어 장치의 구현 방법 마이크로프로그램의 예 구성
제 7 장 제어 장치의 개념 제어 장치 제어 장치의 구성 Fig. 7-1 요구되는 마이크로 연산(micro-operation)들을 연속적으로 수행하게 하는 신호를 발생 제어 장치의 구성 주기억장치로부터 명령을 인출하여 해석하고, 해석한 결과에 따라 제어 신호를 컴퓨터 시스템 내의 각 부분으로 보낸다. 또 시스템 내의 각 부분으로부터 신호를 받아서 다음에 수행할 동작을 결정한다. Fig. 7-1
제 7 장 제어 장치의 개념 명령어의 수행 과정 ① PC에 기억된 주소를 메모리 주소 레지스터로 보낸다. ② 주기억장치에서 읽어온 명령어를 IR에 저장하고, PC를 1 증가시킨다. ③ 명령어의 연산 코드(operation code) 필드와 주소 필드를 각각 해독기와 주소 레지스 터로 보낸다. ④ 주소 레지스터에서 명령 수행에 필요한 데이터, 즉 피연산자의 주소를 계산하고, 이를 위해 주기억장치에 접근한다. ⑤ 제어 신호 발생기에서는 위의 ①~④까지의 과정에서 필요한 제어 신호와 연산 코드를 해석하여 명령의 수행에 필요한 제어 신호를 발생시킨다. ⑥ 다음 명령의 수행을 위하여 ①부터 다시 시작한다. 현재 명령어 레지스터(IR)에 있는 명령어의 수행이 끝나면 증가된 프로그램 카운터의 값을 주소 레지스터로 보내어 다음 명령어를 인출, 해석 후 실행하는 과정이 반복된다.
제 7 장 제어 장치의 개념 연산(operation)과 마이크로 연산(micro-operation) 연산 마이크로 연산 주기억장치에 저장된 명령어의 일부 컴퓨터에게 특별한 동작(산술/논리 연산 등) 등을 실행하도록 명령하는 이진 코드 하나의 연산 코드 : 여러 개의 마이크로 연산들로 구성 마이크로 연산 하나의 클록 펄스 기간 동안 레지스터에 저장된 데이터를 가지고 실행되는 기본 동작 명령어의 수행을 위한 동작들을 의미 연산과 마이크로 연산의 관계 Fig. 7-2 참조
제 7 장 제어 장치의 개념 제어 장치는 주기억장치로부터 명령어를 받아서 연산 코드의 비트 부분을 해석하여 중앙처리장치 내의 레지스터에서 마이크로 연산이 이루어지도록 하는 일련의 제어 함수를 발생 ADD 연산 5개의 마이크로 연산 이 연속적 수행 t는 타이밍 순차 타이밍 : 주클록 발생기 제어 타이밍 신호가 클록과 동기되어 레지스터 활성화 제어 함수
제 7 장 제어 장치의 개념 제어 장치의 구현 방법 하드와이어(hardwired) 제어, 마이크로프로그램(microprogrammed) 제어
제 7 장 제어 장치의 개념 마이크로 사이클 하드와이어 제어의 예 논리 게이트로 구현 FT1 + R’T3 : A←B 하나의 마이크로 연산이 수행되는 과정 마이크로 사이클 타임 : 마이크로 사이클의 주기, 즉 하나의 마이크로 연산을 수행하는데 걸리는 시간
제 7 장 제어 장치의 개념 마이크로 사이클 동기 고정식 동기 가변식 비동기식 모든 마이크로 연산의 수행시간이 같다고 가정 모든 마이크로 연산 중 수행 시간이 가장 긴 것을 주 클록 발생기의 클록 주기로 설정 모든 마이크로 연산의 수행 시간이 유사할 경우에 사용 제어 장치의 구현이 간단 CPU 시간의 낭비 동기 가변식 마이크로 연산의 수행 시간이 서로 다를 경우 수행 시간이 유사한 것끼리 몇 개의 군으로 나눔 각 군에 대해 서로 다른 마이크로 사이클 타임을 정의 제어가 복잡 CPU 시간을 효율적으로 사용 비동기식 마이크로 연산의 수행 시간의 차이가 현저할 뿐 아니라 수행 시간을 예측할 수 없을 때 하나의 마이크로 연산이 끝나야 다음 마이크로 연산을 위한 타이밍 신호가 생성 CPU의 시간을 효율적으로 사용 가능, 제어 구조가 매우 복잡
제 7 장 제어 장치의 개념 타이밍 신호 링 카운터 혹은 2진 카운터와 디코더를 사용 Fig. 7-5 4개의 연속 타이밍 신호의 발생
제 7 장 메이저 상태와 타이밍 상태 마이크로 연산의 수행을 위한 제어 : 마이크로 연산의 수행에 필요한 제어 신호의 공급을 의미 주 클록 발생기와 동기되어 정확한 시점에 필요한 제어 신호를 발생 제어 신호는 CPU의 상태에 따라 결정 CPU의 상태 : CPU가 어느 시점에 무엇을 하고 있는가를 나타내는 정보 시간에 관한 정보 : 타이밍 상태, 타이밍 상태 카운터 현재 진행중인 작업에 관한 정보 : 메이저 상태, 메이저 상태 레지스터 메이저 상태 CPU가 하고 있는 작업에 관한 정보, 주기억장치 접근 단위 인출 사이클, 간접 사이클, 실행 사이클, 인터럽트 사이클 CPU의 메이저 상태 : 주기억장치 접근 때마다 변화 머신 사이클 : CPU가 하나의 메이저 상태에 머물러 있는 시간 1-사이클 명령, 2-사이클 명령 어느 명령어 수행 n개의 머신 사이클 필요 : n-사이클 명령 머신 사이클 = 머이저 상태의 수 = 주기억장치 접근 회수 CPU의 메이저 상태 변이(Fig. 7-6 참조)
제 7 장 메이저 상태와 타이밍 상태 명령어 수행시 기억장치 접근 회수(단일 누산기 구조) CPU의 메이저 상태 변이
제 7 장 메이저 상태와 타이밍 상태 CPU의 메이저 상태와 역할
제 7 장 메이저 상태와 타이밍 상태 타이밍 상태 메이저 상태를 더 세분화 : 시간에 관한 정보 메이저 상태에서 마이크로 연산이 수행되는 시간 타이밍 상태 = 마이크로 사이클 타임 머신 사이클 = 여러 개의 타이밍 상태, 즉 여러 개의 마이크로 사이클 예 (그림 7-7 제어장치 블록도 참조) JMP X : 1-사이클 명령, 4개의 타이밍 메이저 상태 타이밍 상태 JMP X ADD X(직접 번지) FETCH t0 t1 t2 t3 MAR←PC MBR←M[MAR], PC←PC+1 IR←MBR,C0..C7←Decode(OP), MAR←IR(addr) PC←MAR INDIRECT EXECUTE MBR ←M[MAR] AC ←AC + MBR
제 7 장 메이저 상태와 타이밍 상태 타이밍과 제어 3비트 순차 카운터(타이밍 상태 카운터) : 8개의 연속 타이밍 신호 메이저 상태 레지스터 : F와 R의 플립플롭에 2X4 디코더 연결, 4가지 상태 구분
제 7 장 메이저 상태와 타이밍 상태 타이밍과 제어 순차 카운터 : 주 클록 발생기와 동기되어 클리어되는 기능 D3T4 : SC ← 0
제 7 장 메이저 상태와 타이밍 상태 F, R 값에 따른 메이저 상태 명령어 사이클 Tab. 7-4
제 7 장 명령어 사이클 명령어 인출 사이클 주기억장치에서 명령어를 읽어 오는 과정 인출단계를 위한 레지스터 전송 타이밍 신호 T0 에서 타이밍 신호 T1 에서 타이밍 신호 T2 에서 1. 버스선택입력 (S2,S1,S0)을 001로 하여 PC의 내용을 버스로 전송 2. MAR의 LD 입력 활성화, 버스의 내용을 MAR로 전송 1. 주기억장치 읽기(Read) 입력을 활성화 2. S2,S1,S0=011로 하여 주기억장치의 내용 버스로 전송 3. MBR의 LD 입력 활성화, 버스의 내용을 MBR로 전송 4. PC의 INC 입력 활성화, PC의 값을 하나 증가 1. 위와 동일한 방법으로 연결을 설정 2. 명령어의 종류를 결정 M0T0 : MAR ←PC M0T1 : MBR ←M[MAR], PC ←PC +1 M0T2 : IR ←MBR, C0,..,C7← Decode IR(12-14), MAR← IR(0-11), I← IR(15)
제 7 장 명령어 사이클 명령어 인출 사이클 명령어 간접 사이클 명령어 인터럽트 사이클 주기억장치에서 명령어를 읽어 오는 과정 간접 주소 지정 방식, 유효 주소를 구하기 위해 또 한 번의 메모리 접근 필요 명령어 인터럽트 사이클 현재 수행중인 프로그램의 PC 값을 스택에 저장 인터럽트 처리 루틴의 시작 번지를 PC에 저장 인터럽트 처리 루틴으로 분기 M0T0 : MAR ←PC M0T1 : MBR ←M[MAR], PC ←PC +1 M0T2 : IR ←MBR, C0,..,C7← Decode IR(12-14), MAR← IR(0-11), I← IR(15) M1T0 : MBR ←M[MAR] M1T1 : IR ←MBR(addr) M1T2 : MAR ←IR(addr) M3T0 : MBR ← PC M3T1 : MAR ← Return address, PC ← Interrupt service routine start address M3T2 : M[MAR] ← MBR
제 7 장 명령어 사이클 명령어 실행 사이클 ADD X M2T0 : MBR ← M[MAR] M2T1 : AC ← AC + MBR, E ← Cout ISZ X M2T1 : MBR ← MBR + 1 M2T2 : M[MAR] ← MBR, if (MBR=0) then (PC ← PC + 1) LDA X M2T1 : AC ← MBR BSA X M2T0 : M[MAR] ← PC, MAR ← MAR+ 1 M2T1 : PC ← MAR BSA 실행 예
제 7 장 명령어 사이클 BSA 실행 예
제 7 장 명령어 사이클 컴퓨터 명령어 사이클 흐름도
제 7 장 명령어 사이클 제어 신호와 제어점 제어 장치의 설계와 구현 제어 장치의 특성 결정 CPU의 동작 : 마이크로 연산의 집합으로 정의 제어 장치 : 각 마이크로 연산의 수행을 위하여 어떠한 제어 신호가 필요하며, 제어 장치가 해야할 일이 무엇인지를 정확하게 정의 제어 장치의 특성 결정 ① CPU의 기본 구성 요소를 정의한다. - ALU, 레지스터, 내부 버스, 외부 버스, 제어 장치 등 ② CPU가 실행할 마이크로 연산을 정의한다. - 한 레지스터에서 다른 레지스터로 데이터의 전송 - 한 레지스터에서 외부 버스로의 데이터 전송 - 외부 버스로부터 레지스터로의 데이터 전송 - 산술 또는 논리 연산의 수행 ③ 마이크로 연산들이 실행되기 위하여 제어 장치가 해야할 기능들을 결정한다. - 순서 제어(sequencing) : 실행될 프로그램에 근거하여 중앙처리장치가 일련의 마이크로 연산들을 적절한 순서대로 처리하도록 해준다. - 실행 제어(execution) : 제어 장치는 각 마이크로 연산이 수행되도록 제어 신호를 발생시킨다.
제 7 장 명령어 사이클 제어 신호와 제어점 제어 장치 모델 제어 장치의 기능 수행 입력 신호 출력 신호 시스템의 상태에 관한 입력 (메이저 상태와 타이밍 상태) 시스템의 동작을 제어하는 출력 입력 신호 클록(clock), 명령어 레지스터(IR) 플래그(flags) 제어 버스로부터의 제어 신호들 출력 신호 CPU 내의 제어 신호들 제어 버스로 나가는 제어 신호들
제 7 장 명령어 사이클 제어 신호와 제어점 제어 장치 모델 세 가지 형태의 제어 신호 예 : 인출 사이클 ALU의 연산 기능을 활성화시키는 신호 데이터 경로를 활성화시키는 신호 외부 시스템 버스나 그 밖의 외부 인터페이스로 나가거나 들어오는 신호 예 : 인출 사이클 MAR ← PC PC : 출력 게이트, MAR : 입력 게이트를 열게하는 제어 신호 제어점 : 입력 게이트와 출력 게이트 그리고 연산 장치(ALU)의 제어 신호 단자 독립 제어점 : 서로 다른 제어 신호를 가하여야 되는 제어점
제 7 장 명령어 사이클 제어 신호와 제어점 제어 신호의 예 단일 누산기 구조의 컴퓨터에서 제어 장치의 기능 설명 예 제어 신호 Ci로 표기(Tab. 7-5 참조) 제어 신호의 목적지 : 데이터 경로, ALU, 시스템 버스
제 7 장 제어 장치의 구현 방법 하드와이어 구현 Fig. 7-16 조합회로 제어 장치의 내부 논리 설계 : 각 입력 신호들에 대한 부울 표현식을 유도 비정규형 논리이므로 매우 복잡 비경제적 Fig. 7-16
제 7 장 제어 장치의 구현 방법 마이크로 프로그램 구현 Morris Wilkes 제안, 체계적으로 시스템 제어 장치를 설계하고 구현 제어 메모리(control memory) : 마이크로 연산에 필요한 제어 신호 저장(마이크로프로그램) 마이크로 명령어(micro-instruction) : 어떤 마이크로 연산을 할 것인가를 결정하는 비트들의 모임 제어 주소 레지스터(CAR) : 마이크로 명령어의 주소 지정 제어 데이터 레지스터(CDR) : 마이크로 명령어 보관 다음 명령어의 주소 : 외부 입력 + 마이크로 명령어의 일부 비트 마이크로 프로그램 제어 장치
제 7 장 제어 장치의 구현 방법 마이크로 명령어 형식 수평 마이크로 명령어와 수직 마이크로 명령어 수평 마이크로 명령어 : 제어 신호 필드, 조건 분기 필드, 주소 필드 한 비트 하나의 마이크로 연산 n개의 서로 다른 제어 신호 n 비트의 제어 신호 필드가 필요 조건 분기 필드 : 분기에 사용될 조건 동작속도가 빠르고 하드웨어를 효율적으로 사용 제어 필드의 수가 마이크로 연산의 수에 의존 긴 제어 워드를 필요, 비용이 많이듦 수직 마이크로 명령어 디코딩 회로를 통하여 제어 신호 발생 배타적인 값을 갖는 비트들을 묶어서 하나의 필드를 형성 제어 워드의 길이를 줄임 K비트의 필드 2k개의 서로 다른 마이크로 연산을 명시 일반 명령어와 유사, 속도가 느린것이 단점
제 7 장 제어 장치의 구현 방법 마이크로 명령어 형식 주소 시퀀싱 수직 마이크로 명령어 마이크로 프로그램 시퀀서 : 다음 마이크로 명령어의 주소 결정 마이크로 명령어 : Fig. 7-18과 같이 여러 개의 그룹으로 나누어 저장 제어 메모리의 주소 : 하나의 루틴 내에서 연속적인 마이크로 명령어를 수행, 다른 루틴으로 분기 문제는 이러한 마이크로 프로그램을 언제 어떻게 수행해야 하는가 하는 다음 주소 걀정을 위한 방법이 필요 다음 주소 결정 : 현재 진행 중인 마이크로 명령어 주소 비트 + 상태 비트
제 7 장 제어 장치의 구현 방법 제어 기억장치의 구성 제어 기억장치에서 다음에 수행할 마이크로 명령어의 주소를 결정하는 방법 ① CAR을 하나 증가시킴 ② 무조건 분기와 상태 비트 조건에 따른 조건부 분기 ③ 명령어의 OP 코드 비트들로부터 제어 메모리의 주소로 매핑하는 처리 ④ 서브루틴을 호출(call)하고, 복귀(return)하는 기능
제 7 장 제어 장치의 구현 방법 ① increment ② 분기 ③ 조건부 ④ 명령어의 연산 코드 매핑 ⑤ 서브루틴의 복귀 주소
제 7 장 제어 장치의 구현 방법 명령어 매핑 매핑 : 명령어의 연산 코드 부분(op code)에 대한 제어 기억장치 내의 마이크로 명령어의 시작 주소를 찾아내는 과정 한 개의 연산 코드 : 4개의 마이크로 명령 시작 주소 : 0101100, 0101101, 0101110, 0101111
제 7 장 마이크로프로그램의 예 컴퓨터 하드웨어의 구성 및 명령어 형식 컴퓨터 명령어
제 7 장 마이크로프로그램의 예 MBR ← M[MAR] (F2=100) PC ← PC + 1 (F3=101) 마이크로 명령어 형식 예를 들어 F1, F2, F3 필드에 000 100 101의 값을 지정하게 되면 두 개의 마이크로 연산을 동시에 지정 마이크로 명령어 형식(20비트) MBR ← M[MAR] (F2=100) PC ← PC + 1 (F3=101)
제 7 장 마이크로프로그램의 예
제 7 장 마이크로프로그램의 예 인출 사이클 마이크로 명령어 [그림 7-22]의 컴퓨터 구성에서 제어 워드는 128 워드 각각의 워드는 20비트로 구성 0~63번지는 16개의 매크로 연산을 위한 루틴으로 사용 64~127번지는 다른 용도로 사용. 인출 사이클 루틴 64번지부터 시작 인출 사이클 루틴은 제어 기억장치 내의 주소 64, 65, 66, 67에 위치하는 네 개의 마이크로 명령어로 다음과 같이 구성 MAR ← PC MBR ← M[MAR], PC ← PC + 1 IR ← MBR MAR ← IR(0-11), CAR(2-5) ← IR(11-14), CAR(0,1,6) ← 0
제 7 장 마이크로프로그램의 예 기호로 표시된 마이크로 명령어 전통적인 어셈블리 언어 작성 방법과 동일한 개념 기호 주소를 나타내는 라벨(label), 마이크로 연산, CD(조건), BR(분기), AD(주소) 등 다섯 개의 필드로 나뉘어지며 각 필드는 다음의 정보를 갖게 된다. 라벨 필드는 공백 일 수도, 기호 주소를 나타낼 수 있다. 라벨 뒤에는 콜론(:)이 붙어야 한다. 마이크로 연산 필드는 [표 7-6]에서 정의된 하나 혹은 둘 이상의 기호로 구성되고, 각 기호는 콤마로 구분된다. CD 필드는 U, I, S, Z 중 하나의 문자를 넣는다. BR 필드는 [표 7-6]에 정의된 네 개의 기호들 중 하나를 갖는다. AD 필드는 다음 세 가지 중 하나를 가지는데, 이는 다음 주소를 결정하는 방법을 나타낸다. - 기호 주소(이는 라벨을 나타내며, 프로그램상에 나타나야 한다) - NEXT(이는 연속된 다음 주소를 의미한다) - BR이 RET나 MAP이면 AD는 공란으로 둔다.제어 워드는 128 워드 ORG라는 의사 명령어(psuedoinstruction)를 사용하는데, 이는 마이크로프로그램 루틴의 시작 위치를 나타낸다.
제 7 장 마이크로프로그램의 예 이진 마이크로프로그램 기호 프로그램 어셈블러 인출 사이클을 위한 이진 마이크로프로그램
제 7 장 마이크로프로그램의 예 연산 코드에 따른 매크로 연산 루틴으로의 분기 동작 인출 사이클의 마지막 동작은 인출된 명령어의 연산 코드에 따른 매크로 연산 루틴으로의 분기 동작 위의 인출 사이클이 끝난 후 명령어 레지스터(IR)에 들어온 값의 연산 코드(OP)가 0000인 ADD 명령어라면 제어 주소 레지스터(CAR)에 0000000이 저장되어 ADD 루틴을 수행 동일한 방법으로 BRANCH는 0000100이, STORE는 0001000이 그 루틴의 시작 위치 연산코드의 매핑
제 7 장 마이크로프로그램의 예 기호로 표시된 마이크로프로그램