* ๋ฉ๋ชจ๋ฆฌ = ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ
๋ฒํผ
๋ฒํผ(buffer)๋ ์ผ์ ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์ ์ฎ๊น์ผ๋ก์จ ๋ ์ฅ์น ๊ฐ ์๋์ ์ฐจ์ด๋ฅผ ์ํํ๋ ์ญํ ์ ํ๋ค. ๋ฒํผ์ ์ฉ๋์ด ํด ์๋ก ์๋๊ฐ ๋น ๋ฅด๋ค.
๋ฒํผ๊ฐ ๋ค ์ฑ์์ง ๋๊น์ง ์ ์ฅ์ฅ์น ๊ฐ์ ๋ฐ์ดํฐ ์ ์ก์ด ์ง์ฐ๋๊ธฐ ๋๋ฌธ์ ์ฐ๊ฒฐ๋ ํ๋์จ์ด ์ ๊ฑฐ์ ๋ฐ์ดํฐ ์์ค ๋ฑ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์ผ๋ฏ๋ก ์ฃผ์ํด์ผ ํ๋ค.
์: ํ๋๋์คํฌ์ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ, ๋์์ ์คํธ๋ฆฌ๋ฐ์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๋ฒํผ
์คํ
SPOOL, Simultaneous Peripheral Operation On-Line์ ์ฝ์. CPU์ ์ ์ถ๋ ฅ์ฅ์น๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๋๋ก ๊ณ ์๋ ์ํํธ์จ์ด์ ์ธ ๋ฒํผ์ด๋ค.
๋ํ์ ์ผ๋ก ํ๋ฆฐํฐ์ ์คํ๋ฌ๊ฐ ์๋ค.
์คํ๋ฌ(spooler): ์ธ์ํ ๋ด์ฉ์ ์์ฐจ์ ์ผ๋ก ์ถ๋ ฅํ๋ ์ํํธ์จ์ด์ด๋ฉฐ ์ถ๋ ฅ ๋ช ๋ น์ ๋ด๋ฆฐ ํ๋ก๊ทธ๋จ๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๋ค. ํ๋ฒ์ ํ๋์ ํ๋ก๊ทธ๋จ์ด ๋ ์ ํ๋(ํ๋ฒ์ ํ๊ฐ์ง์ ์ธ์๋ง ๊ฐ๋ฅํ), ํ๋ก๊ทธ๋จ ๊ฐ์ ๋ฐฐํ์ ์ธ ์ฑ์ง์ ๊ฐ์ง๋ค.
์บ์
์บ์(cache)๋ CPU ๋ด๋ถ์ ์์นํ๋ ๋ฒํผ์ ์ผ์ข ์ผ๋ก, *๋ฉ๋ชจ๋ฆฌ์ CPU๊ฐ์ ์๋ ์ฐจ์ด๋ฅผ ์ํํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์(prefetch) ์ ์ฅํด๋๋ ์์ ๊ณต๊ฐ์ด๋ค. ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ค๋ ๋ฐ์ดํฐ๋ CPU๊ฐ ์์ผ๋ก ์ฌ์ฉํ ๊ฒ์ด๋ผ ์์๋๋ ๊ฒ๋ค์ด๋ค.
SRAM์ ์ฃผ๋ก ์ฌ์ฉํ๋ ์บ์๋ ๊ณ ๊ฐ์ด๊ธฐ์ ์ฉ๋์ ๋๋ฆฌ๊ธฐ ํ๋ค๋ค.
* CPU์ ์๋ > ๋ฉ๋ชจ๋ฆฌ์ ์๋
CPU๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ํ์ํ ์ํฉ์ ๋จผ์ ์บ์์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋๋ค.
- cache hit: CPU๊ฐ ์บ์์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๊ฒฝ์ฐ
- cache miss: CPU๊ฐ ์บ์์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ง ๋ชปํ ๊ฒฝ์ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ค.
- ์บ์ ์ ์ค๋ฅ (cache hit ratio): ์บ์ ํํธ๊ฐ ๋๋ ๋น์จ. ์บ์์ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ์์ผ๋ก ๋ง์ด ์ฌ์ฉ๋ ๊ฐ๊น์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ ์ค๋ฅ ์ ๋์ผ ์ ์๋ค.
์บ์์ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ํ๋ ๋ฐฉ์
- ์ฆ์ ์ฐ๊ธฐ(write through): ์บ์์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ฆ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ํ๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผ ์ ๊ทผํ๊ธฐ์ ์ฑ๋ฅ์ด ๋๋ ค์ง๋, ๋ฉ๋ชจ๋ฆฌ์ ์ต์ ๊ฐ์ด ํญ์ ์ ์ง๋์ด ๋ฐ์ดํฐ ์์ค์ ๋ํ ์์ ์ฑ์ด ๋ณด์ฅ๋๋ค.
- ์ง์ฐ ์ฐ๊ธฐ(write back, copy back): ์บ์์ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ๋ชจ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ํ๋ค. ๋ฉ๋ชจ๋ฆฌ์ ๋ ์ ๊ทผํ์ฌ ์ฑ๋ฅ์ด ํฅ์๋ ์ ์์ผ๋, ๋ฉ๋ชจ๋ฆฌ์ ์บ์ ์ฌ์ด์ ๋ฐ์ดํฐ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ์ ์๋ค.
์บ์์ ์ข ๋ฅ
โ ํ๋ก๊ทธ๋จ ๋ช ๋ น์ด๋ ๋ช ๋ น์ด ๋ถ๋ถ๊ณผ ๋ฐ์ดํฐ ๋ถ๋ถ(์์ ๋์)์ผ๋ก ๋๋๋ค.
- ์ผ๋ฐ ์บ์, L2(Level 2) ์บ์: ๋ช ๋ น์ด์ ๋ฐ์ดํฐ์ ๊ตฌ๋ถ ์์ด ๋ชจ๋ ์๋ฃ๋ฅผ ๊ฐ์ ธ์จ๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์ฐ๊ฒฐ๋๋ค.
- ํน์ ์บ์, L1(Level 1) ์บ์: ๋ช ๋ น์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถํ์ฌ ๊ฐ์ ธ์จ๋ค. CPU ๋ ์ง์คํฐ์ ์ง์ ์ฐ๊ฒฐ๋๋ค.
์น ๋ธ๋ผ์ฐ์ ์บ์: ๋ฐฉ๋ฌธํ๋ ์ฌ์ดํธ์ ์ด๋ฏธ์ง์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ดํ์ฌ ์ฌ๋ฐฉ๋ฌธ ์ ์๋๋ฅผ ๋์ธ๋ค. ๊ทธ๋ฌ๋ ์ ์ฅ๋ ์บ์ ๋ฐ์ดํฐ๊ฐ ๋๋ฌด ๋ง์ผ๋ฉด ์คํ๋ ค ์น๋ธ๋ผ์ฐ์ ์ ์๋๋ฅผ ์ ํ์ํฌ ์ ์๊ธฐ ๋๋ฌธ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋น์ฐ๋ ๊ฒ์ด ์ข๋ค.
์ ์ฅ์ฅ์น์ ๊ณ์ธต๊ตฌ์กฐ
<ํ๊ณ์ >
- SSD๋ ํ๋๋์คํฌ(HDD)๋ณด๋ค ๋น ๋ฅด์ง๋ง, ์๋์ ์ผ๋ก ๋งค์ฐ ๊ณ ๊ฐ์ด๋ค.
- ์บ์ ๋ํ ๋งค์ฐ ๊ณ ๊ฐ์ด๊ธฐ์ ํฐ ์ฉ๋์ ๊ฐ์ง๊ธฐ ํ๋ค๋ค.
<ํด๊ฒฐ>
์ ์ฅ์ฅ์น ๊ตฌ์กฐ๋ฅผ ์๋๊ฐ ๋น ๋ฅด๊ณ ๊ฐ์ด ๋น์ผ ์ฅ์น์ผ์๋ก CPU ๊ฐ๊น์ด, ๊ฐ์ด ์ธ๊ณ ์ฉ๋์ด ํฐ ์ ์ฅ์ฅ์น์ผ ์๋ก CPU์ ๋ฉ๋ฆฌ ๋ฐฐ์นํ์ฌ ์๋์ฐจ๋ฅผ ์ต์ํํ๋ค.
๋ค๋ง ์บ์์ ๋ฒํผ ์ฌ์ฉ์ ์์ด์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๊ฒ์ด ์ค์ํ ๋ฌธ์ ์ด๋ค.
์ธํฐ๋ฝํธ
์ ์ถ๋ ฅ ๊ด๋ฆฌ์๊ฐ CPU์ ๋ณด๋ด๋ ์ ์ถ๋ ฅ ์๋ฃ ์ ํธ๋ฅผ ์ธํฐ๋ฝํธ๋ผ๊ณ ํ๋ค.
์ค์ ๋ค์ํ ์ข ๋ฅ์ ์ธํฐ๋ฝํธ๊ฐ ์กด์ฌํ๋ค. ์ด๊ณณ์์ ์ ์ถ๋ ฅ ์๋ฃ ์ธํฐ๋ฝํธ๋ง ๋ค๋ฃฌ๋ค.
CPU๊ฐ ์ ์ถ๋ ฅ์ฅ์น์ ์ง์ ์ ๊ทผํ๋ ํด๋ง(polling) ๋ฐฉ์์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ์ธํฐ๋ฝํธ ๋ฐฉ์์ด ๋ฑ์ฅํ๋ค.
๊ณผ์
CPU๊ฐ ์ ์ถ๋ ฅ ๊ด๋ฆฌ์์๊ฒ ์ ์ถ๋ ฅ ๋ช ๋ น์ ๋ณด๋ด๋ฉด ์ ์ถ๋ ฅ ๊ด๋ฆฌ์๊ฐ ์ด๋ฅผ ์ํํ๊ณ , ์๋ฃ ์ ํธ(์ธํฐ๋ฝํธ)๋ฅผ CPU์๊ฒ ์ ๋ฌํ๋ค. CPU๋ ๋ค๋ฅธ ์ผ์ ํ๋ค๊ฐ ์ธํฐ๋ฝํธ ์ ํธ๋ฅผ ๋ฐ์ผ๋ฉด ํ๋ ์์ ์ ์ค๋จํ๊ณ ์ ์ถ๋ ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
์ฅ์
- CPU๋ ๋ณธ๋์ ์ญํ ์ธ ๋ช ๋ น์ด ํด์๊ณผ ์คํ์ ๋ชฐ๋ํ ์ ์๋ค.
- CPU์ ์์ ๊ณผ ์ ์ฅ์ฅ์น์ ๋ฐ์ดํฐ ์ด๋์ ๋ ๋ฆฝ์ ์ผ๋ก ์ด์ํ์ฌ ์์คํ ์ ํจ์จ์ ๋์ธ๋ค.
์์ฑ
- ์ธํฐ๋ฝํธ ๋ฒํธ: ์๋ฃ ์ ํธ๋ฅผ ๋ณด๋ผ ๋ ์ฅ์น์ ์ด๋ฆ ๋์ ์ฌ์ฉํ๋ ์ฅ์น์ ๊ณ ์ ๋ฒํธ๋ก, OS๋ง๋ค ๋ค๋ฅด๋ค(Windows OS์ ๊ฒฝ์ฐ IRQ๋ผ๊ณ ๋ถ๋ฅธ๋ค).
- ์ธํฐ๋ฝํธ ๋ฒกํฐ: ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ์ ํจ์จ์ ์ํด ์ฌ๋ฌ ๊ฐ์ ์ธํฐ๋ฝํธ๋ฅผ ํ๋์ ๋ฐฐ์ด๋ก ๋ง๋ ํํ
- ์ง์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ(DMA): ์ ์ถ๋ ฅ ๊ด๋ฆฌ์๊ฐ CPU์ ํ๋ฝ์์ด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๋ ๊ถํ(์๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ CPU๋ง ์ ๊ทผ ๊ถํ์ ๊ฐ์ง ์์ ๊ณต๊ฐ์ด๋ค)์ ๋งํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๋งคํ ์ ์ถ๋ ฅ(MMIO): CPU๊ฐ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ์ ์ง์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ํตํด ๋ค์ด์ค๋ ๋ฐ์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋๋์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก, ๋ฉ๋ชจ๋ฆฌ์ ์ผ์ ๊ณต๊ฐ์ ์ ์ถ๋ ฅ์ ํ ๋นํ๋ ๊ธฐ๋ฒ์ ๋งํ๋ค.
- ์ฌ์ดํด ํ์น๊ธฐ(cycle stealing): CPU์ ์ง์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ๋์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ๋ ์๋๊ฐ ๋ ๋น ๋ฅธ CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๊ถํ์ ์๋ณดํ๋ ๊ฒ์ ๋งํ๋ค. CPU์๊ฒ๋ ์ง์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ์ฌ์ดํด(์์)๋ฅผ ํ์ณ๊ฐ ๊ฒ์ผ๋ก ๋ณผ ์ ์๋ค.
์ถ์ฒ: <์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์ด์์ฒด์ >, ํ๋น ์์นด๋ฐ๋ฏธ