์™ธ๋ถ€ ๋‹จํŽธํ™”๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ ํŽ˜์ด์ง•(Paging)์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

1. ํŽ˜์ด์ง•(Paging)

์™ธ๋ถ€ ๋‹จํŽธํ™”๋กœ ์ธํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋Š” ๋งค์šฐ ์‹ฌํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์‚ดํŽด๋ณด์•˜๋‹ค. Compaction์„ ์‚ฌ์šฉํ•˜๋ฉด ์™ธ๋ถ€ ๋‹จํŽธํ™”๋Š” ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ์™€ ๋น„ํšจ์œจ์ ์ธ ์„ฑ๋Šฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค. ๊ทธ ์ดํ›„์— ์—ฐ๊ตฌ๋ฅผ ํ†ตํ•ด ๋‚˜์˜จ ๊ฒƒ์ด ํŽ˜์ด์ง•์ด๋‹ค. ํŽ˜์ด์ง•์€ hole์„ ๊ฐ€์ง€๊ณ  ํ•ด๊ฒฐํ•˜๋ ค ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž‘์€ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ ์„œ ์™ธ๋ถ€ ๋‹จํŽธํ™”๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•˜์˜€๋‹ค.

ํŽ˜์ด์ง•์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ผ์ •ํ•œ ์ž‘์€ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆ„๋Š”๋ฐ, ํ”„๋กœ์„ธ์Šค๋ฟ์•„๋‹ˆ๋ผ hole๋„ ๊ฐ™์€ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์€ ์กฐ๊ฐ๋“ค์˜ ํฌ๊ธฐ๋ฅผ ๋งž์ถฐ์„œ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹นํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋Š” ์—ฐ์†์ ์ธ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์ด๋ฅผ ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ์—ฌ๊ธฐ์ €๊ธฐ ํฉ์–ด์ง„๋‹ค๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ• ๊นŒ?

๋ฉ”๋ชจ๋ฆฌ์ƒ์— ์—ฌ๋Ÿฌ ๊ณณ์— ํฉ์–ด์ง„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด CPU๋ฅผ ์†์—ฌ์•ผํ•œ๋‹ค. ์ด์ „ ๋‹ค์ค‘ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‚ดํŽด๋ดค์„ ๋•Œ MMU๋ฅผ ํ†ตํ•ด ๋…ผ๋ฆฌ ์ฃผ์†Œ์™€ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋‚˜๋ˆ ์„œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ–ˆ์—ˆ๋‹ค. ์ด ์—ญ์‹œ CPU๋ฅผ ์†์ด๋Š” ํ–‰๋™์ด๋‹ค. ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ „ํ˜€ ์—ฐ์†์ ์ด์ง€ ์•Š๋Š”๋ฐ, CPU๋Š” ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅ๋ฐ›์œผ๋ฉฐ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.

ํŽ˜์ด์ง•์œผ๋กœ ์ž‘์€ ํฌ๊ธฐ๋กœ ๋‚˜๋ˆˆ ๊ฒƒ๋„ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ 50byte ํฌ๊ธฐ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. ํŽ˜์ด์ง•์˜ ํฌ๊ธฐ๋Š” ๊ฐ 10byte๋กœ ๋‚˜๋ˆˆ๋‹ค.

์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํ”„๋กœ์„ธ์Šค P1์€ 5๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ 5๊ณณ์— ๋‚˜๋ˆ ์„œ ํ• ๋‹นํ•˜์˜€๋‹ค. CPU๋Š” ๋…ผ๋ฆฌ ์ฃผ์†Œ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์„ค์ •ํ•œ๋Œ€๋กœ ์—ฐ์†์ ์ธ ์ฃผ์†Œ๊ฐ’์œผ๋กœ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๊ณ  ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ๋กœ ๊ฐ€๊ธฐ์ „์— ๊ฐ ํŽ˜์ด์ง€์˜ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์—์„œ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‚˜๋ˆˆ ์กฐ๊ฐ์„ page ๋ผ ํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚˜๋ˆˆ ์กฐ๊ฐ์„ frame ์ด๋ผ ํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ํŽ˜์ด์ง€์˜ ์ง‘ํ•ฉ์ด๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ”„๋ ˆ์ž„์˜ ์ง‘ํ•ฉ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด MMU์˜ ์žฌ๋ฐฐ์น˜ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉํ•ด์„œ ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ฐ ํŽ˜์ด์ง€์˜ ์‹ค์ œ ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค. ์ด๋Ÿฌํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์žฌ๋ฐฐ์น˜ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”(Page Table) ์ด๋ผ ํ•œ๋‹ค.

