Wie rechnet ein Rechenwerk Befehle aus?
Das Rechenwerk eines PC CPU subtrahiert , addiert u.s.w Aber ein Rechenwerk ist doch dazu da , Befehle zu laden . Aber wie bitte kann man Befehle addieren oder subtrahieren?
3 Antworten
ganz einfach , es geht um 0 und 1
beim laden eines befehls macht der cpu nix anderes als eine folge von 0 und 1 zu laden die dem rechenwerk dann z.b. sagt welches programm ablaufen muss .
will das programm etwas berechnen z.b. 2 +3 , hat es z.b. register und natürlich speicher
der ablauf könnte wie folgt sein .
wert1 = 2
wert2 = 3
wert3 = add(wert1,wert2)
was passiert nun im Rechenknecht :
erstmal liesst er das ganze
wert1 = 2 , bedeutet also lege einen speicher an und pack da den wert 2 rein
wert2 = 3 , bedeutet also lege einen speicher an und pack da den wert 3 rein
add(wert1,wert2) , hole dir den wert aus speicherstelle mit dem namen wert1 packe das ins register , hole dir den wert aus speicherstelle mit dem namen wert2 packe das in ein weiteres register , nehm den code für add und tu deine arbeit mit den beiden registern . schreibe das ergebnis auf den speicher mit dem namen wert3
der befehl add ist schon vordefiniert im CPU .
jetzt fragste dich natürlich wie komplexere sachen gemacht werden können .
naja das ist eigentlich ganz einfach . turing maschine ist das mittel aller mittel .
und das sich alle möglichen lösungen nur aus schaltern und logik erzeugen lassen .
denn wenn du dein leben runterbrichst auf dein chromosom , bestht das auch nur aus 3 Säuren , und dennoch hast du beine ohren etc . das leben besteht auch nur aus atomen , so viele sind das jetzt nicht im verhältnis was du alles aus den atomen bauen kannst .
und genauso läuft das mit dem CPU und natürlich durch die pheripherie .
um ein bild anzuzeigen braucht es 3 farben und die müssen nur einen bestimmten leucht wert haben , im speicher muss nur stehen welcher punkt welchen wert hat für jede farbe . Und schon kannst du jedes Bild erzeugen . der CPU hat keine ahnung was das wird , der monitor auch nicht , der kümmert sich nur um die punkte , aber dein auge ... macht daraus ein bild .
naja, das was halt im programm steht .
nennen wir das doch einfach arbeitsanweisungen.
erstmal wird beim programmstart , das programm in den hauptspeicher geladen .
dann geht die turing maschine ab dem start des speichers los , stelle dir das vor wie ein streifen wo du buchstaben hintereinander hast .
wenn du den streifen nimmst und beim ersten buchstaben anfängst, weisste ab den nächsten leerzeichen das es ein wort ist . so wie du ließt und das wort im gehirn übersetzt , so macht es auch der CPU mit dem speicher . wein 64bit programm , ließt also immer 64bit also 64 x 0 bzw 1 und guckt dann in seiner Programmbibliothek nach welches miniporgramm er starten muss .
Das miniprogramm sagt dann z.b. als nächstes kommt wert1 und wert2 , also ließt das miniporgramm die nächsten speicher aus und hat dann wert1 und wert2 .
und so weiter uns so fort .
genauso wie du also z.b. ein kochrezept ließt und die anweisungen befolgst , so tut der CPU das programm ausführen .
und damit wir nicht ständig nachgucken müssen welcher befehl welche 64 bit zahl ist, gibt es programmiersprachen , die wandeln also nach lesen des wortes den befehl in einen computercode um .
Danke nochmal ! Also rechnet er Wert 1 + Wert 2 , und wenn dann aus dem beiden Werten z.B 5 rauskommt dann mach das und das , und wenn 7 rauskommt dann mach das und das . Habe ich das so richtig verstanden?
wenn das in dem programm so steht , ja
deine kochanleitung ist ja nicht anders .
nudeln kochen :
nehme topf
packe nudeln rein
gehe zum wasserhahn
dreh wasser hahn auf
warte bis nodeln unter wasser
drehe wasserhahn wieder zu
gehe zum herd und stell topf auf herd
schalte kochplatte auf 2
warte bis wasser kocht
stelle wecker auf 10 minuten
wenn wecker klingelt mach kochplatte auf 0
nehm topf und geh zur spüle
nehm sieb
kipp topf inhalt ins sieb
warte bis nix mehr durch sieb tropft.
Ich weiß , dass ist jetzt ein dummes Beispiel , aber in Minecraft kann man ja auch Befhle ausführen . Wie z.B "/summon Zombie" oder sowas . Wie wird das ausgerechnet ?
Nein, die Befehle werden ins Steuerwerk geladen, welches dann wieder das Rechenwerk ansteuert.
Numerischer Opcode als Binärzahl wird vom Steuerwerk dekodiert. Im einfachsten Fall entsteht dabei eine Liste von Zahlenfolgen, die wiedrum die Stimuli (Eingänge) der Steuerleitungen des Rechenwerkes sind.
Danke . Aber was ist , wenn man ein Programm startet . Da rechnet er doch bestimmt auch tauesend Befehle aus . Welche denn zum Beispiel?