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!
:
Verschoben durch User
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..
Ist etwas so als wenn du fragst "woher weiß die Birne an der Decke dass sie angehen soll wenn man den Schalter an der Wand betätigt".
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
Danke für den Link! @Adler: Ich weiß nicht, welche Intention du hast, aber mach dich bitte über wen anders lustig..
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.
Hallo, habe gefunden: http://www.evilmadscientist.com/2011/a-video-introduction-to-the-digi-comp-ii/ vlg Timm
> 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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.