1.1. ์ฃผ์†Œ ๋ณ€ํ™˜(Address Translation)

ํŽ˜์ด์ง• ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ํฉ์–ด์ง„ ํŽ˜์ด์ง€์— CPU๊ฐ€ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ํ†ตํ•ด ์ฃผ์†Œ๋ฅผ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

1.1.1 ๋…ผ๋ฆฌ ์ฃผ์†Œ(Logical address)

CPU๊ฐ€ ๋‚ด๋Š” ์ฃผ์†Œ๋Š” 2์ง„์ˆ˜๋กœ ํ‘œํ˜„๋œ๋‹ค. ์ด ์ฃผ์†Œ๊ฐ€ m๋น„ํŠธ๋กœ ํ‘œํ˜„๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์—ฌ๊ธฐ์„œ ํ•˜์œ„ n๋น„ํŠธ๋Š” ์˜คํ”„์…‹(offset) ๋˜๋Š” ๋ณ€์œ„(displacement)๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ƒ์œ„ m-n ๋น„ํŠธ๋Š” ํŽ˜์ด์ง€์˜ ๋ฒˆํ˜ธ์— ํ•ด๋‹นํ•œ๋‹ค.(n = d, m-n = p)

๋…ผ๋ฆฌ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ์ฃผ์†Œ(physical address)๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ(p)๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ์ธ๋ฑ์Šค ๊ฐ’์ด๊ณ , p์— ํ•ด๋‹น๋˜๋Š” ํ…Œ์ด๋ธ” ๋‚ด์šฉ์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ”„๋ ˆ์ž„ ๋ฒˆํ˜ธ์ด๋‹ค. ๋ณ€์œ„(d)๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์ด๋‹ค. d๋Š” ํŽ˜์ด์ง€ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค. ๋งŒ์•ฝ ํ˜„์žฌ ํŽ˜์ด์ง€ ํฌ๊ธฐ๋ฅผ 16byte์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, ์ด๋Š” 2^4์ด๋ฏ€๋กœ d = 4 ์ด๋‹ค.

๋งŒ์•ฝ ๋…ผ๋ฆฌ์ฃผ์†Œ๊ฐ€ 50๋ฒˆ์งธ๋กœ ์ฃผ์–ด์ง„๋‹ค๋ฉด, 50=110010 ์ด๊ณ , page size๊ฐ€ 16byte๋ผ ์ฃผ์–ด์กŒ์„ ๋•Œ, 4์ž๋ฆฌ๋ฅผ ์ œ์™ธํ•œ p=11์ด๊ณ  d=0010 ์ด๋‹ค.

1.1.2 ๋™์ž‘ ์˜ˆ์‹œ

์œ„ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด, ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์ง€ ํ•œ๋ˆˆ์— ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ•ด์•ผํ•  ์ผ์€, ๋…ผ๋ฆฌ ์ฃผ๊ณ ๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ, ์ด๊ฒƒ์„ page, displacement๋กœ ๋‚˜๋ˆ„๊ณ , page ๋ณ€์ˆ˜๋ฅผ frame ๋ณ€์ˆ˜๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” page table์„ ํ†ต๊ณผํ•˜์—ฌ ๋‚˜์˜จ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐพ์œผ๋ฉด ๋œ๋‹ค.

์œ„ ๊ทธ๋ฆผ์œผ๋กœ ๋ถ€ํ„ฐ ๋”ฐ๋ผํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. p์™€ d๋งŒ ์ž˜ ์ƒ๊ฐํ•˜๋ฉด ์‰ฌ์šด ์•„์ด๋””์–ด์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด ํŽ˜์ด์ง•์œผ๋กœ๋ถ€ํ„ฐ ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ•˜๋ฉด์„œ ์™ธ๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ..

