hardware

Layer7 과제 - 하드웨어 2차시(CPU, 동작 과정, ISA, 메모리 계층 구조)

leesu0605 2022. 6. 12. 21:53

목차


1. CPU 구조

2. CPU 동작 과정

3. ISA(Instruction Set Architecture)

4. 메모리 계층 구조


1. CPU 구조


Central Processing Unit의 약자로, 컴퓨터 프로그램의 명령어를 해석하고 연산하며, 그 결과를 출력 및 저장해준다.

CPU 안에는 코어와 캐시 메모리가 존재하는데,
일단 코어란 우리가 알고 있는 연산, 제어 등을 수행하는 장치이다.
한 개의 CPU 칩 안에 한 개의 코어만을 가지는 CPU를 싱글코어라 부르며,
여러 개의 코어를 가지는 CPU를 멀티코어라고 한다.
CPU에 코어가 많을 수록 한 번에 복수 개의 연산을 수행할 수 있다는 뜻이므로 컴퓨터 성능의 가장 핵심적인 부분이다.

이런 코어의 요소에는 제어 장치, 연산 장치, 기억 장치가 있다.

1. 제어 장치 : 메모리에서 명령을 가져와 해독하고 해독한 명령어를 기반으로 ALU(연산 장치)의 동작을 지시하며, 레지스터 사이의 데이터 전송을 감독한다.

- 구성 장치 -

프로그램 카운터(PC) : 다음으로 실행할 명령어의 주소를 기억하는 레지스터
명령 해독기 : 수행해야 할 명령어를 해석해 부호기로 전달하는 회로
부호기(Encoder) : 명령 해독기에서 전달받은 명령어를 신호로 변환해주는 장치
명령 레지스터(IR) : 현재 실행 중인 명령어를 기억하는 레지스터
주소 해독기 : 명령 레지스터가 가지고 있는 주소를 해석하는 회로
주소 레지스터(MAR) : 주소를 기억하는 레지스터
기억 레지스터(MBR) : 주소 레지스터가 가지고 있는 메모리 주소의 내용을 기억하는 레지스터

2. 연산 장치 : 연산에 필요한 자료를 입력받아 산술, 논리, 쉬프트 연산 등 실제 연산을 수행하는 장치이다.

- 구성 장치 -

가산기 (Adder) : 2진수 덧셈을 수행하는 회로
보수기 (Complementer) : 뺄셈을 하기 위해 입력된 값에 보수를 취하는 회로
누산기 (Accumulator) : 중간 연산 결과를 일시적으로 기억하는 레지스터
데이터 레지스터 (Data Register) : 연산을 완료한 데이터를 기억하는 레지스터
프로그램 상태 워드 : 명령어 실행 중 CPU의 상태를 보관하며, 명령 실행 순서를 제어하고 실행 중인 프로그램과 관련 있는 시스템의 상태를 저장한다.
인덱스 레지스터 (Index Register) : 세그먼트 레지스터 등을 이용한 주소의 간접 지정에 사용되는 레지스터
베이스 레지스터 (Base Register) : 절대적인 주소를 계산할 때 사용되는 레지스터

* 레지스터 : CPU와의 물리 주소가 가장 가까워 메모리 중에서 가장 빠른 속도를 보유하며, CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 기억장치이다. 레지스터의 종류로는 데이터 레지스터, 주소 레지스터, 상태 레지스터가 있다.


2. CPU 동작 과정


CPU의 동작을 이해하기 쉽게 그림으로 표현하면 다음과 같은데,

제어 장치의 동작을 더 자세하게 설명하면,
1. 명령어 인출 : 주기억장치로부터 명령어를 받아온다.
2. 명령어 해독 : 주기억장치로부터 받아온 명령어를 해독한 후, 수행을 지시한다.
3. 데이터 인출 : 데이터가 필요할 때 기억 장치와 입출력 장치에서 그 데이터를 읽어온다.
4. 데이터 처리 : 데이터에 대한 산술 · 논리 연산 같은 직접적인 연산을 수행한다.
5. 데이터 쓰기 : 수행한 연산의 결과를 특정 메모리에 저장한다.
이렇게 다섯 가지로 나뉜다.

제어 장치의 동작 과정은 이렇게 된다.
1. CPU는 앞에서 설명한 레지스터, 프로그램 카운터로부터 명령어를 받고 명령어 레지스터로 옮긴다.
2. 명령어를 받았으므로 프로그램 카운터를 1 증가(명령어의 길이에 따라 다르다.)시킨다.
3. 그 후, 명령 해독기에서 수행할 명령을 해석한 후 부호기로 전달한다.
4. 부호기는 명령 해독기에서 전송된 명령어를 신호로 변환한 후, MAR, MBR 등에게 피연산자 등을 가져오도록 지시한다.

제어 장치에서 명령을 해석했다면, 연산 장치에서는 이런 명령어들을 실제적으로 연산해준다.
ex) 덧셈 과정
1. 더해질 데이터가 들어 있는 기억 장치의 주소가 MAR에 실린다.
2. MAR에 있는 주소에 해당하는 데이터가 MBR에 실린다.
3. 누산기에 있는 데이터와 MBR에 있는 데이터가 더해지고, 그 결과가 지속적으로 누산기에 저장된다.


ISA(Instruction Set Architecture)


명령어 집합 구조란, 실행할 수 있는 기계어 명령의 집합을 말하며, CPU를 설계하는 방식이다.
마이크로프로세서마다 기계어 코드의 길이와 숫자 코드가 다르며, 이 코드와 일대일로 대응하는 언어가 어셈블리어이다.

ISA는 risc와 cisc로 나뉘는데, 한 번 분석해보자.


risc


· 간단하고 적은 종류의 명령어를 사용해 빠른 실행이 가능하고, 하드웨어를 줄일 수 있다.
· 고정 길이 명령어 형식(32비트 이내)이다.
· 논리 회로를 이용한 하드웨어적 제어 방식이며, 하드웨어적이라는 특성 때문에 호환성이 낮다.
· 명령어의 길이가 미리 정해져 있어 해석 속도가 매우 빠르다.


cisc


· 복잡하고 많은 종류의 명령어를 사용한다.
· 가변 길이 명령어 형식이기 때문에 명령어 해석 속도가 느리다.
· 설계가 어렵다
· 호환성이 좋다.
· Intel 사의 CPU에 주로 사용되던 설계 방식이다.



메모리 계층 구조


· 보조 기억 장치 -> 주기억 장치 -> 캐시 메모리 -> 레지스터 순으로 올라갈수록 속도가 빨라지는데, 이는 CPU와의 물리적 거리가 가까워지기 때문이다.
· 레지스터 -> 캐시 메모리 -> 주기억장치 -> 보조기억장치 순으로 내려갈수록 용량이 커지는데, 이는 CPU와의 물리적 거리가 멀어질수록 가격이 내려가 더 큰 용량을 사용해도 부담이 되지 않기 때문이다.

보통 코드는 보조 기억 장치에 존재하다 주기억 장치에 적재되는데, 이 과정도 메모리 계층 구조에서 알 수 있듯이 속도가 훨씬 빨라지기 때문이다.