Wie berechnet die CPU eigentlich Befehle?

Pfranzy

Cadet 4th Year
Registriert
März 2020
Beiträge
71
Hallo liebe community.
Wie rechnet eine CPU eigentlich solche Befehle aus wie "lade Daten aus der Festplatte die an Adresse YX sind in den RAM an Adresse XY. Oder den" mov(e) "Befehl
Mir reicht es vereinfacht da es sonst dummies wie ich nicht verstehen.
 
  • Gefällt mir
Reaktionen: Azubi_02
lade Daten aus der Festplatte die an Adresse YX sind in den RAM an Adresse XY
Das ist kein Befehl, sondern eine Kette von Befehlen...
Arbeit in kleine Stückchen zu zerlegen ist ja an sich keine neue Erfindung, sondern seit tausenden von Jahren bewährt...

Aber zum MOV-Befehl: Was genau erwartest du da für eine Erklärung?
 
Der Compiler übersetzt das vom Programmierer geschriebene Programm in sog. Maschnencode. Jede CPU-Architektur hat hier eigene Befehle.
Wenn ein Programm ausgeführt wird, wird es vom Betriebssystem in den Arbeitsspeicher geschrieben und die CPU aufgefordert, das erste Byte des Programms auszuführen. Es wird in Fachsprache der "Pointer" auf dieses byte gesetzt.

Die CPU hat einen internen Ausführungsablauf, der je nach CPU-Typ in Details abweicht (also auch innerhalb einer Architektur), so ergeben sich dann Unterschiede bei den Instructions per cycle.
Im groben haben alle CPUs aber eines gemeinsam:
Fetch - Befehl (der am Pointer steht) holen, ggf. die Argumente (z.B. bei einer Addition die Summanden) mit holen.
Decode - Befehl decodieren, heraus finden, auf welche Weise gerechnet werden soll. Meint welche Transistoren genutzt werden sollen
Execute - Befehl ausführen, je nach Befehl Ergebnis irgendwo hin kopieren und den Pointer weiter schieben auf den nächsten Befehl.

Das ist sehr vereinfacht.
Was meinst du mit mov? Den Assambler-Befehl, oder das Verschieben einer Datei im Dateisystem?
 
  • Gefällt mir
Reaktionen: Pfranzy
Vielleicht liefert dir diese, bisher 4-teilige Serie, ein paar neue Erkenntnisse
 
  • Gefällt mir
Reaktionen: PHuV
Naja, diese ganzen Erklärungen für "Dummies" usw. sind meistens extrem oberflächlich und danach weiss man genau so wenig wie davor. Falls man die Funktionsweise wirklich verstehen will, muss man schon Informatik oder so studieren oder sich Fachliteratur zu Gemüte ziehen (sowas z.B.: https://homepages.thm.de/~hg6458/mpt-Dateien/MPT.pdf).
 
Mich hat dieses Video fasziniert.
Der fährt eine alte AMIGA CPU im Handbetrieb. (Motorola 68000)

Da sollte einiges Interessantes für Dich dabei sein:

 
Um das wirklich zu verstehen, muss man sich bewusst werden, dass Deine Frage eben auch in einer ganzen Reihe von einzelnen Befehlen resultiert.

'Für Dummies' gibt es hier nicht und ein paar Semester Informatik schaden an der Stelle nicht.
Was auch hilft, sind Grundlagen in Assembler Programmierung.
Dann versteht man auch, dass so ein Befehl in einer Hochsprache am Ende gleich eine ganze Kette von Instruktionen an Maschinencode zur Folge hat.
 
  • Gefällt mir
Reaktionen: DeusoftheWired
Pfranzy schrieb:
Oder den" mov(e) "Befehl

Wenn du MOV kennst, hast du schon einen guten Einstieg, vorausgesetzt, du verstehst, was und wie der Befehl etwas macht. Generell ist Assembler eine tolle Sprache, um die Funktionsweise von Rechnern verstehen zu lernen, weil jede Hochsprache und moderne Befehl am Ende nur auf mehrere der grundlegenden Befehle wie eben MOV heruntergebrochen werden. Im Grunde ist alles nur Bitschubserei, die über Jahrzehnte/Jahrhunderte immer komplexer wurde. Genau deshalb lohnt auch ein Ausflug in die Historie wie z. B. zur Pascaline oder Z3 – wenn man kapiert, wie diese Maschinen laufen, hat man die zugrundeliegenden Prinzipien auch aktueller CPUs verstanden.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Aduasen
Zurück
Oben