Ergebnis 1 bis 20 von 21

Thema: [PCN] Der Prozessor - Sammel und Diskussionsthread

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    Ok, dann fangen wir am besten erst einmal mit ein paar grundlegenden Dingen an.

    Wir muessen uns, wenn wir einen Prozessor bauen bzw emulieren wollen, natuerlich fragen, was genau ein Prozessor ist, und worin seine Aufgabe besteht. Diese auf den ersten Blick triviale Frage enthaellt aber schon sehr viel, ueber das es genauer nachzudenken gilt.

    Der Wikipedia zu Folge ist ein Prozessor
    Zitat Zitat
    eine Recheneinheit eines Computers, der per Software andere Bestandteile steuert.

    Die grundlegende Eigenschaft des Prozessors ist die Programmierbarkeit, das Verhalten des Prozessors wird dabei von Programmen in Form von Maschinencode bestimmt. Hauptbestandteile des Prozessor sind die Register, das Rechenwerk (ALU), das Steuerwerk und der Speichermanager (MMU) der den Arbeitsspeicher verwaltet. Zu den zentralen Aufgaben des Prozessors gehören arithmetische Operationen, das Lesen und Schreiben von Daten im Arbeitsspeicher, sowie das Ausführen von Sprüngen im Programm.
    Aus dem hier schoen zusammengefassten folgen somit einige Dinge:

    * Er muss aus dem Hauptspeicher lesen koennen
    * Er muss in den Hauptspeicher schreiben koennen
    * Er muss einen bestimmten Befehlssatz kennen
    * Er muss Daten verarbeiten koennen
    * Er muss ein beliebig ersetzbares, variables Programm abarbeiten können.

    Wie man dem Artikel und seinem logischen Denkvermoegen sowie seinem Grundwissen entnehmen kann, verfuegen verschiedene Prozessoren ueber verschiedenste Parameter, auf die wir uns im folgenden einigen muessen. Bei einigen Punkten ist sicherlich nicht jedem klar, was die Begriffe bzw Konzepte bedeuten. Kleine Erklaehrungen und Tutorials sind also wuenschenswert. Wer etwas weiss laesst die anderen einfach daran teilhaben, und wer etwas wissen will, fragt einfach.

    * Wieviel Bit soll unsere Architektur haben
    * Wieviele Register hat unser Prozessor
    * Wollen wir einen einfachen oder einen komplexen Befehlssatz (RISC / CISC)
    * Welche Befehle braucht ein Prozessor unbedingt
    * Welche Byteordnung haben Multibytedatentypen
    * Wie repraesentieren wir komplexere Datenstrukturen, wie z.B. Gleitkommazahlen
    * Soll unser System ein Multiprozessorsystem sein
    * Wird es Interrupts geben, und wie behandelt man sowas
    * Was sind Ports und wie repraesentieren wir diese
    * uvm.

    Als naechstes waere zu klaehren, wie die Implementierung des Prozessors erfolgen soll. Natuerlich waere es schneller, wenn unser Prozessor ein 1:1 Nachbau eines bestehenden Prozessors waere, und man einfach den Maschienencode durchschleifen koennte. Dann koennte man allerdings nicht davon sprechen, einen eigenen Prozessor zu haben, und waere an die Hardwarevorgaben anderer gebunden. Daher denke ich, ist es klar, wie unser Prozessor zu funktionieren hat. Unser Prozessor ist im Grund eine endlosschleife im zu schreibenden Interpreter (unserer VM), die einen Maschinencodebefehl und ggf dazugehoerige Parameter (z.B. aus einer Datei, oder spaeter unserem Arbeitsspeicher) ausliest, in einer internen Funktionstabelle nachsieht, was der Code zu bedeuten hat, dementsprechend bestimmte Aktionen durchfuehrt und sich danach dem naechsten Code zuwendet. Systeme wie den BUS, FPU oder die direkte Speicherkommunikation wuerde ich einfach die VM emulieren lassen, so dass der Prozessor nach aussenhin als Blackbox betrachtet werden kann. Eine solche Vorgehensweise ist natuerlich langsamer, bietet uns aber alle freiheiten, die wir wollen. Geschwindigkeit ist also ersteinmal nicht das entscheidende Problem. Diese kann eventuell spaeter ueber optimierte Routinen noch maximiert werden.

    Wie man an diesem Konzept bereits sieht, ist die Kommunikation mit dem Hauptspeicher untrennbar mit dem Prozessor verbunden, denn wo sollte das Programm stehen, wenn nicht im Arbeitsspeicher. Ich schlage vor, dass wir fuer den Anfang den Arbeitsspeicher als eine fixerte Datei dem Prozessor ueber die VM zufuehren und am Ende des Programmes den Arbeitsspeicher durch die VM in eine Datei schreiben lassen, welche wir dann per Hand auswerten koennen.

    Ich freue mich auf euere Ideen und Eindruecke zum bereits gesagten und auf viele weitere Vorschlaege und Aspekte, die es noch zu bedenken gibt. Die Diskussion ist eroeffnet.

    Geändert von Ineluki (12.04.2006 um 04:47 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •