9장. 제어장치 Lecture #9
9.1 제어 장치의 구성 (1) 제어 장치(Control Unit) 컴퓨터 시스템의 모든 장치들을 유기적으로 동작하도록 제어하는 장치. 컴퓨터 구조론
9.1 제어 장치의 구성 (2) 제어장치 구조 컴퓨터 구조론
9.2 마이크로 오퍼레이션과 마이크로 사이클 (1) 마이크로 오퍼레이션 명령어의 실행 과정에서 한 단계씩 이루어지는 동작. 9.2 마이크로 오퍼레이션과 마이크로 사이클 (1) 마이크로 오퍼레이션 명령어의 실행 과정에서 한 단계씩 이루어지는 동작. 중앙처리장치 클럭(중앙처리장치 클럭 사이클) 중앙처리 장치에 공급되는 클럭 펄스 명령어 실행은 명령어 사이클로 이루어진 프로그램을 순차적으로 수행한다는 것을 의미. 각 명령어 사이클은 여러 개의 부 사이클로 이루어져 있으며 부 사이클은 인출 사이클, 간접사이클, 실행사이클, 인터럽트 사이클로 구분한다. 컴퓨터 구조론
9.2 마이크로 오퍼레이션과 마이크로 사이클 (2) 프로그램 실행의 계층 컴퓨터 구조론
9.2 마이크로 오퍼레이션과 마이크로 사이클 (3) 1개 마이크로 오퍼레이션 컴퓨터 구조론
9.2 마이크로 오퍼레이션과 마이크로 사이클 (4) 마이크로 오퍼레이션 기능 : 데이터 전송, 데이터 연산 전송 기능 9.2 마이크로 오퍼레이션과 마이크로 사이클 (4) 마이크로 오퍼레이션 기능 : 데이터 전송, 데이터 연산 전송 기능 레지스터와 레지스터간의 데이터 전송, 레지스터와 메모리나 입출력 장치들 간의 데이터 전송. 예) MBR ← [M] ; A ← B ; MAR ← PC 연산 기능 단항 연산자 : 하나의 레지스터에 기억되어 있는 정보가 연산 장치에 전달되어 연산 후에 그 값을 레지스터에 기억시키는 것.(예:보수연산) 이항 연산자 : 두 개의 레지스터에 기억되어 있는 정보가 연산 장치에 전달되어 연산이 행해진 후 그 결과를 다른 레지스터로 옮기는 것.(예 A ← A + B ) 컴퓨터 구조론
9.2 마이크로 오퍼레이션과 마이크로 사이클 (5) 마이크로 오페레이션의 제어 기능 제어 기능에 의한 정보전달 9.2 마이크로 오퍼레이션과 마이크로 사이클 (5) 마이크로 오페레이션의 제어 기능 제어 기능에 의한 정보전달 P : A B B 레지스터의 내용을 A 레지스터로 전송할 경우 전송 제어 기능 신호 P에 의하여 레지스터 B의 내용이 레지스터 A로 옮겨지는 과정. [ 타이밍 상태 ] [ 정보 전달 과정 ] 컴퓨터 구조론
9.2 마이크로 오퍼레이션과 마이크로 사이클 (6) 마이크로 사이클(micro cycle) 9.2 마이크로 오퍼레이션과 마이크로 사이클 (6) 마이크로 사이클(micro cycle) 하나의 마이크로 오퍼레이션이 수행되는 과정 . 동기 고정식 수행 시간이 가장 긴 것을 마이크로 사이클 타임으로 정하여 클럭을 공급하는 방식. 제어 장치의 구현이 간단하나 CPU의 속도와 성능 저하 동기 가변식 수행시간이 유사한 것끼리 모아 한 개의 군을 형성하여 처리. 제어 장치가 복잡하나 CPU의 성능과 속도 향상 비동기식 수행 시간의 차이가 현저하고 예측시간도 예측할 수 없을 때 사이클을 정의하지 않고 비동기식으로 처리. 컴퓨터 구조론
9.3 메이저 상태 (1) 메이저 상태와 타이밍 상태 메이저 상태 : 레지스터와 중앙처리장치가 무엇을 하고 있는가를 나타냄. 타이밍 상태 : 시간에 관한 정보를 기억 메이저 상태의 단계별 수행 상태 Fetch Cycle(인출 사이클) 실행할 명령어를 메모리로부터 읽어낸다. 명령어 해석 명령어가 1사이클 명령어이면 다시 인출사이클로 이동(CPL, SHL) 1사이클 명령어가 아니면 간접 사이클로 가고 아니면 실행사이클로 이동. 컴퓨터 구조론
9.3 메이저 상태 (2) 메이저 상태의 단계별 수행 상태 (계속) Indirect Cycle(간접 사이클) 주소 기억장치로부터 주소를 읽어낸다. 간접주소이면 간접사이클로 이동하고, 아니면 분기명령이면 실행 후 인출 사이클로 이동하고 분기 명령이 아니면 실행사이클로 이동. Execution Cycle(실행 사이클) 데이터를 메모리에서 읽어낸다. 실행 후 인출 사이클로 이동. Interrupt Cycle(인터럽트 사이클) CPU 상태를 잠시 피신시키고, interrupt routine으로 점프. 인출 사이클로 이동. 컴퓨터 구조론
9.3 메이저 상태 (3) 메이저 상태의 신호 흐름도 컴퓨터 구조론
9.3 메이저 상태 (4) 메이저 상태와 타이밍 상태 컴퓨터 구조론
9.3 메이저 상태 (5) 인출 사이클(fetch cycle) 명령어 인출 사이클(instruction fetch cycle) 인출 메이저 상태에서 명령어 인출과 실행 준비 작업. 수행단계 실행될 명령어의 주소를 PC로부터 기억장소 주소 레지스터(MAR)로 전송. 기억장치로부터 명령어 코드를 가져오고 PC를 1 증가. MBR의 내용을 명령어 레지스터(IR)로 전송. 인출과정 t1 : MAR ←(PC) t0 : MBR ←M[MAR] PC ←(PC) +1 t2 : IR ← (MBR) 컴퓨터 구조론
9.3 메이저 상태 (6) 명령어 인출 사이클(instruction fetch cycle) (계속) 명령어 인출 경로 컴퓨터 구조론
9.3 메이저 상태 (7) 간접 사이클(indirect cycle) 명령어 인출 후 다음 단계로 실행사이클로 갈 것인가를 간접 사이클로 갈 것인가 결정. 간접 주소 지정 방식 간접 사이클 실행 흐름 qat3 : MAR ← IR(Address) qat4 : MBR ← M[MAR] qat5 : IR(address) ← MBR(address) 컴퓨터 구조론
9.3 메이저 상태 (8) [ 간접 사이클 접근 경로와 간접 사이클 ] 컴퓨터 구조론
9.3 메이저 상태 (9) 실행 사이클(execute cycle) 실제로 명령어 수행이 일어남. 인출과정 (ADD A, (nn)) qadd t3 : MAR ← IR(nn address) qadd t4 : MBR ← M[MAR] qadd t5 : A ← A + MBR 컴퓨터 구조론
9.3 메이저 상태 (10) 실행 사이클(execute cycle) (계속) 실행 사이클 접근 경로와 실행 사이클 컴퓨터 구조론
9.3 메이저 상태 (11) 인터럽트 사이클(interrupt cycle) 프로그램 수행 중에 인터럽트가 걸리면 현재 수행중인 프로그램을 일시정지하고 인터럽트 프로그램을 먼저 처리 인출과정 * qint t0 : MBR ← (PC) * qint t1 : MAR ← (Stack Pointer) : save-address PC ← Interrupt service routine-start address * qint t2 : MAR ← PC 컴퓨터 구조론
9.4 제어 장치 구현 (1) 제어 장치 구현 방법 하드 와이어 제어 방식 소프트웨어 제어 방식 상태 플립-플롭 제어 방식 순차 레지스터와 디코더 제어 방식 소프트웨어 제어 방식 PLA 제어 방식 마이크로 프로그램 제어 방식 컴퓨터 구조론
9.4 제어 장치 구현 (2) 상태 플립플롭 제어 방식 순차 제어 회로의 각 상태마다 한 개씩의 플립플롭으로 구성. 장점 : 설계하기 간단. 단점 : 상태 수가 증가하면 하드웨어적으로 복잡해진다. 구성도 컴퓨터 구조론
9.4 제어 장치 구현 (3) 순차 레지스터와 디코더 제어 방식 순차 레지스터를 사용 : 제어 상태를 순차적으로 실행 디코더 사용 : 각 상태마다 하나의 출력 컴퓨터 구조론
9.4 제어 장치 구현 (4) PLA 제어 방식 소프트웨어적으로 제어 신호 구성 PLA 프로그램 구성도 디코더의 논리 상태를 코드화하여 저장 구성도 컴퓨터 구조론
9.4 제어 장치 구현 (5) 마이크로 프로그램 제어 방법 제어 변수가 1과 0으로 이루어진 제어 워드(control word)로 구성. 마이크로 명령어들을 순차적으로 모은 마이크로 프로그램을 기억 장치에 기억시켜 두고 순차적으로 실행시키면서 제어신호를 만들어 내는 방식. 구성도 컴퓨터 구조론
9.5 마이크로 명령어 (1) 마이크로 명령어 한 개의 마이크로 오퍼레이션이 수행되는 동작 제어워드 각 순간에 실행되는 마이크로 명령어는 1, 0으로 표현 마이크로 프로그램 또는 펌웨어(Firmware) 하드웨어와 소프트웨어의 중간 단계 마이크로 명령어의 조합. 컴퓨터 구조론
9.5 마이크로 명령어 (2) 마이크로 명령어 마이크로 명령어 형식 수평 마이크로 명령어 형식 수직 마이크로 명령어 형식 각각의 제어 신호에 하나의 비트 할당 수직 마이크로 명령어 형식 마이크로 명령들이 동시에 여러 개나 일어나지 않는다는 가정 하에 설계 하나의 명령어는 하나의 오퍼레이션만 수행. 일반 명령어와 유사, 설계할 때 논리 회로가 복잡 컴퓨터 구조론
9.6 주소 순서기 (1) [ 마이크로 프로그램 제어장치 ] 주소 순서기 컴퓨터 구조론
9.6 주소 순서기 (2) 주소 순서기 각 구성요소의 기능 명령어 해독기 MUX 명령어의 연산을 해독하여 해당 연산을 수행하기 위한 루틴의 시작 주소 결정. MUX 제어 주소 레지스터에 실행 주소 선택 S1 S0 MUX 기능 CAR로 1증가 가능 1 제어메모리의 브런치 번지로 점프 명령어 해독기로부터 명령어의 시작번지 매핑 기능 서브 프로그램 루틴으로 점프 컴퓨터 구조론
9.6 주소 순서기 (3) 각 구성요소의 기능 제어 주소 레지스터(CAR) 제어 메모리 제어 버퍼 레지스터 서브루틴 레지스터 마이크로 프로그램을 저장하는 내부 기억장치. 입력되는 주소 : 1 증가된 주소, 제어 메모리로부터 브런치 주소, 해독기로부터 해독된 명령어가 내장된 제어 메모리의 시작 주소,SBR로부터 서브루틴의 주소 제어 메모리 마이크로 프로그램 저장하는 내부기억장치 제어 버퍼 레지스터 제어기억장치로부터 읽혀진 마이크로 명령어 비트들을 일시적으로 저장. 내부제어신호 : MUX 선택 신호, 브런치 주소 외부제어신호 : 연산장치, 레지스터, 외부메모리 서브루틴 레지스터 마이크로 프로그램에서 서브루틴이 호출되는 경우 현재의 CAR 내용을 일시적으로 저장. 컴퓨터 구조론
9.6 주소 순서기 (4) 제어 장치 동작 CAR로 제어 기억 장치의 마이크로 명령어 시작 번지를 로드하기 위한 로드 신호를 보낸다. 주소가 CAR에 의해 지정된 기억 장치내의 제어 워드를 CBR로 전송한다. CBR의 내용에 따라 제어 신호들과 순차 모듈 논리 장치에 다음 주소 정보를 전송한다. 주소 순서기는 CBR과 ALU의 상태 레지스터들로부터 발생된 상태에 의해 점프해 갈 새로운 주소를 CAR에 적재한다. 컴퓨터 구조론
9.6 주소 순서기 (5) 명령어 해독기 IR로부터 전송된 명령어의 Op-code를 마이크로 명령어가 저장되어 있는 제어 메모리 주소로 매핑 컴퓨터 구조론
9.7 연산 제어 장치 설계 (1) 가/감산기 분석 AS, BS 는 각 레지스터들의 부호 비트임. 제어로직은 가산(qa신호) 혹은 감산(qb신호) 명령어에 의해 수행. 컴퓨터 구조론
9.7 연산 제어 장치 설계 (2) 가/감산기 알고리즘 컴퓨터 구조론
9.7 연산 제어 장치 설계 (3) 가/감산기 제어 신호 S0, S0 , S0 : 제어신호 w : E플립플롭 클리어 신호 qa : 실행제어 신호 (가산명령어 입력시) qb : 실행제어 신호 (감산명령어 입력시) As, Bs : As: Bs 를 비교하는 스텝 컴퓨터 구조론
9.7 연산 제어 장치 설계 (4) 가/감산기 알고리즘 상태도 상태도로 변환하는 이유 : 프로그램 제어 방식에서 각 상태들은 곧바로 제어기억 장치의 주소가 되기 때문. 컴퓨터 구조론
9.7 연산 제어 장치 설계 (5) 상태 플립플롭 제어 방식에 의한 설계 컴퓨터 구조론
9.7 연산 제어 장치 설계 (6) 마이크로 프로그램 제어 방식에 의한 설계 마이크로 명령어 형식 제어 신호 필드 : 9-비트 구성. 실제 데이터 처리기의 제어 신호 다음 주소 공급 필드 : 제어 기억 장치의 주소를 제어하는 주소 버스 선 분기 조건 필드 : 마이크로 오퍼레이션의 분기점에서 다음 번지를 실행할 것인가 아니면 다른 번지로 점프할 것인가 결정 x s2 s1 s0 cin L y z w A2 A1 A0 MS1 MS0 [ 제어 신호 필드 ] [ 다음 주소 공급 필드 ] [ 분기 조건 필드 ] [ 마이크로 명령어 형식 ] 컴퓨터 구조론
9.7 연산 제어 장치 설계 (7) 마이크로 프로그램 제어 방식에 의한 설계 [ 마이크로 프로그램 제어장치 ] 컴퓨터 구조론
9.8 간단한 컴퓨터 설계 (1) 8비트 컴퓨터의 CPU 설계 하드웨어 사양 PC : 16 bit MAR : 16 bit MBR : 8 bit IR : 8 bit Memory : 64 Kbyte Register(R1, R2, R3 ) ALU : 8 bit 컴퓨터 구조론
9.8 간단한 컴퓨터 설계 (2) 8비트 컴퓨터의 CPU 설계 명령어 구성 LD R1, n R1 ← n Immediate LD R1, R2 R1 ← R2 register LD R1, R3 R1 ← R3 register LD R1, M[address] R1 ← M[address] Direct LD M[address], R1 M[address] ← R1 Direct LD R2, R1 R2 ← R1 register LD R3, R1 R3 ← R1 Direct ADD R1, n R1 ← R1 + n Immediate ADD R1, R2 R1 ← R1 + R2 register SUB R1, R2 R1 ← R1 - R2 register 컴퓨터 구조론
9.8 간단한 컴퓨터 설계 (3) 8비트 컴퓨터의 CPU 설계 OP-CODE 설계 Op-code Mnemonic Command Addressing mode 00000001(01) LD R1 , n R1 ← n Immediate 00000010(02) LD R1, R2 R1 ← R2 register 00000011(03) LD R1, R3 R1 ← R3 00000100(04) LD R1, M[address] R1 ← M[address] Direct 00000101(05) LD M[address], R1 M[address] ← R1 00000110(06) LD R2, R1 R2 ← R1 00000111(07) LD R3, R1 R3 ← R1 00001000(08) ADD R1, n R1 ← R1 + n 00001001(09) ADD R1, R2 R1 ← R1 + R2 00001010(0A) SUB R1, R2 R1 ← R1 - R2 컴퓨터 구조론
9.8 간단한 컴퓨터 설계 (4) 8비트 컴퓨터의 CPU 설계 명령어 분석-1 Instruction Fetch Cycle t0 : MAR ← PC t1 : MBR ← [M], PC ← PC + 1 t2 : IR ← MBR Instruction Execution Cycle LD R1,n q1t3 : MAR ← PC q1t4 : MBR ← [M], PC← PC + 1 q1t5 : R1 ← MBR, T← 0 LD R1,R2 q2t3 : R1 ← R2, T ← 0 LD R1,R3 q3t3 : R1 ← R3, T ← 0 컴퓨터 구조론
9.8 간단한 컴퓨터 설계 (5) 8비트 컴퓨터의 CPU 설계 명령어 분석-2 LD R1,M[address] q4t3 : MAR ← PC q4t4 : MBR ← [M], PC ← PC + 1 q4t5 : TEMPL ← MBR q4t7 : MAR ← PC q4t7 : MBR ← [M], PC ← PC + 1 q4t8 : TEMPH ← MBR q4t9 : MAR ← TEMP q4t10 :MBR ← [M] q4t11 : R1 ← MBR, T ← 0 컴퓨터 구조론
9.8 간단한 컴퓨터 설계 (6) 8비트 컴퓨터의 CPU 설계 명령어 분석-3 LD M[address], R1 q5t3 : MAR ← PC q5t4 : MBR ← [M], PC ← PC + 1 q5t5 : TEMPL ← MBR q5t7 : MAR ← PC q5t7 : MBR ← [M], PC ← PC + 1 q5t8 : TEMPH ← MBR q5t9 : MAR ← TEMP q5t10 : MBR ← R1 q5t11 : [M] ← MBR, T←0 LD R2,R1 q6t3 : R2 ← R1, T← 0 컴퓨터 구조론
9.8 간단한 컴퓨터 설계 (7) 8비트 컴퓨터의 CPU 설계 명령어 분석-4 LD R3,R1 q7t3 : R3 ← R1, T← 0 ADD R1,n q8t3 : MAR ← PC q8t4 : MBR ← [M], PC ← PC + 1 q8t5 : R1, MBR select q8t7 : ADD signal → Control q8t7 : R1 ← SHIFTER, T ← 0 ADD R1,R2 q9t3 : R1,R2 select q9t4 : ADD signal → control q9t5 : R1 ← SHIFTER, T ← 0 컴퓨터 구조론
9.8 간단한 컴퓨터 설계 (8) 8비트 컴퓨터의 CPU 설계 명령어 분석-5 SUB R1,R2 qAt3 : R1,R2 select qAt4 : SUB signal → control qAt5 : R1 ← SHIFTER, T ← 0 컴퓨터 구조론
9.8 간단한 컴퓨터 설계 (9) 8비트 컴퓨터의 CPU 설계 분석된 명령어들을 기능별로 분류-1 MAR ← PC x1 = t0+q1t3+q4t3+q4t7+q5t3+q5t7+q8t3 PC ← PC + 1 x2 = t1+q1t4+q4t4+q4t7+q5t4+q5t7+q8t4 MBR ← [M] x3 = x2+q4t10 IR ← MBR x4 = t2 R1 ← MBR x5 = q1t5 + q4t11 TEMPL ← MBR x6 = q4t5 + q5t5 TEMPH ← MBR x7 = q4t8 + q5t8 컴퓨터 구조론
9.8 간단한 컴퓨터 설계 (10) 8비트 컴퓨터의 CPU 설계 분석된 명령어들을 기능별로 분류-2 MAR ← TEMP x8 = q4t9 + q5t9 R1 ← R2 x9 = q2t3 R1 ← R3 x10 = q3t3 MBR ← R1 x11 = q5t10 [M] ← MBR x12 = q5t11 R2 ← R1 x13 = q6t3 컴퓨터 구조론
9.8 간단한 컴퓨터 설계 (11) 8비트 컴퓨터의 CPU 설계 분석된 명령어들을 기능별로 분류-3 R3 ← R1 x14 = q7t3 R1, MBR select x15 = q8t5 ADD signal x16 = q8t7 + q9t4 R1 ← SHIFTER x17 = q8t7 + q9t5 + qAt5 R1, R2 select x18 = q9t3 + qAt3 SUB signal x19 = qAt4 T ← 0 x20 = q1t5+q2t3+q3t3+q4t11+q5t11+q6t3+q7t3+q8t7+q9t5+qAt5 컴퓨터 구조론
9.8 간단한 컴퓨터 설계(12) 8비트 컴퓨터의 CPU 설계 - CPU 회로도 컴퓨터 구조론