1. CPU의 기능
- 명령어 인출
- 명령어 해독
>> 모든 명령어들에 대하여 공통적으로 수행
- 데이터 인출
- 데이터 처리
- 데이터 쓰기
>> 명령어에 따라 필요한 경우에만 수행
2. CPU의 기본 구조
- 산술논리연산장치(ALU): +-*/, AND, OR, NOT, XOR 등
- 레지스터(Register): 액세스 속도가 가장 빠른 기억장치, 개수 제한 있음 (16개정도)
- 제어 유니트: 명령어를 해석하고, 그에 따른 제어신호들을 순차적으로 발생시킴
- CPU 내부 버스(CPU internal bus): 데이터 선(ALU-레지스터), 제어 신호 선(제어 유니트)로 구성
** 외부의 시스템 버스들과는 반드시 버퍼레지스터들 혹은 시스템 버스 인터페이스 회로를 통하여 접속
3. 명령어 실행
명령어 사이클은 두 개의 부 사이클들로 분리되는데
하나는 인출 사이클이고
나머지 하나는 실행 사이클이다
위에서 말했듯이 CPU 내부 구성요소 중에 레지스터라는 것이 있는데
명령어 실행을 위해서 레지스터의 종류도 여러가지가 필요하다
- 프로그램 카운터(PC): 다음에 인출할 명령어의 주소를 가지고 있음
- 누산기(AC): 데이터를 일시적으로 저장함
- 명령어 레지스터(IR): 가장 최근에 인출된 명령어 코드가 저장되어 있음
- 기억장치 주소 레지스터(MAR): PC에 저장된 명령어 주소가 시스템 주소 버스로 출력되기 전에 일시적으로 저장
- 기억장치 버퍼 레지스터(MBR): 기억장치에 쓰여질 혹은 읽혀진 데이터를 일시적으로 저장함
3-1. 인출 사이클의 마이크로 연산
t0: MAR < PC
t1: MBR < M[MAR], PC < PC + 1
t2: IR < MBR
3-2. 실행 사이클
CPU는 실행 사이클 동안 명령어 코드를 해독하고, 그 결과에 맞는 연산들을 수행시킨다
그런데 명령어 코드는 어떻게 구성되어 있을까?
명령어 코드 = 연산 코드(op code) + 오퍼랜드(addr)
여기서 연산 코드는 CPU가 수행할 연산을 지정하고
오퍼랜드는 명령어 실행에 필요한 데이터가 저장된 주소가 쓰여있다
그렇다면 연산 코드에 쓰일 연산의 종류에는 어떤 것이 있을까?
CPU가 수행하는 연산들의 종류
- 데이터 이동
- 데이터 처리
- 데이터 저장
- 프로그램 제어
크게 보자면 이런 것들이 있지만
대표적으로 LOAD, ADD, STA, JUMP 라는 연산들이 있다