Frage zum Software- / Hardware- Übergang



  • Hallo zusammen!

    Ich beschäftige mich jetzt schon einige Zeit mit C und seit kurzem auch mit Assembler. Es gibt eine Frage, die mich dabei schon die ganze Zeit beschäftigt:

    Wenn man jetzt in irgendeiner Programmiersprache ein Programm schreibt und der Compiler es in Einsen und Nullen (also Maschinensprache) übersetzt, existiert ja zunächst lediglich eine Art Anweisungsliste für den Rechner. In diesen Anweisungen wird dem Rechner dann z.B. mitgeteilt, dass ein Transistor Strom leiten oder sperren soll, usw. Was ich aber nicht verstehe ist, wie genau die Umsetzung dieser Anweisungen stattfindet. Was passiert also zwischen der 1 oder 0, die ich dem Prozessor als Anweisung gegeben habe und dem Transistor, der jetzt plötzlich Strom leitet oder sperrt?

    Dieser Übergang zwischen Soft- und Hardware ist mir ein ziehmliches Rätsel, zumal man in Büchern über Programmiersprachen diesbezüglich nichts findet. Auch im Netz habe ich nichts gefunden, was diese Lücke schließen konnte. (Bei entsprechenden Suchbegriffen, wird einem dann erklärt, wie man Dualzahlen addiert o.ä.)

    Ich hoffe, dass meine Fragestellung verständlich ist. Ich poste meine Frage mal im Assembler- Bereich, weil die Leute hier wahrscheinlich am meisten Ahnung davon haben, wie ein Rechner auch hardwaremäßig arbeitet.

    Viele Grüße,
    der Anfänger



  • das könnte die lücke schliessen:
    http://www.hd.id.ethz.ch/FK/uRISCy.html
    🙂



  • Anfänger '08 schrieb:

    Dieser Übergang zwischen Soft- und Hardware ist mir ein ziehmliches Rätsel, zumal man in Büchern über Programmiersprachen diesbezüglich nichts findet.

    Diesen Übergang, so wie Du ihn Dir vorstellst, gibt es nicht (meiner Meinung nach). Das ist so was wie auf die gesamte Weltkarte schauen und sich überlegen, wie sich wohl die Ameisen in Afrika verhalten.
    Ich würde vorschlagen, um es besser zu verstehen, lerne VHDL o.ä. und versuche damit, eigene CPU(s) zu beschreiben und vielleicht sogar zum Laufen zu bekommen. Man kann sich dafür relativ günstige FPGA Boards kaufen.



  • Anfänger '08 schrieb:

    Was passiert also zwischen der 1 oder 0, die ich dem Prozessor als Anweisung gegeben habe und dem Transistor, der jetzt plötzlich Strom leitet oder sperrt?

    Dieser Übergang zwischen Soft- und Hardware ist mir ein ziehmliches Rätsel

    naja, die 0 und 1 hast du ja schon als schalter im ram liegen. bildlich gesprochen schaltet die cpu die leitungen so um, dass diese zu dem ersten speicherwort deines programmes zeigen. diese nullen und einsen liegen dann wieder an den schaltern des prozessor an und veraendern so den stromfluss innerhalb von diesem.

    ganz ist aber ganz grob und mit dem auslassen von 1000 zwischenschritten 😉



  • such mal nach opcodes.



  • Hallo Anfänger '08, ich bin mir jetzt nicht zu 100% sicher, ob das alles so ganz richtig ist was ich dir hier jetzt schreibe und, ob ich damit jetzt auch wirklich deine Frage beantworte, aber ich hoffe doch das es dir einwenig hilf.

    Als aller erstes ist es richtig zu sagen das der Transistor, die kleinste elektronische Grundeinheit von Schaltungen in einem Rechner sind. Nun fragst du dich sicher, wie so ein Transistor den anliegenden Strompegel in 0 und 1 interpretieren kann, dazu versuch ich dir mal eine Skizze zu "malen"

    U ^                                 ^ U
    [Input] |                                 | [Output]
    	    |                                 |
        5,0-+-------+                 +-------+-5,0
      	  |       |	             |       |
            |       |                 |       |
     (1)    |   H   |                 |   H   |
    	    |       |                 |       | ~> (1)
    	    |       |                 |       |
            |       |                 |       |
        2,4-+-------+------+          |       |
            |%%%%%%%%% 0,4V|          |       |
            |%%%%%%%%%%%%%%+----------+-------+-2,0
            |%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|
            |%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%|
            |%%%%%%%%%%%%%%+----------+-------+-0,8
            |%%%%%%%%% 0,4V|          |       |
        0,4-+-------+------+          |   L   | ~> (0)
     (0)    |   L   |                 |       |
        0,0-+-------+                 +-------+-0,0
    
     % - Makiert den "verbotenen Bereich, sprich
         statischer Stoeabstand
    

    Nun zur Erlaeuterung:
    durch solche Transistoren laeuft in der Regel nur eine Spannung von max. 5Volt. Du siehst auf der linken Seite den Input, also die Spannung die durch ein Transistor durch gehen soll, liegt der Spannungspegel im Bereich 0 - 0.4V, enspricht das einer logischen 0 (es fliesst kein Strom), sollte der Spannungspegel aber hoeher liegen und zwar im Bereich von 2.4 - 5.V, enspricht das einer logischen 1 (es fliesst Strom). Der Bereich zwischen 0.4 - 2.4V ist ein nicht definierter Bereich (der statische Stoerabstand) hier wird also die Spannung nicht interpretiert.
    Analog dazu siehst du auf der rechten Seite den Output, also sprich die Spannung die den Transistor verlaesst, hier liegen die Wertebereiche etwas anders.
    Diese unterschiede zw. Input und Output Bereich, sind dadurch begruendet, dass selbst bei groesseren Spannungsschwankungen oder Stoerungen die Werte richtig interpretiert werden.

    So das sollte zur Funktionsweise eines Transistors genuegen. Die Transistoren werden nun benutzt um so genannte Gatter zu bauen. Darum spricht man auch, wenn man sich auf Hardware-Ebene befindet auch meist von der Gatter-Ebene. Es gibt eine handvoll von Gatter Typen, ich werde sie hier mal Kurz auflisten:
    Die Basisgatter aus denen sich alle anderen bauen lassen:
    AND, OR, NOT

    Und die restlichen:
    NAND, NOR, XOR

    Ein Gatter kann n Eingaenge haben aber immer nur einen Ausgang. Wenn du mehr ueber die Funktionsweise von den jeweiligen Gatter Typen wissen moechtest, Google ist dein Freund. So nun hast du eigentlich schon eine kleine Grundlage um die mit Kombinatorischen Schaltnetzen zu befassen, desweiteren gibt es noch Sequentielle Schaltnetze, aber ich habe jetzt keine Lust hier alles zu schreiben, was ich eigentlich nur sagen wollte ist, das daraus dein ganzer Rechner gebaut ist, das die Register in deiner CPU eigentlich nur aus Flipflops (Sequentziele Schaltungen) besteht ect.

    Hoffe das reicht dir erst mal fuers Erste 😉

    Gruß Tobi


Anmelden zum Antworten