Ван дер Эльст, Франсуа
- 1 year ago
- 0
- 0
OpenRISC — открытый микропроцессор архитектуры RISC с открытым исходным кодом на языке описания аппаратного обеспечения Verilog . Проект создан сообществом OpenCores и распространяется по лицензии GNU LGPL . OpenRISC воплощён аппаратно и успешно производится в виде интегральных микросхем и ПЛИС .
Единственная версия архитектуры, OpenRISC 1000 (or1k), описывает семейство 32- и 64-битных процессоров с опциональными расширениями: поддержкой вычислений над числами с плавающей запятой и поддержкой векторных операций.
Команда разработчиков OpenCores опубликовало первую реализацию, , написанную на языке Verilog . Аппаратная часть проекта имеет лицензию LGPL, модели и прошивки - GPL. Реализация системы-на-кристалле с OpenRISC 1200 называется ORPSoC ( OpenRISC Reference Platform System-on-Chip ). Работоспособность ORPSoC и других вариантов OR1200 была продемонстрирована на FPGA .
На OpenRISC портирован набор инструментов для разработки GNU toolchain , поддерживающий несколько языков программирования , также Linux и μClinux .
OpenRISC поддерживается ядром linux начиная с версии 3.1.
Набор инструкций (ORBIS32) представляет собой простой вариант RISC, схожий с MIPS , и использует трехоперандные команды фиксированной длины (32 бита). Работа с памятью возможна только с помощью операций load и store. Доступно 16 или 32 регистров общего назначения. 64-битная и 32-битная версии инструкций во многом схожи, основными различиями являются: увеличение размера регистров до 64 бит и изменение формата таблицы страниц.
Спецификации OpenRISC включают также современные возможности: режим супервизора, виртуальную память, возможность установки прав чтение/изменение/исполнение на каждую страницу памяти, атомарные инструкции, обработку межпроцессорных исключений.
ORFP32X — расширение для работы с числами с плавающей запятой (IEEE-754)
По состоянию на октябрь 2011 года имеются некоторые неоднозначности в спецификации 64-битного режима.
Опционально может реализовываться поддержка SIMD операций.
Чаще всего реализуется на FPGA (рекомендуется ПЛИС, содержащая более 40 тыс. 4-LUT).
Участники проекта OpenCores собирались выпустить совместимую с OpenRISC 1000 заказную микросхему (ASIC) для получения большей производительности. В 2011 году был начат сбор денег.
ORSoC предлагает варианты ORC32-1208, — BA12, BA14, BA22.
и использовали OpenRISC ядро как часть собственных ASIC. Samsung использует OpenRISC 1000 в системах-на-кристалле для DTV (SDP83 B-Series, SDP92 C-Series, SDP1001/SDP1002 D-Series, SDP1103/SDP1106 E-Series).
Allwinner Technology использовал OpenRISC в контроллере AR100, который является частью СнК A31 (основной процессор в системе — ARM).
Компания Cadence Design Systems использует OpenRISC в качестве референсной архитектуры в документации (например, для UVM reference flow . )
Экспериментальный компьютер наноспутника , созданный в NASA с использованием OpenRISC, в июле 2012 года был запущен на МКС.
использует OpenRISC в исследованиях многоядерных систем (руководитель - ).
В 2013 году был представлен проект jor1k - эмулятор OpenRISC 1000, написанный на JavaScript, способный запускать Linux и X Window System либо Wayland .
Поддерживается GCC для С и C++, библиотекой libc выступает newlib или uClibc . Компания предоставляет OpenIDEA, среду разработки. В 2012 году был начат проект по портированию LLVM для OpenRISC 1000 .
Проект OR1K предоставляет симулятор . Основная реализация, OR1200, может использоваться как RTL модель. Существует SystemC модель ORPSoC с потактовой точностью.
Высокоскоростная модель OpenRISC 1200 продается в виде от компании .
Ядро Linux начиная с версии 3.1. (32-битные процессоры OpenRISC 1000 - or1k).
QEMU поддерживает архитектуру с версии 1.2 .