1.2 ๋‚ด๋ถ€๋‹จํŽธํ™”(Internal Fragment)

ํŽ˜์ด์ง•์€ ์™ธ๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ์•„๋‹Œ ๋‚ด๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋‚ด๋ถ€๋‹จํŽธํ™”๋Š” ํ”„๋กœ์„ธ์Šค ํฌ๊ธฐ๊ฐ€ ํŽ˜์ด์ง€ ํฌ๊ธฐ์˜ ๋ฐฐ์ˆ˜๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ, ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€๋Š” ํ•œ ํ”„๋ ˆ์ž„์„ ๋‹ค ์ฑ„์šธ ์ˆ˜ ์—†๋‹ค. ์ด๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ณต๊ฐ„์€ ๊ฒฐ๊ตญ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋กœ ์ด์–ด์ง„๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 15bytes ํฌ๊ธฐ์˜ ํ”„๋กœ์„ธ์Šค P๊ฐ€ ์žˆ๋‹ค. ํŽ˜์ด์ง€ ํฌ๊ธฐ(ํ”„๋ ˆ์ž„ ํฌ๊ธฐ)๋ฅผ 4bytes๋ผ ํ•˜๋ฉด, P๋ฅผ ํŽ˜์ด์ง€๋กœ ๋‚˜๋ˆˆ ๊ฒฐ๊ณผ์ธ 4, 4, 4, 3 ์˜ ํฌ๊ธฐ๋กœ ์ด 4๊ฐœ์˜ ํŽ˜์ด์ง€๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ์—ฌ๊ธฐ์„œ ๋งˆ์ง€๋ง‰ 3bytes ํŽ˜์ด์ง€๋Š” ํ”„๋ ˆ์ž„ ํฌ๊ธฐ๋ณด๋‹ค 1byte์ž‘์œผ๋ฏ€๋กœ, ์ด ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋น„๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋น„์–ด์ง„ ๊ณต๊ฐ„์€ ํ”„๋กœ์„ธ์Šค P์—์„œ๋„ ์“ฐ์ง€ ์•Š๊ณ , ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—์„œ๋„ ์“ฐ์ง€ ๋ชปํ•˜๋Š” ๋‚ญ๋น„๋˜๋Š” ๊ณต๊ฐ„์ด ๋œ๋‹ค.

๋‚ด๋ถ€๋‹จํŽธํ™”๋Š” ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๋ถ€๋‹จํŽธํ™”๋Š” ์™ธ๋ถ€๋‹จํŽธํ™”์— ๋น„ํ•ด ๋‚ญ๋น„๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ ๋งค์šฐ ์ ๋‹ค. ๋‚ด๋ถ€๋‹จํŽธํ™”์˜ ์ตœ๋Œ€ ๋‚ญ๋น„๋˜๋Š” ํฌ๊ธฐ๋Š” page size - 1 ์ด ๋œ๋‹ค.(์™ธ๋ถ€ ๋‹จํŽธํ™”๋Š” ์ตœ๋Œ€ ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ์˜ 1/3์ด ๋‚ญ๋น„๋œ๋‹ค๊ณ  ์ด์ „์— ์‚ดํŽด๋ดค๋‹ค.) ์ด๋Š” ๋ฌด์‹œํ•  ์ •๋„๋กœ ์ž‘์€ ํฌ๊ธฐ์ด๋‹ค.

1.3 ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ๋จผ์ €, CPU ๋‚ด๋ถ€์— ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. CPU ๋‚ด๋ถ€์˜ ๊ธฐ์–ต์žฅ์น˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋กœ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. CPU ๋‚ด๋ถ€์— ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋ฉด, ์žฅ์ ์€ ์ฃผ์†Œ ๋ณ€ํ™˜ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค. ํ•˜์ง€๋งŒ ๋‹จ์ ์€ CPU ๋‚ด๋ถ€์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋Š” ํ•œ์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๊ฐ€ ๋งค์šฐ ์ œํ•œ๋œ๋‹ค.

  • CPU
    • ์žฅ์  : ์ฃผ์†Œ ๋ณ€ํ™˜ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
    • ๋‹จ์  : CPU ๋‚ด๋ถ€์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋Š” ํ•œ์ •๋˜์–ด ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๊ฐ€ ์ œํ•œ๋œ๋‹ค.

