오늘은 컴퓨터 구조의 세가지 요소 중 마지막, Control Unit에 대해서 다뤄봅니다.
Timing and Control
지금까지 설명한 모든 개념은 우리가 쓰는 일반적인 컴퓨터가 아닌 Mano가 설계한 16비트 컴퓨터입니다. Basic Computer라고 부르죠. 이 Basic Computer에서 모든 레지스터는 이를 작동할 수 있게 조절하는 timing이 존재합니다. 이러한 timing이 주어질 때마다, 레지스터는 우리가 설계한 대로 작동합니다. 이 timing은 master clock generator가 제공하는 clock pulse에 의해 control 되죠.
흔히 우리가 부르는 1GHz와 같은 단위가 timing에 사용됩니다. 1GHz는 1초에 10억번 clock됩니다. clock이란 clock pulse가 튀는 것을 의미하여, 쉽게 설명하면 스위치를 on하는 것과 동일합니다.
즉, 레지스터는 1초에 10억번 switch on되어서 작동하는 것이죠. 1초에 10억번은 사실 불연속인 값입니다. 불연속적으로 진행되는 이 동작들이 너무 빨라 우리는 마치 연속적인 행동처럼 느끼게 되는 것입니다.
+) 운영체제를 공부해보면 알겠지만, CPU는 하나의 일만 처리할 수 있습니다.(1코어일 경우) 하지만 clock이 매우 빠른 속도로 튀기때문에 동시에 진행된다고 느껴지는 것이죠.
이제 우리는 레지스터가 clock에 의해 조절됨을 알았습니다. 그렇다면 레지스터에 많은 동작이 있는데, 이 많은 동작 중에 어떠한 동작을 해야할지 결정하는 것은 누구일까요? 바로, control signal입니다. control signal에 의해서 레지스터의 많은 동작들 중 하나를 택하여 동작하는 것입니다.
이러한 control signal은 control unit에 의해 생성됩니다.
즉, 우리는 control unit을 잘 설계하는 것이 주목표가 되겠습니다.
Control Unit
control unit은 Hardwired Control과 Microprogrammed Control로 나뉩니다.
Hardwird control은 control logic이 gate, flip-flop, decore 또는 다른 logic circuit에 대해서 구성됩니다.
Microprogrammed control은 control 정보가 CPU 내의 control memory에 저장됩니다. 즉, 우리가 프로그램하는 것이죠.
각 방식에는 장단점이 있습니다.
Hardwired control은 속도가 Micropgrammed보다 월등히 빠릅니다. 따라서, 속도가 우선시되는 곳에 자주 쓰입니다. 하지만 수정이 어려우므로 유의해서 설계해야합니다.
Microprogrammed control은 수정이 간편합니다. 하지만 속도가 많이 차이나므로 수정이 빈번히 일어나는 곳에 쓰이게 됩니다.
Block diagram of control unit
위 그림으로 Control Unit의 과정을 쉽게 이해할 수 있습니다. 위에서부터 확인해봅시다.
전에 배웠던 Instruction register가 존재합니다. 지금은 memory-reference instruction인 경우의 다이어그램이라고 볼 수 있겠네요.
최하위 비트에서는 address mode를 확인합니다. 그리고 opcode는 3x8 decoder를 통해서 8가지 모션 중에 하나를 선택하게 됩니다. Address Register에 있는 주소는 그대로 전달하여 줍니다. 이렇게 되면 Address mode와 Opcode에 맞는 instruction을 Control Logic gates에서 실행할 수 있습니다.
아랫부분을 확인해봅시다. SC, sequence counter입니다. 이는, 일의 진행을 확인하는 것 정도로 이해합시다. SC에는 총 2개의 operation이 가능합니다. INR, CLR. 가장 처음에 CLR된 상태, 즉 0이 됩니다. clock이 뜨면 4x16 decoder에 0000의 값을 전달해줍니다. SC가 0이기 때문이죠.
그렇게 되면 decoder는 0의 값을 내보내줍니다. 이렇게 내보내주는 값은 Timing을 의미합니다. 계속 Clock이 뜨게 되면 INR을 수행하고 15가 된다면 CLR 연산을 진행헤줍니다.
이렇게 하단에 있는 SC는 0부터 15까지를 계속해서 순환해줍니다.
다시 정리해보면, 상단에 있는 부분은 Instruction의 종류를 결정하고, 하단은 Timing을 결정합니다. 지금은 다소 어려울 수 있는 개념이지만, 뒤에 Instruction Cycles에서 다룰 때 이해하실 수 있을겁니다.
Timing Signal
위의 이해를 돕기 위해 Timing Signal에 대해서 알아봅시다. 상단의 Block Diagram을 다시 확인해보면, 하단의 SC가 timming signal을 생성하는 것을 확인했습니다.
조금 더 자세하게 그림으로 설명해보겠습니다.
(D_3)(T_4)는 D_3와 T_4가 1일 때를 의미합니다. if문의 조건에 해당하는 부분이라고도 볼 수 있겠네요.
만약 이 조건이 성립한다면, 그 우측의 문장을 수행합니다.
SC <- 0 은 SC를 0으로 만들어라. 즉, Clear하라는 의미가 되겠습니다.
따라서 그림에서 파란색으로 동그라미 되어있는 부분에서 T_4와 D_3가 동시에 1이 되었음을 알 수 있고, 그에 따라서 Clear를 1로 만드는 동작을 수행한 모습입니다.
이런식으로 Timing Signal은 동작합니다.
Control Unit의 기본을 조금 다뤄봤습니다. 다음에는 Instruction cycles을 통해서, 어떻게 각종 연산들이 때에 맞게 수행되는지를 확인할 것입니다. 감사합니다.
'CS > Computer Architecture' 카테고리의 다른 글
[컴퓨터구조] 5-5.2. Instruction Cycle(Memory-reference instruction) (1) | 2023.09.27 |
---|---|
[컴퓨터구조] 5-5.1. Instruction Cycle (0) | 2023.09.27 |
[컴퓨터구조] 5-3. Computer Registers (0) | 2023.09.26 |
[컴퓨터구조] 5-2. Computer Instructions (2) | 2023.09.26 |
[컴퓨터구조] 5-1. Instruction Codes (0) | 2023.09.25 |