-
(3) 중앙처리장치 작동 원리CS 지식/○ CA(Computer Architecture) 2021. 6. 8. 19:30
1. 중앙처리장치란?
aka) CPU
컴퓨터 연산에서 가장 핵심적인 역할을 수행
> 다음의 구성으로 이루어짐
- 연산잔치
- 제어장치
- 레지스터 - 캐시 메모리랑은 다름
설명 링크 : link
2. 구성의 세부설명
2-1) 연산장치
산술연산과 논리연산 수행 (= 산술 논리연산장치 라고도 불림)
연산에 필요한 데이터를 레지스터에서 가져오고, 연산결과를 다시 레지스터로 보냄
(레지스터 보다 윗단, 실제 연산이 일어나는 곳)
레지스터 : 연산 in/out put의 창구같은 개념
2-2) 제어장치
명령어를 순서대로 실행할 수 있도록 하는 제어장치
주기억장치(RAM, ROM)에서 프로그램 명령어를 꺼내오고 해독
→ 결과에 따라 명령어 실행에 필요한 제어 신호를 기억장치, 연산장치, 입출력장치로 보냄
2-3) 레지스터
고속 기억장치
명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장
용도에 따라 범용 / 특수목적 레지스터로 구분, CPU의 종류에 따라 사용가능한 레지스터 개수 및 크기가 다름
(한 중앙처리장치에 레지스터 구성은 각각 다를 수 있음, 범용 / 특수 등)
- 범용 레지스터 : 연산에 필요한 데이터나 연산 결과를 임시로 저장
- 특수목적 레지스터 : 특별한 용도로 사용하는 레지스터
3. 특수 목적 레지스터 특징
- MAR(메모리 주소 레지스터) : 읽기 쓰기 연산을 수행할 주기억장치 주소 저장
- PC(프로그램 카운터) : 다음에 수행할 명령어 주소 저장
- IR(명령어 레지스터) : 현재 실행중인 명령어 저장
- MBR(메모리 버퍼 레지스터) : 주기억장치에서 읽어온 데이터 OR 저장할 데이터 임시 저장
→ 연산장치에 주기 직전 - AC(누산기) : 연산 결과 임시 저장
4. 중앙처리장치 CPU 동작 방식
4-1) 동작 과정
- 주기억장치는 입력장치에서 입력받은 데이터 OR 보조기억장치에 저장된 프로그램을 읽어옴
- CPU는 캐시 / 레지스터를 거쳐 주기억장치에 저장된 프로그램 명령어 / 입력 / 데이터를 읽어와 처리하고
다시 주기억장치에 저장(중간 결과물 등은 캐시 / 레지스터 사용) - 주기억장치는 처리결과를 보조기억장치에 저장하거나 출력장치로 보냄
- 제어장치 (1)~(3) 과정에서 명령어 순서대로 실행되도록 각 장치를 제어, 주기억장치에서 가져온 명령어 해독
4-2) 명령어 세트
> CPU가 실행할 명령어의 집합
연산코드(Operation Code) + 피연산자(Operand)로 이루어짐
- 연산코드 : 실행할 연산
- 피연산자 : 필요한 데이터 or 저장위치4-3) 명령어 사이클
1) 정의
> 인출 / 실행 / 간접 / 인터럽트 로 구성
[CPU가 주기억 장치에서 하나의 명령어 인출 → 실행] 까지 수행하는 데 필요한 일련의 활동
2) 과정
a) 인출 사이클 / 실행 사이클에 의한 명령어 처리과정
※ PC(프로그램 카운터) 값의 증가가 중요
- PC에 저장된 주소를 MAR(메모리 주소 레지스터)로 전달
( → 중앙처리장치 - 주기억장치 사이 레지스터 의미하는 듯 ) - 저장된 내용을 토대로 주기억장치 주소에서 명령어 인출
- 인출 명령어 MBR에 저장
- 다음 명령어 인출을 위해 PC 값 증가
- MBR에 저장된 내용을 명령어 레지스터(IR)에 전달
( 레지스터는 CPU 산술논리장치 입구같은 곳 )
T0 : MAR ← PC T1 : MBR ← M[MAR], PC ← PC+1 T2 : IR ← MBR
b) 인출 이후 명령어 실행
※ (a) 과정의 5번까지 이루어진 상태 → 고로 PC 증가의 필요가 없음!
T0 : MAR ← IR(Addr) T1 : MBR ← M[MAR] T2 : AC ← AC + MBR
3) 추가 자료
링크 : link
더보기- 한 개의 클럭 펄스 동안 실행되는 기본 동작이다.
- 한 개의 마이크로 연산 수행시간을 마이크로 사이클 타임이라 부르며,
CPU 속도를 나타내는 척도로 사용된다.
- 하나의 명령어를 수행하기 위해 여러 개의 마이크로 연산이 수행된다.
☞ 하나의 명령어는 항상 하나의 마이크로 연산이 동작되어 실행된다. (X)
- Instruction을 수행하기 위해 CPU 내의 레지스터와
플래그가 의미 있는 상태 변환을 하도록 하는 동작
- 마이크로 연산에는 전송, 산술, 논리, 시프트가 있다.
ex)
명령어를 주기억장치에서 중앙처리장치의 명령레지스터로 가져와
해독하는 것을 (인출) 단계라 하고,
이 단계는 마이크로 연산 (MAR←PC)로 시작한다.
Fetch Cycle
- Fetch (인출) 단계에서 명령어를 주기억장치에서
중앙처리장치의 명령 레지스터로 가져와 해독한다.
MAR ← PC // 실행할 명령어의 번지를 MAR로 전달한다.
MBR ← M(MAR) // MAR에 위치한 메모리 내용을 MBR로 전달한다.
PC ← PC + 1 // 다음에 실행할 명령어를 위해서 PC를 1 증가시킨다.
IR ← MBR // 메모리 내용을 IR로 전달 한다.
F ← 1 or R ← 1 // F=1이면 실행 사이클로, R=1이면 간접 사이클로 진행한다.
LDA (Load AC)
- 메모리 내용을 누산기에 적재하는 명령
MAR ← MBR[ADDR] // 실해주소를 MAR로 전송한다.
MBR ← M[MAR], AC ← 0 // 피 연산자를 읽고, 누산기를 클리어 한다.
AC ← AC + MBR // 누산기와 덧셈 연산을 한다.
F ← 0 // Fetch 사이클로 넘어간다.
ISZ (Increment and Skip if Zero)
- 메모리의 값을 읽고, 그 값을 1 증가시킨 후
음수에서 시작한 그 값이 0이면 현재 명령을 건너뛰고
다음 명령으로 이동한다.
MBR ← M[MAR]
MBR ← MBR + 1
M[MAR] ← MBR, if (MBR = 0) then (PC ← PC + 1)
참조
반응형'CS 지식 > ○ CA(Computer Architecture)' 카테고리의 다른 글
(5) 패리티 비트 & 해밍 코드 (0) 2021.06.09 (4) 고정 소수점 & 부동 소수점 (0) 2021.06.09 (2) 캐시 메모리 (0) 2021.06.07 (1) 컴퓨터의 구성 (1) 2021.06.02