Wie rechnet eine CPU?

2 Antworten

Leider kommst du um die Nullen und Einsen nicht herum. Denn genau damit arbeitet eine CPU. Durch Logiggatter, erzeugt durch Transistoren, werden Nullen und Einsen verglichen und die Ergebnisse zurück in den Speicher geschrieben.

Ein einfaches Beispiel: Ein Wert, bestehend aus Nullen und Einsen, wird in ein Register geladen und mit einem anderen Wert addiert. Das Ergebnis, ebenfalls wieder Nullen und Einsen, wird zurück in den Arbeitsspeicher geschrieben. Hier holt sich der Prozessor der Grafikkarte den Wert ab und weiß nun an welcher Stelle des Bildschirms die Darstellungsberechnung eines Objektes beginnt. Dieser Berechnet dann ebenfalls mit Nullen und Einsen alle weiteren Darstellungspunkte aus dem Grundwert.

Der Aufbau zu einer Webseite ist derart komplex, dass es den Rahmen hier sprengen würde. Aber auch hier fließen Milliarden von Einsen und Nullen zwischen den Chips hin und her bis es zu einem Ergebnis auf dem Bildschirm kommt. Aber dazu benötigt man weit mehr Chips als nur den Prozessor und den Speicher. Deshalb haben Netzwerkadapter eigene Prozessoren die nur für solche Aufgaben entworfen wurden. In den frühen Computern hat noch fast alles die CPU übernommen. Heut zu Tage gibt es für jede Aufgabe in einem PC einen eigenen Prozessor. Das fängt mit der Haupt CPU an und geht über die North und South Bridge zu Grafikkarten Kontroller, NIC Controller, usw. usw. Jeder ist spezifisch für seine Aufgabe entworfen worden. Alle haben eins gemeinsam. Sie bekommen ihre Daten über einen Datenbus und werden über einen Adressbus und den Steuerleitungen angesprochen. Manche können direkt miteinander kommunizieren, andere nur über Umwege.

Die Standard-Antworten wie Wikipedia "Prozessor" überspringe ich mal. Und was die über 15 Mio. Transistoren genau zusammengeschaltet sind ist 1. geheim und wird Dich auch wenig interessieren.
Was aber viele nicht wissen, sind die vielen Möglichkeiten die es gibt, wie Deine primitive Aufgabe bis zur arithmetisch-logische Einheit (ALU) gelangt.
Jede CPU hat einen Befehlssatz aus Maschinenbefehlen, die per Maschinensprache (Assembler) als Software an die Hardware übergeben wird.
Einfachster Befehl ist "OR Register, Zahl"
10 (dezimale 2 in Basis 2)
01 (dezimale 1 in Basis 2)
-----------------OR
11 (ergibt also 3 dezimal)

http://schweigi.github.io/assembler-simulator/
Kann man online selbst "hineinschauen" wie die CPU rechnet!!!
Man läd die Zahl 2 in das Register C
(D ist hier für Ausgaben reserviert)
Nach der ODER Verknüpfung mit 1 steht im Register C das Ergebnis 3.
siehe Bild 1
Da man auch Buchstaben ausgeben will, muss der Datentyp Byte in den ASCII-codierten Datentyp Char gewandelt werden, was man einfach mit einer Addition mit 48 erledigt.
Dabei haben wir gleich die 2. Möglichkeit der Addition kennen gelernt: ADD Register, Zahl

Dann gibt es noch FPU-Befehle wie FADD
für Gleitkommazahlen, wenn man statt 1+2
auch mal 1.5 + 2.6 rechnen will.
Intern rechnet die FPU (bei neueren CPUs bereits integriert)
auf 80 Bit genau! Viele Compiler (die, die höhere Sprachen wie Basic, Pascal oder c in Maschinensprache optimieren)
runden jedoch auf den Typ Double (64 Bit) ab, was etwa 14 Nachkommastellen entspricht.

Dann gibt es noch MMX-Befehle und ... was hier zu weit führt!

Internet kommt 20 Dimensionen später!!! Dazwischen liegen noch Treiber (für die Hardware), das Betriebssystem, Browser, Interpreter und andere Teile, die die superschnelle CPU
alle verlangsamen: einfache ADD-Befehl braucht um die 12 Takte (und CPUs haben um 3 ... 4 GHz).
Wer dann noch .NET und Browser-Interpreter dazwischenschaltet, macht die primitive Addition bis zu 1000 mal langsamer!

Online ansehen, wie die CPU arbeitet - (Computer, PC, Wissenschaft)
hypergerd  17.01.2015, 18:51

Hinweis: das OR sollte nur für primitive Untereinanderschreibung der 0 und 1 gedacht sein (0 oder 1 = 1)! Das ist natürlich keine echte Addition wie ADD, denn
3 + 7 = 10
3 OR 7 bleibt 7, weil die 7 bereits alle 3 Bits 1 hat: 111
Der Übertrag (1 + 1 = 1 + 1Bit merken) wird bei OR nicht an das nächst höhere Bit "weitergeleitet" ! Genau das ist der Unterschied zum den nächst höheren ASM-Befehl ADD.

0
hypergerd  17.01.2015, 19:15

Und dass nicht alle CPUs gleich und richtig rechnen, kann man sich bei
http://www.gerdlamprecht.de/GrobeFPU_Fehler.htm
ansehen ... und per Iterationsrechner Beispiel 120 selbst seine CPU testen.
Der sinus-Befehl FSIN ist immer gerundet -> und ab 9.3e18
kommt nur noch Müll als Ergebnis. Deshalb rechnen Browser wie Chrome per Emulator (langsamer aber genauer).

0