Warum funktionieren die Transistoren in einer CPU?

marvel_master

PC-Selbstbauer(in)
Hallo zusammen,


meine Frage ist einfach, die Antwort vermutlich nicht ganz so. Ich stelle mir seit Jahren die Frage, warum
eine CPU überhaupt funktioniert. Ich habe mir dazu zig Artikel und Youtube Videos angeschaut, aber
sie beantworten mir einfach nicht meine Fragen, warum oder wie eine CPU funktioniert.

Mir ist klar, dass eine CPU extrem komplex ist. Mir reicht es, wenn man sie stark vereinfacht von mir aus
auf 16 Transistoren. Frage ist, wie kann eine CPU überhaupt rechnen?

Mein Problem ist folgendes. Ich weiß wie eine CPU hergestellt wird. Dazu ein paar einfache Erklärungen damit
man besser versteht, wo mein Problem liegt.


Ich nehme eine Siliziumscheibe und kippe da Photolack drauf. Dann halte ich über diese Scheibe eine Schablone
mit Linien und darüber halte darüber wiederum eine UV-Lampe. Das Licht scheint durch die Linien durch und brennt
sich so in den Photolack ein und der Photolack wird an den Stellen zerstört, wo halt das Licht auftrifft. Dann halte
ich meine Silizium Scheibe in eine Flüssigkeit und wasche so die Linien aus der Scheibe raus. Danach kippe
ich flüssiges Kupfer auf die Scheibe und die ausgewaschenen Linien mit dem Kupfer sind dann meine Leiterbahnen wo später mein Strom durchfließt.

Und fertig sind die Leiterbahnen meiner CPU. Da ein Transistor ein Halbleiter ist bzw. ein Schalter der an und ausgehen muss, brauche ich noch ein weiteres Material was den Strom bremst. Also nehme ich ein weiteres Metall und füge
jeder Leiderbahn an einem bestimmten Punkt dieses Material hinzu. Dieses Material leitet nicht so gut wie mein Kupfer.

Und fertig ist mein Schalter. Ist der Strom stark, schafft er es durch dieses schlechter leitende Material durch und
der Transistor ist auf Position 1. Ist der Strom zu schwach, hat er den Zustand 0 . Und damit habe ich meine Rechenwerk von 0 und 1. Dem Binärsystem mit dem eine CPU rechnet.


Und jetzt mein Problem. Wenn ich jetzt 230 Volt an diese CPU anlege, dann werden immer alle Transistoren auf der
Position 1 stehen und der Strom durchfließen. Wie steuere ich jetzt aber die Stromstärke, damit die CPU auch
wirklich rechnen kann? Dafür bräuchte ich jetzt ja auch wieder eine Steuereinheit, die den Stromfluss regelt. Sprich,
ich brauche davor Transistoren die Regeln, dass der Strom stärker oder schwächer fließt. Und selbst wenn ich das habe, dann brauche ich davor ja schon wieder eine weitere Steuereinheit, die die Steuereinheit steuert.

Und das verstehe ich nicht. Wie bekommt man es hin, dass der Strom mal stärker und mal schwächer ist, damit der
Halbleiter/Transistor überhaupt funktioniert damit er rechnen kann?


VG
 
Zuletzt bearbeitet:
Wenn ich jetzt 230 Volt an diese CPU anlege, dann werden immer alle Transistoren auf der Position 1 stehen
Nö. Die Höhe der Spannung hat nichts mit den Zuständen 0/1 zu tun.
Das wäre ja völlig kurios wenn die höhe der Betriebsspannung verändern würde wie die CPU schaltet :ugly:
Wie steuere ich jetzt aber die Stromstärke,
Gar nicht.
CPUs steuern (heutzutage, früher war das alles konstant) ihre Betriebsspannung(en). Die daraus blöderweise resultierenden Ströme entstehen vom inneren Aufbau und Lastart/Höhe der CPU. "Blöderweise", weil eine ideale CPU gar keine fließenden Ströme hätte sondern nur Zustandsänderungen und Potentiale. Nur da man Elektronen aus/in Transistoren schieben (=bewegen) muss ist das nunmal definitionsgemäß unvermeidlicher Stromfluss.

