Microsoft meghere CHERIoT, ihe ngwọta ngwaike iji kwalite nchekwa koodu C

Microsoft achọpụtala mmepe metụtara ọrụ CHERIoT (Ike Hardware Extension to RISC-V for Internet of Things), nke ezubere igbochi nsogbu nchekwa na koodu dị na C na C++. CHERIoT na-enye ihe ngwọta na-enye gị ohere ichekwa koodu C/C++ dị na-enweghị mkpa ịmegharị ha. A na-emejuputa nchekwa site na iji ihe nchịkọta gbanwetụrụ nke na-eji usoro nhazi nhazi pụrụ iche (ISA), nke onye nrụpụta na-enye yana na ịnweta ebe nchekwa nke ọkwa ngwaike, na-enyocha izi ezi nke ọrụ na ihe nrịbama ma hụ na iche nke koodu blocks.

Emere oru a site n'ile anya n'eziokwu na ọdịdị dị ala nke asụsụ C na-aghọ isi iyi nke njehie mgbe ị na-arụ ọrụ na ebe nchekwa, na-eduga ná nsogbu ndị dị ka ihe na-ekpuchi ihe nkpuchi, ịnweta ebe nchekwa a tọhapụrụlarị, nkwụsịtụ pointer, ma ọ bụ okpukpu abụọ. . Omume na-egosi na ọbụna nnukwu ụlọ ọrụ dị ka Google na Microsoft, ndị nwere usoro nyocha mgbanwe siri ike ma jiri usoro mmepe ọgbara ọhụrụ na ngwaọrụ nyocha static, enweghị ike ikwe nkwa na enweghị njehie mgbe ị na-arụ ọrụ na ebe nchekwa (dịka ọmụmaatụ, ihe dịka 70% nke adịghị ike na Microsoft). na Google kpatara site na njikwa ebe nchekwa adịghị mma).

Enwere ike idozi nsogbu ahụ site na iji asụsụ mmemme nke na-ekwe nkwa ịrụ ọrụ nchekwa na ebe nchekwa, ma ọ bụ na-ejikọta ya na ndenye ego ndị ọzọ, dịka ọmụmaatụ, site na iji akara ndị nkịtị dị ka MiraclePtr (raw_ptr), nke na-eme nyocha ọzọ maka ịnweta ebe nchekwa nwere onwe. Ma ụzọ ndị dị otú ahụ dabara adaba maka koodu ọhụrụ, na ịrụgharị ọrụ C/C++ dị adị bụ nnọọ nsogbu, karịsịa ma ọ bụrụ na e mere ha ka ha na-agba ọsọ na gburugburu ebe a na-egbochi ihe onwunwe, dị ka usoro agbakwunyere na Ịntanetị ngwaọrụ.

Emebere akụrụngwa ngwaike CHERIoT dị ka microcontroller dabere na ihe owuwu RISC-V, na-emejuputa ihe nchekwa CHERI (Capability Hardware Extension to RISC-V), nke na-enye ihe atụ nke ịnweta ebe nchekwa a na-achịkwa dabere na “ikike” (nke ọ bụla na-agụ ma dee. Enyere ikike ịrụ ọrụ na ebe nchekwa). Dabere na ntuziaka set architecture (ISA) enyere na CHERIoT, a na-ewu ụdị sọftụwia nke na-ekwe nkwa nchekwa nke iji ebe nchekwa rụọ ọrụ n'ọkwa nke ihe ọ bụla, na-enye nchebe pụọ n'inweta ebe nchekwa enwerelarị, yana mejuputa sistemu ohere ebe nchekwa dị fechaa. . Ụdị nchedo sọftụwia akọwapụtara kpọmkwem na-egosipụta ozugbo na ụdị asụsụ C/C++, nke na-enye ohere iji chekwaa ngwa ndị dị (naanị nchikota na ịgba ọsọ na akụrụngwa na-akwado ISA CHERIoT ka achọrọ).

Ngwọta a na-atụ aro na-enye gị ohere igbochi njehie na-eme ka ihe gafee ókè nke ebe nchekwa, anaghị ekwe ka ngbanwe pointer (a ga-emepụta ihe niile site na ihe ndị dị ugbu a), na nyochaa ohere ebe nchekwa mgbe ị nwetachara (nweta ọ bụla na ebe nchekwa site na iji ihe na-ezighi ezi). pointer ma ọ bụ ihe ntụnye aka na-ezo aka n'ihe a tọhapụrụ na-eme ka a tụpụ ya). Dịka ọmụmaatụ, iji CHERIoT na-enye gị ohere imejuputa nyocha akpaghị aka, nleba anya ndụ ebe nchekwa, yana mmanye iguzosi ike n'ezi ihe n'ime akụrụngwa na-ejikwa data enweghị ntụkwasị obi na-achọghị mgbanwe koodu ọ bụla.

Ihe oru ngo a gunyere nkowa nke ihe owuwu CHERIoT agbatịgoro, mmejuputa nrụtụ aka nke 32-bit RISC-V CPU na-akwado CHERIoT ISA, yana ngwa ọrụ LLVM emezigharịrị. A na-ekesa eserese CPU na nkọwa ngọngọ ngwaike na Verilog n'okpuru ikike Apache 2.0. Ejiri isi Ibex sitere na obere RISC oru ngo dị ka ntọala maka CPU. A kọwapụtara ụdị koodu CHERIoT ISA n'asụsụ Sail ma nwee ikikere n'okpuru ikikere BSD.

Na mgbakwunye, a na-atụpụta ụdị sistemụ arụmọrụ CHERIoT RTOS, nke na-enye ikike ikewapụ akụkụ ọbụlagodi na sistemụ agbakwunyere nwere 256 MB Ram. Edere koodu CHERIoT RTOS na C++ ma kesaa ya n'okpuru ikike MIT. Ihe ndị bụ isi nke OS, dị ka bootloader, nhazi oge na usoro nkesa ebe nchekwa, ka emebere n'ụdị nke akụkụ.

Oghere dị na CHERIoT RTOS bụ ngwakọta dịpụrụ adịpụ nke koodu na mgbanwe ụwa niile nke yiri ọba akwụkwọ nkekọrịta, mana n'adịghị ka nke ikpeazụ, ọ nwere ike ịgbanwe steeti ya (mutable) wee na-agba ọsọ na nchekwa nchekwa dị iche. Ọ nweghị koodu si n'èzí nwere ike ịnyefe njikwa na koodu n'ime ụlọ na ịnweta ihe, belụsọ site na ịnweta ebe ntinye akọwapụtara na iji ntụnye aka n'ihe agafere nke ọma mgbe ị na-akpọ akụkụ ọzọ. A na-ekwe nkwa iguzosi ike n'ezi ihe na nzuzo maka koodu na ihe zuru ụwa ọnụ na ngalaba.

isi: opennet.ru

Tinye a comment