๐ฃ CPU์ ๋ช ๋ น์ด ์ฒ๋ฆฌ ๊ตฌ์กฐ
instrucion cycle (๋ช ๋ น ์ฃผ๊ธฐ) : Fetch → Decode → Execute
ํ๋์ ๋ช ๋ น์ด๋ฅผ ์ธ์ถํ์ฌ ์คํํ๋ ๋ฐ ํ์ํ ์ผ๋ จ์ ํ๋.

์ฌ์ดํด์ ์ธ๋ถํ ํ๋ฉด 4๊ฐ์ง๋ก ๋๋ ์ ์์. ํญ์ ์คํ ํ์ํ ๋๋ง ์คํ
- ์ธ์ถ ์ฌ์ดํด
- ์คํ ์ฌ์ดํด
- ๊ฐ์ ์ฌ์ดํด (์ฃผ์ ์ง์ ๋ฐฉ์์ด ํ์ํ ๋)
- ์ธํฐ๋ฝํธ ์ฌ์ดํด (์ธํฐ๋ฝํธ ์๊ตฌ๊ฐ ์์ ๋)

์ ์ด์ฅ์น (Control Unit, CU)
- -๋ช ๋ น์ด ๋ ์ง์คํฐ์ ์ ์ฅ๋ ๋ช ๋ น์ด ํด๋
- - ์ปดํจํฐ ์์คํ ์ ๋ชจ๋ ๋์์ ์ ์ดํ๋ ์ ์ด์ ํธ ์์ฑ
์ฐ์ฐ๊ธฐ/์ฐ์ ๋ ผ๋ฆฌ์ฐ์ฐ์ฅ์น(ALU)
- - ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ ๋ด๋น
- - ๋ ์ง์คํฐ ํน์ ์ฃผ๊ธฐ์ต์ฅ์น์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๋ํ ์ฐ์ ์ฐ์ฐ ํน์ ๋ ผ๋ฆฌ ์ฐ์ฐ ์ํ
- - ์กฐํฉ ๋ ผ๋ฆฌํ๋ก๋ก ๊ตฌ์ฑ(์กฐํฉ ๋ ผ๋ฆฌํ๋ก ๋น๋ฉ ๋ธ๋ก)
์กฐํฉ ๋ ผ๋ฆฌ ํ๋ก : ํ์ฌ์ ์ ๋ ฅ ์ ํธ์ ์ํ์ฌ ์ถ๋ ฅ(๊ฒฐ๊ณผ)๊ฐ ๊ฒฐ์ ๋๋ ๋ ผ๋ฆฌ ํ๋ก

