- CPU는 기억장치에 저장됭어 있는 명령어들을 인출하여 실행함으로써 실제적인 작업을 수행한다.
- CPU 가 한 개의 명령어를 실행하는데 필요한 전체 과정 : 명령어 사이클(Instruction Cycle)
- 명령어 사이클은 인출단계와 명령어 실행 단계로 나누어진다.
- CPU가 기억장치로부터 명령어를 읽어오는 명령어 인출(Instruction fetch)
- 인출된 명령어를 실행하는 명령어 실행(Instruction execution)
이 두 단계를 각각 부사이클(subcycle)로 구분하여 명령어 사이클의 흐름도를 보면 그 부사이클은 각각 인출 사이클과 실행 사이클이라 부른다.
명령어 사이클은 CPU가 프로그램 실행을 시작한 순간부터 전원을 끄거나 회복 불가능한 오류가 발생하여 중단될 때까지 반복하여 수행된다.
명령어를 실행하기 위해 기본적으로 필요한 CPU 내부 레지스터
- 프로그램 카운터(Program Counter : PC)
- 다음에 인출될 명령어의 주소를 가지고 있는 레지스터이다.
- 각 명령어가 인출된 후에는 그 내용이 자동적으로 1(혹은 명령어 길이에 해당하는 주소 단위의 수만큼)이 증가되며, 분기(Branch) 명령어가 실행되는 경우 그 목적지 주소로 갱신된다.
- 누산기(Accumulator : AC)
- 데이터를 일시적으로 저장하는 레지스터
- 레지스터의 비트 수는 CPU가 한 번에 연산 처리할 수 있는 데이터 비트의 수, 즉 단어의 길이와 같다.
- 명령어 레지스터(Instruction Register : IR)
- 가장 최근에 인출된 명령어가 저장되어 있는 레지스터
- 기억장치 주소 레지스터(Memory Address Register : MAR)
- 프로그램 카운터(PC)에 저장된 명령어 주소가 시스템 주소 버스로 출력되기 전에 일시적으로 저장되는 주소 레지스터
- 레지스터의 출력 선들이 주소버스 선들과 직접 접속된다.
- 기억장치 버퍼 레지스터(Memoryy Buffer Register : MBR)
- 기억장치에 저장될 데이터 혹은 기억장치로부터 읽현진 데이터가 일시적으로 저장되는 버퍼 레지스터.
- 레지스터의 입력 및 출력 선들은 데이터 버스 선들과 직접 접속된다.
- 기억장치로부터 인출된 명령어는 MBR을 경유하여 IR에 저장되며, 실행 사이클에서 제어 유니트로 보내져 해독된다.
- MAR은 CPU 내부 주소 버스와 시스템 주소 버스 사이에서 버퍼(일시적 저장 장소) 역할을 하는 레지스터이며, MBR은 데이터에 대하여 같은 역할을 하는 버퍼 레지스터이다.
- 기억장치로부터 인출된 데이터는 MBR을 통하여 AC로 적재된다.
- 만약 명령어가 그 데이터에 대하여 산술 혹은 논리 연산을 수행하는 것이라며 AC의 내용이 ALU로 보내진다. 그리고 ALU의 결과는 다시 AC에 저장된다.
인출 사이클
- CPU는 각 명령어 사이클의 시작 단계에서 프로그램 카운터(PC)가 가리키는 기억장치의 위치로부터 명령어를 인출해 온다. 그런 다음 CPU는 PC의 내용을 1씩 증가시킴으로써 명령어들을 기억장치에 저장되어 있는 순서대로 읽어올 수 있도록 해준다.
- ex) PC의 내용이 "215"라고 가정 -> 명령어 사이클이 시작되면 CPU는 기억장치의 215번지에 저장되어 있는 명령어를 인출해오며, PC의 내용을 '216'으로 증가시킨다. 그러면 다음 명령어 사이클에서는 216번지의 명령어가 인출된다. 이와 같으 은 과정이 반복되어 PC의 내용ㅇ튼 217, 218, 219, ... 로 계속 증가히게 되며, CPU는 그 위치들로부터 차례대로 명령어들을 인출하게 된다.
기억장치의 지정된 위치로부터 명령어를 읽어오는 과정 : 인출 사이클
인출 사이클에서 각 단계별로 수행되는 동작 : 마이크로-연산(Micro-Operation) -> CPU 클록의 각 주기동안 수행되는 기본적인 동작
인출 사이클의 각 단계별로 수행되는 마이크로 연산 표현
- t0 : MAR <- PC
- t1 : MBR <- M[MAR], PC <- PC + 1
- t2 : IR <- MBR
t0, t1 및 t2 는 CPU 클록(clock)의 주기
첫번째 주기 : 현재의 PC 내용을 CPU 내부 버스를 통하여 MAR로 전송
두번째 주기 : 그 주소가 지정하는 기억장치 위치로부터 읽혀진 명령어가 데이터 버스를 통 하여 MBR로 적재되며, PC의 내용에 1을 더한다
세번째 주기 : MBR에 있는 명령어 코드가 명령어 레지스터인 IR로 이동
ex) CPU 클록 주파수 = 1GHz (클럭 주기 = 1ns) → 인출 사이클 : 1ns x 3 = 3ns 소요
실행 사이클
CPU가 명령어를 해독하고 그 결과에 따라 필요한 연산들을 수행하는 과정
- 데이터 이동 : CPU와 기억장치 간 혹은 CPU 와 I/O 장치 간에 데이터를 이동한다.
- 데이터 처리 : 데이터에 대하여 산술 혹은 논리 연산을 수행한다.
- 데이터 저장 : 연산결과 데이터 혹은 입력장치로부터 읽어들인 데이터를 기억장치에 저장한다.
- 프로그램 제어 프로그램의 실행 순서를 결정한다.
실행 사이클에서 수행되는 마이크로-연산들은 명령어의 연 산 코드(op code)에 따라 결정된다.
기본적인 명령어 형식의 구성
연산 코드(operation code)
- CPU가 수행할 연산을 지정
오퍼 랜드(operand)
- 명령어 실행에 필요한 데이터가 저장된 주소(addr)
Load addr 명령어
기억장치에 저장되어 있는 데이터를 CPU 내부 레지스터인 AC로 적재(load)(이동)하는 명령어
t0 : MAR ← IR(addr)
t1 : MBR ← M[MAR]
t2 : AC ← MBR
- 첫번째 주기 : 명령어 레지스터 IR에 있는 명령어의 주소 부분을 MAR로 전송
- 두번째 주기 : 그 주소가 지정한 기억장소로부터 데이터를 인출하여 MBR로 전송
- 세번째 주기 : 그 데이터를 AC에 적재
STA addr 명령어
AC 레지스터의 내용을 기억장치에 저장하는 명령어
t0 : MAR ← IR(addr)
t1 : MBR ← AC
t2 : M[MAR] ← MBR
- 첫번째 주기 : 데이터를 저장할 기억장치의 주소를 MAR로 전송
- 두번째 주기 : 저장할 데이터를 버퍼 레지스터인 MBR로 이동
- 세번째 주기 : MBR의 내용을 MAR이 지정하는 기억장소에 저장
ADD addr 명령어
기억장치에 저장된 데이터를 AC의 내용과 더하고, 그 결과는 다시 AC에 저장하는 명령어
t0 : MAR ← IR(addr)
t1 : MBR ← M[MAR]
t2 : AC ← AC + MBR
- 첫번째 주기 : 데이터를 저장할 기억장치의 주소를 MAR로 전송
두번째 주기 : 저장할 데이터를 버퍼 레지스터인 MBR로 이동
세번째 주기 : 그 데이터와 AC의 내용을 더하고 결과값을 다시 AC에 저장
JUMP addr 명령어
오퍼랜드(addr)가 가리키는 위치의 명령어로 실행 순서를 변경하는 분기(branch) 명령어
t0 : PC ← IR(addr)
- 명령어의 오퍼랜드(분기할 목적지 주소)를 PC에 저장
- 다음 명령어 인출 사이클에서 그 주소의 명령어가 인출되므로, 분기가 발생한다.
어셈블리 프로그램의 실행 과정
연산 코드에 임의의 정수 배정
LOAD : 1
STA : 2
ADD : 5
JUMP : 8
1단계
- PC가 첫 번째 명령어의 주소인 100을 가지고 있다.
- 이 주소의 내용인 첫 번째 명령어 코드가 인출되어 명령어 레지스터 IR에 저장된다.
- MAR, MBR도 사용된다.
2단계
- 100번지의 첫 번째 명령어 코드가 인출되어 IR에 저장
250 번지의 데이터를 AC로 이동 - PC = PC + 1 = 101
3단계
- 두 번째 명령어가 101번지로부터 인출되어 IR에 저장
4단계
- AC의 내용과 251 번지의 내용이 ALU로 보내져서 더해지고, 결과를 AC에 저장
- PC의 내용은 102로 증가
5단계
- 세 번째 명령어가 102 번지로부터 인출되어 IR에 저장
6단계
- AC의 내용을 251 번지에 저장
- PC의 내용은 103으로 증가
7단계
- 네 번째 명령어가 103 번지로부터 인출되어 IR에 저장된다.
8단계
- 분기될 목적지 주소, 즉 IR의 하위 부분(170)이 PC로 적재 (다음 명령어 인출 사이클에서는 170 번지의 명령어 인출)
Reference
컴퓨터 구조론 개정 5판
https://liltdevs.tistory.com/125
CPU의 구조와 기능
CPU가 수행하는 동작들 명령어 인출 Instruction fetch 명령어 해독 Instruction decode 위 두 항목은 무조건 수행 데이터 인출 Data fetch 데이터 처리 Data process (산술적 연산) 데이터 저장 Data store 위 세 항목
liltdevs.tistory.com
https://yz-zone.tistory.com/66
[컴퓨터구조] 2.2 명령어 실행
▣ 명령어 사이클(instruction cycle) ▪ CPU가 한 개의 명령어를 실행하는 데 필요한 전체 과정 ▪ CPU가 프로그램 실행을 시작한 순간부터 전원을 끄거나 회복 불 가능한 오류가 발생하여 중단될 때까
yz-zone.tistory.com
'CS > 컴퓨터 구조론' 카테고리의 다른 글
컴퓨터 구조론 2장 [CPU의 구조와 기능 - CPU의 기본 구조] (0) | 2025.03.12 |
---|---|
컴퓨터 구조론 1장 [컴퓨터 구조의 발전 과정] (0) | 2025.03.07 |
컴퓨터 구조론 1장 [시스템의 구성] (0) | 2025.03.06 |
컴퓨터 구조론 1장 [정보의 표현과 저장] (1) | 2025.03.06 |
컴퓨터 구조론 1장 [컴퓨터의 기본 구조] (0) | 2025.03.06 |