Un microprocesador blando (también llamado microprocesador de núcleo blando o un procesador blando ) es un núcleo de microprocesador que se puede implementar completamente mediante síntesis lógica . Se puede implementar a través de diferentes dispositivos semiconductores que contienen lógica programable (por ejemplo, ASIC , FPGA , CPLD ), incluidas variaciones tanto de gama alta como de productos básicos. [1]
La mayoría de los sistemas, si usan un procesador suave, solo usan un único procesador suave. Sin embargo, algunos diseñadores colocan tantos núcleos blandos en un FPGA como quepan. [2] En esos sistemas multinúcleo , los recursos que se utilizan con poca frecuencia se pueden compartir entre todos los núcleos de un clúster.
Si bien muchas personas colocan exactamente un microprocesador suave en un FPGA, un FPGA suficientemente grande puede contener dos o más microprocesadores suaves, lo que da como resultado un procesador de múltiples núcleos . La cantidad de procesadores de software en una sola FPGA está limitada solo por el tamaño de la FPGA. [3] Algunas personas han puesto docenas o cientos de microprocesadores blandos en una sola FPGA. [4] [5] [6] [7] [8] Esta es una forma de implementar un paralelismo masivo en la computación y también se puede aplicar a la computación en memoria .
Un microprocesador suave y sus periféricos circundantes implementados en un FPGA son menos vulnerables a la obsolescencia que un procesador discreto. [9] [10] [11]
Comparación de núcleos
Procesador | Desarrollador | Fuente abierta | Soporte de bus | Notas | Proyecto casa | Lenguaje descriptivo |
---|---|---|---|---|---|---|
basado en la arquitectura del conjunto de instrucciones ARM | ||||||
Ámbar | Conor Santifort | LGPLv2.1 | Espoleta | Canalización ARMv2a de 3 o 5 etapas | Página del proyecto en Opencores | Verilog |
Corteza-M1 | BRAZO | No | [6] | 70-200 MHz, RISC de 32 bits | [7] | Verilog |
basado en la arquitectura del conjunto de instrucciones AVR | ||||||
Navré | Sébastien Bourdeauducq | sí | SRAM directo | RISC de 8 bits compatible con Atmel AVR | Página del proyecto en Opencores | Verilog |
pAVR | Doru Cuturela | sí | RISC de 8 bits compatible con Atmel AVR | Página del proyecto en Opencores | VHDL | |
basado en la arquitectura del conjunto de instrucciones MicroBlaze | ||||||
AEMB | Shawn Tan | sí | Espoleta | Compatible con MicroBlaze EDK 3.2 | AEMB | Verilog |
MicroBlaze | Xilinx | No | PLB, OPB, FSL, LMB, AXI4 | Xilinx MicroBlaze | ||
Abran fuego | Laboratorio de CCM de Virginia Tech | sí | OPB, FSL | Binario compatible con MicroBlaze | [8] [12] | Verilog |
SecretBlaze | LIRMM, Universidad de Montpellier / CNRS | sí | Espoleta | MicroBlaze ISA, VHDL | SecretBlaze | VHDL |
basado en la arquitectura del conjunto de instrucciones MCS-51 | ||||||
MCL51 | Laboratorios MicroCore | sí | Núcleo 8051 basado en microsecuenciador de tamaño ultra pequeño | 312 LUT Artix-7. La versión de cuatro núcleos 8051 es de 1227 LUT. | Núcleo MCL51 | |
TSK51 / 52 | Altium | Reino libre | Espoleta / Intel 8051 | Compatible con conjunto de instrucciones Intel 8051 de 8 bits , alternativa de ciclo de reloj inferior | Diseño integrado en Altium Wiki | |
basado en la arquitectura del conjunto de instrucciones MIPS | ||||||
BERI | Universidad de Cambridge | BSD | MIPS | Página del proyecto | Bluespec | |
Dossmatik | René Doss | CC BY-NC 3.0, excepto que los solicitantes comerciales deben pagar una tarifa de licencia . | Bus canalizado | Etapas de canalización del conjunto de instrucciones MIPS I | Dossmatik | VHDL |
TSK3000A | Altium | Reino libre | Espoleta | CPU de arquitectura Harvard modificada con RISC estilo R3000 de 32 bits | Diseño integrado en Altium Wiki | |
basado en la arquitectura del conjunto de instrucciones PicoBlaze | ||||||
PacoBlaze | Pablo Bleyer | sí | Compatible con los procesadores PicoBlaze | PacoBlaze | Verilog | |
PicoBlaze | Xilinx | No | Xilinx PicoBlaze | VHDL, Verilog | ||
basado en la arquitectura del conjunto de instrucciones RISC-V | ||||||
f32c | Universidad de Zagreb | BSD | AXI, SDRAM, SRAM | Subconjuntos ISA RISC-V / MIPS de 32 bits (reorientable), cadena de herramientas GCC | f32c | VHDL |
NEORV32 | Stephan Nolting | BSD | Espoleta b4, AXI4 | rv32 [i / e] [m] [a] [c] [b] [u] [Zfinx] [Zicsr] [Zifencei], compatible con RISC-V, CPU y SoC disponibles, altamente personalizable, cadena de herramientas GCC | OpenCores de GitHub | VHDL |
VexRiscv | SpinalHDL | sí | AXI4 / Avalon | 32 bits, RISC-V, hasta 340 MHz en Artix 7. Hasta 1,44 DMIPS / MHz. | https://github.com/SpinalHDL/VexRiscv | VHDLVerilog (SpinalHDL) |
basado en la arquitectura del conjunto de instrucciones SPARC | ||||||
LEON2 (-FT) | ESA | sí | AMBA2 | SPARC V8 | ESA | VHDL |
LEON3 / 4 | Aeroflex Gaisler | sí | AMBA2 | SPARC V8 | Aeroflex Gaisler | VHDL |
OpenPiton | Grupo paralelo de Princeton | sí | Manycore SPARC V9 | OpenPiton | Verilog | |
OpenSPARC T1 | sol | sí | 64 bits | OpenSPARC.net | Verilog | |
Tacus / PIPE5 | TemLib | sí | Bus canalizado | SPARC V8 | TEMLIB | VHDL |
basado en la arquitectura del conjunto de instrucciones x86 | ||||||
CPU86 | HT-Lab | sí | CPU compatible con 8088 en VHDL | cpu86 | VHDL | |
MCL86 | Laboratorios MicroCore | sí | Se proporciona 8088 BIU. Otros fáciles de crear. | Ciclo preciso 8088/8086 implementado con un microsecuenciador. Utilización inferior al 2% de Kintex-7. | Núcleo MCL86 | |
s80x86 | Jamie Iles | GPLv3 | Personalizado | Núcleo GPLv3 compatible con 80186 | s80x86 | SystemVerilog |
Zet | Zeus Gómez Marmolejo | sí | Espoleta | clon de PC x86 | Zet | Verilog |
ao486 | Aleksander Osman | BSD de 3 cláusulas | Avalon | Núcleo compatible con i486 SX | ao486 | Verilog |
basado en la arquitectura del conjunto de instrucciones PowerPC / Power | ||||||
PowerPC 405S | IBM | No | CoreConnect | PowerPC de 32 bits v.2.03 Libro E | IBM | Verilog |
PowerPC 440S | IBM | No | CoreConnect | PowerPC de 32 bits v.2.03 Libro E | IBM | Verilog |
PowerPC 470S | IBM | No | CoreConnect | PowerPC de 32 bits v.2.05 Libro E | IBM | Verilog |
Microwatt | IBM / OpenPOWER | CC-BY 4.0 | Espoleta | Prueba de concepto PowerISA 3.0 de 64 bits | Microwatt @ Github | VHDL |
Chiselwatt | IBM / OpenPOWER | CC-BY 4.0 | Espoleta | PowerISA 3.0 de 64 bits | Chiselwatt @ Github | Cincel |
Libre-SOC | Libre-SoC.org | BSD / LGPLv2 + | Espoleta | PowerISA 3.0 de 64 bits. Implementación de CPU / GPU / VPU e instrucciones vectoriales personalizadas | Libre-SoC.org | python / nMigen |
A2I | IBM / OpenPOWER | CC-BY 4.0 | PBus personalizado | PowerPC 2.6 de 64 bits Libro E. En orden núcleo | A2I @ Github | VHDL |
A2O | IBM / OpenPOWER | CC-BY 4.0 | PBus personalizado | PowerPC 2.7 de 64 bits Libro E. Núcleo fuera de servicio | A2O @ Github | Verilog |
Otras arquitecturas | ||||||
ARCO | ARC International , Sinopsis | No | ISA RISC de 16/32/64 bits | DesignWare ARC | Verilog | |
ERIC5 | Entner Electronics | No | RISC de 9 bits, tamaño muy pequeño, programable en C | ERIC5 | VHDL | |
CPU H2 | Richard James Howe | MIT | Personalizado | Stack Machine de 16 bits, diseñada para ejecutar Forth directamente, pequeña | CPU H2 | VHDL |
SoC instantáneo | Núcleos FPGA | No | Personalizado | Extensión RISC-V M de 32 bits, SoC definido por C ++ | SoC instantáneo | VHDL |
JOP | Martín Schoeberl | sí | SimpCon / Wishbone (extensión) | Soporte duro en tiempo real orientado a pilas, ejecutando código de bytes Java directamente | Jop | VHDL |
LatticeMico8 | Enrejado | sí | Espoleta | LatticeMico8 | Verilog | |
LatticeMico32 | Enrejado | sí | Espoleta | LatticeMico32 | Verilog | |
LXP32 | Alex Kuznetsov | MIT | Espoleta | Canalización de 32 bits, 3 etapas, archivo de registro basado en RAM de bloque | lxp32 | VHDL |
MCL65 | Laboratorios MicroCore | sí | Núcleo 6502 basado en microsecuenciador de tamaño ultra pequeño | 252 LUT Spartan-7. Ciclo de reloj exacto. | Núcleo MCL65 | |
MRISC32-A1 | Marcus Geelnard | sí | Espoleta , B4 / canalizada | CPU vectorial / RISC de 32 bits con ISA personalizado | MRISC32 | VHDL |
NEO430 | Stephan Nolting | sí | Wishbone (Avalon, AXI4-Lite) | MSP430 de 16 bits compatible con ISA, tamaño muy pequeño, muchos periféricos, altamente personalizable | NEO430 | VHDL |
Nios , Nios II | Altera | No | Avalon | Altera Nios II | Verilog | |
OpenRISC | OpenCores | sí | Espoleta | 32 bits; hecho en ASIC, Actel, Altera, Xilinx FPGA. | [9] | Verilog |
SpartanMC | TU Darmstadt / TU Dresde | sí | Personalizado ( soporte AXI en desarrollo) | ISA de 18 bits (soporte GNU Binutils / GCC en desarrollo) | SpartanMC | Verilog |
SYNPIC12 | Miguel Angel Ajo Pelayo | MIT | Compatible con PIC12F, programa sintetizado en puertas | nbee.es | VHDL | |
xr16 | Jan Gray | No | Bus abstracto XSOC | CPU y SoC RISC de 16 bits presentados en Circuit Cellar Magazine # 116-118 | XSOC / xr16 | Esquemático |
YASEP | Yann Guidon | AGPLv3 | SRAM directo | 16 o 32 bits, RTL en VHDL y asm en JS , subconjunto de microcontroladores: listo | yasep.org (se requiere Firefox ) | VHDL |
ZipCPU | Tecnología Gisselquist | GPLv3 | Espoleta, B4 / canalizada | CPU de 32 bits destinada a un uso mínimo de recursos FPGA | zipcpu.com | Verilog |
ZPU | Zylin AS | sí | Espoleta | CPU basada en pila, ruta de datos configurable de 16/32 bits, compatibilidad con eCos | CPU Zylin | VHDL |
RISC5 | Niklaus Wirth | sí | Personalizado | Ejecución de un completo sistema gráfico Oberon que incluye un editor y un compilador. El software se puede desarrollar y ejecutar en la misma placa FPGA. | www.projectoberon.com/ | Verilog |
Ver también
- Sistema en un chip (SoC)
- Red en un chip (NoC)
- Computación reconfigurable
- Matriz de puertas programables en campo (FPGA)
- VHDL
- Verilog
- SystemVerilog
- Aceleracion de hardware
Referencias
- ^ http://www.dailycircuitry.com/2011/10/zet-soft-core-running-windows-30.html Archivado 2018-10-13 en Wayback Machine "Zet soft core con Windows 3.0" por Andrew Felch 2011
- ^ "Copia archivada" . Archivado desde el original el 8 de octubre de 2007 . Consultado el 18 de agosto de 2012 . CS1 maint: copia archivada como título ( enlace ) "Arquitecturas FPGA de 'A' a 'Z'" por Clive Maxfield 2006
- ^ Procesador suave MicroBlaze: preguntas frecuentes. Archivado el 27 de octubre de 2011 en la Wayback Machine.
- ^ István Vassányi. "Implementación de matrices de procesadores en FPGA". 1998. [1]
- ^ Zhoukun WANG y Omar HAMMAMI. "Un Sistema de 24 Procesadores en Diseño de Chip FPGA con Red en Chip". [2]
- ^ John Kent. "Matriz Micro16: una matriz de CPU simple" [3]
- ^ Kit Eaton. "CPU de 1000 núcleos lograda: su futuro escritorio será una supercomputadora". 2011. [4]
- ^ "Los científicos exprimen más de 1.000 núcleos en un chip". 2011. [5] Archivado el 5 de marzo de 2012 en la Wayback Machine.
- ^ Joe DeLaere. "7 razones principales para reemplazar su microcontrolador con un MAX 10 FPGA" .
- ^ John Swan; Tomek Krzyzak. "Uso de FPGA para evitar la obsolescencia de microprocesadores" . 2008
- ^ Personal (2010-02-03). "La IP del procesador FPGA debe ser compatible" . Electrónica semanal . Consultado el 3 de abril de 2019 .
- ^ http://opencores.org/project,openfire_core,overview
enlaces externos
- Núcleos de CPU blandos para FPGA
- Comparación detallada de 12 microprocesadores blandos
- Noticias de CPU FPGA
- Sitio web de Freedom CPU
- Núcleos de microprocesador en Opencores.org (expanda la pestaña "Procesador")
- Microprocesador RISC NikTech de 32 bits MANIK.