Im Rahmen einer Hausarbeit stehe ich vor oben genannter Frage. Dabei
bezieht sich das Thema auf die Anfänge der Rechnertechnik, spezieller
noch auf die Zuse Z3. Mir ist bekannt, dass die Z3 sogenannte Opcodes
verwendete: http://de.wikipedia.org/wiki/Opcode
Jedoch ist mir als finaler Schritt zum "vollständigen" Verständis immer
noch nicht klar, woher die Z3 wusste, was genau sie tun soll. Anders
formuliert: Wie hat man es geschafft, dass sie bei Opcode X genau die
Rechnung Y durchführte?
Ich wäre für Hilfestellungen jeder Art dankbar!
Falke schrieb:> ...Warum verstehen Computer Programmiersprachen?
Kein Prozessor versteht "Programmiersprachen". Sie verstehen nur
Maschinensprache. Maschinensprache ist eine bstimmte Bitanordnung
an den Eingängen. Diese Bitanordnung wird dann über Logikgatter
in die gewünschte Verarbeitung der an einem anderen Eingang liegenden
Daten umgewandelt.
Gruss
Harald
Der Opcode wird von einem "Befehlsdecoder" verarbeitet, der je nach
auszuführendem Opcode unterschiedliche "Funktionen" aktiviert.
Beispiel:
http://relaiscomputer.de/skizzen/bild26.jpg
Je nach Opcode (Bit 1, Bit 2 und Bit 3 auf der linken Seite) wird Strom
von oben auf nur eine der 8 Ausgänge geschaltet.
Einer der Ausgänge könnte beispielsweise für Addieren stehen, ein
anderer für Subtrahieren, wieder ein anderer für logisches AND.
Die restlichen Bits des Opcodes können beispielsweise die Operanden
auswählen, indem aus beispielsweise 8 möglichen Eingängen (z.B.
Registern) einer ausgewählt wird.
Das ist mir klar. Ich hätte vielleicht die "Programmiersprache"
rauslassen sollen, das ist im Grunde auch gar nicht das Ziel meiner
Hausarbeit. Es geht viel mehr um eben diese Bitmuster, die du
ansprichst. Woher weiß der Rechner beispielsweise was er bei einem
bestimmten Bitmuster (der ja durch einen Opcode beschrieben werden
kann)tun soll? Irgendwie muss man ja festgelegt haben, dass meinetwegen
1011 Multiplikation bedeutet..
Hallo erstmal,
ich bin zwar nicht vom Fach, meine aber folgendes Verstanden zu haben:
Der Opcode wird in einem Steuerregister gehalten, welches dann
entsprechend dem Wert bestimmte "Steuerpfade" freischaltet. Wenn du dann
z.B. den Befehl Lade in RegisterX Wert Y ausführen lässt, wird der
Befehl in seinen Wert assembliert, z.B. 00110010 X Y. Um es nochmal kurz
zu betonen, das ist ausgedacht, ich weiß nun nicht, welcher Befehl da
welchen Wert erzeugt, aber das kann man ja im Datenblatt nachschauen
;-). Die 00110010 ist dann der Ladebefehl, und dieser bewirkt, das über
die kleinen Transistoren die da "verbastelt" sind, entsprechende Pfade
geschaltet werden, vom Eingang der den Wert Y hält zum RegisterX welches
dann im nächsten Prozessortakt mit diesem beschrieben wird.
Ich hoffe, mit dieser Erklärung kannst du dir ein Bild machen =)
schöne grüße das chaoskind
Schau dir mal in Hardware aufgebaute Automaten (Moore und Mealy) an,
diese kannst du dir als Entsprechung für das Steuerwerk eines Prozessors
nehmen.
Wenn du dir einen einfachen Prozessor hernimmst, solltest du für jede
Baugruppe des Prozessors die passende digitale Schaltung finden. Über
die Kenntnis der Teilschaltungen, sollte sich die Gesamtfunktion
erschliessen.
Irgendwie kann ich mein Beitrag grad nicht mehr bearbeiten.. hab grad
gesehen das du gefragt hast "irgendwer muss das doch festgelegt haben,
das zb 0011 multiplikation bedeutet". Genau das hat jemand festgelegt.
Der Hersteller wars... und genau das sind Informationen, die man im
Datenblatt finden kann. Google doch mal, "Datasheet Atmega8" wär
beispielsweise n schöner Suchbegriff, bei dem ein das Datenblatt quasi
nicht mehr entwischen kann. Selbiges öffnest du, und schaust mal unter
Instruction Set nach.
Falke schrieb:> Das ist mir klar. Ich hätte vielleicht die "Programmiersprache"> rauslassen sollen, das ist im Grunde auch gar nicht das Ziel meiner> Hausarbeit. Es geht viel mehr um eben diese Bitmuster, die du> ansprichst. Woher weiß der Rechner beispielsweise was er bei einem> bestimmten Bitmuster (der ja durch einen Opcode beschrieben werden> kann)tun soll? Irgendwie muss man ja festgelegt haben, dass meinetwegen> 1011 Multiplikation bedeutet..
Die Schwierigkeit die du hast ist, dass du Bedeutung ("woher weiss X")
in die Sache legst, die da nichts zu suchen hat. Die CPU ist eine
Maschine, die über einen bestimmten Satz vorgefertigter Funktionen
verfügt (Zahl aus dem Speicher holen, Zahl schreiben, Multiplizieren,
vergleichen). Das Programm sagt nun welche Funktion in welcher
Reihenfolge aktiviert werden soll. Das ist im Grund so ähnlich wie bei
einem Pianola (ein automatisches Klavier). Das hat vorgefertigte
Funktionen (Töne) und ein Programm (Lochstreifen). Jedes Loch sorgt dann
beim Durchlauf dafür, daß der entsprechenede Ton gespielt wird.
Anders gesagt:
Könntest du dir einen Computer vorstellen (bauen), der nicht
programmgesteuert abläuft, sondern bei dem man am Bedienfeld
verschiedene Taster hat, z.B. für Addition, Multiplikation, ... ?
Genau diese Taster am Bedienfeld ersetzt du nun durch die Ausgänge, im
Bild unten.
> http://relaiscomputer.de/skizzen/bild26.jpg
Links kommt der Opcode hin und Voilà: Der durch das Bitmuster des
Opcodes codierte Befehl wird ausgeführt.
Welcher Opcode hier was bedeutet, das legst DU als Erbauer dieses
Computers fest, indem du dir überlegst, welchen Ausgang des Decoders du
mit welcher Funktion, mit welchem Taster auf dem Bedienfeld verbindest.
Der Computer "weiß" nichts davon, was soll er schon "wissen"? Der Opcode
steuert den Decoder, Strom fließt durch eines der acht Kabel und
aktiviert am Ende eine bestimmte Funktion. Welche das ist, ist dem
Decoder sowie dem Opcode selber egal.
Genau so wenig "interessiert" es die Multiplikationseinheit, warum da
jetzt ein Signal aus dem Kabel kommt. Sie weiß nichts vom Decoder und
von irgendwelchen Opcodes.
Hallo,
Falke, müsste nicht dieses Video für Dich sehr interessant sein, wo
jemand
so ein einfaches Rechenwerk aus Holz in sehr groß gebaut hat?
Da müsste ja irgendwo oben genau so eine Stelle sein, wo man durch
Umklappen den Opcode einstellt, kann mich nicht genau erinnern.
Ich kann mich leider nicht erinnern wie die Maschine heisst.
Digi II oder so? So eine menschengroße Rechenmaschine mit 8er
Billardkugeln.
Vielleicht liest ja irgendwer mit, der weiß was ich meine….
vlg
Timm
http://www.youtube.com/watch?v=GcDshWmhF4A
Nicht ganz das, was du meinst, aber ähnlich.
Hier gilt genau dasselbe wie beim Computer:
Keines der Holzteile "weiß" irgendetwas vom anderen. Keines weiß, wo die
Murmeln herkommen, welche Zahl dargestellt wird, welche Zahl eingegeben
wurde.
Es funktioniert einfach durch das Zusammenspiel. Jedes einzelne Holz ist
so gebaut, dass es je nach Zustand richtig umkippt.
> Irgendwie muss man ja festgelegt haben, dass meinetwegen 1011> Multiplikation bedeutet..
Richtig ! Das hat jemand festgelegt ! Also z.B. könnte das letzte Bit im
Opcode bedeuten das die erste Variable der Adition aus dem Register A
kommt wenn dort eine 0 steht. Daß heist die Weiche (Multiplexer) für den
ersten Operanden wird auf A gestellt (durch den Select Eingangdes
Multiplexers).
Wenn jedoch eine 1 drin steht dann wird auf B umgeschaltet. Wenn du
jetzt einen Inverter vor den Selct Eingang machst dann würde bei 1 auf A
gestellt werden.
Opcode 010001010
|
| Select
|-----|
A----+ MUX | |----|
| +----+ADD |
B----+ | | |
|-----| | +----
| |
X---------------+ |
|----|
An X könnte wieder ein Mux hängen der den Select an Bit 1 vom Opcode
haben könnte und zwichen irgend etwas anderem wählen kann.
Falke schrieb:> Im Rahmen einer Hausarbeit stehe ich vor oben genannter Frage. Dabei> bezieht sich das Thema auf die Anfänge der Rechnertechnik, spezieller> noch auf die Zuse Z3.
Du hast in den vorherigen Stunden geschlafen oder auf dem EIPAD bunte
Bilder angesehen.
Falke schrieb:> Anders> formuliert: Wie hat man es geschafft, dass sie bei Opcode X genau die> Rechnung Y durchführte?
Weil ein Mensch dieser Maschine gesagt hat, was sie machen soll.
Evtl. in Form eines Lochstreifens.
Michael_ schrieb:>> formuliert: Wie hat man es geschafft, dass sie bei Opcode X genau die>> Rechnung Y durchführte?> Weil ein Mensch dieser Maschine gesagt hat, was sie machen soll.> Evtl. in Form eines Lochstreifens.
nein, auf diese ebene kann man das nicht programmieren( patch für
Opcodes mal weggelassen)
Das ganze ist denn einfach hardware. Es wurde also Verdrahtet.
Peter II schrieb:> Das ganze ist denn einfach hardware.
So ganz ungefähr schon, bei einfachen Fällen. Microcodes verlagern das
Problem allerdings eine Stufe weiter, und bei einem Z80 als IP in einem
FPGA, das seine Konfiguration aus einem EEProm lädt kommen solche
Definitionen schnell ins Schleudern.
Gruss Reinhard
Falke schrieb:> Wie hat man es geschafft, dass sie bei Opcode X genau die> Rechnung Y durchführte?
Derartige (Übertragungs-, Decoder- oder Ausführungs-) Fehler bescherten
bereits von Anfang an Bugs, die sich in den Geräten niederließen (*)...
...bis sie bspw. Opfer einer Totalkollision mit dem Woman Acceptance
Factor wurden:
http://de.wikipedia.org/wiki/Grace_Hopper#Leistungen
(*) und denen der Klassiker, "ein X für ein U vormachen" zu langweilig
geworden war