Softcore-Prozessoren vs. Hardcore-Prozessoren

Ich mache eine Studie über FPGA-Schnittstellen mit Mikroprozessoren wie ARM9.

Ich habe das Konzept von Softcore-Prozessoren und Hardcore-Prozessoren in meinem Studium gefunden. Darf ich wissen, was der Vergleich zwischen diesen beiden Typen ist, die Ähnlichkeiten und Unterschiede in der Implementierung?

Antworten (3)

Soft Core wird in FPGA-Fabric implementiert, während Hard wie jede integrierte Schaltung implementiert wird, während es immer noch mit der FPGA-Fabric verbunden ist. Der Vergleich läuft im Allgemeinen auf Folgendes hinaus:

Hard-Core-Prozessoren – Hunderte von MHz bis zu 1 GHz+ Geschwindigkeit

  • Kann viel schnellere Verarbeitungsgeschwindigkeiten erreichen, da sie optimiert und nicht durch die Stoffgeschwindigkeit begrenzt sind
  • Festgelegt und kann nicht geändert werden (obwohl es die benutzerdefinierte Logik im FPGA-Fabric für die Verarbeitung nutzen kann

Soft-Core-Prozessoren – 250 MHz und weniger (normalerweise weniger als 200 MHz)

  • Kann leicht modifiziert und an spezifische Anforderungen, mehr Funktionen, benutzerdefinierte Anweisungen usw. angepasst werden.
  • Mehrere Kerne können verwendet werden (auf Kosten der Ressourcen)
  • Begrenzt durch die Geschwindigkeit des Gewebes.

In den letzten Jahren gab es eine große Bewegung hin zu harten Prozessoren, hauptsächlich aufgrund der Notwendigkeit einer schnelleren Verarbeitung, die die weichen Kerne nicht bieten können. Wenn Sie einen Hard-Core-Prozessor mit dem FPGA-Fabric kombinieren, können Sie in der Regel die Verarbeitung vieler Daten ermöglichen, die beispielsweise für Kommunikationsinfrastrukturanwendungen benötigt werden (viele GB an Daten, die übertragen werden).

Ein Soft-Core-Prozessor ist ein Prozessor, der unter Verwendung des FPGA-Fabric implementiert ist.

Ein Hard-Core-Prozessor ist ein Prozessor, der tatsächlich als Struktur im Silizium implementiert ist.

Grundsätzlich können Sie einem FPGA-basierten System einen Softcore-Prozessor hinzufügen, nachdem es bereits entworfen wurde. Das Hinzufügen eines Hardcore-Prozessors erfordert jedoch entweder ein anderes FPGA oder einen zusätzlichen Chip auf der Platine.


Wenn möglich, werden Hard-Core-Prozessoren bevorzugt, da das Preis-Rechenleistungs-Verhältnis für eine Hardware-CPU viel besser ist. Die Implementierung einer CPU in einem FPGA-Fabric ist sehr ressourcenintensiv, insbesondere wenn Sie viel Rechenleistung benötigen. Die entsprechende Hardware-CPU ist wahrscheinlich viel billiger.


Die Hardware-CPU ist nicht nur viel billiger, sondern dürfte auch viel energieeffizienter sein. Bei batteriebetriebenen Plattformen ist die Effizienz entscheidend für eine lange Batterielebensdauer. Unbenutzte Gatter in einem FPGA können manchmal abgeschaltet werden, aber normalerweise gibt es in einem Softcore-Prozessor weitaus mehr aktive Schaltkreise als in einer speziell entwickelten Hardware-CPU. All dieses potenzielle FPGA-Silizium verbraucht Strom.

„Hard“ und „soft“ können sich auch auf die verwendete Hardwarebeschreibung beziehen und nicht nur darauf, ob der Kern im Fabric implementiert ist (siehe „Hard Macro Processors“ von ARM ) . Diese Seite von Western Design Center, Inc. bietet ein Beispiel dafür Verwenden Sie: "ASIC (Manually Optimized GDSII Hard Core und Verilog RTL Soft Core) und FPGA (Verilog RTL Soft Core)". Der FPGA-Kontext könnte diese Verwendung der Begriffe ausschließen (obwohl binäre Blob/LUT-Initialisierungswerte vs. RTL analog erscheinen).
Also im Grunde Soft-Core = FPGA, Hard-Core = ASIC?
@nalzok - Ja. Ich könnte ein Argument dafür sehen, die Emulation einer CPU auf einer anderen CPU als "weichen" Kern zu bezeichnen, aber die Leute nennen das meiner Erfahrung nach einfach Emulation.

Die Implementierung eines Softprozessors zur Erzielung einer bestimmten Funktionalität kann im Hinblick auf den Kauf der Hardware günstiger sein als der Kauf eines äquivalenten Hardprozessors.

Dies widerspricht der Antwort von Connor Wolf. Aus meiner Erfahrung sind gleichwertige FPGAs teurer als ASICs. Vielleicht könnten Sie Ihrer Antwort einige weitere Details hinzufügen.