์ ๋ดํ ๊ต์๋์ด ์ถ์ฒํ ์ฑ
ใ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ชฐ๋๋ ๋ฉํฐ์ฝ์ด CPU ์ด์ผ๊ธฐใ - ๊น๋ฏผ์ฅ ์ง์
์์ ์ฑ ์ ํ ๋๋ก ๊ณต๋ถํ ๋ด์ฉ์ด ์์ฑ๋์์
- ๋ฐ์ดํฐ ๋ณ๋ ฌ์ฑ
: SIMD(Single Instruction Multiple Data) → ๊ฐ์ ๋ช ๋ น์ด๊ฐ ๋ค๋ฅธ ๋ฐ์ดํฐ์ ๊ฐ๊ฐ ์ ์ฉ๋จ
for (int i = 0; i < 4; ++i)
c[i] = a[i] + b[i]; // ๋ฒกํฐ ์์์ ๋ํ ์์
์ ์๋ก ๋
๋ฆฝ์ ์ด๋ค
// SIMD ๋ช
๋ น์ด ์คํ ๊ตฌ์กฐ
// ๋์์ ๋ง์
์ด ์ด๋ฃจ์ด์ง
// A[3] + B[3] -> C[3]
// A[2] + B[2] -> C[2]
// A[1] + B[1] -> C[1]
// A[0] + B[0] -> C[0]
: ๋ฒกํฐ์ ๋ํ ์ฐ์ ๋ฟ๋ง ์๋๋ผ ๋น๊ต, ๋ณํ, ์ ํ ๋ฑ์๋ ์ ๊ณต๋จ
: ๋ช ๋ น์ ์ปดํ์ผ๋ฌ๊ฐ ์ฝ๋๋ฅผ ๋ถ์ํด ์ ํฉํ๋ค๊ณ ํ๋จ๋๋ฉด ์๋์ผ๋ก ์์ฑํ๊ธฐ๋ ํจ (์๋ ๋ฒกํฐํ)
- CPU ์บ์
: ์บ์ → ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ํ๋ก์ธ์์ ์๊ฐ์ , ๊ณต๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ์ค์ด๊ธฐ ์ํ ์์ ๊ธฐ์ต ์ฅ์น
: ์๊ฐ์ ์ง์ญ์ฑ → ์ต๊ทผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฏธ๋์ ๋ค์ ์ฌ์ฉํ ํ๋ฅ ์ด ๋์์ ์๋ฏธ
: ๊ณต๊ฐ์ ์ง์ญ์ฑ → ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์ฌ์ฉ๋๋ค๋ฉด ๊ทธ์ ์ธ์ ํ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๊ฒ ๊ฐ์์ ์๋ฏธ
: ์ผ๋ฐ์ ์ธ ์บ์ ๊ตฌ์กฐ → ์บ์์์ ์ํ๋ ๋ฐ์ดํฐ ํ์ / ์๋ก์ด ๋ฐ์ดํฐ ์ถ๊ฐ / ์ด์ ๋ฐ์ดํฐ ์ค ์ผ๋ถ ๊ต์ฒดํ ์ ์์ด์ผ ํจ
1) ์บ์ ํํธ : ์บ์์ ์ํ๋ ๋ฐ์ดํฐ ๆ
2) ์บ์ ๋ฏธ์ค : ๋ฐ์ดํฐ ๋ชป ์ฐพ์์ ๋ (์ง์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๋ฃ์ด์ผ ํ๋ ๋น์ฉ → ๋ฏธ์ค ํจ๋ํฐ)
3) ํํธ ๋ ์ดํด์ : ์บ์๊ฐ ์ ์คํด ์ํ๋ ์๋ฃ๋ฅผ ๊ฐ์ ธ์ฌ ๋์ ๋น์ฉ
: ์บ์ ๋ผ์ธ → ์ค์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ - ํ๊ทธ(tag) - ์บ์ ์ฐพ๊ธฐ ์ ๋ณด (ํฌ์ธํฐ ๋ฑ) - ์บ์ ๊ต์ฒด ์ ๋ณด (์ธ์ ์ด์ฉ๋๋๊ฐ ๋ฑ) - ๊ธฐํ ์ ๋ณด ํ์
: ์ฃผ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์บ์์์ ์ฐพ๋ ์์ ์ ํด์ ํ ์ด๋ธ ๊ตฌ์กฐ๋ก ๊ตฌํ (SRAM)
1) ์บ์ ๊ฒ์ ๋ฐฉ๋ฒ
- ๋ฐ์ดํฐ ์ฃผ์ ๊ฐ์ด ์ ํด์ง ๋ / ํ๊ทธ๊ฐ ์ต์์ ๋นํธ๋ก ์ ํ๋ ์ด์ ๋ ์บ์ ๋งคํ ์ ์ถฉ๋ ์ ๊ฒ ํ๊ธฐ ์ํจ
: ์ฐ์ ์บ์ ๋ผ์ธ ์ฃผ์๋ฅผ ์บ์๊ฐ ๊ฐ์ง ์ ๋งํผ ๋งคํ → ํ๊ทธ / ์ธ๋ฑ์ค / ์คํ์
: ์ธ๋ฑ์ค → ์ฃผ์ ๊ฐ ์ค ๊ฐ์ด๋ฐ ๋ถ๋ถ & ์ด ๊ฐ์ผ๋ก ์บ์ ๋ผ์ธ ์ฐพ์
: ํ๊ทธ → ์ต์์ ๋นํธ ์ค ๋๋จธ์ง ๋ถ๋ถ & ์บ์ ๋ผ์ธ์ด ๋ด๊ฐ ์ํ๋ ๊ฐ์ด ๋ง๋์ง ํ์ธ
: ์คํ์ → ํ์ ๋นํธ ์ผ๋ถ & ์บ์ ๋ผ์ธ ๋ด์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฅดํด
2) ์บ์ ๋ฐฐ์น ์ ์ฑ
: ์ฃผ์ด์ง ์บ์๋ฅผ ์ ์ฅํ ๋, ๊ฐ์ ์ด๋ฅ์ค๋ฅผ ๊ฐ์ง ์ฌ๋ฌ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์๋ก ์ถฉ๋์ ์ผ์ผํฌ ์ ์๋ค (์บ์๋ฏธ์ค)
: ์ง์ ์ฌ์ ์บ์ → ํ ์ธ๋ฑ์ค์ ์บ์ ๋ผ์ธ ํ๋ ํ ๋น
: ์งํฉ ์ฐ๊ด ์บ์ → ํ ์ธ๋ฑ์ค๊ฐ N๊ฐ์ ์บ์ ๋ผ์ธ ๋ด์์ ๋์ํ ์ ์์ (N๊ฐ์ ์บ์ ๋ผ์ธ์ ํ๋์ ์ธํธ๋ฅผ ์ด๋ฃธ)
: ์์ ์ฐ๊ด ์บ์ → ์บ์ ์ด๋์๋ ํ ๋นํ ์ ์์
3) ์บ์ ๊ต์ฒด ์ ์ฑ
: ์ง์ ์ฌ์ ์บ์์์๋ ์๋ฏธ๊ฐ ์์ผ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์์๋ ์ต๋ N๊ฐ ์ค ํ๋๋ฅผ ๊ณจ๋ผ์ผ ํจ์ผ๋ก ํ์ํจ
: LRU(Last Recently Used) → ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉ๋์ง ์์ ์บ์ ๋ผ์ธ ์ญ์
: LFU(Last Frequently Used) → ์ ๊ทผ ๋น๋์ ๋ฐ๋ผ ์ญ์
4) ์บ์ ์ฐ๊ธฐ ์ ์ฑ
: write-through ์ ์ฑ → ๋ฉ๋ชจ๋ฆฌ/์๋ ๊ณ์ธต์ ์บ์๋ก ๋ฐ๋ก ๋ฐ์ ๊ฐ๋ฅ (๋ ์ดํด์๊ฐ ๊น)
: write-back ์ ์ฑ → ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์๋ค๊ฐ ๋์ค์ ์บ์์์ ๋๊ฐ ๋ ๋ฐ์ํจ (๊ตฌํ์ ์ด๋ ค์ → ๋ํฐ ๋นํธ ์กด์ฌ)
: ์บ์์ ์ฑ๋ฅ → ์ ๊ทผ ์๊ฐ์ผ๋ก ํํ ๊ฐ๋ฅํจ
: ํ๊ท ์ ๊ทผ ์๊ฐ = ํํธ ๋ ์ดํด์ + ๋ฏธ์ค ๋น์จ = ์บ์ ๋ฏธ์ค/(์บ์ ๋ฏธ์ค+์บ์ ํํธ) * ๋ฏธ์ค ํจ๋ํฐ
: ์บ์๋ ๋ณดํต ํ๋๊ฐ ์๋ L1, L2, L3 ๋ฑ ๊ณ์ธต์ผ๋ก ๋์ด ์๋ค → ๋ฉ๋ชจ๋ฆฌ ๋ ์ดํด์ ์ ํ
- ๋ฉํฐ์ฝ์ด
: ๊ฐ ์ฝ์ด์ ๋ช ๋ น์ด ๋ฐ ๋ฐ์ดํฐ ์ผ์ฐจ ๋ ๋ฒจ ์บ์๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋ค์ด์์
: L2 → ๋ ๋ฆฝ์บ์, L3 → ๋๋ถ๋ถ ๊ณต์ ์บ์
: ์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ ์ฌ์ด, ์ผ๊ด์ฑ ๋ฌธ์ ๋๋ (์ฝํ๋ฐ์ค ๋ฌธ์ ) → ์ฝ์ด๋ฅผ ๊ณ ๋ คํ ํ๋ก๊ทธ๋๋ฐ ํ์
'๐ค Study > ์ปดํจํฐ ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฉํฐ์ฝ์ดCPU] 08. ๋ฉ๋ชจ๋ฆฌ ๋ช ๋ น ์คํ ์๊ณ ๋ฆฌ์ฆ & ํ๋ฆฌํซ์ฒ (0) | 2024.04.11 |
---|---|
[๋ฉํฐ์ฝ์ดCPU] 07. ๋ถ๊ธฐ๋ฌธ & ๊ฐ์ํจ์ (0) | 2024.04.09 |
[๋ฉํฐ์ฝ์ดCPU] 05. ํ์ดํผ์ค๋ ๋ฉ / ์นฉ ๋ฉํฐ ํ๋ก์ธ์ (0) | 2024.04.03 |
[๋ฉํฐ์ฝ์ดCPU] 04. ๋ช ๋ น์ด ํ์ดํ๋ผ์ธ & ๋น์์ฐจ ์คํ (0) | 2024.03.31 |
[๋ฉํฐ์ฝ์ดCPU] 03. ์์กด์ฑ๊ณผ ํ๋ก์ธ์ ๊ธฐ๋ณธ ๋์ (0) | 2024.03.29 |