박사라이팅
In-order Issue, Out-of-Order Completion 본문

성균관대학교 조형민 교수님 "컴퓨터구조설계특론" 수업을 바탕으로 만들었습니다.
In-order로 Instruction을 마치게 되면, Hazard로 인하여, 더 느리게 Instruction이 끝나게 됩니다. 이에 In-order로 Instruction은 실행하되, 끝나는 Completion은 Out-of-Order로 하여 더 빠르게 끝나게 만들고자 합니다.
무작정 Out-of-Order로 Instruction의 순서를 바꾼다고 되는 것은 아닙니다. Hazard가 있는지 없는지를 확인하고 순서를 바꿔도 상관없을 때 순서를 바꾸죠.

I1과 I2는 서로 이어진 것이 없기 때문에 바꿔도 상관없습니다. I4와 I5도 마찬가지죠. 이에 Out-of-Order Completion을 진행하면 I2를 I1보다 먼저 끝내고, I5를 I4보다 먼저 끝냅니다.
3 cycle이나 더 빨라진 것을 위의 예제로 볼 수 있네요.
Out-of-Order로 Completion하기 위해, 몇 가지 조건들을 아셔야 합니다.
1. RAW (Read After Write) Hazard가 있을 때, Instruction을 Issue하지 못함.
2. WAW (Write After Write) Hazard가 있을 때, Instruction을 Issue하지 못함.
3. FU (Functional Unit)이 busy일 때, Instruction을 Issue하지 못함.
4. Instruction이 Issue일 때, register에서 read한다고 가정.
5. WAR (Write After Read) Hazard는 발생할 수 없음. 순서대로 Issue하기 때문.
이에 Scoreboard를 관리하여 간단하게 In-order Issue, Out-of-Order Completion을 진행할 수 있습니다.
예시를 들어볼게요.

위 예시는 간단한 Scoreboard와 FU status를 그려주는데요. FU는 어떤 Instruction이냐에 따라 필요한 cycle 수가 달라집니다.
먼저 cycle 0일 때, I1인 FDIV가 먼저 Issue 됩니다. FDIV를 완료하기 전에 I2에서 Load가 Issue되죠. I1과 I2는 서로 연관된 register를 사용하지 않기 때문에, 둘다 동시에 실행이 가능합니다.
하지만, I2와 I3는 r4라는 register를 서로 사용합니다. RAW Hazard가 발생하겠네요. 그렇기 때문에 r4를 Write Back (WB)하기 까지 I3는 Issue되지 않고 기다리게 됩니다. I5도 I1과 I3의 register를 갖고 있어, WB할 때까지 기다려야 하죠. Scoreboard를 사용하면, Hazard가 있는 Instruction 끼리, 관리를 하며 Out-of-Order 순서와 Issue 순서를 쉽게 정할 수 있습니다.
오늘은 이렇게 In-order Issue, Out-of-Order Completion에 대해 알아보았는데요. 다음에는 Out-of-Order Issue, Out-of-Order Completion에 대해 알아보겠습니다.

'공부 > 컴퓨터구조' 카테고리의 다른 글
Cache State-Transition Diagram (MSI) (1) | 2024.04.03 |
---|---|
Cache Coherence (0) | 2024.04.03 |
Multi-Thread (1) | 2023.12.14 |
Out-of-Order Issue, Out-of-Order Completion (0) | 2023.12.14 |
Re-Order Buffer (ROB) (4) | 2023.11.11 |