< Fetch Cycle > : ์ ์ด์ฅ์น์์ ์คํ (Control Unit, CU)
โถ Fetch
- โ -1 ํ๋ก๊ทธ๋จ ์นด์ดํฐ์ ์ ์ฅ๋ ์ฃผ์๋ฅผ MAR๋ก ์ ๋ฌ [ T0 : MAR <- PC ]
MBR : ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ๋ ์ง์คํฐ. ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ์ฝ์ ์๋ฃ๋ฅผ ๋ฃ์ด๋๊ธฐ ์ํ ์ผ์ ๊ธฐ์ต ํ๋ก.
ํ๋ก๊ทธ๋จ ์นด์ดํฐ(PC) : ๋ค์์ ์ํํ ๋ช ๋ น์ด์ ์ฃผ์๋ฅผ ํฌํจํ๊ณ ์๋ ๋ ์ง์คํฐ.
ํ์ฌ์ ๋ช ๋ น์ด ์คํ๋ ๋๋ง๋ค ๊ทธ ๋ ์ง์คํฐ์ ๋ด์ฉ์ 1์ด ์๋์ ์ผ๋ก ๋ง์ ๋จ.
- โก MBR์ ์ ์ฅ๋ ๋ด์ฉ์ IR์ ์ ๋ฌํจ. [T2 : IR <- MBR ]
IR : ๋ช ๋ น์ด ๋ ์ง์คํฐ. ํ์ฌ ์คํ ์ค์ธ ๋ช ๋ น์ด๋ฅผ ๊ธฐ์ตํ๊ณ ์๋ ์ค์์ฒ๋ฆฌ์ฅ์น ๋ด์ ๋ ์ง์คํฐ.
์ค์ ์ฒ๋ฆฌ ์ฅ์น์ ์ธ์ถ ์ฌ์ดํด์์ ํ๋ก๊ทธ๋จ ์นด์ดํฐ๊ฐ ์ง์ ํ๋ ์ฃผ๊ธฐ์ต์ฅ์น์ ์ฃผ์์ ์๋ ๋ช ๋ น์ด๋ฅผ ๋ช ๋ น์ด ๋ ์ง์คํฐ๋ก ์ฎ๊ธฐ๋ฉด, ์คํ ์ฌ์ดํด์์ ๋ช ๋ น์ด ํด๋ ๊ธฐ๊ฐ ๋ช ๋ น์ด ๋ ์ง์คํฐ์ ์๋ ๋ช ๋ น์ด๋ฅผ ํด๋ ํ๋ค.
< Excute Cycle >
โถ Decode
โข-1 ๋ช ๋ น์ด ํด๋ ๊ธฐ์์ Opcode(์ฐ์ฐ ์ฝ๋)๋ฅผ ํด์ํด ๋ฌด์จ ์ฐ์ฐ์ ํ ์ง ๊ฒฐ์
โฃ Operand(์คํผ๋๋)๋ MBR์ ๋์ด ์ฃผ๊ธฐ์ต์ฅ์น๋ก ๋์ด๊ฐ
โค ํด๋ ๋ ์ฐ์ฐ ์ฝ๋๊ฐ ALU(=์ฐ์ฐ์ฅ์น)๋ก ๋์ด๊ฐ.
Operand(์คํผ๋๋) : ์ฐ์ฐ์ ์ํํ๋ ๋ฐ ํ์ํ ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ ์ฃผ์
โถ Execute : ํด์๋ ๋ช ๋ น์ด์ ๋ฐ๋ผ ํ์ํ ์ฐ์ฐ ์คํ. (์ฃผ๊ธฐ์ต์ฅ์น๋ก ๋์ด๊ฐ ์คํผ๋๋๋ฅผ ์ฐ์ฐ์ฅ์น๋ก ๊ฐ์ ธ์ด.)
- ๋ฐ์ดํฐ์ ์ด๋ : CPU์ ๊ธฐ์ต์ฅ์น, I/O์ฅ์น ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ด๋
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ : ์ฐ์ , ๋ ผ๋ฆฌ ์ฐ์ฐ์ ํตํ ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ ์ ์ฅ : ์ฐ์ฐ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ ์ ๋ ฅ ์ฅ์น๋ก๋ถํฐ ์ฝ์ด ๋ค์ธ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ต์ฅ์น์ ์ ์ฅ
- ํ๋ก๊ทธ๋จ ์ ์ด : ํ๋ก๊ทธ๋จ์ ์คํ ์์ ๊ฒฐ์
๐ฃ Pipelining
: ์ฌ๋ฌ ๋ช ๋ น์ด๋ฅผ ์ค์ฒฉ์์ผ ์คํ์ํค๋ ๊ธฐ์
ํ๋ก์ธ์์์ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด์ ๋ช ๋ น์ด ์ฒ๋ฆฌ๋ฅผ ์ฌ๋ฌ ๋จ๊ณ๋ก ๋๋์ด ๋จ๊ณ๋ณ๋ก ๋์์ ์ํํ๋ ๊ธฐ์ .
- Pipelining์ด ์์ด ๋ช ๋ น์ด ์ฒ๋ฆฌ

๋ช
๋ น์ 5๋จ๊ณ๋ฅผ ๋ชจ๋ ๊ฑฐ์ณ ์ฒ๋ฆฌ๋ฅผ ํ ํ์ ๋ค์ ๋ช
๋ น์ ์ฒ๋ฆฌํจ.
๊ฐ ๋จ๊ณ์ 1์ฃผ๊ธฐ๊ฐ ๊ฑธ๋ฆฐ๋ค๊ณ ๊ฐ์ ํ๋ฉด, 3๊ฐ์ ๋ช
๋ น์ ์ฒ๋ฆฌํ๋๋ฐ 15์ฃผ๊ธฐ๊ฐ ๊ฑธ๋ฆผ → ๋นํจ์จ์
- Pipelining ๋ช ๋ น์ด ์ฒ๋ฆฌ

