Microsoft, C ์ฝ”๋“œ ๋ณด์•ˆ ํ–ฅ์ƒ์„ ์œ„ํ•œ ํ•˜๋“œ์›จ์–ด ์†”๋ฃจ์…˜ CHERIoT ๊ณต๊ฐœ

Microsoft๋Š” C ๋ฐ C++์˜ ๊ธฐ์กด ์ฝ”๋“œ์—์„œ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” CHERIoT(์‚ฌ๋ฌผ ์ธํ„ฐ๋„ท์šฉ RISC-V ๊ธฐ๋Šฅ ํ•˜๋“œ์›จ์–ด ํ™•์žฅ) ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จ๋œ ๊ฐœ๋ฐœ ์ƒํ™ฉ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. CHERIoT๋Š” ๊ธฐ์กด C/C++ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์žฌ์ž‘์—…ํ•  ํ•„์š” ์—†์ด ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋Š” ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ˜ธ๋Š” ํ”„๋กœ์„ธ์„œ๊ฐ€ ์ œ๊ณตํ•˜๊ณ  ํ•˜๋“œ์›จ์–ด ์ˆ˜์ค€์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ํฌ์ธํ„ฐ ์ž‘์—…์˜ ์ •ํ™•์„ฑ์„ ํ™•์ธํ•˜๊ณ  ์ฝ”๋“œ ๋ธ”๋ก์˜ ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์žฅํ•˜๋Š” ํŠน์ˆ˜ ํ™•์žฅ ํ”„๋กœ์„ธ์„œ ๋ช…๋ น ์„ธํŠธ(ISA)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ˆ˜์ •๋œ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” C ์–ธ์–ด์˜ ์ €์ˆ˜์ค€ ํŠน์„ฑ์ด ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—… ์‹œ ์˜ค๋ฅ˜์˜ ์›์ธ์ด ๋˜์–ด ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ, ์ด๋ฏธ ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค, ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ ๋˜๋Š” ์ด์ค‘ ํ•ด์ œ์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์—ผ๋‘์— ๋‘๊ณ  ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. . ์‹ค์Šต์— ๋”ฐ๋ฅด๋ฉด ์—„๊ฒฉํ•œ ๋ณ€๊ฒฝ ๊ฒ€ํ†  ์ •์ฑ…์„ ๊ฐ–๊ณ  ํ˜„๋Œ€์ ์ธ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๊ณผ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Google ๋ฐ Microsoft์™€ ๊ฐ™์€ ๋Œ€๊ธฐ์—…์กฐ์ฐจ๋„ ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—… ์‹œ ์˜ค๋ฅ˜๊ฐ€ ์—†์Œ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(์˜ˆ: Microsoft์˜ ์ทจ์•ฝ์  ์ค‘ ์•ฝ 70%). Google์€ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์ฒ˜๋ฆฌ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค).

๋ฉ”๋ชจ๋ฆฌ์™€์˜ ์•ˆ์ „ํ•œ ์ž‘๋™์„ ๋ณด์žฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์˜ˆ๋ฅผ ๋“ค์–ด ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” MiraclePtr(raw_ptr)๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜ ํฌ์ธํ„ฐ ๋Œ€์‹  ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€ ๊ฒ€์‚ฌ๊ฐ€ ํฌํ•จ๋œ ๋ฐ”์ธ๋”ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ์ƒˆ๋กœ์šด ์ฝ”๋“œ์— ๋” ์ ํ•ฉํ•˜๋ฉฐ ๊ธฐ์กด C/C++ ํ”„๋กœ์ ํŠธ๋ฅผ ์žฌ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ๋ฌธ์ œ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ ๋ฐ ์‚ฌ๋ฌผ ์ธํ„ฐ๋„ท ์žฅ์น˜์™€ ๊ฐ™์ด ๋ฆฌ์†Œ์Šค๊ฐ€ ์ œํ•œ๋œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋„๋ก ์„ค๊ณ„๋œ ๊ฒฝ์šฐ ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

CHERIoT ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ ์š”์†Œ๋Š” RISC-V ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋งˆ์ดํฌ๋กœ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์„ค๊ณ„๋˜์–ด ๋ณดํ˜ธ๋˜๋Š” CHERI(Capability Hardware Extension to RISC-V) ํ”„๋กœ์„ธ์„œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” "๋Šฅ๋ ฅ"(๊ฐ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ œ์–ด๋œ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ์ž‘์—…์ด ์Šน์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค). CHERIoT์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ช…๋ น์–ด ์„ธํŠธ ์•„ํ‚คํ…์ฒ˜(ISA)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ณ„ ๊ฐœ์ฒด ์ˆ˜์ค€์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ž‘์—…์˜ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ์ด๋ฏธ ํ•ด์ œ๋œ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค์— ๋Œ€ํ•œ ๋ณดํ˜ธ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ๊ฒฝ๋Ÿ‰ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค ๊ฒฉ๋ฆฌ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ชจ๋ธ์ด ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. . ์ง€์ •๋œ ์†Œํ”„ํŠธ์›จ์–ด ๋ณดํ˜ธ ๋ชจ๋ธ์€ C/C++ ์–ธ์–ด ๋ชจ๋ธ์— ์ง์ ‘ ๋ฐ˜์˜๋˜๋ฏ€๋กœ ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณดํ˜ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ISA CHERIoT๋ฅผ ์ง€์›ํ•˜๋Š” ์žฅ๋น„์—์„œ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค).

