OpenRISC

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
OpenRISC
Разработчик

OpenCores

Разрядность

32, 64

Архитектура

RISC

Кодирование СК

фиксированная (32 бита)

Open

Да, 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. Текст
  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 [1]
  3. Xiang Li and Lin Zuo, "Open source embedded platform based on OpenRISC and DE2-70", Masters dissertation, SoC program, KTH, Sweden. Available online [2]
  4. OpenCores - Call for OpenRISC ASIC donations
  5. OpenCores donation FAQ
  6. Samsung Open Source Release Center, follow the links → TV & VIDEO → TV → DTV → ETC → OR1200.zip
  7. Linux-sunxi project community wiki page on the AR100 controller. Retrieved on 20 July 2013.
  8. UVM Reference Flow, 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. [www.lis.ei.tum.de/fileadmin/w00bdv/.../ACACES2010_Poster.pdf 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
  13. project wiki page
  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.
  16. QEMU Changelog 1.2

Ссылки[править | править исходный текст]