|WikiProject Computing||(Rated Stub-class)|
The Soft microprocessor web page is out of date. http://opencores.com/projects has several hundred processor cores, some of which are highly developed and tested http://opencores.com/project,up_core_list has an extensive listing of implementation data for both opencores and other public processor cores with http://opencores.com/project,up_core_list,downloads "sorted by KIPS/LUT metric" probably the most useful of the PDFs — Preceding unsigned comment added by Weigh2Sirus3rd (talk • contribs) 00:54, 16 May 2014 (UTC)
Difference Between Soft and Hard Microprocessors
Can this article say what is not a soft microprocessor, while still being a microprocessor? This article states that a soft microprocessor is a microprocessor "that can be wholly implemented using logic synthesis." (by logic synthesis, I think it means logic gates and associated circuitry) How can you implement a microprocessor using things other than logic gates? Are there microprocessors that require the use of circuitry that cannot be defined by a HDL? 22.214.171.124 (talk) 19:36, 21 October 2010 (UTC)
I agree that Wikipedia should clearly state the difference between a "soft microprocessor" and other kinds of microprocessors. Is this really the right article for that, or should that statement go in microprocessor?
The phrase "logic synthesis" in this article means what the Wikipedia logic synthesis article says it means. Logic synthesis is a fully automatic process to convert VHDL or Verilog (or some other HDL) into either a FPGA bitstream, or some full-custom ASIC process geometry. When you don't know what some blue words in a Wikipedia article mean, perhaps you could click on them to find out.
The distinction between the two is not "Would it have been possible to make this CPU using a HDL?". The distinction between the two is "Was this CPU entirely defined using a HDL?".
Allow me to draw an analogy between the relationship between a soft microprocessor and a hard core microprocessor, and the relationship between an assembly language program vs a program written entirely in some high-level language.
Looking at the final result -- the geometric patterns on the sliver of silicon that make up an integrated circuit, or the connection bitstream of a FPGA -- it is difficult to tell whether that CPU was directly designed that way as a hard core CPU, or more indirectly designed as a soft microprocessor. Historically, most CPUs have been designed as a hard-core CPU by people manually drawing and placing each part of the CPU. Re-implementing such a microprocessor to a slightly different full-custom ASIC processes or a slightly different FPGA required a lot of manual geometry tweaking. Soft microprocessors are written in VHDL or Verilog (or something similar). Then they are run through an automatic logic synthesis engine to produce either a FPGA bitstream, or some full-custom ASIC process geometry. Re-implementing such a microprocessor on a different FPGA or different full-custom ASIC process "merely" requires re-running the fully automated logic synthesis engine, at least in principle.
Looking at the final result -- a series of instructions stored in an executable file -- it is difficult to tell whether it was more-or-less directly written that way, in assembly language instructions, or more indirectly written in a high-level language. Early programs were all written by people manually specifying each assembly-language instruction. Porting an assembly-language program to a CPU with a slightly different machine language required a lot of manual tweaking. Programs written in a high-level language are run through a compiler to produce executable code for some particular CPU. Porting a high-level-language program to a different CPU "merely" require re-running the fully automated compiler, at least in principle.