Ekkehard Flender, Stabsabteilung, Unternehmensplanung der Thyssengas GmbH, DuisburgMikrocodierung - Mikros und Minis

30.03.1979

Verfolgt man einschlägige Veröffentlichungen zu diesen Schlag-(oder auch Reiz-)wörtern, und dies einschließlich der Anzeigen und Produktinformationen der Hersteller, so erscheint die Begriffsverwirrung beträchtlich. Der Grund dafür ist ohne Zweifel, daß sich aus den schier unerschöpflichen Kombinationen aus Preisen, Leistungen und Anwendungsbereichen immer neue Definitionen ergeben, ja sich geradezu aufdrängen. Dies gilt leider auch dann, wenn ein Hersteller meint, einem neuen Produkt, auch wenn es nicht unbedingt nötig ist, in jedem Falle auch eine neue Anwendungsdefinition geben zu müssen, um sich von der Konkurrenz mit der Begründung des "Neuen" absetzen zu können, und sei es auch nur für kurze Zeit. Dies ist sicher legitim, aber die Folgen für den Anwender ... vergleiche oben.

Obgleich natürlich die Übergänge fließend sind, lassen sich Abgrenzungen vornehmen, wenn von der Einsatzweise in der Praxis ausgegangen und dabei berücksichtigt wird welche Qualifikationen der Anwender velangt um mit dem fraglichen Gerät in vertretbarer Zeit vertraut zu sein. In diesem Kommentar soll versucht werden, die wichtigsten Begriffe allgemein verständlich zu erläutern. Die wird zwar bei so manchen EDV-Profis gleichsam offene Türen einrennen; indessen geben aber die jüngste Umfrage der CW zum Thema des Begriffs "Mikrocode" sowie einschlägige anderweitige Erfahrungen sehr zu denken.

Wie ein Mikrocomputer im Prinzip funktioniert läßt sich am einfachsten am Beispiel der programmierbaren Taschenrechner vom Typ Hewlett-Packard (HP) 67/97 oder der Texas-Instruments erläutern (alle Firmennamen sind natürlich nur Beispiele).

Bei allen Mikrocomputern ist es notwendig, dem Rechner jeden Schritt, der zu tun ist, explizit vorzugeben. Das bedeutet, daß man beispielsweise angeben muß, wo welcher Wert gespeichert werden und was damit später geschehen muß. Diese Methode der Programmierung verlangt, daß der Benutzer genaue Klarheit darüber hat, wie der Mikrocomputer die einzelnen Programmschritte verarbeitet. Zum Beispiel: Um zwei Zahlen zu addieren, ist folgendes Programm erforderlich (HP 67)

R/S Stop für Eingabe der Zahl 1

STO 0 Speicherung der Zahl 1 im Speicher 0

R/S Stop für Eingabe der Zahl 2

STO + 0 (Addition Zahl 2 + Zahl 1) im Speicher 0

Das Ergebnis befindet sich jetzt im Speicher 0.

Die Anzeige des Ergebnisses erfolgt durch

RCL 0 (Abruf Speicher 0).

Dies ist so ziemlich das einfachste Beispiel, das zum Thema der Mikroprogrammierung genannt werden kann. Im übrigen ist natürlich klar, daß sich dieses Beispiel auch auf größere (und sehr viel größere) Mikrocomputer anwenden läßt, so auf Wang-Serien 400 bis 720, wenn auch mit zumindest äußerlich) anderer Codierung. Das führt nun zum Begriff des Mikrocodes.

Man kann definieren, daß ein Mikrocode die einem beliebigen programmierbaren Rechner am nächsten stehende Anweisung ist, die der Anwender erteilen kann. Eine solche Anweisung wird bei der Ausführung nicht mehr weiter übersetzt, sondern lediglich in ihrer binären Form interpretiert.

Da ein Rechner intern immer im Dualsystem arbeiten muß, verwendet man für die Darstellung von Mikrocodes das Hexadezimalsystem. Der Grund liegt allein in der Zweckmäßigkeit, auch eine Dezimalzahl wird nämlich, wie leicht einzusehen ist, numerisch schnell viel zu groß. als daß man auch hier noch von Anschaulichkeit oder Übersichtlichkeit sprechen könnte. Die Hexadezimalzahl A1FE7F81C6 beispielsweise läßt sich in Dezimalschreibweise im allgemeinen nur noch in Exponentialdarstellung unter Verlust an gültigen Ziffern wiedergeben (im Dualsystem wären dies 40 Stellen). Für die Hardware-Konzipierung ist es im übrigen äußerst nützlich, daß die Basis 16 wiederum eine Potenz von 2 ist, was die notwendige Interpretation von Hexadezimalcodes als Dualcodes erleichtert.

