
RISC-V: mühəndisin arxitekturaya dair ətraflı tənqidi
Mühəndis Dmitri Qrinberq RISC-V-nin nə kiçik mikrokontrollerlər, nə də server nüvələri üçün ən yaxşı ola bilməyəcəyini, məcburi olmayan xüsusiyyətlərin isə standarta uyğunluğu demək olar ki, mənasız etdiyini iddia edən uzun esse dərc edib.
Mühəndis Dmitri Qrinberq özünün dmitry.gr bloqunda "RISC-V: They Should Have Known Better" başlıqlı uzun esse dərc edib və açıq əmrlər toplusu arxitekturasına qarşı skeptisizminin arxasındakı bütün arqumentləri bir mətnə toplayıb. Onun sözlərinə görə, mətn növbəti dəfə mövqeyini izah etməsi xahiş olunanda tək bir keçidlə cavab verə bilmək üçün yazılıb.
Bir arxitektura hamıya xidmət edə bilməz
Heç bir əmrlər toplusu bütün istifadə halları üçün ən yaxşı ola bilməz; yüksək məhsuldarlıqlı nüvənin tələbləri ilə ucuz mikrokontrollerin tələbləri tamamilə əksdir. Qrinberq hesab edir ki, RISC-V sonda 8051-in tutduğu ucuz, birdəfəlik mikrokontroller sahəsini ələ keçirəcək; lakin bunu əmrlər toplusunun dizaynı sayəsində deyil, ona baxmayaraq edəcək. Buna kəsilmələrin emalı yaxşı nümunədir: standarta uyğun yol Zicsr genişlənməsini və mscratch ya da sscratch registrini tələb edir və müəllifin hesablamasına görə C ilə yazılmış emaledici işə başlamazdan əvvəl ən azı 44 tsikl sərf olunur. Cortex-M0 kəsilməyə 15 tsikldə girir, 12 tsikldə çıxır, yəni cəmi 27; çünki registrləri aparat səviyyəsində saxlayır. Daha az registrə malik RV32E variantı da 38 tsikldə dayanır. CLIC-in və istehsalçıların öz sürətli IRQ genişlənmələrinin mövcudluğu əlavə ittihamdır: baza əmrlər toplusu istehsalçıları onillik nüvənin səviyyəsinə çatmaq üçün qeyri-standart silisium yaratmağa məcbur edir.
Sıxılmış əmrlər və massivlər
Müəllif sıxılmış əmrlərin dizaynını xüsusilə zəif hesab edir. Bayt yazma üçün 16 bitlik əmr yalnız sıfırdan üçə qədər yerdəyişməni kodlaşdıra bilir, yarım söz yazma sıfır ya da iki variantı təklif edir, söz yazma isə sıfırdan 124-ə qədər imkan verir. Cortex-M0 baytlar üçün sıfırdan 31-ə, yarım sözlər üçün sıfırdan 62-yə qədər yerdəyişməyə icazə verir. Üstəlik bayt və yarım söz yazma əmrləri C genişlənməsinin deyil, ayrıca Zcb genişlənməsinin bir hissəsidir. İkinci problem indeksli ünvanlamadır: x86-da [ebx + esi * 4], ARM-da [R0, R1, LSL #2] var; RISC-V-də isə massivə bir müraciət üç əmr tələb edir. Sürətli nüvələrin onları birləşdirəcəyi barədə adi bəhanə zəifdir: tanınan heç bir nüvə ikidən çox ardıcıl əmri birləşdirmir. SHxADD əmrlərini əhatə edən Zba genişlənməsi isə yalnız 2021-ci ildə təsdiqlənib, yəni baza spesifikasiyasından iki ildən çox sonra.
Hər şey məcburi deyil
Qrinberq RISC-V-ni USB-C və RCS ilə müqayisə edir: standarta uyğunluq ifadəsi demək olar ki, heç nə ifadə etmir, çünki demək olar ki, hər şey məcburi deyil. Vurma məcburi deyil, bölmə məcburi deyil; istifadəçi və supervisor rejimləri, CSR registrləri və sıxılmış əmrlər də belədir. Əvvəlcə baza əmrlər toplusuna daxil olan CSR-lər ayrıca Zicsr genişlənməsinə köçürüldü; buna görə bu gün baza toplusu nə kəsilmələri standart şəkildə emal edə, nə də imtiyaz səviyyələrini ayıra bilir. Bir xüsusiyyətin tətbiq olunub-olunmadığını bildirməli olan registr misa-dır; özü bir CSR-dir, dəstəyi məcburi deyil və tamamilə sıfır kimi oxunmasına icazə verilir. Eyni hal yaddaşa implementasiyadan asılı ünvanda sərhədlənmiş sistem taymerinə və hər ikisi məcburi olmayan iki kəsilmə vektorlaşdırma rejiminə də aiddir.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.