제 5 장컴퓨터의제어장치
목차 5.1 제어장치의구조및기능 5.2 마이크로오퍼레이션과사이클 5.3 메이저상태와타이밍상태 5.4 제어데이터와제어규칙 5.5 제어장치의구현방법
5.1 제어장치의기능및구조 중앙처리장치 제어장치 1 프로그램카운터 (PC) 6 6 주소처리기4 3 명령어레지스터 (IR) 3 +1 5 해독기순서기제어신호발생기 5 ALU 및레지스터 5 5 주기억장치 2
5.1 제어장치의기능및구조 1) PC 에기억된주소를주기억장치로보낸다. 2) 수행될인스트럭션이인스트럭션레지스터 (IR) 에기억된다. 인스트럭션의연산자부분과피연산자부분이각각주소처리기와제어신호발생기로들어간다. 3) 인스트럭션의연산자부분과피연산자부분이각각주소처리기와제어신호발생기로들어간다. 4) 주소처리기는, 첫째피연산자페치 (operand fetch) 를할경우에는그주소를계산하거나, 둘째수행될인스트럭션의순서가바뀔때는다음에수행될인스트럭션의주소를계산한다. 5) 제어신호발생기에서는연산자를해독하여, 첫째인스트럭션수행을위한제어신호를발생시키며, 둘째수행순서를변화시킬때는주소처리기를동작시켜수행될인스트럭션의주소를계산하게한다. 6) 현재 IR 에있는인스트럭션의수행이끝나면, 첫째인스트럭션이 JMP 와같이수행순서를변화시키는인스트럭션이면새로운주소를 PC 로보내고, 둘째다음위치의인스트럭션을수행할경우에는 PC 의내용을증가시켜다음에수행될인스트럭션의주소를저장하게한다. 명령어레지스터 (IR) 의정의 현재실행중인명령어를기억하고있는중앙처리장치내의레지스터. 중앙처리장치의인출주기에서프로그램카운터가지정하는주기억장치의주소에있는명령어를명령어레지스터로옮기면실행주기에서명령어해독기에의해명령어레지스터에있는명령어가해독된다.
5.1 제어장치의기능및구조 (1) 제어장치의구조 기능 : 명령어를기억장치로부터하나씩가져와서해독하는것. < 제어장치의구성 >
5.1 제어장치의기능및구조 (2) 제어를위한장치 1 명령어해독과연산을위하여제어신호를만들어내는레지스터의종류 : 명령계수기, 번지레지스터, 명령레지스터, 누산기, MQ 누산기, 기억레지스터 2 제어를위한논리구분 : 하드웨어적인것 (Hard wired), 소프트웨어적인것 ( 마이크로프로그램 (Microprogram) 레지스터의제어원리 해독기 (Decoder) 에활성신호 (Enable) 가입력되면동작되며그후에제어신호 (Selector) 에의하여레지스터선택 3 명령계수기 : 프로그램의각명령어가차례대로실행될수있는제어정보를제공하는것이주임무이다. < 명령계수기의명령어위치지적절차 >
5.1 제어장치의기능및구조 (3) 명령어 1 컴퓨터가어떻게동작해야하는지를나타내는것이며, 이것은제어장치에서해독되어그동작이이루어진다. 2 차례대로동작해야할명령어를모아놓은것 프로그램 (Program) 3 명령어형식 모드 (mode) 명령코드부 (OP code) 주소부 (operand) 명령코드부 : 동작지시 번지부 : 처리해야할데이터가어디에있는지표현한다.
5.1 제어장치의기능및구조 3 명령어형식 ( 다 ) 상대번지형식 (relative address) 번지부에표현된값을특정값과계산하여상대적인위치로데이터를지적하는방법이다. 기준 (base) 레지스터와변위 (displacement) 로표현한다. ( 라 ) 즉시데이터형식 (immediate data) 번지부에표현된값이연산할실제데이터인경우의형식이다. < 상대번지 > < 직접번지 >
5.2 마이크로오퍼레이션과사이클 마이크로오퍼레이션 (microoperation: 마이크로동작이라고도함 ) 이란레지스터혹은메모리에저장된정보에작용되는기본동작이다. CPU 의각명령어를실행하기위해서는일련의마이크로오퍼레이션이필요하며, 각마이크로오퍼레이션은한클록펄스동안수행된다. 마이크로오퍼레이션에는다음과같은종류가있다. 1. 전송마이크로오퍼레이션 : 레지스터전송, 메모리전송 2. 산술마이크로오퍼레이션 3. 논리마이크로오퍼레이션 4. 시프트마이크로오퍼레이션 기호의미예 문자및숫자괄호 ( ) 화살표 <- 컴마, 레지스터를표현레지스터의일부를표현정보의흐름을표현두개의마이크로오퍼레이션을구분 MAR, R1 R1(0-7), R1(L) R2 <- R1 R2 <- R1, R4 <- R3
5.2 마이크로오퍼레이션과사이클 [ 레지스트사이의마이크로동작 ] 기호및표형식 동작내용 OPR AD OP I MAR MBR(AD) OPR MBR(OP) A CONSTANT I MBR(I) A ABUS ABUS RI 명령레지스터기억레지스터에기억된명령어의번지부기억레지스터에기억된명령어의명령코드형식레지스터기억레지스터에번지부전송명령레지스터에명령코드전송레지스터 A에상수전송형식레지스터에명령어의형식코드전송레지스터 A에버스 A의내용전송버스 A에레지스터 1번의내용전송
5.2 마이크로오퍼레이션과사이클 (1) 전송마이크로오퍼레이션 1) 레지스터전송레지스터전송이란 H/W 논리회로가어떤주어진마이크로오퍼레이션을수행하고, 그결과를동일레지스터혹은다른레지스터에전송하는것을말한다. 레지스터의표현방법을아래그림보였다. 2) 메모리전송메모리로부터데이터를읽거나메모리로데이터를쓰기위해서는다음과같은동작이필요하다. 여기서메모리는 M, 주소레지스터는 MAR, 데이터레지스터는 MDR 로나타낸다. - 메모리읽기 Read: MDR <- M[MAR] - 메모리쓰기 Write: M[MAR] <- MDR 메모리읽기동작을그림에보였다. 그림에서실선은읽기동작이고, 점선은쓰기동작을나타낸다. 메모리읽기 / 쓰기동작
5.2 마이크로오퍼레이션과사이클 (2) 산술마이크로오퍼레이션 레지스터에저장된수치데이터에대한산술연산을수행하는마이크로오퍼레이션이며, 그예로서가산, 감산, 증가, 감소그리고보수등이있다. 다음마이크로오퍼레이션은가산동작을나타낸다. R0 R1 + R2 상기마이크로오퍼레이션은 R1 과 R2 의내용을가산하여그합을 R0 로전송하라는의미이다. 아래그림에기본적인산술마이크로오퍼레이션의예를보였다. R0 R1 + R2 R2 R2' R2 R2' + 1 마이크로오퍼레이션 R0 R1 + R2' + 1 R1 R1 + 1 R1 R1 1 R1 과 R2 의가산 R2 의 1 의보수 R2 의 2 의보수 동작 2 의보수에의한감산 1 증가 1 감소 < 기본적인산술마이크로오퍼레이션의예 >
5.2 마이크로오퍼레이션과사이클 (3) 논리마이크로오퍼레이션 레지스터에저장된비수치데이터에대한비트조작을수행하는마이크로오퍼레이션이다. 표 4.3 에논리마이크로오퍼레이션의예를보였다. 기호 는 AND 논리, 기호 는 OR 논리그리고는배타적 OR 를나타낸다. 다음은 AND 마이크로오퍼레이션에대한레지스터 R1, R2 의동작예를나타낸것이다. R1 10101111 10110110 R2 00000000 11111111 R0 R1 R2 00000000 10110110 마이크로오퍼레이션 동작 R0 R1' R0 R1 R2 R0 R1 R2 R0 R1 R2 R1 의 NOT R1 과 R2 의 AND R1 과 R2 의 OR R1 과 R2 의 XOR < 기본적인논리마이크로오퍼레이션의예 >
5.2 마이크로오퍼레이션과사이클 (4) 시프트마이크로오퍼레이션 레지스터에저장된데이터에대한시프트연산을수행하는마이크로오퍼레이션이다. 표에시프트마이크로오퍼레이션을보였다. 마이크로오퍼레이션 R1 shl R1 R1 shr R1 동작 R1 의 shift left R1 의 shift right < 기본적인논리마이크로오퍼레이션의예 >
5.2 마이크로오퍼레이션과사이클 (5) 명령어사이클 일반적으로 CPU 에서한개의명령어를실행하는데필요한처리과정을명령어사이클 (instruction cycle) 이라고한다. 명령어사이클은다음 4 단계의부사이클로이루어진다. 1. 페치사이클 : 명령어페치및해독을수행하는단계 2. 간접사이클 : 피연산자를간접주소지정방식으로페치하는단계 ( 옵션 ) 3. 실행사이클 : 실효주소계산, 피연산자페치, 연산및결과저장단계 4. 인터럽트사이클 : 인터럽트요구시이를처리하는단계 ( 옵션 ) 명령어사이클을상기 4 단계부사이클로구분할때는이들상태를나타내기위해일반적으로 F 와 R 플립플롭의두비트를사용하며, 그기능은표 4.5 와같다. F R 해당사이클 0 0 0 1 1 0 1 1 패치사이클 (C 0 ) 간접사이클 (C 1 ) 실행사이클 (C 2 ) 인터럽트사이클 (C 3 ) < 기본적인논리마이크로오퍼레이션의예 >
5.2 마이크로오퍼레이션과사이클 (6) 마이크로사이클 1) Mirco operation 수행시필요로하는시간 2) 마이크로사이클타임 - 마이크로사이클주기, 즉하나의마이크로연산을수행하는데걸리는시간 - 동기고정식모든마이크로연산의수행시간이같다고가정 - 제어에필요한시간적인신호로중앙처리장치클록하나만가지고제어가능 - 제어장치의구현이간단. 모든마이크로연산중수행시간이가장긴것을주클록발생기의클록주기로설정. CPU사이클타임이실제 micro operation 수행시간보다큼 - CPU시간이용이비효율적모든마이크로연산의수행시간이유사할경우에사용
5.2 마이크로오퍼레이션과사이클 - 동기식가변식 1 마이크로사이클이한가지이상으로정의 2 마이크로연산이수행시간이서로다를경우 - 수행시간이유사한것끼리몇개의군으로나눔 - 각군에대해서로다른마이크로사이클타임을정의 3 제어가복잡 4 CPU 시간을효율적으로사용 -비동기식 1 마이크로연산의수행시간이현저할뿐아니라수행시간을예측할수없을때 2 하나의마이크로연산이끝나야다음마이크로연산을위한타이밍신호가생성 3 CPU의시간을효율적으로사용가능, 제어구조가매우복잡
5.2 마이크로오퍼레이션과사이클 (7) 제어점과제어신호 - 제어점 (control point) 레지스터의입력게이트와출력게이트로제어신호가들어가는각단자 - 독립제어점 (independent control point) 서로다른제어신호를가해야되는제어점 단계적표시 1. 입력데이터가기억된레지스터의출력게이트를열어준다. 2. 연산시필요한연산을수행하기위한제어신호를발생시킨다. 3. 연산기의연산결과를기억시킬레지스터의입력게이트를열어준다. 보통하나의레지스터에는입력과출력단자에각각하나의독립제어점이존재
5.3 메이저상태와타이밍상태 5.3.1 메이저상태 1) 제어신호는 CPU 의상태에따라결정 2) CPU의상태 : CPU가어느시점에무엇을하고있는가를나타내는정보 - 현재진행중인작업에관란정보 : 메이저상태, 메이저상태레지스터 - 시간에관란정보 : 타이밍상태, 타이밍상태카운트 3) CPU의상태에따라나타냄 - Fetch, execute, indirect, interrupt 메이저상태 - 주기억장치접근때마다변화
5.3 메이저상태와타이밍상태 간접사이클 명령어에포함되어있는주소를이용하여, 실제명령이실행에필요한데이터를인출하는사이클 - CPU 가이러한상태에있을때제어장치는 Indirect 메이저상태에있음 실행사이클 명령어를실행하는단계 - CPU 가명령어를수행할때제어장치는 Execute 메이저상태에있음. 명령어의종류에따라그명령어의수행이완료되는상태가서로다를수있음.
5.3 메이저상태와타이밍상태 Fetch Fetch Execute Indirect Interrupt 직접, 간접주소에의한명령실행인터럽트발생 < 메이저상태의변천도 > 명령이메모리로부터읽혀질때를명령패치사이클 (Fetch Cycle) 이라고한다. 그리고메모리에서읽은워드가오퍼랜드번지일경우에는간접사이클 (Indirect Cycle) 에있다고말하며. 오퍼랜드자체인경우에는실행사이클 (Execute Cycle) 에있다고말한다. 이때더긴급한일이발생하게되면인터럽트사이클 (Interrupt Cycle) 을수행하게되고그렇지않으면다시패치사이클을수행한다.
5.3 메이저상태와타이밍상태 메이저상태 Fetch Indirect Execute Interrupt 역할 1. 수행할명령어를기억장치에서읽음 2. 명령어의종류를해독함 ( 명령어디코딩 ) 3. ㄱ.1- 사이클명령어이면이를수행후다시 Fetch 로변천ㄴ.1- 사이클명령어가아니면유효주소를계산한후간접주소이면 Indirect 로, 아니면 Execute 로변천 1. 주소를기억장치에서읽음 2. ㄱ. 간접주소이면다시 Indirect 로변천ㄴ. 간접주소가아니고브랜치 (Branch) 명령어이면수행한후 Fetch 로변천, 브랜치명령어가아니면 Execute 로변천 1. 데이터를기억장치에서읽음 2. 수행후Fetch로변천 1. CPU 상태를기억장치나레지스터에기억 2. 인터럽트처리후Fetch로변천 < 메이저상태와역할 >
5.3 메이저상태와타이밍상태 (1) Fetch 상태 - 하나의명령어수행을위해기억장치로부터하나의데이터를 CPU 내의 IR(Instruction Register) 로읽어들이는동작을 Fetch 상태라한다. 이를위해 CPU 는하나의메모리사이클을갖는다. MICRO OPERATION C 0 T 0 : AR <- PC C 0 T 1 : MBR <- M[AR], PC <- PC+1 C 0 T 2 : IR <- MBR C 0 T 3 : F <- 1 or R <- 1 - 명령어주소의전송 - 명령어읽기및 PC의 1증가 - 명령어를명령레지스터로전송 - 실행사이클혹은간접사이클로넘어감
5.3 메이저상태와타이밍상태 (2) Indirect 상태 - Fetch 된명령에서번지부분의주소가간접주소일경우기억장치의주소가지정하는곳으로부터유효번지를읽기위하여기억장치를한번더접근하는상태를말한다. MICRO OPERATION C1T0 : MAR <- MAR(AD) - 명령어의주소부분을전송 C1T1 : MBR <- M(MAR) - 피연산자의주소를읽음 C1T2 : NOP(No Operation) - 아무일도하지않음 C1T3 : F <- 1, R <- 0 - 실행사이클로넘어감
5.3 메이저상태와타이밍상태 (3) Execute 상태 - Fetch 상태나 Indirect 상태에서구해진유효번지에서자료를읽어들여해당명령들을수행한다. 이러한일을수행할때 Execute 상태에있다고한다. MICRO OPERATION C2T0 : MAR <- MAR(AD) - 실효주소를 MAR 로전송 C2T1 : MBR <- M - 피연산자를읽음 C2T2 : AC <- AC( 해당 operation) MBR - 누산기와 AND 연산함 C2T3 : F <- 0 - 페치사이클로넘어감
5.3 메이저상태와타이밍상태 (4) Interrupt 상태 - 정상적인명령실행과정중비정상적인동작, 기계의고장, 입출력요구, 서브루틴호출등으로인해응급조치를취한후계속실행할수있도록현상태를보관하는상태를말하며, 이러한상태를처리하기위하여하나의기억장치사이클을할당하는데이러한동작을인터럽트상태에있다고한다. MICRO OPERATION C3T0 : MBR(AD) <- PC, PC <- 0 - 복귀주소를 MBR 로전송하고, PC 는클리어함 C3T1 : MAR <- PC, PC <- PC +1 - MAR 을 0 으로하고, PC 를 1 증가시킴 C3T2 : M(MAR) <- MBR, IEN <-0 - 복귀주소를메모리에저장하고, IEN 을클리어함 C3T3 : F <- 0, R <- 0 - 페치사이클로넘어감 IEN(Interrrupt Erable Elip-flop) - 인터럽트처리과정에필요한것 - 명렁어에의해세트, 클리어될수없음 - 프로그램실행동안플래그체크안함 - 플래그세트되면실행중인프로그램중지하고플래그가셋트되었다는정보를받아입출력실행 - 실행종료되면인터럽트이전에실행하던프로그램을계속실행
5.3 메이저상태와타이밍상태 (5) 타이밍상태 1) 메이저상태에서의타이밍상태 - 메이저상태에있는동안에몇개의마이크로오퍼레이션을수행해야할것인가에의하여결정된다. - 각타이밍상태에있는동안에하나의마이크로오퍼레이션을수행할수있다. - 타이밍상태의변천은 CPU 클럭펄스 (clock pulse) 에의하여서로다른타이밍상태사이를순서적으로변천한다. 메이저상태역할 ( 기능에따른시간적동작 ) 명령인출 간접단계 실행단계 1. 명령을기억장치에서읽는다. 2. 명령종류판단 3. 가 - 1 주기명령이면실행하고, 다시인출단계로진행한다. 나 - 1 주기명령이아니면유효번지를계산하고, 간접번지형식이아니면실행단계로진행한다. 1. 번지를주기억장치에서가져온다. 2. 가 - 간접번지형식이면다시간접단계로진행한다. 나 - 분기명령이면실행후명령인출단계로진행한다. 그렇지않으면실행단계로진행한다. 1. 데이터를기억장치에서읽어온다. 2. 실행후인출단계로진행한다
5.4 제어데이터와제어규칙 (1) 제어기의실현 - 1 개의명령어가컴퓨터에서처리되기위해서는여러단계의마이크로오퍼레이션으로나뉘어제어장치에서제어신호에의해실행되며, CPU 가기계어명령수행을위해 CPU 내의각부분에제어신호를보내는동작을마이크로오퍼레이션이라고한다. - 마이크로오퍼레이션에의해제어신호를만들어내는일은제어장치가담당하며, 제어신호를만드는방식에따라분류할수있다. 1 논리회로를이용한제어기의실현 ( 하이와이어드제어장치 ) - 불규칙적인회로이며, LSI 화하는데불규칙적이다. 2 마이크로프로그램에의한제어기의실현 - ROM 이나 PLA 를이용하여제어기억장치에기억시킨마이크로프로그램을수행하여제어신호를발생하는방법이다.
5.4 제어데이터와제어규칙 제어데이터 : 주소지정방식 제어데이터 : 명령코드 Fetch 1- 사이클명령어? No Yes Indirect Yes 간접주소? No Execute Yes 제어데이터 : 인터럽트신호 브랜치명령어? 제어데이터 : PC No 제어데이터 : 명령코드 그림인터럽트? Yes Interrupt No
5.4 제어데이터와제어규칙 메이저상태 동작 상태변환을위한제어데이터 CPU 제어점을위한제어데이터 다음수행명령어의주소결정제어데이터 Fetch -CPU 를통한수행처리 - 다음명령을읽을수있도록함 -Instruction -Interrupt 요청신호 -CPA, JMP X -OP code - 계산에의한주소 명령어 (instruction) Indirect - 자료를읽은후 CPU 가명령실행 -Instruction -Interrupt 요청신호 -OP code PC (program counter) Execute - 기억장치에서자료를읽은후직접주소인가를검사한후에적절히처리 - 직접주소인지간접주소인지를나타내는비트 -Interrupt 요청신호 -OP code 유효주소 Interrupt - 제어의흐름을바꾸어인터럽트취급루틴수행 - 중단된원래의루틴을계속수행 - 제어데이터없이 Fetch 상태로 -OP code PC (program counter) < 메이저상태에서의동작과제어데이터 >
5.4 제어데이터와제어규칙 5.4.2 제어규칙 - 각메이저상태와각타이밍상태에서특정한제어데이터를받았을때, 어떤마이크로오퍼레이션을수행하도록제어신호를발생할것인가는제어규칙에의해결정된다. [1] 개략적인제어규칙마이크로오퍼레이션들의타이밍상태를고려하지않고순차적으로나열한개략적인제어규칙 ADD - FETCH 상태 : MAR <- PC, IR (0 -> MBR(OP)) <- MBR(OP), MBR <- F(PC, MBR) - INDIRECT 상태 : MAR <- MBR, MBR <- F(MBR, 0) - EXECUTE 상태 : MAR <- MBR, PC <- PC + 1, AC <- F(AC, MBR)
5.4 제어데이터와제어규칙 5.4.2 제어규칙 [2] 실제적인제어규칙 - 메모리의접근시간이마이크로사이클타임의 2 배. 메모리에 R( 읽기 ) 제어신호, MAR 에주소를전달하는마이크로오퍼레이션을수행한다음읽혀진정보는다음마이크로사이클에서는사용할수없고, 그다음마이크로사이클에서부터사용할수있다. - MBR 에기억시킬정보를전달하는마이크로오퍼레이션. 메모리에 W( 쓰기 ) 제어신호, MAR 에주소전달마이크로오퍼레이션을수행한다음의마이크로사이클까지는수행해야한다. - 메모리사이클타임은마이크로사이클타임의 4 배. 메모리접근을위하여 R 이나 W 제어신호, MAR 에주소전달마이크로오퍼레이션을마이크로오퍼레이션을수행한다음에다시메모리에접근하려면적어도 4 마이크로사이클뒤에할수있다.
5.4 제어데이터와제어규칙 5.4.2 제어규칙 [2] 실제적인제어규칙 주기억장치사이클 접근시간 마이크로사이클
어점중앙처리장치제5.5 제어장치의구현방법 5.5.1 논리회로에의한구현방법 제어장치는불규칙적인회로 (random logic) 이므로대규모집적회로화하는것이비경제적이었다. 제어장치의복잡도를개선한 RISC 구조의칩개발 메이저상태 OP-code Rs1 cond SCC IR 상태플립플롭 타이밍상태 Rd S2(imm) 제어데이터 제어장치 Rs2 제어데이터제어논리회로 불규칙인회로로구조가복잡, 수정불가능, 수명이짧다, 처리속도가빠르다.
어점다음주소중앙처리장치제5.5 제어장치의구현방법 5.5.2 마이크로프로그램에의한구현방법 제어메모리 (control storage) 에기억시킨마이크로프로그램을수행하여제어신호를발생한다. ROM 이나 PLA 에의한논리회로의설계와유사 대규모집적회로의이용으로제어장치의비용을절감 구조는제어메모리주소레지스터 (CSAR), 제어메모리데이터레지스터 (CSDR), 제어메모리, 다음주소결정회로로구성된다. 결정회로 C S A R 제어기억장치 C S A R 해독기 IR 상태플립플롭 CPU 상태 대규모집적회로이용가능, 제작간편, 대량생산가능, 프로그램변경및교환가능