๊ฐ ๋จ๊ณ๋ ํ๋์จ์ด์ ๋ค๋ฅธ ์น์
์์ ์คํ๋๊ธฐ ๋๋ฌธ์ ๋ช
๋ น์ Pipeliningํ์ฌ ํจ์จ์ฑ์ ํฅ์ ์ํด.
๋ค์ํ ํ๋์จ์ด ์น์
์ด ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ช
๋ น์ด๋ฅผ ๋์์ ์ฒ๋ฆฌํ ์ ์๋๋ก ํจ.
3๊ฐ์ ๋ช
๋ น์ ์ฒ๋ฆฌํ๋๋ฐ 7์ฃผ๊ธฐ๊ฐ ๊ฑธ๋ฆผ → ํจ์จ์
pipeline์ด ๊ฐ์ฅ ํจ์จ์ ์ด๋ ค๋ฉด ์๋ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋ค
- ๊ฐ ๋จ๊ณ๋ณ ์ฒ๋ฆฌ ์๊ฐ์ด ์ผ์ ํด์ผ ํ๋ค.
- ๊ฐ ๋ช ๋ น์ด์ ์ฒ๋ฆฌ ๋จ๊ณ๋ ๊ท ์ผํด์ผ ํ๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ์ฒ๋ฆฌ ์๊ฐ์ผ ์ผ์ ํ์ง๋ ์๊ณ ์ฒ๋ฆฌ ๋จ๊ณ๊ฐ ๊ท ๋ฑํ์ง ์์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ์ฒ๋ฆฌ ์๊ฐ์ด ์ผ์ ํ์ง ์๊ณ , ์ฒ๋ฆฌ ๋จ๊ณ๊ฐ ๊ท ๋ฑํ์ง ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. โชHazardโซ
๐ฃ Out-of-order-Execution (๋น์์ฐจ์ ์คํ)
(๋ฐ์ดํฐ ํด์ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ)
๋ช ๋ น์ด ์์ค์์ ๋ณ๋ ฌ์ฑ(Instruction Level Parallelism)์ ์ฐพ์์ ์ด๋ฅผ ๋น์์ฐจ์ , ์ฆ ๋ณ๋ ฌ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ ๊ธฐ์ .
-Pipeline ๋ด์ ๋น ๊ณต๊ฐ์ด ์๊ธฐ๋ ๊ฒ ๋ฐฉ์ง, CPU๊ฐ ์ต๊ณ ์ฑ๋ฅ์ ๋ด๋๋ก ํจ.
๋ช ๋ น์ ๋น์์ฐจ์ ์ผ๋ก ๋ณ๋ ฌ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ๋ค์์ ๊ธฐ์ ๋ค์ด ํ์ํ๋ค
๋ณ๋ ฌ ์ฒ๋ฆฌ(parallel processing) : ๋ค์์ ํ๋ก์ธ์๋ค์ด ์ฌ๋ฌ ๊ฐ์ ํ๋ก๊ทธ๋จ ํน์ ํ ํ๋ก๊ทธ๋จ์ ๋ถํ ๋ ๋ถ๋ถ๋ค์ ๋ถ๋ดํ์ฌ ๋์์ ์ฒ๋ฆฌํ๋ ๊ธฐ์ .
- Instruction Window (๋ช ๋ น์ด ์๋์ฐ)
- Register Renaming (๊ฐ์ง ์์กด์ฑ ์ ๊ฑฐ)
- Reservation Station (๋์ ๋ช ๋ น์ด ์ค์ผ์ค๋ง)
- Reorder Buffer (์์ฐจ์ ์๋ฃ)
๐ตInstruction Window (๋ช ๋ น์ด ์๋์ฐ)
prossecer Pipeline์์๋ ๋ช ๋ น์ด๋ค์ด ์คํธ๋ฆผ์ผ๋ก ์ฒ๋ฆฌ๋จ.
๋ช ๋ น์ด์ ์คํธ๋ฆผ์์ ๊ฐ ๋ช ๋ น์ด๋ค์ ์์กด ๊ด๊ณ ๋ถ์์ด ํ์ํ๋ฐ, ํ๋ํ๋์ ๋ช ๋ น์ด๋ฅผ ์์ฐจ์ ์ผ๋ก ๋ถ์ํ๋ฉด ๋นํจ์จ์
โถ ๋ช ๋ น์ด ์๋์ฐ(Instruction Window)๊ฐ ํ์ํจ
๋ช ๋ น์ด ์คํธ๋ฆผ ์์์ ์ผ์ ํ ์ซ์์ ๋ฒ์ ๋ด์์ ILP(๋ณ๋ ฌ์ฑ)๋ฅผ ๊ฒ์ฌํ์ฌ ๋น์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ
๋ช ๋ น์ด ์คํธ๋ฆผ(Instruction stream) : ํ๋ก์ธ์์ ์ํด ์คํ๋๊ธฐ ์ํด ์์๋๋ก ๋์ด๋ ๋ฐ์ดํฐ๋ค์ ์งํฉ

