Alternative Rechnerarchitekuren (Teil 1)

Einführung in Reconfigurable Computing

Bekannte Formen von programmierbaren Rechnern sind der Von-Neumann-Rechner und die Programmable Logic Devices (PLD). Das folgende Beispiel verdeutlicht, worin der wesentliche Unterschied dieser Architekturen in Bezug auf die Programmausführung besteht.

Das Problem besteht in einer NOR-Funktion (Verneinung des logischen ODER) von binärwertigen Signalen an einem Eingang mit 8-Bit-Breite. Bild 1 zeigt dies als Endlosprogramm, formuliert in der Sprache C. Die NOR-Funktion der acht Eingänge (es wird vorausgesetzt, dass unsigned char einer Datenbreite von 8 Bit entspricht) wird am Ausgangsport (Adresse 0x2000), Bit 0 dargestellt.

Die Übersetzung in eine fiktive Assembler-Sprache (für eine typische RISC-Architektur, etwa MPM3 aus Artikel "Grundlagen der RISC-Architektur") in Bild 2 ergibt natürlich eine Endlosschleife.

Sie zeigt aber insbesondere, dass dieses Programm, so klein es ist, sehr zergliedert wird. Das würde für eine superskalare Ausführung große Probleme bereiten, auf einen entsprechenden Instruction Level Parallelism zu kommen.

Abgesehen von der starken Zergliederung der Assembler-Übersetzung in diesem Beispiel (Bild 3) nimmt das Durchlaufen einer Programmschleife einige Takte in Anspruch: Für eine RISC-Architektur mit theoretisch einer Instruktion/Takt benötigt die Programmschleife (also ohne Block L0) sechs (ELSE-Zweig) beziehungsweise sieben (IF-Zweig) Takte im Minimum. Eine Eingangsänderung wird erst nach fünf Takten minimal, nach zwölf Takten maximal am Ausgang sichtbar, bei 100 MHz Taktfrequenz also im Mittel nach 85 plus minus 35 ns. Die Kontrollflussverzweigungen und die Datenabhängigkeiten verhindern übrigens in diesem Fall eine Beschleunigung durch superskalare Ausführung.