OpenRISC

OpenRISC
Разработчик OpenCores
Разрядность 32, 64
Архитектура RISC
Кодирование СК фиксированная (32 бита)
Открытая? Да, LGPL
Регистры
Всего 16 или 32 GPR

OpenRISC — открытый микропроцессор архитектуры RISC с открытым исходным кодом на языке описания аппаратного обеспечения Verilog. Проект создан сообществом OpenCores и распространяется по лицензии GNU LGPL. OpenRISC воплощён аппаратно и успешно производится в виде интегральных микросхем и ПЛИС.

Единственная версия архитектуры, OpenRISC 1000 (or1k), описывает семейство 32- и 64-битных процессоров с опциональными расширениями: поддержкой вычислений над числами с плавающей запятой и поддержкой векторных операций.[1]

Команда разработчиков OpenCores опубликовало первую реализацию, OpenRISC 1200, написанную на языке Verilog. Аппаратная часть проекта имеет лицензию LGPL, модели и прошивки - GPL. Реализация системы-на-кристалле с OpenRISC 1200 называется ORPSoC (OpenRISC Reference Platform System-on-Chip). Работоспособность ORPSoC и других вариантов OR1200 была продемонстрирована на FPGA.[2][3]

На 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) для получения большей производительности.[4] В 2011 году был начат сбор денег.[5]

Коммерческие варианты

ORSoC предлагает варианты ORC32-1208, Beyond Semiconductor — BA12, BA14, BA22.

Flextronics International и Jennic Limited использовали OpenRISC ядро как часть собственных ASIC. Samsung использует OpenRISC 1000 в системах-на-кристалле для DTV (SDP83 B-Series, SDP92 C-Series, SDP1001/SDP1002 D-Series, SDP1103/SDP1106 E-Series).[6]

Allwinner Technology использовал OpenRISC в контроллере AR100, который является частью СнК A31 (основной процессор в системе — ARM).[7]

Компания Cadence Design Systems использует OpenRISC в качестве референсной архитектуры в документации (например, для UVM reference flow.[8])

Экспериментальный компьютер наноспутника TechEdSat, созданный в NASA с использованием OpenRISC, в июле 2012 года был запущен на МКС.[9][10]

Научные и некоммерческие применения

Technical University Munich использует OpenRISC в исследованиях многоядерных систем (руководитель - Stefan Wallentowitz).[11]

В 2013 году был представлен проект jor1k - эмулятор OpenRISC 1000, написанный на JavaScript, способный запускать Linux и X Window System либо Wayland.[12]

Средства разработки

Поддерживается GCC для С и C++, библиотекой libc выступает newlib или uClibc. Компания Dynalith предоставляет OpenIDEA, среду разработки. В 2012 году был начат проект по портированию LLVM для OpenRISC 1000[13].

Проект OR1K предоставляет симулятор or1ksim. Основная реализация, OR1200, может использоваться как RTL модель. Существует SystemC модель ORPSoC с потактовой точностью.

Высокоскоростная модель OpenRISC 1200 продается в виде Open Virtual Platforms от компании Imperas.

Операционные системы

Linux

Ядро Linux начиная с версии 3.1.[14] (32-битные процессоры OpenRISC 1000 - or1k).[15]

ОСРВ

RTEMS, FreeRTOS, eCos.

QEMU

QEMU поддерживает архитектуру с версии 1.2 [16].

См. также

Примечания

  1. Damjan Lampret et al., "OpenRISC 1000 Architecture Manual", Rev 1.3, 15 Nov 2007. Текст Архивная копия от 18 декабря 2016 на Wayback Machine
  2. Patrick Pelgrims, Tom Tierens and Dries Driessens, "Basic Custom OpenRISC System Hardware Tutorial: Embedded system design based upon Soft- and Hardcore FPGA’s", De Nayer Instituut, Hogeschool voor Wetenschap & Kunst, 2004. Available online アーカイブされたコピー. Дата обращения: 3 марта 2009. Архивировано из оригинала 27 ноября 2006 года.
  3. Xiang Li and Lin Zuo, "Open source embedded platform based on OpenRISC and DE2-70", Masters dissertation, SoC program, KTH, Sweden. Available online [1] Архивная копия от 6 октября 2011 на Wayback Machine
  4. OpenCores - Call for OpenRISC ASIC donations Архивировано 1 мая 2011 года.
  5. OpenCores donation FAQ. Дата обращения: 20 октября 2013. Архивировано из оригинала 26 апреля 2012 года.
  6. Samsung Open Source Release Center Архивная копия от 24 сентября 2013 на Wayback Machine, follow the links → TV & VIDEO → TV → DTV → ETC → OR1200.zip
  7. Linux-sunxi project community wiki page on the AR100 controller Архивная копия от 28 апреля 2021 на Wayback Machine. Retrieved on 20 July 2013.
  8. UVM Reference Flow Архивная копия от 26 ноября 2011 на Wayback Machine, Accellera website (undated).
  9. Post to the openrisc mailing lists at lists.opencores.org and lists.openrisc.net on 8 April 2012 by Fredrick Bruhn, CEO of ÅAC Microtec
  10. Press release 11 October 2012, ÅAC Microtec AB.
  11. Multicore Architecture and Programming Model Co-Optimization (MAPCO) (недоступная ссылка), Stefan Wallentowitz, Thomas Wild and Andreas Herkersdorf. Research poster at the Sixth International Summer School on Advanced Computer Architecture and Compilation for High-Performance and Embedded Systems (ACACES), Terrassa (Barcelona), Spain, 11–17 July 2010.
  12. OpenRISC Emulator In JavaScript Can Run Wayland. Дата обращения: 20 октября 2013. Архивировано 19 октября 2013 года.
  13. project wiki page Архивировано 14 октября 2013 года.
  14. git.kernel.org - linux/kernel/git/torvalds/linux-2.6.git/tree - arch/openrisc/. git.kernel.org. Дата обращения: 17 октября 2011. (недоступная ссылка)
  15. Linux 3.1. Kernel Newbies. Дата обращения: 17 октября 2011. Архивировано 18 октября 2011 года.
  16. QEMU Changelog 1.2. Дата обращения: 20 октября 2013. Архивировано 21 октября 2013 года.

Ссылки