DE2230102A1 - Rechenwerk fuer variable wortlaengen - Google Patents

Rechenwerk fuer variable wortlaengen

Info

Publication number
DE2230102A1
DE2230102A1 DE2230102A DE2230102A DE2230102A1 DE 2230102 A1 DE2230102 A1 DE 2230102A1 DE 2230102 A DE2230102 A DE 2230102A DE 2230102 A DE2230102 A DE 2230102A DE 2230102 A1 DE2230102 A1 DE 2230102A1
Authority
DE
Germany
Prior art keywords
register
bits
memory
section
microinstruction
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.)
Granted
Application number
DE2230102A
Other languages
English (en)
Other versions
DE2230102C2 (de
Inventor
Roger Erwin Packard
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.)
Unisys Corp
Original Assignee
Burroughs 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 Burroughs Corp filed Critical Burroughs Corp
Publication of DE2230102A1 publication Critical patent/DE2230102A1/de
Application granted granted Critical
Publication of DE2230102C2 publication Critical patent/DE2230102C2/de
Expired 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • 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/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs

Description

BURROUGHS CORPORATION, eine Gesellschaft nach den Gesetzen des Staates Michigan, Second Avenue at Burroughs, DETROIT, Michigan 48232 (V.St.A.)
Rechenwerk für variable Wortlängen
Die Erfindung befaßt sich mit digitalen Rechenwerken, insbesondere mit der Verarbeitung von Operanden und Daten von variabler Feldlänge.
Elektronische digitale Rechenwerke umfassen einen Funktionsgenerator oder eine arithmetische Einheit, sowie Register und innere Leitungswege, einen Speicherleitungsweg sowie eine Speicheradressiereinrichtung, die eine Übertragung digitaler Information von fester Breite ermöglichen. Dabei bedeutet BREITE die Anzahl derjenigen Bits, die parallel übertragen werden können. Eine serielle Maschine, Ln der die Bits sequentiell übertragen werden, besitzt somit eine Breite von einem Bit. Andere Maschinen arbeiten zeichenseriell, wobei jedes Zeichen binär codiert ist und eine Breite hat, die durch die Anzahl von Bits pro Zeichen bestimmt ist. Die meisten Hochgeschwindigkeits-Rechenwerke gehören jedoch zur Klasse der Parallel-Maschi-
209882/1031
nen, in denen die ein Wort ausmachenden Bits parallel übertragen werden. Einzelne Wörter können aus bis zu 64 Bits bestehen. Die Breite ist natürlich ein Kompromiß zwischen der Anzahl derjenigen Bits, die normalerweise für die übertragung von Befehlen und Operanden notwendig sind, und dem größeren Kostenaufwand, der. mit der Zunahiite von parallel übertragenen Bits verbunden ist.
Während bitserielle/zeichenserielle Maschinen die Möglichkeit eröffnen, die Feldlänge von Operanden und Befehlen schnell und leicht zu verändern, wird die Arbeitsgeschwindigkeit derartiger Maschinen im wesentlichen durch die relativ geringe Anzahl von Bits begrenzt, die pro Operation übertragen oder behandelt werden. Die Maschinen mit größerer Wortweite können dadurch, daß eine Parallelübertragung der Operanden- und Befehlsbits möglich ist, mit höheren Geschwindigkeiten betrieben werden; sie bieten jedoch beim Programmieren Schwierigkeiten, wenn Datenbehandlungen erforderlich sind, die eine geringere oder größere Anzahl von Bits betreffen als diejenige Breite, auf die die Maschine eingestellt ist. Wenn Operanden die normale Breite der Maschine überschreiten, sind Befehle von doppelter Genauigkeit vorgesehen. MASKIER-Befehle können erforderlich werden, um mit einer geringeren Breite bei bestimmten Operationen zu arbeiten. Der Programmierer hat also bei dem Entwurf der Software vieles zu berück'sichtigen, wenn er Informationen von anderer als der "Maschinenbreite" zu behandeln wünscht.
Die Erfindung ist demgegenüber auf ein Rechenwerk gerichtet, das dem Benutzer eine Maschine von variabler Breite anbietet, wobei der Programmierer größtmögliche Flexibilität in der Verwendung von Operanden und Befehlen mit irgendeiner
0 9 8 8 2/1031
223G102
gewünschten Breie ohne Modifikation von Programmbefehlen zur Verfügung hat. Wenn die Breite beispielsweise eines Operanden einmal angegeben ist, wird jeder Befehl von der Maschine so ausgeführt, als entspräche die Maschinenbreite der angegebenen Operandenbreite. Es wird kein Befehl von doppelter Genauigkeit oder ein spezieller Befehl zum Maskieren oder Ausrichten der Bits auf eine geringere als die Maschinenbreite benötigt. Dies wird, kurz gesagt, dadurch erreicht, daß ein mikroprograiraniertes Rechenwerk mit einem Hauptspeicher vorgesehen wird, der durch die Bitgrenze und die Länge der in einem Adressenregister gespeicherten Information adressierbar ist. Obgleich irgendeine Operandenlänge bis zur maximalen Speicherkapazität des Speichers von dem Inhalt des Adressenregisters bezeichnet werden kann, ist die Rechenwerk-Elektronik als eine Parallel-Maschine mit Registern und Datenübertragungsleitungen von fester Breite ausgelegt. Die Ausführung eines speziellen Programmbefehls geschieht unter Steuerung einer Folge von Mikrobefehlen, von denen der erste ein Vorgaberegister entweder auf die Maschinenbreite oder auf diejenige Operandenbreite setzt, die von dem Adressenregister angegeben wird, je nach dem, welcher Wert der kleinere ist. Der Befehl wird dann durch den Bestand an Mikrobefehlen in der Folge so ausgeführt, als hätte die Maschine diejenige Breite, die von dem Inhalt des Vorgaberegisters angegeben wird. Wenn die Operandenlänge größer als die Maschinenbreite ist, wird die von dem Adressenregister bezeichnete Bitgrenze der Operandenlänge vergrößert oder verkleinert um den von dem Vorgaberegister bezeichneten Betrag, und die Mikrobefehls-Folge wird so lange wiederholt, bis die von dem Vorgaberegister bezeichnete Breite auf Null reduziert ist, woraufhin das Rechenwerk die Befehlsfolge verläßt und den nächsten Programmbefehl holt.
Die Erfindung wird nachstehend an einem Ausführungsbeispiel unter Bezugnahme auf die beigefügte Zeichnung- beschrieben. Im einzelnen zeigen:
209882/1031
Fig. 1 ein Blockdiagramm eines mit den Merkmalen der Erfindung ausgestatteten Rechenwerkes;
Fig. 2 das Format eines Daten-Descriptors;
Fig. 3 eine Tabelle der Mikrobefehle zur Steuerung des Rechenwerkes;
Fig. 4 und 5 verschiedene Bedingungen bestimmter Mikrobefehle aus Fig. 3; und
Fig. 6 ein schematisches Blockdiagramm eines Teils der Rechenwerk-Schaltung gemäß Fig. 1.
Das Rechenwerk gemäß Flg. 1 arbeitet durch Ausführung von Mikrobefehlen, die eine Übertragung zwischen verschiedenen, noch zu beschreibenden Registern und einer Speichereinheit angeben. Die Speichereinheit weist einen Hauptspeicher 10 sowie eine Speicher-Nahtstelle 11 auf, die die Datenübertragung zwischen dem Hauptspeicher und einer Datenübertraguns-Sammelleitung steuert. Die Daten-Sammelleitung umfaßt 24 Parallel-Leitungen, die eine Parallelübertragung von bis zu 24 Bits zwischen dem Hauptspeicher 10 einer arithmetischen und logischen Einheit 12 und mehreren Registern ermöglicht. Diese Register umfassen ein X-Register 14 und ein Y-Register 16, die eine Speichermöglichkeit für zwei auf die beiden Operanden-Eingänge der arithmetischen und logischen Einheit 12 gegebene Operanden darstellen. Weiterhin sind drei Operations-Register vorgesehen, ein L-Register 18, ein T-Register 20 und ein CP-Register 22. Die Register L und T sind allgemeinen Zwecken dienende Register, die zusammen mit den Registern X und Y entweder als Quelle oder als Senke .für alle Lese/Schreibe-Operationen am Hauptspeicher lOdienen. Das L-Register und das T-Register sind adressierbar als volle 24 Bitregister oder als sechs 4 Bitregister, bzeichnet durch die Buchstaben A bis F.
209882/1031
Das CP-Register 22 kann für die vorliegende Beschreibung als nur 8 Bits lang betrachtet werden und ist nur an die 8 niedrigstwertigen Bitleitungen der Daten-Sammelleitung angeschlossen. Das CP-Register ist funktionell in drei Abschnitte gegliedert, die mit CPL von 5 Bits Länge, CPU von zwei Bits Länge und CYF von einem Bit Länge bezeichnet sind. Die funktionelle Kennzeichnung dieser drei Abschnitte wird weiter unten beschrieben.
Der Hauptspeicher IO ist ein sogenannter "free field"-Speicher, wie er beispielsweise in der gleichlaufenden deutschen Patentanmeldung P 22 mit der Bezeichnung
"Adressiereinrichtung für einen Speicher"(B208) von der gleichen Anmelderin beschrieben ist. Die gesamte Adressierung geschieht durch ein Feld, in dem die den Beginn des Feldes maskierende Bitgrenze und die Länge des Feldes von der Adresse bezeichnet sindtfährend jedes Speicherzyklus' werden maximal 24 Bits in den Speicher oder aus ihm heraus übertragen.
Das Rechenwerk umfaßt weiterhin einen Feldbestimmungs-Abschnitt für das Speichern von Descriptoren, die in dem Hauptspeicher IO Felder definieren. Der Feldbestimmungs-Abschnitt umfaßt ein F-Register 24, das ein 48 Bit Register ist. Das F-Register ist in zwei 24 Bitabschnitte FA und FB unterteilt. Der FB-Abschnitt hat seinerseits zwei weitere Abschnitte, nämlich einen FU-Abschnitt von 4 Bits und -einen FL-Abschnitt von 20 Bits. Wie in Fig. 2 erläutert,enthält bei Anwesenheit eines Datendescriptors in dem F-Register 24 der FA-Abschnitt die Bitgrenzenadresse und der FL-Abschnitt speichert die Feldlänge eines Feldes in dem Speicher (bis zu 2 Bits an Länge). Der FU-Abschnitt dient zur Bezeichnung der Einheitsgröße, z.B. des rein binären Codes (1 Biteinheit), des BCD-Codes (4 Biteinheit) oder eines Bit Codes.
Dem F-Register 24 ist ein Zwischenspeicher (scratchpad memory) 26 zugeordnet, der beispielsweise bis zu sechzehn 48 Bitwörter speichern kann. Die sechzehn Wortstellen in dem Zwischenspeicher sind mit P bis 15 bezeichnet. Der Zwischenspeicher ist funktionell in zwei Abschnitte gegliedert, den Abschnitt A und B, jeder von einer Breite von 24 Bits. Die beiden Abschnitte des Zwischenspeichers wie auch die Abschnitte des F-Registers 24 sind einzeln adressierbar für Übertragungen über die Daten-Sammelleitung. Weiterhin können alle 48 Bits des F-Registers von irgendeiner der 16 Wortstellen in dem Zwischenspeicher geladen werden, können in irgendeiner Stelle in dem Zwischenspeicher gespeichert oder mit irgendeiner Stelle in dem Zwischenspeicher ausgetauscht werden.
Die Steuerung des Rechenwerkes geschieht durch Folgen von Mikrobefehlen, die in einem M-Folge-Speicher 28 gespeichert sind. Die Mikrobefehle in der Folge werden jeweils einzeln aus dem M-Folge-Speicher 28 in ein M-Register 30 übertragen. Die Mikrobefehle haben eine Länge von 16 Bits, wobei die 16 Bits in dem M-Register auf eine Steuer-Sammelleitung gegeben werden, die zu der über das Rechenwerk verteilten und zu den verschiedenen Registern, der arithmetischen und logischen Einheit 12, dem Zwischenspeicher 26 und der Speichernahtstelle 11 zugeordneten Steuerlogik führt. Die Steuer-Sammelleitung weist 16 Leitungen für die Aufnahme von 16 parallelen Steuerbits auf. Der M-Folge-Speicher 28 wird durch ein A-Register 32 adressiert. Das A-Register 32 enthält diejenige Anzahl von Bits, die zur Adressierung aller Zellen in dem M-Folge-Speicher 28 notwendig sind. Als Beispiel sind 20 Bits gezeigt. Normalerweise wird das A-Register 32 um einen Schritt bei jedem Taktimpuls weitergestellt, wodurch der mchste Mikrobefehl in der Folge von dem Speicher 28 in das Register 30 übertragen wird. Der gleiche Taktimpuls, der die Übertragung des neuen Mikrobefehls
8 2/1031
in das M-Register 30 veranlaßt, bewirkt auch die Ausführung des laufenden Mikrobefehls in dem M-Register. Das A-Register 32 kann auf irgendeine neue Adresse von der Daten-Sammelleitung gesetzt werden, um eine Verzweigung in eine andere Mikrobefehl-Folge in dem M-Folge-Register 28 zu ermöglichen. Ein Stapel-Speicher 34 ist zweckmäßig vorgesehen, der als ein Rückstellstapel zum Speichern von Rückkehradressen arbeitet, um die Rückkehr zu einer bestimmten Mikrobefehlsfolge nach dem Aufruf eines Unterprogramms von Mikrobefehlen zu ermöglichen.
Fig. 3 zeigt eine Teilliste von Mikrobefehlen, von denen jeder bei seiner Speicherung in dem M-Register 30 Steuersignale über die Steuer-Sammelleitung zur Einleitung bestimmter Operationen abgibt. Jeder Mikrobefehl besteht aus 16 Bits. Ein Teil dieser Bits, irgendwo zwischen dem dritten und zwölften Bit, ist als Bezeichnung des speziellen Mikrobefehls codiert. Die restlichen Bits bezeichnen spezielle Register, einzelne Abschnitte von Registern, verschiedene Ausgangs-Funktionen der arithmetischen und logischen Einheit 12 und steuern verschiedene Modifikationen der von dem speziellen Mikrobefehl gelieferten Steuerfunktion. So wird beispielsweise der erste Mikrobefehl aus Fig. 3 ein REGISTER MOVE-Befehl genannt und wird durch die Bits 0001 an den vier hoc hstwertigen Bitstellen des Mikrobefehls bezeichnet. Die nächsten sechs Bits bezeichnen das Quellenregister (Ausgangs-Register),aus dem Daten ausgegeben werden sollen, und die/restlichen 6 Bits bezeichnen das Senkenregister (Eingangs-Register), das Daten von der Daten-Sammelleitung aufnehmen soll. Die Anzahl der über die Daten-Sammelleitung übertragenen Bits ist nicht notwendigerweise gleich dem Inhalt eines vollen 24-Bit-Registers. Wie oben bereits erwähnt, haben beispielsweise die Register L1T sechs 4-Bit-Abschnitte, von denen jeder einzeln adressierbar Ist, und zwar entweder als Quellenregister oder als
209832/1031
Senkenregister, in welchem Fall nur 4 Bits über die Daten-Sammelleitung übertragen werden würden. Wenn weniger als ein ganzes Wort von 24 Bits über die Daten-Sammelleitung übertragen wird, wird die entsprechende Anzahl der niedrigstwertigen Bitleitungen der Daten-Sammelleitung benutzt. Wenn beispielsweise die vier Bits des Abschnittes LA des L-Registers 18 als Quelle bezeichnet sind und der Abschnitt TF des T-Registers 20 als Senkenregister bezeichnet ist, würden die vier Bits über die vier niedrigstwertiger! Leitungen der Daten-Sammelleitung von LA nach TF übertragen werden.
Die 16 den Mikrobefehl in dem M-Register 30 ausmachenden Bits werden auf die Steuer-Sammelleitung gegeben, die die Bits an die Steuerlogik in jedem aktiven Element des Rechenwerkes verteilt, wo die Bits zur Steuerung der geeigneten Tore decodiert werden und die angegebene Mikrooperation bewirken. Es sollte weiterhin bemerkt werden, daß die arithmetische und logische Einheit 12 eine Anzahl von möglichen Ausgangsbedingungen erzeugt, wie etwa eine Summe, eine Differenz, das Komplement von X, das Komplement von Y, sowie verschiedene logische Funktionen, wie etwa X UND Y, X ODER Y, X EXCLUSIV ODER Y, etc., von denen jede als Quellenregister in dem REGISTER MOVE-Mikrobefehl durch die Codierung der sechs die Quelle bezeichnenden Bits angegeben sein kann. Die Operation der arithmetischen und logischen Einheit 12 wird im einzelnen in der gleichlaufenden Patentanmeldung
P 22 mit der Bezeichnung "Arithmetische Einheit
für varible Wortlängen" (B 205) der gleichen Anmelderin beschrieben.
Der nächste Befehl in der Liste der Fig. 3 ist der SCRATCHPAD MOVE-Mikrobefehl. Dieser Mikrobefehl steuert Übertragungen
209832/ 1031
zwischen irgendeinem Register, das von den Bits 6 bis 11 angegeben ist, und irgendeiner der sechszehn Wortadressen in dem Zwischenspeicher (Scratchpad memory), die durch die Bits O bis 3 bezeichnet ist. Wenn über die Daten-Sammelleitung nur maximal 24 Bits übertragen werden können, bezeichnet das Bit 4 des SCRATCHPAD MOVE-Mikrobefehls, ob der Abschnitt A oder der Abschnitt B des Zwischenspeichers (englisch: Scratchpad memory)an der übertragung beteiligt ist. Das Bit 7 des SCRATCHPAD MOVE-Mikrobefehls gibt an, ob das bezeichnete Register der Ausgang (Quelle) oder der Eingang (Senke) ist.
Der dritte Mikrobefehl der Teilliste aus Fig. 3 ist der READ/WRITE MEMORY-Mikrobefehl. Das Bit 11 gibt an, ob eine Lese- oder Schreiboperation erforderlich ist. Die.Bits 6 und 7 geben das Register an, das die Quelle oder Senke für die Speicheroperation ist. Es sind nur zwei Bits notwendig, da die Speicherübertragungen auf nur vier Register beschränkt sind, nämlich das X-Register 14, das Y-Registerl6, das L-Register 18 und das T-Register 20. Die ersten fünf Bits O bis 4 dienen zur Angabe der Bitzahl des zu übertragenden Wortes und können irgendeine Anzahl von Bits von O bis 24 spezifizieren. Wenn von dem READ/WRITE MEMORY-Mikrobef ehl eine Breite O angegeben wird, wird die Zahl der übertragenen Bits durch die fünf Bits in dem CPL-Abschnitt des CP-Registers 22 gesteuert, was im einzelnen noch weiter unten genauer erläutert wird.
Da jede Speicherübertragungsoperation eine Adressierung des Hauptspeichers von dem F-Register 24 erfordert, kann es erwünscht sein, die von dem Inhalt des FA-Abschnittes des Registers 24 bezeichnete Bitgrenzenadresse zu vergrößern oder zu erniedrigen, und den FL-Abschnitt des F-Registers 24 zu vergrößern oder zu verkleinern. Diese Operationen werden von
2 Ü U L ',) 2/1031
den COUNT FA/FL-Bits 8,9 und IO des READ/WRITE MEMORY-Mikrobefehls angegeben. Die Codierung dieser drei verschiedenen Bits ist in der Tabelle der Fig. 4 eingetragen. Der Betrag, um den die FA und FL-Register vergrößert oder verkleinert werden, ist stets der gleiche wie die Anzahl der bei der Speicheroperation übertragenen Bits. Dies wird entweder durch die fünf Bits in CPL oder durch die ersten fünf Bits des READ/WRITE MEMORY-Mikrobefehls angegeben, wenn sie nicht 0 sind.
Die Vergrößerungs- und Verkleinerungsfunktion wird durch eine im ganzen mit 36 bezeichnete Einstellschaltung gesteuert. Diese Schaltung empfängt Steuerbits von dem M-Register 3O über die Steuer-Sammelleitung und wählt mit Hilfe einer nicht dargestellten Torschaltung entweder die fünf Bits aus CPL oder die fünf Bits (LIT) aus dem in dem M-Regiser 30 enthaltenen Mikrobefehl aus und gibt sie entweder auf einen oder auf beide Addierer 37 und 39. Die zwei Addierer sind an die Registerabschnitte FA und FL angeschlossen. Die Addierer addieren oder subtrahieren von dem Inhalt des FA und FL-Abschnittes den von CPL oder LIT bestimmten Betrag.
Der nächste Mikrobefehl aus der Liste in Fig. 3 ist der BRANCH-Mikrobefehl. Er wird bezeichnet durch 110 in den ersten drei Bitstellen des Wortes in dem M-Register 30 und hat die Wirkung, daß die niedriastwerti ρπ υ Bits des Mikrobefehls in dem M-Register 30 in die niedricrstwertiqen 13 Bitpositionen des A-Registers 33 übertragen werden. Dadurch verzweigt sich der M-Folge-Speicher 28 zu einer neuen Stelle, beispielsweise kehrt er zurück zu dem Anfang einer Folge von Mikrobefehlen oder springt in eine andere Folge von Mikrobefehlen in dem M-Folge-Speicher 28.
Der nächste Mikrobefehl aus Fig. 3 ist der COUNT FA/FL-Mikrobefehl. Die Bits 5, 6 und 7 sind die COUNT FA/FL-Schlüsselbits und liefern die gleiche Funktion wie in dem ' Befehl READ/WRITE MEMORY für die Vergrößerung oder Verkleinerung der Registerabschnitte FA und FL entsprechend den Bedingungen, wie sie Tabelle Fig. 4 zeigt. Die ersten fünf Bits, wenn sie nicht gleich O sind, werden als Zeichen zur Bestimmung des Betraqes benutzt, um welchen diese Register erhöht- oder erniedrigt werden sollen. Anderenfalls werden die fünf Bits im CPL benutzt.
Noch ein weiterer Mikrobefehl in der Liste gemäß Fig. 3 ist der in EXCHANGE-Befehl. Er dient zum Austausch von 48 Bitwörtern zwischen den Zellen in dem Zwischenspeicher 26 und dem F-Register 24. Zwei Zwischenspeicherstellen werden in dem Mikrobefehl bezeichnet, von denen eine die Quelle und eine die Senke in der Austauschoperation ist. Diese Adressen können auf die gleiche Zelle in dem Zwischenspeicher weisen. Die Ausführung dieses Mikrobefehls läßt das Bitwort in der durch die Quellenadresse bezeichnete Zelle in das F-Register 24 placieren und gleichzeitig das in dem F-Register 24 gespeicherte Wort in die von der Senkenadresse bezeichnete Zelle einsetzen.
Der nächste Mikrobefehl in der Liste der Fig. 3 ist der BIAS genannte Mikrobefehl und wird durch die zwölf Bits 4 bis 15 bezeichnet. Die Funktion des BIAS-Befehls besteht darin, die Abschnitte CPL und CPU des CP-Registers 22 mit Hilfe einer Auswahlschaltung (englisch: bias logic) 38 zu setzen, die im einzelnen in Fig. 6 dargestellt ist. Die drei BIAS-Schlüsselbits werden, von der Auswahlschaltung 38 über die Steuer-Sammelleitung aus dem M-Register 30 empfangen und auf einen Decodierer 40 gegeben, der einen von acht Ausgängen O bis 7 aktiviert. Diese entsprechen den acht Bedingungen, wie sie in Fig. 5 für die BIAS-Varianten notiert sind.
209882/1031
28 0102
Bei der O-Bedingung des Decodiererausganges überträgt ein Tor 42 den Einheitswert in dem Fü-Abschnitt des Registers 24 in den CPL-Abschnitt des Registers 22, wodurch der CPL-BIAS-Wert so gesetzt wird, daß er der Einheitengröße entspricht, die von dem in dem F-Register gespeicherten Descriptor bezeichnet ist. Wenn der Decodierer auf 1 gesetzt ist, wird CPL über ein Tor 4 4 durch den Ausgang einer logischen Schaltung 46 gesetzt, die einen Ausgang liefert, der einem der beiden Eingänge entspricht, je nach dem, welcher den kleineren Wert besitzt. Im Falle der logischen Schaltung 46 kommen die beiden Eingänge aus dem FL-Abschnitt des F-Registers 24, das die Feldlänge des von dem Descriptor in dem F-Register adressierten Operanden bezeichnet, sowie von dem binär codierten Ausgang einer Schaltung 48, die eine Konstante (K = 24) erzeugt, die der Maximalzahl von Bits entspricht, die während einer Operation über die Daten-Sammelleitung übertragen werden kann. Die logische Schaltung 46 weist einen Komparator 50 auf, der an die beiden Eingänge FL und K angeschlossen ist und einen der beiden Ausgangssignale K <FL oder K > FL erzeugt. Diese Ausgänge werden auf die Tore 52 bzw. 54 gegeben, wodurch der kleinere der beiden·Eingänge K und FL auf den Ausgang über eine ODER-Schaltung 56 gelangt.
Wenn der Ausgang des Decodierers 40 auf 2 gesetzt ist, entsprechend der dritten Variante der in der Tabelle der Fig. 5 aufgeführten Bedingungen, aktiviert er ein Tor 58, das den Ausgang einer logischen Schaltung 60 auf den CPL-Abschnitt des CP-Registers 22 koppelt. Die logische Schaltung 60, die mit der logischen Schaltung 46 identisch ist, vergleicht den SL-Abschnitt der O-Adressenstelle des Zwischenspeichers 26 mit der Konstante K = 24 und bestimmt den kleineren Wert der beiden, wodurch CPL auf die kleinere Feldlänge gesetzt wird, die von dem Descriptor in der ersten Zelle des Zwischenspeichers oder von der Konstanten 24 geliefert wird.'
209 8 3 2/1031
Wenn der Decodierer 40 auf 3 gesetzt wird, blendet ein Tor 62 in ähnlicher Weise den Ausgang einer identischen logischen Schaltung 6 4 auf CPL. Die zwei Eingänge der logischen Schaltung 6,4 werden von den Ausgängen der logischen Schaltungen 46 und 60 abgeleitet, wodurch sich ein Ausgang ergibt, der dem kleinsten Wert von K, FL, und SL entspricht. Ein Tor blendet für den Fall, daß der Decodierer 40 auf fünf gesetzt ist, den Ausgang einer logischen Schaltung 68 auf CPL. Die beiden Eingänge für die logische Schaltung 68 sind der Inhalt des CPL-Abschnittes des CP-Registers 22 und der Ausgang der logischen Schaltung 46. Der Ausgang der logischen Schaltung 6 8 entspricht demnach dem kleinsten der drei Werte K, FL und CPL. Ein Tor 70 koppelt in ähnlicher Weise den Ausgang einer logischen Schaltung 72 auf CPL, wenn der Decodierer auf Ii gesetzt ist. Die Eingänge zur logischen Schaltung 72 werden von dem Ausgang der logischen Schaltung 64
und dem Ausgang der logischen Schaltung 6 8 abgeleitet. Der Ausgang der logischen Schaltung 72 entspricht demnach dem
kleinsten der Werte K, FL, SL, und CPL.
Die Auswahlschaltung 38 gemäß Fig. 6 setzt weiterhin den CPU-Abschnitt des CP-Registers 22 auf den in dem FU-Abschnitt des F-Registers 24 unter dem FU-Abschnitt der ersten Zelle des Zwischenspeichers 26 gespeicherten Einheitswert. Dies wird durch zwei Tore 74 und 76 erreicht, die beziehentlich FU
und SU über eine ODER-Schaltung 78 auf den CPU-Abschnitt des CP-Registers 22 koppeln. SU wird nur dann benutzt, wenn die BIAS-Varianten anzeigen, daß eine BIAS-durch-SL-Operation
stattfinden soll. Somit wird der Ausgang 2 aus dem Decodierer 40 auf'das Tor 76 gegeben. Der gleiche Ausgang wird über eine Inverterstufe 80 auf das. Tor 74 gegeben, so daß
FU auf CPU bei allen anderen BIAS-Variantenbedingungen als zv/ei gegeben wird.
209b32/1031
Ein weiteres Merkmal des BIAS-Mikrobefehls ist das TEST-Bit, das an der O-Bitsteile des BIAS-Mikrobefehls steht (Fig. 3). Wenn das TEST-Bit gesetzt ist, läßt es die fünf Bits, die zu dem CPL-Abschnitt des CP-Registers 22 gehen, durch ein Tor 81 (Fig. 6) an eine Decodierschaltung 86 gehen, die ein Ausgangssignal abgibt, welches anzeigt, wann CPL nicht gleich O ist (CPL ^ O). Die Funktion des TESTS besteht darin, das Rechenwerk zum Überspringen des nächsten Mikrobefehls in der Folge zu veranlassen, wenn CPL nicht auf Null gesetzt ist. Während der Ausführung des BIAS-Mikrobefehls in dem M-Register 30, wird dann, wenn der Ausgang der Decodierschaltung 86 den Zustand CPL ^ 0 anzeigt, das M-Register 30 während des Holens des nächsten Mikrobefehls insgesamt auf 0 gesetzt. Ein M-Register 30 mit sämtlichen Nullen wird als ein NoOP (no operation)-Zustand bezeichnet. Das führt dazu, daß während des nächsten Taktimpulses keine Operation stattfindet, während der nächste Mikrobefehl in der Folge von dem M-Folge-Speicher 28 geholt Wird. Das zwangsweise auf Null setzen des M-Registers 30 wird von einer NoOP-Schaltung 88 bewirkt, die auf den CPL φ 0-Ausgang der Decodierschaltung 86 während des Holens des nächsten Mikrobefehls hin aktiviert wird.
Mit dieser Anordnung kann der nächste auf den BIAS-Mikrobefehl folgende Mikrobefehl in der Programmfolge ein BRANCH-Befehl sein. Die Verzweigeoperation wird nur ausgeführt, wenn CPL durch die BIAS-Operation auf Null gesetzt worden ist, anderenfalls wird die Verzweigeoperation durch einen NoOP-Zustand ersetzt, und der nächste Mikrobefehl in der Folge nach dem BRANCH wird in das M-Register 30 geholt.
Zusätzlich zu dem oben beschriebenen READ/WRITE MEMORY-Mikrobefehl benutzen andere Mikrobefehle den Inhalt des CPL-Abschnittes des CP-Registers 22 in der Weise, wie er von dem BIAS-Mikrobefehl gesetzt worden ist, um die an der
2 0 9 C J 2 / 1 U 3 1
MikroOperation beteiligte Operandenbitzahl automatisch zu steuern. Eine derartige Operation ist SHIFT/ROTATE T-Register. Dieser Mikrobefehl (Fig. 3) wird durch den Code 1010 in den höchsten vier Bitstellen bezeichnet. Der Befehl läßt den T-Register-Inhalt während, der Übertragung in ein Serlcenregister verschieben oder nach links zyklisch verschieberPer Befehl bezeichnet ein Senkenregister durch die nächsten sechs Bits, die das T-Register selbst als eine Senke enthalten können. Das nächste Bit zeigt an, ob eine Verschiebe- oder eine Rotier-Operation stattfinden soll. Die letzten fünf Bits bezeichnen die Anzahl der Bitpositionen. Der Inhalt des T-Registers wird verschoben oder nach links rotiert bei der übertragung in das Senkenregister. Wenn das Senkenregister ein anderes als das T-Register selbst ist, verbleibt der Inhalt des T-Registers ungeändert. Die Linkszählung kann irgend ein Wert von 0 bis 23 sein. Ein Wert von O zeigt an, daß die Linkszählung von dem Inhalt von CPL gesteuert werden soll. Somit wird die Linkszäh- . lung bei einer Verschiebe- oder R'otieroperation durch den Wert von CPL bestimmt, der von dem oben diskutierten BIAS-Mikrobefehl gesetzt worden ist. Die Verschiebe/Rotiere-Logik für das T-Register 20 ist bei 82 in Fig. 1 angedeutet.
Die Art und Weise, in der ein BIAS-Mikrobefehl beim Betrieb des Rechenwerkes nach Fig. 1 benutzt wird, kann am besten bei Betrachtung eines speziellen Beispiels, etwa in Form einer Addier-Operation, verstanden werden. Man betrachte den Fall, daß zwei. Operanden A und B addiert werden sollen und daß die Summe die Operanden in dem Akkumulator ersetzen soll, d.h. der Löschen- und Addiere-Befehl bekannter Rechenwerke. Da das erfindungsgemäße Rechenwerk mikroprograinmiert ist, sind die das Objektprogramm bildenden Befehle in dem Hauptspeicher gespeichert. Jeder Befehl wird durch eine Folge von Mikrobefehlen ausgeführt, die in dem M-Speicher 28 gespeichert ist. In dem M-Speicher ist weiterhin eine Folge
2098 82/1031
von Mikrobefehlen gespeichert, die das Adressieren und Auslesen des nächsten Programmbefehls aus dem Hauptspeicher mit Hilfe eines Descriptors in dem Zwischenspeicher steuern, und aus dem OP-Codeabschnitt des Befehls die Anfangsadresse in dem M-Speicher für die Mikrobefehlsfolge bestimmen, die diesen Befehl in dem Rechenwerk ausführt, und die in Abhängigkeit von den Adressen der von dem Befehl gelieferten Operanden die Datendescriptoren in den Zwischenspeicher lädt. Dies alles wird ausgeführt von einer mikroprogrammierten Hohl-lRoutine.
Bei der Ausführung eines ADDIERE-Befehls wird die Folge von Mikrobefehlen, die in Sequenz aus dem M-Folge-Speicher 28 in das M-Register 30 ausgelesen werden, das folgende umfassen:
START
BIAS - Mit FL & TEST
BRANCH - Gehe zu NEXT ROUTINE
READ/WRITE - Lies bis X,vergr.FA,verm.FL
EXCHANGE - S-O <r~ F F ^- S-O
READ/WRITE . - Lies bis Y
MOVE - 3inärsumme nach T
CARRY - CAF «-CYL
WRITE - Schreibe von ifverqr.FA, verm.FL
EXCHANGE - S-O ^r-F F «-S-0
BRANCH - Gehe zu START
Weiterhin wird vor der Ausführung des ADDIERE-Befehls während derHohlroutine ein Descriptor in dem F-Register 24 gespeichert, der. die Anfangsadresse und die Feldlänge des Operanden A bezeichnet, während ein die Anfangsadresse und Feldlänge des Operanden B bezeichnender Descriptor in der Adressenstelle 0 des Zwischenspeichers 26 steht. Die Descriptoren für die Operanden A und B haben beispielsweise ein in Fig. 2 dargestelltes Format; Fig. 2 zeigt ein Daten-Descriptorwort in dem F-Register 24.
2098 8 2/1031
Die Descraptoren können beispielsweise anzeigen/ daß der Operand Α· an der Adressengrenzstelle 1000 (FA = 1000) beginnt, eine Feldlänge von 37 Bits (FL = 37) besitzt, und daß die Einheitsgröße ein Binärbit ist (FU = O). Für den Operanden B, dessen Descriptor in der Nullstelle des Zwischenspeichers 26 gespeichert ist, kann die Bitgrenzadresse im Hauptspeicher beispielsweise bei 2000 beginnen (SA-1 = 2000), die Feldlänge 37 Bits betragen (SL = 27) und die Einheitsgröße kann wiederum ein Binärbit sein (SU = O).
Aus der Tabelle geht hervor, daß der erste Mikrobefehl ein BIAS-Befehl.ist, bei dem vermöge der Variante 1 (Fig. 5) FL mit 24 verglichen und der kleinere Wert in den CPL-Abschnitt des CP-Registers 22 in der im Zusammenhang mit Fig. 6 beschriebenen Weise gespeichert wird. Das-CP-Register 22 ist somit mit den ersten fünf Bits, die CPL =24 anzeigen, gesetzt, da 24 zu Beginn kleiner als 37 Bits ist, die durch FL und SL bezeichnet sind. Das Testbit des BIAS-Befehls ist anfänglich gesetzt und erfordert einen Test, um zu bestimmen, ob CPL auf Null gesetzt ist. Da es auf 24 gesetzt ist, wird ein NoOP in das M-Register 30 anstelle des nächsten Mikrobefehls gesetzt, der ein BRANCH-Befehl ist. Aufgrund des NoOP passiert während des nächsten Taktes überhaupt nichts, so daß der nächste Mikrobefehl in der Folge in das M-Register 30 geholt wird.
Nach der vorstehenden Tabelle ist der nächste Mikrobefehl ein READ/WRITE-Mikrobefehl, der die 24 am wenigsten signifikanten Bits des Operanden A in das X-Register 14 übertragen läßt, wobei die Bitgrenzenadresse in dem FA-Abschnitt des F-Registers 24 und der Inhalt von CPL benutzt wird, um die Anzahl der zu übertragenden Bits, nämlich 24 Bits, zu bestimmen. Der READ-Mikrobefehl gibt weiterhin an, daß FA um CPL vergrößert und das FL um CPL vermindert werden soll. Man bemerke, daß die COUNT-Variante in dem READ-Mikrobefehl auf
2 Ü y b .J 2 1 1 0 3 1
Oll gesetzt ist, um das Vergrößern von FA und das Verkleinern von FL entsprechend den COUNT-Varianten von Fig. 4 zu bezeichnen. Die fünf niedrigsten Bits des Mikrobefehls entsprechend der Übertragungsbreite des READ-Befehls sind auf Null gesetzt und zeigen an, daß die Anzahl der zu übertragenden Bits und das Vergrößern und Verkleinern von FA und FL durch den Inhalt des CPL-Abschnittes des CP-Registers 22 gesteuert werden soll.
Der nächste Mikrobefehl in der Folge ist der EXCHANGE-Befehl, der dafür sorgt, daß die Descriptoren in dem F-Register 24 und an der Adressenstelle O des Zwischenspeichers 26 ausgetauscht werden, wodurch der Descriptor des Operanden B in das F-Register 24 gesetzt wird. Daran anschliessend folgt ein weiterer READ-Befehl, in dem das Senkenregister (Eingangsregister) als das Y-Register 16 bezeichnet ist. Die COUNT^Variante ist auf Null gesetzt und zeigt an, daß weder ein Vergrößern noch ein Verkleinern während der Ausführung des READ-Befehls stattfinden soll. Wiederum ist die Übertragungsbreite auf Null gesetzt, so daß der Inhalt des CPL-Abschnittes des CP-Registers 22, wie er von dem BIAS-Befehl gesetzt worden ist, dazu benutzt wird, die Anzahl der Bits, die von dem Hauptspeicher IO in das Y-Register 16 übertragen werden, zu steuern.
Mit den 24 niedrigstwertigen Bits des Operanden A in dem X-Register 14 und den 2 4 niedrigstwertxgen Bits des Operanden B in dem Y-Register 16 bildet die arithmethische und logische Einheit 12 einen Ausgang, der die Binärsumme der Operanden in den Registern X und Y ist. Die Anzahl paralleler Bits aus dem Ausgang der arithmetischen und logischen Einheit 12 wird gesteuert durch den augenblicklichen Wert CPL, nämlich 24. Die Art und Weise, in der die arithmetische und logische Einheit Ergebnisse variab-
2 0 9 8 3 2 I Ί Ü 3 1
ler Länge in Abhängigkeit von CPL liefert, ist in der gleichlaufenden Patentanmeldung P 22 mit der
Bezeichnung "Arithmetische Einheit für variable Wortlängen" (B205) beschrieben.
Der nächste Mikrobefehl ist ein MOVE-Befehl, der die Binärsumme am Ausgang der arithmetischen und logischen Einheit 12 über die Daten-Sammelleitung in das T-Register 20 überträgt. Wie bereits ausgeführt im Zusammenhang mit dem in Fig. 3 enthaltenen MOVE-Befehl, können die verschiedenen arithmetischen und logischen Ergebnisse, die von der arithmetischen und logischen Einheit 12 erzeugt werden, einzeln als Quelle von dem MOVE-Befehl bezeichnet werden. In diesem Fall wählen die Quellenbits des in dem M-Register 30 vorhandenen MOVE-Befehls, die über die Steuer-Sammelleitung auf die arithmetische und logische Einheit 12 gegeben sind, als Ausgang der Einheit 12 die Binärsumme und geben sie "auf die Daten-Sammelleitung. Zur gleichen Zeit bezeichnet der MOVE-Befehl" mit Hilfe der Steuer-Sammelleitung das T-Register 20 als Senkenregister (Eingangsregister), wodurch die Binärsumme der niedrigstwertigen 24 Bits der Operanden A und B über die Daten-Sammelleitung in das T-Register 20 geladen werden. Wenn die arithmetische und logische Einheit 12 als Ergebnis der Addition einen Übertrag erzeugt hat, dient er zum Setzen des Übertrags-Flip-Flops in dem CP-Register 22 mit Hilfe des folgenden CARRY-Befehls. Eine Übertraglogik 84 wählt das richtige Übertragbit (CYL = Binärübertrag; CYD = dezimaler Übertrag) aus dem Ausgang der Einheit 12 in Abhängigkeit von dem CARRY-Mikrobefehl in dem M-Register 30 und speichert es in dem CYF-Abschnitt des CP-Registers 22.
2 o y s ;s 2 /1 ο 31
Es schließt sich ein WRITE-Befehl an, der das T-Register 20 als Quellenregister (Ausgangsregister) und CPL als übertragungsbreite bezeichnet, und FA als Grenzadresse in dem Hauptspeicher 10 benutzt. Da dies die gleiche Adresse ist wie diejenige, die zum Auslesen des Operanden B diente, sieht man, daß die 24 niedrigstwertigen Bits der Summe der beiden Operanden an die Stelle der niedrigstwertigen Bits des Operanden B in dem Hauptspeicher treten.
Zur gleichen Zeit wird die Bitgrenzadresse in FA durch CPL vergrößert und die Feldlänge FL wird um CPL verkleinert, um auf die restlichen Bits des Operanden B in dem Hauptspeicher 10 zu zeigen. Wiederum läßt ein EXCHANGE-Befehl den Inhalt des F-Registers 24 mit dem Descriptor in der Adressenstelle O des Zwischenspeichers 26 austauschen, wodurch der modifizierte Descriptor der verbleibenden Bits des Operanden A in das F-Register 24 zurückgespeichert wird. Der folgende BRANCH-Mikrobefehl läßt das A-Register 32 auf die Anfangsadresse der ADDIERE-Mikrobefehlsfolge zurücksetzen, so daß mit dem BIAS-Mikrobefehl begonnen wird.
Der BIAS-Mikrobefehl setzt bei erneuter Ausführung CPL auf den kleineren der erniedrigten Werte von FL und 24. Da in dem gegebenen Beispiel, wonach die Operanden aus 37 Bits bestehen, FL auf 13 (= 37-24) erniedrigt wurde, wird CPL jetzt auf 13 von dem BIAS-Mikrobefehl gesetzt. Da wiederum CPL ungleich Null war, führt der Test dazu, daß der folgende BRANCH-Befehl durch NoOP ersetzt wird und die Mikrobefehlsfolge weiter ausgeführt wird. Da CPL auf 13 statt auf 24 gesetzt ist, haben der READ/WRITE-Befehl und der MOVE-Befehl die Übertragung von lediglich 13 Bits über die Daten-Sammelleitung zwischen dem Hauptspeicher 10 und den Registern X und Y, zwischen der arithmetischen und logischen Ein-
2 υ y b :< 211 ο 3 τ
heit 12 und dem T-Register 20, sowie zwischen dem T-Register 20 und dem Hauptspeicher 10 zur Folge. Das Rechenwerk arbeitet also, als bestünde die Breite aus 13 parallelen Bits die 13 Bits, die die Binärsumme der Bits in den Registern X und Y plus den Übertragwert in CYF repräsentieren, werden in den Hauptspeicher in dasjenige Feld des Operanden B zurückgespeichert, das sich an die vorherigen 24 Bits anschließt,so daß jetzt 37 Bits in dem Hauptspeicher an der Stelle des Operanden B gespeichert sind.
Wiederum^ wird das A-Register 32 auf die Anfarigsadresse der Mikrobefehlsfolge in. dem M-Folge-Speicher zurückgesetzt, jedoch ist jetzt FL gleich Null und daher wird CPL auf Null gesetzt. Dies wird von dem Test des BIAS-Mikrobefehls festgestellt und daher wird der nächste Mikrobefehl in der Folge nicht übersprungen. Folglich läßt der nachfolgende BRANCH-Befehl das A-Register 20 auf die Adresse der Hohlrouti n«= setzen und der nächste Befehl wird aus dem Hauptspeicher geholt.
Während das obige Beispiel zeigt, in welcher Weise der BIAS-Befehl in Verbindung mit einer Folge von Mikrobefehlen zur Ausführung eines ADDIERE-Befehls benutzt wird, kann der BIAS-Befehl auch am Anfang eines anderen Mikro-ünterprogramms benutzt werden, das sich irgendwelchen Mikrobefehlen bedient, die mit dem CPL-Abschnitt des CP-Registers 22 arbeiten.
Wie aus der vorstehenden Beschreibung hervorgeht, ist CPL implizit am MOVE-Befehl beteiligt, wo eine der möglichen Ausgangsfunktionen der arithmetischen und logischen Einheit 12 als eine Quelle bezeichnet werden, da CPL zur Steuerung der Anzahl von Bits am Ausgang der Einheit 12 benutzt wird. Der Wert von CPL, wie er von dem BIAS-Befehl gesetzt wird, ist explizit beteiligt an dem READ/WRITE-Befehl, dem COUNT-
209882/103 1
FA/FL-Befehl und an dem SHIFT/ROTATE T-Register-Befehl, venn die fünf niedrigstwertigen Bits dieser Befehle auf Null gesetzt sind, wie das oben in Verbindung mit Fig. 3 beschrieben wurde. Der BIAS-Befehl kann mit jedem Unterprogramm benutzt werden, das einen oder mehrere dieser Befehle verwendet.
Die Varianten-Bedingungen des BIAS-Befehls erlauben mehrere Arten von Speicherzugriffoperationen. Die Varianten-Bedingung 1 (Fig. 5) ermöglicht es durch das Setzen von CPL auf die von FU oder SU bezeichnete Einheitsgröße, daß eine Einheit, d.h. ein einzelnes Binärbit, eine BCE-4-Bit-7;ahl oder ein BCD-8-Bitzeichen bei jeder Ausführung des folgenden READ/WRITE MEMORY-Befehls in oder aus dem Speicher übertragen wird. Somit kann das Rechenwerk als bitserielle oder zeichenserielle Maschine betrieben werden. Die Varianten-Bedingungen 5 und 7 des BIAS-Befehls ermöglichen die Übertragung eines Operanden in oder aus dem Speicher in Einheiten, die weniger als 24 Bits umfassen. In-dem beispielsweise zu Beginn CPL auf acht und FL auf 40 gesetzt wird, werden unter Verwendung der Variante 5 jeweils 8 Bits des Operanden gleichzeitig übertragen, bis sämtliche 40 Bits des Operanden übertragen worden sind. Im Fall der Variante 1 werden in dem gleichen Beispiel 24 Operandenbits und dann 16 Operandenbits übertragen.
Vorstehend wurde ein Rechenwerk beschrieben, das Programmbefehle an Operandenbeliebiger Länge ausführen kann. Der BIAS-Befehl ermöglicht dadurch, daß der CPL-Abschnitt des Steuerregisters auf den kleineren Wert von der Breite der Daten-Übertragunqsleitung in dem Rechenwerk und der verbleibenden Operandenlänge gesetzt wird, dem Rechenwerk so zu arbeiten, als wäre die innere Breite geringer als die Breite der Übertragungsleitungen innerhalb des Rechenwerkes.
2U υbΛ 2, 10 3 1
Wenn daher der Operand breiter ist als die Übertragungsleitungen innerhalb des Rechenwerks, kann der Operand abschnittweise behandelt werden, wobei jeder Abschnitt der übertragungsbreite des Rechenwerks entspricht oder innerhalb der dadurch gegebenen Grenzen verbleibt; dabei wird das Rechenwerk automatisch auf eine geringere effektive Breite eingestellt, wenn der letzte verbleibende Operandenabschnitt kleiner als die Übertragungsbreite der Maschine ist. Somit braucht der Benutzer bei der Aufstellung des Objektprogramms die Programmbefehle in keiner Weise zu modifizieren, um sie verschiedenen Operandenlängen anzupassen. In-dem der BIAS-Mikrobefehl am Anfang jeder Mikrobefehlfolge zur Ausführung eines speziellen Befehls vorgesehen wird, paßt das Rechenwerk automatisch seine innere Operation den jeweiligen Erfordernissen im Hinblick auf eine spezielle Operandenlänge bei der Ausführung eines Programmbefehls an.
Es wurde ein mikroprogrammiertes, einem "free field"-Speicher zugeordnetes Rechenwerk beschrieben, in dem die Operanden beliebiger Lange bezüglich der Bitzahl verarbeitet werden können. Der "free field"-Speicher wird von einem Adressenregister adressiert, das auf die Grenze zwischen zwei beliebigen, in dem Speicher gespeicherten Bits als Feldanfang zeigt und die Anzahl der Bits in dem Feld bis zur maximalen Bitkapazität des Speichers angibt. Ein Steuerregister, als Vorgaberegister bezeichnet, bestimmt die Anzahl der parallelen Bits, bis zur Maximalzahl der bei einem Speieherzyklus möglichen parallelen Bits, die bei der Ausführung spezieller Mikrobefehle notwendig sind. Jede Mikrobefehlsfolge, die eine Behandlung von Operanden vorsieht, beispielsweise eine arithmetische Operation oder eine Datenübertragung, umfaßt eine Vorgabeoperation, in der das Vorgaberegister auf den kleineren Wert von der durch dias Ädressenregister bezeichneten Bitzahl und der Maximalan während eines Speicher zyklus1 übertragenen Bits ge-
209832/ 1 031
setzt wird. Wenn das Vorgaberegister gesetzt ist, dient es zur Steuerung innerer Operationen innerhalb des Rechenwerks und der Ubertragungsvorgänge zwischen dem Rechenwerk und dem Speicher, die gerade so ablaufen, als wäre die Maschinenbreite geändert worden.
2 0 a fa· 32/1031

