[TIL] 2022.12. 1. [Computer Architecture]
오늘의 TIL.
오늘은 몸이 좋지 않은 관계로 짧게 쓰려고 한다.
과제를 하다가 복습하는 글이다.
명령어 인출 단계는 IF로 나타낸다.
명령어 해독/레지스터 파일 읽기 단계는 ID로 나타낸다.
실행단계는 EX로 나타낸다.
이는 ALU 상자로 나타낸다.
메모리 접근 단계는 MEM으로 나타낸다.
쓰기 단계는 WB로 나타낸다.
Hazard
데이터 해저드에 대한 첫 번째 해결책은 데이터 해저드를 해결하려고 노력하기 전 명령어가 끝날 때까지 기다릴 필요가 없다는 관찰에 기반을 둔다.
별도의 하드웨어를 추가하여 정상적으로는 얻을 수 없는 값을 내부 자원으로부터 일찍 받아 오는 것을 forwarding 또는 bypassing이라고 한다.
load-use data hazard
의 경우에도 파이프라인 지연을 방지할 수는 없다.
forwarding 방법을 써도 한 단계가 지연되어야 한다.
지연은 pipeline stall이라고 하며 또 bubble이라고도 한다.
적재 명령어 다음에 나오는 R-형식 명령어가 그 데이터를 사용하려 시도할 때는 전방전달을 해도 지연이 필요하다.
-> 지연이 없다면 메모리 접근 단계 출력에서 실행 단계 입력으로 가는 경로는 시간적으로 뒤로 가는 것이기 때문에 불가능하다.
-> sub 명령어가 인출되고 해독될 떼까지는 지연이 필요한지 아닌지 알 수 없다.
branch hazard
제어 해저드라고 불리는데 다른 명령어들이 실행중에 하나의 명령어의 결과값에 기분을 둔 결정을 할 필요가 있을 때 일어난다.
해결책
1. 지연(stall)
: 다음 클럭 사이클에서 분기 명령어를 이을 명령어를 가져오기 시작해야 하는데, 다음 명령어가 어느 것이 되어야 할지 파이프라인은 알 수 가 없다.
왜냐하면 이제 방금 메모리에서 분기 명령어를 꺼냈을 뿐이기 때문이다. 한 가지 가능한 해결책은 세탁소 비유의 경우처럼 분기 명령어를 인출한 직후 파이프라인을 정지시켜서, 파이프라인이 분기 결과를 판단하고 다음 명령어를 가져올 주소를 결정할 때까지 기다리게 하는 것이다.
분기가 실패하면 실행되는 명령어는 시작하기 전에 별도의 200ps 클럭 사이클 동안 지연된다.
2. 예측(predict)
: 조건부 분기 명령어를 다루기 위해 예측을 사용한다. 간단한 방법은 조건부 분기가 항상 실패한다고 예측하는 것이다. 예측이 옳으면 파이프라인은 최고 속도로 진행된다. 실제로 조건부 분기가 일어날 때만 파이프라인이 지연된다.
※ 해당 게시물은 컴퓨터 구조 및 설계 (RISC-V)를 토대로 작성되었으며, 문제가 될 시 삭제하겠습니다. ※
'Today I Learned(TIL)' 카테고리의 다른 글
[TIL] 2022.12. 3. [기록] (0) | 2022.12.04 |
---|---|
[TIL] 2022.12. 2. [기록] (0) | 2022.12.03 |
[TIL] 2022.11.30. (기록) (0) | 2022.11.30 |
[TIL] 2022.11.29. [Computer Architecture] (0) | 2022.11.29 |
[TIL] 2022.11.28. [Computer Architecture] (0) | 2022.11.28 |