Кіріспе

OpenRISC – бұл қысқартылған нұсқаулар жиынтығы компьютерлік (RISC) қағидалары негізінде ашық бастапқы кодты аппараттық құралдарға негізделген орталық процессорларды (CPU) әзірлеу жобасы. Ол ашық бастапқы лицензиямен қолданылатын нұсқаулар жиынтығы архитектурасын (ISA) қамтиды. Бұл OpenCores қауымдастығының түпкілікті флагмандық жобасы. Бірінші (және 2019 жылға дейін жалғыз) архитектуралық сипаттама OpenRISC 1000 ("OR1k") үшін жасалған, ол 32 биттік және 64 биттік процессорлар отбасын, сондай-ақ опционалды жылжымалы нүктелік арифметика мен векторлық өңдеу мүмкіндіктерін сипаттайды. Бұл сипаттаманың OpenRISC 1200 іске асырылуын 2000 жылы Дамжан Лампрет Verilog аппараттық сипаттама тілінде (HDL) жазған. OR 1200-ге қарағанда бірнеше артықшылықтары бар mor1kx іске асырылуын Джулиус Бакстер жобалап, ол да Verilog тілінде жазылған. Сонымен қатар, OR1k сипаттамасын іске асыратын бағдарламалық симуляторлар да бар. Аппараттық дизайн GNU Lesser General Public License (LGPL) лицензиясы бойынша, ал модельдер мен микрокод GNU General Public License (GPL) лицензиясы бойынша жарияланды. OpenRISC 1200 негізіндегі чип жүйесінің (SoC) анықтамалық нұсқасы әзірленді, ол OpenRISC Reference Platform System on Chip (ORPSoC) деп аталды. Бірнеше топтар ORPSoC және басқа OR1200 негізделген дизайнды далалық бағдарламаланатын қақпалық тізбектерде (FPGA) іске қосты, сондай-ақ бірнеше коммерциялық өнімдер жасалды. Кейінгі SoC дизайнды, сонымен қатар OpenRisc 1000 CPU іске асырылымы негізінде, minSoC, OpTiMSoC және MiSoC құрады.

Нұсқаулар жиынтығы

Нұсқаулар жиынтығы – 3 операндты жүктеу-сақтау архитектурасын қолдана отырып, 16 немесе 32 жалпы мақсаттағы регистрлермен және 32 биттік белгілі бір ұзындықтағы нұсқауларға ие, MIPS архитектурасын еске түсіретін қарапайым, дәстүрлі RISC архитектурасы. 32 және 64 биттік нұсқалар арасындағы нұсқаулар жиынтығы көбінесе бірдей, басты айырмашылық – регистрлердің ені (32 немесе 64 бит) және беттік кестелердің құрылымы. OpenRISC спецификациясы қазіргі заманғы десктоптық және серверлік процессорларға тән барлық мүмкіндіктерді қамтиды: қадағалау режимі және виртуалды жад жүйесі, жад беттеріне оқу, жазу және орындау бақылауының опциялық мүмкіндігі, сондай-ақ бірнеше процессор арасында синхрондау және үзілістерді басқаруға арналған нұсқаулар. Тағы бір маңызды ерекшелік – сандық сигналды өңдеуге арналған, бір нұсқаумен бірнеше дерек (SIMD) нұсқауларының кең жиынтығы.

Қолданылу

Көптеген іске асырулар далалық бағдарламаланатын қақпа массивтерінде (FPGA) жасалады, бұл дизайнды өнімділіктен кейін қайта итерациялау мүмкіндігін береді. 2018 жылға қарай OpenRISC 1000 тұрақты деп есептелді, сондықтан ORSoC (OpenCores иесі) өнімділікті арттыру үшін арзанға түсетін мақсатты интегралдық схеманы (ASIC) жасау үшін халықтан қаржы жинау жобасын бастады. Бұл қадамға қауымдастықтан сын келді. Жоба көздеген мақсатына жете алмады. 2024 жылға дейін ашық кодты ASIC өндірілген жоқ.

Коммерциялық іске асыру