โ ๋ช ๋ น์ด ํ๋๊ฐ ๋ช ๋ น์ด ์๋์ฐ ์์ผ๋ก ๋ค์ด์ด๊ณผ ๋์์ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋ ๊ฐ์ฅ ์ค๋๋ ๋ช ๋ น์ด ํ๋๋ ๋น ์ ธ๋๊ฐ.
โก ์๋์ฐ ๋ด์์ ๋ช ๋ น์ด๋ค์ ์ฒ๋ฆฌํจ (์์กด์ฑ ์ฒดํฌ, ์ค์ผ์ค๋ง ํ ๋ณ๋ ฌ์คํ, ์ด์ ๋ช ๋ น์ด ์๋ฃ ๊ธฐ๋ค๋ฆผ... ๋ฑ)
โข ๋ช ๋ น์ด ์๋์ฐ ๋ด์์ ๊ฐ์ฅ ์ค๋๋ ๋ช ๋ น์ด๊ฐ ๋น ์ ธ๋๊ฐ๊ณ , ๋์์ ๋ค๋ฅธ ๋ช ๋ น์ด๊ฐ ๋ค์ด์ด.
๐ต Refister Renaming (๊ฐ์ง ์์กด์ฑ ์ ๊ฑฐ)
๊ฐ์ง ์์กด์ฑ์ด๋ผ๋ ๊ฒ์ ์ฝ๋์ ์ฌ์ฉ๋ ๋ ์ง์คํฐ๋ฅผ ๋ณด๋ฉด ์ํ ์ฝ๋๊ฐ ์์กด์ ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ์๋ฏธ์ ์ผ๋ก ๋ฐ์ ธ ๋ณด๋ฉด ์ค์ ๋ก๋ ์์กด์ฑ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํจ
์์กด์ฑ ์ฒดํฌ ๊ณผ์ ์์ ๊ฐ์ง ์์กด์ฑ์ด ๋ฐ๊ฒฌ๋์ด ๋ ์ง์คํฐ์ ์ด๋ฆ์ ์ด์ง ๋ฐ๊พธ์ด์ฃผ๋ ๊ณผ์ ์ Rester Renaming์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค
๐ต Reservation Station(๋์ ๋ช ๋ น์ด ์ค์ผ์ค๋ง)
operand๊ฐ ์ค๋น๋๋ฉด ๋ช
๋ น์ด๋ ์ํ ๊ฐ๋ฅ.
operand๊ฐ ์ค๋น๋์ง ์์ ๋ช
๋ น์ด๊ฐ ๋๊ธฐํ๋ ๊ณณ์ด Reservation Station์ด๋ผ๋ Queue์.

