Wie funktioniert der Prozessor (CPU)? Boris Gedat https://www.youtube.com/watch?v=aue3hIQvhzo Transkript (automatisch erstellt) 0:00 wie arbeitet der Prozessor eines Computers lassen Sie uns mal versuchen das zu verstehen damit wir nicht von Details 0:09 abgelenkt werden gehen wir von einem stark vereinfachten Modell eines Computers aus bevor wir uns den Prozessor anschauen müssen wir erstmal 0:17 sehen wie man Daten überhaupt in einem Computer abspeichert man nimmt dafür elektronische Schaltungen die zwei unterschiedliche Arten von Spannung 0:25 besitzen mit diesen beiden unterschiedlichen Zuständen lassen sich Zahlen des dualsystems darstellen das Dualsystem 0:33 hat ja auch nur zwei verschiedene Ziffern 0 und 1 notieren wir uns das an der Tafel mit elektronischen Schaltungen die zwei 0:43 verschiedene Zustände darstellen also ein Binärsystem sind kann man Dualzahlen abbilden die nächste Frage wo speichert man Informationen im Computer ab dafür 0:57 gibt es den sogenannten Arbeitsspeicher schauen wir uns mal so eine kleine Speichereinheit etwas genauer an sie besteht aus sogenannten Bits acht Bit 1:08 werden als ein sogenanntes bite zusammengefasst ein bite ist die kleinste adressierbare Speichereinheit im Computer jedes einzelne bit hat eine 1:18 Adresse mit der es erreicht werden kann lassen Sie uns das mal an der Tafel notieren Informationen werden im sogenannten Arbeitsspeicher 1:27 abgespeichert acht Bits ergeben ein Bit und das ist die kleinste adressierbare Einheit so jetzt stellt sich nur noch die Frage wo werden die Berechnungen 1:37 durchgeführt im Computer der ist ja ein Rechner zum Berechnen wird der sogenannte Prozessor verwendet das ist ja auch das Thema dieses Films schauen 1:45 wir uns den mal genau an es gibt hier einen Befehlsregister einen Befehlszähler dann gibt's noch einen 1:54 befehlsdecoder eine arithmetisch logische Einheit und einen sogenannten Akkumulator was diese einzelnen Bauteile tun sehen wir dann wenn wir uns die 2:05 Arbeit des Prozessors Schritt für Schritt anschauen lassens uns jetzt mal überlegen welche Aufgabe wir dem Prozessor stellen wollen lassen wir ihn 2:14 mal eine einfache Berechnung durchführen Prozessor löse folgende Aufgabe addiere die Zahlen 2 und 3 dafür müssen wir ihm jetzt eine Reihe von Anweisungen geben 2:25 was soll er machen wir wissen ja der Computer hat ein Gedächtnis und ein Gehirn den Arbeitsspeicher und den Prozessor als erstes speichern wir am 2:36 besten diese beiden operanten 2 und 3 im Arbeitsspeicher ab dann bringen wir diese beiden in das Rechenwerk des Computers hinein lassen dort die 2:46 Addition durchführen und das Ergebnis speichern wir uns dann auch an irgendeiner Stelle im Arbeitsspeicher wieder ab jetzt stellt sich nur noch die 2:54 Frage wie wir dem Computer erklären was er jetzt machen soll dazu müssen wir seine Sprache sprechen die Sprache des Prozessors ist die sogenannte 3:03 Maschinensprache wenn wir möchten dass der Prozessor eine bestimmte Handlung durchführt müssen wir den entsprechenden Maschinenbefehl aufrufen eine duale 1 3:14 würde z.B den Befehl load entsprechen das können wir jetzt gleich gut gebrauchen für unser Programm denn damit könnten wir z.B eine Zahl aus dem 3:23 Arbeitsspeicher in den Prozessor laden das pondant dazu wäre der sogenannte Store Befehl die duale 2 damit kann man eine Zahl vom Prozessor im 3:33 Arbeitsspeicher abspeichern so das wä es jetzt schon fast das einzige was wir noch brauchen ist einen addbefehl weil wir müssen ja die Addition durchführen 3:42 und einen Befehl brauchen wir natürlich immer bei jedem Programm nämlich den sogenannten hold Befehl also die 111 die dem Prozessor zeigt dass das Programm zu 3:51 Ende ist schauen wir uns mal den loadbefehl etwas genauer an so ein Maschinenbefehl besteht meist aus zwei teil 4:00 erst kommt der Befehl und als nächstes brauchen wir natürlich auch noch einen operanten wir müssen ja sagen was in den Prozessor hineingeladen werden soll 4:10 außerdem benötigt der Prozessor noch eine weitere Information die befindet sich zwischen Befehl und operant in Form eines sogenannten numbits wenn hier eine 4:20 Null steht dann sagt das dem Prozessor der operant ist eine Speicheradresse das heißt lade eine Zahl die sich an einer bestimmten 4:30 Speicheradresse im Arbeitsspeicher befindet in den Prozessor hinein wenn das numbit den Wert 1 hat heißt das dass der operant selbst eine 4:39 Zahl ist das heißt diese Zahl die da steht soll in den Prozessor hineingeladen werden praktisch schaut es dann so aus 4:48 wenn das numbild eine ein ist heißt es lade die Zahl 2 in den Prozessor wir können das aber auch für uns verständlicher schreiben load 2 mit 4:58 einem nummerzeichen vor das Z um zu zeigen dass es sich hier um eine Zahl handelt wenn das numbit eine Null ist heißt es für den Prozessor lade die Zahl 5:07 die sich an Speicheradresse 2 befindet in den Prozessor wir können also schreiben load 2 ohne nummernzeichen wenn wir diese Befehle 5:16 nicht dual sondern in eigener Sprache ausdrücken wird das übrigens assempler genannt für uns Menschen ist das einfacher zu verstehen allerdings muss 5:24 das natürlich durch ein Programm dann wieder in Dualzahlen umgewandelt werden die der Computer versteht so damit hätten wir jetzt eigentlich 5:32 alles was wir brauchen um dieses kleine Programm in Maschinensprache zu formulieren ich möchte Sie nur noch bevor wir loslegen kurz dran erinnern 5:40 dass das natürlich jetzt hier eine vereinfachte Darstellung ist in Wirklichkeit sind natürlich diese binären Zahlen die die Befehle 5:48 darstellen viel größer man muss ja auch größere Zahlenräume darstellen können aber für unsere Animation ist das jetzt hier geeignet dass wir das ganze jetzt 5:55 hier alles auf ein Bit beschränken also so legen wir los das Programm das wir jetzt schreiben werden wird hier in den Arbeitsspeicher 6:04 hineingeladen werden und es gibt auch reservierte Plätze für den ersten und für den zweiten operanten und natürlich auch einen Platz wo wir das Ergebnis 6:14 abspeichern können passen Sie auf ich schreibe jetzt einfach mal die ganzen Befehle an die Tafel die wir für dieses Programm brauchen wie das funktioniert 6:22 sehen wir dann bei der Durchführung load nummernzeichen 2 Store 9 dann load Nummer 3 Store 10 dann brauchen wir noch load 9 6:35 und für die Addition 10 und Store 11 und dann ist das Programm zu Ende und das müssen wir noch mit dem holdbefehl Beenden stellen wir 6:45 uns vor diese Befehle befinden sich jetzt alle in binärer Form in einer ausführbaren Datei mit dem Namen XE wenn wir das doppelt anklicken dann 6:55 werden diese einzelnen binären Maschinenbefehle in den Arbeitsspeicher geladen jetzt beginnt die Ausführung des Programms der Befehlszähler steht 7:07 aktuell auf Null das heißt der Prozessor weiß er soll den Befehl an Speicheradresse Null ausführen den lät er sich jetzt in sein 7:16 Befehlsregister der Befehl bedeutet loadnummernzeichen 2 das ist für uns einfacher zu verstehen lassen Sie uns auch die anderen Befehle mal alle in 7:25 esemler umwandeln das ist für uns einfacher nachzuvollziehen was soll also der Prozessor tun die Anweisung lautet ladet die Zahl 7:35 2 in den Prozessor am nummernzeichen erkennt man ja dass es tatsächlich die Zahl ist die da steht die hineingeladen werden soll der befehlsdecoder wird also 7:44 in der arithmetisch logischen Einheit eine Zuweisung erzeugen und dann wird genau dieser operant in den sogenannten Akkumulator 7:52 geladen der Befehlszähler wird um eins erhöht und als nächstes wird der Befehl an Speicheradresse ein geholt da steht Store 9 und dieser Befehl wird ins 8:04 Befehlsregister geladen das bedeutet für den Prozessor dass er die Zahl die sich momentan gerade im Prozessor befindet nämlich im 8:13 Akkumulator im Arbeitsspeicher an Adresse neu abspeichern soll und das macht er dann auch als nächstes wird wieder der Befehlszähler 8:23 hochgezählt es muss der Befehl an Speicheradresse 2 geholt werden dort steht load nummernzeichen 3 was heißt das für den 8:34 Prozessor lade die Zahl 3 in den Prozessor also die Zahl die hier schon als operant steht wird über eine Zuweisung in der arithmetischlogischen 8:44 Einheit dem Akkumulator zugewwiesen so dann machen wir weiter mit dem nächsten Befehl jetzt müssen wir 8:53 diesen Befehl der sich an der Speicheradresse 3 befindet ausführen das heißt wir wollen ja jetzt als nächstes mit Store 10 dafür sorgen dass eben 9:02 genau an der Adresse 10 im Arbeitsspeicher diese Zahl die jetzt gerade im Prozessor ist abgespeichert wird also die wird gesucht diese Stelle 9:11 und es wird die drei abgespeichert Befehlszähler wieder hochgezählt und es kommt der nächste Befehl dran der befindet sich an 9:21 Speicheradresse 4 es wird also der Befehl load 9 ins Befehlsregister hineingeladen der Prozessor was zu tun ist lade die Zahl die sich an 9:31 Speicherstelle ne im Arbeitsspeicher befindet in den Prozessor also muss erstmal diese Speicherstelle gefunden werden der 9:39 befehlsdecoder stellt die arithmetisch logische Einheit auf Zuweisung und es wird diese Zahl dem Akkumulator zugewiesen so und jetzt wird's 9:51 interessant mit dem Befehl der sich an Speicheradresse 5 befindet der heißt nämlich 10 10:00 laden wir ihn erstmal in den Befehlsregister hinein was ist jetzt zu tun addiere die Zahl die sich an Speicheradresse 10 befindet zu der Zahl 10:11 die sich im Akkumulator befindet hinzu als erstes muss natürlich diese Speicheradresse 10 gefunden werden und dann wird die Zahl die sich dort 10:20 befindet in die arithmetisch logische Einheit hinein befördert so jetzt ist natürlich nur noch die Frage wie funktioniert jetzt 10:28 diese addition diese Rechenoperation wir haben ja jetzt die beiden operanten 3 und 2 aber wie werden die beiden jetzt zusammengezählt dazu müssen wir 10:40 verstehen wie der Akkumulator funktioniert der funktioniert auf folgende Weise es ist nämlich so dass die Zahl die sich aktuell im Akkumulator 10:48 befindet zum operanten für die nächste Operation wird der Akkumulator ist also mit dem ersten Eingang der arithmetisch logischen Einheit verbunden und wenn der 10:57 befehlsdecoder jetzt auf addition schaltet haben wir als nächstes im Akkumulator das Ergebnis dieser addition daher hat auch der Akkumulator 11:07 seinen Namen das heißt man könnte jetzt immer mehr Werte hinzuzählen und entsprechend würde dann das Ergebnis im Akkumulator immer mehr 11:15 anwachsen das brauchen wir allerdings jetzt in diesem Fall nicht in unserem Fall reicht eine Addition lassen Sie uns nun dieses Ergebnis 11:23 abspeichern das macht dann der nächste Befehl deswegen müssen wir den Befehlszähler hochzählen es muss dieser Befehl an Position 6 11:32 jetzt geholt werden dieser Befehl heißt in diesem Fall Store 11 bringen wir mal rein ins Befehlsregister das bedeutet speichere 11:44 die Zahl die sich im Prozessor also an der Stelle vom Akkumulator befindet an Speicherstelle 11 im Arbeitsspeicher ab da soll ja auch unser Ergebnis hin es 11:55 wird hier abgespeichert und das Programm ist beendet dafür brauchen wir allerdings den Befehl an Speicherstelle 7 der dann dem Prozessor sagt dass jetzt 12:05 schluss ist es wird in den Befehlsregister hineingeladen und damit ist das Programm beendet