본문 바로가기

문과 코린이의, [컴퓨터 구조] 기록/컴퓨터구조 4강

[문과 코린이의 IT기록장] 컴퓨터 구조 - 4.1. 프로세서(CPU)

반응형

 

* 1장 : 컴퓨터 성능은 세가지 주요 요인(명령어 개수, 클럭사이클 시간, 명령어당 클럭사이클수(CPI)에 영향을 받는다.

* 2장 : 컴파일러와 명령어 집합 구조가 프로그램에 필요한 명령어 개수를 결정한다.

 

* 4장

- MIPS 명령어 집합을 두 가지 다른 방법으로 구현하여 데이터패스와, 제어유닛을 완성시키려 함

- 이 장은 프로세서를 구현하는데 사용되는 원리와 기법들에 대한 설명을 포함하고 있다. 매우 추상적이고 단순한 개괄을 서술한다.

- 다음 절에서는 데이터패스를 만들고 MIPS와 같은 명령어 집합 구현에 충분한 프로세서의 간단한 버전을 구성한다. (많은 부분을 파이프라인 MIPS구현에 할애함)

 


 

1. 기본적인 MIPS 구현

- 핵심적인 MIPS 명령어 집합부분집합을 구현할 것인데, 그것은 다음과 같다.

1. 메모리 참조 명령어인 워드 적재(lw)와 워드 저장(sw)
2. 산술/논리 명령어인 add, sub, AND, OR, slt
3. 같을 시 분기 명령어인 beq와 점프 명령어 j

* 이 부분집합은 정수형 명령어를 포함하지 않으며(ex. 자리이동, 곱하기, 나누기 빠짐), 부동소수점 명령어는 하나도 포함하지 않는다.

* 그렇지만 데이터패스와 제어 유닛을 설계하는데 사용되는 핵심 원리는 설명될 것이다.

 

- 이 구현을 살펴보면서

1. 명령어 집합 구조구현의 여러 가지 측면을 어떻게 결정하는가?

2. 여러 가지 구현 전략이 클럭 속도와 CPI에 어떻게 영향을 미치는가?

 에 대해 살펴볼 기회를 갖게 될 것이다.

 


 

 

2. 구현에 대한 개요

- 어떤 명령어든지 처음 두 단계는 다음과 같이 동일하다.

1. 프로그램 카운터(PC)프로그램이 저장되어 있는 메모리로 보내어, 메모리로부터 명령어를 가져온다.
 * PC가 있어야 다음 명령어주소를 파악할 수 있기 때문

2. 읽을 레지스터를 선택하는 명령어 필드를 사용하여 하나 또는 두 개의 레지스터를 읽는다. 워드 적재 명령어레지스터 하나만 읽으면 되지만, 대부분의 다른 명령어레지스터 두 개를 읽는다.

 

 


 

[ MIPS구현을 상위 수준에서 본 그림 ]

- MIPS 부분집합 구현의 추상적 개관.

- 주요 기능 유닛과 그들 사이의 연결을 보여 주고 있다.

 

 

- MIPS 명령어 집합의 단순함과 규칙적인 특성이, 많은 종류의 명령어 실행을 비슷하게 만들어 줌으로서 구현을 단순화한다.

ex)

점프명령어를 제외한, 모든 명령어의 종류가 레지스터를 읽은 후에는 모두 ALU를 사용한다.

 * ALU 사용 이유 : 산술명령어(연산 수행을 위해), 분기 명령어(비교하기 위해)

ALU를 사용한 이후에는, 명령어 실행을 끝내는데 필요한 행동들이, 명령어 종류에 따라 서로 다르다.

1. 저장명령어 : 데이터를 기록하기 위해 접근
2. 메모리 참조 명령어 : 메모리에 접근
3. 적재 명령어 : 데이터를 읽기 위해 접근 후, 레지스터에 쓰기.
4. 산술,논리 명령어 : ALU에서 온 레지스터에 씀.
5. 분기 명령어 : 비교 결과에 따라 다음 명령어의 주소를 바꾸거나, PC+4

 


[ 데이터패스에 주요 기능 유닛을 위한 제어선과 멀티플렉서를 추가한 그림 ]

- MIPS 부분집합의 기본적 구현

- 필요한 멀티플렉서와 제어선을 포함하고 있다.

 

* 멀티플랙서(MUX) 

- 제어선의 값에 따라 여러개 중에서 하나를 선택한다.

- 제어선은 주로 실행중인 명령어에서 나오는 정보에 따라 결정된다.

 

 

단일 데이터패스에 주요 기능 유닛을 추가한 제어선과 멀티플랙서를 추가한 그림

* (그림 핑크 숫자) MUX 설명 보조설명

1. 이 멀티플랙서는 어떤 값(PC+4 혹은 분기 목적지 주소)이, 새 PC값이 될지를 결정함.

2. 멀티플랙서 자체는 ALU의 Zero출력과, 명령어가 분기라는 것을 나타내는 제어선을, AND게이트에 의해 제어된다.

3. ALU출력(산술, 논리 명령어)데이터 메모리 출력(적재 명령어) 중에 어느 것을 레지스터 파일에 쓸 것인가를 결정하는 것으로, 그 출력이 레지스터 파일로 연결된다.

4. ALU의 두 번째 입력을 레지스터(산술, 논리 명령어, 분기 명령어의 경우) 받을 것인지, 아니면 명령어의 변위 필드(적재,저장 명령어)에서 받을 것인지를 결정하는데 사용됨.


 

* 유의사항
- 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다.
- 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다.
- 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :)

 

반응형