Nun wird allerdings - wiederum aus rein praktischen Gründen - in den meisten Fällen ein solcher Hexadezimalcode mit einer leichter lesbaren Dezimaldarstellung, vor allem aber mit einem symbolischen Namen versehen, um unter Zuhilfenahme der mnemotechnischen Veranschaulichung dem Benutzer die Codierung zu erleichtern (Mnemotechnisch heißt soviel wie "Ieichter einen Bezug herstellen"). Dabei ist jedem symbolischen Namen ein eindeutiger hexadezimaler Mikrocode intern zugeordnet, der üblicherweise beim Ausdruck eines Programms mit angezeigt wird. Ein einfaches Beispiel: Habe etwa die Anweisung zur Abrufung (Recall) eines Registerinhalts den Code 0D, und das Register die Adresse 185, so lautet der 'Mikrocode 0DB9. Da dies für Recall 185 steht, kann der symbolische Name REC 185 oder auch REC (REG A, A = 185) sein.

Auch Kombinationen von Mikrocodes, die einem Namen zugeordnet sind, sind bei modernen Rechnern üblich und bestimmen in nicht geringem Maße deren Leistungsfähigkeit. In diesem Falle bewirkt ein solcher symbolischer Name die Abarbeitung eines in der Mikroelektronik festverdrahteten, zumeist kleinen Programms. Letzteres ist typisch für Assembler-Sprachen die man damit als symbolische Programmsprachen und nicht eigentlich als Maschinensprachen bezeichnen muß. Hier beginnt also schon das "Absetzen" von der Mikroprogrammierung in Richtung auf weniger maschinenorientierte Programmierung.

Sobald mehrere Mikrocodes unter einem Begriff zuammengefaßt werden, hat das natürlich Einfluß auf die Verarbeitungsgeschwindigkeit. So ist im direkten Vergleich ein reines Mikroprogramm etwa um den Faktor 3 schneller als ein Assembler. Anders ausgedrückt: Ein Computer, der lediglich eine reine Mikroprogrammierung zuläßt, würde eine weniger aufwendige und damit billigere Technologie benötigen, um zu gleichen Verarbeitungsgeschwindigkeiten zu kommen als wesentlich teurere Fabrikate.

Es ist einleuchtend, daß die Mikroprogrammierung dem Anwender den breitesten Spielraum in der Programmierung läßt. So ist es beispieIsweise möglich, für ein spezielles Anwendungsgebiet optimale Programme zu erstellen, ohne sich an irgendwelche Einschränkungen (zumeist auf syntaktischem Gebiet) halten zu müssen, wie es sonst meistens der Fall ist. Andererseits erfordert diese Art der Programmierung sehr viel Erfahrung und genaue Kenntnis des jeweiligen Rechners; wenn ein neuer Rechner angeschafft wird, entstehen dadurch vergleichsweise sehr viel größere Umstellungsprobleme als bei anderen Programmierungsformen. Außerdem kann das Verändern von Programmen zu bedeutenden Komplikationen führen.

Die eingangs angeschnittene Frage der Abgrenzung zwischen Mikros und Minis kann, wenn man die vorgetragenen Begriffe oder Argumentationen zugrundelegt, nun recht einfach erfolgen.

Ein ausschließlich mikroprogrammierbarer Computer wäre danach ein Mikro, jeder andere unterhalb des Bereichs der traditionellen Großrchner ein Mini. Insbesondere also handelt es sich nicht um eine Frage der Größe oder mit gewissen Einschränkungen der Leistungsfähigkeit. So ist etwa der Wang-Rechner 720 ein reiner Mikrocomputer (bis 512 KB ausbaubar), während der HP-Rechner 9835 (bis 256 KB), mit Basic und zum Teil Assembler, eindeutig ein Minicomputer ist.

Eine besonders deutliche Abgrenzung besteht darüber hinaus in der Frage der Nützlichkeit für den Anwender und hier vor allem, wie schnell und problemlos nach nur kurzer Einarbeitung Programme erstellt werden können: Hier sind die modernen Minis eindeutig im Vorteil. im übrigen darf der Begriff "Mini" nicht zu wörtlich genommen werden; die sogenannten Megaminis sind schon eher - je nach Ausbaustufe - im Grenzbereich zu den Großcomputern anzusiedeln zumal hier in aller Regel höhere Programmsprachen wie Fortran oder Cobol zur Verfügung stehen. Wenn es sich dann noch um ein Gerät handelt, das dem Benutzer zusätzlich einen frei programmierbaren Mikrobereich zur Verfügung stellt (dieser dann natürlich im reinen Mikrocode zu programmieren), ist eine Beurteilung nur noch nach anderen Kriterien, wie Verfügbarkeit von mehreren Programmsprachen und deren Effizienz möglich.