Computer Science 기본 지식/컴퓨터 구조

[컴퓨터 구조] 7. 파이프 라인된 데이터 패스

로파이 2021. 4. 18. 19:31

파이프라인된 데이터 패스의 경우 각 단계를 분리하기 위한 파이프라인 레지스터가 존재한다.

  • IF/ID : IF와ID 단계를 분리하는 레지스터
  • ID/EX : ID와 EX 단계를 분리하는 레지스터
  • EX/MEM: ID와 MEM 단계를 분리하는 레지스터
  • MEM/WB: MEM과 WB 단계를 분리하는 레지스터

ld 명령어의 데이터 패스 예제

 

1. 명령어 인출 Instruction Fetch

명령어 인출

PC에 저장된 주소를 이용하여 명령어를 메모리에서 읽어와 IF/ID 레지스터에 저장한다. PC 는 4만큼 증가하여 저장되고 이 값이 IF/ID에도 저장된다. beq와 같은 명령어 처럼 나중에 사용될 수 있기 때문이다.

 

2. 명령어 해독 Instruction Decode

명령어 해석

Read register 1, 2 그리고 수치 값 ImmGen(64)이 증가한 PC 값과 같이 ID/EX 레지스터에 쓰인다.

 

3. 실행 또는 주소 계산 Execution

실행 및 주소 계산

ID/EX 파이프라인 레지스터로 부터 레지스터 한 값과 수치 값(오프셋)을 읽어 주소를 계산한다. 계산 결과는 EX/MEM 레지스터에 저장된다.

 

4. 메모리 접근 Mem Access ~ 5. 쓰기 Mem Write

메모리 접근 및 쓰기

4. EX/MEM에 저장된 주소를 참조하여 메모리에서 데이터를 읽은 후 MEM/WB 레지스터에 저장한다.

5. MEM/WB 레지스터에서 값을 읽어 추후 다른 명령어의 입력으로 사용할 수 있도록 중앙 레지스터 파일에 쓴다.

 

sd 명령어의 데이터 패스 예제

 

1.명령어 인출 ~ 2. 명령어 해석

명령어 해석이후 처리 단계가 실행되기 전까지 어떤 명령어인 지 모르므로 모든 명령어는 1~2단계에서 동일한 데이터 패스를 가진다.

sd 명령어는 rs1, rs2, 즉치 값을 모두 사용하기 때문에 두 레지스터 번호를 읽어 해당 두 레지스터 값과 즉치 값, 총 3개의 64비트 값을 ID/EX에 가져온다. 이때 ID/EX에는 저장할 값과, 목적지 주소 및 오프셋이 있는 상황이다.

 

3. 실행 및 주소 계산

실행 및 주소 계산

유효 주소를 계산하여 EX/MEM 파이프라인 레지스터에 저장한다. ID/EX에 저장된 저장할 데이터를 EX/MEM으로 전달한다.

 

4. 메모리 접근

메모리 접근

 

쓰기 단계

해당 유효 주소의 메모리에 값을 쓴다. 추후 다른 명령어 종류에서 데이터를 다시 쓸 일은 없기 때문에 쓰기 단계에서는 아무 일도 하지 않는다.

 

참고 : Computer Organization and Design RISC-V edition