PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Übergang von logischen Befehlen in elektrische Signale bei Hardware?


minos5000
2008-04-11, 13:36:13
Ich hab mich letztens gefragt wie bei beliebiger Hardware eigentlich der Übergang von Softwareinstruktionen in tatsächliche elektrische Signale erfolgt. An irgendeiner Stelle muss ja die logische Ebene verlassen werden.

Hab auch schon E-Techniker bei uns auf der Arbeit gefragt, aber von denen hatte auch keiner ne Antwort parat.
Vielleicht ist ja jmd hier im Board schlauer ;)


mfg minos

Gast
2008-04-11, 14:01:37
Du solltest dich mal fragen wo du die Grenze zwischen Hard und Software siehst.

Software liegt schließlich auch in Form elektrischer Signale/Zustände im Speicher vor.

Monger
2008-04-11, 14:26:39
Eigentlich ist es ja falschrum: du verlässt die elektrische Ebene niemals. All deine Ein- und Ausgangsgeräte produzieren bzw. konsumieren irgendein Signal.

Der logische Zusammenhang besteht ausschließlich in deinem Kopf. Ein Fernseher sendet ja schließlich auch keine Bilder, sondern emittiert nur eine Reihe von Farbwerten. Die Idee davon entsteht erst in deinem Kopf.

Spasstiger
2008-04-11, 14:31:23
Im Prinzip kann man deine Frage auf die Frage komprimieren: "Was ist elektronische Datenverarbeitung?"

Ich könnte mich schon detailliert zu dem Thema äußern, hab an der Uni auch schon ihm Rahmen eines Projektpraktikums einen 16-Bit Prozessor in VHDL realisiert, auf FPGAs gebannt und ein Spiel in Assembler dafür programmiert.
Aber das würde schnell den Rahmen eines Forenpostings sprengen. Du solltest die Frage also noch ein wenig konkretisieren. Interessiert dich, wie die Hardware auf die Software zugreift? Gehts dir mehr drum, wie Befehle abgearbeitet werden? Oder ist dein Interesse eher, wie die Erzeugung von elektrischen Signalen funktioniert?

Gast
2008-04-11, 14:47:31
Software ist wie schon gesagt wurde nur elektrische Signale die in irgendeiner form gespeichert wurde.

Im grund läuft es so ab: Quellcode wird compiliert für eine bestimmte plattform (oder interpretiert je nach sprache) Danach hast du Instruktionen die du auf der CPU ausführen lassen kannst... lade 000ab2 in register y, addiere zahl an Speicheradresse abc123 dazu, usw. usf.

Die "logische Ebene" hört nach dem Editor / der IDE in der die Software geschrieben wird auf. (Ich geh davon aus das normalsterbliche Programmierer sich nichtmehr im bitschubsen üben).

minos5000
2008-04-11, 14:58:23
Jo, ich war wirklich einem Denkfehler aufgesessen und habe übersehen, daß die Logik eigentlich nur in meinem Kopf ist, und das was ich für Logik halte bereits im Rechner in elektrischer Form vorliegt.

Aber ich versuche mich dennoch mal an einer konkreten Frage. Was passiert auf physischer Ebene, wenn man z.B. die größe zweier Register einer CPU vergleichen will. Die Werte der Register nehme ich mal an, liegen irendwie als elektrische Ladungen innerhalb der CPU und welche Vorgänge spielen sich nun bei einem solchen Vergleich ab?

Ich hoff, ich hab die Frage so formuliert, daß klar wird, worauf ich hinaus will.


minos

Spasstiger
2008-04-11, 15:33:15
Aber ich versuche mich dennoch mal an einer konkreten Frage. Was passiert auf physischer Ebene, wenn man z.B. die größe zweier Register einer CPU vergleichen will. Die Werte der Register nehme ich mal an, liegen irendwie als elektrische Ladungen innerhalb der CPU und welche Vorgänge spielen sich nun bei einem solchen Vergleich ab?
Erstmal auf logischer Ebene: Bei einem Vergleichsbefehl werden die Inhalte der Register voneinander abgezogen. Da man in Zweierkomplementlogik arbeitet, kann man direkt am ersten Bit ablesen, ob das Ergebniss negativ oder positiv ist. Und daraus kann man dann schließen, in welchem Register der größere Wert stand.
Das Vorzeichen der Subtraktion ist also das Ergebniss bei einem Vergleichsbefehl.
Die arithmetisch-logische Einheit, die Additionen, Subtraktionen, etc. durchführt, hat in der Regel ohnehin Ausgänge, an denen z.B. das Vorzeichen anliegt oder eine Null, wenn das Ergebnis einer Operation 0 ergibt. Diese Ausgänge nennt man auch Flags.

Du willst ja jetzt noch eine Ebene tiefer einsteigen. Grundsätzlich ist ein Prozessor aus Logikgattern und Leitungen aufgebaut. Aus mehreren Logikgattern kann man bei geeigneter Verbindung Flipflops herstellen, aus mehreren Flipflops wiederum Register.
Ein Logikgatter besteht aus Transistoren. Transistoren sind jetzt wirklich Grundbausteine auf physikalischer Ebene.
Ein Transistor lässt - vereinfacht gesagt - einen Strom auf der einen Seite durch, wenn der Strom oder die Spannung auf der anderen Seite groß genug ist. Man kann den Transistor also als Schalter betrachten.

Hier mal ein schönes Bild aus Wikipedia für ein UND-Logikgatter:
http://upload.wikimedia.org/wikipedia/commons/thumb/9/94/AND-Gatter.svg/180px-AND-Gatter.svg.png

Wie man sieht, braucht man zwei Schalter (Transistoren), um dieses Gatter zu realisieren.

Ich kann das jetzt auch noch weiter runterbrechen bis auf eine quantenmechanische Ebene, aber das ist imo nicht so wirklich spannend für einen Laien. ;)

Gnafoo
2008-04-11, 15:35:45
Auch wenn Spasstiger schneller war und schon etwas ähnliches geschrieben hat:

Ist zwar schon eine Weile her und sicher etwas vereinfacht dargestellt, aber das ist der ungefähre Ablauf, wie ich ihn aus Technischer Informatik kenne:

Der Dekoder nimmt den Befehl der vom Bus in das Befehlsregister geladen wurde auseinander. Daraufhin übernimmt das Steuerwerk die Kontrolle und schaltet den CPU-internen Bus so, dass die Werte aus Registern bzw. über den externen Bus in die Hilfsregister der ALU geladen werden. Dann werden an der ALU entsprechende Steuerbits angelegt, die einen Vergleich signalisieren.

Den Vergleich kann man jetzt z. B. durchführen, indem man beide Zahlen subtrahiert und am Ende das Vorzeichen des Ergebnisses prüft, welches an der ALU über das Sign-Flag abrufbar ist. Die Subtraktion ist wiederrum nichts anderes als die Addition zweier Zahlen im Zweierkomplement, wobei bei der zweiten das Vorzeichen umgedreht wurde.

Dabei ist ein Register im Prinzip nur ein Array von Flipflops. Was den Additionsvorgang selber angeht: im Endeffekt ist das nur ein Schaltnetz aus logischen Gattern, die auf den Bits der Eingabezahlen arbeiten. Da solltest du mal nach "Volladdierer" und "Halbaddierer" suchen, um eine Vorstellung zu bekommen (=> Wikipedia z. B.). Natürlich gibt es auch da etliche Varianten (Carry-Ripple-Addierer, Carry-Lookahead-Addierer etc.).

minos5000
2008-04-11, 16:56:38
Danke für eure Ausführungen, ich denke ich hab's begriffen :)