Claims (19)

Patentansprüche
1.'Mikroprograminierter Rechner, gekennzeichnet durch einen adressierbaren Speicher (10) mit variabler Feldlänge zum Speichern binär kodierter Information; durch ein Adressenregister (24), in dem eine eine Bitstelle in dem Speicher und eine Anzahl von Bits in dem Speicher bezeichnende Adresse speicherbar ist; durch eine arithmetische Einheit (12) zur bitparallen Bearbeitung von Operanden variabler Länge; durch ein Steuerregister (30) zur Steuerung eines von mehreren verschiedenen Betriebszuständen; durch ein Vorgaberegister (22) zum Speichern der eine Anzahl von Bits bezeichnenden Informationsbearbextungsbreite, wobei der Vorgaberegisterausgang an die arithmetische Einheit (12) zur Steuerung der Operandenbreite des Ausgangs der arithmetischen Einheit angeschlossen ist; sowie durch eine auf eine erste Steuerbedingung (BIAS) des Steuerregisters (30) ansprechende Auswahlschaltung (40,44,46) zum Vergleich der von dem Adressenregister (24) bezeichneten Anzahl von Bits mit einer vorbestimmten Konstanten, die der Maximalzahl von' parallel in der arithmetischen Einheit bearbeitbaren Bits entspricht, sowie zum Einstellen des Vorgaberegisters auf die kleinere der beiden möglichen Zahlen.
2. Rechner nach Anspruch 1, dadurch gekennzeichnet, daß die Übertragung einer Gruppe von Bits aus dem Speicher in die arithmetische Einheit (12) von einem von dem Steuerregister (30) bezeichneten zweiten Betriebszustand abhängt und daß die Übertragung aus dem Speicher (10) unter Berücksichtigung der in dem Adressenregister (24) gespeicherten Bitstellenadresse auf eine solche Anzahl von parallelen Bits beschränkt wird, die von dem Vorgabere-
2 U y b 8 2 / 1 0 3 1
gister (22) angegeben ist.
3. Rechner nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß eine Speichersteuerung (11) eine variable Anzahl von Bits bis zu einer vorbestimmten Maximalzahl parallel aus gehend von Bitstellenadressen in dem oder aus dem Speicher während eines Speicherzyklus' überträgt; daß der Adressenabschnitt des Adressenregisters (24) sowie das Vorgaberegister (22) an die Speichersteuerung zur Anzeige der Bitadressenstelle und der Anzahl der Bits für einen Speicherzyklus angeschlossen ist; daß in dem Adressenregister (24) eine Bitadresse und die Anzahl der Bits in einem Feld in dem Speicher (10) gespeichert ist; daß in dem Vorgaberegister (22) die Anzahl der während eines Speicherzyklus1 zu adressierenden Bits gespeichert ist; daß eine Auswahlschaltung (40,44,46) auf ein erstes Steuersignal (BIAS)anspricht und in das Vorgaberegister (22) die kleinere Zahl von der in dem Adressenregister gespeicherten Zahl und der der maximal parallel übertragbaren Bitzahl entsprechenden Zahl setzt; und daß in Abhängigkeit von einem zweiten Steuersignal (READ/WRITE) ein Speicherzyklus eingeleitet wird.
4. Rechner nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß durch das zweite Steuersignal der Inhalt des Adressenregisters um den Inhalt des Vorgaberegisters bei Abschluß des Speicherzyklus geändert wird.
5. Rechner nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß bei Abändern des Inhalts des Adressenregisters entweder die Bitadresse und die Anzahl der Bits oder beide wahlweise erhöht oder erniedrigt werden um einen Betrag, der von dem Inhalt des Vorgaberegisters angegeben wird.
209ÖJÜ/1031
6. Rechner nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß die arithmetische Einheit mit einer an das Vorgaberegister angeschlossenen Steuerung ausgerüstet ist, um die Anzahl von parallelen Bits in dem von der arithmetischen Einheit nach Ausführung arithmetischer und logischer Operationen gelieferten Ergebnis auf die von dem Vorgaberegister angegebene Anzahl zu beschränken.
7. Rechner nach einem der vorstehenden Ansprüche, gekennzeichnet durch einen adressierbaren Speicher (10) sowie eine Speicherzugriffseinrichtung (11) zur Einleitung einer Parallelübertragung von Bits in den oder aus den Speicher, beginnend bei einer bezeichneten Bitstelle und eine bezeichnete Anzahl von Bits bis zu einer vorbestimmten Maximalzahl von Bits umfassend, durch ein Adressenregister (24) zur Speicherung mindestens eines kodierten Descriptorwortes, das in einem ersten Abschnitt (FA) eine Bitstelle für den Anfang eines Feldes in dem . Speicher und in einem zweiten Abschnitt (FL) die Anzahl der die Feldlänge bildenden Bits bezeichnet; durch ein Vorgaberegister (22) mit einem ersten Abschnitt (CPL) zur Bezeichnung einer Anzahl von bei der Ausführung bestimmter Mikoroperationen zu verwendenden Bits; sowie durch eine Steuerung (38) zur Einstellung des ersten Abschnittes des Vorgaberegisters auf eine vorbestimmte Zahl zur Steuerung der bei einer Speicherübertragung durch die Zugriffseinrichtung (11) beteiligten Anzahl von Bits.
8. Rechner nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß eine Steuerung für die arithmetische Einheit auf den Inhalt des Vorgaberegisters anspricht und den Ausgang der arithmetischen Einheit so steuert, daß die Anzahl der parallelen Bits der von dem Vorgaberegister bezeichneten Anzahl entspricht.
2 Ü y 8 i 2 / 1 ü 3 1
9. Rechner nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß die Descriptorwörter einen dritten Abschnitt aufweisen, der einen von mehreren Einheitenarten, in denen Daten kodiert werden können, bezeichnet, wobei verschiedene Arten mit einer verschiedenen Anzahl von Bits kodiert sind; und daß die Steuereinric htung auf den dritten Abschnitt des Descriptorwortes in dem Adressenregister (24) anspricht und den ersten Abschnitt des Vorgaberegisters auf eine Zahl setzt, die der Bitzahl der von dem Descriptorwort bezeichneten Einheitenart entspricht, wodurch die Speicherzugriff ssteuerung die Übertragung einer solchen Anzahl von Bits veranlaßt, die eine Einheit der bezeichneten Einheitenart entspricht.
10. Rechner nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß die Steuerung (38) den ersten Abschnitt des Vorgaberegisters auf die kleinere Zahl von der in dem zweiten Abschnitt des Descriptorwortes enthaltenden Zahl und .von der Konstanten, die der vorbestimmten festen Maximalzahl von übertragbaren Bits entspricht, setzt.
11. Rechner nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß die Steuerung den ersten Abschnitt des Vorgaberegisters auf die kleinere Anzahl von der in dem zweiten Abschnitt (FL) des Descriptorwortes gespeicherten Zahl und der in dem ersten Abschnitt des Vorgaberegisters gespeicherten Zahl sowie von der Konstanten, die der vorbestimmten festen Maximalzahl von übertragbaren Bits entspricht,- setzt.
12. Rechner nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß die Zahlenwerte des Inhalts des ersten und zweiten Abschnittes des Descriptorwortes um einen Betrag geändert wird, der von der in dem ersten Abschnitt des Vorgaberegisters gespeicherten Zahl bestimmt wird.
2 fj υ ': . . 1 P /
13. Rechner nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß ein Mikrobefehlsspeicher (28) eine Gruppe von Mikrobefehlen speichert und jeweils einen Mikrobefehl in ein Mikrobefehls-Speicherregister (30) überträgt; daß die Auswahlschaltung (40,44,46) auf einen ersten Mikrobefehl (BIAS) in dem Mikrobefehlsspeicherregister (30) anspricht und daß die Steuerung (36) auf einen zweiten Mikrobefehl in dem Mikrobefehls-Speicherregister zur Aktivierung der Speicherzugriffssteuerung (11) anspricht und den Inhalt des ersten Abschnittes eines vorstimmten Descriptorwortes in dem Descriptorwortspeicher (24,26,36) sowie den Inhalt des ersten Abschnittes des Vorgaberegisters■(22) auf den adressierbaren Speicher (10) zur Steuerung der Bitadresse und der zu übertragenden Anzahl von Bits gibt.
14. Rechner nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß in einer Schaltung (48) eine kodierte Zahl erzeugt wird, die die Maximalzahl von parallel übertragbaren Bits bezeichnet; daß eine Vergleichsschaltung (50) an einem Eingang die Konstante aus der Schaltung (48) aufnimmt und am anderen Eingang den Inhalt des zweiten Abschnittes des vorbestimmten Descriptorwortes in dem Descriptorwortspeicher aufnimmt und die kleinere Zahl von den auf ihre Eingänge gegebenen Zahlen auswählt; und daß bei Auftreten des ersten Mikrobefehls (BIaS) in dem Mikrobefehls-Speicherregister der Ausgang der Vergleichsschaltung auf den ersten Abschnitt des Vorgaberegisters gegeben wird.
15. Rechner nach Anspruch 14, dadurch gekennzeichnet, daß die Auswahlschaltung einen weiteren Eingang aufweist, der an den ersten Abschnitt des Vorgaberegisters angeschlossen
2Üüii.J2/ 103 1
8AD
223D102
16. Rechner nach Anspruch 15, dadurch gekennzeichnet, daß die Auswahlschaltung mit einem weiteren Eingang an den zweiten Abschnitt eines anderen Descriptorwortes in dem Descriptorwortspeicher angeschlossen ist.
17. Rechner nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß einer von zwei verschiedenen Mikrobefehlen in dem Mikrobefehlsspeicher ausgewählt wird, je nachdem, ob der Inhalt des ersten Abschnittes des Vorgaberegisters Null ist oder nicht Null ist.
18. Rechner nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß in Abhängigkeit von dem zweiten Mikrobefehl in dem Mikrobefehlsspeicherregister der Inhalt des ersten Abschnittes des vorbestimmten Datendescriptorwortes um den Betrag abgeändert wird, der in dem ersten Abschnitt des Vorgaberegisters enthalten ist.
19. Rechner nach einem der vorstehenden Ansprüche, dadurch gekennzeichnet, daß in Abhängigkeit von dem zweiten Mikrobefehl in dem Speicherregister der Inhalt des zweiten Abschnittes des vorbestimmten Descriptorwortes um einen Betrag abgeändert wird, der dem Inhalt des ersten Abschnittes des Vorgaberegisters entspricht.
5 ν , 103
DE2230102A 1971-06-28 1972-06-21 Mikroprogrammierter Prozessor mit bitparalleler Datenübertragung Expired DE2230102C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15729771A 1971-06-28 1971-06-28