Queue : ์ปดํจํฐ์ ๊ธฐ๋ณธ์ ์ธ ์๋ฃ ๊ตฌ์กฐ์ ํ ๊ฐ์ง๋ก, ๋จผ์ ์ง์ด๋ฃ์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๋ FIFO(First In First Out)๋ก ์ง์ ํ๋ ํ์
Reservation Station์์ ๋๊ธฐํ๋ ๋ช ๋ น์ด๋ ๋ ๊ฐ์ง ํต์ฌ ์์ ์ ํจ.
โ Wake-up : Reservation Station ์์ ๋๊ธฐํ๊ณ ์๋ ์ด๋ค ๋ช ๋ น์ด๊ฐ ์ด๋ค operand ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์๋ ์ฐพ๋ ๊ฒ์ ๋งํจ. ๋งค๋ฒ Reservation Station Queue์ ์๋ ๋ช ๋ น์ด๋ค์ด ํ์๋ก ํ๋ Operand ๋ค์ ๋ชจ๋ ์ฒดํฌํ๋ค. (Bottle neck point)
โ Select : operand ๊ฐ ์ค๋น๋์ด ์คํ ๊ฐ๋ฅํ ์ํ์ ๋ช ๋ น์ด๋ณด๋ค ์ฌ์ฉ ๊ฐ๋ฅํ ์คํ ์ฅ์น์ ์ซ์๊ฐ ์ ์ ์ํฉ์ด ์์ ๋, ์คํ ์ฅ์น์ ํ ๋น์ ํจ๊ณผ์ ์ผ๋ก ์ํํ ์ ์๋๋ก ์ค์ผ์ค๋งํ๋ ๊ฒ์ ๋งํจ (Bottle neck point)
Bottle neck(๋ณ๋ชฉ ํ์) : ์์คํ ์ ์ฒด์ ์ฑ๋ฅ์ด๋ ์ฉ๋์ด ํ๋ ํน์ ์ ์ ๊ฐ์์ ๊ตฌ์ฑ ์์๋ ์์์ ์ํด ์ ํ์ ๋ฐ๋ ํ์
โถ ๋ณ๋ชฉ ํ์๊ณผ ๋ณต์ก์ฑ ๋๋ฌธ์ Reservation Station Queue์ ํฌ๊ธฐ๋ฅผ ๋ฌด์์ ๋๋ ค์ ๋ณ๋ ฌ์ฑ์ ๋์ด๋ ์์ ์ ํ๊ณ๊ฐ ์์
Reservation Station์ด ์กด์ฌํจ์ผ๋ก ํด์ ๋ช ๋ น์ด๋ค์ ์คํ์ด ๋ฐ๋์ ์์ฐจ์ ์ด์ง ์๊ณ , operand ๊ฐ ์ค๋น๋ ๋๋ก ๋น์์ฐจ์ ์ผ๋ก ์ค์ผ์ค๋ง๋์ด ์คํ์ด ๊ฐ๋ฅํ ๊ฒ.
Reservation Station์ ๋ช ๋ น์ด๊ฐ ํฌ์ ๋๋ ์๊ฐ๋ถํฐ ์คํ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ ๋๊น์ง๋ ๋น์์ฐจ์ ์ผ ์ ์์
→ operand์ ์ค๋น์ํ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์ค์ผ์ค๋งํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋ฐ๋ก ํ ๋ง์๋ก(Tomasulo) ์๊ณ ๋ฆฌ์ฆ
๐ต Reorder Buffer(์์ฐจ์ ์๋ฃ)
๋ช ๋ น์ด ์์๊ฐ ๋ค์์ฌ์ ๋๋ฌ๋๋ผ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ํ๋ ์์๋๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ด๋ ๊ณผ์ ์ด ํ์ํจ. ์ด๋ Reorder Buffer ์ฌ์ฉ
Reorder Buffer์ ์คํ์ด ๋๋ ๋ช
๋ น์ด๋ค์ ๋ชจ์๋๋ค๊ฐ ์๋์ ํ๋ก๊ทธ๋จ ์์๋๋ก ์ฐจ๋ก์ฐจ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด ์ค
Reorder Buffer์๋ ๋น์ฐํ ์๋ ๋ช
๋ น์ด์ ์์๋๋ก ์์๋์ด์ผ ํ๋ค.
โ Reorder Buffer ์ ๋ช ๋ น์ด๋ฅผ ๋ฃ์ด๋๋ ์์ = ์ด๊ธฐ์ Reservation Station์ผ๋ก ๋ช ๋ น์ด๋ฅผ ๋ฃ๋ ์์
โก Reorder Buffer์ ๋ฃ์ด๋๊ณ ์คํ(์ฐ์ฐ)์ด ๋๋ ๊ฒ๋ค๋ง ํ์
โข ์ฒ๋ฆฌ๊ฐ ์ข ๋ฃ๋๋ฉด ํ์๊ฐ ๋ ๋ช ๋ น๋ค์ Reorder Buffer์์ ์๋ ํ๋ก๊ทธ๋จ ์์๋๋ก ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ ์ง์คํฐ ๋ฑ์ ์ ์ฅํด ์ค
Out-of-oder-Excution (๋น์์ฐจ์ ์คํ)์ผ๋ก ์๋ ๋ช ๋ น์ด๋ฅผ ์ฒ๋ฆฌํ๋ค๊ณ ์๋ฅผ ๋ค์ด๋ณด์
A=5
B=3
C=A+B
D=4