Бірнеше коммерциялық ұйымдар OpenRISC 1000 архитектурасының туындыларын, соның ішінде ORSoC-тен ORC32 1208 және Beyond Semiconductor-тен BA12, BA14 және BA22-ні әзірледі. Dynalith Systems OpenRISC 1000 және BA12-ні қолдана алатын iNCITE FPGA прототиптеу тақтасын ұсынады. Flextronics (Flex) және Jennic Limited OpenRISC-ті қолданысқа арналған интегралдық схеманың (ASIC) бөлігі ретінде өндірді. Samsung OpenRISC 1000-ды DTV жүйесіндегі микросхемаларда пайдаланады (SDP83 B сериясы, SDP92 C сериясы, SDP1001/SDP1002 D сериясы, SDP1103/SDP1106 E сериясы). Allwinner Technology компаниясы AR100 қуат контроллерінде OpenRISC өзегін пайдаланады, ол A31 ARM негізделген SoC құрамына кіреді. Cadence Design Systems OpenRISC-ті құралдар тізбегі ағындарын құжаттауда эталондық архитектура ретінде қолдана бастады (мысалы, UVM эталондық ағыны, қазір Accellera-ға үлестірілді). TechEdSat, NASA OpenRISC архитектурасына негізделген алғашқы Linux компьютері 2012 жылдың шілдесінде ұшырылды және 2012 жылдың қазан айында ÅAC Microtec және ÅAC Microtec North America компаниялары ұсынған, құрастырған және сынаған аппараттық құралдармен Халықаралық ғарыш станциясына жеткізілді.

Академиялық және коммерциялық емес пайдалану

Ашық бастапқы коды болғандықтан, OpenRISC академиялық және хоббишілер қатарында танымал болды. Мысалы, Стефан Валлентовиц және Мюнхен техникалық университетінің Интегралды жүйелер институтындағы оның командасы OpenRISC-ті көп ядролы процессор архитектураларын зерттеуде пайдаланды. Ұлыбританиядағы Open Source Hardware User Group (OSHUG) OpenRISC бойынша екі рет оқу өткізді, ал хоббиші Свен Аке Андерссон жаңадан бастаушылар үшін OpenRISC туралы толыққанды блог жазды, ол Electronic Engineering Times (EE Times) қызығушылығын тартып алды. Себастьян Макке OpenRISC 1000 эмуляторы jor1k-ты JavaScript-те іске асырды, ол X Window System және Wayland қолдауымен Linux-ты іске қосады.

Құрал тізбегін қолдау

OpenRISC қауымдастығы C және C++ бағдарламалау тілдерінде дамуды қолдау үшін GNU құралдар тізбесін OpenRISC-ке көшірді. Осы құралдар тізбегін пайдалану арқылы newlib, uClibc, musl (1.1.4 нұсқасынан бастап) және glibc кітапханалары процессорға портталды. Dynalith осы құралдар тізбегіне негізделген OpenIDEA графикалық интеграцияланған даму ортасын (IDE) ұсынады. LLVM-ді OpenRISC 1000 архитектурасына порттау жобасы 2012 жылдың басында басталды. GCC 9 OpenRISC қолдауымен жарыққа шықты. OR1K жобасы нұсқаулар жиынтығын симуляциялайтын or1ksim құралын ұсынады. Басты жетістік – OR1200, Verilog HDL-дегі тіркелімдік беру деңгейі (RTL) моделі, одан ORPSoC-де SystemC негізіндегі циклдік дәлдікпен модель құруға болады. OpenRISC 1200-нің жоғары жылдамдықты моделі Imperas ұйымдастырған Ашық виртуалды платформалар (OVP) бастамасы арқылы қолжетімді (OVPsim қараңыз).

Linux-ты қолдау

Linux негізгі ядросы 3.1 нұсқасынан бастап OpenRISC қолдауын алды. Осы нұсқада қосылған реализация – 32 биттік OpenRISC 1000 (or1k) отбасы. Бұрынғы OpenRISC 1000 архитектурасы енді негізгі портпен алмастырылды.

RTOS қолдау

OpenRISC-ке бірнеше нақты уақыт операциялық жүйелері (RTOS) көшірілді, оның ішінде NuttX, RTEMS, FreeRTOS және eCos.

QEMU-ны қолдау

1.2 нұсқасынан бастап QEMU OpenRISC платформаларын эмуляциялауға қолдау көрсетеді.