์ œ์•ˆ๋œ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ฒฝ๊ณ„๋ฅผ ๋ฒ—์–ด๋‚˜๊ฒŒ ๋งŒ๋“œ๋Š” ์˜ค๋ฅ˜๋ฅผ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ๊ณ , ํฌ์ธํ„ฐ ๋Œ€์ฒด๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ(๋ชจ๋“  ํฌ์ธํ„ฐ๋Š” ๊ธฐ์กด ํฌ์ธํ„ฐ์—์„œ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•จ), ํ•ด์ œ ํ›„ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค(์ž˜๋ชป๋œ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค)๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ์ธํ„ฐ ๋˜๋Š” ํ•ด์ œ๋œ ๊ฐœ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํฌ์ธํ„ฐ๋กœ ์ธํ•ด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, CHERIoT๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ์ž๋™ ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ, ๋ฉ”๋ชจ๋ฆฌ ์ˆ˜๋ช… ์ถ”์  ๋ฐ ํฌ์ธํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์ ์šฉ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ์—๋Š” ํ™•์žฅ๋œ CHERIoT ๋ช…๋ น์–ด ์„ธํŠธ ์•„ํ‚คํ…์ฒ˜ ์‚ฌ์–‘, CHERIoT ISA๋ฅผ ์ง€์›ํ•˜๋Š” 32๋น„ํŠธ RISC-V CPU์˜ ์ฐธ์กฐ ๊ตฌํ˜„ ๋ฐ ์ˆ˜์ •๋œ LLVM ํˆดํ‚ท์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Verilog์˜ CPU ํ”„๋กœํ† ํƒ€์ž… ๋‹ค์ด์–ด๊ทธ๋žจ๊ณผ ํ•˜๋“œ์›จ์–ด ๋ธ”๋ก ์„ค๋ช…์€ Apache 2.0 ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. lowRISC ํ”„๋กœ์ ํŠธ์˜ Ibex ์ฝ”์–ด๊ฐ€ CPU์˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. CHERIoT ISA ์ฝ”๋“œ ๋ชจ๋ธ์€ Sail ์–ธ์–ด๋กœ ์ •์˜๋˜๋ฉฐ BSD ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ผ์ด์„ ์Šค๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ 256MB RAM์„ ๊ฐ–์ถ˜ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์—์„œ๋„ ๊ตฌํš์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” CHERIoT RTOS ์‹ค์‹œ๊ฐ„ ์šด์˜ ์ฒด์ œ์˜ ํ”„๋กœํ† ํƒ€์ž…์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. CHERIoT RTOS ์ฝ”๋“œ๋Š” C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ๋ถ€ํŠธ๋กœ๋”, ์Šค์ผ€์ค„๋Ÿฌ, ๋ฉ”๋ชจ๋ฆฌ ๋ถ„๋ฐฐ ์‹œ์Šคํ…œ ๋“ฑ OS์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์š”์†Œ๋Š” ๊ตฌํš ํ˜•ํƒœ๋กœ ์„ค๊ณ„๋ฉ๋‹ˆ๋‹ค.

CHERIoT RTOS์˜ ๊ตฌํš์€ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์œ ์‚ฌํ•œ ์ฝ”๋“œ์™€ ์ „์—ญ ๋ณ€์ˆ˜์˜ ๊ฒฉ๋ฆฌ๋œ ์กฐํ•ฉ์ด์ง€๋งŒ ํ›„์ž์™€ ๋‹ฌ๋ฆฌ ์ƒํƒœ(๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ณ„๋„์˜ ๋ณด์•ˆ ์ปจํ…์ŠคํŠธ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน๋ณ„ํžˆ ์ •์˜๋œ ์ง„์ž…์ ์— ์•ก์„ธ์Šคํ•˜๊ณ  ๋‹ค๋ฅธ ๊ตฌํš์„ ํ˜ธ์ถœํ•  ๋•Œ ๋ช…์‹œ์ ์œผ๋กœ ์ „๋‹ฌ๋œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์™ธ๋ถ€์˜ ์ฝ”๋“œ๋Š” ๊ตฌํš์˜ ์ฝ”๋“œ๋กœ ์ œ์–ด๋ฅผ ์ „์†กํ•˜๊ณ  ๊ฐ์ฒด์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ตฌํš์˜ ์ฝ”๋“œ ๋ฐ ์ „์—ญ ๊ฐœ์ฒด์— ๋Œ€ํ•ด ๋ฌด๊ฒฐ์„ฑ๊ณผ ๊ธฐ๋ฐ€์„ฑ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€