Soft microprocessor explained

A soft microprocessor (also called softcore microprocessor or a soft processor) is a microprocessor core that can be wholly implemented using logic synthesis. It can be implemented via different semiconductor devices containing programmable logic (e.g., FPGA, CPLD), including both high-end and commodity variations.[1]

Most systems, if they use a soft processor at all, only use a single soft processor. However, a few designers tile as many soft cores onto an FPGA as will fit.[2] In those multi-core systems, rarely used resources can be shared between all the cores in a cluster.

While many people put exactly one soft microprocessor on a FPGA, a sufficiently large FPGA can hold two or more soft microprocessors, resulting in a multi-core processor. The number of soft processors on a single FPGA is limited only by the size of the FPGA.[3] Some people have put dozens or hundreds of soft microprocessors on a single FPGA.[4] [5] [6] [7] [8] This is one way to implement massive parallelism in computing and can likewise be applied to in-memory computing.

A soft microprocessor and its surrounding peripherals implemented in a FPGA is less vulnerable to obsolescence than a discrete processor.[9] [10] [11]

Core comparison

ProcessorDeveloperOpen sourceBus supportNotesProject homeDescription language
based on the ARM instruction set architecture
AmberConor SantifortWishboneARMv2a 3-stage or 5-stage pipelineProject page at OpencoresVerilog
Cortex-M1ARMhttp://www.arm.com/products/system-ip/interconnect/index.php70–200MHz, 32-bit RISChttp://www.arm.com/products/CPUs/ARM_Cortex-M1.htmlVerilog
based on the AVR instruction set architecture
NavréSébastien BourdeauducqDirect SRAMAtmel AVR-compatible 8-bit RISCProject page at OpencoresVerilog
pAVRDoru CuturelaAtmel AVR-compatible 8-bit RISCProject page at OpencoresVHDL
softavrcoreAndras PalStandard AVR buses (core-coupled I/O, synchronous SRAM, synchronous program ROM)Atmel AVR-compatible 8-bit RISC (up to AVR5), peripherals and SoC features includedProject page at OpencoresVerilog
based on the MicroBlaze instruction set architecture
AEMBShawn TanWishboneMicroBlaze EDK 3.2 compatibleAEMBVerilog
MicroBlazeXilinxPLB, OPB, FSL, LMB, AXI4Xilinx MicroBlaze
OpenFireVirginia Tech CCM LabOPB, FSLBinary compatible with the MicroBlazehttps://web.archive.org/web/20090724052731/http://www.ccm.ece.vt.edu/~scraven/openfire.html[12] Verilog
SecretBlazeLIRMM, University of Montpellier / CNRSWishboneMicroBlaze ISA, VHDLSecretBlazeVHDL
based on the MCS-51 instruction set architecture
MCL51MicroCore LabsUltra-small-footprint microsequencer-based 8051 core312 Artix-7 LUTs. Quad-core 8051 version is 1227 LUTs.MCL51 Core
TSK51/52AltiumWishbone / Intel 80518-bit Intel 8051 instruction set compatible, lower clock cycle alternativeEmbedded Design on Altium Wiki
based on the MIPS instruction set architecture
BERIUniversity of CambridgeMIPSProject pageBluespec
DossmatikRené DossPipelined busMIPS I instruction set pipeline stagesDossmatikVHDL
TSK3000AAltiumWishbone32-bit R3000-style RISC modified Harvard-architecture CPUEmbedded Design on Altium Wiki
based on the PicoBlaze instruction set architecture
PacoBlazePablo BleyerCompatible with the PicoBlaze processorsPacoBlazeVerilog
PicoBlazeXilinxXilinx PicoBlazeVHDL, Verilog
based on the RISC-V instruction set architecture
f32cUniversity of ZagrebAXI, SDRAM, SRAM32-bit, RISC-V / MIPS ISA subsets (retargetable), GCC toolchainf32cVHDL
NEORV32Stephan NoltingWishbone b4, AXI4rv32[i/e] [m] [a] [c] [b] [u] [Zfinx] [Zicsr] [Zifencei], RISC-V-compliant, CPU & SoC available, highly customizable, GCC toolchainGitHub OpenCoresVHDL
VexRiscvSpinalHDLSpinalHDLAXI4 / Avalon32-bit, RISC-V, up to 340MHz on Artix 7. Up to 1.44DMIPS/MHz.https://github.com/SpinalHDL/VexRiscvVHDLVerilog (SpinalHDL)
based on the SPARC instruction set architecture
LEON2(-FT)ESAAMBA2SPARC V8ESAVHDL
LEON3/4Aeroflex GaislerAMBA2SPARC V8Aeroflex GaislerVHDL
OpenPitonPrinceton Parallel GroupManycore SPARC V9OpenPitonVerilog
OpenSPARC T1Sun64-bitOpenSPARC.netVerilog
Tacus/PIPE5TemLibPipelined busSPARC V8TEMLIBVHDL
based on the x86 instruction set architecture
CPU86HT-Lab8088-compatible CPU in VHDLcpu86VHDL
MCL86MicroCore Labs8088 BIU provided. Others easy to create.Cycle accurate 8088/8086 implemented with a microsequencer. Less than 2% utilization of Kintex-7.MCL86 Core
s80x86Jamie IlesCustom80186-compatible GPLv3 cores80x86SystemVerilog
ZetZeus Gómez MarmolejoWishbonex86 PC cloneZetVerilog
ao486Aleksander OsmanAvaloni486 SX compatible coreao486Verilog
based on the PowerPC/Power instruction set architecture
PowerPC 405SIBMCoreConnect32-bit PowerPC v.2.03 Book EIBMVerilog
PowerPC 440SIBMCoreConnect32-bit PowerPC v.2.03 Book EIBMVerilog
PowerPC 470SIBMCoreConnect32-bit PowerPC v.2.05 Book EIBMVerilog
MicrowattIBM/OpenPOWERWishbone64-bit PowerISA 3.0 proof of conceptMicrowatt @ GithubVHDL
ChiselwattIBM/OpenPOWERWishbone64-bit PowerISA 3.0Chiselwatt @ GithubChisel
Libre-SOCLibre-SoC.orgWishbone64-bit PowerISA 3.0. CPU/GPU/VPU implementation and custom vector instructionsLibre-SoC.orgpython/nMigen
A2IIBM/OpenPOWERCustom PBus64-bit PowerPC 2.6 Book E. In order coreA2I @ GithubVHDL
A2OIBM/OpenPOWERCustom PBus64-bit PowerPC 2.7 Book E. Out of order coreA2O @ GithubVerilog
Other architectures
ARCARC International, Synopsys16/32/64-bit ISA RISCDesignWare ARCVerilog
ERIC5Entner Electronics9-bit RISC, very small size, C-programmableERIC5 VHDL
H2 CPURichard James HoweCustom16-bit Stack Machine, designed to execute Forth directly, smallH2 CPUVHDL
Instant SoCFPGA CoresCustom32-bit RISC-V M Extension, SoC defined by C++Instant SoCVHDL
JOPMartin SchoeberlSimpCon / Wishbone (extension)Stack-oriented, hard real-time support, executing Java bytecode directlyJopVHDL
LatticeMico8LatticeWishboneLatticeMico8Verilog
LatticeMico32LatticeWishboneLatticeMico32Verilog
LXP32Alex KuznetsovWishbone32-bit, 3-stage pipeline, register file based on block RAMlxp32VHDL
MCL65MicroCore LabsUltra-small-footprint microsequencer-based 6502 core252 Spartan-7 LUTs. Clock cycle-exact.MCL65 Core
MRISC32-A1Marcus GeelnardWishbone, B4/pipelined32-bit RISC/Vector CPU implementing the MRISC32 ISAMRISC32VHDL
NEO430Stephan NoltingWishbone (Avalon, AXI4-Lite)16-bit MSP430 ISA-compatible, very small size, many peripherals, highly customizableNEO430VHDL
Nios, Nios IIAlteraAvalonAltera Nios IIVerilog
OpenRISCOpenCoresWishbone32-bit; done in ASIC, Actel, Altera, Xilinx FPGA.https://openrisc.io/Verilog
SpartanMCTU Darmstadt / TU DresdenCustom (AXI support in development)18-bit ISA (GNU Binutils / GCC support in development)SpartanMCVerilog
SYNPIC12Miguel Angel Ajo PelayoPIC12F compatible, program synthesised in gatesnbee.esVHDL
xr16Jan GrayXSOC abstract bus16-bit RISC CPU and SoC featured in Circuit Cellar Magazine #116-118XSOC/xr16Schematic
YASEPYann GuidonDirect SRAM16 or 32 bits, RTL in VHDL & asm in JS, microcontroller subset : readyyasep.org (Firefox required)VHDL
ZipCPUGisselquist TechnologyWishbone, B4/pipelined32-bit CPU targeted for minimal FPGA resource usagezipcpu.comVerilog
ZPUZylin ASWishboneStack based CPU, configurable 16/32 bit datapath, eCos supportZylin CPUVHDL
RISC5Niklaus WirthNiklaus WirthCustomRunning a complete graphical Oberon System including an editor and compiler. Software can be developed and ran on the same FPGA board.www.projectoberon.com/Verilog

