Forum: Digitale Signalverarbeitung / DSP / Machine Learning Rechnerarchitekturen


von Jan (Gast)


Lesenswert?

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!

von Günter -. (guenter)


Lesenswert?

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.

von Günter -. (guenter)


Lesenswert?

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.

von Jan (Gast)


Lesenswert?

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?

von Jan (Gast)


Lesenswert?

Upps, sorry! Ich meinte, Günter!

von Anja Zoe C. (zoe)


Lesenswert?

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

von Günter -. (guenter)


Lesenswert?

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.

von FL (Gast)


Lesenswert?

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

von Günter -. (guenter)


Lesenswert?

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“)

von I_ H. (i_h)


Lesenswert?

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.

von Günter -. (guenter)


Lesenswert?

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.

von I_ H. (i_h)


Lesenswert?

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.

von FL (Gast)


Lesenswert?

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

von I_ H. (i_h)


Lesenswert?

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.

von Günter -. (guenter)


Lesenswert?

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.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

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.

von Günter -. (guenter)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.