๋ฐ˜๋Œ€๋กœ, ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด๋ถ€์—์„œ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋‚ด๋ถ€์— ๋งŒ๋“œ๋Š” ๊ฒƒ์˜ ์žฅ๋‹จ์ ์€ CPU์™€ ์ • ๋ฐ˜๋Œ€์ด๋‹ค. ์ฆ‰, ์žฅ์ ์€ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ์— ์ œํ•œ์ด ์—†๋Š” ๊ฒƒ์ด๊ณ , ๋‹จ์ ์€ ์ฃผ์†Œ ๋ณ€ํ™˜ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. CPU๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์œ„์น˜ํ•œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ํ•œ ๋ฒˆ, ์‹ค์ œ ์ฃผ์†Œ๋กœ ์ ‘๊ทผํ•˜๋Š”๋ฐ ํ•œ ๋ฒˆํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์ด 2๋ฒˆ ์ ‘๊ทผํ•ด์•ผํ•˜๋ฏ€๋กœ ์†๋„ ์—ญ์‹œ 2๋ฐฐ๋กœ ๋Š๋ ค์ง„๋‹ค.

  • Memory
    • ์žฅ์  : ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ์— ์ œํ•œ์ด ์—†๋‹ค.
    • ๋‹จ์  : ์ฃผ์†Œ ๋ณ€ํ™˜ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.

1.3.1 TLB(Translation Look-aside Buffer)

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ CPU์— ๋งŒ๋“ค ๋•Œ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋งŒ๋“ค ๋•Œ ๋‘˜ ๋‹ค ์žฅ๋‹จ์ ์ด ํ™•์‹คํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋„ ์บ์‹œ๋กœ ๋งŒ๋“ค์–ด ํ•ด๊ฒฐํ•˜์˜€๋‹ค. ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๋ณ„๋„์˜ ์นฉ(SRAM)์œผ๋กœ ๋งŒ๋“ค์–ด์„œ CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์— ์œ„์น˜์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ํ…Œ์ด๋ธ”์„ TLB(Translation Look-aside Buffer) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด๋Š” CPU๋ณด๋‹ค ๋ณ€ํ™˜ ์†๋„๋Š” ๋Š๋ฆฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ํ…Œ์ด๋ธ” ํฌ๊ธฐ๋Š” ์ž‘์ง€๋งŒ, CPU๋ณด๋‹ค ํ…Œ์ด๋ธ” ํฌ๊ธฐ๊ฐ€ ํฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค ๋ณ€ํ™˜ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

TLB๋Š” ์บ์‹œ์™€ ์—ญํ• ์ด ๋™์ผํ•˜๋ฏ€๋กœ, ์‹ค์ œ ์ „์ฒด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์€ ๋ฉ”๋ชจ๋ฆฌ์— ์œ„์น˜ํ•ด ์žˆ๊ณ  ํ…Œ์ด๋ธ”์˜ ์ผ๋ถ€๋ฅผ TLB์— ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ TLB์— ์œ ํšจํ•œ ํŽ˜์ด์ง€๊ฐ€ ์žˆ์„ ๋•Œ์™€ ์—†์„ ๋•Œ์˜ ์†๋„ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

1.3.2 TLB์˜ ํšจ์œจ

๊ทธ๋ ‡๋‹ค๋ฉด, TLB์˜ ํšจ์œจ์„ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด Effective Memory Access Time์„ ๊ณ„์‚ฐํ•ด๋ณด์ž.

|์šฉ์–ด|์ •์˜|๊ฐ’| |::----|::----|:โ€”| |Tm|๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„|100ns| |Tb|TLB๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„|20ns| |hit ratio|TLB์— ์œ ํšจํ•œ ํŽ˜์ด์ง€ ์—”ํŠธ๋ฆฌ๊ฐ€ ์žˆ์„ ํ™•๋ฅ |80%|

