Dynamic branch prediction ์ค๋ช
Dynamic branch prediction์ ์ปดํจํฐ ์ํคํ
์ฒ์์ ์คํ ์ค์ธ ๋ช
๋ น์ด์ ๋ถ๊ธฐ(Branch)๊ฐ ์ค์ ๋ก ๋ฐ์ํ ์ง ์ฌ๋ถ๋ฅผ ์์ธกํ๋ ๋ฐฉ์์
๋๋ค. ํ๋ก๊ทธ๋จ์ ํ๋ฆ ์ ์ด(์กฐ๊ฑด๋ถ ๋ถ๊ธฐ๋ ๋ฐ๋ณต๋ฌธ ๋ฑ)์ ์์ด์ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํ ์ฃผ์ ๊ธฐ๋ฒ ์ค ํ๋๋ก, CPU๊ฐ ๋ช
๋ น์ด ํ์ดํ๋ผ์ธ์์ ๋ถ๊ธฐ ๋ช
๋ น์ด๋ฅผ ๋ฏธ๋ฆฌ ์์ธกํ์ฌ ์ฐ์ฐ์ ๋ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์๊ฒ ํฉ๋๋ค.
์ฃผ์ ํน์ง๊ณผ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํ์คํ ๋ฆฌ ๊ธฐ๋ฐ ์์ธก: CPU๊ฐ ์ด์ ์ ๋ถ๊ธฐ ํจํด์ ๊ธฐ๋กํ์ฌ ํฅํ ๋ถ๊ธฐ๋ฅผ ์์ธกํฉ๋๋ค. ์ด๋ฅผ ์ํด ๋ถ๊ธฐ ํ์คํ ๋ฆฌ ํ
์ด๋ธ(BHT, Branch History Table)๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ, ๋ถ๊ธฐ๊ฐ ์ด์ ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋์๋์ง๋ฅผ ๋ฐํ์ผ๋ก ๋ค์ ๋ถ๊ธฐ ์ฌ๋ถ๋ฅผ ์ถ์ธกํฉ๋๋ค.
- 2-bit ์์ธก๊ธฐ: ๊ฐ๋จํ ํํ๋ก ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฉ์์ผ๋ก, ๋ ๋นํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๊ธฐ์ ๋ฐ์ ์ฌ๋ถ๋ฅผ ์ถ์ ํฉ๋๋ค. ๋ ๋นํธ๋ ๋ค ๊ฐ์ง ์ํ๋ฅผ ๋ํ๋ผ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด โ๊ฐํ๊ฒ ๋ถ๊ธฐโ์ โ์ฝํ๊ฒ ๋ถ๊ธฐโ๋ฅผ ํฌํจํ ์ํ๋ฅผ ์ ์ํ์ฌ ๋ถ๊ธฐ ์์ธก์ ์ ๋ขฐ๋๋ฅผ ํฅ์์ํต๋๋ค.
- ์ฐ๊ด๋ ๋ถ๊ธฐ ํ์คํ ๋ฆฌ: ๋ถ๊ธฐ ํ์คํ ๋ฆฌ์ ๋๋ถ์ด ๊ธ๋ก๋ฒ ๋ถ๊ธฐ ํ์คํ ๋ฆฌ(Global Branch History)๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค. ์ด๋ ํน์ ๋ถ๊ธฐ๋ฟ๋ง ์๋๋ผ ์ด์ ์ ์ฌ๋ฌ ๋ถ๊ธฐ ๋ช
๋ น์ด์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ํ์ฌ ํ์ฌ ๋ถ๊ธฐ๋ฅผ ์์ธกํ๋ ๋ฐฉ์์ผ๋ก, ์ฌ๋ฌ ๋ถ๊ธฐ ๊ฐ์ ์ฐ๊ด์ฑ์ ๋ถ์ํด ๋ ์ ํํ ์์ธก์ด ๊ฐ๋ฅํฉ๋๋ค.
- ํจํด ํ
์ด๋ธ ๊ธฐ๋ฐ์ ์์ธก: ํจํด ํ
์ด๋ธ์ ์ฌ์ฉํ์ฌ ๋ณต์กํ ๋ถ๊ธฐ ํจํด์ ๋ถ์ํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ๋ฌ ๋นํธ ๊ธธ์ด์ ํ์คํ ๋ฆฌ๋ฅผ ์ ์งํ์ฌ, ํน์ ํจํด์ ๋ฐ๋ฅธ ๋ถ๊ธฐ๋ฅผ ์์ธกํ๊ฒ ํฉ๋๋ค.
๋์ ๋ถ๊ธฐ ์์ธก์ ํตํด CPU๋ ๋ถ๊ธฐ ๋ช
๋ น์ด๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ์์ธกํ์ฌ ํ์ดํ๋ผ์ธ์ ํ๋ฆ์ ๋์ง ์๊ณ ์ฐ์์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋ถ๊ธฐ ํ์คํ ๋ฆฌ ํ
์ด๋ธ(BHT, Branch History Table)
๋ถ๊ธฐ ํ์คํ ๋ฆฌ ํ
์ด๋ธ(BHT, Branch History Table)์ CPU๊ฐ ์ด์ ๋ถ๊ธฐ ๋ช
๋ น์ด์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ๋ถ๊ธฐ์ ๋ฐฉํฅ์ ์์ธกํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์
๋๋ค. ์ด๋ ๋ถ๊ธฐ ์์ธก ์ฑ๋ฅ์ ๋์ฌ ํ์ดํ๋ผ์ธ์ ํจ์จ์ฑ์ ํฅ์์ํค๋ ์ค์ํ ์์์
๋๋ค. BHT๋ ์ฃผ๋ก 1๋นํธ ๋๋ 2๋นํธ ์์ธก๊ธฐ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ๋ถ๊ธฐ ๋ช
๋ น์ด์ ๋ํด ํด๋น ๋ถ๊ธฐ๊ฐ ๋ฐ์ํ๋์ง ์ฌ๋ถ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
BHT์ ์๋ ์๋ฆฌ
BHT๋ ๊ฐ๋จํ ๋งํด ๋ถ๊ธฐ ๋ช
๋ น์ด ์ฃผ์์ ๊ทธ ๋ช
๋ น์ด์ ์ต๊ทผ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ํ
์ด๋ธ์
๋๋ค. CPU๋ ํน์ ๋ถ๊ธฐ ๋ช
๋ น์ด์ ์ฃผ์๋ฅผ ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ์ฌ BHT์์ ํด๋น ๋ถ๊ธฐ ๋ช
๋ น์ด์ ํ์คํ ๋ฆฌ๋ฅผ ํ์ธํ๊ณ , ๊ณผ๊ฑฐ์ ํ์คํ ๋ฆฌ ํจํด์ ๋ฐ๋ผ ํ์ฌ์ ๋ถ๊ธฐ๋ฅผ ์์ธกํฉ๋๋ค. ์ด๋ฅผ ํตํด CPU๊ฐ ๋ถ๊ธฐ๊ฐ ๋ฐ์ํ ์ง ์ ํ ์ง๋ฅผ ๋ฏธ๋ฆฌ ์ถ์ธกํด ์ดํ์ ๋ช
๋ น์ด ํ์ดํ๋ผ์ธ์ ์ค๋นํ ์ ์์ต๋๋ค.
BHT์ ๊ตฌ์กฐ์ ์์ธก ๋ฐฉ์
- 1๋นํธ ์์ธก๊ธฐ: ๊ฐ ๋ถ๊ธฐ ๋ช
๋ น์ด๋ง๋ค 1๋นํธ๋ก ๋ถ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํฉ๋๋ค. 1๋นํธ ์์ธก๊ธฐ๋ ๋จ์ํ ๋ง์ง๋ง์ ๋ถ๊ธฐ๊ฐ ๋ฐ์ํ๋์ง ์ฌ๋ถ๋ง ๊ธฐ๋กํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, 1๋นํธ ์์ธก๊ธฐ๊ฐ โ๋ถ๊ธฐ๊ฐ ์ผ์ด๋จโ ์ํ์ ์์ผ๋ฉด ๋ค์ ๋ฒ์๋ ๋ถ๊ธฐ๊ฐ ๋ฐ์ํ๋ค๊ณ ์์ธกํ๊ณ , โ๋ถ๊ธฐ๊ฐ ์ผ์ด๋์ง ์์โ ์ํ์ ์์ผ๋ฉด ๋ค์ ๋ฒ์๋ ๋ถ๊ธฐ๊ฐ ์ผ์ด๋์ง ์๋๋ค๊ณ ์์ธกํฉ๋๋ค.
- ๊ทธ๋ฌ๋, ๋ถ๊ธฐ ์ํ๊ฐ ์์ฃผ ๋ฐ๋๋ ์ํฉ์์๋ ์ ํ๋๊ฐ ๋จ์ด์ง ์ ์์ต๋๋ค.
- 2๋นํธ ์์ธก๊ธฐ: 1๋นํธ ์์ธก๊ธฐ์ ๋จ์ ์ ๋ณด์ํ ๋ฐฉ์์ผ๋ก, ๋ ๋นํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค ๊ฐ์ง ์ํ๋ฅผ ์ ์ํฉ๋๋ค.
- ์ด ๋ค ๊ฐ์ง ์ํ๋ โ๊ฐํ๊ฒ ๋ถ๊ธฐ ๋ฐ์(Strongly Taken)โ, โ์ฝํ๊ฒ ๋ถ๊ธฐ ๋ฐ์(Weakly Taken)โ, โ์ฝํ๊ฒ ๋ถ๊ธฐ ๋ฐ์ ์ ํจ(Weakly Not Taken)โ, โ๊ฐํ๊ฒ ๋ถ๊ธฐ ๋ฐ์ ์ ํจ(Strongly Not Taken)โ์
๋๋ค.
- ๋ถ๊ธฐ ์์ธก์ ์ฑ๊ณต ๋ฐ ์คํจ์ ๋ฐ๋ผ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉฐ, ๋ ๋ฒ ์ฐ์ ํ๋ฆฌ์ง ์์ผ๋ฉด ์ํ๊ฐ ๋ฐ๋์ง ์๊ธฐ ๋๋ฌธ์, ๋ถ๊ธฐ ์์ธก์ ์์ ์ฑ์ ๋์ด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
BHT ์์
๊ฐ๋ น, ๋ค์๊ณผ ๊ฐ์ ๋ถ๊ธฐ ๋ช
๋ น์ด๊ฐ ์๋ค๊ณ ํด๋ด
์๋ค:
- ๋ถ๊ธฐ ๋ช
๋ น์ด ์ฃผ์:
0x01ABF
- ๋ถ๊ธฐ ํ์คํ ๋ฆฌ ํ
์ด๋ธ์ ์ธ๋ฑ์ค: ์ด ์ฃผ์์ ์ผ๋ถ ๋นํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ฑ์คํํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์์ ์๋๋ฆฌ์ค