DE2436963A1 - Verfahren und vorrichtung zur mikroprogrammierung in der zentraleinheit eines digitalrechners - Google Patents

Verfahren und vorrichtung zur mikroprogrammierung in der zentraleinheit eines digitalrechners

Info

Publication number
DE2436963A1
DE2436963A1 DE2436963A DE2436963A DE2436963A1 DE 2436963 A1 DE2436963 A1 DE 2436963A1 DE 2436963 A DE2436963 A DE 2436963A DE 2436963 A DE2436963 A DE 2436963A DE 2436963 A1 DE2436963 A1 DE 2436963A1
Authority
DE
Germany
Prior art keywords
field
memory
register
command
variable field
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE2436963A
Other languages
English (en)
Inventor
Alfred W England
Louis M Krasny
Edward F Narey
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xerox Corp
Original Assignee
Xerox Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xerox Corp filed Critical Xerox Corp
Publication of DE2436963A1 publication Critical patent/DE2436963A1/de
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/226Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Description

Xerox Square, Rochester, New York 14644, USA
Verfahren und Vorrichtung zur Mikroprogrammierung in der Zentraleinheit eines Digitalrechners
Die Erfindung betrifft ein Verfahren zur Verwendung von in einem Steuerspeicher eines Digitalrechners eingeschriebenen Mikroprogrammen zur Durchführung der Adressierung variabler Felder.
Die Erfindung betrifft weiterhin eine Digitalrechner-Anordnung zur Durchführung des erfindungsgemäßen Verfahrens mit einem Hauptspeicher zur Speicherung von Befehlen fester Länge und von Datenworten in Speicherplätzen* die feste Grenzen aufweisen, welche jeweils der Länge der Worte entsprechen und mit einer Feldadressierungseinrichtung.,
509808/0824
Für den System-Programmierer tritt in der Datenverarbeitung häufig das Problem auf, mit Feldern variabler Größe zu arbeiten, und zwar innerhalb von Worten, weil in einer typischen Ausfuhrungsform von peripheren Geräten Daten verschiedener Wortlängen und mit verschiedenen Formaten verlangt werden. \ Bei Prozeßsteuersystemen im Echtzeitbetrieb tri-tt dieses Problem in verstärktem Maß auf. Die verschiedenen gerätetechnischen Anpassund Steuereinheiten, die direkt vom Rechner gesteuert werden, sind in ihren typischen Ausführungsformen derart ausgebildet, daß sie unter Verwendung von Steuerworten verschiedene Funktionen ausführen, wodurch die Leistungsfähigkeit der gerätetechnischen Einrichtung auf ein Optimum gebracht wird, anstatt eine wirksame Anpassung der Peripherie an den Rechner -vorzunehmen» Diese von peripheren Einrichtungen verwendeten Steuerworte weisen häufig eine variable Größe auf und sind darüber.hinaus noch in Unterfelder aufgegliedert, die ihrerseits wiederum variabel sind. Außerdem muß ein Rechner, der im Echtzeitbetrieb arbeitet, diese Operationen mit variablen Feldern in einem Minimum an Zeit ausführen. Diese Operationen mit variablen Feldern werden gewöhnlich durch Programm-Unterroutinen ausgeführt, welche die variablen Felder aus den Standard-Speicherworten herausholen, oder es können auch gerätetechnische Anpas s einheit en verwendet v/erden. Beispiele für derartige Einheiten sind in den US-Patentschriften 3 680 O58 und 3 43O 202 beschrieben.
Ein in diesem Zusammenhang·, bei der Programmierung allgemein auftretendes Problem, welches" jedoch für den Echtzeit-Programmierer von besonderer Bedeutung ist, besteht darin, eine kurzzeitige Speicherung für Zwischenwerte mit hohem Wirkungsgrad zu schaffen, während ein Programm läuft, und diese Zwischem^erte abzuspeichern, während sich die zentrale Verarbeitungseinheit verzweigt oder von dem einen oder dem anderen Programm unterbrochen wird. Diese Zwischenwerte werden geitföhnlich in einem
509808/0824
SenküLock gespeichert, cLho in einem Block, dessen Länge variabel ist und bei welchem zwischen einzelnen Speicherworten nachträglich eine Zwischenspeicherung vorgenommen werden kann, wodurch sich die Länge des Blockes vergrößert. Ein derartiger Datenblock wird gewöhnlich in einem bestimmten Bereich im Hauptspeicher eingeschrieben,, der für diesen Zweck reserviert ist, wobei das erste oder das letzte Wort in diesem Speicherblock in geeigneter Weise angezeigt wird und einige Befehle in der Befehlsliste zusammen mit der erforderlichen gerätetechnischen Einrichtung vorgesehen sind, um diese Anzeige sowie den Zugriff zu den Worten in diesem Block handhaben zu können* Ein Senkblock wird auch oft als Rückstellstapel "bezeichnet.
Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren und eine Vorrichtung der eingangs genannten Art zu schaffen, durch welche die Adressierung variabler Felder in einer digitalen Datenverarbeitungsanlage im Hinblick auf einen Echtzeitbetrieb mit besonders geringem Aufwand an Gerätetechnik einerseits und an Maschinenzeit andererseits gewährleistet ist«. ' ~ . ■ .
Zur Lösung dieser Aufgabe sieht die Erfindung vor, daß zunächst ein Befehl zur Adressierung eines variablen Feldes vom Hauptspeicher aufgerufen wird, daß dieser Befehl dann in ein internes Register der,zentralen Verarbeitungseinheit des Digitalrechners geladen wird, daß sich das Programm dann in ein Mikroprogramm .im Steuerspeicher verzweigt, welches der Funktion dieses Befehls entsprÜit, daß dann ein Datenwort fester Länge aus dem Hauptspeicher aufgerufen wird, daß dieses Datenwort in ein erstes· und ein zweites internes Register der zentralen Verarbeitungseinheit geladen wird, daß das variable Feld in dem ersten Register rechtsbündig angeordnet wird, daß die Funktion des Befehls in dem variablen Feld im ersten Register abgearbeitet wird, daß das variable Feld in diejenige Stellung surückverschoben wird, die.es vor der rechtsbündigen Anordnung eingenommen hat, wenn dieser Befehl ein
50980 87 0824
Speicherbefehl ist, und daß dann der Inhalt des zweiten Registers an seine ursprüngliche 'Stelle in dem Hauptspeicher gebracht wird, wenn der Befehl ein Speicherbefehl ist.
Eine besonders bevorzugte Anordnung zur Durchführung des erfindungsgemäßen Verfahrens zeichnet sich dadurch aus, daß eine logische Schaltimg vorgesehen ist,' um mit den Worten fester Länge logische Operationen auszuführen, daß weiterhin Register vorhanden sind, welche mit der logischen Einrichtung, derart gekoppelt sind, daß sie die V/orte fester länge aufnehmen- können, und"zwar jeweils vor, während und nach der Ausführung der logischen Operationen mit den Worten durch die logische Einrichtung, daß weiterhin eine Anpasseinrichtung mit den Registern und mit der Speichereinrichtung gekoppelt ist, um die V/orte fester Länge zwischen diesen beiden Einheiten zu übertragen, und daß eine Steuerspeichereinrichtung vorgesehen ist, welche auf die in den Registern geladenen Befehlsworte anspricht, um einen einzelnen Befehl, der ursprünglich aus der Hauptspeichereinrichtung übertragen wurde, in eine Folge von Mikrobefehlen zu zerlegen, die intern in der Steuerspeichereinrichtung gespeichert sind, um die Befehle auszuführen, welche die Funktion der Adressierung des variablen Feldes verlangt und um weiterhin die Mikrobefehlsfolge auszuführen, wobei die Steuerspeichereinrichtung mit der Anpasseinrichtung und mit der Logikeinrichtung gekoppelt ist, um die gewünschte Funktion in bezug auf das variable Feld zu erfüllen.
Weitere bevorzugte Ausführungsformen und vorteilhafte Weiterbildungen der Erfindung ergeben sich aus den jeweiligen Unteransprüchen.
Ein wesentlicher Vorteil des Erfindungsgegenstandes besteht darin, daß in einem zu einer Einheit zusammengefaßten System
509808/0 8 24
aus Gerätetechnik und Systemprogrammierung zugleich die Möglichkeiten zur Handhabung eines Senkblöckes und einer Adressierung variabler Felder zusammengefaßt sind.
Gemäß der Erfindung ist weiterhin der Vorteil erreichbar, daß sowohl der gerätetechnische Aufwand als auch die Anzahl der Befehle vermindert werden können, und zwar durch eine- besondere Wechselwirkung zwischen Gerätetechnik und'Betriebssystem der digitalen Datenverarbeitungsanlage. Gemäß der Erfindung werden nämlich die in Frage stehenden Funktionen in einem Steuerspeicher einer Mikroprogrammier-Zentralverarbeitungseinheit ausgeführt, die im wesentlichen aus Karten besteht, welche einen Speicher bilden, aus dem nur gelesen werden kann»
Ein weiterer Vorteil des Erfindungsgegenstandes liegt darin,' daß dadurch erhebliche Kosten eingespart werden können, daß die gewöhnlich zur Adressierung variabler Felder und zur Handhabung von Senkblöcken erforderliche gerätetechnische Einrichtung tie it gehend überflüssig wird.
Außerdem wird die Laufzeit verkürzt, da ein erfindungsgemäßes' Mikroprogramm in einem Steuerspeicher aufgrund der geringeren Zugriffszeit und der mit höherem Wirkungsgrad arbeitenden Kodierung schneller läuft als ein entsprechendes Programm im " Hauptspeicher. -
Eine Unterbringung von Daten im Hauptspeicher kann gemäß der Erfindung ebenfalls mit besonders gutem Wirkungsgrad erfolgen. Um beispielsweise eine Reihe von η-Bit-Elementen im Hauptspeicher unterzubringen, braucht der Programmierer lediglich an einer beliebigen Stelle im Speicher einen Block zu definieren, welcher eine Länge von η Bits hat. Dann'kann das Programm gemäß der Erfindung Daten im Hauptspeicher ohne Berücksichtigung von Wortgrenzen in diesen Block einschreiben. Andererseits wird nach demselben Verfahren ein direkter Zugriff zu einem beliebigen Element in dieser Reihe ermöglicht.
509808/0824
_6_ 2U6963
Elementenreihen, wie sie nach dem erfindungsgemäßen Verfahren erzeugt werden können, können besonders zweckmäßig dadurch verarbeitet werden, daß ein Elementenzähler als Schleifenendsteuerung vorgesehen wird. Dann läßt sich ein Programm schreiben, mit welchem ein Zugriff zu jedem Element in der Reihe besteht, wobei eine Zählerüberlaufanzeige vorgesehen ist, die abgefragt wird, und wobei das Ende der Reihe entsprechend festgelegt ist. Gemäß der Erfindung ist somit weiterhin die Möglichkeit geboten, bei der Ausführung solcher Operationen mit Bytes zu arbeiten.
Die Erfindung erleichtert weiterhin das Anlegen von komplizierten Tabellen, wobei der Hauptspeicher mit gutem Wirkungsgrad ausgenutzt wird und ein direkter Zugriff zu einem beliebigen Element innerhalb solcher Tabellen besteht. Dies ist möglich, da die Feldadressierungsbefehle in Verbindung mit einer Regisber-Indizierung arbeiten. Wenn somit beispielsweise beliebige η Bits aus der Gesamtheit der Worte in einer Tabelle überprüft v/erden sollen, wird eine Feldadressierungsbeschreibung gebildet, um auf diejenigen η Bits im ersten Wort in der Tabelle hinzuweisen, und das Index-Register wird durch die Anzahl der Worte in der Tabelle incrementiert. Somit läßt sich ein Programm ausführen, welches eine beliebige Gruppe von Bits in einer Tabelle ansprechen kann.
Die !fehlersuche in den entsprechenden Programmen ist besonders einfach, da die Feldbeschreibungsworte für ein gesamtes Programm zweckmäßigerweise in einem speziellen Teil des Programms untergebracht- werden können, wodurch es einfacher wird zu bestimmen, in welchem Teil des Hauptspeichers zu einer vorgegebenen Zeit eingeschrieben wird oder aus welchem Teil gerade ausgelesen itfird. Dies kann besonders nützlich sein, wennibhler in Programmen gesucht werden, die nicht laufen, und diese Eigenschaft ist weiterhin dann mit besonderem Vorteil anwendbar, wenn gewährleistet sein muß, daß geschützte Bereiche im Hauptspeicher unangetastet geblieben sind.
509808/0824
Die Programme lassen sich auch leicht ändern, was bei jeglicher nachträglicher Programmänderung von besonderem Vorteil ist. Weiterhin ist es besonders einfach, Tabellen von einer Stelle im Hauptspeicher an,eine andere Stelle zu verschieben, die Länge der verarbeiteten Elemente zu ändern oder die Anzahl der Elemente pro Tabelle zu erhöhen, weil' dazu lediglich die entsprechenden Bits in einer hierzu vorgesehenen Feldbeschreibung zu ändern sind. Das übrige Programm bleibt unveränderte Anstatt ein Programm- neu zu schreiben, läßt sich^mä-3 der Erfindung, somit stattdessen eine einfache Änderung der Feldbeschreibungsworte durchführen.
Die Erfindung wird nachfolgend beispielsweise anhand der Zeichnung beschrieben; in dieser zeigen:
Fig. 1 das Format der Feldadressierungsbefehle, Fig«, 2 das Format der Feldbeschreibungen,
Fig. 3 eine Liste der Möglichkeiten,, welche vorgesehen werden ' können, um die effektive Adresse zu berechnen,
Fig. 4 eine Liste der Möglichkeiten zur Incrementierung,
Fig. 5 eine Liste der Möglichkeiten zur Tndizierung,
Fig. 6 eine Liste der Feldadressierungsbefehle (Operationskodes),
Fig. 7 ein Blöckdiagramm der gerätetechnischen Einrichtungen der-Zentraleinheit,
Fig. 8 die vier verschiedenen.Möglichkeiten des Datenaustausche, welche bestehen, wenn das I-Begi'ster geladen wird, und
Fig.9A bis 9K Flu3diägramme des Feldadressierüngs-Mikropro-
gramms.· ■ . '■
'50980870824
_8„ 2 Λ 3 6 9 6
Zwei Typen von Befehlsworten bilden die Basis für dieses System der variablen Feldadressierung. Gemäß Fig. 1 bilden die Adressenbefehle den Operationskode, den Incrementierungs- und den Indizierungsmodus und weisen auf die Feldbesciareibungen hin. Die Feldbeschreibungen enthalten gemäß Fig. 2 die Adresse desjenigen Bits innerhalb des Wortes im Hauptspeicher, bei welchem dieses spezielle variable Feld beginnt und geben die Anzahl der Felder und die Anzahl der Bits pro Feld in dieser speziellen Heihe an. Ein vollständiger Satz von Möglichkeiten der indirekten Adressierung und der Register-'Indizierung sind vorgesehen, so daß eine Steuerung ausgeübt werden kann, auf die von vielen Feldbeschreibungen zurückgegriffen werden kann, und zwar durch einen Feldadressierungsbefehl und auf welche auch ein vielfältiger Indizierungsmodus anwendbar ist, und zwar in bezug auf die ausgewählten Feldbeschreibungen«, Das resultierende System liefert eine beträchtliche Geschwindigkeit und Flexibilität in der Verarbeitung von Datentabellen, die ungewöhnliche Formate aufweisen.
Die effektive Adresse eines Feldadressierungsbefehls ist die Adresse einer Feldbeschreibung. R, I, X, S und die Verschier bungsfeider werden dazu benutzt, die effektive Adresse gemäß Fig. 3 zu berechnen. Wenn das R-Bit und das S-Bit beide gleich Null sind, ist die effektive Adresse gleich dem Wert in dem Verschiebungsfeld (d) des Befehls» Wenn das R-Bit gleich Eins ist, ist die effektive Adresse gleich dem Wert des Programmzähiers -(P) plus dem Inhalt der Verschiebung. Wenn das I-Bit gleich Eins ist, wird die effektive Adresse als eis indirekte Adresse behandelt. Dann ist die effektive Adresse der V/ert an derjenigen Stelle, deren Adresse gleich der Verschiebung ist. Wenn das X-Bit gleich Eins ist, ist die effektive Adresse gleich dem Wert in dem Index-Register #1 (X) plus der Verschiebung.
509808/082
Dies wird als "Nachindizierung" bezeichnet. Wenn das S-Bit gleich Eins ist, ist die effektive Adresse gleich, dem Wert der Verschiebung, plus dem Wert im Index-Register #2 (B). Dies wird als "Vorindizierung" bezeichnet. Die Vorindizierung wird verwendet, wenn die effektive Adressenberechnung eine Indizierung erfordert, bevor "die indirekte Adresse berücksichtigt ist. Bei der Nachindizierung.; wird der Inhalt, des Index-Registers addiert, nachdem die indirekte Adresse berechnet ist. Alle möglichen Kombinationen der effektiven Adressenberechnung sind in der Pig. 3 dargestellt. SD bezieht sich auf die Verschiebung mit Vorzeichenerstreckung.
Das Format der Feldbeschreibungsworte ist in der Fig. 2 dargestellt. In der bevorzugten Ausführungsform enthält das
erste Feldbeschreibungswort die Adresse des Wortes im Hauptspeicher, welcher das Bit mit dem höchsten Stellenwert des variablen Feldes enthält. Die nächsten vier Bits geben .an, welches Bit innerhalb des Speicherwortes das Bit.mit dem
höchsten Stellenwert des Feldes ist. Somit kann bei dieser Ausführungsform ein beliebiges Bit innerhalb eines 16-Bit-Wortes in einem 64—K-Hauptspeicher als Beginn eines variablen Feldes festgelegt werden. Die Bits 4 bis 7 der zweiten Feldbeschreibung geben die Länge des Feldes, an, wobei hierfür bei der vorliegenden Ausführungsform maximal 16 Bit vorgesehen sind. Die Bits 8 bis 15 bilden ein 8-Bit-Zählfeld, welches in Verbindung mit der Selbstincrementierung und der Selbstdecrementierung verwendet wird, um eine Schleifenendsteuerung zu bilden, wenn der Betrieb in einer Elementenreihe beendet ist, oder um eine Anzeige dafür,zu liefern, daß in einer Senkblock-Operation der Block gefüllt ist.
Gerade v/enn die Felder R, I, X und S in Verbindung mit der Verschiebung der Feldadressierungsbefehle verwendet werden, um die effektive Adresse zu bestimmen, werden die Felder RX
509808/0824
~10 " ÜÄ3G963
und SX des ersten Peldadressierungsbefehls dazu verwendet, um den effektiven Beginn der Feldadresse für die Feldbeschreibung zu bestimmen. Diese Möglichkeiten sind in den Fig. 4- und 5 dargelegt. Wenn keine Selbstindizierung vorgesehen ist (SX=OOO) und keine Registerindizierung vorgesehen ist (RX=OOi), dann ist der effektive Beginn der Feldadresse gleich dem Beginn der Feldadresse in der Feldbeschreibung. Wenn eine Selbstincrementierung vorgesehen ist (SX=OO-I), wird die Bit-Adresse in der Feldbeschreibung um die Anzahl von Bits in der Feldlänge incrementiert, und das Zählfeld wird um Eins incrementiert. Wenn die Bit-Ädresse einen Überlauf zeigt, wird der Beginn der Feldadresse um Eins incrementiert, um zu zeigen, daß das erste Bit des variablen Feldes in dem nächsten V/ort im Speicher enthalten ist. Wenn ein Überlauf auftritt, wenn das Zählfeld incrementiert ist, wird die Überlaufanzeige gesetzt. Eine Selbstincrementierung ist als !Teil der inneren Schleife in einem Unterprogramm nützlich, wenn sequentiell {jedes Element in einer Elementenreihe identischer Größe abgearbeitet wird. Wenn vor dem Abarbeiten einer Elementenreihe identischer Größe das Zählfeld eine Zahl enthält, die gleich
2 , minus der Anzahl der Elemente in der Reihe ist, wird dann, wenn die Reihe dadurch abgearbeitet wird, daß Feldadressierungsbefehle mit Selbstincrementierung verwendet werden, die Überlaufanzeige durch den Feldadressierungsbefehl gesetzt, welcher das letzte Element abarbeitet. In diesem Falle kann das Zählfeld dazu verwendet werden, eine Unterprogramm-Schleifenendsteuerung zu liefern, indem die Überlaufanzeige abgefragt wird.
Die Selbstincrementierung wird- auch bei der Abarbeitung von Senkblöcken verwendet. Wenn ein Senkblock aus einer sequentiellen Reihe von Elementen identischer Größe besteht, v/obei der laufende Beginn des Blockelementes eine Adresse auf v/eist, die größer ist als die Adresse der anderen Elemente in dem Block, dann wird die Selbstincrementierung verwendet, um ein neues EIe-
509808/0824
ment in den Block hineinzuschieben. Wenn vor dem Feldadressierungsbefehl die Feldbeschreibung auf das laufende oberste Element des Blockes hindeutet,jdann wird durch den Speicherfeldbefehl mit Selbstincrementierung ein neues Element in den Block hineingeschoben, und die'Feldbeschreibung weist auf dieses neue Element als laufendes oberstes Element des Blockes hin» In diesem Falle kann das Zählfeld dazu verwendet werden, daß angezeigt wird, daß der Block voll ist. Wenn die Ausgängsbeschreibung, welche gesetzt wurde, als der Senkblock leer war, eine Zahl im Zählfeld enthält, die gleich 2 , minus der maximal zulässigen Größe des Senkblockes ist, dann wird die überlaufanzeige gesetzt, und zwar anschließend an den Feldadressierungsbefehl, welcher ein neues Element in den zuletzt verfügbaren Raum im 31ock hineingeschoben hat. · '
Nach der Selbstincrementierung wird der Inhalt des im Feld RX bezeichneten Registers gemäß Fig. 5 zu dem Beginn der Feldadresse hinzugefügt. Die Feldbeschreibungen im Hauptspeicher werden jedoch nicht verändert, was ein Ergebnis der Registerindizierung darstellt. Dies ist eine wesentliche Unterschei- , dung zwischen Selbstincrementierung und Registerindizierung. Die Registerindizierung ist zweckmäßig, wenn bestimmte Bits in einer Wortfolge abgearbeitet werden. Somit können die Feldbeschreibungen dazu verwendet werden, auf bestimmte Bits des ersten Wortes hinzuweisen, und durch die Anwendung der Registerindizierung kann eine Unterroutine durch'eine Reihe von Worten in einer Tabelle durchprüfen, wobei nur diese speziellen Bits geprüft- werden. _ ■
Die Registerindisierung kann weiterhin dazu verwendet werden, auf bestimmte Elemente Bezug zu nehmen, die in einem Senkblock enthalten sind, unter der Voraussetzung, daß die Elemente innerhalb des Senkblockes alle -16-Bit-Worte sind. Wenn bekannt ist, daß ein bestimmtes Wort "n"-Worte unterhalb des laufenden obersten Wortes im Block liegt, so kann dieses Wort dadurch ange-
509808/082
sprochen werden, daß ein Register mit einer ZaKL geladen wird, die gleich M-nn ist. Dann würde ein Feldadressierungsbefehl ausgeführt, und zwar mit einer Feldbeschreibung, welche auf das laufende oberste Wort im Block hinweist und eine Registerindizierung auslöst, und zwar unter Verwendung des Registers, welches den Wert "~n" enthält. ·
Die Selbstdecrementierung (SX=IIi) ist im wesentlichen die umgekehrte Operation zur Selbstincrementierung derart, daß . die Bit-Adresse in der Feldbeschreibung um die Anzahl der Bits in der Feldlänge decrementiert wird und das Zählfeld um Eins decrementiert wird» Ebenso werden Überläufe in ähnlicher Weise behandelt- Wo jedoch die Selbstincrementierung die Feldbeschreibung verändert, bevor der Befehl auf dem effektiven Feld vollständig ausgeführt ist, wird die Selbstincrementierung ausgeführt, nachdem der Befehl auf dem effektiven Feld vollständig ausgeführt ist, und deshalb wird nur die Feldbeschreibung modifiziert, die im Hauptspeicher ist und nachfolgende Befehle beeinflußt, ohne daß eine Auswirkung auf den 3sufenden Befehl besteht. Gemäß Fig. 4- können Selbstincrementierung und Selbstdecrementierung nicht zugleich in demselben Feldadressierungsbefehl angesprochen werden.
Die obige Beschreibung hat sich somit auf die Identifikation des effektiven Feldes bezogen. Dieser Abschnitt bringt eine kurze Beschreibung des Befehls, der auf dem effektiven Feld durch d"ie verschiedenen Feldädressierungsbefehle gemäß Fig„6 ausgeführt wird.
Es gibt zwei Ladebefehle, nämlich zua laden des logischen Feldes und zum Laden des arithmetischen Feldes. Das Laden des logischen Feldes bewirkt, daß das effektive Feld an das Ende mit dem geringsten Stellenwert im Akkumulator geladen wird und daß
509808/0824
der restliche Akkumulator mit Nullen gefüllt wird. Beim Laden des arithmetischen Feldes wird das effektive Feld in das Ende mit dem geringsten Stellenwert im Akkumulator geladen, und der Rest der Bits im Akkumulator wird mit dem Bit mit dem höchsten Stellenwert des effektiven Feldes geladen. Bei dem Befehl zum Laden des .arithmetischen Feldes ist angenommen, daß das Feld einen mit einem Vorzeichen versehenen Wert hat, und demgemäß erfolgt beim Beladen des übrigen Akkumulators mit,dem Bit mit dem höchsten Stellenwert des Feldes eine Vorzeichenerstreckung.
Es gibt drei Speicherbefehle, nämlich Speichernfeld, Speichernnull-Feld und Speicherneins-Feld. Speichernfeld ersetzt das effektive Feld im Speicher'durch die η Bits mit dem geringsten Stellenwert des Akkumulators, wobei gleich η gleich der Anzahl der Bits im effektiven Feld ist. Speichernnull-Feld ersetzt jedes Bit des effektiven Feldes im Hauptspeicher mit der Ziffer Null. Speicherneins-Feld ersetzt Jedes Bit des effektiven Feldes im Hauptspeicher,mit der Ziffer Eins. Bei allen Speicherbefehlen werden, im Hauptspeicher nur diejenigen Bits ersetzt, die, einen Teil, des effektiven Feldes darstellen.
Es gibt zwei jiefehle zum. Vergleichen, nämlich Vergleichen logisches Feld und Vergleichen arithmetisches Feld. Vergleichen logisches Feld spricht ein 16-Bit-Wort an, welches das effektive Feld am Ende mit dem geringsten Stellenwert enthält und Nullen in allen anderen Bitpositionen und vergleicht dann dieses Wort mit dem Inhalt des Akkumulators, Die Anzeigen für Überlauf und Beibehalten werden gesetzt oder zurückgestellt, um anzuzeigen., ob der Akkumulatorin- , halt größer, kleiner oder gleich "dem Vergleichswort ist. Vergleichen arithmetisches Feld ist dasselbe wie Vergleichen logisches Feld, mit der Ausnahme, daß das mit dem Inhalt des Akkumulators zu vergleichende 16-Bit-Wort durch Vorzeichen-
509808/0824
erstreckung des Bits mit dem höchsten Stellenwert des effektiven Feldes in alle anderen Bits des Worts gebildet wird.
Es gibt einen Abtastbefehl, Abtasten linkes Bit des Feldes. Durch diesen BefeüL wird das Bit mit dem höchsten Stellenwert des effektiven Feldes in die Übertragungsanzeige geladen. Dies wird verwendet, um den Zustand eines bestimmten Bits im Speicher zu prüfen, ohne daß der Inhalt des Akkumulators verändert wird.
Die zur Durchführung dieser Feldadressierung erforderlichen Einrichtungen sind im Blockdiagramm der Fig. 7 dargestellt und lassen sich allgemein als zentrale Verarbeitungseinheit mit einem Mikroprogramm-Steuerspeicher bezeichnen. Die Fig.1 bis 6 beschreiben den Maschinenkode für alle Feldadressierungsbefehle und alle Feldbeschreibungen. Die Befehlsmaschinenkodes v/erden von den Geräten in Steuerspeicheradressen übersetzt und werden dazu verwendet, die verschiedenen Feldadressierungs-Mikroprogramme anzusteuern, die im Steuerspeicher enthalten sind, die alle innerhalb einer Seite von 256 mal 60 Bit untergebracht sind. Diese Mikroprogramme verwenden die Information in den Feldbeschreibungen und den Feldadressierungsbefehlen, um die entsprechenden Bits aus dem Hauptspeicher zu holen und sie gemäß den bezeichneten Befehlen zu verarbeiten.
Die zentrale Verarbeitungseinheit gemäß Fig. 7 ist um eine arithmetische Logikbaugruppe (ALU) 1 mit 16 Bit aufgebaut, welche alle erforderlichen arithmetischen oder logischen Funktionen ausführt. Die zwei Eingangsschienen sind die A-Schiene 2 und die B-Schiene 3, und der Ausgang wird über die zentrale Verarbeitungseinheit auf die S-Schiene 4- verteilt. Linksverschiebungen und Rechtsverschiebungen der Daten wer-
.. den normalerv/eise im W-Register 5 ausgeführt. Das SW-Register 6 steuert das Laden und das Entladen des W-Registers auf die S-Schiene.
509808/0824
Der SA-Schalter 7 ist ein Multiplexer, welcher bestimmt, welche Funktion .auf -die, ATSchiene mit .16 Bit zu bringen ist. Me wesentlichen EinganssiurLkti-onen werden folgendermaßen definiert: P ist der Ausgang des Speichers 9- F/2 ist der Speicherausgang, und zwar um eine Stelle nach rechts verschoben. Dies wird in Verbindung mitvder Kultiplikationseinrichtung verwendet. 2F ist der Ausgang des Speichers, ,und zwar um eine Stelle ,nach links verschoben. Dies wird in Verbindung mit der Divisionseinrichtung verwendet. .PSW ist das Programmstatuswort, welches die Überlauf- und die Ubertragungsanzeige jeweils enthält. I ist der Ausgang des I-Registers 10. Der DIO-Eingang wird auf einem Satz von Datenleitungen von einer peripheren Steuereinheit 11 empfangen. Der FGA-Eingang ist die Adresse des laufenden Mikrosteuerwortes plus Eins. Dies wird gewöhnlich für die Anforderung der Mikrounterroutine "Verzweigen und Sichern" ver*- wendet und als eines der Worte im Speicher abgespeichert. . ,
Der SB-Schaljber 8 ist ein. weiterer Multiplexer, welcher bestimmt, welche'Funktion auf die B-Schiene 2 mit 16 Bit zu bringen ist, welche.den. anderen Eingang zu dem ALU 1 darstellt. MBR ist der Dateneingang vom Hauptspeicher; 11» SD ist das untere Byte der MBR-Daten, und zwar mit dem Vorzeichen des Bytes (Bit 8), welches über das obere Byte ausgedehnt .ist. Dies wird für die Berechnung der effektiven Operandenadresse verwendet, D ist das untere Byte der HBR-Da.ten, und zwar jeweils mit.der Ziffer O im oberen Byte. Dies wird ebenfalls zur.Berechnung der effektiven Operandenadresse verwendet. Die spezielle Anwendung dieser zwei Eingänge ist in der-Fig. 5 dargestellt. W sind die .· Daten vom. W-Register 5- CUT ist der Ausgang eines Zählers 15 mit 8 Bit, der in der zentralen Verarbeitungseinheit enthalt ten ist. .-',--·'-'
Der Speicher 9 kann aus bipolaren Speicherkarten mit beliebigem Zugriff aufgebaut sein und hat eine,Kapazität von 32 16-Bit-Worten. Die. ersten.. 8 Worte haben spezielle Funktionen,
509808/0824
und zwar wie folgt: Z ist eine O-Quelle. P ist die Adresse des im Hauptspeicherprogramm laufenden Befehls. L ist die Yerbindungsadresse. T dient zur vorübergehenden Speicherung. X ist das Index-Register Nr. 1, welches zur Nachindizierung verwendet wird. B ist das Index-Register Nr. 2, welches zur Yor indizierung verwendet wird. E ist die Erstreckung des Akkumulators und A ist der Akkumulator. Die übrigen 24- Stellen können von der Mxkroprogrameinrichtung als Arbeitsspeicherplätze verwendet werden und werden als Speicher 1 bis 24· bezeichnet. Das MBW-Register 13 enthält Daten, die in den Hauptspeicher eingeschrieben werden. Das MBR-Register enthält Daten, die von dem Hauptspeicher ausgelesen wurden. Das MA-Register 14- enthält die Adresse des Speicherplatzes im Hauptspeicher, zu welchem der laufende Zugriff erfolgt.
Der Steuerspeicher 20, der aus reinen Auslesespeicherkarten aufgebaut sein kann, enthält das gesamte Mikroprogramm mit 60 Bit mal 256 Worten, welches den gesamten Adressierungsumfang des variablen Feldes festlegt. Der nächste Adressengenerator 19 empfängt die Adresseninformation vom Steuerspeicher und bestimmt die nächste Steuerspeicheradresse, die angesprochen werden soll, und zwar entweder direkt von den Steuerspeichereingängen oder indem eine Verzweigung zu einer Adresse erzwungen wird, welche durch die Daten aus dem I-Register 10 festgelegt ist.
Das I-Register 10 kann durch den I-Multiplexer 16 von einer der folgenden vier Quellen geladen werden: vom I-Register, vom MBR-Register, von der S-Schiene oder vom W-Register. Es können Daten in das I-Register auf einem der vier Wege geladen werden, die in der Fig.8 dargestellt sind, was zu einer gerätetechnischen Konfiguration führt, die Byte-Daten und hexadezimale Daten innerhalb einer minimalen Ausführungszeit verarbeiten kann. Beispielsweise könnte ein Byte-Aus tausch
50980 8 /0824
durch eine kreisförmige Verschiebung von 8 Bits nach, rechts erfolgt sein und ein Austausch einer, hexadezimalen Information (hex) könnte durch eine Reihe von Verschiebungen mit entsprechender Maskierung ausgeführt sein. In dieser Ausfüh-.rungsform werden jedoch eine hexadezimale Verschiebung und eine Byte-Verschiebung direkt mit einer entsprechenden Ersparnis an Rechnerzeit und Programmierungsaufwand erreicht-
In der nachfolgenden Beschreibung des St euer speicherprogr amins wird erklärt, wie die in der Fig.7 beschriebene gerätetechnische Einrichtung dazu verwendet- wird, die oben beschriebenen Feldadressierungsfunktionen auszuführen. Die Fig. 9A bis: 91 bilden ein detailliertes Flußdiagramm des gesamten Mikroprogramms für die variable Feldadressierung, welches im Steuerspeicher enthalten ist. Jeder Kasten oder Block stellt ein Wort im Programm dar. Über jedem Block ist die symbolische Stelle des Befehls angegeben und in .jedem Block ist eine symbolische Darstellung des Datenflußes angegeben, der erreicht wird, wenn dieser Befehl ausgeführt wird.
In der Fig. 9A ist die Stelle X1 der grundlegende Ausgangspunkt bei der Ausführung aller Befehle. An, diesem Punkt enthält das MBR-Register die erste Hälfte des Feldadressierungsbefehls, der als Byte (siehe Fig.8) in das I-Register übertragen wird. Dabei wird auch der Programmzähler um 1 incrementiert und in das MA-Register abgespeichert, um später dazu verwendet zu werden, die zweite Hälfte des Befehlswortes anzusprechen, wobei gleichzeitig eine Abspeicherung in das W-Register zur späteren Verwendung erfolgt. An diesem Punkt tritt eine Verzweigung für den Inhalt des I-Registers auf. " Wenn die Bits 0 bis 9 den in der Fig.1 dargestellten Wert haben, verzweigt sich das Programm an die Stelle FRD4-X2. Für andere Befehle als Feldadressierungsbefehle verzweigt sich das Programm an eine andere Stelle. An der Stelle FRD4X2
509808/0.8 2A
werden die SX- und RX-Felder auf das Vorhandensein der Möglichkeit einer variablen Feldadressierung geprüft und wenn dies nicht der Fall ist, verzweigt sich das Programm auf eine Fehlerroutine. Die nächsten drei Befehle verschieben die RX- und SX-Felder derart, daß das RX-FeId an einer geraden hexadezimalen Grenze liegt und speichert das Ergebnis in der Speicherstelle 10 zur nachfolgenden Verwendung. Schließlich wird der Inhalt des MBR-Registers, nämlich die zweite Hälfte des Feldadressierungsbefehls, als Byte in das !-Register übertragen und weiterhin an der Speicherstelle 11 abgespeichert. Eine 12-V/ege-Verzweigung erfolgt jetzt bezüglich des Inhaltes von I^ bis !/je» was den Feldern R, I, X und S entspricht.
Der übrige Teil der Fig.9A ist ein Flußdiagramm des Vorganges, durch den die effektive Adressenberechnung in der Fig.3 durchgeführt wurde. Wenn beispielsweise das RIXS-FeId 0000 ist, verzweigt sich das Programm nach FROX6, v/o die Verschiebung plus 1 in das MA-Register geladen wird. Eine 1 wird dem Mikroprogrammierer in diesem Falle zweckinäßigerweise zugeführt, da das zweite Feldbeschreibungswort zweckmäßigerweise zuerst abgearbeitet wird. Diese Adresse wird außerdem zur späteren Verwendung im W-Register abgespeichert. Wenn RIXS gleich 0001 ist, verzweigt sich das Programm nach FR1X6. An dieser Stelle sei ein Hinweis auf die verwendete logische Symbolik gegeben. In der Fig. 3 bedeutet ein Buchstabe B in Klammern "den Inhalt von B". Dadurch soll eine indirekte Adressierungsfunktion bezeichnet sein. Somit gibt in der zweiten Zeile der Fig. 3 die effektive Adresse die Verlagerung plus den Inhalt des B-Registers an. Es sei darauf hingewiesen, daß diese Bedeutung in der Fig. 3 beibehalten ist, so daß alle effektiven Adressenberechnungen genau festgelegt sind, während diese Bezeichnungsweise in den Flußdiagrammen nicht beibehalten ist, da die funktionale Beziehung
509808/0824
, '·■■" 2Ä36963 19-·
aus dem Zusammenhang und der Beschreibung ohnehin deutlich werden dürfte. Sie an den Stellen FR5X6 'enthaltenen Befehle 7 und 8 veranschaulichen eine doppelte indirekte Adressenberechnung. In FR5X6 ist der Inhalt des B-Registers plus der Verschiebung in das MA-Register geladen- " In FR4-X7 wird das Wort' im Speicher ausgelesen und a^Ls diejenige Adresse verwendet, welche schließlich in die'MA- und W-Register in FR4-X8 geladen werden. Auf diese V/eise wird die Programmsteuerung zur Fig. 9B des Flußdiägramms übergeleitet, wobei die effektive Adresse des zweiten Feldbeschreibungswortes in den MA- und W-Registern berücksichtigt ist.
In der Fig.9B verzweigt sich das Programm neunfach auf die Bits 8 bis 11 des I-Registers, was den. vier Operationskode-Bits entspricht. Für jeden ausgeführten Operationskode wird die Adresse der ersten Beschreibung in.das MA-Register geladen und in den Speicher 12 zur späteren· Verwendung eingeschrieben, und die zweite Beschreibung wird aus dem Hauptspeicher in das MBR-Register gebracht. Weiterhin werden die YO-y Y1- und Y4-Markierungen in Abhängigkeit von jedem Operationskode gemäß Fig. 6 gesetzt. Für nicht ausgeführte Operationskode-Bitkonfigurationen erfolgt eine Verzweigung in eine Fehler-Unterroutine. ■■-.-·■■-..
Das Flußdiagramm in der Fig.9C' veranschaulicht die Durchführung der Selbstincrementierung, der Selbstdekrementierung und der Indizierungsmöglichkeiten, welche dem Programmierer zur Modifizierung der Feldbeschreibungsworte zur Ausführungszeit geboten werden. Bei FDISG1 wird das im MBR-Register enthaltene Wort, das zweite Feldbeschreibungswort, vorübergehend in den Speicher 14 eingeschrieben, und es wird weiterhin als Byte bei FD1SC2 in das I-Register überführt, wobei' der Feldlängenteil des I-Registers in das W-Register geladen wird und in den
5 09 8:0,87,0 8,2 4
Speicher 15 eingeschrieben wird und weiterhin das erste Feldbeschreibungswort in das MBR-Register geladen wird. Bei FDISC3 wird der Inhalt des MBR-Registers, nämlich der Beginn der Feldadresse, in den Speicher 13 eingeschrieben. Sie nächsten drei Plätze speichern das zweite Feldbeschreibungswort im Speicher 16, maskieren und sichern die Bit-Adresse im Speicher 17 und laden die RX- und die'SX-Bits aus dem Speicher 10 in das I-Register zur späteren Verzweigung. FDISC? und 8 berechnen die Endbit-Ädresse durch Addierüng des Inhaltes aus dem Speicher 1?» der Bit-Adresse, zu dem Inhalt von W, der Feldlänge. Dies könnte zu einer Zahl zwischen 0 und 30 führen.
Mit der vorläufig vorgenommenen Bitverarbeitung erfolgt nun eine sechsfache Verzweigung auf Io bis I.ri welche die sechs SX- und RX-Möglichkeiten darstellt. Wenn keine dieser Möglichkeiten benötigt wird, geht das Programm nach NXSHRX, wo der Speicher 13, der vorhergehende effektive Beginn der Feldadresse, direkt in die MA- und W-Register geladen wird, um für den nächsten effektiven Beginn der Feldadresse verwendet zu werden. Mit anderen Worten, der Beginn der Feldadresse ist nicht modifiziert worden.
Wenn von der Möglichkeit der Indizierung Gebrauch gemacht werden soll, setzt das Programm bei NSXRX ein, wo der Inhalt des Speichers 13r nämlich der effektive Beginn der Feldadresse, zu dem Inhalt äes^spezifizierten Index hinzugefügt wird, und dieses Ergebnis wird dazu verwendet, die MA- und ' W-Register zu laden. Wenn eine Selbstdecrementierung und eine Index-Registrierung erforderlich sind, tritt das Programm bei SDRX ein, wo der Inhalt des angegebenen Index-Registers plus * dem effektiven Beginn der Feldadresse dazu verwendet werden, den neuen effektiven Beginn der Feldadresse zu berechnen. Dies ist identisch mit der Situation, in welcher von keiner Incre-
509808/0824
mentierungsmöglichkeit Gebrauch gemacht. wird, da. die Selbstdecrementierung nicht ausgeführt wird,1 bevor ein Datenzugriff erfolgt. In ähnlicher Weise tritt dann, „wenn nur eine Selbstdecrementierung verlangt wird, das Programm in SBKRX ein, .wo der effektive Beginn der Feldadresse.direkt; in die W- und MA-Register geladen wird. In allen obigen Fällen wird das Programm durch SRX2 und 3 fortgeeetzt, wo das Programm entsprechend vorbereitet wird, sowohl bei einer YO-Markierung, als auch beim . Inhalt des Speichers 16 verzweigt zu werden,, was-der .zweiten Feldbeschreibung entspricht. Diese zwei SB-Modusarten setzen .._ eine Markierung X3> um später.im Programm eine-Selbstdecrementierung auszulösen.
Wenn die Selbstincrementierung.vorgesehen.ist, tritt das Programm bei SXNBX ein, wo der Inhalt des Speichers 19,1ISmIiCh die Endbit-Adresse, um Eins erhöht.wird, um im; W-Register abgespeichert zu werden. Dieser Wert wird um,Eins erhöht, .da es eine Addition der Feldlänge und der Bit-Adresse ist, wo die Feldlänge derart definiert ist, daß .sie um Eins kleiner ist als die Anzahl der Bits im.Feld. Die Selbstincrementierung und -indizierung führt zu einer Verzweigung nach SXRX, wo eine ähnliche Endbit-Adressenberechnung durchgeführt wird. Zusätzlich wird eine Y2-Markierung derart gesetzt, daß diese zwei Möglichkeiten im Programm später voneinander, unterscheidbar sind. BeiSX2 wird der Inhalt des Speichers 12, der Beginn ■ der Feldadresse in dem ersten Feldbeschreibungswort, in das MA-Register geladen. Wenn keine Indizierung, erfolgt, so bleibt dies der effektive Beginn der Feldadresse. Außerdem wird W zumindest teilweise in das I-Register gebracht. Wenn in den folgenden Programmschritten die Bitzählung plus-der Feldlänge plus Eins gleich einer Zahl ist, welche größer ist als 15» dann wird nach dieser Übertragung der Überlauf in das Bit mit dem geringsten Stellenwert des !-Registers gebracht. Dies wird bei SX3 durch eine Maske ausgesondert, in W geladen und zu dem effektiven Beginn der Feldadresse bei SX4- addiert. Dies führt zu dem Ergebnis,
509808/Ό82Α
.- 22 -
daß bei einer Selbstincrementierung mit einem Wort, welches _ ausreichend groß ist, um eine Grenze zu überschreiten, der Speicher 1 um eine Einheit incrementiert wird, um anzuzeigen, daß ein neuer effektiver Beginn der Feldadresse vorliegt·
Bei SX5 bis SX8 wird die zweite Feldbeschreibung assembliert. Die Zählung wird um Eins erhöht, zusammen mit der im Speicher 15 enthaltenen Feldadresse in das I-Register gebracht, und das Ergebnis mit der neuen Bit-Adresse, die in SX2 in I geladen wurde, wird zur Übertragung in den Hauptspeicher in das MBW-Register gebracht. BeiSX9 wird der Inhalt des Speichers 12, der an dieser Stelle die Adresse der ersten Feldbeschreibung enthält, vermehrt um Eins,.in das MA-Register geladen, so daß die zweite Feldbeschreibung, die gerade assembliert wurde, an eine geeignete Stelle im Hauptspeicher gebracht wird. An dieser Stelle erfolgt eine Vier-Wege-Verzweigung bei der Y2-Markierung und der entsprechenden Zählung. Die Y2-Markierung wird gesetzt, wenn die SXRX-Möglichkeit gefordert ist. An dieser Stelle im Programm ist die Selbstincrementierung abgeschlossen, und das Programm springt jetzt auf die anfängliche Sechs-Wege-Verzweigung zurück, um den RX-Teil des Befehls abzuarbeiten. Bevor der Rücksprung erfolgt, wird die Y2-Markierung zurückgestellt derart, daß die SX-Möglichkeit nicht erneut ausgeführt wird, und das I-Register wird wieder auf seinen ursprünglichen Inhalt zurückgesetzt, so daß eine weitere Sechs-Wege-Verzweigung erfolgen kann. Wenn keine Indizierung verlangt wird, werden die MA- und'W-Register aus dem Speicher 13 geladen, der den modifizierten Beginn der Feldadresse enthält. Wenn schließlich die Zählung auf Null zurückgegangen ist, wird der Überlaufanzeiger zur späteren Verwendung im Programm gesetzt.
Wenn; die YO-Markierung zurückgestellt ist, wodurch angezeigt ist, caß ein Ladebefehl ansteht, verzweigt sich das Programm in Fig. 9D. An diesem Punkt enthält das I-Register das zweite
509808/0824
FeildbeschreibungsWort,, und. es.erfoigt eine Z gung au;f die Bit-Adresse und die'" Feldlänge. Allgemein 3 ddie Flußdiägramme ''iö den -Fig,, fD und. 9E auf den
Wartes im Speicher, wobei"1 eine'reOtetsbiind^ge AjiO2?dniing dej· Bits durch den Bef ehl "easforderlich is't,, wobei weiterhin die übrigen Bits durch eine Maske ausj|©sonder4 werden "und au^eiKdem eine geeignete ^o^zeioiieaa^Informa%ion gewälo?lels-tet; ist., J)jL©se, Funfctio;nen Isönnten in. einer allgemeinen Unterrou-.durchgeführt werden.. B^attdeSiSen■ .s:'±nä Jedoch ge^ennte
en zur Verarbeitung von geraden Worten vorgeae'hen, v/eiterhin von geraden Bytes r vo;ii geraden fifejcade'isiinal"-· agjalen, von ungeraden Feldern und'von: einzelnen Bits. Diese Maßmahme wurde getroffBn^ weil das Pacteen, das Aussör'tiere-n und; die Handhabung vom Byte-, Heixadezimal-- ujad BC^lnföimation beim Frogrammieren häufig voricöymmt: und aiuf diese ¥eise ein beträGhtliehes' Maß an'Has'chinenzeit. eingespart werden :k;ami, indem, für jeden Fall spezielle Programme geschrieben werden. Die obigen Bezeichnungen sind folgendermaßeh festgelegt» Ein gerades Wort, hat 16 Bit, beginnend mit Bit1 0, ein gerades Byte hat 8 Bit, beginnend mit Bit 0 oder 8, eine gerade Mekadezimalzahl hat 4- Bit, beginnend mit Bit 0, 4, 8 öder \2_r ein einzelnes Bit ist' ein Bit in einer beliebigen Position und ein ungerades Feld fällt' unter keine der obigen Moglichiceiten.' ϊη allen Fällen verzweigt sich das Programm aus diesen Unt err out in en heraus,' wobei die erforderlichen Daten in dem W^Registersteheh,' in geeignetei1 Weise maskiert sind und rechtsbündig angeordnet sind, und der Operdtipnsicpde steht im !-'Register.
Zur Verarbeitung eines geraden Wortes^ ist keine Maskierung, erforderlich und auch nicht notwendig, daß das W;ört bündig angeordnet ist. Deshalb verzweigt sichV das Programm nach IiDEIi, U)EWi und I/DEW2, wo der Operationskode direkt in das !-^Register geladen wird und die Daten in das Vi-Re gist ei? geladen werden. Im speziellen Fall des Befehls, zum Abtasten des linken Bits eines
Feldes wird die Y4-Markierung gesetzt.. Diese HÖgiichkeit wird
509808/0824
■ : -i.v.'-: ORIGINAL INSPECTED
unten in Verbindlang mit Fig. 9E diskutiert.
Zum laden eines geraden rechten Bytes verzweigt sich das Programm nach EDSSB, wo die Daten direkt in den Speicher 16 eingeschrieben werden. Wenn die Daten bereits rechtsbündig angeordnet sind, sind keine weiteren Maßnahmen erforderlich. Um gerade linke Bytes zu laden, werden die Daten zunächst als Byte in das !-Register übertragen, um die interessierenden Daten rechtsbündig anzuordnen, und dann werden sie in den Speicher 16 eingeschrieben. In jedem Falle verzweigt sich das Programm auf X1, wo zwischen logischem und arithmetischem Einspeichern unterschieden wird. Für logisches Einspeichern verzweigt sich das Programm nach LDB1XO, wo der Operationskode in das !-Register geladen wird. Bei LDB2 und EDB3 werden die Daten maskiert und zur Vervollständigung der Funktion in das W-Register geladen. Im Falle des aritlametischen Ladens muß weiterhin ©ine geeignete Vorzeichenerstreckung erfolgen." In diesem Falle verzweigt sich das Programm durch 3JDB1X1, wo d©r Speicher 15« die Feldlänge, ia das 1-Hegister geladen wird. Bie übrigen Teile dieser Unterroutine werden in Verbindung mit äer figo9J§ diskutiert* Bie vier gerades hexadezimalen Schlei- £©n ijiaoL süftnlieh. den Routinen für ein gerades Byc©s und ziirar ia der U@ise9 daß die Baten rechtsbündig angeordnet und in den Sjp<s>ieJh.©E' 16 ©izjgesehriefeen iirer&@n9 ΐ/otoei aiae Verzweigung auf dl© Markierung Ti erfolgt und die Baten wie oben maskiert wor
in der Pig· ·_ 933 stellt das Programm- dar, wel-
slb.es ©rfo^&erlieh ist, um eis ungerades Feld sii lade3Qf- welches fe©ia© Speielh,eBg2?enze überschreitet 9 7;jeit@rairL mim Laden eines
-welelaes sine Speiehergrsnge ül5erseireeitet2 ¥srarbeitiane τοπ "aritMastiseliea l-adefeefehlen, Iferarbeiten '/on 3efeiil©2i aim Äl3-cas"t82i des liafeen Bits ©ia©s leides und sum !Laden eines einseinen Bits. Um ein nagerades IsId9 uelohes lceine Spe-icnergrensse übersenreitet, zu
"509808/0824
laden, beginnt das Programm bei IDOW, wo das Einer-Komplement der Endbit-Adresse in den Maschinenzähler geladen wird. Das Datenwort wird nun in das W-Register gebracht und so lange nach rechts verschoben, bis der Zähler auf Null geht. An diesem Punkt sind die Daten rechtsbündig angeordnet und in den Speicher 16 eingeschrieben. Dann wird die Feldlänge in .das I-Register geladen, und das Programm verzweigt sich auf eine Tabelle von Unterroutinen, welche das Vorzeichen identifizie-. ren und eine Maske darstellen. Die ersten vier Sätze von Unterroutinen sind in der Fig.9K dargestellt. Die Peldlänge, eine Anzahl von Null bis P in hexadezimaler Darstellung bestimmen eine Verzweigung auf eine dieser Unterroutinen. Da die Peldlänge in I immer um eins kleiner ist als die tatsächliche Peldlänge, erscheint ein 2-Bit-PeId als 0001 in. I und erzeugt eine Verzweigung nach TABX4. Hier, nämlich in der Fig.9K, wird das Bit mit dem höchsten Stellenwert des Datenwortes in das Vorzeichenbitregister bei TABX4 maskiert, und eine Maske für die zwei Bits der rechtsbündigen Daten wird in das W-Eegister geladen. Jetzt kehrt das Programm nach IDWD9 in der Fig.9E zurück, wo der Operationskode in I geladen wird. Das Programm verzweigt sich dann auf das Vorzeichenbit, wie' es in der Fig.9K festgelegt ist, und auf die Y1-Markierung, welche ein arithmetisches PeId festlegt. In den zwei Pällen, in denen die YI-Markierung gesetzt wurde, wird sie zurückgestellt, und in allen Pällen wird das durch die Unterroutine gemäß Fxg,9K bestimmte' Vorzeichen nach links über die maskierten Datenpositionen des Wortes erstreckt, um ein erstrecktes Vorzeichen zu bilden.
Das laden eines Feldes, welches eine Speichergrenze überschreitet, ' unterscheidet sich von dem obigen Programm dadurch, daß zwei Worte vom Speicher erforderlich sind, um diesen einen Befehl auszuführen. Bei IDDW wird die erste Datenwortadresse um 1 incrementiert und in das MA-Register geladen. Es sei bezüglich Fig.90 in Erinnerung gebracht, daß das MA-Register zuvor die Adresse des ersten Datenwortes enthielt und das MBR-Register
5 09808/0824
das Datenwort selbst enthielt. Somit wird das erste Datenwort in den Speicher 16 übertragen, und zwar bei der Ausführung des Befehls IDDWI, und das zweite Datenwort wird bei LDDW3 erfaßt. Die Endbit-Adresse wird in das Schieberegister geladen, und eine Reihe von doppelten Links verschiebungen, werden mit Hilfe des W-Registers und des Speichers 16 in der Weise durchgeführt, daß dann, wenn der Zähler auf Null geht, die richtigen Daten rechtsbündig im W-Register stehen.
Für einen Befehl zum Abtasten des linken Bits eines Feldes für ein gerades Wort ist es nicht notwendig, das Datenwort rechtsbündig anzuordnen. Die Information steckt in dem Vorzeichenbit, und diese Daten können direkt durch Verzweigung auf die entsprechende Maskierungs-Unterroutine erzeugt werden. Deshalb wird der Speicher 16 mit dem Datenwort bei LDEW2 in der Fig.9D geladen und es erfolgt eine direkte Verzweigung nach IIDWD5 in der Fig.9E, wo die geeignete. Vorzeichenunterroutine aufgerufen wird. Dieses Vorzeichen wird in Verbindung mit der Y4--Markierung dazu verwendet, um später im Programm die geeignete Funktion zu erzeugen.
Im Falle eines arithmetischen Ladebefehls wird das Vorzeichenbit des variablen Feldes über die übrigen Bits des Wortes nach links des veränderlichen Feldabschnittes erstreckt. Anstatt die nicht benötigten Bits durch geeignete Maskierung abzutrennen, verzweig sich deshalb das Programm direkt von LDB1X1 oder LDN2X1 in der Fig.9D nach LDWD6 in der Fig.9E. Wenn somit spater-im Programm bei MZNYJ usw. eine Vorzeichenerstreckung erfolgt» wird somit ein Vorzeichen von Eins oder von Null anstatt einer automatischen Null im Falle des Ladens eines logischen Feldes auftreten.
Definitionsgemäß ist das Datenwort das Vorzeichenbit im Falle des Befehls zum Laden eines einzelnen Bits. Anstatt einer rechtsbündigen Anordnung der Daten ist in diesem Falle lediglich er-
509808/0824
forderlich, das Vorzeichen zu identifizieren und es über das gesamte Wort zu erstrecken, was in der Weise gesdaieht, wie es nachfolgend erläutert wird. Bei LDSB wird das Datenwort in den Speicher 16 eingeschrieben, welches in der Maskierungs- und der Vorzeichenunterroutine gemäß Fig.9& verwendet wird, um das Vorzeichen' der Daten zu beiimmen. Bei LBSB2 wird das Einer-Komplement der Bit-Adresse in das !-Register geladen, um eine Verzweigungsinformation beim Erreichen der Maskierungs- und Vorzeichen-Unterroutine zu liefern. Schließlich wird bei LDSB3 die Rücksprungadresse in das I-Register geladen, und das Programm verzweigt sich auf den vorhergehenden Inhalt des I-Registerso Bei der Rückkehr wird die Ein-Bit-Maske in W geladen, der Operationskode wird in das '!-Register geladen, und die Daten, die entweder eine Eins oder eine Null sein können, werden in den Speicher 16 eingeschrieben.
Somit ist in allen Fällen ersichtlich, daß bei der Vervollständigung dieses Abschnittes des Programms der Speicher 16 die rechtsbündigen Daten enthält', daß W die rechtsbündigen und maskierten Daten enthält und daß I den Operationskode enthalte \
Das Speicherbefehlprogramm wird' in ähnlicher Weise aufgegliedert in ein gerades Wort, ein gerades Byte9 eine gerade Hexadezimalzahl, ein ungerades Feld und ein .-einzelnes Bit, wobei den einzelnen Gliedern jeweils eine Schleife entspricht, deren Flußdiagramm in den Figo 9F9 9& und 9H jeweils dargestellt- ist ο In allen Fällen-werden, die Daten9 die rechtsbündig im Akkumulator angeordnet sind, - an ihre geeignete Stelle verschoben und in den Speicher 16 eingeschriebeng die Maske wird in ¥'geladen und der Operationskode wird in I geladen, bevor dieser Teil des Programms angesprochen wird» Für das Speichern eines geraden Wortes wird das Programm bei SSEV/ begonnen, wo der Operationskode in das I-Register geladen An diesem Punkt erfolgt eine Verzweigung auf die Y1-
Markierung. Wenn YI zurückgestellt wird, muß entweder ein Befehl zum Speichern eines Null-Feldes oder zum Speichern eines Einer-Feldes vorliegen. In beiden Fällen sind keine entsprechenden Daten vorhanden. Eine Null-Maske wird in W g'eladenf und das Programm verzweigt sich» Wenn Y1 gesetzt wird,, handelt es- sich· um einen Befehl zum Speichern eines feldes«. Hier müssen Daten aus dem Akkumulator geholt und in
den Speicher 16 eingeschrieben werden, bevor die Schleife Speichern eines geraden,. Wortes fortgesetzt wird. Zum lern eines geraden rechten Bytes setzt das Programm EB ein«. Hier wird das Datenwort in das I-Hegister ans d©ffl Akkumulator geladen,, und eine Verzweigung auf 11 ©5?£©lgto Mr den Befehl zum Speichers eines Feldes werden ÜL© ®at©a in den Speicher 16 eingeschrieben· Andernfalls wirä. d@r Speicher 16 nicht zerstört» In g.edem Ea1IIe wird i,©r Operationskode in I geladen, die. geeignete Maske wird in U g©iad®a und das Programm verzweigt sich» Bas Speichern @iae§ linken Bytes erfolgt in ähnlicher Weise wie das Spei- ©h,®3?n ©lass r@ehtaa Bytes 9 mit des? Ausnahm®0 daß bei STSLB1 fet©sa in I als Byte gegen Eisli sslbst ausgetauscht im Qmm 2?θ©1γο© %*ts lisiksMin
11© 11§ο9& 'EfaMMlt fife l!I'ii£cltag2!SLiiHi90 yolote sis!i auf das Sp©i©a@Sia &©s:acLsaiaiale3? Selalsifsa "beEie&.©ao Ia allen I1Sll@a tm^fiea cLi® Ba'fc^sa ans- den Aldsuatilatos? geladen und in ge~ Qiga©t© ]h.@smd©giaal© Anordnung.ausgetauscht« In allen and©— s>Q2a EaBsmlbsa®» giacl diese FlwSdiagraisM© ähnlich aufgebaut ui© dis'l'liaidia.graaiEe für eüf gerades Byteffl Bis I1Ig · 9H entfeältdi© IFlnScliagaMEBie für clis MögileMssitea in Terbindung sit eiaea iaiig©2md©s feld isid siaeii ©ing®laea Bit· Mr den 1Έ11 ©la@a nsg@2?a!i[sa I?sides ^ vjelshss keine Spsleliergrenze
setst das ?rog]!?ajaH sei BTOW sin.
i'09808/0824
Daten aus dem Akkumulator werden in W geladen, und im Falle eines Befehls zum Laden eines Einer- oder eines Null-Feldes wird das Einer-Komplement der Bit-Adresse dazu verwendet, die Maskierungs- und Vorzeichen-Unterroutine anzusprechen. Beim Rücksprung wird die Endbit-Adresse in I geladen und dazu verwendet, die linke Maskierungs-Unterroutine aufzurufen. Die linke Maske wird alternativ mit der rechten Maske in W an der Stelle STOW13 berücksichtigt, und das Programm springt an diesem Punkt in die Fig.91. Im Falle eines Befehls zum Speichern eines Feldes erfolgt die Verzweigung von STOW nach STOWPfI. In diesem Falle wird die Endbit-Adresse· in den Schiebezähler geladen und dazu benutzt, die W-Daten nach links bis in die richtige Stellung zu verschieben. Das Programm wird nunmehr wie oben von der Stelle ST0W6 fortgesetzt. Im Falle des Speicherns über eine Speichergrenze hinweg-wird das Programm bei STDV/ begonnen, wo die Akkumulatordaten in W geladen werden. Für einen Befehl zum Speichern eines Null-Feldes oder zum Speichern eines Einer-Feldes wird das Programm bei STDW5 fortgesetzt, wo eine Verzweigung zu der Maskierungs-Unterroutine zu einer Rechtsmaskierung führt, die in W geladen ist. Bei STDW8 wird die Endbit-Adresse dazu verwendet, um die linke Maskierungs-Unterroutine aufzurufen, was dazu führt, daß eine linke Maske in den Speicher 18 eingeschrieben wird. Schließlich wird der Operationskode in I geladen, bevor eine Verzweigung nach TiTiF in der Fig. 91 erfolgt. Unter der Voraussetzung, daß ein Befehl zum Speichern eines Feldes vorliegt, verzweigt sich das Programm nach STDW1, wo das Datenwort in den Speicher 16 eingeschrieben wird und-die Endbit-Adresse in den Maschinenzähler geladen wird» Die Daten werden dann dappelt nach rechts durch den Speicher 16 und durch W verschoben, bis die Daten in geeigneter Weise in W und im Speicher 16 angeordnet sind. Die Daten in W werden dann in den Speicher 8 eingeschrieben, und das Programm wird bei STDW5 fortgesetzt. Schließlich ist die Einzelbitschleife bei STSB identisch mit dem Fall des Speicherns eines ungeraden Feldes, welches keine Speichergrenze überschreitet, und somit erfolgt unverzüglich eine Verzweigung in diesen Teil des Programms.
509808/0824
Das Programm tritt jetzt in das in der Fig. 91 dargestellte Flußdiagramm ein, und es erfolgt sofort eine 8-Wege-Verzweigung auf den in I enthaltenen Operationskode. Für den Befehl zum laden eines logischen Feldes ist das Datenwort in W, welches "bereits in geeigneter Weise maskiert und rechtsbündig angeordnet ist, in den Akkumulator geladen. Der Befehl zum Laden eines arithmetischen Feldes wird in identischer Weise abgearbeitet. Für den Befehl zum Speichern eines Einer-Feldes tritt das Programm bei SOF in Funktion, v/o das Einer-Komplement der Maske alternativ zu dem Inhalt des MBR-Registers verwendet und in das MBW-Register zur Abspeicherung im Hauptspeicher geladen wird. Für die Feldspeicherfunktion werden die nicht benötigten Bits aus dem Datenwort bei STF durch entsprechende Maskierung ausgesondert, die Maske v/ird bei STFXO in V/ geladen, und die Daten werden alternativ zu der Maske bei STFX1 verwendet. Das Speichern eines Null-Feldes bei SZF erfolgt in ähnlicher Weise wie das Speichern eines Einer-Feldes, mit der Ausnahme, daß die Maske nicht als Einer-Komplement ausgebildet ist. In den obigen drei Fällen erfolgt jetzt eine Prüfung auf TO. Aus den Fig. 9F, 9G und 9H ist ersichtlich, daß YO in allen Fällen zurückgestellt wird, ausgenommen dann, wenn ein Wort im Hauptspeicher eine Wortgrenze überschreitet. In einem solchen Falle sind zwei Speicheroperationen erforderlich. Kehrt man zur Fig. 91 zurück, wo YO zurückgestellt ist, so reicht eine Speicheroperation aus, und das Programm verzweigt sich nach ST1X2- Wenn jedoch YO gesetzt ist, verzweigt sich das Programm nach ST2X2 zur Ausführung der zweiten Speicheroperation. Zunächst wird YO zurückgestellt, um ein weiteres Durchlaufen dieses Programmteils zu verhindern. Weiterhin wird der Inhalt des Speichers 10 plus 1, nämlich die Stelle des nächsten Wortes im Hauptspeicher, in das MA-Register geladen. Bei ST2X3 wird der Inhalt des Speichers 8, nämlich der Teil mit geringerem Stellenwert der Akkumulatordaten, bündig für eine zweite Speicherung angeordnet, in W geladen und von dort in den Speicher 16 eingeschrieben. Schließlich värd der Speicher 18, die rechte Maske, in W ge-
509808/0824
laden. Nun sind die Bedingungen für ein zweites Durchlaufen der Schleife durch die Acht-Wege-Verzweigung erfüllt, weil I noch den Operationskode enthält, W eine Maske enthält und der Speicher 16 den neuen Datensatz enthält. Wenn ein Befehl v zum Vergleichen eines arithmetischen Feldes abgearbeitet wird, setzt das Programm bei CAF ein, und z\mr mit Maskierurigsdaten plus Vorzeichen j rechtsbündig, und zwar iri W. Dieser Wert, subtrahiert vom Akkumulator, minus Eins-wird berechnet, und das Vorzeichen der Ergebnisse wird von der Vergleichslogik ausgewertet«. Das Vergleichen-eines logischen Feldes ist identisch mit dem -Vergleichen eines arithmetischen Feldes mit der Ausnahme, daß I modifiziert werden muß (aus gerätetechnischen Gründen)9 um eine Form aufzuweisen, I wie es für den . Vergleich eines logischen Feldes erforderlich ist. Für das Abtasten des linken Bits eines Feldes wird das Vorzeichen von I geprüft, und die Anzeigeeinrichtung zur Übertragung wird gesetzt oder zurückgestellt =>
In allen Fällen verzwe^; sich das Programm an die Stelle EM)E in der Figo 9J9 wo eine Verzweigung auf die Y5-Markierung erfolgt ο Wenn T5 gesetzt ist, ist keine Selbstdecrementierung erforderlich, der Programmzähler und"das MA-Begister. werden * vielmehr incrementiert9 und der Teil der variablen Feldadressierung des Programms wird ausgeführte Wenn die Y3-Maskierung gesetzt ist, muß eine Selbstdecrementierung erfolgen«, Zunächst wird die T3-Markierung gesetzt, um zu vermeidsn9 daß das Programm diese Schleife erneut durchläuft» Weiterhin, wird der Speichejr 159 die Feldlängä plus Eins, in Vi geladen. Dies ist deshalb der Fall, weil das Programm derart kodiert ist,, daß die im Rechner berücksichtigte Feldlänge um Eins geringer ist als die tatsächliche Feldlänge«Bei SDX1 wird eine neue Bit-Adresse berechnetg. indem dieser Wert, von der alten Bit-Adresse abgezogen wird* Dies führt zu der richtigen Bit-Adresse nach der Selbstdecrementierungο Bei SDX2 wird der Inhalt von I teil weise übertragen, um,., gegebenenfalls einen Überlauf in das Bit
mit dem geringsten Stellenwert zu bringen, welches dann in ¥ masfeiert wird« Weiterhin wird die Adresse der ersten Beschreibung in das MA-Hegister geladen, und zwar zur-Vorbereitung des Ladens eines neuen Beginns der Peldadresse in diese Stelle» BeiSDÄ w±t& der Beginn, der Peldadresse um lins d©crementiert9 wenn dies erforderlich ist, und I wird als Byte mit sich selbst ausgetauscht, um die Bit-Adresse in die Bits 0 bis 3 von I zu verlagern- Der Rest von I wird dann bei SDX5 durch geeignete Maskierung ausgesondert. Die ursprüngliche Feldlänge, die sich niemals ändert, wird in die Bits 4- bis 7 von I durch geeignete Maskierung hineingebracht, und bei SDX? werden diese ursprünglichen zwei Werte alternativ berücksichtigt» Bei SDX8 und 9 wird das Zählerfeld in den Maschinenzähler geladen und um Bins decremöntiert»
iffird die Adresse der zweiten Beschreibung berechnet in das M-Begister geladen. Nun erfolgt sine Verzweigung aiaf den irorhergehendsn Inhalt (SBSS) des Maschinenzählers und di@ 11-Markierung ο In allen lallen wird der Inhalt von W9 der seinerseits die Bit~iL&ress3 mxd die Feldlänge enthält, alternativ im Maselaiagasählsr bez-üeksiolitigt, welcher die neue Sählimg enthalte SelalisBli-s«. adM sisr Überlauf2äaler entweder g@~ ίϋθΐ^'ϋ ©cter siarlieisges'Gell'bj xmß, die TI-HarltienaEg 'wird g©st@llt9 mn die Aiasfüis2?ii2ig dm} logisciaeii Operatiöaea in f©lg©acl©n irrograaM©« zu sraögliclaeae Wenn tie Selbstdecr^men-
ialsti©2i 'beeaclst ist, verzweigt slot das irrograsM an toll® SfDE9 -and ά®Έ -?ariaJöl3 leldadr-essenteil dieses likro-
Ia der ©feiges 3©s©!h5?©ibiing siad Terfaiires. und die iroeitsweise
km:ag -31ώ.©^ ''ras'iablsji I?3iclacb?9SsiisrTiagsia©tl2Ode zur g la. siisi-äa DiVGsaTssarisitmigssystsai "besols^isben women, si«s ia Fö^a ύοιι Sikroprograiaasn ausgebildete ssatrale iaags θ inosit aiu'^eist* Obwohl ia Tsj^bindang axt dieser it siae spssislle Aiisfühnmgsforia bssefeieben wurde, hat eias solans aiasfiiln^isgsfora nur Beispialeharalcter, da andere Befehle9 Formate und Einrishtnngen verwendet werden können, mn
5 098 08/082 4
die beschriebene Funktion auszuführen. Beispielsweise können andere Befehlssätze, andere Schaltungsanordnungen und andere Methoden der Indizierung und der Incrementierung verwendet werden, um die beschriebenen'Funktionen auszuführen.
Somit ist die Erfindung nicht auf die obige Ausführungsform beschränkt, sondern vielfältige Abwandlungen'sind im Rahmen der Erfindung denkbar.
- Patentansprüche -
50980870824

