4.6 파이프라인 데이터 패스 및 제어
1. IF(Instruction Fetch) : 명령어 인출
2. ID(Instruction Decode) : 명령어 해독 및 레지스터 파일 읽기
3. EX(Execute) : 실행 또는 주소 계산
4. MEM(Memory Access) : 데이터 메모리 접근
5. WB(Write Back) : 쓰기
명령어와 데이터는 실행되면서 5단계를 왼쪽에서 오른쪽으로 움직여 간다. 하지만 2개의 예외가 존재한다.
쓰기단계 : 이 단계에서는 결과를 데이터 패스의중앙에 있는 레지스터 파일에다 쓴다
PC의 다음값 선정 : 증가된 PC 값과 MEM 단계의 분기 주소중 하나를 고른다.
파이프라인을 사용한다면 각 단계가 진행될때마다 PC의 값은 계속 변할 것이다. 따라서 단계 사이마다 자신의 명령어를 저장할 레지스터가 필요하다.
파란색의 파이프라인 레지스터는 각 파이프라인 단계를 분리한다. 예를 들면 IF/ID 레지스터는 명령어 인출 단계와 명령어 해독 단계를 분리한다. 레지스터는 통과하는 선들에 해당하는 모든 데이터를 저장할 수 있을 만큼 충분히 넓어야 한다. 예를 들면 IF/ID 레지스터는 메모리에서 가져온 64bit 명령어와 증가된 64bit PC 주소를 간직해야 하기 때문에 128bit가 되어야 한다.
LDUR 명령어
다음으로 LDUR 명령어가 파이프라인 데이터패스 단계를 거치며 어떻게 동작하는지 알아 보겠다.
레지스터 파일이나 메모리가 읽혀질 때에는 오른쪽 반을 강조하고, 쓰기가 행해질 때에는 왼쪽 반을 강조한다.
1. Instruction Fetch : PC에 있는 주소를 사용하여 메모리로부터 명령어를 읽어 IF/ID 레지스터에 저장된다. PC 주소는 4만큼 증가되어 PC에 다시 저장됨으로 다음 클럭 사이클에 사용될 수 있다. PC 주소는 CBZ 명령어처럼 나중 필요한 경우를 위해 IF/ID 레지스터에도 저장된다.
2. Instruction Decode and Register File Read : IF/ID 파이프 라인 레지스터의 명령어 부분이 수치 필드(64bit)값과 레지스터 번호 두개를 제공하는 것을 보여준다. 세 값 모두 증가한 PC 주소값과 더불어 ID/EX 파이프라인 레지스터에 저장된다. 즉, 차후의 클럭 사이클에 어느 명령어에 의해 필요할지 모르는 것은 모두 전달한다.
3. Execute or Address Caculation : LDUR 명령어가 ID/EX 레지스터로부터 한 레지스터의 내용과 부호확장된 수치 값을 읽고, ALU를 사용하여 이들을 더하는 것을 보여준다. 합은 EX/MEM 레지스터에 저장된다.
4. Memory Access : LDUR 명령어가 EX/MEM 레지스터에서 주소를 받아 데이터 메모리를 읽고 이 데이터를 MEM/WB 레지스터에 저장한다.
5. Write-Back : MEM/WB 레지스터로 부터 데이터를 읽어서 그 데이터를 그림 중앙에 있는 레지스터 파일에 쓴다.
'책 > 컴퓨터 구조' 카테고리의 다른 글
컴퓨터 구조 Ch02_"Language of the Computer-4" (1) | 2021.01.20 |
---|---|
컴퓨터 구조 Ch02_"Language of the Computer-3" (0) | 2021.01.20 |
컴퓨터 구조 Ch04_"The Processor-3" (0) | 2021.01.06 |
컴퓨터 구조 Ch04_"The Processor-2" (0) | 2021.01.06 |
컴퓨터 구조 Ch04_"The Processor-1" (0) | 2021.01.04 |