?
Fedaykin schrieb:
Bei uns im Studium hatten wir ein Fach "Microprozessorarchitektur". Dort gings dann schon richtig in Details. Dort wurde uns wirklich näher gebracht wie ein Prozessor aufgebaut ist. Wir hätten Prinzipiell einen simplen 8 Bit Prozessor basteln können. Dazu kamen details wie Pipelining, wie funktionieren Caches etc.... nichts was jetzt für mich absolut relevant wäre. Aber ein Blick über den Tellerand schadet nichts. Zusätzlich haben wir dort auch mal Assembler programmiert.
Ich vermute das ist üblich in den Grundstudiumsvorlesungen (bzw. Bachelor) zu "Technische Informatik" (neben den Betriebssystem-Themen).
Wir haben im TI Praktikum mit TTL Schaltungen angefangen und Abschlussprüfung waren kleinere 6809 Assemblerroutinen auf einem Einplatinen-Dings (keine Hilfsmittel, Zeitlimit, ...)
Aber was mir am meisten gebracht hat, war die microprogrammierbare 4-Bit CPU, die der Praktikumsleiter gebaut hatte. Ziel war es, auf der 12MHz 4-Bit CPU einen 1MHz 6502 in Microcode zu emulieren. Alle Praktikumsgruppen bekamen einige 6502 Opcodes zugeteilt und ein Limit an Microcode-Zeilen. Ziel war eine möglichst optimierte Emulation. Durch die 4-Bit war man gezwungen, alle 8Bit Ops des 6502 sequentiell zu zerlegen. Die Zugriffe auf 6502 Register waren aufwendige RAM Zugriffe der Micromaschine. Es war nicht leicht, das Limit zu unterbieten - man musste auf möglichst viel Parallelität im horizontalen Microcode achten.
Das Ding war mit TTLs, GALs und PALs realisiert (heute würde sicher ein CPLD reichen) - allerdings nur einmal, wir Studis haben mit der Software-Emulation der Micromaschine getestet.
Keine Ahnung, ob es der Praktikumsleiter wirklich geschafft hat, das irgendwann mal in einen C64 einzustöpseln (war sein Ziel). Heutzutage ist ein kompletter C64 im FPGA ja ein Klacks, selbst ein Amiga500 mit Custom Chips und MC68k passt in einen fetten FPGA...
Fedaykin schrieb:
Dazu kamen details wie Pipelining, wie funktionieren Caches etc.... nichts was jetzt für mich absolut relevant wäre. Aber ein Blick über den Tellerand schadet nichts.
Pipelining, ILP, Branchprediction, Register Renaming, Reorder Buffer, Caching etc. ist auch für Softwareentwickler sehr relevant, wenn man HPC Code entwickeln muss. Ohne die TI-Grundlagen und Rechnerarchitektur-Vorlesungen im Hauptstudium würde ich gar nicht verstehen, was Intels Vtune alles ausspuckt, oder wozu man PTLsim nutzen kann (oder AMDs Codeanalyzer...).
OK, für >95% aller Software ist diese Art der Performance-Optimierung völlig egal. Sonst hätten ja Java und .Net-Sprachen oder gar die vielen Skriptsprachen gar keine Anwendungsfelder.