Claims (1)

  1. Patentansprüche
    1. Verfahren zur Verwendung von in einem Steuerspeicher eines Digitalrechners eingeschriebenen Mikroprogrammen zur Durchführung der Adressierung variabler Felder, dadurch gekennzeichnet , daß zunächst ein Befehl zur Adressierung eines variablen Feldes vom Hauptspeicher aufgerufen wird,.daß dieser Befehl dann in ein internes Register der zentralen Verarbeitungseinheit des Digitalrechners geladen wird, daß sich das Programm dann in ein Mikroprogramm im Steuerspeicher verzweigt, welches der Funktion dieses Befehls entspricht, daß dann ein Datenwort fester Länge aus
    . dem Hauptspeicher aufgerufen wird, daß dieses Datenwort in ein erstes und ein zweites internes Register der zentralen Verarbeitungseinheit geladen wird, daß das variable Feld in dem ersten Register rechtsbündig angeordnet wird, daß die Funktion des Befehls in dem variablen Feld im ersten Register abgearbeitet wird, daß das variable Feld in diejenige Stellung zurückverschoben wird, die es vor der rechtsbündigen Anordnung eingenommen hat, wenn dieser Befehl ein Speicherbefehl ist, und daß dann der Inhalt des zweiten Registers an seine ursprüngliche Stelle in dem Hauptspeicher gebracht wird, wenn der Befehl' ein Speicherbefehl ist.
    2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß alle Schritte repetitiv und zyklisch fortgesetzt werden und daß der Status eines Zählers gegenüber einer vorgegebenen Anzahl verglichen wird, um eine Schleifenendsteuerung zu bilden, wobei der Zähler zu Beginn jedes Zyklus incrementiert wird.
    509808/0824
    · "Verfahren nach Anspruch 1, dadurch g e k e η η zeichnet,, daß beim Aufrufen eines Datenwortes fester Länge die Speicherstelle dieses Datenwortes im Hauptspeicher ermittelt wird? und zwar durch einen zweiten Zähler, und daß dieser zweite Zähler zu Beginn jedes Zyklus incrementiert wirdο'
    4-O Verfahren zum Laden eines variablen Feldes, welches in zwei benachbarten Datenworten fester Länge eingeschrieben ist, aus einem Hauptspeicher an das Ende mit dem geringsten Stellenwert eines internen Registers einer zentralen Verarbeitungseinheit eines Digitalrechners, dadurch gekennzeichnet, daß zunächst ein Befehl zur Adressierung eines variablen Feldes vom Hauptspeicher aufgerufen wird, daß dieser Befehl dann in ein internes Register der zentralen Verarbeitungseinheit des Digitalrechners geladen wird^ daß sich das Programm dann in ein Mikroprogramm im Steuerspeicher verzweigt, welches der Funktion dieses Befehls entspricht} daß dann die zwei Datenworte fester Länge aus dem Hauptspeicher aufgerufen werden 9 welcher das variable. Feld enthält9 daß dann die Batenworte jeweils"" in das zweite und das dritte interne Register der zentralen Verarbeitungseinheit geladen iferden? daß das variable Feld .an äas En.de mit dem Bit mit dem, geringsten Stellenwert des zweiten Registers verschoben wird und daß die Funktion des Befehls auf dem variablen Feld abgearbeitet wird.
    5ο 'Verfahren zum Speichern eines variablen Feldes in beliebige aneinander angrenzende Bereiche in einem Hauptspeicher eines Digitalrechners j ohne daß die.Speicherstellengrensen beachtet werden, dadurch g e-'k e_ η η ζ e i c h η e t 9 daß ssunächst ein Speicherbefehl für das variable Feld aus dem Hauptspeicher aufgerufen wird, daß dieser Befehl in ein erstes
    509800/0824
    internes Register der zentralen Verarbeitungseinheit geladen wird, daß sich dag Programm auf einen Teil des Mikroprogramms im Steuerspeicher verzweigt, welcher der Funktion des Befehls entspricht, daß zwei benachbarte Datenworte fester Länge aufgerufen werden, welche das Variable Feld enthalten, daß diese Datenworte in das zweite vxi& das dritte interne Register der zentralen Verarbeitungseinheit geladen werden, daß das variable Feld von der Seite des geringsten Stellenwertes eines vierten Registers verschoben wird, in welchem es gespeichert war, und zwar in die Stellung die es in den zwei Datenworten einnimmt, daß das variable Feld durch Maskierung in diesen zwei Datenworten angeordnet wird und daß die zwei Datenworte in ihre ursprünglichen Plätze im Speicher abgespeichert werden.
    Digitalrechner-Anordnung mit einem Hauptspeicher zur Speicherung) von Befehlen fester Länge und von Datenworten in Speicherplätzen,, die feste Grenzen aufweisen, welche jeweils der Länge der Worte entsprechen und mit einer Feldadressierungselnrichtung, dadurch gekennzeichnet , daß eine logische Schaltung (1) vorgesehen ist, um mit den Worten fester Länge logische Operationen auszuführen, daß weiterhin Register (5»6,10,12,13,14·) vorhanden sind, welche mit der logischen Einrichtung (1) derart gekoppelt sind, daß sie die Worte fester Länge aufnehmen können, und zwar jeweils vor, während und nach der Ausführung der logischen Operationen mit den·Worten durch die logische Einrichtung (1), daß weiterhin eine Anpasseinrichtung (SA, SB) mit den Registern (55 6,10,12,13,14·) und mit der Speichereinrichtung (11) gekoppelt ist, um die Worte fester Länge zwischen diesen beiden Einheiten zu übertragen, und daß eine Steuerspeichereinrichtung (20) vorgesehen ist, welche auf die in den Registern (5,6,10,12,13,14·) geladenen Befehlsworte an-
    K09808/0824
    spricht, um einen einzelnen Befehl, der ursprünglich aus der Hauptspeichereinrichtung (11) übertragen wurde, in eine Folge von Mikrobefehlen zu zerlegen, die intern in der Steuerspeichereinrichtung (20) gespeichert sind, um die Befehle auszuführen, welche die Funktion der Adressierung des variablen Feldes verlangt und um weiterhin die Mikrobefehlsfolge auszuführen, wobei die Steuerspeichereinrichtung (20) mit der Anpasseinrichtung (SA, SB) und mit der logikeinrichtung (1) gekoppelt ist, um die gewünschte Funktion in bezug auf das variable Feld zu erfüllen.
    Anordnung nach Anspruch 6, dadurch g e k e η η zeichnet , daß im Steuerspeicher eine Mikrobefehlseinrichtung vorgesehen ist, um den Typ, die Anzahl und die Folge der Befehle zu bestimmen, die von der Logikeinrichtung (1) und der Anpasseinrichtung (SA, SB) auszuführen sind, um die Durchführung der Adressierungsfunktion bezüglich des variablen Feldes auszuführen, daß der Steuerspeicher weiterhin eine Adressierungseinrichtung (19) aufweist, v/elche auf die Mikrobefehlseinrichtung anspricht und auf den Status der Register (5»6,10,12,13» 1*0»: um den Ort des nächsten Mikrobefehls zu bestimmen, der aμsgefühΓt werden soll und um diesen Befehl auszuführen, und daß die Steuerspeichereinrichtung weiterhin eine Steuerleitungseinrichtung (16) aufweist, welche auf die Mikrobefehlseinrichtung anspricht und~ mit der Anpass einrichtung (SA, SB) und mit der Logikeinrichtung (1) gekoppelt ist, wodurch die Logikeinrichtung (i) und die Anpasseinrichtung (SA, SB) zur Ausführung der durch die Mikrobefehlseinrichtung bestimmten Operationen gebracht wird.
    509808/0824
    8. Anordnung nach einem der Ansprüche δ oder 7» dadurch . gekennzeichnet , daß die Logikeinrichtung eine Austauschschaltungseinrichtung aufweist, um Teile von Datenworten fester Länge, die in einem . Register (5»6,1O,12,13,14) gespeichert sind, während einer einzelnen Mikrobefehls-Ausführungs-Zykluszeit aus zutaus chen.
    9- Anordnung nach Anspruch 8, dadurch gekennzeichnet, daß im Hauptspeicher (11) folgende Daten gespeichert sind: Verzweigungsbefehle, welche es gestatten, daß die Befehle zur Adressierung eines variablen Feldes wiederholt ausgeführt werden, Zählbefehle, un die Anzahl der Wiederholungen zu bestimmen und um die Stelle in einem variablen Feld zu bestimmen, welche auf dieser Anzahl basiert, Vergleichsbefehle, um zur Ausführungszeit die Größe dieser Anzahl im Vergleich zu einer vorgegebenen Grenze zu vergleichen, und Befehle, welche dazu dienen, die Wiederholung zu beenden, wenn die vorgegebene Grenze erreicht ist.
    10. Anordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet , daß die Register (5»6,1O, 12,13,14-) eine Indizierungseinrichtung zur Bestimmung der Adresse des Datenwortes fester Länge aufweisen, in welchem das laufende variable Feld gespeichert ist.
    509808/0824
DE2436963A 1973-08-06 1974-07-31 Verfahren und vorrichtung zur mikroprogrammierung in der zentraleinheit eines digitalrechners Pending DE2436963A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/385,763 US4109310A (en) 1973-08-06 1973-08-06 Variable field length addressing system having data byte interchange

Publications (1)

Publication Number Publication Date
DE2436963A1 true DE2436963A1 (de) 1975-02-20

Family

ID=23522778

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2436963A Pending DE2436963A1 (de) 1973-08-06 1974-07-31 Verfahren und vorrichtung zur mikroprogrammierung in der zentraleinheit eines digitalrechners

Country Status (5)

Country Link
US (1) US4109310A (de)
JP (1) JPS5040237A (de)
CA (1) CA1017068A (de)
DE (1) DE2436963A1 (de)
GB (2) GB1474280A (de)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5247639A (en) * 1975-10-15 1977-04-15 Toshiba Corp Information processing device
JPS5464933A (en) * 1977-11-01 1979-05-25 Panafacom Ltd Main storage extension system
US4219874A (en) * 1978-03-17 1980-08-26 Gusev Valery Data processing device for variable length multibyte data fields
US4447878A (en) * 1978-05-30 1984-05-08 Intel Corporation Apparatus and method for providing byte and word compatible information transfers
US4258419A (en) * 1978-12-29 1981-03-24 Bell Telephone Laboratories, Incorporated Data processing apparatus providing variable operand width operation
US4419727A (en) * 1979-01-02 1983-12-06 Honeywell Information Systems Inc. Hardware for extending microprocessor addressing capability
US4321665A (en) * 1979-01-31 1982-03-23 Honeywell Information Systems Inc. Data processing system having centralized data alignment for I/O controllers
US4374416A (en) * 1979-06-27 1983-02-15 Burroughs Corporation Linear sequencing microprocessor having word and byte handling
US4292667A (en) * 1979-06-27 1981-09-29 Burroughs Corporation Microprocessor system facilitating repetition of instructions
US4371931A (en) * 1979-06-27 1983-02-01 Burroughs Corporation Linear micro-sequencer for micro-processor system utilizing specialized instruction format
US4301505A (en) * 1979-06-27 1981-11-17 Burroughs Corporation Microprocessor having word and byte handling
US4291372A (en) * 1979-06-27 1981-09-22 Burroughs Corporation Microprocessor system with specialized instruction format
US4374418A (en) * 1979-06-27 1983-02-15 Burroughs Corporation Linear microsequencer unit cooperating with microprocessor system having dual modes
US4287560A (en) * 1979-06-27 1981-09-01 Burroughs Corporation Dual mode microprocessor system
US4293909A (en) * 1979-06-27 1981-10-06 Burroughs Corporation Digital system for data transfer using universal input-output microprocessor
US4346437A (en) * 1979-08-31 1982-08-24 Bell Telephone Laboratories, Incorporated Microcomputer using a double opcode instruction
US4412098A (en) * 1979-09-10 1983-10-25 Interstate Electronics Corporation Audio signal recognition computer
US4292470A (en) * 1979-09-10 1981-09-29 Interstate Electronics Corp. Audio signal recognition computer
JPS5652454A (en) * 1979-10-05 1981-05-11 Hitachi Ltd Input/output control method of variable word length memory
US4325118A (en) * 1980-03-03 1982-04-13 Western Digital Corporation Instruction fetch circuitry for computers
USRE32493E (en) * 1980-05-19 1987-09-01 Hitachi, Ltd. Data processing unit with pipelined operands
CA1174370A (en) * 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
US4424563A (en) 1980-09-05 1984-01-03 Hewlett-Packard Company Data processor including a multiple word processing method and device
US4520439A (en) * 1981-01-05 1985-05-28 Sperry Corporation Variable field partial write data merge
US4388495A (en) * 1981-05-01 1983-06-14 Interstate Electronics Corporation Speech recognition microcomputer
US4532586A (en) * 1981-05-22 1985-07-30 Data General Corporation Digital data processing system with tripartite description-based addressing multi-level microcode control, and multi-level stacks
US4502111A (en) * 1981-05-29 1985-02-26 Harris Corporation Token generator
US4530050A (en) * 1981-08-26 1985-07-16 Hitachi, Ltd. Central processing unit for executing instructions of variable length having end information for operand specifiers
US4654781A (en) * 1981-10-02 1987-03-31 Raytheon Company Byte addressable memory for variable length instructions and data
US4507732A (en) * 1981-10-05 1985-03-26 Burroughs Corporation I/O subsystem using slow devices
US4491908A (en) * 1981-12-01 1985-01-01 Honeywell Information Systems Inc. Microprogrammed control of extended integer and commercial instruction processor instructions through use of a data type field in a central processor unit
JPS58182754A (ja) * 1982-04-19 1983-10-25 Hitachi Ltd 演算処理装置
US4667305A (en) * 1982-06-30 1987-05-19 International Business Machines Corporation Circuits for accessing a variable width data bus with a variable width data field
US4506345A (en) * 1982-07-02 1985-03-19 Honeywell Information Systems Inc. Data alignment circuit
IT1153668B (it) * 1982-11-24 1987-01-14 Honeywell Inf Systems Organizzazione di memoria di controllo
US4724517A (en) * 1982-11-26 1988-02-09 Inmos Limited Microcomputer with prefixing functions
US4761755A (en) * 1984-07-11 1988-08-02 Prime Computer, Inc. Data processing system and method having an improved arithmetic unit
US5034900A (en) * 1984-10-05 1991-07-23 Hitachi, Ltd. Method and apparatus for bit operational process
US6552730B1 (en) * 1984-10-05 2003-04-22 Hitachi, Ltd. Method and apparatus for bit operational process
US5265204A (en) * 1984-10-05 1993-11-23 Hitachi, Ltd. Method and apparatus for bit operational process
JP2520882B2 (ja) * 1986-08-27 1996-07-31 株式会社日立製作所 デ−タ処理装置およびデ−タ処理方法
US4956809A (en) * 1986-11-24 1990-09-11 Mark Williams Company Method for canonical ordering of binary data for portable operating systems
BG45007A1 (de) * 1987-03-19 1989-03-15 Khristo A Turlakov
US5241644A (en) * 1987-07-15 1993-08-31 Nec Corporation Queue having long word length
US4942520A (en) * 1987-07-31 1990-07-17 Prime Computer, Inc. Method and apparatus for indexing, accessing and updating a memory
US4965751A (en) * 1987-08-18 1990-10-23 Hewlett-Packard Company Graphics system with programmable tile size and multiplexed pixel data and partial pixel addresses based on tile size
JP2748957B2 (ja) * 1987-09-30 1998-05-13 健 坂村 データ処理装置
JPH0789328B2 (ja) * 1988-05-31 1995-09-27 日本電気株式会社 データ処理装置
US5222225A (en) * 1988-10-07 1993-06-22 International Business Machines Corporation Apparatus for processing character string moves in a data processing system
US5155820A (en) * 1989-02-21 1992-10-13 Gibson Glenn A Instruction format with designations for operand lengths of byte, half word, word, or double word encoded in address bits
US5072372A (en) * 1989-03-03 1991-12-10 Sanders Associates Indirect literal expansion for computer instruction sets
US5276891A (en) * 1990-01-11 1994-01-04 Bull Hn Information Systems Inc. Alignment of sign, data, edit byte operand results for storage in memory
US5442769A (en) * 1990-03-13 1995-08-15 At&T Corp. Processor having general registers with subdivisions addressable in instructions by register number and subdivision type
JP2502403B2 (ja) * 1990-07-20 1996-05-29 三菱電機株式会社 Dma制御装置
DE69124437T2 (de) * 1990-08-09 1997-07-03 Silicon Graphics Inc Verfahren und Vorrichtung zum Umkehren von Byteordnung in einem Rechner
US5357622A (en) * 1990-09-27 1994-10-18 Dell U.S.A., L.P. Apparatus for queing and storing data writes into valid word patterns
US5436627A (en) * 1992-04-30 1995-07-25 Ricoh Company, Ltd. Method and system for processing mixed binary length encodings containing definite and indefinite length formats
US5465374A (en) * 1993-01-12 1995-11-07 International Business Machines Corporation Processor for processing data string by byte-by-byte
GB9509988D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Matrix transposition
JP2889845B2 (ja) * 1995-09-22 1999-05-10 松下電器産業株式会社 情報処理装置
US5754810A (en) * 1996-03-12 1998-05-19 International Business Machines Corporation Specialized millicode instruction for certain decimal operations
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6064714A (en) * 1998-07-31 2000-05-16 Lucent Technologies Inc. Shifter capable of split operation
US20050188182A1 (en) * 1999-12-30 2005-08-25 Texas Instruments Incorporated Microprocessor having a set of byte intermingling instructions
GB0024312D0 (en) * 2000-10-04 2000-11-15 Advanced Risc Mach Ltd Single instruction multiple data processing
US6922773B2 (en) * 2000-12-29 2005-07-26 Stmicroelectronics, Inc. System and method for encoding constant operands in a wide issue processor
US7162621B2 (en) * 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US20080177980A1 (en) * 2007-01-24 2008-07-24 Daniel Citron Instruction set architecture with overlapping fields
KR20100002708A (ko) * 2008-06-30 2010-01-07 삼성전자주식회사 반도체 소자 및 그 형성 방법
EP2223431A4 (de) * 2008-08-15 2010-09-01 Lsi Corp Dekodierung von nahe codewörter in einem ram speicher
GB2478731B (en) * 2010-03-15 2013-08-21 Advanced Risc Mach Ltd Operand size control

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL255604A (de) * 1959-09-08
US3166668A (en) * 1960-03-24 1965-01-19 Ibm Computer program system
US3238508A (en) * 1961-12-18 1966-03-01 Ibm Logical manipulator
US3331056A (en) * 1964-07-15 1967-07-11 Honeywell Inc Variable width addressing arrangement
US3496550A (en) * 1967-02-27 1970-02-17 Burroughs Corp Digital processor with variable field length operands using a first and second memory stack
US3735355A (en) * 1971-05-12 1973-05-22 Burroughs Corp Digital processor having variable length addressing
US3739352A (en) * 1971-06-28 1973-06-12 Burroughs Corp Variable word width processor control

Also Published As

Publication number Publication date
CA1017068A (en) 1977-09-06
GB1474279A (en) 1977-05-18
US4109310A (en) 1978-08-22
JPS5040237A (de) 1975-04-12
GB1474280A (en) 1977-05-18

Similar Documents

Publication Publication Date Title
DE2436963A1 (de) Verfahren und vorrichtung zur mikroprogrammierung in der zentraleinheit eines digitalrechners
DE2555963C2 (de) Einrichtung zur Funktionsmodifizierung
DE2113890C2 (de) Zentrale Verarbeitungseinrichtung für Datenverarbeitungsanlagen
DE2251876C3 (de) Elektronische Datenverarbeitungsanlage
DE2318069C2 (de) Mikroprogrammierte Rechenanlage mit Erweiterung von Steuerfunktionen mittels festverdrahteter logischer Matrix
DE1499200B2 (de) Datenverarbeitungsanlage mit vorranggesteuerter programm unterbrechung
DE1931966C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
CH650600A5 (de) Zentralprozessoreinheit einer datenverarbeitungsanlage mit operationscode-erweiterungsregister.
DE2331589A1 (de) Datenverarbeitungsanordnung
CH634939A5 (de) Kanaldatenpufferanordnung in einer datenverarbeitungsanlage.
DE2540824A1 (de) Auf verschiedene ausbaustufen veraenderbare abrechnungsmaschine
DE1275800B (de) Steuerwerk fuer datenverarbeitende Maschinen
DE2713253A1 (de) Programmlader fuer ein steuergeraet
DE1285219B (de) Steuerwerk zur Ausfuehrung von Unterprogrammen
DE3148099C2 (de) Anordnung zum Erkennen einer Digitalfolge
DE2101949A1 (de) Verfahren zum Schutz von Datengruppen in einer Multiprocessing-Datenverarbeitungsanlage
DE3121742A1 (de) Mikroprogrammsteuerverfahren und -einrichtung zu dessen durchfuehrung
DE2556617A1 (de) Datenverarbeiter zum rotierbaren verschieben von bits eines datenwortes
DE2720864A1 (de) Verfahren und anordnung zum lueckenfreien einspeichern einer anzahl von datenblocks unbestimmter laenge
DE2854400C2 (de) Anordnung zum Wechsel zwischen verzahnt zu verarbeitenden Programmen
DE1499224C3 (de) Datenverarbeitungsanlage mit Kellerspeichereinrichtungen
DE3000012A1 (de) Schaltungsanordnung zur ausfuehrung eines uebertragungsbefehls in einer datenverarbeitungsanlage
DE1195074B (de) Mikroprogramm-Steuerwerk einer programm-gesteuerten Rechenmaschine
DE10245367A1 (de) Prozessor mit expliziter Angabe über zu sichernde Informationen bei Unterprogrammsprüngen
DE2954533C2 (de)