Du baust auch keine Stromsteuereinheit in eine Glühbirne ein - die hat nen Innenwiderstand der so eingestellt ist, dass bei 230V die Birne wie gewünscht leuchtet.
 
Frage ist, wie kann eine CPU überhaupt rechnen?
Eigentlich gar nicht "rechnen" wie ein Gehirn, sondern einfach durch Logikgatter. Anfangs hat man das mit Relais gemacht.
Da werden Logikgatter aufgebaut (z.B. früher per Relais bzw. Röhren), welche dann an definierten Ausgängen abhängig vom Eingang entweder Spannung anliegen haben oder nicht. Diese kann man dann kombinieren, um den Übertrag zu beachten.
 
Da werden Logikgatter aufgebaut (z.B. früher per Relais bzw. Röhren), welche dann an definierten Ausgängen abhängig vom Eingang entweder Spannung anliegen haben oder nicht.
Genau das. CPUs sind einfach nur irre komplexe Weiterentwicklungen davon mit Milliarden von Logikgattern.

So einzelnes Gatter und wie das funktioniert ist vergleichsweise einfach. Sowas kannste auch in Minecraft bauen... da gibts Videos zur Veranschaulichung. :-D
 
Sorry wenn ich das jetzt mal so sagen muss, aber deine Vorstellung geht von abenteuerlich bis hin zu absolut falsch.
Aber das macht nichts, denn Neugierde ist was gutes und nur so kann man lernen :daumen:

Da ein Transistor ein Halbleiter ist bzw. ein Schalter der an und ausgehen muss,

brauche ich noch ein weiteres Material was den Strom bremst. Also nehme ich ein weiteres Metall und füge

jeder Leiderbahn an einem bestimmten Punkt mit diesem Material. Dieses Material leitet nicht so gut wie mein Kupfer.

Und fertig ist mein Schalter. Ist der Strom stark, schafft er es durch dieses schlechter leitende Material durch und

der Transistor ist auf Position 1. Ist der Strom zu schwach, hat er den Zustand 0 . Und damit habe ich meine Rechenwerk

von 0 und 1
In der Aussage zeigt sich das du schon ein falsches Bild eines transistors hast.

Ein klassischer NPN Transistor hat drei Anschlüsse. Einen Kollektor, eine Basis und einen emitter.
Wenn ich Spannung zwischen Kollektor und Basis anlege fließt erstmal kein Strom. (Schalter zu) Ermögliche ich dann jedoch einen kleinen Stromfluss von Basis nach emitter wird die Verbindung vom Kollektor zum emitter auch leitend.
Hier wird es eigentlich auch recht gut erklärt, mit etwas mehr Tiefe

https://www.elektronik-kompendium.de/sites/bau/0201291.htm

Nehme ich jetzt mehrere Transistoren kann ich logische Operationen wie UND, ODER, NICHT, durchführen. Also z. B. Wenn Spannung an Anschluss A und B dann schaltet der Schalter durch, sonnst nicht.


Auf ähnliche Art und Weise kann ich dann in einem nächsten Schritt auch auch mathematische Operationen realisieren wie plus minus oder auch mal, geteil,...

http://www.elektronik-kompendium.de/sites/dig/0209031.htm


Nimmt man dann alle diese schaltungsblocke (bestehend aus einzelnen Transistoren) und packt sie zusammen auf einen Chip erhält man mehr oder weniger die Alu (Arithmetic logic unit) des Prozessors.

Dazu noch ein paar ein und Ausgänge, taktgeber und Speicher und schon ist der Prozessor fertig
 
Genau das. CPUs sind einfach nur irre komplexe Weiterentwicklungen davon mit Milliarden von Logikgattern.

So einzelnes Gatter und wie das funktioniert ist vergleichsweise einfach. Sowas kannste auch in Minecraft bauen... da gibts Videos zur Veranschaulichung. :-D
Wenn man z.B. einen 1-Bit-Addierer betrachtet, hat der 2 Eingänge und 2 Ausgänge.
An die Eingänge kommt binär (Spannung da oder nicht) jeweils die Zahl dran, am Ausgang gibt es das Ergebnis und dann den Übertrag.
Der Übertrag muss dann am 2. Addierer wie eine Zahl behandelt werden.
Das kann man beliebig oft kombinieren.
Dann braucht man noch für die Eingabe einen Dezimal zu Binär-Wandler und am Ende einen Binär zu Dezimal.

Das wären dann Rechenoperationen, dazu kommen noch logische Operationen, z.B. das Vergleichen von Zahlen.
Das funktioniert ähnlich, nur sind die Gatter anders aufgebaut.
 
Ich glaube fürs Grundverständnis reicht es sich damit zu beschäftigen, wie man die Grundrechenarten Binär abbilden kann.
Und wie Logikgatter funktionieren.

Viel Spaß beim Bitschubsen :D

Wenn du verstehen willst, wie sowas aus physikalischer Sicht in der Realität aussieht... tja da wirds dann schon sehr komplex und speziell selbst wenn man sich einfachste Microcontroller nimmt, steckt da unfassbar viel Wissen und Ingenieursleistung aus den Bereichen Physik Chemie und Elektrotechnik drin... Damit kannste dich Jahre beschäftigen Ist aber fürs Allgemeinwissen auch eher uninteressant.

Wie gesagt, Logikgatter, Binärsystem. Wenn du das verstehst, kannst du dir auch vorstellen, wie ein Computer funktionieren kann.
 
Und das verstehe ich nicht. Wie bekommt man es hin, dass der Strom mal stärker und mal schwächer ist, damit der

Halbleiter/Transistor überhaupt funktioniert damit er rechnen kann?


VG

Durch Input. Du hast ja bereits alles beschrieben was nötig ist, damit ein gemischter Zustand aus 0en und 1en einen anderen gemischten Zustand aus 0en und 1en ergibt (also eine Rechnung zu einem Ergebnis führt). Ggf. hast du noch übersehen, dass es auch Transistoren gibt, die bei anlegen einer Steuerspannung keinen Strom mehr ausgeben (auf "1" also mit "0" reagieren), aber wenn ich es richtig verstehe, ist das grundlegende Verständnissproblem nur die Frage, wieso nicht von Anfang an alles auf 1 (oder auf 0) steht.

Die einfach Antwort ist: Weil der Anwender ja einen Nutzen haben will und sich nicht dafür interessiert, wie die Maschine auf Dauer-1 reagiert. Bei den frühesten und einfachsten Digital-Rechnern wurde schlicht durch Schalter vorgegeben, das einige Transistoren beim Einschalten auf 1 und andere auf 0 stehen. Das symbolisierte dann beispielsweise zwei Zahlen und eine Grundrechenart und führte dazu, dass aus beiden Zahlen eine dritte berechnet und an anderer Stelle ausgegeben wurde. Der richtige Zusammenhang zwischen In- und Output wird dabei durch den Schaltplan deterministisch vorgegeben. Heutzutage sind entsprechend ein paar initiale Funktionen hardcoded und die übernehmen als aller erstes eine Mischung aus 1en und 0en aus dem BIOS, welche erklären, wie es weitergeht. Die manuelle Programmierung wird also nicht mehr beim Einschalten vom Nutzer selbst vorgenommen, sondern ist abgespeichert und wird geladen.
 
Ich nehme eine Siliziumscheibe und kippe das Photolack drauf. Dann halt ich über diese Scheibe eine Schablone

