명령어 사이클
- CPU는 명령어 사이클을 반복해 프로그램을 실행
- Fetch와 Execution 단계로 이루어져 있음
1) 인출 단계(Fetch stage)
- 메모리에 저장된 명령어를 읽어들임
- 현재 실행할 명령어를 읽어 명령어 레지스터(IR, Instruction Register)에 저장
- 다음에 실행할 명령어를 읽어 프로그램 카운터(PC, Program Counter)에 저장
2) 실행 단계(Execution stage)
- 명령어 레지스터에 저장된 명령어를 실행
- 제어장치는 명령어를 해독하고 제어신호를 생성해 각 구성요소에 전달
- 제어신호에 따라 ALU는 해당하는 연산을 수행
- 각 신호와 데이터는 내부버스를 통해 전달
- 연산에 필요한 데이터와 명령어는 레지스터에 저장
명령어의 종류
1) 데이터 전달(Data transfer)
- 컴퓨터 구성요소 간 데이터 전달
- Opcode, Source Operand, Destination Operand로 구성
- Opcode : Load, Store, Move, Input, Output 등
2) 데이터 처리(Data Processing)
- 레지스터 또는 메모리에 저장되어있는 데이터에 대한 산술/논리 연산
- Opcode, Source Operand, Destination Operand로 구성
- 명령어의 종류에 따라 Source Operand가 2개 일 수 도 있음
- Opcode : Add, Multi, AND, OR, Not 등
3) 프로그램 제어(Program Flow Control)
- 명령어의 실행 순서 제어
- 프로그램 카운터의 값 변경
- Opcode, Branch Target Address로 구성
- 분기의 종류에 따라 Unconditional Branch, Conditional Branch, Subroutine, Return이 있음
(1) 무조건 분기(Unconditional Branch)
- 조건에 상관없이 프로그램 카운터 값을 분기 목적 주소로 변경하고 해당 명령어를 실행
(2) 조건 분기(Conditional Branch)
- 조건에 따라 프로그램 카운터 값을 분기 목적 주소로 변경하고 해당 명령어를 실행
- 조건에 만족하지 않을 경우 기존에 있던 프로그램 카운터가 가르치는 다음 명령어 실행
(3) 서브루틴/함수호출(Subroutine/Function Call)
- 서브루틴 호출 시, Return 레지스터에 현재 주소를 저장하고 서브루틴 시작 주소를 프로그램 카운터에 저장
(4) 리턴(Return)
- 서브루틴의 실행이 완료되었을 때, Return 레지스터에 저장된 되돌갈 주소값으로 프로그램카운터 값을 변경하고 다음 명령어를 실행
- Opcode로만 구성
명령어의 구성요소
1) 동작코드(Opcode, Operation Code)
- CPU가 수행할 동작
- Add, Multi, Load 등
2) 피연산자(Operand)
- CPU가 명령어를 수행할 대상
- Operand의 대상은 레지스터, 메인 메모리, I/O Unit이 될 수 있음
- Source operand와 Destination operand가 있음
- Source Operand는 동작코드가 처리할 대상
- Destination Operand는 처리 결과를 저장할 장소
3) 분기 목적지 주소(Branch Target Address)
- 분기 명령을 수행할 때, 다음 처리할 명령어의 주소
'CS > Computer Architecture' 카테고리의 다른 글
[컴퓨터구조] 레지스터(Register) (0) | 2020.07.14 |
---|---|
[컴퓨터구조] 시스템 버스(System bus) (1) | 2020.07.14 |
[컴퓨터구조] 컴퓨터의 구성 요소 (2) | 2020.07.13 |
[컴퓨터구조] 어셈블리어와 고급언어 (0) | 2020.07.12 |
[컴퓨터구조] 폰노이만 구조와 하버드 구조 (0) | 2020.07.12 |
댓글