* 1장 : 컴퓨터 성능은 세가지 주요 요인(명령어 개수, 클럭사이클 시간, 명령어당 클럭사이클수(CPI)에 영향을 받는다.
* 2장 : 컴파일러와 명령어 집합 구조가 프로그램에 필요한 명령어 개수를 결정한다.
* 4장
- MIPS 명령어 집합을 두 가지 다른 방법으로 구현하여 데이터패스와, 제어유닛을 완성시키려 함
- 이 장은 프로세서를 구현하는데 사용되는 원리와 기법들에 대한 설명을 포함하고 있다. 매우 추상적이고 단순한 개괄을 서술한다.
- 다음 절에서는 데이터패스를 만들고 MIPS와 같은 명령어 집합 구현에 충분한 프로세서의 간단한 버전을 구성한다. (많은 부분을 파이프라인 MIPS구현에 할애함)
1. 기본적인 MIPS 구현
- 핵심적인 MIPS 명령어 집합의 부분집합을 구현할 것인데, 그것은 다음과 같다.
1. 메모리 참조 명령어인 워드 적재(lw)와 워드 저장(sw) |
* 이 부분집합은 정수형 명령어를 포함하지 않으며(ex. 자리이동, 곱하기, 나누기 빠짐), 부동소수점 명령어는 하나도 포함하지 않는다.
* 그렇지만 데이터패스와 제어 유닛을 설계하는데 사용되는 핵심 원리는 설명될 것이다.
- 이 구현을 살펴보면서
1. 명령어 집합 구조가 구현의 여러 가지 측면을 어떻게 결정하는가?
2. 여러 가지 구현 전략이 클럭 속도와 CPI에 어떻게 영향을 미치는가?
에 대해 살펴볼 기회를 갖게 될 것이다.
2. 구현에 대한 개요
- 어떤 명령어든지 처음 두 단계는 다음과 같이 동일하다.
1. 프로그램 카운터(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의 두 번째 입력을 레지스터(산술, 논리 명령어, 분기 명령어의 경우) 받을 것인지, 아니면 명령어의 변위 필드(적재,저장 명령어)에서 받을 것인지를 결정하는데 사용됨.
* 유의사항 - 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다. - 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다. - 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :) |
'문과 코린이의, [컴퓨터 구조] 기록 > 컴퓨터구조 4강' 카테고리의 다른 글
[문과 코린이의 IT기록장] 컴퓨터 구조 - 4.6. 파이프라인 데이터패스 및 제어 (1) | 2021.01.20 |
---|---|
[문과 코린이의 IT기록장] 컴퓨터 구조 - 4.5. 파이프라이닝에 대한 개관 (6) | 2021.01.19 |
[문과 코린이의 IT 기록장] 컴퓨터 구조 - 4.4. 데이터패스의 단순한 구현 (1) | 2021.01.17 |
[문과 코린이의 IT기록장] 컴퓨터 구조 - 4.3. 데이터패스 만들기 (2) | 2021.01.17 |
[문과 코린이의 IT 기록장] 컴퓨터 구조 - 4.2.논리 설계 관례 (0) | 2021.01.17 |