꿈꾸는 개발자의 블로그
[CS] 컴퓨터 구조 (2) : CPU의 동작 과정 본문
컴퓨터 HW의 기본 구성요소 중 하나인 중앙처리장치(CPU)에 대하여 좀 더 자세히 알아보자!
CPU의 동작 과정
- 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램 읽어온다.
- CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고, 결과를 다시 주기억장치에 저장한다.
- 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보낸다.
- 제어장치는 1~3 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어한다.
이처럼 CPU는 프로그램 실행하기 위해 주기억장치에서 명령어를 순차적으로 인출하여 해독하고 실행하는 과정을 반복한다. CPU가 주기억장치에서 한번에 하나의 명령어를 인출하여 실행하는데 필요한 일련의 활동을 명령어 사이클이라고 말하며, 이는 인출/실행/간접/인터럽트 사이클로 나누어진다.
명령어 세트
CPU가 실행할 명령어의 집합 : 연산 코드(Operation Code) + 피연산자(Operand)로 이루어진다.
- 연산 코드 : 실행할 연산, 연산, 제어, 데이터 전달, 입출력 기능을 가짐
- 피연산자 : 필요한 데이터 또는 저장 위치, 주소, 숫자/문자, 논리 데이터 등을 저장
CPU에서의 명령어 사이클
한 개의 명령어를 실행하는데 필요한 전체 처리 과정이며 2개의 부사이클로 분리한다.
- 인출 사이클 : CPU가 기억장치로부터 명령어를 읽어오는 단계
- 실행 사이클 : 명령어를 해독하고 실행하는 단계 (인출 사이클때보다 작업량이 더 많기 때문에, 오늘날 컴퓨터는 실행 사이클을 다수의 단계로 분할)
설명 | 예시 | |
전송 연산 | CPU내 레지스터와 메모리 사이에 데이터를 교환 | 적재(Load), 저장(Store) |
처리 연산 | 산술논리장치를 사용하여 데이터를 조작 | 산술연산, 논리연산. 데이터형식 변환 연산 등 |
제어 연산 | 프로그램의 실행 순서를 제어 | 순차, 무조건 분기, 조건 분기, 프로시져 호출/복귀, 인터럽트 |
입출력 연산 | CPU 내 레지스터와 I/O장치 간에 데이터를 이동 |
인출 사이클과 실행 사이클에 의한 명령어 처리 과정
- PC에 저장된 주소를 MAR로 전달한다.
- 저장된 내용을 토대로 주기억장치의 해당 주소에서 명령어 인출한다.
- 인출한 명령어를 MBR에 저장한다.
- 다음 명령어를 인출하기 위해 PC(Program Counter) 값 증가시킨다. (인출 사이클에서 가장 중요한 부분)
- 메모리 버퍼 레지스터(MBR)에 저장된 내용을 명령어 레지스터(IR)에 전달한다.
인출하기까지의 과정
T0 : MAR ← PC
T1 : MBR ← M[MAR], PC ← PC+1
T2 : IR ← MBR
인출한 이후, 명령어를 실행하는 과정
T0 : MAR ← IR(Addr) // ADD addr 명령어 연산
T1 : MBR ← M[MAR]
T2 : AC ← AC + MBR
이미 인출이 진행되고 명령어만 실행하면 되기 때문에 PC를 증가할 필요가 없다.
IR에 MBR의 값이 이미 저장된 상태를 의미하고, 따라서 AC에 MBR을 더해주기만 하면 된다.
728x90
728x90
'Interview > Computer Science' 카테고리의 다른 글
[CS] 자료 구조 (1) : 리스트, 스택, 큐, 트리 (0) | 2022.07.12 |
---|---|
[CS] 컴퓨터 구조 (5) : ARM 프로세서 (0) | 2022.07.11 |
[CS] 컴퓨터 구조 (4) : 고정 소수점 & 부동 소수점 (0) | 2022.07.10 |
[CS] 컴퓨터 구조 (3) : 캐시 메모리 (Cache Memory) (0) | 2022.07.07 |
[CS] 컴퓨터 구조 (1) : 기본 구성요소 (0) | 2022.06.21 |
Comments