See also

External links

Notes and References

  1. http://www.dailycircuitry.com/2011/10/zet-soft-core-running-windows-30.html "Zet soft core running Windows 3.0" by Andrew Felch 2011
  2. Web site: Embedded.com - FPGA Architectures from 'A' to 'Z' : Part 2 . 2012-08-18 . dead . https://web.archive.org/web/20071008163016/http://www.embedded.com/columns/showArticle.jhtml?articleID=192700615 . 2007-10-08 . "FPGA Architectures from 'A' to 'Z'" by Clive Maxfield 2006
  3. http://www.xilinx.com/products/design_resources/proc_central/microblaze_faq.pdf MicroBlaze Soft Processor: Frequently Asked Questions
  4. István Vassányi."Implementing processor arrays on FPGAs". 1998.https://doi.org/10.1007%2FBFb0055278
  5. Zhoukun WANG and Omar HAMMAMI."A 24 Processors System on Chip FPGA Design with Network on Chip".http://www.design-reuse.com/articles/21583/processor-noc-fpga.html
  6. John Kent."Micro16 Array - A Simple CPU Array"http://members.optusnet.com.au/jekent/Micro16Array/index.html
  7. Kit Eaton."1,000 Core CPU Achieved: Your Future Desktop Will Be a Supercomputer".2011.http://www.fastcompany.com/1714174/1000-core-cpu-achieved-your-future-desktop-will-be-a-supercomputer?partner=rss
  8. "Scientists Squeeze Over 1,000 Cores onto One Chip".2011.http://www.ecnmag.com/news/2011/01/research/Over-1000-Cores-on-One-Chip.aspx
  9. Web site: Joe DeLaere. . "Top 7 Reasons to Replace Your Microcontroller with a MAX 10 FPGA".
  10. Web site: John Swan . Tomek Krzyzak. . "Using FPGAs to avoid microprocessor obsolescence" . 2008 . https://web.archive.org/web/20161013004106/http://www.embedded.com/print/4015159 . 2016-10-13.
  11. Web site: FPGA processor IP needs to be supported. Staff. 2010-02-03. Electronics Weekly. en-GB. 2019-04-03.
  12. Web site: Overview :: OpenFire Processor Core :: OpenCores.