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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.