Grundlagen der RISC-Architektur

Typische Operanden und Befehle

Zur Festlegung des Befehlssatzes der RISC-I-Architektur musste man Programme auf zwei Charakteristika hin untersuchen: Typische Operanden und typische Befehle in C oder PASCAL sowie deren Übersetzung in Maschinensprache. Das RISC-I-Projekt zeigt demnach die grundsätzliche Wechselwirkung von Rechnerarchitektur und Compiler. Die acht Programme, die zur Analyse herangezogen wurden, bestanden aus:

  • P1: Pascal-Compiler, geschrieben in Pascal

  • P2: Unterprogramm in einem Entwurfssystem

  • P3: Pascal Prettyprinter

  • P4: Vergleichsprogramm zum Vergleich zweier Dateien

  • C1: C-Compiler, geschrieben in C

  • C2: Programm zum Zeichnen von VLSI-Masken-Layouts

  • C3: Programm zum Formatieren von Text

  • C4: Sortierprogramm unter Unix

Die typischen Programme der 90er Jahre, Textverarbeitung und Grafikprogramme, sind sicher unterrepräsentiert, die Mischung entspricht eher dem Standard von 1980. Die folgende Tabelle zeigt die dynamische Häufigkeit der Operanden im Code.

Dynamische Häufigkeit der Operanden in den Testprogrammen

Operandentyp

P1

P2

P3

P4

C1

C2

C3

C4

Durchschnitt

Angaben in Prozent

Ganzzahlige Konstante

14

18

11

20

25

11

29

28

20

Skalare

63

68

46

54

37

45

66

62

55

Felder / Strukturen

23

14

43

25

36

43

5

10

25

Die Unterstützung für die Operandentypen durch die Maschinenbefehle kann in mehrfacher Form erfolgen: Floating-Point-Befehle (hier nicht aufgeschlüsselt) sowie Adressierungsformen bieten hier eine Reihe von Möglichkeiten.

Die Hochsprachenkonstrukte in diesen Programmen lassen sich in verschiedene Kategorien einteilen: Zuweisungsbefehle (assign), Kontrollflussstrukturen (if, case, for, with, loop, while) und Prozeduraufrufe (call/return). Die in den Programmen auftretenden Häufigkeiten sind in folgender Tabelle dargestellt.

Dynamische Häufigkeit von Hochsprachenanweisungen in den Testprogrammen

Befehlstyp

P1

P2

P3

P4

C1

C2

C4

C4

Durchschnitt Pascal

Durchschnitt C

Angaben in Prozent

assign

39

52

35

53

22

50

25

56

45

38

if

35

30

36

16

59

31

61

22

29

43

call

15

14

16

15

6

17

9

16

15

12

with

2

0

5

13

2

2

3

5

5

3

loop

5

5

5

4

9

0

1

1

5

3

case

4

0

1

0

2

0

0

0

0

kleiner 1