๋จผ์ €, EMAT์˜ ์ •ํ˜•ํ™”๋œ ์‹์„ ๋ณด์ž. ๊ฐ€์ค‘ ํ‰๊ท ์˜ ์‹์ด๋‹ค. h๋Š” hit ratio์ด๋‹ค.

์‹ค์ œ ์œ ํšจํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„์€ ์œ„์™€ ๊ฐ™๋‹ค. ์—†์„ ๊ฒฝ์šฐ 2๋ฒˆ ์ฝ์–ด์•ผ ํ•˜์—ฌ Tm์„ ๋‘๋ฒˆ ๋”ํ•ด์ฃผ์—ˆ๋‹ค. TLB์— ์œ ํšจํ•œ ํŽ˜์ด์ง€๊ฐ€ ์žˆ๋‹ค๋ฉด TLB๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„๊ณผ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฝ๋Š” ์‹œ๊ฐ„๋งŒ ์žˆ์œผ๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ, TLB์— ์œ ํšจํ•œ ํŽ˜์ด์ง€๊ฐ€ ์—†๋‹ค๋ฉด ์ด๋ฅผ ๋‹ค์‹œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด 2๋ฒˆ ์ฝ์–ด์•ผ ํ•œ๋‹ค.

์˜ˆ์ œ๋ฅผ ๊ณ„์‚ฐํ•ด๋ณด๋ฉด, 0.8 * (20 + 100) + 0.2 * (20 + 100 + 100) = 140ns ์ด๋‹ค. hit ratio๋Š” ์‹ค์ œ๋กœ ํ‰๊ท  95%์ด์ƒ์ด๋ฏ€๋กœ ์ถฉ๋ถ„ํžˆ ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

1.4 ๋ณดํ˜ธ(Protection)

๋ชจ๋“  ์ฃผ์†Œ๋Š” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๊ฒฝ์œ ํ•˜๋ฏ€๋กœ, ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•ด์„œ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ ‘๊ทผ์ด ์œ ํšจํ•œ์ง€ ๊ทธ๋ ‡์ง€ ์•Š์€์ง€๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” bit๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ผœ์ ธ์žˆ์„ ๋•Œ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋งˆ๋‹ค r(read), w(write), x(execute) ๋น„ํŠธ๋ฅผ ๋‘์–ด, ํ•ด๋‹น ๋น„ํŠธ๊ฐ€ ์ผœ์ ธ์žˆ์„ ๋•Œ ๊ทธ ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ•˜๋„๋กํ•œ๋‹ค.

์œ„ ๊ทธ๋ฆผ์€ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— r,w,x ๋น„ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ ๋ชจ์Šต์ด๋‹ค. ๋งŒ์•ฝ, 1๋ฒˆ ํŽ˜์ด์ง€ ์—”ํŠธ๋ฆฌ์ฒ˜๋Ÿผ ์“ฐ๊ธฐ ๋น„ํŠธ๊ฐ€ ๊บผ์ ธ์žˆ๋Š” ํŽ˜์ด์ง€์— ์“ฐ๊ธฐ ์ž‘์—…์„ ์‹œ๋„ํ•˜๋ฉด CPU์— ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ISR์—์„œ ๊ฐ•์ œ๋กœ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒ์‹œํ‚จ๋‹ค.

1.5 ๊ณต์œ (Sharing)

๊ณต์œ ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ์“ฐ๋Š” ๋ณต์ˆ˜ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด, ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” code + data + stack ์˜์—ญ์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ™๋‹ค๋ฉด code ์˜์—ญ์€ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ•˜๋‚˜์˜ code ์˜์—ญ์„ ๋ณต์ˆ˜ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณต์œ ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด๋‹ค. ๋‹จ, code๊ฐ€ ๊ณต์œ ๋˜๋ ค๋ฉด code๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ํ”„๋กœ๊ทธ๋žจ์ด์–ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ non-self-modifying code = reentrant code(์žฌ์ง„์ž…๊ฐ€๋Šฅ ์ฝ”๋“œ) = pure code ๋ผ๊ณ  ํ•œ๋‹ค.

Reference