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