mit Linien und darüber halte darüber wiederum eine UV-Lampe. Das Licht scheint durch die Linien durch und brennt

sich so in den Photolack ein und der Photolack wird an den Stellen zerstört, wo halt das Licht auftrifft. Dann halte

ich meine Silizium Scheibe in eine Flüssigkeit und wasche so die Linien aus der Scheibe raus. Danach kippe

ich flüssiges Kupfer auf die Scheibe und die ausgewaschenen Linien sind dann meine Leiterbahnen wo später

mein Strom durchfließt.

Und fertig sind die Leiterbahnen meiner CPU. Da ein Transistor ein Halbleiter ist bzw. ein Schalter der an und ausgehen muss,

brauche ich noch ein weiteres Material was den Strom bremst. Also nehme ich ein weiteres Metall und füge

jeder Leiderbahn an einem bestimmten Punkt mit diesem Material. Dieses Material leitet nicht so gut wie mein Kupfer.

Und fertig ist mein Schalter. Ist der Strom stark, schafft er es durch dieses schlechter leitende Material durch und

der Transistor ist auf Position 1. Ist der Strom zu schwach, hat er den Zustand 0 . Und damit habe ich meine Rechenwerk
Das ist ganz grob richtig.

Allerdings rechnet eine moderne CPU nicht mehr mit bipolaren sondern mit unipolarem Transistoren
(CMOS-Gatter).

Die MOS-Transistoren werden mit Spannung geschaltet und nicht mit Strom, wie die bipolaren.
Hier der Aufbau:

MOS_transistor.svg.png

https://de.wikipedia.org/wiki/Datei:Scheme_of_metal_oxide_semiconductor_field-effect_transistor.svg .

Schaltet man im Gatter (kleinste Recheneinheit) im Ausgang einen pnp- und npn-Transistor in der Endstufe zusammen, nemm man das Komplementärschaltung, da die Leitreihenfolge in den Transistoren umgedreht ist (PNP -NPN).

Das typische Gatter als Inverter sieht so aus:
CMOS_inverter.svg.png

Die buchstaben n und p sagen aus, welche Leitfähigkeit die vorherrschende ist:
positive Ladungsträger (Löcher) oder negative (Elektronen) im jeweiligen Halbleiterabschnitt.

Die MOS-Transistoren werden mit Spannung geschaltet und nicht mit Strom, wie die bipolaren.
Hier der Aufbau:
https://de.wikipedia.org/wiki/Datei:Scheme_of_metal_oxide_semiconductor_field-effect_transistor.svg .

Die buchstaben n und p sagen aus, welche Leitfähigkeit die vorherrschende ist:
positive Ladungsträger (Löcher) oder negative (Elektronen) im jeweiligen Halbleiterabschnitt.

Das wird durch einbringen von 3- oder 5wertigen Elementen ins Silizium mit verschiedenen Methoden erreicht: Diffusion, Ionenimplantation, Legieren, ... .

Bei 3-wertigen Elementen entstehen positv leitende Bereiche, bei 5-wertigen lementen entstehen negativ leitende Bereiche, da Silizium 4-wertig ist.

Einmal fehlt ein Elektron der zugefügten Elemente und es entstehen Fehlstellen im Bindungsgitter vom Silizium.
Diese Fehlstellen nennt man auch Löcher.
Diese Leitungsart heißt Akzeptorleitung oder Löcherleitung.

Im zweiten Fall ist ein Elektron zu viel da, also leiten dort die Elektronen den Stromfluß (Elektronenleitung oder Donatorleitung)

von 0 und 1. Dem Binärsystem mit dem eine CPU rechnet.
Richtig.
In der Elektronik hieß der Zustand leitend oder gesperrt in der TTL-Technik (Transistor-Transistor-Logik)
der ersten Schalteinheiten.

