Microsoft๋ ๊ธฐ์กด C ๋ฐ C++ ์ฝ๋์ ๋ณด์ ๋ฌธ์ ๋ฅผ ์ฐจ๋จํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ CHERIoT(์ฌ๋ฌผ ์ธํฐ๋ท์ฉ RISC-V์ ๊ธฐ๋ฅ ํ๋์จ์ด ํ์ฅ) ํ๋ก์ ํธ์ ๋ํ ์์ ์ ๊ณต๊ฐํ์ต๋๋ค. CHERIoT๋ ๊ธฐ์กด C/C++ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ์ฌ์์ ์์ด ๋ณดํธํ ์ ์๋ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๋ณดํธ ๊ธฐ๋ฅ์ ํ๋ก์ธ์๊ฐ ์ ๊ณตํ๋ ํน์ ํ์ฅ ํ๋ก์ธ์ ๋ช ๋ น์ด(ISA) ์ธํธ๋ฅผ ์ฌ์ฉํ๋ ์์ ๋ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด ๊ตฌํ๋๋ฉฐ, ํ๋์จ์ด ์์ค์์ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ , ํฌ์ธํฐ ์ฒ๋ฆฌ์ ์ ํ์ฑ์ ๊ฒ์ฌํ๋ฉฐ, ์ฝ๋ ๋ธ๋ก์ ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ C ์ธ์ด์ ์ ์์ค ํน์ฑ์ด ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ค๋ฅ์ ์์ธ์ด ๋์ด ๋ฒํผ ์ค๋ฒํ๋ก, ์ด๋ฏธ ํด์ ๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ, ํฌ์ธํฐ ์ญ์ฐธ์กฐ, ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ด์ค ํด์ ์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ๋ค๋ ์ ์ ๊ณ ๋ คํ์ฌ ๊ฐ๋ฐ๋์์ต๋๋ค. ์ค์ ๋ก ๊ตฌ๊ธ์ด๋ ๋ง์ดํฌ๋ก์ํํธ์ฒ๋ผ ์๊ฒฉํ ๋ณ๊ฒฝ ๊ฒํ ์ ์ฑ ์ ์ํํ๊ณ ์ต์ ๊ฐ๋ฐ ๋ฐฉ์๊ณผ ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๋๊ธฐ์ ์กฐ์ฐจ๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์ค๋ฅ๊ฐ ์๋ค๊ณ ๋ณด์ฅํ ์ ์์ต๋๋ค. (์๋ฅผ ๋ค์ด, ๋ง์ดํฌ๋ก์ํํธ์ ๊ตฌ๊ธ ์ํํธ์จ์ด ์ ํ์ ์ทจ์ฝ์ ์ค ์ฝ 70%๋ ์์ ํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์ฒ๋ฆฌ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค.)
์ด ๋ฌธ์ ๋ ๋ฉ๋ชจ๋ฆฌ์์ ์์ ํ ์์ ์ ๋ณด์ฅํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ์ถ๊ฐ ๊ฒ์ฌ๊ฐ ํฌํจ๋ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ผ๋ฐ ํฌ์ธํฐ ๋์ MiraclePtr(raw_ptr)์ ์ฌ์ฉํ๋ฉด ํด์ ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ํ ์ถ๊ฐ ๊ฒ์ฌ๋ฅผ ์ํํฉ๋๋ค. ํ์ง๋ง ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ ์ฝ๋์ ๋ ์ ํฉํ๋ฉฐ, ๊ธฐ์กด C/C++ ํ๋ก์ ํธ๋ฅผ ์ฌ์์ ํ๋ ๊ฒ์ ์๋นํ ๊น๋ค๋กญ์ต๋๋ค. ํนํ ์๋ฒ ๋๋ ์์คํ ์ด๋ ์ฌ๋ฌผ ์ธํฐ๋ท ๊ธฐ๊ธฐ์ ๊ฐ์ด ๋ฆฌ์์ค๊ฐ ์ ํ๋ ํ๊ฒฝ์์ ์คํํ๋ ค๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
CHERIoT ํ๋์จ์ด ๊ตฌ์ฑ ์์๋ RISC-V ์ํคํ ์ฒ ๊ธฐ๋ฐ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ๋ก ์ค๊ณ๋์์ผ๋ฉฐ, ๋ณดํธํ CHERI ํ๋ก์ธ์ ์ํคํ ์ฒ(RISC-V์ ๋ํ ๊ธฐ๋ฅ ํ๋์จ์ด ํ์ฅ)๋ฅผ ๊ตฌํํ์ฌ "๊ธฐ๋ฅ"(๋ฉ๋ชจ๋ฆฌ์ ๋ํ ๊ฐ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ด ์น์ธ๋จ)์ ๊ธฐ๋ฐํ ์ ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ๋ชจ๋ธ์ ์ ๊ณตํฉ๋๋ค. CHERIoT์์ ์ ๊ณตํ๋ ๋ช ๋ น์ด ์ธํธ ์ํคํ ์ฒ(ISA)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, ๊ฐ๋ณ ๊ฐ์ฒด ์์ค์์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ ์์ ์ฑ์ ๋ณด์ฅํ๊ณ , ์ด๋ฏธ ํด์ ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ์ก์ธ์ค๋ฅผ ๋ณดํธํ๋ฉฐ, ๊ฐ๋ฒผ์ด ๋ฉ๋ชจ๋ฆฌ ์ก์ธ์ค ๊ฒฉ๋ฆฌ ์์คํ ์ ๊ตฌํํ๋ ์ํํธ์จ์ด ๋ชจ๋ธ์ด ๊ตฌ์ถ๋์์ต๋๋ค. ์ด ์ํํธ์จ์ด ๋ณดํธ ๋ชจ๋ธ์ C/C++ ์ธ์ด ๋ชจ๋ธ์ ์ง์ ๋ฐ์๋์ด ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณดํธํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค(CHERIoT ISA๋ฅผ ์ง์ํ๋ ์ฅ๋น์์ ์ฌ์ปดํ์ผํ์ฌ ์คํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค).
์ ์๋ ์๋ฃจ์ ์ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ฒฝ๊ณ๋ฅผ ๋ฒ์ด๋๋ ์ค๋ฅ๋ฅผ ์ฐจ๋จํ๊ณ , ํฌ์ธํฐ ๋์ฒด๋ฅผ ํ์ฉํ์ง ์์ผ๋ฉฐ(๋ชจ๋ ํฌ์ธํฐ๋ ๊ธฐ์กด ํฌ์ธํฐ์์ ์์ฑ๋์ด์ผ ํจ), ํด์ ํ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ ์ถ์ ํฉ๋๋ค(์๋ชป๋ ํฌ์ธํฐ๋ฅผ ํตํ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด๋ ํด์ ๋ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ํฌ์ธํฐ๋ ์์ธ๋ฅผ ๋ฐ์์ํด). ์๋ฅผ ๋ค์ด, CHERIoT๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ ๊ฒฝ๊ณ ๊ฒ์ฌ๋ฅผ ๊ตฌํํ๊ณ , ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์๋ช ์ ์ถ์ ํ๋ฉฐ, ์ ๋ขฐํ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ตฌ์ฑ ์์์์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ํฌ์ธํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
์ด ํ๋ก์ ํธ์๋ ํ์ฅ๋ CHERIoT ๋ช ๋ น์ด ์ธํธ ์ํคํ ์ฒ ์ฌ์, CHERIoT ISA๋ฅผ ์ง์ํ๋ 32๋นํธ RISC-V CPU์ ์ฐธ์กฐ ๊ตฌํ, ๊ทธ๋ฆฌ๊ณ ์์ ๋ LLVM ํดํท์ด ํฌํจ๋ฉ๋๋ค. Verilog๋ก ์์ฑ๋ CPU ํ๋กํ ํ์ ํ๋ก์ ํ๋์จ์ด ๋ธ๋ก ์ค๋ช ์ Apache 2.0 ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. CPU๋ lowRISC ํ๋ก์ ํธ์ Ibex ์ปค๋์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. CHERIoT ISA ์ฝ๋ ๋ชจ๋ธ์ Sail ์ธ์ด๋ก ์ ์๋๋ฉฐ BSD ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค.
๋ํ, 256MB RAM์ ํ์ฌํ ์๋ฒ ๋๋ ์์คํ ์์๋ ์ปดํํธ๋จผํธ๋ฅผ ๋ถ๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ CHERIoT RTOS ์ค์๊ฐ ์ด์์ฒด์ ํ๋กํ ํ์ ์ ์ ์ํฉ๋๋ค. CHERIoT RTOS ์ฝ๋๋ C++๋ก ์์ฑ๋์์ผ๋ฉฐ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฐฐํฌ๋ฉ๋๋ค. ๋ถํธ๋ก๋, ์ค์ผ์ค๋ฌ, ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์์คํ ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ OS ๊ตฌ์ฑ ์์๋ ์ปดํํธ๋จผํธ ํํ๋ก ์ค๊ณ๋์์ต๋๋ค.
CHERIoT RTOS์ ๊ตฌํ์ ์ฝ๋์ ์ ์ญ ๋ณ์์ ๊ฒฉ๋ฆฌ๋ ์กฐํฉ์ผ๋ก, ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ฌํ์ง๋ง ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ๋ฌ๋ฆฌ ๋ณ๊ฒฝ ๊ฐ๋ฅํ๊ณ ๋ณ๋์ ๋ณด์ ์ปจํ
์คํธ์์ ์คํ๋ฉ๋๋ค. ์ธ๋ถ ์ฝ๋๋ ํน๋ณํ ์ ์๋ ์ง์
์ ์ ํธ์ถํ๊ฑฐ๋ ๋ค๋ฅธ ๊ตฌํ์ ํธ์ถํ ๋ ๋ช
์์ ์ผ๋ก ์ ๋ฌ๋ ๊ฐ์ฒด์ ๋ํ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ๊ตฌํ ๋ด์ ์ฝ๋๋ก ์ ์ด๊ถ์ ๋๊ธฐ๊ฑฐ๋ ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์์ต๋๋ค. ๊ตฌํ ๋ด์ ์ฝ๋์ ์ ์ญ ๊ฐ์ฒด์ ๋ํ ๋ฌด๊ฒฐ์ฑ๊ณผ ๊ธฐ๋ฐ์ฑ์ ๋ณด์ฅ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru
