ืžื™ืงืจื•ืกื•ืคื˜ ืคื•ืชื—ืช ืืช CHERIoT, ืคืชืจื•ืŸ ื—ื•ืžืจื” ืœืฉื™ืคื•ืจ ืื‘ื˜ื—ืช ืงื•ื“ C

ืžื™ืงืจื•ืกื•ืคื˜ ื’ื™ืœืชื” ืคื™ืชื•ื—ื™ื ื”ืงืฉื•ืจื™ื ืœืคืจื•ื™ืงื˜ CHERIoT (Capability Hardware Extension to RISC-V for Internet of Things), ืฉืžื˜ืจืชื• ืœื—ืกื•ื ื‘ืขื™ื•ืช ืื‘ื˜ื—ื” ื‘ืงื•ื“ ืงื™ื™ื ื‘-C ื•-C++. CHERIoT ืžืฆื™ืขื” ืคืชืจื•ืŸ ื”ืžืืคืฉืจ ืœืš ืœื”ื’ืŸ ืขืœ ื‘ืกื™ืกื™ ืงื•ื“ C/C++ ืงื™ื™ืžื™ื ืœืœื ืฆื•ืจืš ื‘ืขื™ื‘ื•ื“ ืžื—ื“ืฉ. ื”ื”ื’ื ื” ืžื™ื•ืฉืžืช ื‘ืืžืฆืขื•ืช ืฉื™ืžื•ืฉ ื‘ืžื”ื“ืจ ืฉื•ื ื” ื”ืขื•ืฉื” ืฉื™ืžื•ืฉ ื‘ืกื˜ ืžื•ืจื—ื‘ ืžื™ื•ื—ื“ ืฉืœ ื”ื•ืจืื•ืช ืžืขื‘ื“ (ISA), ื”ืžืกื•ืคืง ืขืœ ื™ื“ื™ ื”ืžืขื‘ื“ ื•ื‘ืจืžืช ื”ื—ื•ืžืจื” ื ื™ื˜ื•ืจ ื’ื™ืฉื” ืœื–ื™ื›ืจื•ืŸ, ื‘ื“ื™ืงืช ื ื›ื•ื ื•ืช ื”ืขื‘ื•ื“ื” ืขื ืžืฆื‘ื™ืขื™ื ื•ื”ื‘ื˜ื—ืช ื‘ื™ื“ื•ื“ ืฉืœ ื‘ืœื•ืงื™ ืงื•ื“.

ื”ืคืจื•ื™ืงื˜ ื ื•ืฆืจ ืžืชื•ืš ืขื™ืŸ ืœืขื•ื‘ื“ื” ืฉื”ื˜ื‘ืข ื”ื ืžื•ืš ืฉืœ ืฉืคืช C ื”ื•ืคืš ืœืžืงื•ืจ ืฉื’ื™ืื•ืช ื‘ืขื‘ื•ื“ื” ืขื ื–ื™ื›ืจื•ืŸ, ืžื” ืฉืžื•ื‘ื™ืœ ืœื‘ืขื™ื•ืช ื›ืžื• ื’ืœื™ืฉืช ื—ื™ืฅ, ื’ื™ืฉื” ืœื–ื™ื›ืจื•ืŸ ืฉื›ื‘ืจ ืฉื•ื—ืจืจ, ื”ืคื ื™ื•ืช ืžืฆื‘ื™ืขื™ื ืื• ืฉื—ืจื•ืจื™ื ื›ืคื•ืœื™ื. . ื”ืชืจื’ื•ืœ ืžืจืื” ืฉืืคื™ืœื• ืชืื’ื™ื“ื™ื ื’ื“ื•ืœื™ื ื›ืžื• ื’ื•ื’ืœ ื•ืžื™ืงืจื•ืกื•ืคื˜, ืฉื™ืฉ ืœื”ื ืžื“ื™ื ื™ื•ืช ืกืงื™ืจืช ืฉื™ื ื•ื™ื™ื ืงืคื“ื ื™ืช ื•ืžืฉืชืžืฉื™ื ื‘ืฉื™ื˜ื•ืช ืคื™ืชื•ื— ืžื•ื“ืจื ื™ื•ืช ื•ื‘ื›ืœื™ ื ื™ืชื•ื— ืกื˜ื˜ื™, ืœื ื™ื›ื•ืœื™ื ืœื”ื‘ื˜ื™ื— ื”ื™ืขื“ืจ ืฉื’ื™ืื•ืช ื‘ืขื‘ื•ื“ื” ืขื ื–ื™ื›ืจื•ืŸ (ืœื“ื•ื’ืžื”, ื›-70% ืžื”ื—ื•ืœืฉื•ืช ื‘ืžื™ืงืจื•ืกื•ืคื˜ ื•-Google ื ื’ืจืžื•ืช ืžื˜ื™ืคื•ืœ ืœื ื‘ื˜ื•ื— ื‘ื–ื™ื›ืจื•ืŸ).

ื ื™ืชืŸ ืœืคืชื•ืจ ืืช ื”ื‘ืขื™ื” ืขืœ ื™ื“ื™ ืฉื™ืžื•ืฉ ื‘ืฉืคื•ืช ืชื›ื ื•ืช ื”ืžื‘ื˜ื™ื—ื•ืช ืคืขื•ืœื” ื‘ื˜ื•ื—ื” ืขื ื–ื™ื›ืจื•ืŸ, ืื• ื›ืจื™ื›ื•ืช ืขื ื‘ื“ื™ืงื•ืช ื ื•ืกืคื•ืช, ืœืžืฉืœ, ืขืœ ื™ื“ื™ ืฉื™ืžื•ืฉ ื‘ืžืงื•ื ืžืฆื‘ื™ืขื™ื ืจื’ื™ืœื™ื ื›ืžื• MiraclePtr (raw_ptr), ื”ืžื‘ืฆืข ื‘ื“ื™ืงื•ืช ื ื•ืกืคื•ืช ืœื’ื™ืฉื” ืœืื–ื•ืจื™ ื–ื™ื›ืจื•ืŸ ืžืฉื•ื—ืจืจื™ื. ืื‘ืœ ืฉื™ื˜ื•ืช ื›ืืœื” ืžืชืื™ืžื•ืช ื™ื•ืชืจ ืœืงื•ื“ ื—ื“ืฉ, ื•ืขื™ื‘ื•ื“ ืžื—ื“ืฉ ืฉืœ ืคืจื•ื™ืงื˜ื™ื ืงื™ื™ืžื™ื ืฉืœ C/C++ ื”ื•ื ื“ื™ ื‘ืขื™ื™ืชื™, ื‘ืžื™ื•ื—ื“ ืื ื”ื ืžืชื•ื›ื ื ื™ื ืœืคืขื•ืœ ื‘ืกื‘ื™ื‘ื•ืช ืžื•ื’ื‘ืœื•ืช ื‘ืžืฉืื‘ื™ื, ื›ืžื• ืžืขืจื›ื•ืช ืžืฉื•ื‘ืฆื•ืช ื•ื”ืชืงื ื™ Internet of Things.

ืจื›ื™ื‘ื™ ื”ื—ื•ืžืจื” ืฉืœ CHERIoT ืžืชื•ื›ื ื ื™ื ื›ืžื™ืงืจื•-ื‘ืงืจ ื”ืžื‘ื•ืกืก ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช RISC-V, ืชื•ืš ื”ื˜ืžืขืช ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืžืขื‘ื“ ื”ืžื•ื’ื ืช CHERI (Capability Hardware Extension to RISC-V), ื”ืžืกืคืงืช ืžื•ื“ืœ ืฉืœ ื’ื™ืฉื” ืžื‘ื•ืงืจืช ืœื–ื™ื›ืจื•ืŸ ื”ืžื‘ื•ืกืก ืขืœ "ื™ื›ื•ืœืช" (ื›ืœ ืงืจื™ืื” ื•ื›ืชื™ื‘ื” ื”ืคืขื•ืœื” ืœื–ื™ื›ืจื•ืŸ ืžื•ืจืฉื™ืช). ื‘ื”ืชื‘ืกืก ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ืขืจื›ืช ื”ื”ื•ืจืื•ืช (ISA) ื”ืžืกื•ืคืงืช ื‘-CHERIoT, ื ื‘ื ื” ืžื•ื“ืœ ืชื•ื›ื ื” ื”ืžื‘ื˜ื™ื— ืืช ื‘ื˜ื™ื—ื•ืช ื”ืขื‘ื•ื“ื” ืขื ื”ื–ื™ื›ืจื•ืŸ ื‘ืจืžืช ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ื•ื“ื“ื™ื, ืžืกืคืง ื”ื’ื ื” ืžืคื ื™ ื’ื™ืฉื” ืœื–ื™ื›ืจื•ืŸ ืฉื›ื‘ืจ ืžืฉื•ื—ืจืจ ื•ืžื™ื™ืฉื ืžืขืจื›ืช ืงืœืช ืžืฉืงืœ ืœื‘ื™ื“ื•ื“ ื’ื™ืฉื” ืœื–ื™ื›ืจื•ืŸ. . ืžื•ื“ืœ ื”ื’ื ืช ื”ืชื•ื›ื ื” ืฉืฆื•ื™ืŸ ื‘ื ืœื™ื“ื™ ื‘ื™ื˜ื•ื™ ื™ืฉื™ืจื•ืช ื‘ืžื•ื“ืœ ืฉืคืช C/C++, ื”ืžืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื• ืœื”ื’ื ื” ืขืœ ืืคืœื™ืงืฆื™ื•ืช ืงื™ื™ืžื•ืช (ื ื“ืจืฉ ืจืง ื”ื™ื“ื•ืจ ืžื—ื“ืฉ ื•ื”ืจืฆื” ืขืœ ืฆื™ื•ื“ ื”ืชื•ืžืš ื‘-ISA CHERIoT).

ื”ืคืชืจื•ืŸ ื”ืžื•ืฆืข ืžืืคืฉืจ ืœืš ืœื—ืกื•ื ืฉื’ื™ืื•ืช ื”ื’ื•ืจืžื•ืช ืœืื•ื‘ื™ื™ืงื˜ ืœื—ืจื•ื’ ืžื’ื‘ื•ืœื•ืช ื”ื–ื™ื›ืจื•ืŸ, ืื™ื ื• ืžืืคืฉืจ ื”ื—ืœืคืช ืžืฆื‘ื™ืขื™ื (ื™ืฉ ืœื”ืคื™ืง ืืช ื›ืœ ื”ืžืฆื‘ื™ืขื™ื ืžื”ืžืฆื‘ื™ืขื™ื ื”ืงื™ื™ืžื™ื), ื•ืžื ื˜ืจ ืืช ื”ื’ื™ืฉื” ืœื–ื™ื›ืจื•ืŸ ืœืื—ืจ ืฉื—ืจื•ืจ (ื›ืœ ื’ื™ืฉื” ืœื–ื™ื›ืจื•ืŸ ื‘ืืžืฆืขื•ืช ืžืฆื‘ื™ืข ืฉื’ื•ื™ ืžืฆื‘ื™ืข ืื• ืžืฆื‘ื™ืข ื”ืžืคื ื” ืœืื•ื‘ื™ื™ืงื˜ ืžืฉื•ื—ืจืจ ืžื‘ื™ืื™ื ืœื–ืจื™ืงืช ื—ืจื™ื’ื”). ืœื“ื•ื’ืžื”, ืฉื™ืžื•ืฉ ื‘-CHERIoT ืžืืคืฉืจ ืœืš ืœื™ื™ืฉื ื‘ื“ื™ืงืช ื’ื‘ื•ืœื•ืช ืื•ื˜ื•ืžื˜ื™ืช, ืžืขืงื‘ ืœืื•ืจืš ื—ื™ื™ ื”ื–ื™ื›ืจื•ืŸ ื•ืื›ื™ืคืช ืฉืœืžื•ืช ื”ืžืฆื‘ื™ืขื™ื ื‘ืจื›ื™ื‘ื™ื ื”ืžื˜ืคืœื™ื ื‘ื ืชื•ื ื™ื ืœื ืžื”ื™ืžื ื™ื ืžื‘ืœื™ ืœื“ืจื•ืฉ ืฉื™ื ื•ื™ื™ ืงื•ื“.

ื”ืคืจื•ื™ืงื˜ ื›ื•ืœืœ ืžืคืจื˜ ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ืขืจื›ืช ื”ื”ื•ืจืื•ืช ื”ืžื•ืจื—ื‘ืช ืฉืœ CHERIoT, ื™ื™ืฉื•ื ื™ื™ื—ื•ืก ืฉืœ ืžืขื‘ื“ RISC-V ืฉืœ 32 ืกื™ื‘ื™ื•ืช ื”ืชื•ืžืš ื‘-CHERIoT ISA, ื•ืขืจื›ืช ื›ืœื™ื ืžืกื•ื’ LLVM ืฉื•ื ื”. ื“ื™ืื’ืจืžื•ืช ืื‘ ื˜ื™ืคื•ืก ืฉืœ ืžืขื‘ื“ ื•ืชื™ืื•ืจื™ ื‘ืœื•ืง ื—ื•ืžืจื” ื‘-Verilog ืžื•ืคืฆื™ื ืชื—ืช ืจื™ืฉื™ื•ืŸ Apache 2.0. ืœื™ื‘ืช Ibex ืžืคืจื•ื™ืงื˜ lowRISC ืฉื™ืžืฉื” ื›ื‘ืกื™ืก ืœืžืขื‘ื“. ืžื•ื“ืœ ื”ืงื•ื“ ืฉืœ CHERIoT ISA ืžื•ื’ื“ืจ ื‘ืฉืคืช Sail ื•ื”ื•ื ืžื•ืจืฉื” ืชื—ืช ืจื™ืฉื™ื•ืŸ BSD.

ื‘ื ื•ืกืฃ, ืžื•ืฆืข ืื‘ ื˜ื™ืคื•ืก ืฉืœ ืžืขืจื›ืช ื”ื”ืคืขืœื” ื‘ื–ืžืŸ ืืžืช CHERIoT RTOS, ื”ืžืกืคืง ืืช ื”ื™ื›ื•ืœืช ืœื‘ื•ื“ื“ ืชืื™ื ื’ื ื‘ืžืขืจื›ื•ืช ืžืฉื•ื‘ืฆื•ืช ืขื 256 ืžื’ื”-ื‘ื™ื™ื˜ ืฉืœ ื–ื™ื›ืจื•ืŸ RAM. ืงื•ื“ CHERIoT RTOS ื›ืชื•ื‘ ื‘-C++ ื•ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT. ื”ืจื›ื™ื‘ื™ื ื”ื‘ืกื™ืกื™ื™ื ืฉืœ ืžืขืจื›ืช ื”ื”ืคืขืœื”, ื›ืžื• ื˜ื•ืขืŸ ื”ืืชื—ื•ืœ, ืžืชื–ืžืŸ ื•ืžืขืจื›ืช ื”ืคืฆืช ื–ื™ื›ืจื•ืŸ, ืžืขื•ืฆื‘ื™ื ื‘ืฆื•ืจื” ืฉืœ ืชืื™ื.

ืชื ื‘-CHERIoT RTOS ื”ื•ื ืฉื™ืœื•ื‘ ืžื‘ื•ื“ื“ ืฉืœ ืงื•ื“ ื•ืžืฉืชื ื™ื ื’ืœื•ื‘ืœื™ื™ื ื”ื“ื•ืžื” ืœืกืคืจื™ื™ื” ืžืฉื•ืชืคืช, ืืš ื‘ื ื™ื’ื•ื“ ืœื–ื• ื”ืื—ืจื•ื ื”, ื”ื•ื ื™ื›ื•ืœ ืœืฉื ื•ืช ืืช ืžืฆื‘ื• (ื ื™ืชืŸ ืœืฉื™ื ื•ื™) ื•ืœืจื•ืฅ ื‘ื”ืงืฉืจ ืื‘ื˜ื—ื” ื ืคืจื“. ืฉื•ื ืงื•ื“ ืžื‘ื—ื•ืฅ ืœื ื™ื›ื•ืœ ืœื”ืขื‘ื™ืจ ืฉืœื™ื˜ื” ืœืงื•ื“ ื‘ืชื ื•ืœื’ืฉืช ืœืื•ื‘ื™ื™ืงื˜ื™ื, ืœืžืขื˜ ื’ื™ืฉื” ืœื ืงื•ื“ื•ืช ื›ื ื™ืกื” ืฉื”ื•ื’ื“ืจื• ื‘ืžื™ื•ื—ื“ ื•ืฉื™ืžื•ืฉ ื‘ืžืฆื‘ื™ืขื™ื ืœืื•ื‘ื™ื™ืงื˜ื™ื ืฉื”ื•ืขื‘ืจื• ื‘ืžืคื•ืจืฉ ื‘ืขืช ืงืจื™ืื” ืœืชื ืื—ืจ. ืฉืœืžื•ืช ื•ืกื•ื“ื™ื•ืช ืžื•ื‘ื˜ื—ื•ืช ืขื‘ื•ืจ ืงื•ื“ ื•ืื•ื‘ื™ื™ืงื˜ื™ื ื’ืœื•ื‘ืœื™ื™ื ื‘ืชื.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”