โถout-of-order-execution์ Meltdown ์ทจ์ฝ์ ์ ๋ฐ.
๐ฃ branch prediction(๋ถ๊ธฐ ์์ธก)
(์ ์ด ํด์ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ)
dynamic prediction : ํ๋ก๊ทธ๋จ ์คํ ์ค history ๊ธฐ๋ฐ์ผ๋ก ๋ถ๊ธฐ๋ฅผ ์์ธกํ๋ ๊ฒ
a = e + f;
if (a == 0)
b = 0;
else
b = 1;
CPU๋ ๋ ๋ฆฝ์ ์ผ๋ก ์คํํ ์ ์๋ ๋ช ๋ น์ด๋ค์ ์ฐพ์ง๋ง, 2๋ฒ์งธ ์ค์ if๋ฌธ์ด ์์ด์ 3๋ฒ์ ์ฝ์์ง 5๋ฒ์ ์ฝ์์ง ์ ์ ์์.
โถ ๊ทธ๋์ ์ฃผ์ด์ง ๋ถ๊ธฐ๋ฌธ์ด ์ฐธ์ด๋ ๊ฑฐ์ง์ด๋ ํ๋ ์ง๋ฌธ์ ๋ต์ ์์ธกํจ. =Branch prediction(๋ถ๊ธฐ ์์ธก)
์๋ฅผ ๋ค์ด,
๋ถ๊ธฐ ์์ธก๊ธฐ๊ฐ a == 0์ผ ํ๋ฅ ์ด ๋๋ค๊ณ ์์ธกํ๋ค๋ฉด → CPU๋ ๊ทธ๊ฒ์ ๋ฏฟ๊ณ 3๋ฒ์งธ ์ค์ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์ ์ฒ๋ฆฌํจ.
์ดํ 2๋ฒ์งธ ์ค ๋ช ๋ น์ด ์๋ฃ๋์ด
- a == 0์ด ๋ง๋ค๊ณ ํ๋ช ๋๋ฉด ๋ค์ ๋ช ๋ น์ ์ํํจ.
- a == 0์ด ์๋๋ผ๊ณ ํ๋ช ๋๋ฉด ๋ค์ ๋๋์๊ฐ(Undo) 5๋ฒ์งธ ์ค ๋ช ๋ น์ด ์ํ๋๋๋ก ํจ.
๋ถ๊ธฐ ์์ธก ๊ธฐ์ ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ
โ ๋ถ๊ธฐ ๋ฐฉํฅ ์์ธก
์คํ๋ Pipeline ์กฐ๊ฑด ๋ถ๊ธฐ๋ฌธ์ ๋ถ๊ธฐ ์ฌ๋ถ(teken or not taken)๋ฅผ ์์ธกํ๋ ๊ธฐ๋ฒ
์ ์ ๋ถ๊ธฐ ๋ฐฉํฅ ์์ธก : ์ ํด์ง ๊ท์น์ ๋ฐ๋ผ ์ฌ์ ์ ๋ถ๊ธฐ๋ฅผ ์ง์
๋์ ๋ถ๊ธฐ ๋ฐฉํฅ ์์ธก : ํ๋ก๊ทธ๋จ ์คํ ์ค ๊ณ์ฐ ์ด๋ ฅ์ ๋ฐ๋ผ ๋ถ๊ธฐ๋ฅผ ๋์ ์ผ๋ก ์์ธก
โ ๋ถ๊ธฐ ๋ชฉ์ ์ง ์์ธก
๋ถ๊ธฐ๋ฌธ์ด ์ด๋๋ก ๋ถ๊ธฐํ ์ง ๋ชฉ์ ์ง PC(Program Counter) ๊ฐ์ ์์ธกํ๋ ๊ธฐ๋ฒ
โถBranch prediction์ Spectre ์ทจ์ฝ์ ์ ๋ฐ.
๐ฃ speculation execution (์์ธก ์คํ)
๋ถํ์คํ ์์ธก ๊ธฐ๋ฐ, ๋ ๋์ ์ฑ๋ฅ์ ๊ฐ์ ธ์ค๋ ๋ฐฉํฅ์ผ๋ก ๋ช ๋ น์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฒ
์์ธก์ ๊ธฐ๋ฐํ์ฌ ํ์คํ์ง ์์ ๋ช ๋ น์ด๋ฅผ ๋ฏธ๋ฆฌ ์ํ → ๊ฒฐ๊ณผ ๊ฐ์ด ์์ธก ๊ฐ๊ณผ ๋ค๋ฅด๋ฉด ์ด๋ฏธ ์ฒ๋ฆฌํ ๋ช ๋ น์ด ์ญ์
โ ์์ธก์ ํ์ํ ์ฅ์น
๋ฏธ๋ ์์ธก ์ฅ์น : ์์ธก์ ๊ธฐ๋ฐํ์ฌ ํ์คํ์ง ์์ ๋ช ๋ น์ ๋ฏธ๋ฆฌ ์ํํ๋ ์ฅ์น
- ๋์ /์ ์ ๋ถ๊ธฐ ์์ธก, ์ด๋ ฅ ๊ธฐ๋ฐ ๋ถ๊ธฐ ์์ธก
ROB(Reorder Buffer)
๊ฒฐ๊ณผ๊ฐ ํ์คํ์ง ์์๋ ์คํ์ ๊ณ์ ์งํ์ํฌ ์ ์๋ ์ฅ์น
Undo
์์ธก์ด ํ๋ ธ์ ๋ ์์ํ๋ก ๋ณต๊ตฌํ๋ ์ฅ์น
โ ์์ธก ์คํ ๋์ ์๋ฆฌ
๋ถ๊ธฐ๋ฌธ ์์ธก ์คํ : ๋์ /์ ์ ๋ถ๊ธฐ ๋ฐฉํฅ๊ณผ, ๋ถ๊ธฐ ๋ชฉ์ ์ง๋ฅผ ์์ธกํ์ฌ ๋ช ๋ น์ด ์คํ
์์ธก ์ฑ๊ณต ์ : ์คํ๋ ๋ช ๋ น์ด์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ณ ๋ค์ ๋ช ๋ น์ด ์ํ
์์ธก ์คํจ ์ : ์คํ๋ ๋ช ๋ น์ด์ ๊ฒฐ๊ณผ๋ฅผ ์ทจ์ํ๊ณ ์์ํ๋ก ๋ณต๊ตฌ(Undo)
'Layer7' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| C Pointer (1) | 2021.05.11 |
|---|---|
| embedded(์๋ฒ ๋๋) (3) | 2021.04.20 |
| Pipelining : Hazard (2) | 2021.04.17 |
| RAM ROM FLASH (4) | 2021.04.11 |
| ์ปดํจํฐ ๋ถํ ๊ณผ์ (2) | 2021.04.10 |