So, schönen guten Morgen!
Ich begrüße Sie jetzt zur Vorlesung Grundlageninformatik 2.
Tut mir leid, dass es heute etwas spätet ist, erst durch ausgefallene
Straßenbahnen und jetzt auch noch durch einen widerspenstigen Rechner,
der nicht so wollte, wie ich das wollte.
Das ist also wirklich ärgerlich.
Jetzt muss ich hier noch sehen, dass ich den Bildschirm ein bisschen
verkleinere, damit wir auch was sehen können.
Und dann muss das hier wieder zurück.
Jetzt ist alles wieder schön.
Also, letztes Mal haben wir uns beschäftigt, nachdem wir uns nochmal
mit Schaltnetzen, Schaltwerken befasst hatten, waren wir dann gekommen
zu den Aspekten der physikalischen Realisierung.
Ich gehe jetzt auf die Schaltnetze, Schaltwerke nicht nochmal explizit
ein.
Wir hatten da die Halbadierer, Volladierer, den bitzerriellen Adierer
hatten wir davor schon gesehen.
Wir hatten dann die Schaltwerke angeschaut, Flipflops, RS-Flipflop, JK
-Flipflop, dann Master-Slave-Flipflop, Schieberegister und ich hatte
dann den bitzerriellen Adierer
und den bitzerriellen Modifizierer gesehen und kam dann hier zu den
Aspekten der physikalischen Realisierung.
Wir haben uns hier einiges angeschaut.
Zunächst mal, was eigentlich prinzipiell dotierte Halbleiter sind,
dass die einen Effekt haben, Halbleiter, die in einer Richtung leiten,
in der anderen nicht.
Und das liegt eben daran, dass man die Simpsonsgitter einfach so
dotieren kann, dass man in dem P-Bereich ein Elektronendefizit hat und
im N-Bereich einen Elektronenüberschuss, sodass die Elektronen von N
nach P laufen können und beziehungsweise dann ein Strom fließt von P
nach N.
Wir hatten dann den Transistor angeschaut, ich hatte Ihnen erläutert,
wie der funktioniert, wie er aufgebaut ist, dass wir hier diese N
-Diffusionsbereiche haben, ein Gate und dadurch, dass wir einen
Spannungsunterschied haben zwischen Source und Gate, dann einen
Potentialunterschied haben zwischen Gate und diesem Bereich hier unter
dem Gate, sodass wir hier einen negativ leitenden Endkanal erzeugen
können durch einen Feldeffekt.
Deswegen ein Feldeffekt-Transistor und da kommen eben alle diese
Dinge, die hier stehen, zum Vorschein.
Metal-Oxide-Semiconductor-Field-Effekt-Transistor, das sind genau die
Dinge, die hier alle drin vorkommen in dem Transistor.
Der NMOS-Transistor, wie gesagt, der in einer Richtung gut leitet, in
der anderen nicht.
Dann der PMOS-Transistor, genau komplementär dazu, der in einer N
-Wanne einen P-Diffusionsbereich hat, sodass der für ein negatives
Potential zwischen Source und Gate dann einen P-Kanal öffnet, das
heißt, dass wir dann auch wieder einen Ausgleich hinbekommen.
Und ich hatte Ihnen als letztes dann schon, das war die letzte Folie
beim letzten Mal, da gehe ich jetzt nochmal wieder rauf, da hatte ich
Ihnen gezeigt, dass man in der CMOS-Technologie, in der man jetzt P-
und N-Transistoren verwendet, dann eben sehr systematisch Schaltungen
bauen kann für die Berechnung von Funktionen.
Und das werde ich Ihnen heute etwas genauer vorführen.
Das erste Beispiel war der Inverter, den habe ich letztes Mal schon
gezeigt.
Und der Inverter, der arbeitet eben einfach so, dass wir hier einen
PMOS -Transistor, einen NMOS-Transistor haben unten drunter.
Und der PMOS-Transistor ist immer mit VDD verbunden, mit der
Spannungsversorgung, also mit dem hohen Potential.
Der NMOS-Transistor immer mit dem niedrigen Potential, mit Ground.
Und dadurch ist eben der Ausgang, den wir hier rechts sehen, hier
dieses B in dem Fall, ist eben mit VDD verbunden und damit auf dem
logischen Wert 1, wenn A gleich 0 ist, weil dann nämlich gerade hier
dieser hohe Potentialunterschied ist.
Dann kann B direkt mit VDD verbunden sein.
Wenn A gleich 1 ist, ist die Verbindung hier unten geschaltet, oben
ist zu, dann ist B mit Ground verbunden, sodass B immer auf das
entsprechende Potential entweder von VDD oder von Ground gezogen wird.
Und damit haben wir halt hier die unterschiedlichen Werte 0 oder 1,
beziehungsweise die entsprechende Voltzahl, mit der dieser Schaltkreis
betrieben wird.
Das war genau das, was ich Ihnen gerade erläutert habe.
Und wir haben also hier diese zwei Möglichkeiten, für A0 und A1 kommt
gerade der invertierte Wert rechts raus.
Jetzt kann ich, ja daraus kann man noch eine Erkenntnis nochmal
gewinnen, also wenn man sich nochmal vergegenwärtigt, was der NMOS
-Transistor kann.
Der NMOS-Transistor kann halt gut eine 0 übertragen und schlecht eine
1.
Warum?
Weil ja dieses, wenn wir uns anschauen, hier dieser Effekt, den wir
haben, hier verbunden mit Ground, für einen Potentialunterschied
leitet dieser NMOS-Transistor.
Wenn wir den NMOS-Transistor mit VDD verbinden würden, könnte niemals
eine Leitung hergestellt werden.
Der Kanal würde niemals aufgehen, weil wir nie den gewünschten
Potentialunterschied haben.
Das heißt, wir können hier nur so lange eine Verbindung herstellen
durch diesen Feldeffekt, solange wir einen Unterschied haben von
Potential 1 am Gate und hier eben etwas, was Richtung 0 geht.
Wenn das Richtung 1 geht, wird der Kanal immer weniger leitend.
Das heißt, wir können eine 0 sehr gut übertragen, hier auf den
Ausgang, das Beispiel war das B, wir könnten aber dort über einen NMOS
-Transistor keine 1 hin übertragen.
Ich hatte letztes Mal gesagt, man kann durchaus rein aus NMOS
-Transistoren auch Schaltungen bauen, aber die haben sich nicht als so
effizient erwiesen, insbesondere nicht bezüglich des Stromverbrauchs.
Die sind deutlich energieintensiver als CMOS-Schaltungen.
CMOS-Schaltungen sind sparsam im Stromverbrauch.
Ich werde Ihnen jetzt dazu noch ein paar Beispiele zeigen.
Also wie gesagt, immer PMOS-Transistoren mit VDD verbunden, NMOS
-Transistoren mit Ground.
Und Sie sehen hier ein Beispiel für einen NAND-Gutter.
NAND-Gutter hatten wir gesehen, das war, das hat mich schon mal
vorgeführt, das war ja einfach nur NAND, NAND wäre also dieses Gutter
mit A und B gehen hier rein, C kommt raus und C hat den Wert A und B
quer.
Und warum ist das jetzt hier ein solches Transistorschaltbild für ein
NAND -Gutter?
Schaut man sich das genauer an, was sehen wir?
Also A und B sind die Eingänge, hier ist ein Eingang, da ist ein
Eingang und wir haben in diesem Fall vier Transistoren.
Wenn A und B beide 1 sind, dann haben wir hier eine Verbindung.
Also wenn hier 1 ist und da 1 ist, dann haben wir hier eine
Verbindung, dann sind beide Transistoren geöffnet.
Und das heißt, dieses C hier wird dann auf 0 gehen, weil die beiden
geöffnet sind.
Für A gleich 1, B gleich 1 sind die beiden oberen gesperrt, die beiden
PMOS -Transistoren.
Und das heißt, wenn beide 1 sind, ist bei NAND gerade das Ergebnis 0,
also richtig.
Und in jedem anderen Fall, wenn also A oder B 0 sind, wenn ich also
hier eine 0 reinschreibe, dann ist das hier an der Stelle gesperrt und
dann geht C sofort auf 1, weil nämlich, wenn das hier 0 ist, wir hier
eine Verbindung haben.
Also wenn A 0 ist oder B 0 ist, haben wir eine Verbindung über die
PMOS -Transistoren mit VDD.
Wenn beide 1 sind, haben wir durch die Serienschaltung der beiden NAND
-Transistoren eine Verbindung zu GND und dann kommt 0 raus.
Analog kann man ein NOR-Gatter bauen, bei dem wir das genau
symmetrisch aufbauen können.
Hier kommt eine 1 raus, wenn A und B beide 0 sind.
Wenn die beide 0 sind, haben wir hier eine Verbindung und dann ist da
die Verbindung zum C.
Also wenn beide 0 sind, muss bei NOR eine 1 rauskommen.
Und ansonsten, wenn eines von den beiden 1 ist, dann hätten wir in dem
Fall hier gesperrt und wir hätten hier eine Öffnung und wir hätten C
mit GND verbunden, dann würde dort 0 rauskommen.
Also das sind einfache Schaltungen für NAND und NOR, 4 Transistoren.
Jetzt können Sie sich überlegen, man kann natürlich auch größere
Schaltungen bauen für größere Schaltfunktionen.
Und Sie werden bei CMOS-Technologien immer sehen, dass man so zwei
Ebenen hat oder zwei Bereiche hat.
Einmal den Bereich, der mit VDD verbunden ist, einmal der mit GND
verbunden ist.
Und die beiden sind in der Regel von der Struktur her komplementär
zueinander, dass Sie bei dem einen, wo Sie bei dem einen
Reihenschaltung haben, haben Sie bei dem anderen Parallelschaltung und
umgekehrt.
Also das ist auf die Art und Weise möglich, sehr systematisch
Schaltkreise oder Transistorschaltkreise zu entwerfen.
Und damit kann man dann eben auch weitere Dinge bauen.
Sie könnten natürlich problemlos jetzt aus einem NAND- oder NOR-Gutter
auch ein AND-Gutter bauen.
Also das ist jetzt etwas seltsam.
Wir haben normalerweise ein AND-Gutter als elementares Gutter und
bauen dann über einen zusätzlichen Inverter daraus ein NAND zum
Beispiel.
Jetzt haben wir hier als sehr einfache Struktur ein NAND und könnten
natürlich, indem wir hier einfach dran schließen, einen Inverter, so
wenn wir hier einen Inverter dran schließen, da nochmal VDD dran und
hier unten GND.
Und dann hätten Sie hier, wenn ich da ein D dran schreibe, als D den
Wert der einfachen Konjunktion.
Also hier wäre die Konjunktion, das einfache AND, aufwendiger als
Transistorschaltung zu implementieren als ein NAND.
Sie wissen, wir könnten sogar aus diesem Baustein alle anderen
Schaltungen auch entwerfen, weil wir mit NAND und NOR alle
Schaltfunktionen realisieren können.
Gut, das also dazu.
Jetzt gibt es natürlich noch weitere Dinge, die wir machen wollen.
Sie hatten gerade eben gesehen, wir haben immer die Verbindung zu VDD
und GND.
Manchmal möchte man auch Dinge machen wie hier bei diesem
Transfergatter.
Ich möchte gerne einen Wert hier von links nach rechts übertragen.
Und das soll der gleiche Wert sein.
A soll auf B übertragen werden.
Was Sie hier sehen, ist eine Schaltung, bei der Sie zwei Transistoren,
NMOS und PMOS Transistoren, sehr eng aneinander gebaut haben.
Und wenn Sie jetzt diesen Wert V hier auf Null setzen, dann wäre bei
dem NMOS Transistor keine Leitung.
Bei dem PMOS Transistor, weil dann V quer 1 wäre, wäre auch keine
Leitung.
Wenn ich also hier 0 hinschreibe, dann wäre hier eindeutig eine
Sperre.
Wenn ich dort eine 1 hinschreibe, dann wären beide Transistoren
leitfähig.
Was hat das für einen Vorteil?
Wenn beide leitfähig sind, dann ist es völlig egal, ob ich hier eine 0
oder 1 habe.
Ich kann die 0 oder 1 perfekt auf die rechte Seite übertragen, weil
ich für die 0 den NMOS Transistor, den N-Kanal, perfekt nutzen kann.
Und für die 1 kann ich den P-Kanal nutzen.
Das heißt, ich habe auf die Art und Weise die Möglichkeit, das was wir
vorher über die einfachen Gattaschaltbilder uns überlegt haben, ein
getaktetes Verzögerungselement, das haben wir hier auf einmal mit zwei
Transistoren realisiert.
Das heißt, es ist auf einmal ganz einfach.
Jetzt erinnern Sie sich, mein Gott, das Verzögerungselement, das war
ein Master-Slave-Flip-Flop.
Beziehungsweise wir hatten ein getaktetes, ein synchrones RS-Flip-Flop
oder synchrones JK-Flip-Flop.
Da hatten wir ja eine ganze Reihe von Elementen drin.
Da hatten wir zwei NORs drin und das sah wesentlich komplizierter aus.
Und dann auch UND-Gatter.
Hier haben sie mit zwei Transistoren ein solches Verzögerungselement
gebaut.
Das heißt, aus der logischen Beschreibung, mit der wir ein
Verzögerungselement logisch entworfen haben, kommen wir nicht direkt
zu einer effizienten Hardware-Implementierung, sondern Sie sehen, dass
wir über die Transistorschaltkreise einige Schaltungen deutlich
effizienter realisieren können, als das nach dem Gattaschaltbild
zunächst mal aussieht.
Gut, das also dazu.
Ich habe schon gesagt, für V gleich 1 wird der Wert von A nach B
übertragen.
Und man verwendet natürlich zwei Transistoren, weil der NMOS
-Transistor eine 0 gut überträgt und der PMOS-Transistor eine 1.
Man könnte natürlich das auch machen, wenn Sie sagen, ich möchte jetzt
nur irgendeinen Wert hier von links nach rechts übertragen, je nach B.
Und es soll hier gelten, dass das B gleich A ist.
Können Sie das natürlich auch mit einer Folge von zwei Invertern
machen.
Sie könnten also hier einfach zwei Inverter hinmalen.
Und warum zwei Inverter, komme ich gleich drauf.
Wenn Sie hier den Ausgang sehen, würde hier natürlich erstmal nur A
quer stehen.
Und wenn Sie den Wert A dort haben wollen, brauchen Sie hier nochmal
einen Inverter, damit Sie hier am Ausgang tatsächlich das A
hinbekommen.
Was wäre der Unterschied?
Also hier das VDD, da links auch und hier natürlich wie üblich GND.
Was wäre der Unterschied, wenn Sie diese beiden Schaltbilder
vergleichen?
Zunächst einmal habe ich hier kein Signal V, das irgendwie die
Übertragung in irgendeiner Form verzögert.
Der Vorteil ist, dass das Signal, das hier rechts auftaucht, gespeist
wird durch die Spannungsversorgung.
Hier, dieses B, ist der Wert von A.
Ich schiebe hier einen Wert rein, ich habe hier ein bestimmtes
Potenzial.
Und über den geöffneten P-Kanal oder N-Kanal kommt der Wert auf B dann
raus.
Aber es wird das Potenzial von hier, von links nach rechts übertragen.
Das gleicht sich aus.
Es ist aber nicht direkt mit der Spannungsversorgung verbunden.
Und deswegen ist das Signal hier auf der rechten Seite eventuell nicht
ganz so gut, wie das Signal, das Sie hier bekommen.
Weil Sie leichten Verlust haben können da drin.
Das ist ein kleiner Nachteil.
Der Vorteil ist aber, wie gesagt, Sie haben mit zwei Transistoren hier
die Möglichkeit, ein getaktetes Verzögerungselement zu bauen.
Und wenn man das jetzt vollständig machen möchte, so wie wir das
kennengelernt haben als Master Slave Flip Flop, dann würden wir das so
bauen, wie es hier zu sehen ist.
Sie haben hier eine Kombination von zwei solchen Transfergattern und
zwei Invertern.
Dadurch wird also das Signal jeweils schön wieder auf VDD oder Ground
gebracht.
Und Sie können jetzt genau den Effekt des Master Slave Flip Flops
realisieren.
In einer etwas anderen Form.
Beim Master Slave Flip Flop war das so, dass wir durch das Schalten
auf 1 den Wert übernehmen konnten.
Und wir schalten auf 0 den Wert dann weitergegeben haben an den Slave.
Und hier haben Sie zwei Taktsignale, die in einem nicht überlappenden
Muster mit Einsen versehen werden.
Also Sie haben einmal 4,1.
Wenn 4,1 auf 1 ist, dann wird ein Wert übertragen über dieses
Transfergatter zu dem Inverter.
Also wenn Sie hier ein A stehen haben, dann würde anschließend hier
ein A quer stehen.
Und dann geht das 4,1 auf 0.
Dann wird das hier gesperrt.
Und das 4,2 geht auf 1.
Dann hätten Sie hier eine Leitung.
Und dann geht das hier auf A.
Das heißt, Sie würden dann genau den Effekt eines Master Slave Flip
Flops im Prinzip realisieren.
Mit diesen zwei Schleusentoren.
In dem Fall wirklich zwei verschiedene Signale, 4,1 und 4,2.
Zwei Taktsignale.
Und Sie hätten einen Master Slave Flip Flop von der logischen Funktion
her damit realisiert.
Das ist also ein Verzögerungsglied, wie es tatsächlich in
hochintegrierten Schaltungen eingebaut wird.
Das ist also ein solches Verzögerungsglied.
Damit können wir Werte speichern und können sie weitergeben.
Also Schieberegister und so kann man auf die Art und Weise
hervorragend bauen.
Das sind dann dynamische oder statische D-Latches.
Was ist der Unterschied?
Dynamisch, das heißt, Wert geht beim Lesen verloren.
Beziehungsweise ich muss, damit ein Wert in einem Speicherelement
wieder vorhanden ist danach, wenn ich es nochmal lesen möchte, dann
muss ich es inzwischendurch wieder aufgefrischt haben.
Das, was ich lese, muss ich aufgefrischt werden.
Wenn ich ein statisches Speicherelement habe, dann habe ich den Wert
auf jeden Fall wieder drin.
Das heißt, hier beim statischen geht er nicht verloren.
Und das heißt, ich brauche beim statischen Speicherelement nichts
wieder logisch aufzufrischen.
Und das bedeutet, ich kann schneller zugreifen.
Wenn ich einen Wert lesen möchte, muss ich beim dynamischen Speicher
dafür sorgen, dass anschließend der Wert wieder reingeschrieben wird.
Das dauert dann etwas länger, ermöglicht aber eine kleinere
Speicherzelle.
Das heißt, die dynamischen Speicher sind klein und die statischen sind
größer.
Sie sind auch immer nicht sehr groß, aber die haben etwa die doppelte
Anzahl von Transistoren.
Das heißt, wenn Sie einen Speicher bauen aus dynamischen
Speicherzellen, dann kann der kleiner sein, kann also eine größere
Kapazität haben, kann mehr Werte aufnehmen als ein Speicher, der
statische Speicherzellen hat.
Und das ist der Grund, warum zum Beispiel die Cache-Speicher, zu denen
wir später noch kommen, Cache-Speicher sind relativ schnell und
statische Speicher sind deswegen teuer, weil sie sind mit mehr
Transistoren versehen, sind also aufwendiger zu bauen, während die
dynamischen Speicher kleiner sind, preiswerter, aber eben auch
langsamer.
Der Hauptspeicher ist in der Regel aus dynamischen Speichern gebaut,
der Cache-Speicher aus statischen Speichern, die sind teurer, deswegen
sind die Cache-Speicher kleiner als die Hauptspeicher.
Auf diese Architekturfragen kommen wir später noch wieder zurück.
Hier ist aber die technologische Ursache dafür, dass wir diese
Unterschiede haben im Preis und auch im Verhalten zwischen statischen
und dynamischen Speichern.
Okay, das also ganz kurz dazu.
Und damit verlassen wir schon die physikalische Ebene, die CMOS
-Technologie und gehen dazu über, dass wir uns überlegen, wie können
wir überhaupt jetzt ganz systematisch solche Schaltkreise, solche
Hardware entwerfen.
Dafür gibt es CAD-Werkzeuge, man kann solche Schaltungen auf
verschiedene Art und Weise entwerfen.
Ich sagte, wir gehen jetzt aus der Ebene raus, stimmt nicht ganz.
Wir wollen uns überlegen, wie man die entwerfen kann.
Und dazu kann man sich eines überlegen.
Ich will ja einen Schaltkreis in VLSI-Technologie, also als
hochregulierten Schaltkreis, realisieren lassen.
Ich hatte bei der Vorstellung des Transistors gesagt, man muss dort
die Siliziumschicht mit einem Siliziumdioxid überziehen und
anschließend muss man bestimmte Bereiche rausätzen und so weiter.
Das heißt, man braucht gewisse Masken.
Ich habe also hier meinen Wafer so angedeutet.
Und jetzt brauche ich da drauf irgendwelche Muster, die ich jetzt hier
praktisch drauf drucken möchte.
Das sind ja gedruckte Schaltungen.
Das Druckverfahren ist im Prinzip so etwas Ähnliches wie Lithographie.
Dabei muss ich jetzt das Muster, das dort gedruckt werden muss,
irgendwie beschreiben.
Und dieses Muster kann ich im grafischen Editor, im sogenannten Full
-Custom -Entwurf, also völlig kundenorientiert, nach dem, was möchte
ich konkret als Schaltung entwerfen, kann ich das entwerfen, indem ich
einfach solche farbigen Rechtecke male.
Mit diesen farbigen Rechtecken gebe ich an, welche Materialien jeweils
verwendet werden sollen.
Also dieses Bild, das hier steht, das linke oder auch das rechte, das
enthält im Prinzip die Vorgaben für eine ganze Reihe von solchen
Masken, die nacheinander verwendet werden müssen, um einen Schaltkreis
zu realisieren.
Und wir haben also hier die logisch interessanten Schichten
angedeutet.
Für einen NMOS-Transistor brauchen wir die Verbindung natürlich zu
Source und Drain.
Das geschieht über blau charakterisierte Metallleitungen.
Wir brauchen auch diese Diffusionsbereiche.
Wir brauchen also diesen Diffusionsbereich links und rechts.
Ihr erinnert sich, wir hatten ja hier dieses so aufgemalt mit dem
Gate.
Hier waren die Diffusionsbereiche und da kamen die Verbindungen rein.
In blau sind das jetzt hier die Metallleitungen, grün ist der
Diffusionsbereich angegeben, in rot das Polysilizium, also hier oben
drauf das Gate.
Und Sie sehen, das sind so gewisse Überlappungen.
Dieser rote Bereich ragt so ein bisschen über den grünen Bereich
rüber.
Wenn ich das nicht machen würde, hätte ich dort einen durchgehenden
Diffusionsbereich.
Das wäre nicht gut, dann hätte ich keinen Transistor, keinen Endkanal
und so weiter.
Dann sehen Sie noch hier in eingezeichnetem Braun Kontaktflächen.
Ich muss ja das Metall verbinden mit dem Diffusionsbereich.
Das muss ich halt technologisch realisieren.
Und dann kann es sein, dass ich durchaus noch weitere Leitungen habe,
die da oben rüberlaufen.
Wenn hier kein Kontakt eingezeichnet ist, dann laufen die einfach oben
drüber und sind nicht mit dem Diffusionsbereich verbunden.
Also ich kann Metallleitungen über Transistoren hinweglaufen lassen.
Das ist der NMOS-Transistor.
Beim PMOS-Transistor sah das ja ganz ähnlich aus.
Da hatten wir aber in einer N-Wanne, die ist hier in grün angegeben,
in gelb die zwei P-Wannen.
Ansonsten ist alles identisch.
Damit haben wir also die Möglichkeit, in einem grafischen Editor
solche Schaltungen zu entwerfen.
Damit man alles richtig macht, hat ein guter Editor für solche
Schaltkreise gewisse Entwurfsregeln implementiert oder dort vorhanden,
die anmeckern, wenn zum Beispiel hier dieser Abstand nicht richtig ist
oder wenn die Dicke von so einer Leitung nicht richtig ist oder hier
die Breite von so einem Diffusionsbereich.
Das heißt, ihr habt genaue Vorgaben, wie groß ich gewisse Dimensionen
hier machen muss.
Und wenn ich dagegen verstoße beim Entwurf, dann wird das beim guten
Editor entsprechend angemeckert.
Auf die Art und Weise kann ich also meine Schaltungen sehr genau
realisieren und kann dafür sorgen, dass die exakt so implementiert
werden, wie ich das hier aufmale.
Das ist natürlich ziemlich aufwendig.
Da müssen Sie jedes einzelne Element hier explizit zeichnen.
Hier übrigens nochmal ein Beispiel.
Das hier wäre jetzt ein Inverter, der hier halt etwas anders
dargestellt ist, ein bisschen mehr den tatsächlichen Dimensionen
angepasst.
Also die Metallleitungen sind in der Regel, insbesondere VDD und
Ground, natürlich wesentlich breiter als die anderen Leitungen.
Und Sie sehen also hier diese verschiedenen Verbindungen.
Hier haben Sie den Input, da haben Sie den Output, das ist also das
Gate.
Hier haben Sie die Ausgabe des Inverters, da kommt also B raus.
Sie haben hier die beiden Gates, einmal für den PMOS-Transistor,
einmal für den NMOS-Transistor.
So in etwa sehen dann tatsächlich die Schaltkreise aus, die gedruckt
werden.
Natürlich ein bisschen mehr drin, wenn Sie da etwas komplexere
Schaltkreise haben als ein Inverter.
Also auf die Art und Weise kann man jetzt größere Schaltkreise
entwerfen.
Und dann will ich vielleicht gar nicht immer die einzelnen
Transistoren entwerfen, sondern ich möchte gewisse Bausteine
verwenden.
Das ist dann der sogenannte Semi-Custom-Entwurf, also der nicht ganz
vollständig spezifizierbare, sondern da muss ich Bausteine verwenden,
Standardzellen für elementare Gatter, und ich spezifiziere dann meine
Schaltung nur bis zur Ebene dieser Standardzellen.
Das weitere Layout wird dann automatisch erzeugt.
Der Nachteil ist, wenn ich das mache, habe ich keine Kontrolle über
die konkrete Anordnung meiner Zellen auf dem Wafer, auf dem
Siliziummaterial.
Und das heißt, ich kann nicht sagen, wenn ich jetzt hier zwei Elemente
habe, oder drei oder vier, dass die genau so angeordnet werden sollen
und vielleicht nicht so angeordnet werden sollen.
Also ich habe keine konkrete Kontrolle über die, man könnte
meinetwegen auch verbunden sein, darüber wie, so schräg wird sowieso
nie was gemacht, sondern immer schön rechtwinklig.
Ich habe keine Kontrolle über den Verlauf der Leitungen beim Semi
-Custom -Entwurf, und das heißt, dass Verzögerungszeiten über
Leitungen nicht unbedingt von dem Entwerfer beeinflusst werden können.
Verzögerungszeiten über Leitungen haben Einfluss auf die Schaltzeiten
von Schaltnetzen und dadurch natürlich Einfluss auf die
Geschwindigkeit, mit der Sie ein solches Schaltnetz takten können.
Und deswegen ist es also wichtig, wenn man wirklich ganz effizient die
Technologie ausreizen möchte, dann muss man volle Kontrolle haben,
deswegen dann Full-Custom-Entwurf.
Wenn es darauf nicht so ankommt, nimmt man Semi-Custom-Entwurf.
Und wenn es noch weniger darauf ankommt, wenn Sie sagen, ich möchte
einfach nur ein Schaltnetz haben, das eine bestimmte Funktion
realisiert, dann nehme ich einen sogenannten Silicon-Compiler, also
einen Silizium-Übersetzer, der eine funktionelle Beschreibung, eine
Beschreibung des funktionalen Verhaltens automatisch übersetzt in
einen mikroelektronischen Schaltkreis.
Auch das kann man machen.
Dazu muss ich natürlich in der Lage sein, meine Schaltkreise,
Schaltnetze, Schaltwerke in einer höheren Sprache abstrakt zu
beschreiben.
Dafür gibt es entsprechend Hardware-Beschreibungssprachen und ich
werde Ihnen dazu auch ein Beispiel zeigen, wie das funktioniert.
Bevor ich das mache, will ich Ihnen aber ganz kurz etwas erzählen über
die Entwurfsregeln, die es so gibt.
Ich hatte das kurz angedeutet.
Entwurfsregeln beziehen sich also zum Beispiel darauf, dass ich, wenn
ich Leitungen hier angehe, wenn das eine Leitung ist und das hier eine
Leitung ist, dann muss ich bestimmte Abstände zwischen Leiterbahnen
einhalten.
Es kann nämlich sein, dass bei der Realisierung das dann nicht so
schön aussieht wie hier links, wo das auch schon gar nicht so sehr
schön gerade aussieht.
Es kann sein, dass es in der Realisierung tatsächlich so aussieht,
weil das einfach Edds-Vorgänge sind und Druckvorgänge, die Sie nicht
hundertprozentig exakt vielleicht bauen können.
Und dann könnte es sein, wenn Sie hier die Verbindung nicht ganz
einhalten oder die Abstände nicht ganz einhalten, dass Sie auf einmal
Kurzschlüsse oder nicht vorhandene Verbindungen haben.
Deswegen, entsprechend der Qualität des Prozesses, mit dem Sie drucken
können, brauchen Sie hier mindestens Breiten für Ihre Leiterbahnen und
für auch andere Dinge und Sie brauchen auch mindestens Abstände
zwischen Leiterbahnen.
Sie brauchen beim, wenn Sie also hier einen Transistor malen, dann
müssen Sie dafür sorgen, dass diese Überlappung eine Mindestgröße hat
und so weiter.
So weit gibt es eine Reihe von Regeln.
Nun ist es so, in den Ende der 70er, das ist eine kleine
technologische Geschichte dazu, Ende der 70er Jahre gab es ein sehr
berühmtes Buch von Mead und Conway über den Entwurf integrierter
Schaltungen.
Und da wurde insbesondere eine Technologie vorgestellt, mit der man
mit einigermaßen skalierbaren Regeln solche Schaltkreise entwerfen
konnte.
Und es gab in Deutschland zu der Zeit auch ein Forschungsprogramm, das
nannte sich Entwurf integrierter Schaltungen, in dem das, was in
anderen Teilen der Welt, in den USA damals und auch in anderen Teilen
gemacht wurde, eben auch verfolgt wurde.
Ich muss an den Hochschulen dafür sorgen, dass Schaltungen, VLSI
-Schaltungen, also hochintegrierte Schaltungen, Very Large Scale
Integrated Circuits, dass die entworfen werden können, gefertigt
werden können, dass man Erfahrungen mit dieser Mikroelektronik
bekommt.
Und ich war zu der Zeit in einem Projekt, in dem wir uns mit
sogenannten VLSI-gerechten Algorithmen beschäftigt haben, wie man
Algorithmen in Hardware implementieren kann.
Und wir hatten einen netten Schaltkreis entworfen, mit dem man
sortieren konnte.
Wir wollten den in Hardware übertragen, wir waren nicht in dem ICE
-Projekt, wir hatten ein von der DFG gefördertes Projekt und haben
beim ICE-Konsortium angefragt, wir hätten gerne ein Chip realisiert
und brauchen die Entwurfsregeln dafür, damit wir die Masken entwerfen
können.
Da hieß es, ja, wir sind gerade dabei, uns auf eine neue Technologie
einzustellen, bauen diesen Entwurfsregelsatz um und das dauert aber
eine Weile, bis wir die neuen Entwurfsregeln verfügbar haben werden.
Wir sollten so ein Vierteljahr oder so wieder nachfragen.
Wir haben das getan und es hieß immer noch, wir sind noch nicht
fertig, weil eine neue Technologie erlaubt so viele Dinge und da
müssen wir uns neue Entwurfsregeln überlegen und es war noch nicht so
weit, dass dann auch wirklich verlässliche Schaltungen rauskommen.
Und dann hatte ich Kontakt zu einem Kollegen aus Dänemark, ich war
damals oben in Kiel, hatte Kontakt zu einem Kollegen aus Dänemark,
habe dem davon erzählt und der sagte, in Skandinavien gibt es eine
Organisation, die heißt Nordchip.
Und da, das dient dazu, dass man Chips entwerfen kann, die aus
Hochschulen von Studenten entworfen wurden und damit das möglichst
einfach geht, hätte man sich geeinigt auf einen sehr einfachen Satz
von Entwurfsregeln, das waren so Größenordnung 20 Regeln, die sind
sehr konservativ, erlauben verlässliche Schaltungen zu bauen und die
könnten wir auch, wir könnten uns da anschließen, könnten einfach
einen Entwurf machen mit den Regeln und dort dann den einreichen und
fertigen lassen.
Innerhalb von 14 Tagen hatten wir auf Basis dessen, was wir per Hand
gezeichnet hatten, einen vernünftigen Entwurf, konnten den
implementieren, hatten nach, ich glaube, drei Monaten dann einen
funktionsfähigen Chip in der Hand, der sortieren konnte.
Und warum ich das erzähle, ist folgendes, wir sind in Deutschland
manchmal dabei, dass wir Dinge sehr kompliziert machen.
Wir wollen die Technologie bestmöglich ausnutzen und wollen das
perfekt machen.
Und dann dauert das halt etwas länger.
Und andere, wie die Skandinavier, sind sehr pragmatisch und sagen, wir
machen erstmal einen einfachen Ansatz, mit dem sammeln wir Erfahrungen
und wenn wir dann die Technologien wirklich gut können, dann werden
wir das auch verbessern.
Das ist ja dann kein Problem, aber dann haben wir bereits
Möglichkeiten, mit Hardware umzugehen und die zu testen und wir haben
viele Studenten, die damit in Verbindung gebracht werden können, wie
man Schaltkreise entwirft.
Das heißt, das ist ein ganz wichtiger Punkt bei
Technologieentwicklungen.
Gehe ich gleich auf die bestmögliche Ausreizung der Möglichkeiten
einer neuen Technologie oder gehe ich erstmal konservativ vor, um
gewisse Dinge zu erproben, bin dann aber technologisch am Ende
eigentlich deutlich schneller und weiter als die anderen.
Und Sie wissen, dass in Deutschland eigentlich die gesamte
Mikroelektronikindustrie im Prinzip abgestoßen wurde.
Hatte auch mit politischen Vorgaben zu tun, weil meine Meinung war,
Mikroelektronik ist eigentlich nicht so wichtig.
Chips auch, also ob ich nun Elektronikchips verkaufe oder andere
Chips, ist nicht so wichtig.
Hauptsache ich kann verkaufen und damit ist Technologie aus
Deutschland weitgehend abgewandert.
Das ist ein technologischer Fehler gewesen, die ist dadurch
abgewandert in andere Länder.
Es gab große Konzerne in Skandinavien, die auch nicht mehr so
erfolgreich sind, aber es gibt eben andere Länder, die haben das sehr
systematisch weiterentwickelt, aufgegriffen.
Bei uns hat man in dem Zeitraum auf andere Technologien gesetzt als
auf Mikroelektronik.
Das war einfach eine politische Steuerung, die bei uns anders lief.
Das nur als Randbemerkung, hat direkt mit dem Stoff der Vorlesung
nichts zu tun, aber indirekt schon, weil das was damit zu tun hat, wie
man mit technologischen Entwicklungen umgeht.
Und insofern wollte ich Ihnen das durchaus erzählen.
Also, das war ein kurzer Ausflug auf Erfahrungen mit Technologie und
dass Entwurfsregeln bestimmen können, wie schnell man in der Lage ist,
neue Produkte tatsächlich zu entwerfen.
Damals war das so, dass man so eine Ein-µ-Technologie hatte, also
einen Mikrometer Abstand zwischen diesen Leitungen.
Und dieser Mindestabstand bzw.
die Mindestbreite einer Leiterbahn, die hat im Prinzip bestimmt, wie
hoch die Integrationsdichte in solchen Schaltungen sein konnte.
Wir haben also eine Entwicklung bei den Integrationsdichten, die sich
danach richtet, wie groß dieser Abstand hier ist.
Man hat das häufig einfach Lambda genannt, die Dicke einer Leitung.
Und alles andere skalierte im Prinzip über diesen Abstand.
Und das Ganze ging zu Beginn der hochintegrierten Schaltung los mit
sehr wenigen Gattern pro Chip.
Das war so in den 60er Jahren, da hatte man weniger als zwölf
Transistoren auf dem Chip oder Gatter pro Logikchip.
Also noch ein bisschen mehr Transistoren, aber eben nicht sehr viele
Gatter.
Das war die Small Scale Integration.
Und dann ging das weiter auf Medium Scale, Large Scale, Very Large
Scale.
Das war dann so etwa Ende der 70er, Anfang der 80er Jahre.
Danach kam dann Ultra Large Scale Integration mit so 100.000 bis 1.000
.000 Gatter pro Chip.
Wenn man das jetzt weiter treibt mit diesen Bezeichnungen, käme danach
also Gigantic und Horrendous Scale Integration.
Was hat man dann aufgegeben, um das weiter so zu bezeichnen?
Wir sind inzwischen weit darüber hinaus, also weit über Horrendous
Scale Integration hinaus.
Wir nennen es immer noch Very Large Scale Integration.
Aber es ist halt einfach eine wahnsinnige technologische Entwicklung,
bei der wir etwa alle so anderthalb Jahre eine Verdoppelung der
Integrationsdichte bekommen.
Das ist das sogenannte Moor's Law, das Moor's Gesetz.
Gordon Moor hat ziemlich zu Beginn, nach so drei, vier Jahren
Technologieentwicklung im Bereich der integrierten Schaltungen, hat er
das Gesetz postuliert, dass man etwa alle anderthalb Jahre eine
Verdoppelung der Integrationsdichte bekommt und eine Verdoppelung der
Geschwindigkeit.
Und das heißt, dass die Leistungsfähigkeit der Rechner dadurch einfach
immer besser wird.
Und man hat damals Prognosen gemacht, naja, das würde ja bedeuten, man
hätte dann bis zum Jahr 2000 irgendwie eine riesige Vergrößerung der
Rechenleistung.
Das kann ja kaum sein.
Wir sind immer noch dabei, dass wir ständig genau diesem Gesetz
folgen, dem Moor's Gesetz.
Das heißt, unsere Rechner werden immer leistungsfähiger, immer kleiner
und deswegen haben wir eine vollständige Durchdringung unserer Welt
mit informationsverarbeitenden Bauelementen, die wir halt irgendwo am
Körper, in der Kleidung oder irgendwo mit uns rumtragen können.
Wir wissen, dass das eine gewaltige Veränderung der Gesellschaft
gebracht hat und auch der Technik.
Und das liegt halt einfach daran, dass wir auf diese Art und Weise
immer besser solche Schaltungen entwerfen können.
Und auch da gab es Dinge in diesem Bereich hier.
Ich hatte das Buch von Meet Conway erwähnt.
Wenn Sie sich das Buch anschauen, da gibt es ein Kapitel über
physikalische Betrachtungen, physikalische Grenzen der Technologie.
In diesem Buch.
Sehr renommierte Wissenschaftler.
Carver Mead und Lynn Conway.
Und die schreiben dort etwas über die physikalischen Grenzen.
Ab welcher Integrationsdichte man nicht mehr in der Lage sein wird,
solche Schaltungen noch verlässlich zu bauen.
Und wir haben das physikalisch begründet, warum man unter bestimmten
Leiterbahnenbreiten nicht hinuntergehen kann.
Und wir sind inzwischen weit unterhalb dieser Dimensionen.
Weil die Annahmen, die physikalischen Modelle, die die da betrachtet
haben, die waren nicht zutreffend.
Aber mit dem damaligen Stand der Wissenschaft haben sie argumentiert,
man kann da nicht runterkommen.
Wir sind trotzdem drunter gekommen.
Solche Dinge gibt es immer wieder und auch das finde ich wichtig zu
vermitteln.
Dass man aufpassen muss, wenn man solche Grenzen genannt bekommt,
Grenzen für technologische Entwicklungen.
Manchmal geht es tatsächlich über diese Grenzen hinaus.
Ein weiteres Beispiel, kann ich an der Stelle auch noch erwähnen, ist
die Informationsübertragung über Telefonleitungen.
Da hat man mal gemeint, das geht nur mit vielleicht ein bisschen 10
.000 oder so was Bits pro Sekunde.
Aus technologischen Gründen geht es gar nicht anders, ansonsten
bräuchte man Glasfaserkabel.
Mittlerweile können wir Megabit übertragen mit Telefonleitungen.
Aber nicht, weil sich die Physik geändert hat, sondern weil unsere
Verfahren für die Kodierung von Informationen auf solchen
Telefonleitungen sich verändert hat.
Wir haben neue Modelle für die Kodierung von Informationen gefunden
und deswegen konnte man diese Sprünge machen.
Völlig neue Arten, wie man Informationen überträgt und damit
wesentlich höhere Übertragungsraten.
Das also zu technologischen Entwicklungen, auf die man aufpassen muss.
Wir sind also mittlerweile bei den Leiterbahnbreiten, das war hier
etwa so Ende der 70er, Anfang der 80er Jahre.
Mittlerweile sind wir hier im Bereich, wo wir wenige Nanometer Breite
haben als Leiterbahnbreite für diese hochintensiven Schaltungen.
Dazu gibt es natürlich Grenzen, wenn Sie solche Schalter bauen wollen,
Transistor bauen wollen.
Ups, da war ein Wackelkontakt.
Ich sagte gerade, es gibt physikalische Modelle, die manchmal nicht
zutreffend sind.
Sie brauchen natürlich eine gewisse Anzahl von Elektronen, um einen
Unterschied im Potenzial darstellen zu können.
Sie brauchen eine gewisse Menge von Elektronen, die wandern, damit sie
einen Stromfluss realisieren können.
Hier ist also vor einigen Jahren schon hier am KIT, beziehungsweise im
Forschungszentrum Karlsruhe ein atomarer Transistor entworfen worden,
bei dem also einzelne Elektronen da durchlaufen können.
Unterhalb solcher Bereiche, wo Sie also wenige Elektronen nur haben,
um Potenzialunterschiede darzustellen, können Sie nicht kommen.
Das nehme ich mal an, dass das nicht geht, es sei denn, wir haben
wieder irgendwelche tollen Ideen über neue Arten der Elektronik.
Vielleicht noch eine weitere Bemerkung, mittlerweile haben wir also
auch Überlegungen, wie wir in biologischen Strukturen, also wie wir
biologische Elemente nehmen können, um Informationen zu verarbeiten,
oder auch chemische Elemente, also chemische Reaktionen verwenden, um
Informationen zu verarbeiten.
Das sind völlig andere Entwicklungen.
Die Schaltkreise auf Basis von Silizium, also dieser Technologie, CMOS
-Technologie, NMOS, PMOS-Transistoren, die ist halt auch schon sehr
leistungsfähig, aber es kann sein, dass wir also, wenn wir in andere
Bereiche hineingehen, völlig andere Prinzipien verwenden, vielleicht
dann auch wieder irgendwelche Quantensprünge hinbekommen.
Also die Entwicklung dort, die ist faszinierend, ein sehr
interessantes Gebiet.
Und jetzt müssen wir uns angucken, wie wir systematisch Hardware
entwerfen, in solchen Bauteilen.
Wir wollen im Prinzip Hardware auch entwerfen können.
Jetzt könnten Sie sagen, ich schreibe doch eigentlich nur Java
-Programme oder schreibe nur Software.
Sie brauchen aber in bestimmten Bereichen auf jeden Fall auch
kundenspezifische Hardware.
Also wenn Sie Funktionen schnell berechnen wollen, wenn Sie
Signalfolgen auswerten müssen.
Sie haben irgendeinen Satelliten irgendwo im Orbit und der schickt
Ihnen Daten.
Die müssen Sie verarbeiten und dann ist es eben wichtig, dass Sie in
der Lage sind, in diesem, was ich schon mal genannt hatte, Pipelining
-Prinzip, mit einer gewissen Frequenz, also mit einem sehr kurzen
Abstand einzelne Datenelemente aufzunehmen, die Sie dann intern
verarbeiten und mit der gleichen Frequenz das Ergebnis wieder
rausgeben.
Das heißt, wenn Sie sich anschauen, Ihr Verarbeitungsgerät, das soll
Ihnen hier mit einer gewissen Frequenz Daten aufnehmen und mit der
gleichen Frequenz die Daten wieder abgeben.
Das kann ruhig eine gewisse Verzögerung sein dazwischen, aber die
Frequenz, mit der Sie das schicken, muss gleich sein.
Sie sehen, dass bei der Fernsehbildübertragung, da wollen Sie mit
einer hohen Frequenz die Bilder bekommen, die einzelnen Frames sollen
genau in der richtigen Frequenz angezeigt werden, mit der sie Ihnen
geliefert werden.
Die hochauflösenden Fernseher haben aber die Eigenschaft, dass sie
eine gewisse Zeit brauchen, um die hohe Qualität tatsächlich zu
erzeugen.
Und deswegen, wenn Sie einen nicht so guten Fernseher haben, dann kann
es sein, dass Sie ein Tor wesentlich früher sehen, also ein paar
Sekunden früher sehen, als auf einem hochauflösenden Fernseher, weil
es eine Weile dauert, bis die Daten entsprechend schön hochauflösend
dargestellt sind.
Die Frequenz ist zwar die gleiche, aber Sie haben eine gewisse
Verzögerung, Sie bekommen das Signal etwas später.
So etwas können Sie aber nur in Hardware bauen, indem Sie konkrete,
parallel arbeitende Hardware-Elemente haben.
Es müssen die Funktionen, die dort gebraucht werden, um diese Bilder
zu verarbeiten, zu transformieren in eine gewisse andere Form, die
müssen in Hardware implementiert werden, ansonsten können Sie nicht
die Geschwindigkeit bieten, die Sie brauchen.
Und das heißt, das ist also ein wichtiges Gebiet, wo Sie solche
Hardware -Bausteine brauchen.
Dann bei der Steuerung technischer Geräte oder Prozesse, da haben Sie
häufig Echtzeit-Anforderungen und auch die können Sie am besten durch
Hardware -Implementierung garantieren, weil Sie da eine vorgegebene
Zeit haben für die Arbeit eines Schaltkreises.
Wenn Sie das Software gestützt machen, haben Sie alle möglichen
Unterbrechungen und andere Effekte, die Ihnen es schwer machen, eine
garantierte Zeit einzuhalten.
Man braucht solche Dinge in verschiedensten Anwendungen,
Kraftfahrzeugelektronik, Sie wissen, dass heutzutage etwa 40-50% der
Wertschöpfung im Fahrzeug Elektronik ist.
Und da brauchen Sie Steuergeräte, die softwaregesteuert sind, aber Sie
brauchen auch viele Hardware-Bauelemente, die Direktschaltungen und
Überschaltungen -Funktionen realisieren, also bei dem Bremssystem,
Abgaskontrolle, Verbrennungssteuerung, verschiedenste Dinge, die ganze
Steuerung des Fahrzeugs, Drive-by-Wire, Brake-by-Wire und so weiter.
Das heißt eine hardwaregesteuerte, elektronisch gesteuerte Funktion im
Fahrzeug und nicht mechanisch gesteuert.
Chipkarten kennen Sie alle, Sie kennen alle möglichen intelligenten
Produkte als eingebettete Systeme und da würde ich ganz kurz auf ein
paar vor einigen Jahren als Zukunftsbilder dargestellte Szenarien
eingehen.
Wir haben heutzutage im Haushalt viele verschiedene intelligente
Geräte, die miteinander kommunizieren und die dann uns erlauben,
meinetwegen die Heizung zu steuern, das Licht zu steuern, und
verschiedenste Funktionen im Haus intelligent anzubieten.
Wir haben auf dem Campus ein Smart Home, in dem man solche Dinge zum
Teil sehen kann oder auch im House of Living Labs im FZI können Sie
auch solche Dinge sehen.
Dann gibt es das Internet der Services mittlerweile, wo Sie alle
möglichen Dienste angeboten bekommen oder auch Service-Roboter, die z
.B.
mit Ihnen Tennis spielen oder irgendwas anderes machen oder die den
Rasen mähen.
Also Rasenmäheroboter sind inzwischen relativ weit verbreitet.
Sie können sogar Fensterputzroboter inzwischen kaufen.
Also das ist etwas, was sich bereits sehr stark entwickelt oder auch
etwas, was ein ganz wichtiger Bereich ist, der sogenannte Bereich
Ambient Assisted Living.
Ältere Menschen, die eingeschränkt sind in ihren Funktionen, die
vielleicht nicht so gut sich aus dem Haus bewegen können oder
ähnliches, brauchen gewisse Unterstützung durch Dienstleistungen, die
über verschiedene Medien Ihnen geboten werden, über Bildschirme oder
über verschiedenste Geräte, die man in der Hand halten kann.
Das hier steht, das war die Vision für 2015, das ist nächstes Jahr.
Also dieses Bild ist schon etwas älter, so etwa mindestens 5 Jahre
alt, wenn nicht sogar noch älter.
Ist so aus Zukunftsszenarien der Firma Siemens mal entstanden.
Und viele dieser Dinge, die dort stehen, sind mittlerweile Realität.
Also wir haben eine Umwelt, in der sehr viele Geräte intelligent
arbeiten können und intelligent vernetzt sind.
Und dafür brauchen wir Hardware.
Jetzt muss ich hier wieder zurück.
Und damit sind wir zurück bei dieser Folie.
Wir haben also viele Bauelemente, die Elektronik enthalten.
Man nennt das dann ubiquitous Computing, also das vielfältig
vorhandene Rechnen oder pervasive Computing.
Pervasive Computing, das sind so Begriffe, die sind in den 90er Jahren
entstanden.
Dafür, dass alle Bereiche durchdrungen werden von
Informationsverarbeitung.
Organic Computing, den Begriff haben wir geprägt in Deutschland.
Das sind informationsverarbeitende Systeme, die sich organisch
anpassen in ihrem Verhalten an die Anforderungen der Einsatzumgebung.
Cyber-Physical Systems, ein sehr modernes Wort, mittlerweile
entstanden in den USA.
Etwas nach dem Entstehen von Organic Computing haben die Amerikaner
sich was anderes ausgedacht.
Das bezieht sich darauf, dass sie eine Vielfalt von Szenarien haben,
in denen informationsverarbeitende Systeme, also Cyber-Systeme,
Objekte steuern, die physikalische Eigenschaften haben.
Diese physikalischen Eigenschaften sind immer nur etwas dargestellt
durch die Modelle, die in den Cyber-Systemen verwendet werden.
Das heißt, sie haben immer eine Diskrepanz zwischen Cyber-Systemen und
physikalischen Systemen und müssen das geeignet hinbekommen.
Das ist also diese Wechselwirkung zwischen physikalischen Prozessen
und informationsverarbeitenden Prozessen.
Wir haben daran in Deutschland ein Forschungsprogramm aufgesetzt, das
nennt sich Industrie 4.0.
Das beschäftigt sich genau mit solchen Technologien, bei denen man
Cyber -Systeme, also informationsverarbeitende Systeme, sinnvoll
einsetzt für die Steuerung von irgendwelchen physikalischen,
technischen Prozessen.
Wobei es nicht nur um intelligente Steuerung geht, sondern auch um die
vielfältige Vernetzung dieser verschiedenen Systeme.
Also das sind alles sehr aktuelle Entwicklungen in dem Bereich und in
all diesen Bereichen braucht man hochleistungsfähige Mikroelektronik
und insbesondere hat man dort hohe Anforderungen an die Qualität und
Zuverlässigkeit.
Und das heißt, wenn Sie ein Objekt bauen oder irgendein Gerät bauen,
das Mikroelektronik oder Informationsverarbeitung enthält, dann sind
Sie für alles verantwortlich, was mit diesem Gerät gemacht wird oder
was dieses Gerät intelligent steuert.
Das heißt, wenn Sie Systeme oder Produkte ausliefern, verkaufen, deren
Qualität nicht ausreichend gesichert ist, haben Sie die Konsequenzen
zu tragen und deswegen muss man beim Entwurf solcher Systeme sehr
stark auf Qualitätssicherung achten und dafür sorgen, dass man
nachweisen kann, die sind tatsächlich korrekt.
Denn wenn Sie fahrlässig gehandelt haben beim Entwurf und solche
Fehler nicht entdeckt haben, dann sind Sie schadenersatzpflichtig.
Und das heißt, wenn das ABS-System nicht vernünftig bremst, dann sind
Sie als Hersteller schadenersatzpflichtig.
Eine interessante Frage ist übrigens noch in dem Zusammenhang, wenn
ein autonom fahrendes Auto oder ein Auto, das meinetwegen
Kolonnenfahrt autonom machen kann, wenn das auf einmal einen Unfall
verursacht, wer ist dann verantwortlich?
Nicht Sie als Fahrer, sondern der Hersteller des Fahrzeugs.
Das ist ein Grund, warum es noch immer nicht wirklich in alle
Fahrzeuge eingebaut ist, dass Sie autonom fahren können, weil die
Haftungsfragen so schwierig sind dabei.
Aber auch wenn Sie andere Geräte bauen oder produzieren oder damit zu
tun haben, wenn dort aufgrund der Informationsverarbeitung durch
Software oder Hardware Fehler auftreten, sind Sie verantwortlich für
die Folgen.
Deswegen brauchen Sie entsprechende formale Methoden, um Korrektheit
solcher Systeme nachweisen zu können.
Und systematische Entwurfsmethoden.
Das sind jetzt diese Anforderungen im Hardware-Entwurf.
Wenn man ein System entwirft, muss man sich überlegen, welche Teile
müssen in Hardware gebaut werden, welche Teile kann ich in Software
machen.
Was ich in Hardware mache, kann ich nicht wieder ändern.
Was ich in Software mache, kann ich ändern.
In Hardware werde ich möglichst wenig machen, aber immer alles das, wo
ich einen hohen garantierten Durchsatz brauche, wo ich
Echtzeitanforderungen habe.
In Software kann ich das machen, was ich auch mit weicheren
Zeitanforderungen erledigen kann.
Was ich auf jeden Fall später noch anpassen möchte.
Und deswegen ist beim Systementwurf wichtig zu wissen, wie teile ich
meine Funktionen auf, auf Hardware und auf Software.
Die Qualitätsanforderungen gelten also für Hardware und für Software.
Bei Hardware gibt es sehr gute Systeme oder Werkzeuge, mit denen Sie
die Korrektheit solcher Systeme überprüfen können, also mit denen Sie
beweisen können, dass ein bestimmtes Verhalten garantiert ist.
Für Software sind die nur in Einschränkungen verfügbar.
Dann gibt es Aspekte wie Korrektheit, habe ich schon gesagt,
Fehlertoleranz.
Hardwarebausteine haben manchmal Fehler, die müssen kompensiert werden
können.
Und entsprechend brauchen Sie solche fehlertoleranten Strukturen, die
trotz des Auftretens von Hardwarefehlern immer noch die richtige
Funktion bringen.
Dann müssen Sie Hardware testen können.
Was würde denn passieren, wenn dort irgendwelche Fehler auftreten?
Oder wie kann ich nachweisen, dass unter allen Randbedingungen mein
Baustein immer das Richtige tut?
Also ich muss hier auf solche Dinge achten.
Ich muss also den Aspekt der Sicherheit solcher Systeme oder auch der
Verlässlichkeit, Verfügbarkeit sehr intensiv mehr anschauen.
Und ohne den Einsatz formaler Methoden werden Sie das nicht bewältigen
können.
Deswegen ist es wichtig, dass man weiß, wie man Systeme formal
spezifiziert und dann aus den konkreten Eigenschaften von Systemen
nachweisen kann, dass die entsprechend der Spezifikation gebaut sind
und richtig sind.
Das heißt, wenn Sie also in dem Bereich arbeiten, wenn Sie
interessante zukünftige Produkte entwerfen wollen, müssen Sie oder
sollten Sie keine Probleme mit Dingen haben, die wir hier zum Teil
angesprochen haben.
Formale Modellierung realer Systeme.
Ich habe Ihnen einfache Dinge beigebracht, nämlich Automaten,
Grammatiken.
Die haben wir uns angeschaut.
Ontologien haben wir nicht betrachtet.
Das sind Dinge, die man in anderen Bereichen braucht, bei Semantic Web
und solchen Dingen.
Dann die Anwendung systematischer, formaler Methoden beim
Systementwurf.
Da habe ich angedeutet, dass man gewisse Dinge machen kann, aber da
haben wir noch nicht sehr viel drüber gelernt.
Aber Sie wissen, beim Algorithmenentwurf gibt es systematische
Methoden, beim Hardware-Entwurf genauso.
Und Sie müssen natürlich wissen, wie man solche Systeme dann
analysiert und Eigenschaften ableitet.
Das sind ganz wichtige Fähigkeiten, die Sie haben müssen.
Und deswegen brauchen Sie dieses Rüstzeug aus der Informatik, das wir
Ihnen als Wirtschaftsingenieure in diesem Studiengang vermitteln.
Es ist also nicht so, dass wir Ihnen hier nur, um Sie zu ärgern, Ihnen
etwas erzählen über Automaten und formale Sprachen und Grammatiken.
Und Sie sehen zunächst mal nicht die Relevanz.
Das ist die Basis für alle diese Dinge, die man dort machen kann, um
intelligente Systeme zu entwickeln.
Dann kommen wir weiter zu dem konkreten Entwurf von Hardware.
Wir haben eine abstrakte Ebene, bei der wir ganz formal sagen, was
getan werden soll.
Dann entwerfen wir eine gewisse Struktur.
Wir gehen runter auf die Register-Transfer-Ebene.
Was ist eine Register-Transfer-Ebene?
Sie entwerfen Ihr System, da gehen irgendwelche Werte rein.
Und jetzt heißt das, Sie haben hier bestimmte Eingaben gespeichert.
Jetzt werden die in irgendeiner Form verarbeitet.
Und dann werden hier Dinge zwischengespeichert.
Und hier vielleicht auch noch irgendwas verarbeitet und
zwischengespeichert.
Und dann werden hier wieder irgendwelche Dinge zusammengeführt.
Da ein Schaltnetz, da ein Schaltnetz.
Da was zwischengespeichert, da was zwischengespeichert.
Und dann vielleicht irgendwann wieder ein größeres Schaltnetz und Sie
haben wieder irgendwelche Ergebnisse.
Das heißt, Sie haben Register-Transfer, Sie haben Werte, die
gespeichert sind.
Dort an verschiedenen Stellen, verschiedene Stufen bei der
Verarbeitung Ihrer Informationen.
Und dazwischen ist ein Transfer.
Das heißt, Sie verarbeiten die Informationen, transformieren sie und
kommen zur nächsten Registerstufe.
Das ist also die Kombination von Funktionseinheiten, von Schaltnetzen
und Registern zur Zwischenspeicherung von Zwischenergebnissen.
Dann haben Sie die Schaltnetze und die können Sie dann entwerfen auf
Gatter -Ebene.
Sie können die durch entsprechende bool'sche Ausdrücke spezifizieren
oder als Schaltfunktion entsprechend spezifizieren.
Da haben Sie verschiedene Dinge kennengelernt.
Für den Entwurf von Schaltnetzen brauchen Sie die Darstellung durch
bool'sche Ausdrücke.
Und dann geht es runter zur Transistorebene.
Da haben wir gesehen, dass wir nicht notwendigerweise direkt die
elementaren Gatter durch Transistoren realisieren.
Dass man einige Dinge auch einfacher bauen kann.
Und unter der Transistorebene kommt dann die Layout-Ebene.
Das ist dann Full-Custom oder Semi-Custom-Entwurf.
Und dann werden tatsächlich dort die Schaltkreise gefertigt.
Das ist also dieser Weg, wie man Hardware entwerfen kann.
Ich werde Ihnen ganz kurz zeigen, wie man in einer höheren
Programmiersprache Hardware-Komponenten beschreiben kann.
Nämlich in einer Sprache, die sich VHDL nennt.
Very High Speed Integrated Circuit Hardware Description Language.
Es gibt eine ganze Reihe von solchen Hardware-Beschreibungssprachen.
In Deutschland gab es einige.
Dieses VHDL ist vom amerikanischen Verteidigungsministerium als
Standard durchgesetzt worden.
In Deutschland gab es so etwas wie Mimolar zur gleichen Zeit.
Deutlich leistungsfähiger und besser entworfen.
Hat sich aber nicht durchgesetzt.
Mittlerweile gibt es aber noch andere Sachen.
Es gibt System C oder Handle C.
Also verschiedene Systeme, verschiedene Sprachen, mit denen man solche
Hardware beschreiben kann.
Ich werde Ihnen ganz kurz etwas über wenige Teile von VHDL erzählen.
Am Beispiel von sehr einfachen Bauelementen, die Sie schon mal
kennengelernt haben.
Das, was ich beschreiben muss, ist einerseits die Systemstruktur.
Wie ist das Ganze aufgebaut aus den Hardware-Bauelementen?
Und das andere ist einerseits die Struktur und dann natürlich das
Systemverhalten.
Beides muss ich angeben.
Was ist das Verhalten, das ich brauche, um ein funktionales Verhalten
realisieren zu können?
Und mit welcher Struktur mache ich das?
Und ich beschreibe Ihnen das jetzt sukzessive am Beispiel des
Addierens.
Da hatten wir Halbadierer und Volladierer.
Ich fange an mit dem Halbadierer und definiere den als einen
elementaren Baustein.
Und um das machen zu können, muss ich also einerseits das Element
definieren.
Ein Objekt oder ein Entity.
Und diese Entity, Halbadierer, ist also das, was hier rechts
angedeutet ist.
Hat den Namen Halbadierer, hat zwei Eingänge, die jeweils zweiwertig
sind, also Bits.
Die nennen wir x und y.
Ich habe zwei Ausgänge, hier rechts, Summe und Übertrag.
Und das ist es schon.
Das ist meine abstrakte Definition eines Halbadierers.
Ich gehe jetzt nicht in die Einzelheiten rein und sage, das ist mein
Objekt.
Wie das realisiert wird, ist mir egal.
Ich brauche aber auch noch das Verhalten.
Und das Verhalten beschreibe ich dadurch, dass ich sage, die variable
Summe bekommt den Wert x, xor y, Sie wissen, das ist die
Summenfunktion des Halbadierers, nach 5 Nanosekunden.
Das ist eine technologische Anforderung.
Und der Übertrag bekommt den Wert x und y nach 5 Nanosekunden.
Damit habe ich das erwünschte zeitliche Verhalten spezifiziert.
Und man wartet also darauf, dass x und y, das Eingänge, hier geliefert
werden.
Das ist der Prozess, der ablaufen soll.
Die Struktur ist jetzt nur ganz einfach, nicht weiter detailliert.
Und das ist der Prozess, der ablaufen soll.
So kann ich also ein zeitliches Verhalten spezifizieren.
Und jetzt wollen wir uns ein Volladierer anschauen.
Zunächst mal auch einfach beschrieben als ein solches Entity.
Da habe ich jetzt Eingänge A, B und Carry In, die sehen Sie hier auf
der linken Seite.
Und ich habe zwei Ausgänge, Summe und Carry Out, auch wieder zwei
Bits.
Das ist wieder nur die Beschreibung, das ist mein Objekt.
Und jetzt schaue ich rein, und wenn ich reinschaue, dann habe ich
jetzt mal gezeigt, wie man ein Volladierer aus zwei Halbadierern und
einem Oder-Element bauen kann.
Das sind drei Komponenten, K0, K1 und K2, und müssen die entsprechend
spezifizieren.
Das ist die Struktur, aus der ein solcher Volladierer besteht.
Was haben wir in dieser Struktur alles drin?
Wir haben einige interne Signale, nämlich wir haben hier TempSum,
TempCarry2, TempCarry1.
Die sind hier spezifiziert, das sind lokale Signale, die sind nur
innerhalb dieses Objekts bekannt.
Nach außen haben die keine Relevanz.
Dann habe ich eine Komponente Halbadierer, ich habe eine Komponente
Oder -Gatter, die sind hier jetzt nochmal spezifiziert, so genau wie
wir das vorher schon gesehen hatten.
Beim Oder-Gatter ist klar, da haben wir zwei Eingaben, eine Ausgabe.
Und jetzt brauche ich dazu natürlich noch genaue Instanzierung dieser
Objekte.
Ich brauche also tatsächlich eine Komponente K0 als Halbadierer.
Und dieser Halbadierer K0 hat zwei Eingänge, nämlich bei dem werden
also die Eingänge transformiert.
Der Halbadierer hat ja Eingänge x und y.
Der Wert von x wird mit a identifiziert, der Wert von y wird mit b
identifiziert.
Das sind x und y, die beiden Eingänge hier.
Und die Summe wird dieses TempSum, das ist die Summe unseres
Halbadierers hier, in der Beschreibung dieses Objekts, Summe und
Übertrag.
Summe wird abgebildet auf TempSum und Übertrag auf TempCarry1.
Damit habe ich also diese beiden, TempSum und TempCarry1, a und b,
sind jetzt meine Eingänge und Ausgänge für meinen Halbadierer K0.
Der Halbadierer K1 bekommt eine andere Abbildung der Ports.
Da wird nämlich der Port x auf TempSum abgebildet, also die Variable
wiederum.
y auf das Signal CarryIn.
Summe wird abgebildet auf Sum, das ist hier der Wert, die Variable.
Und Übertrag wird abgebildet auf TempCarry2, das ist der Übertrag.
Dann habe ich die dritte Komponente, K2, ein Odergatter.
Und da werden diese drei internen Variablen in 1, in 2, Out1
abgebildet auf TempCarry1, TempCarry2 und CarryOut.
Und damit habe ich genau die Struktur, die hier oben steht, durch
meine Hardwarebeschreibungssprache dargestellt.
Jetzt ist hier spezifiziert, wie die Struktur aussehen soll.
Und das kann man dann weiter bearbeiten.
Jetzt könnte man auch noch Zeitanforderungen da reinschreiben über das
hinaus, was vorher für den Halbadierer angegeben war.
Also insofern bekommen Sie einen Eindruck davon, dass man tatsächlich
Hardware beschreiben kann in einer programmiersprachlichen Form.
Wobei sich hier eben nicht Programme, sondern Hardware entwerfen.
Das also als kurzer Einblick in diese Hardwarebeschreibungssprachen.
Ganz kurz, was macht man bei Hardwareentwurf?
Ich kann entweder etwas realisieren durch sogenannte
anwendungsspezifische Schaltkreise, Application Specific Integrated
Circuits oder ASICs.
Da habe ich nur das Problem, dass ich anschließend nichts mehr ändern
kann.
Die andere Möglichkeit ist, das Ganze über sogenannte Field
Programmable Gate Arrays zu machen.
Da habe ich eine gewisse generelle Struktur und ich kann dann diese
Struktur programmieren.
Im Einsatz, also zur Laufzeit, kann ich gewisse Dinge verändern und
dadurch verschiedene Schaltungen realisieren.
Und das ist so, dass mittlerweile FPGAs eine hohe Bedeutung erlangt
haben, sind sehr leistungsfähig geworden, sind eine eindeutige
Konkurrenz zu ASICs, insbesondere weil sie flexibler sind.
Und ich will Ihnen das ganz kurz darstellen, was ein solches FPGA
tatsächlich ist.
Das ist sehr vereinfacht, ein Seilings-FPGA.
Seilings ist einer der Weltmarktführer in dem Bereich.
Was sehen Sie hier?
Sie sehen einerseits Input-Output-Blöcke.
Das sind gewisse vorgefertigte Schaltelemente, Schaltungen, mit denen
Sie einen Eingang über gewisse Art...
Hier haben Sie die einzelnen Eingänge oder Ausgänge, die können Sie
also hier dann entsprechend umtransformieren...
in das, was tatsächlich eingegeben oder ausgegeben werden soll.
Sie haben Möglichkeiten, Schaltungen zu verbinden.
Sie haben also, das ist hier angedeutet, da haben Sie hier eine
Leitung, sehen Sie, die verbindet einige dieser Komponenten.
Und das kann man machen, indem man solche Schaltungsbereiche hier, die
generisch gegeben sind, spezialisiert, die hier im Prinzip durch
Setzen von Bits dafür sorgt, dass bestimmte Bereiche hier verbunden
werden.
Und dann können Sie also zum Beispiel hier alles umleiten von Norden
nach Osten oder Ähnliches machen.
Das sind Möglichkeiten, wie man die Verbindungen konfigurieren kann,
durch Setzen von Bits in den Steuereinheiten dieser
Verbindungsschalter.
Und dann gibt es natürlich noch die Configurable Logic Blocks, die
einzelnen Elemente hier drin, die jeweils erstmal gewisse Tabellen,
also Speicher, enthalten.
Das sind praktisch Funktionstabellen, die Sie spezifizieren können.
Da wird also eine Funktion durch eine Wertetabelle beschrieben, eine
Funktion in der Regel von 4 bis 8 Eingängen.
Und dann sehen Sie, wie viele Möglichkeiten Sie haben, dort Funktionen
zu realisieren.
Und dazu sind noch eine Reihe anderer Komponenten da drin.
Multiplexer und gewisse andere logische Komponenten, die es Ihnen
erlauben, so einen Configurable Logic Block für verschiedene Zwecke
einzusetzen.
Es gibt mittlerweile Field-Programmable Gate Arrays, die haben dann in
bestimmten Bereichen auch vorgefertigte Funktionen realisiert, wie
Multiplizierer oder Ähnliches.
Und die kann man dann systematisch einsetzen und kann die
konfigurieren zur Laufzeit, beziehungsweise kurz vor der Einsatzzeit
oder auch während der Laufzeit wieder umprogrammieren.
Sodass Sie also während der Laufzeit in der Lage sind, die
Hardwarebausteine etwas zu modifizieren.
Mittlerweile finden Sie solche FPGAs in vielen Rechnern auch mit
eingebaut als weitere Komponenten.
Also Sie konfigurieren die Configurable Logic Blocks und die
Verbindungen und die IO Blocks und können dadurch ein solches FPGA für
verschiedene Zwecke einsetzen.
Ganz wichtige Technologie, um Hardwarebausteine zu entwerfen.
Und diese ganzen Dinge werden eingesetzt in verschiedenen Bereichen.
Ich habe diese Übersicht nicht angepasst an die Entwicklung der
letzten Jahre, da hat sich auch nicht so sehr viel verändert.
Es gibt halt sehr viel Einsatz im Bereich der Rechner direkt, dann im
militärischen Bereich natürlich sehr viel, in der Industrie spielt es
eine immer größere Rolle, in der Kommunikation natürlich auch.
Die ganzen Schalter im Internet, die dafür sorgen, dass die Daten hin
und her geschoben werden können, in sinnvoller Art und Weise sind
Hardware realisiert.
Das heißt, Sie haben hier auf jeden Fall einen großen Einfluss der
Informationstechnologie auf die technologischen Entwicklungen, auf die
wirtschaftlichen Entwicklungen heutzutage.
Damit bin ich auch praktisch am Ende von diesem Teil.
Ich hoffe, dass Ihnen deutlich geworden ist, es ist wichtig zu wissen,
welche Möglichkeiten die Technologien bieten.
Wenn man nur weiß, dass es Java gibt, reicht das nicht aus.
Wir müssen wissen, man kann deutlich mehr machen.
Man kann nicht nur Software entwerfen, man kann auch Hardware
entwerfen, man kann vernetzte Systeme entwerfen und muss dann gewisse
Anforderungen halt entsprechend erfüllen können, bezüglich der
Kommunikationszeiten und ähnliches.
Und damit noch letztes der Hinweis, denken Sie daran, sich anzumelden
für die Bonusklausur.
Wir sind damit mit diesem Teil durch.
Am Montag werde ich Ihnen dann etwas erzählen über Codierung.
Nächste Kapitel.
Montag noch mal eine Vorlesung.
Diejenigen, die Montag nicht dabei sind, denen wünsche ich schon jetzt
schöne Weihnachten.
Ansonsten kommt das dann am Montag noch mal.
Vielen Dank für die Aufmerksamkeit.