๋ฉ๋ชจ๋ฆฌ ์์คํ
์ ์๋ก ๋ค๋ฅธ ์ฉ๋, ๊ฐ๊ฒฉ, ์ ๊ทผ ์๊ฐ์ ๊ฐ์ง๋ ์ ์ฅ์ฅ์น๋ค์ ์๊ณ(hierarchy)๋ก ๊ตฌ์ฑ๋์ด ์๋ค. CPU cycle ์๋ก ๋ฐ์ ธ๋ณด๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ๋ค.
- CPU register (0 cycle) < Cache (4~75) < Main memory(์ ๋ฐฑ ์ฌ์ดํด) <<< Disk (์ ์ฒ๋ง ์ฌ์ดํด)
6.1. Storage Technologies
Random Access Memory(RAM)
DRAM๊ณผ SRAM
SRAM์ Static RAM์ ์ฝ์๋ก, โbistableโํ ํน์ง์ ๊ฐ์ง๋ค. ์ฆ, LOW ๋๋ HIGH voltage๋ฅผ ํญ์ ์ ์งํ๋ ค ํ๊ณ , ๋ค๋ฅธ voltage๊ฐ ์ฃผ์ด์ง๋ฉด ๋ ์ค ํ๋๋ก ์๋ ดํ๋ค. SRAM์ ํธ๋์ง์คํฐ 6๊ฐ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ด ๋๋ฌธ์ ๊ฐ๊ฒฉ์ด DRAM๋ณด๋ค ๋น์ธ๋ค. Bistablity๋ก ์ ์์ด ์ผ์ ธ ์๋ ํ disturbance๊ฐ ์์ด๋ ์ ์ํ๋ก ๋ณต์๋๋ค. ๋๋ฌธ์ refreshing์ด ํ์ํ์ง ์์ ์๋๊ฐ DRAM๋ณด๋ค ๋น ๋ฅด๋ค.
๋ฐ๋ฉด Dynamic RAM(DRAM)์ ์บํจ์ํฐ์ ์ ํ ํํ๋ก ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค. ์ด ๋๋ฌธ์ SRAM๋ณด๋ค disturbance์ ์ทจ์ฝํ๋ค. DRAM์ ๊ฐ๋งํ ๋๋ฉด leakage current ๋๋ฌธ์ ์ ํ๊ฐ ๊ณ์ ์์ค๋์ด ์ ์์ด ๋ฎ์์ง๋ค. ๋ฐ๋ผ์ ์ฃผ๊ธฐ์ ์ผ๋ก refresh๋ฅผ ํด์ฃผ์ด์ผ ํด ์๋๊ฐ ๋๋ฆฌ๋ค. ๋ฐ๋ฉด ํธ๋์ง์คํฐ๋ฅผ 2๊ฐ๋ง ์ฌ์ฉํด ๊ฐ์ด ์ธ๊ณ ์ฉ๋์ด SRAM๋ณด๋ค ํฌ๋ค.
์ ํต์ DRAM์ ๊ตฌ์กฐ
Conventional DRAM์ $d$๊ฐ์ supercell์ ๊ฐ๊ฐ $w$๊ฐ์ DRAM cell์ด ๋ค์ด์์ด, ์ด $dw$ bit์ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์๋ ๋ฐฉ์์ด๋ค.
- supercell์ $r \times c$์ 2์ฐจ์์ผ๋ก ๋ฐฐ์ด๋์ด ์๋ค. ($d=r\times c$).
-
๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ๊ฐ ์ฐ๊ฒฐ๋์ด ์์ด ํ๋ฒ์ $w$๋นํธ์ฉ์ ์ ์ก/์์ ํ ์ ์๊ฒ ๋์ด ์๋ค.
e.g. $(i, j)$ supercell์์ ์ ๋ณด๋ฅผ ์ฝ์ด์ค๋ ค๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ๋ก $i$๋ฅผ ๋ณด๋ธ ํ(RAS, row access strobe) $j$๋ฅผ ๋ณด๋ธ๋ค(CAS, column access strobe)
- ์ด๋ address pin์ ๊ฐ์๋ฅผ ์ค์ด๊ธฐ ์ํจ์ผ๋ก, ์๊ฐ์ ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ๋จ์ ์ด ์๋ค
- Memory Module: DRAM์ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋๋ก ํจํค์ง๋์ด ์๋ค. ์๋ฅผ ๋ค์ด 64MB module์ด ์๋ค๋ฉด, 8Mb x 8 = 64Mb์ DRAM chip์ 8๊ฐ ์ฌ์ฉํ์ฌ 8๊ฐ๊ฐ ๊ฐ๊ฐ 0~7๋ฒ์งธ ๋นํธ, 8~15๋ฒ์งธ ๋นํธ, โฆ, 56~63๋ฒ์งธ ๋นํธ๋ฅผ ๋ด๋นํ๋๋ก ํ๋ ์์ด๋ค.
Enhanced DRAM
๋ฉ๋ชจ๋ฆฌ ๊ธฐ์ ์ด ๋ฐ์ ํ๋ฉด์ conventional DRAM์ ํฐ ํ ์์ฒด๋ ๋ณํ์ง ์์ ์ฑ๋ก ์กฐ๊ธ์ฉ์ ๋ณํ์ด ์ถ๊ฐ๋๋ฉด์ SDRAM, DDR SDRAM ๋ฑ์ด ๋ฑ์ฅํ์๋ค. ์์ธํ ๋ถ๋ถ์ pp. 621-622์ ๋์์๋ค.
๋นํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ
๋นํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ(Nonvolatile Memory)๋ ์ญ์ฌ์ ์ธ ์ด์ ๋ก Read-Only Memory(ROM)์ผ๋ก ๋ถ๋ ค์์ผ๋, ์ค์ ๋ก๋ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํ ๊ฒ๋ ์๋ค. ๋ํ์ ์ผ๋ก PROM, EPROM, EEPROM, Flash Memory, SSD ๋ฑ์ด ๋นํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ์ ์ํ๋ค.
ROM ์ฅ์น์ ์ฃผ๋ก ์ ์ฅ๋๋ ํ๋ก๊ทธ๋จ ์ค์๋ ํ์จ์ด(firmware)๊ฐ ์์ผ๋ฉฐ, BIOS ๋ฑ ์ปดํจํฐ๊ฐ ์ฒ์ ์ผ์ง ๋ ์๋ํ๋ ํ๋ก๊ทธ๋จ๋ค์ด ์ฃผ๋ก ์ฌ๊ธฐ์ ์ํ๋ค.
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก์ ์ ๊ทผ
DRAM๊ณผ ํ๋ก์ธ์๊ฐ์ ๋ฐ์ดํฐ ์ ์ก์ Bus๋ฅผ ํตํด ๋ฐ์ํ๋ค. ์ด๋ฅผ Bus transaction์ด๋ผ๊ณ ํ๋ค.
- bus๋ ์ฃผ์๋ ๋ฐ์ดํฐ, control signal์ ์ฎ๊ธฐ๋, ๋ณ๋ ฌ๋ก ์ฐ๊ฒฐ๋ wire๋ค์ ์งํฉ์ด๋ค.
- ์ฃผ์์ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ ๋ฒ์ค๋ฅผ ์ฌ์ฉํ ์๋, ๋ค๋ฅธ ๋ฒ์ค๋ฅผ ์ฌ์ฉํ ์๋ ์์ผ๋ฉฐ ์ฌ๋ฌ ๊ฐ์ ์ฅ์น๊ฐ ๊ฐ์ ๋ฒ์ค๋ฅผ ๊ณต์ ํ ์๋ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ํ๋ก์ธ์์ DRAM ์ฌ์ด์ ์ฐ๊ฒฐ์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋์ด ์๋ค.
๊ทธ๋ฆผ์ ๋์์๋ฏ์ด,
- ์์คํ
๋ฒ์ค: CPU์ I/O bridge๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฒ์ค
- ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ค: I/O bridge์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฒ์ค
์ด๋ฉฐ, I/O bridge๋ ์ค๊ฐ์์ ์์คํ
๋ฒ์ค์ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ค์ ์ ํธ๋ฅผ ์๋ก ๋ฒ์ญํด์ฃผ๋ ์ญํ ์ ํ๋ค. DRAM์ ์ ๊ทผ์ ์ฌ์ฉ๋์๋ ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ ๋ํ I/O bridge์ ์ผ๋ถ์ด๋ค.
์๋ฅผ ๋ค์ด์, ํ๋ก์ธ์๊ฐ movq A, %rax
๋ผ๋ load instruction์ ์ฝ๋๋ค๊ณ ํ๋ฉด,
- CPU๊ฐ address A๋ฅผ ์์คํ
๋ฒ์ค์ ๋๊ณ ,
- I/O bridge๊ฐ ์ด๋ฅผ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ค๋ก ์ ๋ฌํ๋ฉฐ
- ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๊ฐ A์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ๋ค์ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ค๋ฅผ ํตํด ์ ๋ฌํ๋ฉด
- I/O bridge๊ฐ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ํธ๋ฅผ ๋ฒ์ญํด
%rax
๋ก ๊ฐ์ ๋ณต์ฌํด์ฃผ๋ ์์ผ๋ก ์๋ํ๋ค.
๋์คํฌ ์ ์ฅ์ฅ์น
๋์คํฌ์ ๊ตฌ์กฐ๋ ์์ ๊ทธ๋ฆผ์ฒ๋ผ ๊ตฌ์ฑ๋์ด ์๋ค. ์ด๋ ๋์คํฌ์ ์ฉ๋์ ๊ฒฐ์ ํ๋ ๋ณ์๋ค์๋
- ๊ธฐ๋ก ๋ฐ๋(recording density): ํธ๋์ ๋จ์๊ธธ์ด๋น ๊ธฐ๋ก๋๋ ๋นํธ์ ์
- ํธ๋ ๋ฐ๋(track density): ๋ฐ์ง๋ฆ์ ๋จ์๊ธธ์ด๋น ํธ๋์ ์
- ๋ฉด์ ๋ฐ๋(areal density): ์ ๋์ ๊ณฑ
๋ฑ์ด ์๋ค.
๋์คํฌ๊ฐ ์ฝ๊ณ ์ฐ๋ ๋์ ์ํํ ๋๋, actuator arm์ ๋ฌ๋ฆฐ Read/write head๊ฐ ์ด๋ฅผ ๋ด๋นํ๊ฒ ๋๋ค. ์ฝ๊ธฐ์ ์ฐ๊ธฐ๋ ์นํฐ ํฌ๊ธฐ์ ๋ธ๋ก ๋จ์๋ก ์ํ๋๋ฉฐ, ์ฝ๊ธฐ/์ฐ๊ธฐ ์๋์ ์ํฅ์ ๋ฏธ์น๋ ๋ค์์ 3์์๊ฐ ์กด์ฌํ๋ค.
- seek time: ํค๋๊ฐ ๋ชฉํ ์์น ์์ ์๋ฆฌ์ก๊ธฐ๊น์ง ์์๋๋ ์๊ฐ์ผ๋ก, ์ด์ ์์น์ ์์กดํ๋ค
- rotational latency: ํธ๋์ ์ฒซ ๋นํธ๋ฅผ ์ฐพ์์ผ ํ๋๋ฐ ๊ฐ๋ฐ์ ์ฐจ๋ก ๋์ณค๋ค๋ฉด ํ ๋ฐํด๋ฅผ ๋ค์ ๋์์ผ ํ๋ค. $$T_{max.rot}=1/RPM$$์ผ๋ก ๊ณ์ฐ๋๋ฉฐ, ํ๊ท ์ ์ผ๋ก๋ $T_{avg.rot}=\frac{1}{2}T_{max.rot}$์ด๋ค.
- transfer time: ํ ์นํฐ ๋ด์์ ์ด๋ํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ผ๋ก,
$T_{max.rot} = \frac{1}{RPM}\frac{1}{ํธ๋๋น ์นํฐ์ ์}$์ด๋ค.
๋์คํฌ๋ ์ด๋ฌํ ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ OS๋ก๋ถํฐ ์จ๊ธฐ๊ณ ์นํฐ ํฌ๊ธฐ์ logical disk block $B$๊ฐ๋ฅผ OS์ ์ ๊ณตํ๋ค. ๋์คํฌ ์ปจํธ๋กค๋ฌ๋ ์ด๋ฅผ ์ค์ ๋ฌผ๋ฆฌ์ ๋์คํฌ์ ๋งคํํ๋ ์ญํ ์ ์ํํ๋ค.
I/O ์ฅ์น์ ์ฐ๊ฒฐ
์ปดํจํฐ ์์คํ
์ ๋ณดํต ๋ค์ํ third-party I/O ์ฅ์น๋ฅผ ์ง์ํ๋ฉฐ,
๋์คํฌ๋ฅผ ํฌํจํด ํค๋ณด๋, ๋ง์ฐ์ค, ๊ทธ๋ํฝ ์นด๋ ๋ฑ์ I/O ์ฅ์น๋ I/O ๋ฒ์ค๋ฅผ ํตํด ์์คํ
์ ์ฐ๊ฒฐ๋๋ค. CPU-specificํ ์์คํ
๋ฒ์ค, ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ค์๋ ๋ฌ๋ฆฌ I/O ๋ฒ์ค๋ CPU์ ๋ฌด๊ดํ ๊ท๊ฒฉ์ด๋ค.
I/O ๋ฒ์ค๋ ์์คํ
๋ฒ์ค๋ ๋ฉ๋ชจ๋ฆฌ ๋ฒ์ค๋ณด๋ค๋ ๋๋ฆฌ์ง๋ง ํจ์ฌ ๋ค์ํ ์ฅ์น๋ฅผ ์ฐ๊ฒฐํ ์ ์๋๋ก ์ค๊ณ๋์ด ์๋ค. ๊ทธ๋ฆผ์๋ ์ธ ์ข
๋ฅ์ ์ฅ์น๊ฐ I/O ๋ฒ์ค์ ์ฐ๊ฒฐ๋์ด ์๋ค.
- USB(Universal Serial Bus) ์ปจํธ๋กค๋ฌ: peripheral device๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐ ๊ฐ์ฅ ๋ณดํธ์ ์ธ ๊ท๊ฒฉ
- Graphics adapter
- Host bus adapter: host bus interface๋ผ๋ ๊ท๊ฒฉ์ ๋ฐ๋ผ์ ํ๋ ์ด์์ ๋์คํฌ๋ฅผ ์ฐ๊ฒฐํ๋ ์ญํ ์ ํ๋ค. ๋ํ์ ์ผ๋ก ๋ง์ด ์ฐ์ด๋ host bus interface์๋ SATA์ SCSI๊ฐ ์๋ค.
- ์ผ๋ฐ์ ์ผ๋ก SCSI๊ฐ SATA๋ณด๋ค ๋น ๋ฅด๋ฉฐ, SATA๊ฐ ํ๋์ ๋์คํฌ๋ง์ ์ฐ๊ฒฐํ ์ ์๋ ๋ฐ ๋นํด SCSI๋ ์ฌ๋ฌ ๊ฐ์ ๋์คํฌ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค
๋์คํฌ ๋ฐ์ดํฐ์ ์ ๊ทผ
CPU๋ I/O ์ฅ์น์ ๋ช
๋ น์ ๋ด๋ฆฌ๊ธฐ ์ํด Memory-mapped I/O๋ผ๋ ํ
ํฌ๋์ ์ฌ์ฉํ๋ค. Memory-mapped I/O์์, CPU๋ address space์ ์ผ๋ถ๋ฅผ I/O ์ฅ์น์์ ํต์ ์ ์ํด ํ ๋นํ๋ค. ์ฌ๊ธฐ์ ํ ๋น๋ ์ฃผ์๋ค์ I/O port๋ผ๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ์ค 0xa0
๋ถํฐ 0xaf
๊น์ง๋ ์ค์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๊ณ ์ฌ๊ธฐ์ ์ฝ๊ธฐ/์ฐ๊ธฐ๋ฅผ ํ๋ฉด I/O ์ฅ์น๊ฐ ๋์ํ๋ ์์ด๋ค.
๋์คํฌ์ ํ ์นํฐ๋ฅผ ์ฝ๋ ๊ฒ์ ์๋ก ๋ค์ด๋ณด์.
- CPU๊ฐ
0xa0
์ ์ธ ๋ฒ์ store operation์ ํ๋ค. ์ด๋ ๊ฐ๊ฐ initialize, logical block ๋ฒํธ, ํด๋น ๋์คํฌ ์นํฐ๊ฐ ์ ์ฅ๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ์์ ์์น๋ฅผ ๋ํ๋ธ๋ค
- ๋์คํฌ๊ฐ ์ฝ๊ธฐ ์์
์ ์ํํ๋ ๋์ CPU๋ ๋ณดํต ๋ค๋ฅธ ์์
์ ์ํํ๋ค.
- ๋์คํฌ ์ปจํธ๋กค๋ฌ๋ CPU๋ก๋ถํฐ ๋ช
๋ น์ ๋ฐ์ logical block ๋ฒํธ๋ฅผ ์นํฐ ์ฃผ์๋ก ๋ฒ์ญํ๊ณ ์นํฐ๋ฅผ ์ฝ์ด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์จ๋ค. ์ด ๊ณผ์ ์์๋ CPU๊ฐ ๊ฐ์
๋์ง ์๊ณ ์ ๋ถ I/O ์ฅ์น๊ฐ ์ค์ค๋ก ์ํํ๋๋ฐ, ์ด๋ฅผ Direct Memory Access(DMA)๋ผ ํ๋ฉฐ ๋ฐ์ดํฐ์ ์ ์ก์ DMA transfer๋ผ๊ณ ํ๋ค.
- DMA transfer๊ฐ ๋๋ ๋์คํฌ ์นํฐ์ ๋ด์ฉ์ด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ฎ๊ฒจ์ง๋ฉด ๋์คํฌ ์ปจํธ๋กค๋ฌ๋ CPU์ ์ธํฐ๋ฝํธ ์ ํธ๋ฅผ ๋ณด๋ด ์๋ฆฐ๋ค.
Solid State Disk(SSD)
SSD๋ ํ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ์ ์ฅ์ฅ์น๋ก, I/O ๋ฒ์ค์ ์ฐ๊ฒฐ๋์ด ๋์คํฌ์ ๋์ผํ ํ๋์ ํ๋ค.
- ๋์คํฌ์ ๋์คํฌ ์ปจํธ๋กค๋ฌ๊ฐ ์กด์ฌํ๋ฏ, SSD์๋ ์ด์ ๋์๋๋ ์ญํ ์ ํ๋ flash translation layer๊ฐ ์์ด ์ญํ ์ ์ํํ๋ค
- SSD๋ ์ฌ๋ฌ ๋ธ๋ก(block)์ผ๋ก ๊ตฌ์ฑ๋๊ณ , ๊ฐ ๋ธ๋ก์ ์ฌ๋ฌ ๊ฐ์ ํ์ด์ง(page)๋ก ๊ตฌ์ฑ๋๋ค.
- SSD๋ ์ฝ๊ธฐ๋ณด๋ค ์ฐ๊ธฐ๊ฐ ๋๋ฆฌ๋ค๋ ํน์ง์ ๊ฐ์ง๋๋ฐ, ์ด๋ ๋ฐ์ดํฐ๋ฅผ ํ์ด์ง ๋จ์๋ก๋ง ์ฝ๊ณ ์ธ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฐ๊ธฐ๋ฅผ ํ๋ ค๋ฉด ๋จผ์ ํด๋น ํ์ด์ง๋ฅผ ์ ๋ถ ์ง์์ผ ํ๋๋ฐ, ์ด๋ฏธ ํ์ด์ง์ ๋ด์ฉ์ด ์๋ ์ํ์๋ค๋ฉด ๋ด์ฉ์ ์ ๋ถ ์ฎ๊ฒผ๋ค๊ฐ ๋ค์ ๋ถ๋ฌ์์ผ ํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋๋ฆฌ๋ค.
6.2. Locality
์ ์ง์ฌ์ง ํ๋ก๊ทธ๋จ์ ๋ณดํต ์ข์ locality๋ฅผ ๊ฐ์ง๋ค. ์ด๋ ์ต๊ทผ ์ ๊ทผํ item ๊ทผ์ฒ์ item์ ์์ฃผ ์ ๊ทผํ๋ ๊ฒฝํฅ์ด ์์์ ๋ํ๋ธ๋ค. ์ด๋ฅผ Principle of Locality๋ผ ํ๋ฉฐ, HW์ SW์ ๋์์ธ๊ณผ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ผ์น๋ค.
Locality์๋ temporal locality์ spatial locality๊ฐ ์๋ค. Temporal locality๋ ์ต๊ทผ ์ ๊ทผํ item์ ๋ค์ ์ ๊ทผํ๋ ๊ฒ์ ๋งํ๋ฉฐ, spatial locality๋ ์ต๊ทผ ์ ๊ทผํ item ๊ทผ์ฒ์ item์ ํ์ ๋ค์ ์ ๊ทผํ๊ฒ ๋๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ปดํจํฐ ์์คํ
์ ํ๋์จ์ด ๋จ๊ณ์์๋ถํฐ OS, ์ ํ๋ฆฌ์ผ์ด์
SW์ ๋ฌํ๊ธฐ๊น์ง ๋ชจ๋ ๋จ๊ณ์์ locality๋ฅผ ์ด์ฉํ๋ค.
- HW์ ๊ฒฝ์ฐ ์บ์(cache) ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ต๊ทผ ์ฐธ์กฐ๋ instruction์ด๋ data์ ๋ธ๋ก์ holdํ์ฌ ์๋๋ฅผ ํฅ์ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉฐ,
- OS๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ virtual address space๋ ๋์คํฌ ๋ธ๋ก์ ๋ํ ์บ์๋ก ์ฌ์ฉํ๋ค.
- ์ ํ๋ฆฌ์ผ์ด์
์ํํธ์จ์ด์ ๊ฒฝ์ฐ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ต๊ทผ ์ ์ํ ์ฌ์ดํธ์ ๋ฐ์ดํฐ๋ฅผ ์บ์ํด๋๋ ๊ฒ์ ์์๋ก ๋ค ์ ์๋ค.
๋ค์์ ํ๋ก๊ทธ๋จ์ ๋ณด์.
int sumvec(int v[N]){
int i, sum = 0;
for(i = 0, i < N; i++){
sum += v[i];
}
return sum;
}
์ด ํ๋ก๊ทธ๋จ์ ๋ณด๋ฉด, ๋ณ์ sum
์ด ๊ณ์ํด์ ์ ๊ทผ๋๋ฏ๋ก sum
์ ๋ํด์๋ ์ข์ temporal locality๋ฅผ ๊ฐ์ง๋ค๊ณ ํ ์ ์๋ค. ๋ฐ๋ฉด sum
์ ์ค์นผ๋ผ ํ์
์ ๋ฐ์ดํฐ์ด๋ฏ๋ก ์ธ์ ํ ๋ฐ์ดํฐ๊ฐ ์ ๊ทผ๋์ง๋ ์์, spatial locality๋ ์๋ค๊ณ ๋ณผ ์ ์๋ค.
๋ฐ๋ฉด v[i]
๋ ๊ฐ ์์๊ฐ ํ๋ฒ์ฉ๋ง ์ ๊ทผ๋๋ฏ๋ก temporal locality๋ ์๊ณ , ์ฐ์๋ ์์๊ฐ ๊ณ์ํด์ ์ ๊ทผ๋๋ ์ข์ spatial locality๋ฅผ ๊ฐ์ง๋ค๊ณ ํ ์ ์๋ค.
- ์ ํ๋ก๊ทธ๋จ์์์
v[i]
์ ๊ฐ์ด ๋ฒกํฐ์ ์์๊ฐ ์ฐ์์ ์ผ๋ก ์ ๊ทผ๋๋ ๊ฒ์ stride-1 reference pattern์ด๋ผ ๋ถ๋ฅธ๋ค. Stride๋ ํนํ ๋ค์ฐจ์ ๋ฐฐ์ด์์ ์ค์ํ๊ฒ ์์ฉํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก stride๊ฐ ํด์๋ก spatial locality๋ ๋จ์ด์ง๋ค.
-
์์ ๊ฐ์ด ์ด์ค ๋ฃจํ์ ์์๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ spatial locality๋ฅผ ํฌ๊ฒ ๋จ์ด๋จ๋ฆฌ๋ฉฐ, ์ฑ๋ฅ์ ํฐ ์ํฅ์ ์ฃผ๊ฒ ๋๋ค.
-
Instruction์ fetch ๋ํ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ๊ด๋๋ฏ๋ก ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ์์ด locality์ ์ํฅ์ ๋ถ์ํ ์ ์๋ค.
6.3. The Memory Hierarchy
Memory hierarchy๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ์์น์ ๋ฐ๋ผ ๊ตฌ์ฑ๋์ด ์๋ค.
level $k$์ ๋น ๋ฅด๊ณ , ์๊ณ , ๋น์ผ ์ ์ฅ์ฅ์น๊ฐ level $k+1$์ ๋๋ฆฌ๊ณ , ํฌ๊ณ , ๊ฐ์ผ ์ ์ฅ์ฅ์น๋ฅผ cacheํ๋ค.
- ์ด ๋ ์ผ๋ฐ์ ์ผ๋ก $k$๋จ๊ณ์ $k+1$๋จ๊ณ์์, ๋ฐ์ดํฐ๋ ๋๊ฐ์ ํฌ๊ธฐ์ ๋ธ๋ก๋ค๋ก ๋ถํ ๋์ด ์๋ค. $k$๋จ๊ณ๋ณด๋ค $k+1$๋จ๊ณ์ ๋ธ๋ก ์๊ฐ ๋ ๋ง์ ์ฉ๋์ ์ฐจ์ด๊ฐ ๋๋ ์์ด๋ค. ์บ์๋ฅผ ํ ๋ $k$๋จ๊ณ์ ์ ์ฅ์ฅ์น๋ $k+1$๋จ๊ณ์์ ๋ธ๋ก ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํด์จ๋ค. ์ด ๋ ๋ธ๋ก์ transfer unit์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ธ์ ํ ๋ ๋ฒจ ์ฌ์ด์ transfer์ ์ฌ์ฉ๋๋ ๋ธ๋ก์ ํฌ๊ธฐ๋ ์ผ์ ํ์ง๋ง, ๋ค๋ฅธ ๋จ๊ณ์ ์๋ผ๋ฆฌ๋ ๋ธ๋ก ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๋ค. ์๋ฅผ ๋ค์ด์, L1-L2 ์บ์์ ์ ์ก์๋ ์์ญ ๋ฐ์ดํธ์ ๋ธ๋ก์ด ์ฌ์ฉ๋์ง๋ง L4-L4 ์บ์๋ผ๋ฆฌ๋ ์๋ฐฑ ๋ฐ์ดํธ ์ด์ ํฌ๊ธฐ์ ๋ธ๋ก์ด ์ฌ์ฉ๋๋ค.
$k+1$๋จ๊ณ์ ์ ์ฅ์ฅ์น์์ ์ฐพ๊ณ ์๋ object๊ฐ ์ด์ด ์ข๊ฒ $k$๋จ๊ณ์์ ๋ฐ๊ฒฌ๋๋ค๋ฉด, ์ด๋ฅผ cache hit์ด๋ผ ํ๋ค. ์ด ๊ฒฝ์ฐ $k$๋จ๊ณ์์ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด๋ค์ด๋ฉด ๋๋ค. ๋ฐ๋ฉด $k$๋จ๊ณ์ ์ฐพ๊ณ ์๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด $k+1$๋จ๊ณ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ $k$๋จ๊ณ์ ์ ์ฅํ ํ์ ์ด๋ฅผ ์ ๊ณตํด์ผ ํด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค. ์ด ๊ฒฝ์ฐ๋ cache miss๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
- Cache miss๊ฐ ๋์ $k+1$๋จ๊ณ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์๋๋ฐ $k$๋จ๊ณ์ ์ฉ๋์ด ๊ฝ ์ฐจ์ ์ ์ฅํ ๊ณต๊ฐ์ด ์์ ์๋ ์๋ค. ์ด ๊ฒฝ์ฐ ๋ธ๋ก ์ค ํ๋(๋๋ ๊ทธ ์ด์)๋ฅผ ๊ณจ๋ผ ๋ฎ์ด์ฐ๊ธฐ๋ฅผ ํด์ผ ํ๋๋ฐ, ์ด๋ฅผ evicting์ด๋ผ๊ณ ํํํ๋ฉฐ ๋ฎ์ด์ฐ๊ธฐ๋ฅผ ๋นํ๋ ๋ธ๋ก์ victim์ด๋ผ๊ณ ํ๋ค.
- replacement policy๋ victim์ ์ ํํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธํ๋๋ฐ, ๋ํ์ ์ผ๋ก random replacement policy, least recently used(LRU) policy ๋ฑ์ด ์๋ค.
Cache miss์ ์ข
๋ฅ
Cache miss๊ฐ ์ผ์ด๋๋ ์์ธ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋ค.
- Compulsory miss: ์บ์๊ฐ ๋น์ด์๊ธฐ ๋๋ฌธ์(cold cache) ๋ถ๊ฐํผํ๊ฒ ๋ฐ์ํ๋ miss์ด๋ค. ์บ์๊ฐ ๊ณ์ ์ฌ์ฉ๋๊ณ ๋๋ฉด steady state์๋ ๋น์ฐํ ๋ฐ์ํ์ง ์๋๋ค.
- Conflict miss: placement policy์ ์ถฉ๋๋ก ์ธํด ๋ฐ์ํ๋ค.
- placement policy๋ $k$๋จ๊ณ์ ํน์ ๋ธ๋ก์๋ $k+1$๋จ๊ณ์ ๋ช๋ฒ ๋ช๋ฒ ๋ธ๋ก๋ง์ด ์ฌ ์ ์๋ ์์ผ๋ก ์ ํ์ ๋๋ ๊ฒ์ ๋งํ๋ค. $k+1$๋จ๊ณ์ ๋ชจ๋ ๋ธ๋ก์ด $k$๋จ๊ณ์ ๋ชจ๋ ๋ธ๋ก์ ์บ์๋ ์ ์๋๋ก ํ๋ค๋ฉด ์ข๊ฒ ์ผ๋ ์ด๋ ๋๋ฌด costlyํ๊ธฐ ๋๋ฌธ์ placement policy๊ฐ ์ ํด์ ธ ์ฌ์ฉ๋๋ค.
- conflict miss๊ฐ ๋ฐ์ํ๋ ์์๋ฅผ ๋ค์๋ฉด, $k$๋จ๊ณ์ ๊ฐ์ ๋ธ๋ก์ผ๋ก ๋งคํ๋๋ $k+1$๋จ๊ณ์ ๋ ๋ธ๋ก์ด ๋ฒ๊ฐ์์ ์ ๊ทผ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ๋ ๋ธ๋ก์ด ๋ฒ๊ฐ์ evict๋๋ฉด์ ๊ณ์ํด์ miss๊ฐ ์ผ์ด๋๋ค.
- Capacity miss: ํ๋ก๊ทธ๋จ์ ํ์ฌ phase๊ฐ ์ ๊ทผํ๋ โworking setโ์ด ์บ์์ ํฌ๊ธฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ ๋ถ๊ฐํผํ๊ฒ miss๊ฐ ์ผ์ด๋ ์๋ฐ์ ์๋ค.
์ด๋ ๊ฒ ์บ์๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ ์บ์ ์ ์ฅ์ฅ์น๋ฅผ ๋ธ๋ก ๋จ์๋ก ๋๋๊ณ , ์ธ์ ๋ ๋ฒจ ์ฌ์ด์์ transfer๋ฅผ ์ํค๋ฉฐ hit/miss๋ฅผ ํ๋ณํ๊ณ ์ฒ๋ฆฌํ๋ ๋ก์ง์ด ํ์ํ๋ค. ๋ณดํต ์ด๋ ํ๋ก๊ทธ๋จ์ ๋ช
์์ ์ธ ์ปจํธ๋กค์ด ์์ด๋ ์์์ ์ ์๋ํ๋๋ก ์ค๊ณ๋์ด ์๋ค.
6.4. ์บ์ ๋ฉ๋ชจ๋ฆฌ
์ปดํจํฐ๊ฐ ๋ฐ์ ํ๋ฉด์ CPU์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์ฌ์ด ๊ฐญ๋ ์ ์ ์ปค์ ธ๊ฐ๊ณ , ์ด์ ๋ฐ๋ผ ์ ์ ๋ ๋ง์ ์์ ์บ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋์๋ค. ์ฌ๊ธฐ์์๋ L1 ์บ์๋ง์ด ์๋ ๊ฒฝ์ฐ๋ง์ ๋ค๋ฃฌ๋ค.
์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์ผ๋ฐ์ ์ธ ๊ตฌ์กฐ
๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ $m$ ๋นํธ, ์ฆ ์ฃผ์๊ฐ $M=2^m$๊ฐ์ธ ์ปดํจํฐ ์์คํ
์ ๊ณ ๋ คํ์.
์ ๊ทธ๋ฆผ์์,
- ์บ์๋ $S = 2^s$๊ฐ์ cache set์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- ๊ฐ cache set์ ๋ค์ $E$๊ฐ์ cache line์ผ๋ก ๊ตฌ์ฑ๋๋ค.
-
๊ฐ๊ฐ์ cache line์
- $B=2^b$ ๋ฐ์ดํธ์ data block๊ณผ
- 1๋นํธ์ง๋ฆฌ valid bit
3.ย $t=m - (b + s)$ ๊ฐ์ tag bit๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์ฆ, ์บ์์ ๊ตฌ์กฐ๋ ์์์ $(S, E, B, m)$์ผ๋ก ํํํ ์ ์์ผ๋ฉฐ ์ด ๊ฒฝ์ฐ ์ฉ๋์ $C = S\times E \times B$์ด๋ค. Tag๋ valid bit์ ์ฉ๋์ ํฌํจ๋์ง ์๊ณ , ์ค๋ก์ง data block๋ง์ด ์ฉ๋์ ์
๋ ๋ค์ด๊ฐ๋ค.
์บ์๋ match/miss๋ฅผ ํ๋ณํ๊ธฐ ์ํด ์์ ๊ฐ์ ๊ฐ๋จํ ํด์(hash) ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค. CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์ $A$์ ์ ๊ทผํ๊ณ ์ถ์ดํ๋ค๊ณ ํ์. $m$๋นํธ์ง๋ฆฌ ์ฃผ์ $A$๋ ์์์๋ถํฐ ๋ค์๊ณผ ๊ฐ์ด ๋ถํ ํ๋ค.
- tag bit $t = m - (b + s)$ ๋นํธ
- set index $s$ ๋นํธ
- block offset $b$ ๋นํธ
๊ทธ๋ฌ๋ฉด ์ ๊ทผ์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
-
Set selection
์ฃผ์์์ ๊ฐ์ด๋ฐ $s$ ๋นํธ์ set index๋ฅผ $S = 2^s$๊ฐ์ cache set ์ค ๋ช ๋ฒ์งธ set์ ์ ๊ทผํ ๊ฒ์ธ์ง ํ๋ณํ๋ ๋ฐ ์ฌ์ฉํ๋ค.
-
Line matching
์ ํ๋ cache set์ $E$๊ฐ cache line์ ์ดํด๋ณด๋ฉด์, tag๊ฐ address์ tag(๋งจ ์ $t$ ๋นํธ)์ ์ผ์นํ๋ ๊ฒ์ด ์๋์ง ์ฐพ๋๋ค. ๋ง์ฝ ์ผ์นํ๋ ๊ฒ์ด ์๊ณ valid bit๊ฐ 1์ด๋ผ๋ฉด, ์ ๊ทผํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ ๋ธ๋ก์ด ์บ์์ ์ ์ฅ๋์ด ์๋ ๊ฒ์ด๋ค.
- ๋ง์ฝ ๊ทธ๋ฐ ๊ฒ์ด ์๋ค๋ฉด cache miss์ด๋ค
-
Word extraction
Cache line์ data block์์ block offset๋ฒ์งธ ๋นํธ๊ฐ ์ฃผ์ $A$์ ํด๋นํ๋ ๋ฐ์ดํฐ์ด๋ค.
์บ์์ ๋ถ๋ฅ
์บ์๋ cache line์ ๊ฐ์ $E$์ ๋ฐ๋ผ์ ์ธ ๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
- Direct mapped cache: $E=1$์ผ ๊ฒฝ์ฐ
- ์ฆ, ๊ฐ cache set์ cache line์ด ํ๋๋ฐ์ ์๊ฒ ๋๋ค.
- Set associative cache: $1 < E < \frac{C}{B}$์ธ ๊ฒฝ์ฐ
- cache set๋ ์ฌ๋ฌ ๊ฐ์ด๊ณ , cache line๋ ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์ด๋ค.
- Fully associative cache: $E = \frac{C}{B}$, ์ฆ $S=1$์ธ ๊ฒฝ์ฐ
- cache set์ด ํ๋๋ฐ์ ์๋ ๊ฒฝ์ฐ์ด๋ค.
Direct Mapped Cache
Direct mapped cache๋ ํ cache set์ line์ด ํ๋๋ฐ์ ์์ผ๋ ์ดํด์ ๊ตฌํ์ด ๊ฐ์ฅ ๊ฐ๋จํ๋ค. ์ด ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ ๊ทผ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
-
Set selection
์ฃผ์์ ๊ฐ์ด๋ฐ $s$ ๋นํธ๋ฅผ unsigned int๋ก ์ทจ๊ธํด set ๋ฒํธ๋ฅผ ์์๋ด๊ณ , set์ ์ ํํ๋ค.
-
Line matching
Set ๋ด์์ line์ ์ ํํ๋ค. ์ฌ๊ธฐ์๋ line์ด ํ๋๋ฐ์ ์์ผ๋ฏ๋ก, ์ ์ผํ cache line์์ valid/tag bit๋ฅผ ํ์ธํด์ฃผ๋ฉด ๋์ด๋ค.
-
Word extraction
Address์ ๋งจ ๋ $b$๋นํธ๋ฅผ block offset์ผ๋ก ์ทจ๊ธํด block ๋ด์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋๋ค.
ํํธ, cache miss๊ฐ ๋ฐ์ํ ์ ๋ค์ ๋จ๊ณ์ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ค. ์ด ๋ ๋ชจ๋ line์ valid bit๊ฐ 1์ด๋ผ๋ฉด evicting์ด ๋ถ๊ฐํผํ๊ฒ ๋๋๋ฐ, direct mapped cache์์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ set line ์ฌ์ด์ ๋งคํ์ด injection(๋ค๋์ผ)์ด๋ฏ๋ก victim์ด ๋ฐ๋ก ๊ฒฐ์ ๋๋ค. (์ฆ replacement policy๊ฐ ์๋ช
ํ๋ค)
Direct mapped cache์ conflict miss
Direct mapped cache์ ๊ฒฝ์ฐ, ํฌ๊ธฐ๊ฐ 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ธ ๋ฐฐ์ด ์ฌ๋ฌ ๊ฐ์ ์ ๊ทผํ๋ฉด conflict miss๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ๋ค. (p.658 ์ฐธ๊ณ ) Set์ line์ด ํ๋๋ฟ์ด๊ธฐ ๋๋ฌธ์, set index๊ฐ ๊ฐ์
๋ ์ฃผ์์ ๊ณ์ ์ ๊ทผํ๊ฒ ๋๋ฉด load์ evict๋ฅผ ๋ฐ๋ณตํ๋ thrashing์ด ์ผ์ด๋๋ ๊ฒ์ด๋ค. ์ด๋ block size๋งํผ์ padding์ ๋ํจ์ผ๋ก์จ set index๋ฅผ ๋ค๋ฅด๊ฒ ๋ง๋ค์ด ์ฝ๊ฒ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค(p. 660).
Set Associative Cache
Cache set์ด ์ฌ๋ฌ ๊ฐ์ด๊ณ , ๊ฐ set๋น line์ ์๋ ์ฌ๋ฌ ๊ฐ์ธ, ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ด๋ค. ์ด ๊ฒฝ์ฐ ์ฌ๋ฌ ๊ฐ์ set line์ค์ ๋งค์นญ๋๋ ๊ฒ(์ฆ tag๊ฐ ๊ฐ๊ณ valid๊ฐ 1์ธ ๊ฒ)์ด ์๋์ง ์ ๋ถ ํ์ธํด์ผ ํ๋ฏ๋ก ๊ตฌํ์ด direct mapped cache๋ณด๋ค ๋ณต์กํ๋ค.
Set associative cache์์, associative๋ associative memory์์ ๋ฐ์จ ๊ฒ์ด๋ค. Associative memory๋ ์ฃผ์์ ๊ฐ ์ฌ์ด์ ๋งคํ์ธ conventional memory์ ๋์กฐ๋๋ ๊ฐ๋
์ผ๋ก, (key, value)์ ์งํฉ์ ์ ์ฅํด๋๊ณ ์ฝ์ ๋๋ key์ ๋์๋๋ ๊ฐ value๋ฅผ ์ฐพ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค.
Set associative cache์์๋ tag๊ฐ ๋ฐ๋ก key์ ์ญํ ์ ์ํํ๋ ๊ฒ์ผ๋ก ์ดํดํ ์ ์๋ค. ์ฆ, set associative cache์ ๊ฐ set์ associative memory์ด๋ค.
Miss ๋ฐ์ ์์ line replacement
Set associative cache๋ direct mapped cache์ ๋ฌ๋ฆฌ set line์ด ์ฌ๋ฌ ๊ฐ ์์ผ๋ฏ๋ก miss ๋ฐ์ ์์๋ ์ด๋ line์ evictํ ์ง๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ค.
- ๋น line์ด ์์ผ๋ฉด ๋น์ฐํ ๊ทธ line์ ์ฐ๋ฉด ๋์ง๋ง,
- ๋ชจ๋ line์ด valid๋ผ๋ฉด line ์ค ํ๋(victim)๋ฅผ ์ ํํด์ evictํ๊ณ , ๋น๋ถ๊ฐ ํ๋ก์ธ์๊ฐ victim์ ์ฐธ์กฐํ์ง ์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ์๋ฐ์ ์๋ค.
์์์๋ ์ดํด๋ดค๋ฏ์ด ์ด๋ฅผ ์ํด replacement policy๊ฐ ํ์ํ๋ฉฐ, random replacement, least frequently used(LFU), least recently used(LRU) ๋ฑ์ด ์กด์ฌํ๋ค. Replacement policy๋ฅผ ๊ตฌํํ๋ ค๋ฉด ๋ณต์กํ ํ๋์จ์ด๊ฐ ์ถ๊ฐ๋์ด์ผ ํ์ง๋ง, ํนํ memory hierarchy์ ์๋์ชฝ์ผ๋ก ๊ฐ์๋ก miss penalty๊ฐ ์ ์ ์ปค์ง๊ธฐ ๋๋ฌธ์ ๋ณดํต์ ๊ทธ๋ด๋ง ํ ๊ฐ์น๊ฐ ์๋ค.
Fully Associative Cache
Fully associative cache๋ cache set์ด ํ๋๋ฟ์ผ๋ก, set selection ๊ณผ์ ์ด ์๋ช
ํด์ง๋ ๊ฒ์ ์ ์ธํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๋ฐฉ๋ฒ์ set associative cache์ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค.
๊ทธ๋ฌ๋ ์ด ๊ฒฝ์ฐ set line์ด ๋๋ฌด ๋ง์์ ธ line matching์ ์ํ ํ๋์จ์ด๊ฐ ๋๋ฌด ๋ณต์กํด์ง๊ณ ๋น์ฉ์ด ๋ง์ด ๋ค๊ฒ ๋๋ค. ๋ฐ๋ผ์ fully associative cache๋ ์ฉ๋์ด ์์ ๊ฒฝ์ฐ์๋ง ์์ธ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
์บ์ ์ฐ๊ธฐ์ ๊ด๋ จ๋ ๋ฌธ์ ์
์บ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ณผ์ ์ ์์์ ์ดํด๋ณธ ๋ฐ์ ๊ฐ์ด ๊ฐ๋จํ๋ค. ๊ทธ๋ฌ๋ ์บ์์ ์ฐ๋ ๊ณผ์ ์ ๋์ฑ ๋ณต์กํ๋ฐ, ํฌ๊ฒ write hit์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์๊ณผ write miss๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋ฐ๋ผ ๊ฐ๊ฐ ๋ ๊ฐ์ง๋ก ๋ถ๋ฅํ ์ ์๋ค.
๋จผ์ ์ฐ๋ ค๋ ๋ฐ์ดํฐ๊ฐ write hit(์ฆ ํน์ ์ฃผ์์ ์ฐ๊ธฐ๋ฅผ ํ๋ ค๋๋ฐ ํด๋น ์ฃผ์์ ๋ฐ์ดํฐ๊ฐ ์บ์์ ์๋ ๊ฒฝ์ฐ)์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋ค์์ด ์๋ค.
- write-through: ์ฆ์ ์๋ ๋ ๋ฒจ์ ์
๋ฐ์ดํธ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด ์
๋ฐ์ดํธ์ํจ๋ค.
- write-back: ์๋ ๋ ๋ฒจ์ ์
๋ฐ์ดํธ๋ฅผ ์ต๋ํ ๋ฏธ๋ค๋๋ค๊ฐ, replacement algorithm์ ์ํด ๋ธ๋ก์ด evict๋๋ฉด ๊ทธ์ ์์ผ ์
๋ฐ์ดํธํ๋ ๋ฐฉ์์ด๋ค.
Write miss(์ฐ๊ธฐ๋ฅผ ํ๋ ค๋ ์ฃผ์์ ๋ฐ์ดํฐ๊ฐ ์บ์์ ์๋ ๊ฒฝ์ฐ)๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋ค์์ผ๋ก ๋๋๋ค.
- Write-allocate: missing data๋ฅผ ์๋ ๋จ๊ณ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฐพ์ ์บ์์ ๊ฐ์ ธ์จ ํ์ ์
๋ฐ์ดํธ ์ํจ๋ค.
- No-write-allocate: ์บ์๋ฅผ ๊ฑด๋๋ฐ๊ณ ์๋ ๋จ๊ณ์ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์
๋ฐ์ดํธ์ํจ๋ค.
์ผ๋ฐ์ ์ผ๋ก write-through์ no-write-allocate๊ฐ ํจ๊ป ์ฌ์ฉ๋๊ณ , write-back์ write-allocate์ ํจ๊ป ์ฌ์ฉ๋๋ค. ์ด์ค ๋ ๋ง์ด ์ฌ์ฉ๋๋ ๊ฒ์ ํ์์ธ๋ฐ, ๋ค์ ์ ์์ ํ๋ก๊ทธ๋จ ์ต์ ํ๋ฅผ ์ค๋ช
ํ ๋์๋ ํ์์ ๋ชจ๋ธ์ ๊ฐ์ ํ๋ค.
์บ์์ ์ค์ ๊ตฌ์กฐ
์์์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์บ์(d-cache)๋ง์ ๋ค๋ฃจ์์ง๋ง, ์ค์ ๋ก ์บ์๋ ๋ฐ์ดํฐ๋ฟ๋ง ์๋๋ผ instruction ๋ํ ์ ์ฅํ ์ ์๋ค. ์ด๋ฅผ i-cache๋ผ๊ณ ํ๋ค. ๋์ ํ๊บผ๋ฒ์ ์ ์ฅํ๋ unified cache๋ ์กด์ฌํ์ง๋ง ์ต๊ทผ์ ๋์ค๋ ํ๋ก์ธ์๋ ๋ณดํต i-cache์ d-cache๋ฅผ ๋ถ๋ฆฌ์ํจ ๊ตฌ์กฐ๋ฅผ ์ฑํํ๋ค. ์ด๋ ๊ฒ ํ๋ฉด
- ๋ฐ์ดํฐ์ instruction์ ๋์์ ์ฝ์ ์ ์๊ณ
- ์ผ๋ฐ์ ์ผ๋ก ์ฝ๊ธฐ์ ์ฉ์ธ i-cache์ d-cache์๋ ๋ค๋ฅธ ์ต์ ํ ๋ฐฉ๋ฒ์ ์ ์ฉํ ์ ์์ผ๋ฉฐ
- ๋ฐ์ดํฐ์ instruction์ด ์๋ก conflict miss๋ฅผ ์ผ์ผํค๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๋ค.
์บ์ ํ๋ผ๋ฏธํฐ๋ค์ด ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ
์บ์์ ์ฑ๋ฅ์ ์ธก์ ํ๋ ์ฒ๋๋ก๋ ํฌ๊ฒ ๋ค์์ด ์๋ค.
- miss rate์ hit rate
-
hit time๊ณผ miss penalty
$(S, E, B, m)$์ผ๋ก ๋ํ๋ด์๋ ๋ณ์๋ค์ ํฌํจํด ์ฌ๋ฌ ์บ์ ํ๋ผ๋ฏธํฐ๋ค์ด ์บ์์ ์ฑ๋ฅ์ ์ด๋ค ์ํฅ์ ๋ผ์น๋์ง ์์๋ณธ๋ค.
-
์บ์ ์ฉ๋์ ์ํฅ: ์บ์์ ํฌ๊ธฐ๊ฐ ํฌ๋ฉด hit rate๋ ์ฌ๋ผ๊ฐ๊ฒ ์ง๋ง, ๋๋ฌด ํฌ๋ฉด hit time์ด ์ปค์ง๋ ํจ๊ณผ๊ฐ ์๊ธด๋ค.
-
๋ธ๋ก ํฌ๊ธฐ์ ์ํฅ
๋ธ๋ก์ ํฌ๊ธฐ๊ฐ ํฌ๋ฉด spatial locality๋ฅผ ์ ํ์ฉํ ์ ์๊ฒ ๋์ง๋ง, ์ฉ๋์ด ๊ณ ์ ๋์ด ์์ ๋ ๋ธ๋ก์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค๋ ๊ฒ์ cache line์ ๊ฐ์๊ฐ ์ค์ด๋ ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ด ๊ฒฝ์ฐ spatial locality๋ณด๋ค temporal locality๊ฐ ๊ฐํ ํ๋ก๊ทธ๋จ์ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ๋ฎ์์ง ์ ์๋ค.
๋ํ ๋ธ๋ก์ด ํฌ๋ฉด transfer time์ด ์ปค์ง๊ธฐ ๋๋ฌธ์ miss penalty๊ฐ ์ปค์ง๋ ํจ๊ณผ๊ฐ ์๊ธด๋ค.
-
Associativity($E$)์ ์ํฅ
$E$, ์ฆ set๋น line์ ๊ฐ์๊ฐ ๋ง์์ง๋ฉด conflict miss์ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์์ง๋ค. ๊ทธ๋ฌ๋ ๋์์ ๊ตฌํ์ด ์ด๋ ค์์ง๊ณ ๋น ๋ฅด๊ฒ ๋ง๋ค๊ธฐ๊ฐ ํ๋ค์ด์ง๋ค. ๋ํ, LRU(least recently used) replacement policy๋ก ๊ตฌํ๋ ์บ์์ ๊ฒฝ์ฐ state bit๊ฐ ๋ ๋ง์ด ํ์ํ๊ฒ ๋๋ฉฐ control logic๋ ๋ณต์กํด์ ธ hit time์ด ๊ธธ์ด์ง๋ค.
-
Writing Strategy์ ์ํฅ
- Write-through: ๊ตฌํ์ด ์ฝ๊ณ write buffer๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋ํ write-back ์บ์์์ read miss์ evict ํ write-back์ด ์ผ์ด๋ ์ ์๋ ๋ฐ ๋นํ์ฌ read miss์ ์๋์ ์ผ๋ก ๊ด๋ํ๋ค.
- Write-back: transfer๊ฐ ์ ๊ฒ ์ผ์ด๋ bandwidth๋ฅผ ์ ๊ฒ ์ฐจ์งํ๋ค. ์ฆ ๋ค๋ฅธ I/O device์๊ฒ BW๋ฅผ ์๋ณดํ๊ฒ ๋๋ค. Hierarchy์ ์๋์ชฝ์ผ๋ก ๋ด๋ ค๊ฐ์๋ก ์ด๋ ๋ ํฐ ์ฅ์ ์ด ๋๋๋ฐ, ์๋์ชฝ์ผ๋ก ๊ฐ์๋ก transfer time์ด ๋์ด๋ BW๊ฐ ์ค์ํด์ง๊ธฐ ๋๋ฌธ์ด๋ค.
6.5. ์บ์์นํ์ ์ธ ์ฝ๋๋ฅผ ์ง๋ ๋ฒ
์บ์์นํ์ ์ธ ์ฝ๋๋ก ์ฑ๋ฅ์ ํฅ์์ํฌ ๋์๋ ๋ ๊ฐ์ง ์์น์ ๋ฐ๋ผ์ผ ํ๋ค.
- Make the common case go fast
- Minimize number of cache misses in the inner loop
์์์ ๋ดค๋ ํ๋ก๊ทธ๋จ์ ๋ค์ ๊ฐ์ ธ์๋ณด์.
int sumvec(int v[N]){
int i, sum = 0;
for(i = 0, i < N; i++){
sum += v[i];
}
return sum;
}
์ ํ๋ก๊ทธ๋จ์ ๋ณด๋ฉด,
- ์ง์ญ๋ณ์
i
์ sum
์ ๋ฐ๋ณต์ ์ผ๋ก ์ ๊ทผํ๊ณ ์์ผ๋ฏ๋ก, optimizing compiler๋ผ๋ฉด hierarchy์ ์ต์์ ๋ฉ๋ชจ๋ฆฌ์ธ CPU ๋ ์ง์คํฐ์ ์ด๋ฅผ ์ ์ฅํ ๊ฒ์ด๋ค. ์ด๋ temporal locality๊ฐ ๋งค์ฐ ์ข์์ ์๋ฏธํ๋ค.
- ๋ํ
v[i]
์ stride-1 reference๋ก ์ ๊ทผํ๊ณ ์์ผ๋ฏ๋ก spatial locality ๋ํ ์ข๋ค.
- ์ผ๋ฐ์ ์ผ๋ก, stride-$k$ reference์ ๊ฒฝ์ฐ ์บ์์ ๋ธ๋ก ํฌ๊ธฐ๊ฐ $B$์ผ ๋, ํ๊ท $\min{1, \text{word size}\times \frac{k}{B}}$ ๋ฒ์ miss๋ฅผ ์ผ์ผํด์ด ์๋ ค์ ธ ์๋ค.
๋ค์ค๋ฃจํ๋ก ๋ค์ฐจ์ ๋ฐฐ์ด์ ์ ๊ทผํ ๋ ์บ์์นํ์ฑ์ ํนํ ์ ์ํด์ผ ํ๋๋ฐ, ๋ฐ๋ณต๋ฌธ์ ์์์ ๋ฐ๋ผ์ ์ค์ง์ stride๊ฐ 1์ด ๋ ์๋, ๋ฐฐ์ด์ ํญ์ด ๋ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฑ
์ ์์์์๋ ๋ฌด๋ ค 25๋ฐฐ์ ์๋ ์ฐจ์ด๊ฐ ๋ ๊ฒฝ์ฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์๋ค.