Hallo liebe Freunde,
ich habe mich heute mit Rechnerarchitekturen befasst. Ich habe eine
Sache noch nicht durchblicken können. Ich habe über RISC, CISC, VLIW und
Parallelprozessoren gelesen. Dann gibt es ja ASIC und FPGA Techniken. Wo
wird was eingesetzt? Kann mir jmd das beantworten?
Ich danke euch!
Jan wrote:
> Hallo liebe Freunde,>>> ich habe mich heute mit Rechnerarchitekturen befasst. Ich habe eine> Sache noch nicht durchblicken können. Ich habe über RISC, CISC, VLIW und> Parallelprozessoren gelesen. Dann gibt es ja ASIC und FPGA Techniken. Wo> wird was eingesetzt? Kann mir jmd das beantworten?
Mhh, das ist eine gute Frage. RISC, CISC & Co. beschreiben erst mal nur
eine bestimmt Architektur eines Prozessors. Das sagt noch nichts aus wie
der implementiert wird.
Ein ASIC ist ein Application Specific Integrated Circuit, also ein IC,
in das man reinbauen kann was man will. Unter anderen kann man natürlich
einen Prozessor, in RISC, CISC & Co. Architektur darauf implementieren.
Ein Field Programmable Gate Array (FPGA) ist ein ASIC, bei dem man eine
spezielle Struktur implementiert hat, die es erlaubt, genau wie beim
ASIC selbst, digitale Logik-Funktionen zu implementieren, mit dem
Vorteil, diese später noch ändern zu können. Beim ASIC geht das nämlich
nicht mehr.
In den FPGA kannst du auch wieder einen Prozessor mit der Architektur
deiner Wahl implementieren.
Jan wrote:
> Wo wird was eingesetzt? Kann mir jmd das beantworten?
Eigentlich habe ich deine Frage gar nicht beantwortet. Da du sie im
DSP-Forum gestellt hast, gehe ich auch mal davon aus du suchst nach
Antworten in dem Bereich.
Ausgehend von meiner vorherigen Antwort kannst du natürlich dir schon
denken, dass wenn eine Prozessor in einem ASIC implementiert wird,
dieser nicht so schnell eine Algorithmus abarbeiten kann als wenn man
den Algorithmus selbst in den ASIC implementiert. Gleiches gilt auch für
FPGA, nur das der FPGA in der Regel weniger Platz bietet als ein ASIC
und eine Implementierung in einem ASIC schneller getaktet werden kann
und weniger Energie verbraucht als in einem FPGA.
Der Vorteil von der direkten Implementierung eines Algorithmus in einem
ASIC oder FPGA liegt in der Möglichkeit, den Algorithmus parallel zu
implementieren. Das wird immer dann interessant wenn der Algorithmus zum
einen sehr schnell sein muss und zum anderen sich nicht ändert.
Nehme mal z.B. ein WLAN-Chip, bei dem eine IFFT im Sender berechnet
werden muss. Das ganze Modem lässt sich in einen ASIC packen und ist
schnell und energiesparend. Hat natürlich den Nachteil, dass wenn der
Standard erweitert wird, die neue Funktion nicht mehr unterstütz wird.
Zwar etwas älter, aber wenn du mal eine Vergleich sehen möchtest liest
mal diesen Artikel durch:
http://www.dilloneng.com/documents/fft_success.pdf
Da wird auch eine Auflistung der Kosten gemacht Prozessor vs. FPGA.
Hallo Günther,
ich danke dir. Du hast das ganze sehr informativ geschrieben.
Ich habe in diesem
http://www.minet.uni-jena.de/~joergs/skripte/fey-recharch.pdf
Dokument auf S.42 gelesen, dass da auch noch ASIPs sind. Wenn man ASIP
mit ASIC vergleicht, liegt der Vorteil von ASIPs darin, dass die
schneller sind, weil die applikationsspezifisch implementiert werden.
Daraus folgt, dass der Prozessor/ASIP? (Ich kann das mir immer noch
nicht klar machen) aus den notwendigen Bausteinen zusammengebaut ist und
energiesparender ist. Der Nachteil ist, dass diese nicht flexible sind.
Ist mein Statement korrekt? Hast du dich schon mal mit ASIPs
beschäftigt?
Günter .. wrote:
>> Ein Field Programmable Gate Array (FPGA) ist ein ASIC, bei dem man eine> spezielle Struktur implementiert hat, die es erlaubt, genau wie beim> ASIC selbst, digitale Logik-Funktionen zu implementieren, mit dem> Vorteil, diese später noch ändern zu können. Beim ASIC geht das nämlich> nicht mehr.
Das kommt drauf an. Ein FPGA das seine Konfiguratuion im internen SRAM
hält kann man später grundsätzlich umprogrammieren (bekannteste
Vertreter: Xilinx), Fuse-basierte FPGAs lassen sich nur einmal
programmieren (z.B. Actel).
Ein ASIC kann man nicht programmieren wie ein FPGA, sondern man
durchläuft den ganzen Herstellprozess, angefangen vom VHDL Design, über
Maskenerstellung, Die ätzen, packagen, testen etc. Daher kostet die
Herstellung eines ASICs um Größenordnungen mehr als wenn man sich
vielleicht 10 FPGAs programmiert.
Zoe
Jan wrote:
...
> Dokument auf S.42 gelesen, dass da auch noch ASIPs sind. Wenn man ASIP> mit ASIC vergleicht, liegt der Vorteil von ASIPs darin, dass die> schneller sind, weil die applikationsspezifisch implementiert werden.
Was mir nicht ganz klar ist in dem Dokument ist was mit Geschwindigkeit
gemeint ist? Also die Geschwindigkeitsvorteile die mit dem
Mikroprozessorparadoxon erklärt werden.
Kann es sein das damit die Entwicklungsgeschwindigkeit gemeint ist?
> Daraus folgt, dass der Prozessor/ASIP? (Ich kann das mir immer noch> nicht klar machen) aus den notwendigen Bausteinen zusammengebaut ist und> energiesparender ist. Der Nachteil ist, dass diese nicht flexible sind.>> Ist mein Statement korrekt? Hast du dich schon mal mit ASIPs> beschäftigt?
Den Begriff ASIP hatte ich so noch nicht gehört. Aber laut der
Beschreibung ist das einfach ein Prozessor mit einem spezielle
Befehlssatz. Im Endeffekt wird der dann auch wieder in einen ASIC oder
FPGA implementiert.
Um das ganze mal wieder in einen Zusammenhang zu bringen. RISC, CISC &
Co sind spezielle Architekturen. Ein Prozessor mit so einer Architektur
wird in einen Chip, z.B. ASIC oder FPGA implementiert.
Ein ASIP ist ein spezieller Prozessor der eine RISC, CISC & Co
Architektur hat und der in einen Chip implementiert wird.
Hallo,
ich kann Günters Beschreibungen bzgl. ASICs und FPGAs nicht so ganz
nachvollziehen.
Meiner Meinung nach bezeichnet der Begriff ASIC lediglich einen von der
Funktion her nicht näher beschriebenen IC, welcher von einem
Halbleiterhersteller extra für eine ganz bestimmte Anwendung, häufig nur
für einen einzelnen Kunden, erstellt wird. Dass kann ein kleiner IC,
welcher nur 5 Treiber für LEDs enthält, sein, oder aber z.B. der
Basisband-Chip für ein Mobiltelefon, welcher uC, DSP, Display-Treiber,
Keypad-Interface, Interface für Kamera, und, und, und enthält.
Ein FPGA dagegen ist ein frei programmierbarer Baustein, welcher sehr
komplexe Systeme / Aufgaben übernehmen kann und über komplett über
Software konfiguriert werden kann. So können ganze Prozessoren im FPGA
"emuliert" werden, und entdeckte Bugs noch später ohne Änderung der
Hardware behoben werden.
Von der Anwendung her eignen sich ASICs nur für Produkte, die in extrem
hohen Stückzahlen produziert werden, denn die Entwicklung eines ASICs
kann auch schon mal je nach Komplexität sicher einen zweistelligen
Millionenbetrag verschlingen. Dafür habe ich dann einen Chip, der genau
auf meine Anwendung passt und ich schleppe keinen unnötigen "Ballast"
mit.
Der FPGA dagegen ist am anderen Ende (aber nicht nur da) sehr gut
einsetzbar: Wenn ich ein Produkt mit komplexer Logik/Funktionalität
habe, welches ich nur in kleiner Stückzahl verkaufe, kann ich die diese
Logik in den FPGA packen und damit Entwicklungs- und vielleicht auch
Testaufwand sparen. Später entdeckte Fehler lassen sich dann ja immer
noch in Software beheben.
Gruß
Frank
FL wrote:
...
>> Ein FPGA dagegen ist ein frei programmierbarer Baustein, welcher sehr> komplexe Systeme / Aufgaben übernehmen kann und über komplett über> Software konfiguriert werden kann. So können ganze Prozessoren im FPGA> "emuliert" werden, und entdeckte Bugs noch später ohne Änderung der> Hardware behoben werden.
Wenn du dir die Definition von Software auf Wikipedia ansiehst dann
stimmt deine Beschreibung nicht:
http://de.wikipedia.org/wiki/Software
Auch ist der Begriff "emuliert" falsch, denn der Implementierte
Prozessor ist physikalisch vorhanden, egal ob es sich um einen Softcore
oder Hardcore Prozessor handelt. Laut Wikipedia bedeutet Emulation (von
lat. aemulare, „nachahmen“)
Na und ob ein FPGA emuliert. Guck dir mal das RTL Schema zu einem
beliebigen VHDL/Verilog Code an, und überleg mal ob der FPGA die Teile
die da auftauchen so besitzt.
Der FPGA wird außerdem auch in Software konfiguriert. "Prozessor" ist
ein dehnbarer Begriff, schon ein NOT-Gatter berechnet etwas (nämlich die
boolsche Funktion NOT von Eingang). Und da die Konfig für den FPGA in
dessen SRAM liegt...
Begriffsklauberei hat noch nie jemandem geholfen.
I_ H. wrote:
> Na und ob ein FPGA emuliert. Guck dir mal das RTL Schema zu einem> beliebigen VHDL/Verilog Code an, und überleg mal ob der FPGA die Teile> die da auftauchen so besitzt.
Hmm, das ist ein interessanter Punkt. Was du da ansprichst hat doch mit
der Synthese der Hardwarebeschreibungssprache auf die physikalische
Struktur des Chips zu tun. Die ist beim FPGA vorgegeben, im Endeffekt
liegt sie aber in Hardware vor. Das gleiche passiert doch bei einem
ASIC. Dort wird die Hardwarbeschreibung auf die Makroblöcke des
jeweiligen ASIC-Prozesses abgebildet.
>> Der FPGA wird außerdem auch in Software konfiguriert. "Prozessor" ist> ein dehnbarer Begriff, schon ein NOT-Gatter berechnet etwas (nämlich die> boolsche Funktion NOT von Eingang). Und da die Konfig für den FPGA in> dessen SRAM liegt...>
Die Frage ist ob es Sinn macht den Begriff Prozessor so zu dehnen, nur
um den Begriff Software im Zusammenhang mit einem FPGA zu verwenden.
Wenn du dir die original Frage ansiehst dann hat Jan nach den
Unterschieden gesucht. Dann zu sagen ein FPGA wird mit Software
programmiert ist mehr verwirrend als klar stellend.
Der entscheidende Punkt ist doch, dass du den mit Weichware
konfigurierst ;). Also du kannst die Konfig vom FPGA jederzeit umändern,
und lässt ihn damit andere Hardware emulieren oder nachbilden (über die
Hardware des Emulators selbst, also die Makrozellen, wird ja nix
ausgesagt ;)).
Der große Unterschied zum ASIC ist eben, das bei dem alles in Hardware
realisiert ist. Der kennt auch keine Makrozellen, sondern wenn man in
VHDL ein Gatter braucht, wird da auch direkt ein Gatter draufgebacken.
Der große Vorteil ist, dass ein einzelnes Gatter eben deutlich kleiner
(und schneller!) ist als eine Makrozelle. Nur umkonfigurieren geht
nicht.
Beispielsweise könnte das dann so ablaufen: Firma xyz will einen DSP für
ein Radio entwickeln. Die Leut setzen sich mit einem FPGA hin, probieren
verschiedene Konzepte durch. FPGA ist in der Produktion aber zu teuer,
also wird aus der fertigen Beschreibung ein ASIC erstellt, der wirklich
nur die Komponenten enthält, die in der Beschreibung vorkommen. Ab x
tausend Stück ist der ASIC dann billiger als ein FPGA.
Der Hersteller muss seine Fertigungsanlage ja erstmal auf den ASIC
umstellen.
Hallo nochmal,
das ganze Erweckt jetzt glaube ich für den unbedarften Leser den
Eindruck, dass ASIC und FPGA zwei ähnliche Bausteine sind, nur dass der
FPGA das ganze in Software macht, was der ASIC in Hardware realisiert.
Das ist aber IMO so auch nicht richtig. ASIC ist einfach eine sehr
allgemeine Bezeichnung für einen IC, welcher speziell für eine Anwendung
(und oft nur für einen Kunden) hergestellt wird.
Ich könnte mir auch vorstellen, dass ein Kunde bei einem Hersteller ein
ASIC bestellt, welches dann unter anderem einen FPGA enthält...
Gruß
FL
Den kannst du dann aber auch wieder in einem FPGA emulieren ;)
Der einzige Punkt wo wirklich ein Unterschied besteht ist, dass ein FPGA
hauptsächlich auf digitale Sachen festgelegt ist.
I_ H. wrote:
> Der entscheidende Punkt ist doch, dass du den mit Weichware> konfigurierst ;). Also du kannst die Konfig vom FPGA jederzeit umändern,> und lässt ihn damit andere Hardware emulieren oder nachbilden (über die> Hardware des Emulators selbst, also die Makrozellen, wird ja nix> ausgesagt ;)).
Ich verstehen was du sagen willst. Aber finde ich das die Begriffe
"Software" und "emuliert" zu sehr erweitert werden. Im Bereich von
Computer Engineering / Computer Science wird der Begriff Software dafür
verwendet um ein ausführbares Programm auf einem Prozessor zu
beschreiben. Ein Emulator wiederum ist ein "Ding" das erlaubt ein
Programm von einem Prozessor auf einem anderen auszuführen.
Das ganze auf einen FPGA anzuwenden kann eine falsche Vorstellung
hervorrufen. Wenn ich ein kombinatorisches UND nur durch NAND-Gatter
implementiere, dann ist es immer noch eine Hardwareimplementierung von
UND und nicht eine Emulierung. Ja, wenn ich den Begriff erweitern will
könnte ich sagen es ist eine Emulierung, aber dann verwirre ich eine
Menge Menschen damit, die den Begriff anders gelernt haben.
Das gleiche ist mit dem FPGA. Nur weil ein kombinatorischer Konstrukt
nicht direkt in den entsprechenden Gattern implementiert ist, sondern
vielleicht mit LUT und MUX ändert nichts daran das die Funktion in
Hardware vorliegt.
Natürlich ist die Funktion des FPGA änderbar. Darum würde ich es aber
nicht als Software bezeichnen.
Günter -.. wrote:
> Das ganze auf einen FPGA anzuwenden kann eine falsche Vorstellung> hervorrufen. Wenn ich ein kombinatorisches UND nur durch NAND-Gatter> implementiere, dann ist es immer noch eine Hardwareimplementierung von> UND und nicht eine Emulierung.
Na ja, wenn es nun aber in einer RAM-Lookuptable implementiert ist kann
man da schon ins Grübeln kommen.
> Natürlich ist die Funktion des FPGA änderbar. Darum würde ich es aber> nicht als Software bezeichnen.
Die Konfigurationsdaten eines FPGAs kann man als Software bezeichnen
würde ich sagen.
FL wrote:
...
>> Das ist aber IMO so auch nicht richtig. ASIC ist einfach eine sehr> allgemeine Bezeichnung für einen IC, welcher speziell für eine Anwendung> (und oft nur für einen Kunden) hergestellt wird.> Ich könnte mir auch vorstellen, dass ein Kunde bei einem Hersteller ein> ASIC bestellt, welches dann unter anderem einen FPGA enthält...
Genau. Die grundlegende Gemeinsamkeit eines ASIC und eines FPGA sind das
es beides VLSI-Chips sind.
Was den ASIC so speziell macht ist das der Anbieter schon einige
Vorarbeiten geleistet hat, die den Implementierungsprozess dann
beschleunigen. So gibt es z.B. eine Makrobibliothek die schon
physikalisch auf den Chip abgebildet ist. Wenn jetzt ein Kunde mit einer
Hardwarebeschreibung kommt, wird der ASIC-Anbieter diese dann über die
Makros abbilden um den Chip zu fertigen.