Перейти к содержанию

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 начиная с версии 3.1.[14] (32-битные процессоры OpenRISC 1000 - or1k).[15]

RTEMS, FreeRTOS, eCos.

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 Архивная копия от 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 года.