CPU(Central Processing Unit)는 명령어의 해석과 자료 연산, 비교 등 처리를 제어하는 핵심장치이다.
- 여러 입력 장치로부터 자료를 받아서 처리한 후 결과를 출력장치로 보내는 과정을 제어하고 조정
- 프로그램 명령어 실행 (제어장치 / 연산장치 / 레지스터)
모두 '제어'라는 말이 있듯이 컴퓨터의 두뇌 역할을 한다.
컴퓨터에 입력이 들어오면 처리하여 행동을 하게끔 하고 (통제), 명령을 해석하여 작업을 조정하고 제어한다 (명령)
구성
연산장치 (ALU; Arithmetic and Logical Unit)
- 산술연산, 논리연산 수행 (산술논리연산장치라고도 불림)
- 연산에 필요한 데이터를 레지스터에서 가져오고, 연산 결과를 다시 레지스터로 보냄
구성 장치
가산기(Adder): 2진수 덧셈 수행
보수기(Complementer): 뺄셈 수행을 위해 입력된 값을 보수로 변환
누산기(ACCumulator)
데이터 레지스터: 연산한 데이터 저장
프로그램 상태 워드(PSW; Program Status Word): 명령어 실행 중 발생하는 CPU 상태 정보 저장
인덱스 레지스터(Index Register): 유효 주소를 상대적으로 계산할 때
베이스 레지스터(Base Register): 유효 주소를 절대적으로 계산할 때
제어장치 (CU; Control Unit)
- 명령어를 순서대로 실행할 수 있도록 제어하는 장치
- 주기억장치에서 프로그램 명령어를 꺼내 해독하고, 결과에 따라 명령어 실행에 필요한 제어신호를 기억장치, 연산장치, 입출력장치로 보냄
- 이후에 해당 장치들이 보낸 신호를 받아 다음에 수행할 동작을 결정함
구성 장치
프로그램 카운터(PC)
명령 해독기(Instruction Decoder): 수행할 명령어를 해석하여 부호기로 전달하는 회로
부호기(Encoder): 명령 해독기에서 전송된 명령어를 제어 필요한 신호로 변환하는 회로
명령 레지스터(IR)
번지 해독기(Address Decoder): 명령 레지스터로부터 보내온 주소 해석
레지스터 (Register)
- 고속 기억장치
- 명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시 저장
- 범용 레지스터와 특수목적 레지스터로 구분
- CPU 종류에 따라 사용할 수 있는 레지스터 개수와 크기가 다름
- 범용 레지스터: 연산에 필요한 데이터 및 연산 결과를 임시로 저장
- 특수목적 레지스터: 특별한 용도로 사용
특수 목적 레지스터 중 중요한 요소들
MAR(메모리 주소 레지스터): 읽기와 쓰기 연산을 수행할 주기억장치 주소 저장
PC(프로그램 카운터): 다음에 수행할 명령어 주소 저장
IR(명령어 레지스터): 현재 실행 중인 명령어 저장
MBR(메모리 버퍼 레지스터): 주기억장치에서 읽어온 데이터 / 저장할 데이터 임시 저장
AC(누산기): 연산 결과 임시 저장
CPU 동작 과정
- 주기억장치는 입력장치에서 받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어옴
- CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장
- 주기억장치는 처리결과를 보조기억장치에 저장하거나 출력장치로 보냄
- 제어장치는 1~3 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어
명령어 세트
▶ CPU가 실행할 명령어의 집합
▶ 연산코드(Operation Code) + 피연산자(Operand, 처리될 데이터)로 이루어짐
- 연산코드: 연산, 제어, 데이터 전달, 입출력 기능
- 피연산자: 주소, 숫자/문자, 논리 데이터 등 저장
CPU는 프로그램 실행하기 위해 주기억장치에서 명령어를 순차적으로 인출하여 해독하고 실행하는 과정을 반복한다.
CPU가 주기억장치에서 한번에 하나의 명령어를 인출하여 실행하는데 필요한 일련의 활동을 '명령어 사이클'이라고 한다.
명령어 사이클: 인출/실행/간접/인터럽트 사이클
주기억장치의 지정된 주소에서 하나의 명령어를 가져오고, 실행 사이클에서는 명령어를 실행한다.
하나의 명령어 실행이 완료되면 그 다음 명령어에 대한 인출 사이클이 시작된다.
인출 사이클과 실행 사이클 명령어 처리 과정
인출 사이클
PC에 저장된 주소를 MAR(메모리 주소 레지스터)로 전달
⬇
저장된 내용을 토대로 주기억장치의 해당 주소에서 명령어 인출
⬇
인출한 명령어를 MBR(메모리 버퍼 레지스터)에 저장
⬇
다음 명령어를 인출하기 위해 PC(프로그램 카운터) 값 증가시킴
⬇
MBR에 저장된 내용을 명령어 레지스터(IR)에 전달
* PC(프로그램 카운터) 값 증가가 포인트
T0 : MAR ← PC
T1 : MBR ← M[MAR], PC ← PC+1
T2 : IR ← MBR
명령어 실행
T0 : MAR ← IR(Addr)
T1 : MBR ← M[MAR]
T2 : AC ← AC + MBR
인출이 진행되고 명령어만 실행하면 되기 때문에 PC를 증가할 필요가 없다.
IR에 MBR의 값이 이미 저장된 상태를 의미하므로 AC에 MBR을 더해주기만 하면 된다.
* ADD addr 명령어 연산
'CS' 카테고리의 다른 글
[네트워크] IPv4 & IPv6 (1) | 2023.01.08 |
---|---|
도메인 Domain (0) | 2023.01.04 |
[네트워크] TCP/IP 프로토콜 (0) | 2023.01.03 |
[네트워크] 라우터 Router (feat. 스위치) (0) | 2023.01.01 |
동기와 비동기 (0) | 2022.12.30 |