Die TTL-technik funktionierte noch mit einem Multiemmittertransistor im Eingangsteil (E1, E2) und bipolaren Transistorn im Augang (A):
7400_Circuit.svg.png


Und jetzt mein Problem. Wenn ich jetzt 230 Volt an diese CPU anlege, dann werden immer alle Transistoren auf der

Position 1 stehen und der Strom durchfließen.
Wenn Du 230V an die CPU legst, geht es kurz Puff und sie ist verdampft.

Schon die TTL-Technik arbeitete mit 5V Spannung.
Die neueren CMOS-Logiken kommen mit 1V Spannung am Eingang aus.

Wie steuere ich jetzt aber die Stromstärke, damit die CPU auch

wirklich rechnen kann? Dafür bräuchte ich jetzt ja auch wieder eine Steuereinheit, die den Stromfluss regelt.
Nein.
Die Logik verbraucht heute fast nur beim Umladen der Gates der Transistoren Strom.
Das ist durch verschieden physikalische Parameter bedingt, hauptsächlich durch die Gatekapazität und die Schaltspannung.

Im umgeschalteten Zustand werden nur Piko-Ampere an Ruheströmen verbraucht, da dann immer ein Transistor gesperrt ist, egal welcher Pegel am Ausgang liegt.

Den Rest regelt das Netzteil und die nachgeschalteten CPU-Spannungswandler auf dem Mainboard.
 
Wenn ich Spannung zwischen Kollektor und Basis anlege fließt erstmal kein Strom. (Schalter zu) Ermögliche ich dann jedoch einen kleinen Stromfluss von Basis nach emitter wird die Verbindung vom Kollektor zum emitter auch leitend.

Hm, die ganzen Artikel inkl Logikgattern verstehe ich.

Weiterhin offen ist meine Ursprungsfrage.
Wer macht das, dass eine "richtige" Spannung an einen Transistor angelegt wird, so dass er
zwischen den Zuständen 0 und 1 schalten kann? Wie wird das gesteuert? Wieso ändert
sich die Spannung? Mir reicht eine simple Antwort auf diese Frage.

Vermutlich ist die Antwort darauf in den Artikeln versteckt. Ich erkenne sie nur nicht.

VG
 
Wer macht das, dass eine "richtige" Spannung an einen Transistor angelegt wird, so dass er
zwischen den Zuständen 0 und 1 schalten kann?
Grob (also ob 1v oder 3v oder 10v) die Spezifikation der CPU/Sockel/Plattform/usw., fein (also ob 1,35v oder 1,4v) eine in der CPU hinterlegte VID-Tabelle die dem Board sagt wie viel Spannung die CPU haben möchte. Das wird dann durch die Spannungsregler des Boards über MosFETs für die CPU bereitgestellt.
Wie wird das gesteuert?
Wieso ändert
sich die Spannung?
Ideale theoretische CPU:
Die Spannung ändert sich nie. Es gibt ne Betriebsspannung von beispielsweise 1,5v und fertig.

Reale CPU:
Die elektrischen Eigenschaften ändern sich extrem schnell und sehr komplex je nach betriebs- und Lastzustand der CPU. Die Spannungsregelung des Boards versucht das ständig auszugleichen um die Zielspannung konstant zu halten. Da Änderungen in Betriebszuständen sehr viel schneller sind als Reaktionszeiten der MosFETs kommt es zu Über- und Unterschwingern. Unter den Brgriffen "vDrop" und "vDroop" (und Loadline Calibration...) wird dir Google Details erklären wie das aussieht.

Moderne CPU:
Die CPU kann sich zusätzlich dynamisch rauf oder runtertakten (und sogar Teile ganz abschalten) um mehr Performance zu erzeugen oder Strom zu sparen. Für jede Taktrate und jeden Kern und jeden Lastzustand gibts dann ne eigene Spannungsvorgabe. Das Prinzip bleibt aber gleich: Eine CPU gibt auf Grundlage der momentanen Situation einen Sollwert an Spannung ans Mainboard und dessen Regelkreis versucht diese Spannung zu treffen und bereitzustellen.
 
