- 프로그램 계수기(Program Counter, PC) : 프로그램 수행 순서를 제어한다.
- 명령 레지스터(Instruction Register) : 현재 수행중인 명령어의 내용을 임시 기억한다.
- 명령해독기(Instruction decoder) : 명령 레지스터에 수록된 명령을 해독하여 수행될 장치에 제어신호를 보낸다.
표) 제어 장치 구현 방식의 종류
Hardwired(고정 배선 제어) | Micro Program |
---|---|
제어신호가 Hardwired Circuit에 의해서 생성되도록 하드웨어 구성 | 발생 가능한 제어 신호들의 조합을 미리 구성하여 ROM에 저장하였다가 필요시 신호를 발생시키는 Software 방식 |
상태계수기와 PLA(Programmable Logic Array) 회로로 구성 | |
고속처리, 고가 | 하드웨어 방식에 비해 속도 낮고 가격 저렴 |
RISC 시스템에 적용 | CISC에 적용 |
- 주로 산술 연산 논리장치에 의해 사용되는 범용 레지스터(General-Purpose Register)와
- PC 등 특수 목적에 사용되는 전용 레지스터(Dedicated-Purpose Register)로 구분할 수 있다.
- 아래는 16bit Machine의 레지스터 구조이다.
종류 | 사용 |
---|---|
IR(Instruction Register) | 현재 수행 중에 있는 명령어 부호를 저장하고 있는 레지스터 |
PC(Program Counter) | 명령이 저장된 메모리의 주소를 가리키는 레지스터 |
AC(Accumulator) | 산술 및 논리 연산의 결과를 임시로 기억하는 레지스터 |
명령어는 시스템이 특정 동작을 수행시키는 작은 단위이다.
명령어는 코드로 되어 있다.
아래와 같이 동작코드(Op-code : Operational Code)와 오퍼랜드(Operand)로 구성되어 있다.
이름 | 설명 |
---|---|
명령어(Instruction) | 동작 코드 + 오퍼랜드(Operand) |
동작 코드 (Op-code) | 각 명령어의 실행 동작을 구분하여 표현 |
오퍼랜드(Operand) | 명령어의 실행에 필요한 자료나 실제 자료의 저장 위치 |
1) 읽기(Fetch Instruction) : 메모리에서 명령을 가져온다.
2) 해석(Decode Instruction) : 명령을 해석한다.
3) 실행(Execute Instruction) : 명령을 수행한다.
4) 기록(Write Back) : 수행한 결과를 기록한다.
정리하면
1) PC가 가리키는 주소에서 명령어 가져옴 + PC 증가
2) IR에 명령문 Load
3) Execute
4) ALU에서 처리
: Instruction 개수,
: Instruction 당 평균 동작 단계의 수,
: 한 동작 단계의 수행시간 )
그냥 싹 다 곱하면됨 ㄹㅇㅋㅋ
CISC는 복잡하고 많은 명령어를 자체적으로 포함하는 내장 방식 프로세서로써 각 명령어마다 여러 Cycle에서 수행한다.
명령어 집합이 다양해 짐에 따라서 프로세서 구조의 복잡도도 증가하게 된다.
CISC와 RISC의 비교
구분 | CISC | RISC |
---|---|---|
사이클 | 여러 사이클로 명령어 처리 | 하나의 사이클로 명령어 수행 |
메모리 | 많은 명령어가 메모리 참조 | 메모리 Load/Store 명령만 처리 |
장/단점 | 파이프라이닝 사용이 어려움 | 파이프라이닝, 슈퍼스칼라 가능 |
컴파일러 | 복잡한 마이크로 프로그램 | 복잡한 컴파일러 구조 |
CISC는 가능한 적은 수의 명령으로 작업을 수행하는 것이 목적이다.
예를 들어 살펴보면 다음과 같다.
MULT 5:7, 4:3
여기서 MULT 라는 것이 복합 명령어(Complex Instruction)가 되는 것이다. 고수준의 언어와 비슷하고 사용자가 봐도 의미를 이해할 수 있다. 이것을 RISC로 접근할 경우 간단한 명령어들의 조합으로 구성할 수 있다.
"MULT"가 각각 "LOAD", "PROD", "STORE"로 분리되어 아래와 같이 처리된다.
LOAD A, 5:7
LOAD B, 4:3
PROD A,B
STORE 5:7, A
차이점은 MULT 라는 명령어를 위해서는 내부적으로 여러 사이클을 수행하게 되고, RISC인 경우는 한 클럭에 한 개의 명령을 수행할 수가 있다. 이렇게 단일 형태로 실행되기 대문에 파이프 라이닝이나 슈퍼 스칼라 방식의 처리가 가능하다.
출처 : 기술노트 with 알렉