Publications (2)

Publication Number Publication Date
DE2230102A1 true DE2230102A1 (de) 1973-01-11
DE2230102C2 DE2230102C2 (de) 1984-10-18

Family

ID=22563140

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2230102A Expired DE2230102C2 (de) 1971-06-28 1972-06-21 Mikroprogrammierter Prozessor mit bitparalleler Datenübertragung

Country Status (6)

Country Link
US (1) US3739352A (de)
JP (1) JPS5549336B1 (de)
BE (1) BE784859A (de)
DE (1) DE2230102C2 (de)
FR (1) FR2144307A5 (de)
GB (6) GB1390384A (de)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3858183A (en) * 1972-10-30 1974-12-31 Amdahl Corp Data processing system and method therefor
US3859636A (en) * 1973-03-22 1975-01-07 Bell Telephone Labor Inc Microprogram controlled data processor for executing microprogram instructions from microprogram memory or main memory
US3997878A (en) * 1973-07-27 1976-12-14 Rockwell International Corporation Serial data multiplexing apparatus
US3873976A (en) * 1973-07-30 1975-03-25 Burroughs Corp Memory access system
US4109310A (en) * 1973-08-06 1978-08-22 Xerox Corporation Variable field length addressing system having data byte interchange
US3916388A (en) * 1974-05-30 1975-10-28 Ibm Shifting apparatus for automatic data alignment
US3990052A (en) * 1974-09-25 1976-11-02 Data General Corporation Central processing unit employing microprogrammable control for use in a data processing system
US4042972A (en) * 1974-09-25 1977-08-16 Data General Corporation Microprogram data processing technique and apparatus
US4004281A (en) * 1974-10-30 1977-01-18 Motorola, Inc. Microprocessor chip register bus structure
US3978456A (en) * 1974-12-16 1976-08-31 Bell Telephone Laboratories, Incorporated Byte-by-byte type processor circuit
US3969724A (en) * 1975-04-04 1976-07-13 The Warner & Swasey Company Central processing unit for use in a microprocessor
US4041471A (en) * 1975-04-14 1977-08-09 Scientific Micro Systems, Inc. Data processing system including a plurality of programmed machines and particularly including a supervisor machine and an object machine
JPS5217732A (en) * 1975-07-31 1977-02-09 Sharp Corp Integrated circuit unit
FR2337376A1 (fr) * 1975-12-31 1977-07-29 Honeywell Bull Soc Ind Appareil permettant le transfert de blocs de donnees de longueur variable entre deux interfaces de largeur differente
US4021655A (en) * 1976-03-30 1977-05-03 International Business Machines Corporation Oversized data detection hardware for data processors which store data at variable length destinations
US4047247A (en) * 1976-04-07 1977-09-06 Honeywell Information Systems Inc. Address formation in a microprogrammed data processing system
US4135242A (en) * 1977-11-07 1979-01-16 Ncr Corporation Method and processor having bit-addressable scratch pad memory
US4161784A (en) * 1978-01-05 1979-07-17 Honeywell Information Systems, Inc. Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands
US4250560A (en) * 1978-01-16 1981-02-10 Jurgen Dethloff Text processing apparatus
JPS55500197A (de) * 1978-04-21 1980-04-03
US4291370A (en) * 1978-08-23 1981-09-22 Westinghouse Electric Corp. Core memory interface for coupling a processor to a memory having a differing word length
US4315308A (en) * 1978-12-21 1982-02-09 Intel Corporation Interface between a microprocessor chip and peripheral subsystems
US4258419A (en) * 1978-12-29 1981-03-24 Bell Telephone Laboratories, Incorporated Data processing apparatus providing variable operand width operation
GB2039104B (en) * 1979-01-02 1983-09-01 Honeywell Inf Systems Data processing system
US4240144A (en) * 1979-01-02 1980-12-16 Honeywell Information Systems Inc. Long operand alignment and merge operation
US4309754A (en) * 1979-07-30 1982-01-05 International Business Machines Corp. Data interface mechanism for interfacing bit-parallel data buses of different bit width
US4467443A (en) * 1979-07-30 1984-08-21 Burroughs Corporation Bit addressable variable length memory system
US4346437A (en) * 1979-08-31 1982-08-24 Bell Telephone Laboratories, Incorporated Microcomputer using a double opcode instruction
US4388682A (en) * 1979-09-04 1983-06-14 Raytheon Company Microprogrammable instruction translator
DE3069538D1 (en) * 1980-02-28 1984-12-06 Intel Corp Microprocessor interface control apparatus
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
US4821184A (en) * 1981-05-22 1989-04-11 Data General Corporation Universal addressing system for a digital data processing system
US4499535A (en) * 1981-05-22 1985-02-12 Data General Corporation Digital computer system having descriptors for variable length addressing for a plurality of instruction dialects
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
US4812971A (en) * 1983-10-03 1989-03-14 Digital Equipment Corporation Central processing unit for a digital computer
US4893235A (en) * 1983-10-03 1990-01-09 Digital Equipment Corporation Central processing unit for a digital computer
US4847759A (en) * 1985-03-18 1989-07-11 International Business Machines Corp. Register selection mechanism and organization of an instruction prefetch buffer
US5442770A (en) * 1989-01-24 1995-08-15 Nec Electronics, Inc. Triple port cache memory
US5319769A (en) * 1989-09-11 1994-06-07 Sharp Kabushiki Kaisha Memory access circuit for handling data pockets including data having misaligned addresses and different widths
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
US5465374A (en) * 1993-01-12 1995-11-07 International Business Machines Corporation Processor for processing data string by byte-by-byte
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
AU2009313722C1 (en) * 2008-11-17 2016-01-14 Future Fibres, LLC Rigging Terminals and Methods of Assembling Rigging Terminals
US9977619B2 (en) 2015-11-06 2018-05-22 Vivante Corporation Transfer descriptor for memory access commands

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3377620A (en) * 1964-04-10 1968-04-09 Mohawk Data Science Corp Variable word length internally programmed information processing system
US3331056A (en) * 1964-07-15 1967-07-11 Honeywell Inc Variable width addressing arrangement
US3510847A (en) * 1967-09-25 1970-05-05 Burroughs Corp Address manipulation circuitry for a digital computer
BE758815A (fr) * 1969-11-28 1971-04-16 Burroughs Corp Systeme de traitement d'information presentant des moyens pour la preparation dynamique d'adresses de memoire

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Siemens & Halske AG Datenverarbeitungs- anlage 3003, Befehlliste NV Bs 107/1, Mai 1963, S. 3 *

