Datenverarbeitungsanlage mit einem Speicher mit adressierbaren Speicherplätzen
Die Erfindung betrifft eine Datenverarbeitungsanlage mit einem adressierbare Speicherplätze enthaltenden Speicher und einer Zeitgebersteuereinheit, welche den Zeittakt des zentralen Rechners steuert, wobei ein Akkumulator mindestens einen adressierbaren Speicherplatz belegt.
Der arithmetische Teil einer Datenverarbeitungsanlage weist mehrere Komponenten auf, von denen eine üblicherweise ein Speicher ist und Akkumulator genannt wird. Der Akkumulator des arithmetischen Teiles wird normalerweise dazu verwendet, das Ergebnis arithmetischer Operationen zu speichern, die im Addierer durchgeführt worden sind. Der Addierer ist seinerseits eine weitere Komponente der arithmetischen Einheit. Weiterhin wird der Akkumulator dazu verwendet, zwischenzeitlich Operandenworte zu speichern, die in der arithmetischen Einheit arithmetischen Operationen unterworfen werden sollen, oder die mittels anderer Operationen in der Datenverarbeitungsanlage verarbeitet werden sollen. Ausserdem kann der Akkumulator dazu dienen.
Resultate von Datenverarbeitungsoperafionen zu speichern, die in der arithmetischen Einheit durchgeführt werden, jedoch keine arithmetischen Operationen sind.
Wenn man also in der Datenverarbeitungsanlage einen Befehl durchführt, kann dadurch der Inhalt des Akkumulators modifiziert werden. Ausserdem kann man bei der Durchführung von Befehlen den Inhalt des Akkumulators verwenden.
Es ist bekannt, in Datenverarbeitungsanlagen einen oder mehrere fest vorgegebene Speicherplätze im Speicher zu reservieren und diese fest vorgegebenen Speicherplätze als Akkumulator zu verwenden. Wenn man den Akkumulator während der Ausführung von Befehlen verwendet, um Daten zu verarbeiten, muss der Inhalt des Akkumulators häufig durch neue Informationen ersetzt werden, während gleichzeitig der bisherige Inhalt des Akkumulators aufbewahrt werden muss, dann muss der Inhalt an einem neuen Speicherplatz eingespeichert werden, dann muss die neue Information gelesen werden, beispielsweise im Speicher, und zum Schluss muss diese neue Information im Akkumulator eingespeichert werden. Diese unproduktiven Bewegungen der Information innerhalb des Speichers erfordern eine grosse Anzahl von Speicherzyklen, d. h.
Zeitperioden, die erforderlich sind, um Informationen auszulesen oder Informationen neu in dem Speicher zu speichern. Dadurch geht wertvolle Rechen- oder Verarbeitungszeit verloren.
In einer anderen bekannten Datenverarbeitungsanlage wird als Akkumulator der arithmetischen Einheit ein Register verwendet, das ausserhalb des Speichers liegt.
Aber auch die Verwendung eines ausserhalb des Speichers liegenden Registers als Akkumulator erfordert eine grosse Anzahl unproduktiver Speicherzyklen, um die Informationen aus dem Akkumulator einzuspeichern und sie durch neue Informationen zu ersetzen, die für die Durchführung eines vorgegebenen Befehls verwendet werden müssen. Züsätzlich kann der Inhalt eines solchen Akkumulatorregisters nicht explizit durch ein Befehlswort adressiert werden. Es ist daher wünschenswert, in einer Datenverarbeitungsanlage einen Akkumulator vorzusehen der eine bessere Ausnutzung der Datenverarbeitungszeit gestattet und eine überflüssige Datenübertragung während der Ausführung eines Befehles überflüssig macht.
Ziel der Erfindung ist daher ein Akkumulator in dem arithmetischen Teil einer Datenverarbeitungsanla- ge, der insbesondere die eigentliche Verarbeitungszeit für Datenverarbeitungsoperationen vermindert, bei denen der Akkumulator eine Rolle spielt.
In Datenverarbeitungsanlagen ist es häufig wünschenswert, Datenfelder unterschiedlicher Länge arithmetischen Operationen zu unterwerfen. So kann es beispielsweise während einer Datenverarbeitungsopera tion notwendig sein, Datenfelder, die nur ein einziges Informationswort enthalten, einem Datenfeld aus 3 Informationsworten hinzuzuaddieren. Bei den bisherigen Datenverarbeitungsanlagen war es erforderlich, dass die Grösse der Datenfelder, die arithmetischen Operationen unterworfen werden sollten, gleich waren. So wurde bei diesem Beispiel das Datenfeld, das nur aus einem einzigen Informationswort bestand, mit zwei zusätzlichen Worten kombiniert, die nur aus Nullen aufgebaut waren, um auf diese Weise ein Datenfeld aus drei Worten herzustellen, das einem anderen Datenfeld aus drei Worten hinzuaddiert werden konnte.
Man konnte jedoch auch bei den bekannten Anlagen zusätzliche Befehle verwenden, um Datenfelder unterschiedlicher Länge zu verarbeiten. Bei beiden Möglichkeiten wurden jedoch wertvolle Bearbeitungszeit und Speicherkapazität verschwendet. Es ist zwar denkbar, in die Datenverarbeitungsanlage bestimmte Befehle einzugeben, beispielsweise den Befehl, ein Datenfeld einfacher Länge einem Datenfeld dreifacher Länge hinzuzuaddieren, so dass arithmetische Operationen mit Datenfeldern unterschiedlicher Länge durchgeführt werden können. In der Praxis ist jedoch die Zahl der verfügbaren Operationskode beschränkt, die in einem Datenverarbeitungssystem für die Erkennung von Befehlen verfügbar sind.
Dadurch verbietet sich das Aufstellen von Operationskode von selbst, die jede beliebige Kombination unterschiedlicher Datenfeldlängen abdecken, die arithmetischen Operationen unterworfen werden können. Es ist demzufolge günstig, eine Anordnung zu treffen, durch die das Ausführen von arithmetischen Operationen mit Datenfeldern unterschiedlicher Länge erleichtert wird.
Die arithmetischen Einheiten vieler Datenverarbei tungsanl agen enthalten Akkumulatoren, deren Kapazität eine ganze Zahl fester Wortlängen beträgt. Bei einem solchen Akkumulator ist es möglich, Datenfelder, deren Länge die Länge eines einzelnen Wortes übersteigt, zweckmässig zu verarbeiten. Wenn man Datenfelder verarbeitet, deren Länge kleiner als die Kapazität des Akkumulators ist, werden auch diejenigen Datenverarbeitungsoperationen durchgeführt, die sich auf die Wortplätze höherer Ordnung des Akkumulators beziehen, selbst dann, wenn an diesen Akkumulatorplätzen keine Daten vorhanden sind. Hierdurch geht wertvolle Datenverarbeitungszeit verloren.
Es ist daher wünschenswert, in der arithmetischen Einheit einer Diatenverarbeitungs- anlage eine Akkumulatoranordnung zu treffen, die die Einstellung der effektiven Länge des Akkumulators für eine vorgegebene Datenverarbeitungsoperation er erlaubt.
Ziel der Erfindung ist daher eine Akkumulatoranordnung in einer Datenverarbeitungsanlage, zu schaffen und insbesondere eine solche, die die Verarbeitung von Datenfeldern variabler Länge in einer Datenverarbeitungsanlage erlaubt, die Worte fester Länge benutzt.
Die Anordnung soll die Beschränkung der effektiven Länge des Akkumulators für eine vorgegebene Datenverarbeitungsoperation auf einen Wert, der kleiner als die totale Länge des Akkumulators ist, erlauben. Dadurch werden bei Datenverarbeitungsoperationen mit Datenfeldern unterschiedlicher Länge Verarbeitungszeit und Speicherplätze eingespart. Das gilt im besonderen für Datenfelder, deren Länge kleiner als die Kapazität des Akkumulators ist.
Die Erfindung ist gekennzeichnet durch ein Register zum Speichern der Teiladresse mindestens eines durch den Akkumulator belegten Speicherplatzes eine Operationssteuereinheit und Schaltkreise zur Modifikation der im genannten Register gespeicherten Teiladresse zwecks Anderung des Akkumuiatorplatzes im Speicher für eine folgende Datenspeicherung.
Nach einer besonderen Ausführungsform der Erfindung kann ein Zwei-Bitregister vorgesehen werden, das im Folgenden Akkumulatorlängenregister genannt wird.
In diesem Register wird die Arbeitslänge oder die effektive Länge des Vier-Wort-Akkumulators im Speicher gespeichert. Die Arbeitslänge des Akkumulators kann auf eine einfache, zweifache, dreifache oder vierfache Wortlänge eingestellt werden, und zwar dadurch, dass man die Flipflops des Akkumulratorlängen- registers in vorgegebene Zustände bringt. Die effektive Länge des Akkumulators, die in dem Akkumulatorlängenregisters in vorgegebene Zustände bringt. Die effektive Länge des Akkumulators, die in dem Akkumulatorlängenregister dargestellt ist, bezeichnet die Akkumulatorworte, die beim Durchführen einer vorgegebenen Datenverarbeitungsfunktion teilnehmen. Die Anzahl der Worte in dem Datenfeld, das verarbeitet wird, kann grösser, gleich oder kleiner als die Anzahl der Worte in dem Arbeitsakkumulator sein.
Das hängt von der Datenverarbeitungsfunktion ab, die durchgeführt werden soll.
Im folgenden wird ein Ausführungsbeispiel der Erfindung in Verbindung mit den Zeichnungen im einzelnen beschrieben.
Fig. 1 ist eine schematische Darstellung einer Datenverarbeitungsanlage nach der Erfindung.
Fig. 2 ist eine symbolische Darstellung und zeigt die Organisation verschiedener Worttypen, die in der Anlage nach Fig. 1 verwendet werden.
Fig. 3 ist eine symbolische Darstellung und zeigt den zu verschiebenden oder umzuordnenden Akkumulator im Speicher des Zentralrechners aus Fig. 1.
In der vorliegenden Datenverarbeitungsanlage wird ein Binärkode verwendet. Eine binäre 1 kann durch ein positives elektrisches Signal von etwa +3,8V Höhe dargestellt werden, während eine binäre 0 durch ein elektrisches Signal in der Grössenordnung von + 0,2 V dargestellt ist.
Die Datengrundeinheit,die bei ider Verarbeitung und beim Datenaustausch in der vorliegenden Anlage verwendet wird, ist das Wort. Im vorliegenden Fall enthält ein Wort nach Definition 24 binäre Ziffern. Wenn das Wort in dem Speicher erscheint, wird noch eine 25.
binäre Ziffer verwendet, die zur Paritätsprüfung dient.
Die erste binäre Ziffer eines Datenwortes wird die Ziffer mit der höchsten Wertigkeit oder dem höchsten Stellenwert genannt, während die letzte binäre Ziffer die Ziffer mit dem niedrigsten Stellenwert oder der niedrigsten Wertigkeit ist. Die binären Ziffern zwischen der Ziffer mit dem höchsten und der Ziffer mit dem niedrigsten Stellenwert sind aufeinanderfolgend abnehmenden Stellenwerten zugeordnet.
Es werden drei verschiedene Worttypen verwendet: 1. Datenworte, 2. Befehlsworte, 3. Hilfsworte für die Adressierung und die Steuerung.
Datenworte, also der Worttyp No. 1, werden ferner unterteilt in a) alphanumerisohe Datenworte und b) binäre Datenworte.
Auch von Hilfsworten gibt es die verschiedensten Arten. Wie diese Hilfsworte zu verwenden sind, wird unten erklärt. Die Organisation eines jeden Worttyps und einer jeden Wortart sowie von einigen Hilfswörtern ist in der Fig. 2 dargestellt. Ein alphanumerisches Datenwort stellt vier Zeichen dar, während jedes Zeichen aus 6 binären Ziffern besteht. Das ist in der Fig. 2 gezeigt. Die 6 binären Ziffern eines jeden Zeichens eines alphanumerischen Datenwortes enthalten zwei Zonenbits B und A sowie 4 binärkodierte Dezimalbits (BCD). Die vier Zeichen eines alphanumerischen Datenwortes sind von links nach rechts dem Zeichen 0-3 angeordnet, wie es auch dargestellt ist. Das Zeichen 0 ist das Zeichen mit dem höchsten Stellenwert, während das Zeichen 3 das Zeichen mit dem niedrigsten Stellenwert ist.
Die Zeichen 1 und 2 sind in Übereinstimmung mit ihrer Stellung innerhalb des alphanumerischen Datenwortes aufeinanderfolgend abnehmenden Stellenwerten zugeordnet.
Die 6 binären Ziffern eines jeden Zeichens eines alphanumerischen Datenwortes machen 64 eindeutige Bitkombinationen möglich, die dazu verwendet werden, die Dezimalziffern 0-9, die Buchstaben A-Z des Alphabetes sowie bestimmte andere Symbole wie Interpunktionszeichen und ähnliches darzustellen. Die Zonenbits können dazu verwendet werden, den einzelnen Zeichenbits eine bestimmte Bedeutung zu geben, also beispielsweise die Bedeutung von dezimalnumerischen Werten, von Vorzeichen etc.
Ein binäres Datenwort stellt eine einzelne Zahl dar.
Die gesamten 24 Bits dieser Zahl werden als Informationseinheit betrachtet, ohne dass eine Auftrennung in Zeichen wie bei einem alphanumerischen Datenwort erfolgt. Die Organisation eines binären Datenwortes ist in der Fig. 2B dargestellt. Die binäre Ziffer 23 hat die höchste Stelligkeit und die Binärziffer 0 hat die niedrigste Stelligkeit in diesem binären Datenwort. Ein binäres Datenwort mit 24 Bits kann daher eine Dezimalzahl darstellen, die zwischen 0-16 777 215 liegt. Binäre Worte werden automatisch als positive Grössen behandelt, ohne dass Vorkehrungen getroffen werden, das Vorzeichen der Information anzugeben.
Die Operationen, die eine Datenverarbeitung bewirken, werden in dem System durch die Steuerung mittels einer Folge von Befehlsworten durchgeführt, die im Speicher 10 gespeichert sind. Hierbei wird zu einem Zeitpunkt immer nur ein Befehl ausgeführt. Die Folge, in der die Befehle ausgeführt werden, ist die sogenannte Programmfolge, die durch einen Zähler gesteuert wird.
In der Fig. 2C ist dargestellt, wie ein Befehlswort organisiert ist. Der Operationskode des Befehlswortes (Bits 18-23 im OC-markierten Feld) stellt die Operation oder den Programmschritt dar, der durchgeführt werden soll. Gleichzeitig zeigt der Operationskode an, ob der Befehl ein Ein-Adressen- oder ein Zwei-Adressenbefehl ist. Das Adressenfeld, das mit A bezeichnet ist (Bits 0-14), ist eine numerische Darstellung und gibt einen Ort im Speicher 10 an, aus dem Daten ausgelesen werden müssen, um sie bei der Durchführung des Befehles verarbeiten zu können, oder in dem Daten nach der Ausführung des Befehles eingespeichert werden sollen. Jedem Speicherplatz im Speicher ist eine andere Adresse zugeordnet. Das Adressensteuerfeld, das mit AC bezeichnet ist (Bits 15-17), kann in Verbindung mit dem Operationskode dazu verwendet werden, die Adressen zu entwickeln.
In besonderen Befehlen enthält das Befehlsadressenfeid Informationen, die andere Informationen als eine Speicheradresse sind.
Die Brauchbarkeit einer Datenverarbeitungsanlage ist umso höher, je flexibler die Adressierung gestaltet werden kann. Diese Felxibilität wird durch die Verwendung von einem oder mehreren Hilfsworten erreicht. Die Hilfsworte sind im Speicher 10 genauso wie Datenworte und Befehlsworte gespeichert.
In der Fig. 1 ist die Datenverarbeitungsanlage insoweit symbolisch dargestellt, wie es zum Verständnis der vorliegenden Erfindung notwendig ist. In der Fig. 1 sollen die einzelnen Elemente der Anlage gezeigt werden, in denen Daten gespeichert werden können, weiterhin die Wege. auf denen Daten zwischen diesen Elementen hin- und herübertragen werden können, sowie die Hauptsteuerkomponenten des Systems. Solche Elemente, die allgemein zum Stand der Technik gehören oder mit der Struktur der Anlage nach der Erfindung in keinem unmittelbaren Zusammenhang stehen, sind weggelassen worden.
Da die gleichen Arten von Baugruppen, beispielsweise Register, verschiedene Funktionen haben können, werden diese Elemente mit einer besonderen Bezeichnung in Form von grossen Buchstaben versehen, um Verwechslungen zu vermeiden. Auch Signale (die in dem System zur Verfügung stehen) und Befehle, die zur Erzeugung bestimmter Signale notwendig sind, werden aus Gründen der Klarheit mit besonderen Kodebezeichnungen versehen. Wie bekannt, kann ein Zeitgebergenerator dazu verwendet werden, Zeitgebersignale und/oder Befehlssteuersignale abzugeben.
Die speziellen Schaltkreise, die zum Aufbau einer Anlage nach der Erfindung notwendig sind, sind Standardschaltkreise, die bekannt sind, und die unter der Verwendung von Vakuumröhren, Transistoren, anderen aktiven oder passiven Elementen, magnetischen Bauelementen, sättigungsfähigen Kernen und ähnlichem aufgebaut werden. Solche Standardschaltkreise können UND Tore, ODER-Tore, Umkehrstufen, Zähler, Flipflops, Univibratoren, Register Kodier- und Dekodiermatrizen, Zeitverzögerungskreise, Verzögerungsleitungen, Register- und Speicherelemente oder Zeitgeber- und Impulsschaltkreise sein. Weiterhin können bei Bedarf Verriegelungskreise vorgesehen werden.
Auch Trennstufen oder ähnliche Schaltkreise müssen bei Bedarf vorgesehen werden, um ein Übersprechen von Signalen zu vermeiden, oder auch zu verhindern, dass die Signale an andere Stelle gelangen, wo sie das Ansprechen anderer Schaltkreise hervorrufen, das dann nicht der vorgegebenen Schaltlogik entspricht. Weiterhin müssen auch Zeitgebersignale vorgesehen werden, um zu den richtigen Zeitpunkten und in den richtigen Intervallen richtige Impulse zur Verfügung zu haben. Solche Trennstufen, Verriegelungs- und Zeitgeberschaltkreise sind in der Zeichnung nicht dargestellt und auch nicht im einzelnen beschrieben, um die Beschreibung ausreichend kurz und ausreichend klar halten zu können. Wie solche Schaltkreise jedoch zu verwenden sind, ist dem Durchschnittsfachmann bekannt.
Während der Durchführung von Datenverarbeitungsoperationen sind im Speicher 10 Befehlsworte für die Datenverarbeitung, Hilfsworte für die Adressierung und die Steuerung, Datenworte, die verarbeitet werden sollen, und Datenworte gespeichert, die das Ergebnis von Verarbeitungen sind. Eine zwischenzeitliche Speicherung von Datenworten wird während der Durchführung von Datenverarbeitungsoperationen in verschiedenen Registern innerhalb der Anlage durchgeführt. Die Datenübertragung zwischen den Registern und den anderen Elementen der Anlage, die durch die Verbindungslinien aus Fig. 1 dargestellt ist, wird durch Parallelübertragung der primären Ziffern aus einem Register zu einem anderen Register oder Element durchgeführt.
Der Speicher 10 und die anderen Elemente des zentralen Rechners arbeiten nicht synchron miteinander.
Der Speicher 10 enthält daher seine leigene Zeitgeberlogik, seine eigene Steuerlogik (nicht gezeigt) und ein Adressenregister. Der Speicher 10 arbeitet mit den anderen Elementen des Zentralrechners, nämlich mit dem Programmverarbeiter und der Eingabe-Ausgabesteuereinheit zusammen, um binärkodierte Adressen zu erhalten, um weiterhin Datenworte, Befehlsworte und Hilfsworte aufzunehmen oder abzugeben und um Steuer signale aufzunehmen und abzugeben, durch die der Zeittakt im Speicher mit dem Zeittakt des restlichen zentralen Rechners synchronisiert werden kann. Die Adresseninformation wird an den Speicher 10 über B Tore 317 übertragen.
Ein I-Register 313 speichert den Operationskode des Befehlswortes, der die Bits 18-23 enthält. Der Operationskode im I-Register 313 steuert die Art der Operation, die in der Anlage ausgeführt werden soll.
Das Adressensteuerfeld des Befehlswortes, das aus den Bits 15-17 besteht, ist im Q-Register 306 gespeichert.
Das Adressensteuerfeld im Q-Register 306 steuert die Entwicklung des Befehlsadressenfeldes und kann auch die Entwicklung der zweiten Adresse eines Zwei-Adressen-Befehles steuern. Das Adressenfeld des Befehlswortes, das die Bits 0-14 enthält, ist üblicherweise im D Register 311 gespeichert, kann jedoch auch während der Ausführung eines bestimmten Befehles im E-Register 303 gespeichert werden. Das Befehlsadressenfeld, das in dem D-Register 311 oder im E-Register 303 gespeichert ist, gibt den Ort im Speicher an, aus dem ein Operandenwort herausgelesen oder in den ein solches Wort eingespeichert werden soll. Die Adresse des Befehles, der als nächster durch inden Programmverarbeiter ausgeführt werden soll, ist im P-Register 310 gespeichert.
Wenn die Durchführung eines Befehles beinahe fertig ist, wird die nächste Befehlsadresse, die im P-Register 310 gespeichert ist, dem Addierer 302 zugeführt, so dass der zentrale Rechner in der Lage ist, aus dem Speicher
10 den nächsten Befehl abzurufen.
Alle Worte, die aus dem Speicher 10 ausgelesen oder in ihm eingelesen werden, müssen durch das M-Register 301 hindurchlaufen. Wenn also ein Befehl aus dem Speicher 10 abgerufen werden soll, wird die Adresse in dem P-Register 310 über den Addierer 302 und das D Register 311 durch die B-Tore 317 hindurchübertragen, und das Befehlswort wird aus der adressierten Speicherstelle heraus in das M-Register 301 ausgelesen. Der Operationskode, das Adressensteuerfeld, und das Adressenfeld des Befehlswortes in dem M-Register 301 werden dann an das 1-Register 313, an das Q-Register 306 und entweder an das D-Register 311 oder an das E Register 303 übertragen. Daraufhin wird der Befehl durchgeführt.
Die Operandenworte, die zur Durchführung eines Befehls verwendet werden, werden aus dem Speicher 10 durch den gleichen Vorgang labgerufen, d. h. dadurch, dass auch das Operandenwort zu Beginn in das M-Register 301 übertragen wird.
Wenn ein Wort aus dem Speicher 10 in das M Register 301 übertragen wird, wird der 25. Bit, der der Paritätsbit ist, der Paritätsprüfeinheit 316 zugeführt. Die Paritätsprüfeinheit 316 tastet das Wort in dem M Register ab und stellt unter Verwendung des Paritätsbits aus dem Speicher 10 fest, ob in dem Wort, das aus dem Speicher 10 übertragen worden ist, ein Paritätsfehler vorhanden ist oder nicht. Wenn dagegen ein Wort, das zwischenzeitlich im M-Register 301 gespeichert ist, in den Speicher 10 übertragen werden soll, tastet die Paritätsprüfeinheit 316 das Wort im M-Register 301 ab und erzeugt den richtigen Paritätsbit, der als 25. Bit des Wortes in den Speicher 10 übertragen wird.
Die arithmetischen Operationen, Schiebeoperationen, Vergleichsoperationen, logischen Operationen usw., denen das Operandenwort unterworfen wird, werden hauptsächlich unter der Verwendung des M-Registers 301, des Addierers 302 und des E-Registers 303 durchgeführt. Der Addierer 302 ist so ausgelegt, dass er Informationen addieren kann, die ihm gleichzeitig vom M-Register 301 und vom E-Register 303 zugeführt werden. Gleichzeitig ist der Addierer 302 in der Lage, auch solche Informationen miteinander zu addieren, die gleichzeitig vom M-Register 301 und vom P-Register 310, vom D-Register 311 oder auch von anderen passenden Registern zugeführt werden.
Die Ausgangsgrösse des Addierers 302 kann an das E-Register 303, das M-Register 301, das D-Register 311, das P-Register 310 oder auch an irgendein anderes passendes Register übertragen werden, wie es durch die ausgezogenen Linien in Fig. 1 dargestellt ist, die diese Übertragungs- möglichkeiten andeuten sollen. Das Q-Register 306 kann während der Durchführung bestimmter Befehle als Zähler oder als Zwischenregister dienen.
Die Steuerung der Operationen im Zentralrechner wird in der Hauptsache von der Operationssteuereinheit 318, der Zeitgebersteuerung 319, dem I-Register 313, dem P-Register 310, dem D-Register 311 und dem A Register 312 durchgeführt. Der Inhalt des I-Registers 313 wird durch die Operationssteuereinheit 318 dekodiert, die die Steuerlogik bereitstellt, die für die Durchführung eines Befehles durch den zentralen Rechner erforderlich ist. Die Operationssteuereinheit 318 weist ein Register für die Auswahl von Mikrooperationsblökken auf, weiterhin eine Steuerlogik, eine Dekodierungslogik für das I-Register 313 und für das Auswahlregister. Die Zeitgebersteuereinheit 319 steuert den inneren Zeittakt des zentralen Rechners und ermöglicht die Synchronisation des zentralen Rechners mit der Eingabe/Ausgabesteuereinheit 13 und mit dem Speicher 10.
Die Zeitgebersteuereinheit 319 weist einen Generator auf, der an den zentralen Rechner Zeitgeberimpulse abgibt. Weiterhin sind in der Zeitgebersteuereinheit 319 logische Schaltkreise zur Steuerung der Zeittakterzeugung vorgesehen, sowie ein Zähler, der die Zeitperioden in dem Zentralrechner definiert.
In dem.A-Register 312 wird die Teiladresse eines Wortes des Vierwort-Akkumulators im Speicher 10 gespeichert. Das Akkumulatorlängenregister 314, das die Flipflops PL1 und PL2 enthält, enthält einen Zählerstand, der die Anzahl der Worte im effektiven Akkumulator anzeigt. Der Inhalt des A-Registers 312 und des Registers 314 bilden zusammen die Adresse eines Wortes des effektiven Akkumulators. Weiterhin ist ein Akkumulatorzählregister 315 mit Flipflops AC2 und AC1 vorgesehen, das in Verbindung mit dem A-Register 312 arbeitet und nacheinander jedes Wort im effektiven Akkumulator adressiert.
Das D-Register 311 wird hauptsächlich als Adressenregister benutzt, um die Adresseninformation durch die B-Tore 317 an den Speicher 10 zu übertragen. Das P-Register 310 wird als Zähler benutzt, der periodisch weitergeschaltet wird, um die Adresse des nächsten Wortes in der Programmfolge zu- bilden.
Das D-Register 311 ist ein 15-Bit-Register mit 15 Flipflops, das normalerweise die Adresse eines Datenwortes, eines Hilfswortes oder eines Befehlswortes enthält. Das D-Register 311 ist so ausgelegt, das es die Bits der Bitstellen 0-14 der Ausgangssignale des Addierers durch Parallelübertragung aufnehmen kann, wenn ein Signal QSDX an diejenigen Eingangstore angelegt wird, die die Ausgänge des Addierers mit den entsprechenden Eingängen der Registerflipflops verbinden. Während der Durchführung von Befehlen, die einen Akkumulator der doppelten, der dreifachen oder der vierfachen Länge erfordern, wird das D-Register 311 dazu benutzt, den Zugriff zu den Operandendatenworten in der richtigen Reihenfolge sicherzustellen, so dass diese Reihenfolge mit den Akkumulatorworten übereinstimmt.
Auf ein Zeitsignal DDCD hin wird die Adresse im D-Register 311 um 1 vermindert, um auf diese Weise die aufeinanderfolgenden Operandenwortadressen zu erzeugen. Das D-Register 311 enthält auch Informationen über Schiebesteuerungen, um auch solche Befehle ausführen zu können. Der Inhalt des D-Registers 311 kann entweder an die B-Tore 317 oder an den Addierer 302 übertragen werden.
Das A-Register 312 ist ein 13-Bitregister mit 13 Flipflops. Das A-Register 312 wird dazu verwendet, die gegenwärtige Adresse des Vier-Wort-Akkumulators in dem Speicher 10 zu speichern. Die tatsächliche Adresse, die in dem A-Register 312 enthalten ist, ist die Adresse des Akkumulatorwortes mit der höchsten Stelligkeit. Die Information wird aus dem E-Register 303 in das A-Register 312 dann übertragen, wenn ein Signal an den Eingangstoren lanliegt, die die Ausgänge des Addierers mit den entsprechenden Eingängen der Flipflops des A Registers verbinden. Die Information im A-Register 312 wird entweder an die B-Tore 317 oder an das E Register 303 übertragen. Die Flipflops des A-Registers 312 können über ein Signal in den Null-Zustand zurückgeschaltet werden, so dass das A-Register 312 gelöscht ist.
Das Akkumulatorlängenregister 314 mit den beiden Flipflops PL2 und PL1 speichert die effektive Länge des Akkumulators, die 1, 2, 3 oder 4 Wortlängen betragen kann. Der Inhalt des Akkumulatorlängenregisters 314 bildet zusammen mit dem Inhalt des A-Registers 312 eine vollständige 15-Bitadresse, die die Adresse eines Wortes des effektiven Akkumulators ist. Die Flipflops PL2 und PL1 sind in der Lage, den Inhalt von entweder dem 1. oder dem 2. der Flipflops des I-Registers 313 durch Parallelübertragung aufzunehmen, oder auch den Inhalt der beiden ersten Flipflops des E-Registers 303 oder der beiden ersten Flipflops des D-Registers 311.
Diese Übertragungen finden statt, wenn ein passendes Übertragungssignal an die Eingangstore des Akkumulatorlängenregisters 314 angelegt wird.
Das Akkumulatorzählregister 315 mit den Flipflops AC2 und AC1 ergänzt die Adresse im A-Register 312, so dass die Adresse von einem der vier Worte des Akkumulators gebildet wird. Das Akkumulatorzählregister 315 bestimmt nämlich, welches der vier möglichen Worte in dem Akkumulator adressiert werden soll.
Befindet sich beispielsweise das Register 315 in dem binären 1-0-Zustand, so wird das dritte Akkumulator wort adressiert. Der Zählerstand im Akkumulatorzählregister 315 wird bei der Durchführung bestimmter Befehle durch den Zentralrechner erhöht oder erniedrigt, um bestimmte Worte des Akkumulators adressieren zu können.
Die B-Tore 317 übertragen Adressen aus dem Programmverarbeiter und der Eingabe-Ausgabesteuer einheit zu einem B-Register (nicht gezeigt) des Speichers 10. Die B-Tore 317 empfangen Eingangssignale aus dem D-Register 311, aus dem A-Register 312, aus dem Akkumulatorlängenregister 314, dem Akkumulatorzählregister 315, dem M-Register 301, dem Q-Register 306 und von der Eingabe-Ausgabesteuereinheit 13. Während Datenunterbrechungen und Programmunterbrechungen werden den B-Toren 317 Adresseninformationen von der Eingabe-Ausgabesteuereinheit 13 zugeführt. An die B-Tore 37 werden Öffnungssignale angelegt, um die Tore zur Übertragung der richtigen Adresse an das B Register im Speicher betriebsbereit zu machen.
Das M-Register 301 und das E-Register 303 sind 24-Bitregister und können aus Flipflops aufgebaut sein.
Die anderen Register können ebenfalls ähnlich aufgebaut sein. Der Addierer 302 stellt die Schaltlogik für binäre und dezimalarithmetische Operationen bereit, die für die Durchführung eines Befehles notwendig ist, und dient ausserdem als Mittelpunkt für die meisten Daten übertragungen innerhalb der Anlage. Es ist günstig, den Addierer 302 aus zwei vollständigen Addierwerken zusammenzusetzen. Eine statische Speicherung findet im Addierer 302 nicht statt. Das Anliefern von Informationen aus den verschiedenen Registern der Anlage an den Addierer 302 geschieht über Tastsignale, die in der Anlage verfügbar sind. Die Ausgangssignale des Addierers 302 können an das M-Register 301, das P-Register 310, das D-Register 311 und das E-Register 303 übertragen werden.
Die ersten beiden Flipflops des E Registers 303 können den Inhalt der entsprechenden Flipflops des Akkumulatorlängenregisters 314 durch Parallelübertragung aufnehmen. Die anderen Flipflops des E-Registers 303 können durch Parallelübertragung den Inhalt der entsprechenden Flipflops des anderen Registers 312 aufnehmen, oder auch Informationen, die aus einer Quelle stammen. Weiterhin kann der Inhalt des E-Registers 303 an das A-Register 312 und das Akkumulatorlängenregister 314 sowie an den Addierer 302 übertragen werden.
Der Akkumulator des zentralen Rechners besteht aus vier nebeneinanderliegenden Plätzen im Speicher 10.
Die Zuordnung der Akkumulatorplätze erfolgt über das Programm. Der Akkumulator kann in eine andere Gruppe von vier nebeneinanderliegenden Speicherplätzen hinein verlegt werden. Diese Verlegung des Akkumulators, d. h., die Verwendung von vier anderen nebeneinanderliegenden Speicherplätzen, beeinflusst den Inhalt der in Frage kommenden Speicherplätze nicht.
Die vier Worte des Akkumulators können direkt adressiert werden. Sie können aber auch während der Durchführung von verschiedenen Befehlen implizit adressiert sein.
Zusätzlich zu dem Verlegen des Akkumulators innerhalb des Speichers kann die effektive Länge des Akkumulators so eingestellt werden, dass sie gleich einer einfachen, einer zweifachen, einer dreifachen oder einer vierfachen Wortlänge ist. Unabhängig von der effektiven Länge des Akkumulators entspricht die Länge des vollständigen Akkumulators immer vier nebeneinanderliegenden Speicherplätzen, ist also immer vier Worte lang. Stellt man die effektive Länge des Akkumulators ein, so bestimmt man die Länge desjenigen Speichergebietes, das bei der Ausführung bestimmter Operationen, bei denen der Akkumulator beteiligt ist, beeinflusst wird.
Es sind Befehle vorgesehen, die die effektive Länge des Akkumulators allein oder in Verbindung mit anderen Operationen einstellen.
Die vier Worte des vollständigen Akkumulators, die als Worte D, C, B, A bezeichnet sind, sind schematisch in der Fig. 3 dargestellt. Das Wort D ist das Akkumulatorwort mit dem höchsten Stellenwert, während das Wort A das Akkumulatorwort mit dem niedrigsten Stellenwert ist. Die Worte C und B sind in tZbereinstim- mung mit ihrer Stellung innerhalb des Akkumulators absteigenden Stellenwerten zugeordnet. Die Adresse des vollständigen Akkumulators ist die Adresse seines Wortes mit der höchsten Wertigkeit, das ist das Wort D, das am Platz d steht. Die Adresse des Akkumulatorwortes mit dem höchsten Stellenwert wird so gewählt, dass sie ohne Rest durch vier teilbar ist, d. h. 0- modulo-4. Das wird durch die Zuordnung der entsprechenden Stellen im Speicher 10 zum Akkumulator erreicht.
Die Teiladresse wird dann in dem 13-Bit-A-Register 312 gespeichert, da bei dieser Adressenwahl angenommen werden kann, dass die letzten beiden Bits mit dem niedrigsten Stellenwert 0 sind. Der Ort d des Wortes D und die Adresse des ganzen Akkumulators kann daher willkürlich wie folgt geschrieben werden: xxx xxx xxx xxx x00.
Dabei stellen die x die Bits der Adresse in dem A Register 312 dar. Der Ort c des nächsten Wortes, nämlich des Wortes C ist dann durch die folgende Adresse gekennzeichnet: xxx xxx xxx xxx x01, während die Adressen der Orte b und a der Worte B und A des ganzen Akkumulators xxx xxx xxx xxx x1 und xxx xxx xxx xxx x11 lauten, wie es in der Fig. 3 adarge- stellt ist.
Die Arbeitslänge oder effektive Länge des Akkumulators wird durch das Programm eingestellt. Unabhängig von der Arbeitslänge ist das Akkumulatorwort mit dem niedrigsten Stellenwert immer das Wort A und die tatsächliche Länge des gesamten Akkumulators beträgt immer vier Worte. Die Arbeitslänge des Akkumulators ist in dem Akkumulatorlängenregister 314 mit den beiden Flipflops PL2 und PL1 gespeichert. Wie in der Fig. 3 durch AA angegeben ist, besteht in dem Falle, in dem die effektive Akkumulatorlänge eine Wortlänge beträgt, der effektive Akkumulator aus dem Wort A, und in den Flipflops PL2 und PL1 ist der Zustand 11 gespeichert. Entspricht die effektive Akkumulatorlänge zwei Wortlängen (Fig. 3: BB; Flipflops PL2 und PL1 des Registers 314: 10) so enthält der effektive Akkumulator die beiden Worte A und B.
Beträgt idie Akkumulatorlänge drei Wortlängen (Fig. 3: CC, Flipflops PL2 und PL1 des Registers 314: 01), so enthält der effektive Akkumulator die Worte A, B und C. Entspricht die Akkumulatorlänge dagegen einer vierfachen Wortlänge (Fig. 3: DD; Flipflops PL2 und PL1 des Registers 314: 00), so enthält der Akkumulator die Worte A, B, C und D. Wie man der Fig. 3 entnehmen kann geben die kombinierten Inhalte des A-Registers 312 und des Akkumulatorlängenregisters 314 den Wert des Wortes des effektiven Akkumulators an, das den höchsten Stellenwert aufweist.
Sowohl die effektive Länge des Akkumulators als auch seine Anordnung innerhalb des Speichers 10 werden durch einen Befehl festgelegt, der willkürlich wie folgt bezeichnet werden kann: ein Befehl, lege den Akkumulator-Ort und -Länge fest. Ein weiterer Befehl kann lauten: Speichere den Akkumulatorort und die Akkumulatorlänge. Durch diesen Befehl werden Signale eingespeichert, die irgendeinen bestimmten Ort im Speicher 10 bedeuten und sowohl die augenblickliche Ar beitslänge des Akkumulators als auch den augenblicklichen Akkumulatorort bedeuten.
Von den folgenden Befehlen legt jeder die Arbeitslänge des Akkumulators auf diejenige Länge fest, die im Operationskode folgender Befehle angegeben ist:
Befehl, einfache Wortlänge
Befehl, doppelte Wortlänge
Befehl, dreifache Wortlänge
Befehl, vierfache Wortlänge
Diese Befehle können dafür verwendet werden, die effektive Länge des Akkumulators auf dem Wert zu ändern, der in dem Operationskode angegeben ist, sofern die bereits eingestellte Länge des Akkumulators kürzer als diejenige Länge ist, die im Operationskode festgelegt ist. In solchen Befehlen legt der Operationskode die neu erforderliche Feldlänge im Speicher fest, während die bereits festgelegte Akkumulatorlänge die Länge des dann erforderlichen Felds bestimmt.
Wenn die Länge, die im Operationskode festgelegt ist, grösser als die bereits festgelegte effektive Arbeitslänge ist, wird die Arbeitslänge des Akkumulators auf den Wert geänwird.
Wenn die Feldlänge, die durch den Operationskode festgelegt ist, gleich oder kleiner als die augenblickliche Arbeitslänge des Akkumulators ist, findet das Hinzufügen oder das Wegnehmen des gekennzeichneten Speicherfeldes statt, ohne dass die Arbeitslänge des Akkumulators geändert wird. überträgt werden durch alle Akkumulatorworte hindurchgeführt. Jeder Übertrag, der aus der bestehenden Akkumulatorlänge herausführt, schaltet einen Übertragsflipflop in den 1-Zustand um.
Wenn die Feldlänge, die vom Operationkode gefordert wird, grösser als die effektive Akkumulatorlänge ist, wird die Akkumulatorlänge so erweitert, bis sie mit derjenigen Länge übereinstimmt, die im Operationskode niedergelegt ist. Die Akkumulatorworte, die dem effektiven Akkumulator hinzugefügt werden, werden zu Null gemacht, bevor diese Addition oder Subtraktion stattfindet. Jeder arithemtische Übertrag, der aus dem nun neu eingerichteten effektiven Akkumulator heraustritt, schaltet den Übertragsflipflop in den 1-Zustand um.
Der nächstfolgende Befehl braucht die Arbeitslänge des Akkumulators nicht zu ändern. Der Operationskode kann beispielsweise die Länge des Speicherfeldes kennzeichnen, während die bereits eingestellte Akkumulatorlänge die Länge des effektiven Akkumulators bestimmen kann. Werden solche Befehle bei einer Akkumulatorlänge ausgeführt, die gleich oder kleiner als die Feldlänge ist, die durch den Operationskode bestimmt ist, findet die Addition zu dem Speicherfeld statt, wobei sich die überträgt über das Speicherfeld hinaus breiten. Wenn ein Übertrag aus dem Speicherfeld der höchsten Stelligkeit austritt, so wird ein Übertragungsflipflop in den 1 Zustand umgeschaltet.
Wenn die effektive Länge des Akkumulators grösser als die Feldlänge ist, die im Operationskode festgelegt ist, findet die Addition nicht statt, und der Zustand mit austretendem Übertrag stellt sich automatisch ein. Diese Befehle, die oben erwähnt sind, enthalten eine Bezeichnung der effektiven Akkumulatorlänge. Bestimmte andere Befehle enthalten dagegen keine Bezeichnung der effektiven Akkumulatorlänge, sondern hängen vielmehr von der bereits eingestell ten Akkumulatorlänge ab, um die Beschränkungen dieser Operationen aufzuheben.
Um nun zu zeigen, wie das A-Register 312 und das Flipflop-Register 314 im einzelnen arbeiten, werden nun drei Befehle im einzelnen beschrieben.
Lege Akkumulatorort und Akkumulatorlänge fest;
Speichere Akkumulatorort und Akkumulatorlänge;
Einfache Wortlänge.
Von der allgemeinen Organisation und Datenverarbeitungsanlage ist nur soviel beschrieben worden, wie es zum Verständnis der Datenführung, der Ausführung von Befehlen und der Auswahl von Adressen notwendig ist.
Durch den Befehl (Lege Akkumulatorort und Akkumulatorlänge fest) wird der Ort und die Arbeitslänge des Akkumulators in das Register 312 eingebracht. Als erstes muss eine Anfangsroutine befolgt werden, um die Adresse dieses Befehls in den Speicher 10 zu übertragen.
Dies erfolgt durch ein Signal. Der Befehl wird dann unter der Steuerung eines unmittelbar anschliessenden Signals aus dem Speicher ausgelesen. Dieses Signal steuert ebenfalls die Anordnung der Adresse in dem M Register 301. Die Information in der Adresse im M Register 301 ist dann dias Befehlswort für diesen Befehl.
Das nächste Signal ist ein Übertragungssignal, das das Befehlswort aus dem M-Register an den Addierer 302 bringt.
Der Teil des Befehlswortes, der den Operationskode darstellt, und der noch im Register 301 verblieben ist, wird unter der Steuerung eines weiteren Signals in das I- Register 313 übertragen. Dieser Schritt steuert den anschliessend notwendigen Schritt, der darin besteht, die Adresse für einen neuen Akkumulatorort in das A Register 303 zu bringen. Das nächste Signal in der Anfangsroutine nimmt das Befehlswort aus dem Addierer 302 (wohin es aus dem M-Register 301 durch das obenerwähnte Übertragungssignal übertragen worden war) heraus und überträgt das Befehlswort an das E Register 303, um den Befehl ausführen zu können.
Das Adressenfeld des Befehls, das in dem E-Register 303 enthalten ist, wird dann durch ein Signal an das A Register 312 und die Flipflops PL1, PL2 des Registers 314 übertragen. Dieses ist die eigentliche Speicheroperation für die Adresse aus dem ERegister in das A Register. Der letztere Schritt, der unter der Steuerung des zuletzt genannten Signals erfolgt, wird noch näher beschrieben.
Die Bits 2-14 des Befehlsadressenfeldes in dem A Register definieren den Ort des Akkumulatorwortes. Die Bits 0 und 1 des Befehlsadressenfeldes werden an die Flipflops PL1 und PL2 des Akkumulatorlängenregisters übertragen, um die effektive Akkumulatorlänge festzulegen. Die Bits 0-14 des Befehlsadressenfeldes können also so gedeutet werden, als ob sie das Wort mit dem höchsten Stellenwert des effektiven Akkumulators festlegen. Wenn der Ort und die effektive Länge des Akkumulators geändert werden, bleibt der Inhalt sowohl des alten Ortes als auch des neuen Ortes davon unberührt. Während einer Zeitperiode des Zeitgeberzyklus, tritt ein Signal auf, das das A-Register löscht, und zwar dadurch, dass die Flipflops in dem A-Register in den Null-Zustand zurückgeschaltet werden. Das geschieht unter der Steuerung der Zeitgebersteuereinheit 319.
Während weiterer Zeitperioden tritt ein Signal auf, das die Bits 2-14 eines Befehlswortes aus dem E Register an das A-Register 312 überträgt, um den neuen Akkumulatorort zu definieren. Dieses Signal überträgt ferner die Bits 0 und 1 des Befehlswortes in dem E Register an die Flipflops PL1 und PL2 des Akkumulatorlängenregisters, so dass die Arbeitslänge des Akkumulators festgelegt ist. Die Adresse des Akkumulators im Speicher 10 ist nun im A-Register 312 enthalten, und eine Darstellung der Arbeitslänge im Register 314.
Damit ist der Befehl (lege Akkumulatorort und Akkumulatorlänge fest) ausgeführt.
Durch den weiteren Befehl, der das Einspeichern des Akkumulatorortes und der Akkumulatorlänge bedeutet, wird der gerade anliegende Akkumulatorort und die gerade anliegende effektive Akkumulatorlänge in den Bitplätzen 0-14 eines Wortes an einem vorgegebenen Speicherplatz eingespeichert. Der Inhalt an den Bitplätzen 15-23 dieses Wortes wird nicht geändert. Die Adresse des Akkumulatorwortes mit dem höchsten Stellenwert ist an den Bitplätzen 2-14 des Wortes gespeichert, während die Bits, die die Arbeitslänge des Akkumuiators festlegen, an den Bitplätzen 0 und 1 dieses Wortes stehen. Die Subroutine zur Ausführung des Befehls wird vom Programmverarbeiter durchgeführt.
Während einer Zeitperiode der Subroutine tritt ein Signal auf, das die Adresse eines bestimmten Speicherortes, an dem Daten gefunden werden können, aus dem D Register 311 durch die B-Tore 317 zum Speicherregister hin überträgt. Nun wird im Speicher 10 eine Leseoperation ausgelöst, in der das Wort an diesem bestimmten Speicherplatz aus dem Speicher 10 in das M-Register 301 übertragen wird. Dann tritt zu diesem Zeitpunkt ein Signal auf, dass die binäre Darstellung des Akkumulatorortes aus dem A-Register 312 an die Bitplätze 2-14 des E-Registers 303 überträgt, und ausserdem die binäre Darstellung der effektiven Akkumulstorlänge aus den Flipflops PL1 und PL2 des Akkumulatorlängenregisters 314 in die Bitplätze 0 und 1 des E-Registers 303 hinein.
Akkumulatorort und Akkumulatorlänge in dem E Register 303 werden dann den Eingängen des Addierers zugeführt. Auf diese Weise wurde ein Wort mit einer Adresse, wie sie durch den Zustand des D-Registers 311 angegeben war, aus dem Speicher entnommen und die Adresse des Akkumulators in dem Speicher angeordnet.
Ein Synchronisierungssignal, das von dem Speicher 10 abgegeben wird, führt die Subroutine fort. Im Speicher 10 wird eine Schreiboperation ausgelöst, in der auch die Binärdarstellung des Akkumulatorortes und der Akkumulatorlänge in dem vorgegebenen Speichergebiet eingespeichert wird. Jetzt treten Zeitgebersignale auf, die die binäre Darstellung von Akkumulatorort und Akkumulatorlänge durch den Addierer hindurch in die Bitplätze 0-14 des M-Registers 301 übertragen, und zwar als Vorbereitung zur Einspeicherung dieser Darstellungen im Speicher 10 während der Schreibeoperation. Bei dieser Übertragung wird der bisherige Inhalt der Bitplätze 0-14 des M-Registers 301 gelöscht.
Die Übertragung des Wortes in dem M-Register 301 mit der Akkumulatorlänge und dem Akkumulatorort, die in dem Adressenfeld gespeichert ist, ist damit vollständig, und die Subroutine ist beendet. Nun kann die Adresse des nächsten Befehls in dem P-Register 310 an die Eingänge des Addierers angelegt werden. Flipflops, die in der Anlage vorhanden, jedoch nicht gezeigt sind, steuern diese Subroutine. Sie werden in den Nullzustand zurückgeschaltet, um die Durchführung des nächsten Befehles vorzubereiten.
Der nächste Befehl sorgt dafür, dass die effektive Länge des Akkumulators auf eine Wortlänge eingestellt wird, und dass der Inhalt des Akkumulators einer Wortlänge durch den Inhalt derjenigen Speicherstelle ersetzt wird, die durch die Endadresse im Befehlswort angegeben ist. Der Inhalt an dieser Speicherstelle wird nicht geändert.
Während einer Zeitperiode tritt ein Signal auf, das für diese Subroutine programmiert ist und dafür sorgt, dass der Inhalt der beiden Flipflops mit dem niedrigsten Stellenwert im 1-Register 313 an das Akkumulatorlängenregister 314, also an die Flipflops PL2 und PL1 übertragen wird. Die beiden Bits in dem Operationskode im I-Register 313 mit dem niedrigsten Stellenwert stellen die effektive Länge des Akkumulators dar, wie sie durch das Befehlswort angegeben ist. Durch die oben angegebene Übertragung wird die effektive Akkumulatorlänge in das Akkumulatorlängenregister eingeschrieben. Daraufhin werden wie vorher die Suboperationen der Subroutine durchgeführt, um den entsprechenden Befehl auszuführen.
Während einer Suboperation wird das Operandenwort, was in dem Akkumulator übertragen werden soll, aus derjenigen Speicherstelle ausgelesen, deren Adresse durch den Zustand des D-Registers 311 angegeben ist. Dieses Operandenwort wird in dem M Register 301 gespeichert. Während der anschliessenden Suboperation wird das Operandenwort in den Ort des Akkumulatorvortes im Speicher 10 übertragen.
Die genaue Reihenfolge, in der die Suboperationen ablaufen müssen, um den Befehl für eine Wortlänge ausführen zu können, ist die folgende: Ein Signal, das eine binäre 1 sein kann, macht die B-Tore betriebsbe reit, so dass die Operandenadresse aus dem D-Register in das B-Register (nicht gezeigt) übertragen wird, das dem Speicher 10 zugeordnet ist. Anschliessend tritt ein Zeitgebersignal auf. Daraufhin wird ein Leseflipflop in den 1-Zustand umgeschaltet, um die Leseoperation im Speicher 10 auszulösen. Das Operandenwort wird aus dem Speicher 10 in das M-Register 301 übertragen.
Wenn nun das Zeitgeber-Signal auftritt, erscheint ein Schreibebefehlssignal, das eine Schreibeoperation inner halb des Speichers auslöst, um das Operandenwort an seinem alten Platz einzuschreiben.
Ein Signal tritt auf, um die Akkumulatoradresse aus dem A-Register 312 und dem Akkumulatorzählregister 314 an das B-Register (nicht gezeigt) des Speichers 10 zu übertragen. Das Zeitgeber-Signal ruft das Schreibebefehl-Signal hervor, das eine Leseoperation im Speicher auslöst und den adressierten Akkumulatorort löscht. Die Löschung des Operanden aus dem M-Register 301 ist jedoch durch entsprechende Sperrsignale verhindert.
Während einer nachfolgenden Zeitperiode tritt ein weiteres Zeitgeber-Signal auf, um den Operanden an dem adressierten Akkumulatorort im Speicher 10 einzuspeichern. Während der nachfolgenden Zeitperiode wird dann die nächste Befehlsadresse aus dem P-Register 310 an den Addierer 302 übertragen. Daraufhin wird der Zeitgebergenerator für die Programmfolge angehalten und die Steuereinheit für die Subroutine, wie beispielsweise ein Wählregister, wird in den Nullzustand zurückgeschaltet. Dadurch ist die Ausführung des nächsten Befehles vorbereitet, und der Zeitgebergenerator im Programmverarbeiter kann erneut zu laufen beginnen, wenn ein Signal auf dem Speicher einläuft.
Der nächste Befehl (doppelte Wortlänge) sorgt dafür, dass die effektive Akkumulatorlänge auf das doppelte einer Wortlänge festgelegt wird, und dass der Inhalt des effektiven Akkumulators zweifacher Wortlänge durch ein Speicherfeld aus zwei Worten ersetzt wird, das aus zwei ganz bestimmten nebeneinanderliegenden Speicherorten besteht. Der Inhalt dieser beiden bestimmten Speicherplätze wird nicht geändert. Die Durchführung dieses Befehls stimmt mit der Durchführung des Befehls (einfache Wortlänge), bis auf die folgenden Ausnahmen überein. Während einer Zeitperiode sollte das erste Operandenwort an den Ort des Operandenwortes A übertragen werden; da jedoch die letzte Akkumulatoroperation nicht aufgetreten ist, kann deshalb auch die Adresse des nächsten Befehls nicht aus dem P-Register 310 an den Addierer 302 übertragen werden.
Die Adresse im D-Register 311 wird vielmehr um 1 vermindert und das zweite Operandenwort in dem Speicherfeld zu adressieren, das an den Ort des Akkumulatorwortes B im Speicher übertragen werden soll. Zu diesem Zeitpunkt wird der Zählerstand im Akkumulator-Zählregister um 1 erhöht, um das Akkumulatorwort B zu adressieren.
Nun kehrt der Programmverarbeiter zu den Suboperationen zurück, um das zweite Operandenwort aus dem Speicherfeld von zwei Wortlängen herauszuziehen. Hierzu wird die bereits beschriebene Routine der Zeitperiode erneut wiederholt, bis auf die Ausnahme, dass das zweite Operandenwort in dem Speicherfeld an dem Ort des Akkumulatorwortes B im Speicher 10 eingespeichert wird. Da nun die letzte Akkumulatoroperation ausgeführt wird, die durch den Befehl notwendig ist, tritt ein Signal auf. Die Adresse des nächsten Befehls kann dann aus dem P-Register 310 an den Addierer 302 übertragen werden. Diese Folgen können mit Hilfe von Zeitgebersignalen durchgeführt werden.
Das Feststellen, ob der Befehl beendet ist, und das Feststellen, ob ein Akkumulator von einfacher, zweifacher, dreifacher oder vierfacher Wortlänge eingerichtet werden soll, kann mit Hilfe von Flipflops durchgeführt werden, die die Steuereinheit für die Subroutine, wie beispielsweise Register, nur dann in den Nullzustand zurückkehren lassen, wenn an den massgebenden Stellen des Wortes überall Nullen festgestellt worden sind, wodurch angezeigt ist, dass das Wort entweder ein einzelnes Wort ist, oder das die vorhergehenden Vielfach-Wortfelder bereits verarbeitet worden sind.
Der folgende Befehl sorgt dafür, dass der Inhalt eines spezifizierten Speicherortes durch den Inhalt eines Akkumulators einfacher Länge ersetzt wird, und zwar unabhängig von der Arbeitslänge des Akkumulators. Die Arbeitslänge und der Inhalt des Akkumulators wird nicht geändert. Nachdem die Anfangsroutine abgelaufen ist, kann die Subronünesteuereinheft Suboperationen oder Subroutinen anordnen, die zur Durchführung des Befehls notwendig sind. Während einer dieser Suboperationen wird das Akkumulatorwort, das an diesem spezifizierten Speicherort übertragen werden soll, aus dem Speicher 10 ausgelesen und in das M-Register 301 eingespeichert. Während der darauffolgenden Suboperation wird das Akkumulatorwort an den spezifizierten Ort im Speicher 10 übertragen.
Diese Folge wird ebenfalls von Zeitsignalen gesteuert, was sehr ähnlich wie bei der Durchführung des beschriebenen Befehls Einfache Wortlänge abläuft.
Ein weiterer Befehl sorgt dafür, dass der Inhalt zweier spezifizierter, nebeneinanderliegender Speicherplätze durch die Akkumulatorworte A und B ersetzt wird, und zwar unabhängig von der Arbeitslänge des Akkumulators. Inhalt und Länge des Akkumulators werden dabei nicht geändert.
Die Ausführung dieses Befehls ist mit der Ausführung des Befehls Ersetze Inhalt des Speicherortes durch Akkumulatorinhalt einfacher Länge bis auf die Ausnahmen identisch, dass während der nachfolgenden Suboperation das Akkumulatorwort A an den spezifizierten Speicherplatz übertragen wird, wobei jetzt aber ein Flipflop (nicht gezeigt), der die letzte Operation abfühlt, nicht in den 1-Zustand umgeschaltet wird, da die letzte Akkumulatoroperation nicht aufgetragen ist.
Daher wird die Adresse des nächsten Befehls nicht auf dem P-Register an den Addierer 302 übertragen. Die Adresse in dem D-Register 311 wird vielmehr um 1 vermindert, um den zweiten Speicherplatz zu adressieren, dessen Inhalt durch das Akkumulatorwort B ersetzt werden soll.
Durch die Erfindung ist es somit möglich, einen Akkumulator in einem Speicher einer Datenverarbeitungsanlage ausserordentlich flexibel anzuordnen. Die Steuerung der Adressierung und der Informationsübertragung wird von der Datenverarbeitungsanliage selbst durchgeführt; verschiedene Zeitgebersignale sind üblicherweise verfügbar und die richtige Programmfolge und die richtige Reihenfolge der Elemente in der Rechenanlage dürften dem Durchschnittsfachmann bekannt sein.
Die Erfindung beinhaltet daher die Kombination eines Registers (A-312), das in der Lage ist, die Speicheradresse zu speichern, die den Ort des Akkumu iators innerhalb des Speichers 10 spezifiziert, mit einer Vorrichtung, die mit dem Register (A-312) verbunden ist, und die die Speicheradresse in diesem Register ändern kann. Diese Vorrichtung kann beispielsweise die Operationssteuereinheit 318 und das I-Register 313 sein, die von dem Zeittakt der Anlage gesteuert sind, d. h., durch die Zeitgebersteuerung 319, zusammen mit dem Speicher oder dem M-Register 301, dem Addierer 302, dem D-Register 311 und dem E-Register 303.
Wird nun die geänderte Teiladresse aus dem Akkumulatoradressenregister A-312 ausgelesen, wird dadurch eine entsprechende Anderung im Ort des Akkumulators in dem Speicher 10 bewirkt.
Die Orte für die einzelnen Akkumulatorworte in einem Akkumulator mehrfacher Wortlänge liegen innerhalb des Speichers nebeneinander. Die Kennzeichnung dieser Orte wird am besten so durchgeführt, dass man in dem Register A-312 die Speicheradresse für das Akkumulatorwort mit dem höchsten Stellenwert einspeichert, wie es in der Fig. 3 dargestellt ist. Die Programmierung wird dann am zweckmässigsten und günstigsten, wenn der Speicherort für den Akkumulator eine Adresse hat, die ohne Rest durch vier teilbar ist. Das Register, wie beispielsweise das A-Register 312 wird mit einem Abschnitt versehen, - man kann hierfür auch ein kleines zusätzliches Register 314 dazu verwenden - der bis vier zählen kann, um die effektive Akkumulatorlänge von einer Wortlänge bis auf eine vierfache Wortlänge festzulegen.
Die Adresse des Ortes für das Akkumulatorwort mit dem höchsten Stellenwert ist durch die Kombination des A-Registers 312 mit einem Hilfsregister, hier mit dem Akkumulatorlängenregister 314, gekennzeichnet. Mit diesem Hilfsregister 314 kann ein Flipflop verbunden sein, der nachweist, wenn die Adresse für das Akkumulatorwort mit dem höchsten Stellenwert eingespeichert worden ist, und der dann solange den Zutritt weiterer Adressen erlaubt, bis alle vier nebeneinanderliegenden Speichergebiete adressiert sind, oder bis angezeigt ist, dass weniger als vier Speicherstellen benötigt werden.
Das P-Register 310 kann in Verbindung mit der Operationssteuereinheit dazu verwendet werden, neue Adresseninformationen in das Akkumulatoradressenregister (A-Register 312) einzulesen, so dass die Speicherstellen, die nachfolgend als Akkumulator verwendet werden sollen, bereits bestimmt werden können, während die Datenverarbeitungsanlage unabhängig davon Operationen mit denjenigen Daten durchführen kann, die in den vorher adressierten Speicherstellen eingeschrieben sind.