๐ข์ด์ ๊น์ง๋ ์ฐ์ ์ฐ์ฐ๊ณผ ๋ฐ์ดํฐ ์ ์ก์ด ๊ด๋ จ๋ ํค์ ๋์๋ค.
์ด์ ๋ ๋ถ๊ธฐ์ ๊ด๋ จ๋ ํ์ดํ๋ผ์ด๋ ํค์ ๋๊ฐ ์๋ค.
์๋ ๋ถ๊ธฐ๋ฅผ ํ ๊ฒ์ธ๊ฐ ๋ง ๊ฒ์ธ๊ฐ์ ๋ํ ๊ฒฐ์ ์ MEM์์ ์ด๋ฃจ์ด์ง๋ค.
๊ทธ๋ฐ๋ฐ ์ด์ ์ธ์ถํ ๋ช ๋ น์ด๊ฒ ๋ฆ๊ฒ ๊ฒฐ์ ๋๋ ๋ฌธ์ ๋ฅผ control hazard๋ผ๊ณ ํ๋ค.
โ Control Hazard
- ๋ธ๋์น ํค์ ๋ (๋ธ๋์น ๋ช ๋ น์ด ๋๋ฌธ์ ๋ฐ์ํด์)
- ํด์น๋ ๋ช ๋ น์ด๊ฐ ํ์ํ ๋ช ๋ น์ด๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ํด๋น ํด๋ญ ์ฌ์ดํด์ ์คํํ ์ ์์ ๋ ๋ฐ์ํ๋ค.
* ๋ช ๋ น์ด์ ์ผ์ชฝ์ ์๋ ์ซ์๋ค(40, 41,,)์ ๋ช ๋ น์ด ์ฃผ์์ด๋ค.
๋ถ๊ธฐ ๋ช ๋ น์ด๋ ๋ถ๊ธฐํ ๊ฒ์ธ์ง๋ฅผ MEM์์ ๊ฒฐ์ ์ ํ๋ค.
(์ ํ์ ๊ฒฝ์ฐ CC4)
๊ทผ๋ฐ ๋ค์ ๋ช ๋ น์ด๊ฐ PC+4์ด๋ค.
๊ทธ๋์ ์ด๋ฌํ CONTROL HAZARD๊ฐ ๋ฐ์ํ๋ค.
๐Solution
- ๋ฐ์ดํฐ ํด์ ๋ (ํ์ดํ๋ผ์ธ ์ผ๋ถ ๋ฉ์ถ๋ ๊ฑฐ - ๊ทผ๋ฐ ์ฑ๋ฅ ์ ์ข์)
- ๋ธ๋์น๋ฅผ ์์ธกํจ (๋ง์ด ์ฌ์ฉ๋จ)
- ๋ธ๋์น๋ฅผ ์ง์ฐ์ํด
1๏ธโฃStall on Branch
๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ค์ ๋ช ๋ น์ด๋ฅผ fetchํ๋ค.
์ด๋ ๊ฒ ํ๋ฉด 3ํด๋ญ์ด ๋ญ๋น๊ฐ ๋๋ค.
๊ทธ๋์ ๊ทธ๋๊น์ง bubble์ด ์๊ธฐ๊ฒ ํ๋ค.
(3๊ฐ์ ํจ๋ํฐ๊ฐ ์๊ธด๋ค)
๐ค๋ธ๋์น ํ ์ง, ๋ง์ง๋ฅผ ์ข ๋ ์์์ ์๋ฉด ์ข์ง ์์๊น?
- ๋ค์ PC ๊ฐ์ MEM ๋จ๊ณ๊ฐ ์๋๋ผ ID ๋จ๊ณ์์ ์ ์ ํ๋ค.
- IF ๋จ๊ณ์ ์๋ ๋ช ๋ น์ด ํ ๊ฐ๋ง ์ธ์ด๋ด๋ฆฌ๋ฉด ๋๋ค.
๐คฉ๋ฐ์ดํฐํจ์ค ์์
๋ถ๊ธฐ ๋ชฉ์ ์ง ์ฃผ์ ๊ณ์ฐ๊ณผ ๋ถ๊ธฐ ์กฐ๊ฑด ๊ฒ์ฌ๋ฅผ ID ๋จ๊ณ์์ ์คํํ๋ค.
ํจ๋ํฐ๋ฅผ ํ๋๋ง ๋ฒ๋ฆฌ๊ฒ ๋๋ ๊ฑฐ
- ๋ถ๊ธฐ ๋ง์ ๊ธฐ๋ฅผ ID ๋จ๊ณ๋ก ์ด๋
- ID ๋จ๊ณ์ ๋น๊ต๊ธฐ ์ถ๊ฐ
๐ ์ ์ด ์ ํธ์ ์ถ๊ฐ
IF/ID ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ์ ๋ช ๋ น์ด ํ๋๋ฅผ 0์ผ๋ก ๋ง๋ ๋ค.
์ธ์ถ๋ ๋ช ๋ น์ด๋ฅผ nop์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ
๋ชจ๋ ๋ช ๋ น์ด๋ฅผ ๋ค 0์ผ๋ก ๋ฐ๊ฟ (nop)
๋ธ๋์น๊ฐ CPI์ ๋ฏธ์น๋ ์ํฅ
17ํผ์ผํธ๋งํผ ์ฑ๋ฅ์ด ๋จ์ด์ง
๐ก Average CPI = 1 + 0.17 x 1 = 1.17
2๏ธโฃBranch Prediction
ํ์ดํ๋ผ์ธ์ด ๊ธธ์ด์ง๋ฉด ๊ทธ ๋ธ๋์น์ ๋ํ ๊ฒฐ๊ณผ๊ฐ ๋นจ๋ฆฌ ๋์ฌ ์๊ฐ ์๋ค.
- ์ค์ ๋ถ๊ธฐ ๊ฒฐ๊ณผ๊ฐ ํ์ธ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๋์ , ๋ถ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ํ๊ณ ๊ทธ ๊ฐ์ ํ์ ํ์ดํ๋ผ์ธ์ ์งํํด ๋๊ฐ๋ ๋ถ๊ธฐ ํค์ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ (์ค์ ๋ก ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ)
⇒ ๋ถ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ์์ธก > ์์ธก์ด ๋ง์ผ๋ฉด ์ง์ฐ ์์ด ์งํ
⇒ ์์ธก ์คํจ ์์ค > ์์ธก์ด ํ๋ ธ์ ๋๋ง ์๊ธฐ๋ ํ์ดํ๋ผ์ธ ์ง์ฐ
- ํ๋ฅ ๊ธฐ์กด์ mem์์ ํ๋ ๊ฑด 1.51์ด์ ์์ธก์ ํ๋๊น 1.085๊น์ง ์ค๊ฒ๋จ1+0.17 x 0.1 = 1.017๊น์ง ๊ฐ์ ๊ฐ๋ฅ
- ์์ธก์ ํ๋๋ฐ ์ข ๋ ์ข์ ๊ธฐ์ ์ ์ฌ์ฉํ๋ฉด ์ ํ๋๋ฅผ 90%๊น์ง ํ ์ ์์
- ์ด๊ฑธ id๋ก ๊ฐ์ ธ์ค๋ฉด 1.17์ด์๊ณ
- 1 + 0.17+ 0.5 = 1.085 ๊น์ง ์ค์ผ ์ ์์
๐ ์์ธกํ๋ ๋ฐฉ๋ฒ์ด 2๊ฐ์ง!!!
- ์ ์ ์ธ ์์ธก
- ํ๋ก๊ทธ๋จ์ด ์คํํ๊ธฐ ์ ์ ๋ถ๊ธฐ ๋ฐฉํฅ์ ์์ธกํ๋ค.
- ๊ทธ ์ ์ ์คํํ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํด ์์ธก์ ํ๋ค.
- ์ฐ๋ฆฌ ์ํฉ์ ๋ง๋ ์์ธก์ ๋ชปํ ์๋ ์์
- ๋์ ์ธ ์์ธก
- ํ๋ก๊ทธ๋จ ์คํ ์ ์์งํ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ๋ถ๊ธฐ ๋ฐฉํฅ์ ์์ธกํ๋ค.
- ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด์ ํ๋์จ์ด๊ฐ ๋ถ๊ธฐ ์ด๋ ฅ์ ๊ธฐ๋กํ๋ค. (recording)
๐Assume Branch Not Taken
⇒ ๋ถ๊ธฐ๊ฐ ์ผ์ด๋์ง ์๋๋ค๊ณ ๊ฐ์
์ค์ ๋ก ๋ถ๊ธฐ๊ฐ ์ผ์ด๋์ง ์๋๋ค๋ฉด, ํ์ดํ๋ผ์ธ์ ์๋ ๋ช ๋ น์ด๋ฅผ ๊ทธ๋๋ก ์คํํ๋ค.
๋ง์ฝ ๋ถ๊ธฐ๊ฐ ์ผ์ด๋๋ค๋ฉด, ์ธ์ถ, ํด๋ ๋ ๋ช ๋ น์ด๋ค์ ๋ฒ๋ฆฌ๊ณ ๋ถ๊ธฐ ๋ชฉ์ ์ง์์ ์คํ์ ๊ณ์ํ๋ค.
์์ธก์ด ๋ง์ผ๋ฉด branch not taken์ผ๋ก
์์ธก์ด ํ๋ฆฌ๋ฉด ๋ฒ๋ธ๋ก ๋ฐ๋๊ณ pc+4๊ฐ ๋ค์ด์ด (Misprediction Penalty)
๐Dynamic Branch Prediction
⇒ ๋๊ธฐ ๋ถ๊ธฐ ์์ธก
์ฐ๋ฆฌ๊ฐ ๋๋ฆฌ๊ณ ์ ํ๋ ํ๋ก๊ทธ๋จ์ ๋ง์ถฐ ์์ธก์ ํ๋ค.
๋ช ๋ น์ด ์ฃผ์๋ฅผ ์ดํด์ ์ง๋ ๋ฒ ์คํ ์ ๋ถ๊ธฐ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๋ค.
์ง๋ ๋ฒ๊ณผ ๊ฐ์ ๋ฐฉํฅ์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ธ์ถํ๋ค.
๋ฐ๋ผ์ ๊ณผ๊ฑฐ์ ํ ํ๊ฐ ์์ด์ผ ํจ(branch history table)
๐BHT (Branch Histroy Table)
- ๋ถ๊ธฐ ๋ช ๋ น์ด ์ฃผ์์ ํ์ ๋นํธ์ ์ํด ์ธ๋ฑ์ค ๋๋ ์์ ๋ฉ๋ชจ๋ฆฌ์ด๋ค.
- BHT๋ฅผ ๊ฒ์ฌํด์ ๋ถ๊ธฐ ์ฌ๋ถ๋ฅผ ์์ธก
- ๋ค์ ๋ช ๋ น์ด ๋๋ ๋ถ๊ธฐ ๋ชฉ์ ์ง์์ ๋ช ๋ น์ด ์ธ์ถ
- ์์ธก์ด ํ๋ ธ์ ๋๋ ํ์ดํ๋ผ์ธ์ ๋น์ฐ๊ณ ์์ธก ๋ฐฉํฅ์ ๋ฐ๊พผ๋ค.
๐2-bit Branch Prediction Scheme
- ์์ธก์ด ์ฐ์ ๋ ๋ฒ ํ๋ ค์ผ ์์ธก ๋ฐฉํฅ์ ๋ฐ๊พผ๋ค.
- ๋ ๋ฒ ํ๋ฆด ๊ฒ์ ํ ๋ฒ๋ง ํ๋ฆฌ๊ฒ ํ๋ค.
90%๊น์ง ์ฑ๋ฅ์ ์ฌ๋ฆด ์ ์์
3๏ธโฃDelayed Branch
์ง์ฐ๋ถ๊ธฐ
: ๋ค์ ์์์ ๋ช ๋ น์ด๋ฅผ ํญ์ ์คํํ๊ณ , ์ค์ ๋ถ๊ธฐ๋ ๊ทธ ๋ช ๋ น์ด๋ฅผ ํ์ดํ๋ผ์ธ์ ๋ฃ๊ณ ๋์ ํ ์ฌ์ดํด ๋ฆ๊ฒ ์ผ์ด๋๋ค.
๋ถ๊ธฐ ์ง์ฐ ์ฌ๋กฏ
- 0์ง์ฐ ๋ถ๊ธฐ ๋ช ๋ น์ด ๋ฐ๋ก ๋ค์ ์ฌ๋กฏ
- ์ปดํ์ผ๋ฌ์ ์ด์ ๋ธ๋ฌ๋ ๋ถ๊ธฐ ์ฌ๋ถ์ ์๊ด ์์ด ํญ์ ์คํ๋๋ ๋ช ๋ น์ด๋ก ์ฑ์ด๋ค.
์ถ๊ฐ์ ์ธ ํ๋์จ์ด ํ์ ์์ง๋ง
ํ์ดํ๋ผ์ธ์ด ๊ธธ์ด์ง๊ณ ํ ๋ฒ์ ๋ช ๋ น์ด๊ฐ ์ฌ๋ฌ ๊ฐ ์ฒ๋ฆฌ๋๊ณ
๋ง์ด ์ฐพ์์ผ ๋๋ ์ํฉ์ด ์๊ธฐ๋๋ฐ ์ด๋์ ์ฝ์ง ์์
์์์๋ ์ ์ ์ฐ์
'2-2 ํ๊ธฐ > Computer Organization' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ปดํจํฐ๊ตฌ์กฐ] Lec22 The Basic of Caches (0) | 2023.12.19 |
---|---|
[์ปดํจํฐ๊ตฌ์กฐ] Lec17, Lec18 Data Hazards (0) | 2023.12.19 |
[์ปดํจํฐ๊ตฌ์กฐ] Lec16 Pipelined Datapath and Control (1) | 2023.12.19 |
[์ปดํจํฐ๊ตฌ์กฐ] Lec15 Pipelining (1) | 2023.11.01 |
[์ปดํจํฐ๊ตฌ์กฐ] Lec12 Datapath Design (0) | 2023.10.30 |