ALU 및 레지스터들과 더불어 중앙처리 장치의 주요 구성요소들 중의 하나인 제어 장치는 컴퓨터의 모든 장치들이 유기적으로 동작하도록 제어 합니다.
1. 명령어 코드의 해독
2. 명령어 실행에 필요한 제어 신호들의 발생
즉 제어장치는 컴퓨터 프로그램을 구성하고 있는 명령어들을 해독하고 그 결과에 따라 명령어 실행에 필요한 동작들을 수행시키기 위한 제어 신호들을 발생하는 장치입니다.
데이터 처리기에서 제어 로직으로 보내지는 상태신호는 연산기에서 데이터를 처리한 결과에 따라 발생되는 상태들로서 제어 로직의 알고리즘이 동작되는 동안 상태에 따라 분기 한다던가 혹은 상태 변환을 하기 위한 판단 기준을 공급해 주는 신호입니다.
명령어 해독기 : 명령어 레지스터(IR) 로부터 들어오는 명령어의 연산 코드를 해독하여 해당 연산을 수행하기 위한 루틴의 시작 주소를 결정합니다.
제어 주소 레지스터: 다음에 실행할 마이크로 명령어의 주소를 저장하는 레지스터입니다. 이 주소는 제어 기억장치의 특정 위치를 가르킵니다.
제어 기억장치 : 마이크로명령어들로 이루어진 마이크로프로그램을 저장하는 내부 기억장치입니다
제어 버퍼 레지스터: 제어 기억장치로 부터 읽혀진 마이크로 명령어 비트들을 일시적으로 저장하는 레지스터입니다.
서브루틴 레지스터 : 마이크로프로그램에서 서브루틴이 호출되는 경우에 현재 CAR 내용을 일시적으로 저장하는 레지스터입니다.
순서 제어 모듈 : 마이크로 명령어의 실행 순서를 결정하는 회로들의 집합입니다.
마이크로 오퍼레이션
중앙처리 내의 각종 레지스터들은 거의 플립플롭(flip flop) 으로 구성되어 있으므로 중앙처리장치의 상태는 플립플롭들의 상태입니다. 즉 레지스터나 플래그 가 기억하고 있는 정보의 내용에 의해서 좌우 됩니다.
이와 같이 중앙처리장치의 상태를 정의하면 프로그램의 수행 또는 명령의 수행은 중앙처리장치로 하여금 잘 정의된 일련의 상태 변환 을 하도록 제어함으로써 이루어 진다고 볼 수 있습니다. 명령 수행을 위해서 중앙처리장치가 상태 변환을 할 수 있도록 하는 동작들을 원시적 오퍼레이션 이라고 합니다.
중앙처리장치의 상태 변환 방식에는 동기식과 비동기식이 있는대 동기식은 외부로부터 공급되는 일정 주기의 펄스 열에대하여 각 펄스마다 상태 변환하는 것이고 비동기은 입력과 내부 상태만으로 상태 변환하는 것을 말합니다.
보통 어떤 한 컴퓨터에서 수행이 가능한 마이크로 오퍼레이션의 종류는 중앙처리장치 내에 존재하는 레지스터들과 연산기의 종류 그리고 그들이 서로 연결된 형태에 의해서 결정되므로 구체적인 구조를 떠나는 수행이 가능한 마이크로 오퍼레이션의 종류를 논할 수가 없습니다.
그러므로 여기서는 중앙처리장치 내에서 수행되는 간단한 오퍼레이션을 몇가지 다루고자 합니다.
명령 수행 상태와 타이밍 제어 상태
머신 사이클
컴퓨터의 작동은 일정한 시간 간격 으로 발생되며 이 간격은 매우 정밀한 전자시계로 규칙적인 펄스 신호에 의해서 측정되는데 펄스의 수는 각각의 기본적인 머신 사이클 의 시간을 결정하는 것입니다. 결국 컴퓨터가 어떤 동작을 하는 간격이 머신 사이클인데 이 머신 사이클 동안에는 특정한 기계적 조작을 할 수 있습니다. 이 조작은 명령어를 수행하게 됩니다. 보통 제어장치는 기억장치에 기억되어 있는 프로그램의 명령을 한 어드레스씩 읽어 해독하여 필요한 신호를 만들고, 이 신호에 의해 연산장치와 주변장치를 제어 합니다.
명령 사이클(machine cycle) : 기억장치의 번지를 확인하여 명령을 읽어 낼 때까지의 단계
실행 사이클(instruction cycle): 읽혀진 명령에 따라 필요한 신호를 만들어 결과를 얻을 때까지의 단계
패치 사이클(fetch cycle) : 주기억장치에 있는 명령을 꺼내는 작업을 패치 사이클(fetch cycle) 이라고 하며 콘솔을 통해 제어 계수기에 초기 번지를 지정합니다. 그럼 주기억장치의 명령이 명령 레지스터로 이동하고 한개의 명령 내용인 OP코드 가 기억되는데 명령 코드는 명령 해독기를 통해 해독되고 부호기 를 거쳐 각 저장장치에 신호를 보내며 주소부는 번지 해독기를 통해 주소가 해독 됩니다. 이때 제어 계수기는 주기억장치의 어드레스(address)가 자동적으로 하나 증가합니다.
명령 사이클(instruction cycle): 명령이해독되는 사이클을 사이클이라고 하고 이 사이클을 수행하는 데 걸리는 시간을 명령 수행 시간이라고 합니다.
1. 명령어는 주기억장치에서 불러와져 중앙처리장치로 옮겨집니다
2. 명령어의 오퍼레이션 코드부 (op code)는 명령 레지스터에서 코드화되어 컴퓨터에게 어떠한 동작을 할 것인가 지시합니다
3. 명령어의 오퍼랜드부(operand part)는 어드레스 레지스터에 위치하여 컴퓨터에게 조작에 사용될 요소를 알려줍니다
4. 현재 수행된 다음 명령어의 위치(location) 가 결졍됩니다.
실행 사이클(execution cycle)
명령이 실행되는 사이클을 실행 사이클 이라고 하며 이 단꼐에서는 멍령 레지스터의 명령 코드 내용이 명령 해독기에 의해 해독되고 해독된 내용은 부호기 에 의해 각 장치에 신호를 보내게 됩니다. 만약 이때의 해독된 내용이 가산 명령이라면 부호기의 신호에 의해 누산기의 내용이 소거 되고 명령 레지스터의 주소부가 주기억 장치의 번지 지정에 산출되어 기억 레지스터로 옮긴 후 누산기와 가산기의 연산에 의해 계산된 결과는 누산기에 임시 저장됩니다. 이 과정이 끝나면 실행 단계가 끝나고 다시 인출 단계가 시작됩니다. 실행 사이클이 끝나는 순간 제어 계수기는 어드레스에 1을 가산하여 다시 인출 사이클을 시작합니다.
이제 종합적으로 밑 그림처럼 실행이 됩니다.
1.프로그램 카운터(pc)의 내용인 명령어의 번지를 메모리 어드레스 레지스터(MAR)로 보냅니다.
2.메모리 어드레스 레지스터가 지정하는 메모리의 번지(200)는 해독기에서 해독되어 200번지에 있는 명령어의 명령 코드부와 번지를 메모리 버퍼레지스터(MBR)로 보냅니다. 또 동시에 프로그램 카운터의 번지를 1증가시켜 201로 만듭니다
3. MBR의 내용(LOAD)을 명령 레지스터(IR)로 보내어 명령 해독기에서 해독합니다.
4.명령 해독기에서 해독한 결과 주소부의 데이터를 메모리에서 꺼내오기 위해 MBR의 내용 중 주소부를 MAR로 직접 보냅니다.
5. MAR가 지정하는 300번지는 번지 해독기에서 해독되어 메모리의 300번지에 있는 데이터를 MBR로 보냅니다.
6. MBR에 있는 데이터를 누산기(accumulator) 에 보냅니다. 살재로는 덧셈을 합니다.
여기서 , 1~3 까지를 명령어 인출 사이클이라 하고 4~6까지를 명령실행 사이클 이라 합니다.
명령 수행 상태와 타이밍 제어 상태
마이크로 오퍼레이션의 수행을 위해서는 필요한 독립 제어점에 제어 신호를 가하고 또 정확한 시점에서 제어 신호가 발생할 수 있도록 해야 합니다. 그러므로 제어장치는 제어 데이터를 받을 때 정화한 제어 신호를 발생할 수 있도록 그 내부에서는 현재의 상태를 기억하고 있어야 합니다.
일반적으로 제어장치의 내부 회로는 수넛 논리 회로 상태이므로 클록 펄스 에 동기되어 동작한다면 회로 내의 상태는 클록 펄스가 나타날 때 상태 변화가 일어나며 그 변화된 상태는 다음 클록 펄스가 나타날 때까지 유지됩니다.
메이저 상태
중앙처리장치가 무엇을 하고 있는가를 나타내는 상태로서 기억장치의 사이클을 단위로 하여 사이클 동안 무엇을 위해 기억장치에 접근하는가를 나타내 줍니다.
따라서 명령 수행을 위해 중앙처리장치의 메이저 상태는 주기억장치를 접근 할때마다 변화를 합니다. 이와 같이 각 메이저 상태는 기억장치의 접근과 결부되어 있기 때문에 n사이클 명령이라고 하면 n개의 메이저 상태를 경과해야만 합니다
그러나 반드시 메이저 상태의 네 가지 과정을 경과해서 수행되는 것은 아니며
1.인출 사이클(fetch cycle)
2.간접 사이클(indirect cycle)
3.실행 사이클(execute cycle)
4.정지 사이클(interrupt cycle)
이렇게 있습니다..
second edition (번역)
간접 사이클 I. =1
Q7
third edition
fetch cycle 마이크로 동작
1. CoTo : MAR <--- PC T0. : AR<---- PC
2. CoT1: MBR<--M[MAR], T1. : IR<---- M[AR]. , PC. <---- PC+1
3. CoT2: OPR. <--- MBR(opcode) T2 : Do~D7 <-- decoding. IR(12~14), I<--- IR(15). , AR. <--IR(0~11)
I. <---- MBR( I )
4. Q7' I CoT3 : R<--- 1 (간접 사이클)
I' Q7 CoT3 : F<----1. (실행 사이클) (I ==0 or not MRI )
Do~D7 <-- decoding. IR(12~14), I<--- IR(15). , AR. <--IR(0~11) <-- 이부분을 그림으로 바꾸면
IR(15) IR(12~14) IR(0~11)
메이저 상태 제어
2번역 3번역
C1 To:MAR<--MBR(AD) T3: AR <---M[AR].
C1T1:MBR<---M[MAR] D'7 I T3: AR<---- M[AR]
C1 T2: 건너뛰기
C1T3 : F<--1, R<--- 0. (실행 사이클) D7 I' T3: 레지스터 명령실행
D'7I' T3: nothing( 직접)
D7 I T3: 입출력 명령 실행
메모리 참조 명령어
fetch cycle 예
명령어를 기억장치로부터 중앙처리장치로 가져오는 상태로서 제어장치는 인출 사이클 메이저 상태에 있다고 합니다.
1. MAR<--- PC (명령어의 번지를 전송)
2. MBR<--M[MAR], PC<--PC. +1 (명령어를 읽고 PC를 1증가)
3. OPR<--- MBR(OP), I <---MBR(OP 코드와 made 비트를 전송)
indirect cycle 의 예
명령어의 번지 부분이 간접 주소일 때 유효 번지를 읽기 위해서 기억장치에 접근하는 상태로서 제어장치는 간접 사이클 메이저 상태에 있다고 합니다.
C1T0 : MAR <-- MBR(AD). (명령어의 번지 부분을 전송)
C1T1 : MBR. <---M[MAR]. (오퍼랜드의 번지를 읽음)
execute cycle의 예
인출 사이클 상태나 간접 사이클 상태를 거쳐서 유호 주소를 구한 후 기억장치에 접근하여 자료를 읽은 후 이것을 이용해서 연산자를 수행하는 상태로서 제어장치는 실행 사이클 메이저 상태에 있다고 합니다.
'CS > 컴퓨터구조' 카테고리의 다른 글
입출력 시스템과 입출력장치 (0) | 2023.12.06 |
---|---|
기억장치 (1) | 2023.12.01 |
중앙 처리장치(CPU) (0) | 2023.11.10 |
정수의 산술 연산 (1) | 2023.11.03 |
음수의 표현 (0) | 2023.10.28 |