Weiterhin offen ist meine Ursprungsfrage.
Wer macht das, dass eine "richtige" Spannung an einen Transistor angelegt wird, so dass er
zwischen den Zuständen 0 und 1 schalten kann? Wie wird das gesteuert? Wieso ändert
sich die Spannung? Mir reicht eine simple Antwort auf diese Frage.
Um es mal ganz vereinfacht zu sagen.
Auf deiner Festplatte liegen Daten, ebenfalls in binäre Form. Davon wird sich ein Paket geschnappt und an die Eingänge des logikgatters gelegt (es gibt so viele Logikgatter wie die große des Pakets).
An die anderen Eingänge wird das zweite Daten Paket gelegt.
Und schon hast du an beiden Eingänge Daten die dann verarbeitet werden.

Welchen physikalischen Wert die Spannung hat ist letztendlich egal. Wichtig ist nur das der Prozessor weiß ob es ein high (1) Signal ist oder ein low (0) signal
 
Um es mal ganz vereinfacht zu sagen.
Auf deiner Festplatte liegen Daten, ebenfalls in binäre Form. Davon wird sich ein Paket geschnappt und an die Eingänge des logikgatters gelegt (es gibt so viele Logikgatter wie die große des Pakets).
An die anderen Eingänge wird das zweite Daten Paket gelegt.
Und schon hast du an beiden Eingänge Daten die dann verarbeitet werden.

Welchen physikalischen Wert die Spannung hat ist letztendlich egal. Wichtig ist nur das der Prozessor weiß ob es ein high (1) Signal ist oder ein low (0) signal

Ok, ich interpretiere das mal so. Die CPU muss ja Daten verarbeiten. Die kommen jetzt von der Festplatte in Form von 0 und 1. Diese Daten werden an den Logikgattern der CPU, also den Transistoren angelegt. Binärzahl 1 wäre eine Spannung, wo der Transistor aufgeht und bei Binärzahl 0 reicht die Spannung halt nicht und der Transistor bleibt geschlossen. Und mit diesen Binärdaten von der Festplatte schafft es die CPU halt entsprechend zu schalten.
Die Form der Daten ist also verantwortlich dafür, dass eine CPU überhaupt anfängt zu rechnen.

Ist das von mir richtig formuliert?

VG
 
Die Form der Daten ist also verantwortlich dafür, dass eine CPU überhaupt anfängt zu rechnen.
Ganz genau. Die 0en und 1en sind im Maschinencode entweder Nutzdaten oder Operationsbefehle. Die Struktur der Zustände entscheidet darüber, was was ist und was die CPU damit anstellt (und ob überhaupt).

Die Höhe der Spannung die nötig ist um eine CPU X mit der Taktrate Y zu betreiben hat nichts mit den Rechnungen an sich zu tun, da gehts einfach darum die Elektronen mit dem nötigen "Druck" schnell genug zu verschieben damit alles funktioniert wie es soll.
Ein Transistor muss um seinen Zustand zu ändern eine bestimmte Ladungsmenge beinhalten (oder eben nicht beinhalten). Je kleiner der Transistor ist desto geringer ist die Menge - deswegen werden Betriebsspannungen geringer wenn die Strukturen kleiner werden.
Je schneller aber ein Transistor schalten soll desto schneller müssen die Ladungsmengen verschoben werden und dafür braucht es mehr Spannung (="Druck") - deswegen werden Betriebsspannungen größer je höher die Taktrate sein soll.

Was bei der Ladungsverschieberei dabei qualitativ berechnet wird ist dabei zunächst egal.
 
Um das zu verstehen rate ich dazu Bücher über Rechnerarchitektur zu lesen. Kann mir kaum Videos zu so nem komplexen Thema vorstellen die gescheit sind.
 
Zurück