Also Published As

Publication number Publication date
GB1390388A (en) 1975-04-09
GB1390389A (en) 1975-04-09
GB1390386A (en) 1975-04-09
GB1390390A (en) 1975-04-09
GB1390384A (en) 1975-04-09
DE2230102C2 (de) 1984-10-18
US3739352A (en) 1973-06-12
GB1390387A (en) 1975-04-09
FR2144307A5 (de) 1973-02-09
JPS5549336B1 (de) 1980-12-11
BE784859A (fr) 1972-10-02

Similar Documents

Publication Publication Date Title
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE69133302T2 (de) Registerabbildung in einem einzigen Taktzyklus
DE2411963C3 (de) Elektronische Datenverarbeitungsanlage mit einer Prioritätssteuerschaltung mit änderbaren Steuerblöcken
DE2714805C2 (de)
DE3151745C2 (de)
DE2630323B2 (de) Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik
DE3424962C2 (de)
DE2847934A1 (de) Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher
DE2417795C2 (de) Datenverarbeitungsanlage
DE1499200B2 (de) Datenverarbeitungsanlage mit vorranggesteuerter programm unterbrechung
CH650600A5 (de) Zentralprozessoreinheit einer datenverarbeitungsanlage mit operationscode-erweiterungsregister.
DE2719635A1 (de) Anordnung fuer eine erweiterung einer mikroprogrammsteuerung einer datenverarbeitungsanlage
DE1499193B2 (de) Speicher-adressierschaltung
DE2430127A1 (de) Einrichtung zur steuerung des speicherzugriffs konkurrierender benutzer
DE2113891A1 (de) Datenverarbeitungssystem
DE2023354A1 (de) Programmierbare Einheit und Verfahren zum Betreiben einer programmierbaren Einheit
DE1931966B2 (de) Datenverarbeitungsanlage mit Assoziativspeichern
DE1285219B (de) Steuerwerk zur Ausfuehrung von Unterprogrammen
DE1275800B (de) Steuerwerk fuer datenverarbeitende Maschinen
DE2718110A1 (de) Datenverarbeitungseinheit
DE3900246C2 (de)
DE2458286A1 (de) Datenverarbeitungssystem zum verschieben von datenfeldern mit verschiedenen strukturen
DE3501903A1 (de) Im pipelinebetrieb arbeitende datenverarbeitungseinrichtung
DE2702722C2 (de) Einrichtung zur Verarbeitung nicht direkt ausführbarer Instruktionen
DE3121046C2 (de)

Legal Events

Date Code Title Description
OD Request for examination
8128 New person/name/address of the agent

Representative=s name: EISENFUEHR, G., DIPL.-ING. SPEISER, D., DIPL.-ING.

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee