DE2505518A1 - Vorrichtung zur uebertragung von daten zwischen den speicher- und rechenabschnitten eines elektronischen rechners - Google Patents

Vorrichtung zur uebertragung von daten zwischen den speicher- und rechenabschnitten eines elektronischen rechners

Info

Publication number
DE2505518A1
DE2505518A1 DE19752505518 DE2505518A DE2505518A1 DE 2505518 A1 DE2505518 A1 DE 2505518A1 DE 19752505518 DE19752505518 DE 19752505518 DE 2505518 A DE2505518 A DE 2505518A DE 2505518 A1 DE2505518 A1 DE 2505518A1
Authority
DE
Germany
Prior art keywords
vector
operands
binary value
signal
memory
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
DE19752505518
Other languages
English (en)
Other versions
DE2505518C2 (de
Inventor
Lewis Bethany
Kurt Erben
Maurice L Hutson
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.)
Control Data Corp
Original Assignee
Control Data 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
Priority claimed from US450632A external-priority patent/US3898626A/en
Priority claimed from US470896A external-priority patent/US3919534A/en
Application filed by Control Data Corp filed Critical Control Data Corp
Publication of DE2505518A1 publication Critical patent/DE2505518A1/de
Application granted granted Critical
Publication of DE2505518C2 publication Critical patent/DE2505518C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)

Description

PATENTANWÄLTE
HENKEL, KERN, FEILER & HÄNZEL
BAYERISCHE HYPOTHEKEN- UND WECHSELBANK MÜNCHEN Nr.318-85111 DRESDNER BANK MÜNCHEN 3 914
D-8000 MÜNCHEN 90 Postscheck: münchbn «.« - «»
TELEX: 05 29 802 HNKL D ρηΠΔΡΠ «ΓΗΜΙΠ STRASSF1 WECHSELBANK MÜNCHEN Nr.318-85111
hDUAKU-ÄLHMlU-MKASMi . DRESDNER BANK MÜNCHEN 3 914
Control Data Corporation
Minneapolis, Minn., V.St.A. 1 0. Feb. 1975
Vorrichtung zur Übertragung von Daten zwischen den Speicher- und Rechenabschnitten eines elektronischen Rechners
Die Erfindung bezieht sich auf die Datenverarbeitung und betrifft insbesondere eine Vorrichtung zur Verarbeitung von Daten und Informationen zwischen verschiedenen Abschnitten eines elektronischen Rechners o.dgl.
Bei der Datenverarbeitung ist es häufig wünschenswert, vergleichsweise große Datenmengen in kürzest möglicher Zeit zwischen den einzelnen Abschnitten des Rechners zu bewegen bzw» zu übertragen. Beispielsweise werden die im Speicher gespeicherten Daten normalerweise fortlaufend aus den Speicherbänken ausgelesen, um anschließend in den Rechenabschnitten des Rechners verarbeitet zu werden. Dabei treten jedoch Fälle ein, in denen es wünschenswert ist, Daten zu verarbeiten, die verschiedene, in den gleichen oder in benachbarten Speicherbänken gespejdierte Operanden darstellen. Außerdem ist es häufig wünschenswert, eine Resultante darstellende Daten in den gleichen oder in benachbarten Speicherbänken zu speichern.
Vektoroperationen sind von einem Rechner durchzuführende Operationen, bei denen einzelne von mehreren, einen Vektor
v.I./Bl/ro - 2
S0983S/Ö846
darstellenden Operanden sequentiell mit einzelnen von mehreren, einen anderen Vektor darstellenden Operanden verarbeitet werden, um mehrere Resultanten zu erhalten, die einen dritten Vektor darstellen. Beispielsweise umfaßt ein einfacher Vektor A + B ■ C die aufeinanderfolgenden Operationen von A1 + B1 ■ C1, A2 + B2 = C2, A, + B, ■ C3 '*· An + Bn = Cwobei AAA3 ··· A n den Vektor
A, B1, B2, B^ ... Bn den Vektor B und C1, C2t C, ... Cn
den resultierenden Vektor C darstellen. Gewöhnlich wird vor der Berechnung der Vektoraufgabe der aus A1, A2, A, ... An bestehende Vektor A in aufeinanderfolgenden von mehreren Bänken des Speichers gespeichert. Der aus B1, B2,
B, ... B~ bestehende Vektor B wird ebenfalls in aufeinanderfolgenden Speicherbänken gespeichert, und der aus C1, C2, C, ... Cn bestehende resultierende Vektor C soll in mehreren Bänken des Speichers gespeichert werden. Häufig sind die Bänke, in denen die Vektoren A und B gespeichert werden, die gleichen oder einander überlappende Bänke, und der resultierende Vektor C muß dabei in den gleichen Bänken wie die Operandenvektoren oder diese überlappenden Bänken des Speichers gespeichert werden.
Normalerweise vermögen die Lese/Eingabe-Schaltungen eines Speichers während einer bestimmten leitspanne nur einen einzigen Datenblock aus einer Speicherbank herauszugreifen. Aus diesem Grund ist es weder möglich, die Operanden A und B gleichzeitig aus einer einzigen Speicherbank herauszulesen, noch während eines einzigen Hauptzyklus der Speicherbank eine Resultante C in der gleichen Speicherbank zu speichern.
Wenn die Operanden A und B in der gleichen Speicherbank erscheinen, mußte bisher der zuerst auftretende Operand eine vorbestimmte Zeit lang verzögert werden, bis der als
509838/0846
zweiter auftretende Operand ausgelesen ist. Gemäß Fig. 1 werden beispielsweise die Vektoren A und B in der gleichen Bank des Speichers gespeichert; A1 bis AQ werden dabei als Superwort (sword) in der Bank 1, Aq bis A1^ als Superwort in der Bank 2 gespeichert usw., während B1 bis B^ als Superwort in der Bank 1, Bg bis B1, als Superwort in der Bank 2 gespeichert werden usw.. Bei den bisher benutzten Rechnern ist es üblich, zunächst den Operanden A1 aus der Bank 1 herauszulesen. Der Operand A1 wird dann verzögert, bis B1 ausgelesen worden ist, und A1 und B1 werden dann zu den Rechenabschnitten des Rechners überführt, um C1 zu erhal-' ten. Sodann werden die Operanden B verzögert, bis A2 ausgelesen worden ist. Hierauf werden die Operanden A verzögert, bis Bp ausgelesen worden ist. Dieser Vorgang läuft mit einer Verzögerung nach jedem aufeinanderfolgenden Lese-Vorgang eines Operanden ab, so daß sich erhebliche Verzögerungen ergeben.
Wie noch näher erläutert werden wird, ergeben sich zudem zusätzliche Verzögerungen beim Wiedereinlesen der Resultante C in die gleichen Speicherbänke.
Bei den meisten Speichern sind die Operanden während eines einzigen Hauptzyklus des Speichers nacheinander aus den verschiedenen Bänken herausgreifbar. Gemäß Fig. 1 können beispielsweise während eines Hauptzyklus bis zu acht fortlaufende Bänke einen Zugriff erlauben. Dabei können jedoch nur die Operanden eines Vektors aus den verschiedenen Bänken herausgegriffen werden, wobei es nicht möglich ist, während eines einzigen Speicher-Hauptzyklus Operanden A aus der einen Gruppe von acht Bänken und Operanden B aus anderen der gleichen acht Bänke auszulesen.
Aufgabe der Erfindung ist damit die Schaffung einer Vor-
509838/0846
richtung, welche eine einzige Verzögerung für den gesamten Vektor durchführt, so daß keine aufeinanderfolgenden Verzögerungen einzelner Operanden auftreten.
Die Erfindung bezweckt dabei auch die Schaffung einer Vorrichtung zum Herausgreifen von Daten aus dem Speicher eines elektronischen Rechners in einer möglichst kurzen Zeitspanne und zum Einschreiben von Daten in den Speicher in einer Mindestzeit«
Bei Rechneroperationen ist es üblich, Vektoroperationen durchzuführen, bei denen einzelne von mehreren Operanden, die einen Operandenvektor darstellen, sequentiell mit einzelnen von mehreren Operanden verarbeitet werden, die einen anderen Operandenvektor darstellen. Jeder Operandenvektor kann dabei eine große Zahl von Einzeloperanden enthalten, wobei mehrere Tausend derartiger Operanden bei einem einzigen Operandenvektor nicht ungewöhnlich sind. Häufig ist es hierbei der Fall, daß einige Operanden eines solchen Operandenvektors einen vorbestimmten Wert von z.B. Null besitzen. Die Erfindung richtet sich nun auf eine Vorrichtung zur Verarbeitung von Vektoren, bei welcher die einen derartigen vorbestimmten Wert besitzenden Operanden ausgelassen werden, so daß für die Speicherung von Operanden eines solchen vorbestimmten Werts, z.B. von Null, kein wertvoller Speicherraum belegt wird. Wenn Vektoren eine große Zahl solcher Operanden mit Null-Wert enthalten, lassen sich darüber hinaus auch Einsparungen an Rechenzeit realisieren, indem mit diesen Operanden keine Rechenvorgänge durchgeführt werden.
Der in der Beschreibung benutzte Ausdruck "Operandenvektor11 bedeutet einen Vektor mit einer Vielzahl von Operanden, die in einem fortlaufend geordneten Strom angeordnet sind.
609838/0 8 AS
Der Ausdruck "Resultantenvektor11 bezieht sich auf einen Vektor mit einer Anzahl von Resultanten, die ebenfalls in einem fortlaufend geordneten Strom angeordnet sind. Die Ausdrücke "Sparse-Operandenvektor" (operand sparse vector) und "Sparse-Resultantenvektor" (resultant sparse vector) beziehen sich je nach Fall auf Vektoren mit einer Vielzahl von Operanden bzw. Resultanten, die in einem fortlaufenden Strom angeordnet sind, sich von einem entsprechenden Operanden- oder Resultantenvektor aber durch das Fehlen (Weglassen) aller Operanden oder Resultanten, die einen vorbestimmten Wert, z.B. Null, darstellen, unterscheiden. Die Ausdrücke "Operandenbefehlsvektor (operand order vector) und "Resultantenbefehlsvektor" (resultant order vector) bedeuten schließlich fortlaufend angeforderte Bitströme, deren "Einsen" jeweils einen vorbestimmten Zustand eines entsprechenden Operanden oder einer Resultante eines entsprechenden Operanden oder eines Resultantenvektors darstellen und deren "Nullen" jeweils einen unterschiedlichen, vorbestimmten Zustand eines entsprechenden Operanden oder einer Resultante eines Vektors bedeuten. Bei den zu beschreibenden Beispielen enthält ein Sparse-Vektor alle nicht Null entsprechenden Ausdrücke eines betreffenden Operanden- oder Resultantenvektors, während ein Befehlsvektor "Einsen" entsprechend den Nicht-Null-Ausdrücken des Operanden- oder Resultantenvektors und "Nullen" entsprechend den Ausdrücken enthält, die im Operanden- oder Resultantenvektor einen Wert von Null besitzen.
Bisher erfolgten die Vektoroperationen in einem Rechner dadurch, daß die Gesamtheit aller der verschiedenen Operandenyektoren in einem Rechnerspeicher gespeichert (einschließlich der Operanden mit einem vorbestimmten Wert von z.B. Null) und alle Operanden der Operandenvektoren durch die Rechen- und Steuerabschnitte des Rechners (üblicher-
509838/08
weise durch einen Datenaustausch) verarbeitet werden. Ersichtlicherweise kann dann, wenn ein Operand einen vorbestimmten Wert, etwa eine Null, darstellt, wertvoller Speicherraum dadurch eingespart werden, daß derartige Operanden nicht gespeichert werden. Anstatt derartige Operanden zu speichern und zu verarbeiten, kann ein für den Wertzustand jedes Operanden repräsentatives Befehlsbit gespeichert werden, und derartige Befehlsbits können dann verarbeitet werden. Wenn z.B. im Fall von 64 Bit-Operanden in einem Operandenvektor nur 5% dieser Operanden den genannten, vorbestimmten Wert, z.B. Null, besitzen, kann die Speicherung eines Befehlsvektors zu erheblichen Einsparungen an Speicherraum führen. Wenn nämlich ein Operandenvektor 10 000 Operanden und davon 5% der genannten Operanden enthält (entsprechend 500 Operanden oder 32000 Bits), lassen sich durch Speicherung eines 10 000 Bit-Befehlsvektors anstelle der 32 000 Bits der 500 Operanden mit dem Wert Null beträchtliche Einsparungen an Speicherkapazität erzielen. Außerdem könnte wertvolle Rechnerzeit für die Verarbeitung von Vektoren mit einer großen Zahl von Operanden mit dem Wert Null nutzlos vergeudet werden, da die Resultanten, zumindest teilweise, durch die Null-Operanden diktiert sein können. Die Erfindung befaßt sich daher speziell mit einer Vorrichtung zur Verarbeitung von Sparse-Vektoren zwecks Ermöglichung der Speicherung von Sparse-Vektoren anstelle der vollen Vektoren und zur Handhabung der Sparse-Vektoren für Rechen- und Steuerzwecke.
Im Zuge der genannten Aufgabe bezweckt die Erfindung also auch die Schaffung einer Vorrichtung zur Verarbeitung von Sparse-Vektoren zwischen den Speicher- und Rechenabschnitten des Rechners, wobei ein Befehlsvektor zur Steuerung der Operation des Rechners hinsichtlich der Sparse-Vektoren geliefert wird.
509838/0846
Erfindungsgemäß werden die Daten, welche zumindest zwei Gruppen von zu den arithmetischen bzw. Rechenabschnitten des Rechners zu überführenden Operanden darstellen, durch einen selektiven Puffer geleitet. Die zuerst ankommenden Daten werden dabei verzögert, bis die zweiten Daten für das Auslesen bereitstehen. Der Puffer dient zur kontinuierlichen Speicherung der nacheinander eintreffenden Daten des ersten Vektors und zum Auslesen dieser Daten in der Reihenfolge ihres Eingangs (first in, first out) gemeinsam mit den entsprechenden Daten vom zweiten Vektor. Bei dem vorher erwähnten Beispiel, bei dem jedes Superwort in einer Speicherbank bis zu acht Operanden enthalten kann, werden z.B.die zuerst eingelesenen Operanden, d.h. A1 bis Ag, im Operandenpuffer gespeichert. Da der erste B-Operand (B1) in der gleichen Bank gespeichert wird wie A1 bis Ag, wird B^ erst dann ausgelesen, wenn alle Α-Operanden (A. bis A54) während des ersten Speicherhauptzyklus aus den ersten acht Bänken ausgelesen worden sind. Danach tasten die Leseschaltungen gleichzeitig die ersten und neunten Bänke ab, um nacheinander die Operanden Ag5 bis A72 aus der neunten Bank und die Operanden B1 bis B- (oder bis zu acht Operanden) aus der ersten Bank auszulesen. In der Zwischenzeit setzt der Puffer A1 usw. beim Auslesen von B1 usw. frei, während er Agc usw. speichert. Infolgedessen werden A1 und B1 freigegeben, worauf die Freigabe von Ap und B2 usw. folgt.
Ein besonderes Merkmal der Erfindung liegt in der Schaffung einer Steuereinrichtung, welche auf die zuerst eintreffenden Daten zur Pufferung derselben anspricht.
Ein anderes Erfindungsmerkmal betrifft die Schaffung einer Steuereinrichtung zu selektiven Verzögerung der wieder in den Speicher einzulesenden Resultantendaten·
509838/0846
Noch ein anderes Erfindungsmerkmal bezieht sich auf eine zwischen den beiden Puffern vorgesehene Steuereinrichtung zur vorteilhaften Verzögerung der Datenströme um einen optimalen Betrag, so daflöle Übertragung von Operanden aus dem Speicher und von Resultanten zum Speicher in einer Mindestzeit erfolgt.
Ein spezieller Gesichtspunkt der Erfindung richtet sich auf die Bereitstellung von Befehlsvektoren mit Bits, die für einen vorbestimmten Wert jedes Terms eines Operandenvektors repräsentativ sind, und welche zum selektiven Durchschalten von die Sparse-Vektoren durchlassenden Registern verarbeitet werden. Die Sparse-Vektoren werden zu den Registern übertragen, und ihre Operanden werden sequentiell in Abhängigkeit von der durch die Befehlsvektoren gewährleisteten Steuerung durchgeschaltet, wobei die Sparse-Operandenvektoren zur Bildung der Sparse-Resultantenvektoren durch den Rechner verarbeitet werden.
Gemäß diesem Merkmal der Erfindung schalten die Befehlsvektoren die Register selektiv durch, um die Operanden der beiden Sparse-Öperandenvektoren für die anschließende Verarbeitung durch den Rechner auszurichten. Dabei sind eine Vorrichtung zur Verarbeitung oder Behandlung der Befehlsvektoren in der Weise, daß die aus den Sparse-Operandenvektoren gebildeten Sparse-ResuBantenvektoren entsprechend der logischen Steuerung der Befehlsvektoren selektiv durchgeschaltet bzw. tormäßig gesteuert werden, sowie eine Vorrichtung zur Erzeugung eines Resultantenbefehlsvektors vorgesehen, so daß letzterer und der Sparse-Resultantenvektor verdichtet in einem Speicher gespeichert werden können.
Im folgenden sind bevorzugte Ausführungsformen der Erfin-
9838/0846
dung anhand der beigefügten Zeichnung näher erläutert. Es zeigen:
Fig. 1 eine schematische Darstellung einer Speicherstelle von Operandenvektoren A und B sowie des Resultantenvektors C in mehreren Speicherbänken eines Rechners,
Fig. 2 ein Blockschaltbild einer Puffersteuervorrichtung mit Merkmalen nach der Erfindung,
Fig. 3A bis 3D graphische Darstellungen der Arbeitsweise der Puffersteuervorrichtung gemäß Fig. 2 zur Kanalübertragung von Operandenvektoren vom Speicher zu den Rechenabschnitten des Rechners,
Fig. 4A bis 4D graphische Darstellungen der Arbeitsweise der Puffersteuervorrichtung gemäß Fig. 2 zur Kanal-Übertragung der Resultantenvektoren von den Rechenabschnitten zum Speicher,
Fig. 5 ein Blockschaltbild einer erfindungsgemäßen Vorrichtung zur Verarbeitung von Sparse-Operandenvektoren und Operandenbefehlsvektoren,
Fig. 6 ein Blockschaltbild einer erfindungsgemäßen Vorrichtung zur Steuerung der Sparse-Resultantenvektoren,
Fig. 7 ein Blockschaltbild einer erfindungsgemäßen Vorrichtung zur Erzeugung von Resultantenbefehlsvektoren und
Fig. 8 bis 10 graphische Darstellungen der Befehlsvektoren
509838/0846
und der Sparse-Vektoren zur Erläuterung der Vorrichtung gemäß den Fig. 5 bis 7.
In Fig. 1 ist eine typische Anordnung zur Speicherung von Daten in einer Anzahl von Speicherbänken eines Rechners veranschaulicht. Gemäß Fig. 1 bestehen die mit A und B bezeichneten verschiedenen Vektoren jeweils aus mehreren Einzeloperanden A1, A2, A, ... An sowie B1, B2, B, ... Bn. Jeder Operand wird manchmal auch als "Wort" und jede Operandengruppe, auch als "Superwort" (sword) bezeichnet. Für die Zwecke der Erläuterung sei vorausgesetzt, daß jedes fortlaufende Superwort jedes Vektors in aufeinanderfolgenden Speicherstellen des Speichers gespeichert ist und jede Speicherbank ein Superwort eines Einzelvektors zu speichern vermag. Gemäß Fig. 1 enthält die Bank 1 des Speichers z.B. die Operanden A1 bis A0, die Bank 2 des Speichers die Operanden Ag bis A1^ usw. Außerdem enthält die Speicherbank 1 auch die Operanden B1 bis B1- (die vorderen drei Stellen sind unbesetzt), während die Bank 2 die Operanden Bg bis B1, enthält usw. Wie noch näher erläutert werden wird, soll der resultierende bzw. Resultantenvektor C in der Weise gespeichert werden, daß die Resultanten C1 bis Cg in der Bank 1 (die beiden vorderen Bereiche sind unbesetzt), C„ bis C1^ in der Bank 2 gespeichert sind usw. Die unbesetzten bzw. unbelegten Bereiche sind nur dargestellt, um zu veranschaulichen, daß solche Nichtbelegungen vorkommen können, und deren Zahl kann bei den vorliegenden Beispielen bei irgendeinem Wert von 0 bis 7 liegen.
Die Vorrichtung zur optimalen Durchführung dieser Datenkanalübertragung ist in Fig. 2 dargestellt, welche ein Blockschaltbild eines Puffer- und Steuersystems gemäß einer bevorzugten Ausführungsform der Erfindung zeigt. Die Vorrichtung gemäß Fig. 2 weist ein Lese- oder Eingaberegister 10
509838/0846
mit einem über einen Kanal 11 geführten Eingang von der Speicherzugriffsteuerung des Datenspeichers des Rechners auf. Ein ähnliches Eingaberegister 12 empfängt seinen Eingang über einen Kanal 13 von der Speicherzugriffsteuerung des Speichers des Rechners. Die Register 10 und 12 empfangen getrennte Operanden A und B. Das Eingaberegister 10 weist einen Ausgangskanal 14 zu einer Fan-in-Schaltung 15» einen Ausgangskanal 16 zu einem Zwei-Operanden-(1/4-Superwort)-Puffer 17 und einen Ausgangskanal 18 zu einer Fan-in-Schaltung 19 auf. Ebenso weist das Eingaberegister 12 einen Ausgangskanal 20 zu einer Fan-in-Schaltung 19» einen Ausgangskanal 21 zu einem Zwei-Operanden-(1 /4-Superwort)-Puffer 22 und einen Ausgangskanal 23 zu einer Fan-inSchaltung 24 auf. Die Fan-in-Schaltung 15 liefert ein Ausgangssignal 25 zu einem Zwei-Operanden- (1/4-Superwort) -Register 26, das seinerseits ein Ausgangssignal über einen Kanal 27 zu einem Zwei-Operanden-(1/4-Superwort)-Register 28 liefert. Das Register 28 weist über einen Kanal 29 einen Ausgang zu den Datenaustausch- und Rechenabschnitten des Rechners auf. Auf ähnliche Weise liefert die Fan-in-Schaltung 24 über einen Kanal 30 ein Ausgangssignal zu einem Zwei-Operanden-(1/4-Superwort)-Register 31» das seinerseits über einen Kanal 32 ein Ausgangssignal zu einem Zwei-Operanden-(1/4-Superwort)-Register 33 liefert. Der Ausgang des Registers 33 ist über einen Kanal 34 an die Datenaustausch-und Rechenabschnitte des Rechners angeschlossen. Der Puffer 17 liegt mit seinem Ausgang über einen Kanal 35 an der Fan-in-Schaltung 15, während der Ausgang des Puffers 22 über einen Kanal 36 an der Fan-inSchaltung 24 liegt. Die Fan-in-Schaltung 19 liegt mit ihrem Ausgang über einen Kanal 37 am Puffer 38, der ein 128-Operanden-(i6-Feld)-Puffer ist, dessen Ausgänge über Kanäle 39 und 40 mit den Fan-in-Schaltungen 15 bzw. 24 verbunden sindo
509838/0848
In Fig. 2 geben die stark ausgezogenen Linien die möglichen Bahnen an, welche die die Operanden A und B darstellenden Daten nehmen können, während die dünneren Linien die Steuerleitungen angeben. Gemäß Fig. 2 ist zwischen den Registern 28 und 26 eine Freigabesteuereinheit 41, zwischen dem Register 26 und dem Puffer 17 eine Überladungssteuereinheit 42 und zwischen dem Puffer 17 und einer Steuereinheit 44 eine Überladungssteuereinheit 43 vorgesehen. Auf ähnliche Weise ist eine ÜberladungsSteuereinheit 45 zwischen den Registern 33 und 31 vorgesehen, während zwischen dem Register 31 und dem Puffer 22 eine Überladungssteuereinheit 46 und zwischen dem Puffer 22 und der Steuereinheit 44 eine Überladungssteuereinheit 47 vorgesehen ist. Die Steuereinheit 44 liefert einen Steuerausgang 48 zur Fan-in-Schaltung 19.
Die bisher beschriebene Vorrichtung vermag die aus dem Speicher ausgelesenen Daten zu puffern. Obgleich die genaue Arbeitsweise noch näher erläutert werden wird9 sei hier gesagt, daß speziell dann, wenn die Vektordaten A zuerst einzutreffen beginnen, die verschiedenen ersten Operanden über den Kanal 14 zum Datenaustausch geleitet werden. Da der Datenaustausch bisher den ersten Operanden vom Vektor B (B,.) noch nicht empfangen hat, werden diese bis zu den ersten beiden Operanden (A1 und Ap) im Register 28 gespeichert. Wenn der Operand B^ noch nicht eingetroffen ist, ist der Datenaustausch nicht für die Aufnahme der Operanden A bereit. Infolgedessen wird ein Überladungssignal über den Kanal 41 zum Register 26 geleitet, wodurch letzteres angewiesenwird, keine weiteren Operanden zum Register 28 zu leiten. Daher werden die Operanden bis zu den nächsten beiden Operanden (A, und A^) im Register 26 gespeichert. Wenn der Operand B^ noch nicht angekommen und das Register 26 nunmehr voll belegt ist, wird ein Über-
509838/0846
ladungssignal über die Steuereinheit 42 zum Puffer 17 geleitet. Sodann wird der Puffer 17 betätigt, und die beiden nächsten Operanden (A. und Ag) werden zum Puffer 17 übertragen. Bei voller Belegung des Puffers 17 wird die Steuereinheit 44 über den Kanal 43 betätigt, um die Fanin-Schaltung 19 für die Aufnahme aller weiteren Daten A zu aktivieren. Alle weiteren Operanden A werden dann über die Schaltung 19 zum Puffer 38 geleitet.
Wenn der erste Operand B eintrifft, wird dieser über den Kanal 23 durch die Fan-in-Schaltung 24 zum Register 33 übertragen. Die Datenaustauscheinrichtung, die nunmehr die Operanden A^ und B^ aufzunehmen vermag, läßt den Ausgang dieser Operanden aus den Registern 28 und 33 zu. Wenn ein Operand zur Datenaustauscheinrichtung überführt worden ist, wird der so ausgelesene Raum mit dem nächsten Operanden ausgefüllt. Gleichzeitig werden weitere Operanden A in den Puffer 38 eingegeben, während Operanden aus dem Puffer 17 ausgelesen werden, und anschließend aus dem Puffer 38 ausgelesen. Dieser Vorgang dauert an, bis alle Operanden A und B aus dem Speicher ausgelesen worden sind.
Der in der Beschreibung benutzte Ausdruck "Hauptzyklus11 bezieht sich auf die einer einzigen Speicherbank zugeordnete Zeitspanne, während welcher diese Bank eine Anforderung zu erfüllen vermag, um entweder Operanden zu liefern oder Resultanten zu speichern. Wenn eine Anforderung an eine Speicherbank herangetragen wird, ist diese Bank erst nach Beendigung des Hauptzyklus wieder zugreifbar. Wie speziell aus Fig. 1 hervorgeht, sind verschiedene Bänke sequentiell zugreifbar, so daß die einem Vektor zugeordneten, gewünschten Operanden in fortlaufender Reihe fliessen. Zum Zweck der Beschreibung der Erfindung kann gesagt werden, daß bis zu acht Speicherbänke während der einem
509838/0846
Hauptzyklus einer dieser Bänke äquivalenten Zeitspanne sequentiell zugreifbar sind. Es ist somit ersichtlich, daß die Speicherbank, bei der der Zugriff zuerst erfolgt, erst nach Beendigung ihres Hauptzyklus wieder zugreifbar ist, welcher gleichzeitig die für den Zugriff zu den ersten acht Bänken erforderliche Zeitspanne darstellt. Wenn daher an einer die beiden Operanden A und B enthaltenden Speicherbank ein Zugriff bezüglich der Operanden A erfolgt, werden die Operanden B bis zur Beendigung des ersten Hauptzyklus nicht ausgelesen, sondern erst nachdem die A-Operanden A^ bis Ag^ aus den Bänken 1 bis 8 ausgelesen worden sind. Folglich werden die Α-Operanden A^ bis Ag^ gepuffert. Anschließend werden die nächsten Α-Operanden Ag1- usw. aus der neunten Speicherbank ausgelesen und im Puffer 38 gepuffert, während gleichzeitig die B-Operanden B.. usw. aus der ersten Speicherbank ausgelesen werden, Während die ersten Operanden B durch den Puffer für einen kontinuierlichen Datenfluß zu den Datenaustausch- und Rechenabschnitten des Rechners verarbeitet werden, werden die ersten Operanden A aus dem Puffer ausgelesen.
Obgleich sich die vorstehende Beschreibung auf den Fall bezieht, in welchem die Operanden A zuerst eintreffen, ist der Vorgang dann, wenn die Operanden B zuerst eintreffen, ersichtlicherweise ähnlich, nur mit dem Unterschied, daß die Operanden B im Puffer 38 gespeichert werden, bis die Operanden A eintreffen und verarbeitet werden. In dieser Hinsicht bestimmt die Steuereinheit 44 die Eingangs- und Ausgangssteuerungen für die Fan-in-Schaltung 19 und den Puffer 38 anhand davon, welcher Vektor zuerst einzutreffen beginnt.
Gemäß Fig. 2 werden die Resultantendaten von der Datenaustauscheinrichtung über den Kanal 51 vom Register 50 empfangen und über einen Kanal 52 durch eine Torschaltung 53 zu
509838/0848
einem Puffer 61 überführt. Wenn die Speicherbank, in welcher die Resultanten gespeichert werden sollen, frei ist, liefert die Speicherzugriffsteuereinheit über einen Steuerkanal 54 ein Freigabesignal, so daß die Daten über die Fan-in-Schaltung 56 geleitet werden können, um über einen Kanal 57 zum Sngaberegister 58 und dann über einen Kanal 59 zur Speicherzugriffsteuereinheit überführt zu werden. Wenn jedoch die erste Speicherbank noch aktiv ist (z.B. wenn immer noch Daten von den Operanden A oder B in diese eingegeben werden), wird die Fan-in-Schaltung 56 nicht aktiviert bzw. freigegeben, und die Daten der Resultante C werden im Puffer 61 zwischengespeichert. Der Puffer 61, der bis zu 128 Resultanten (sechzehn Speicherbänke) zu speichern vermag, betätigt über einen Steuerkanal 63 einen Zähler 62 zum Zählen der im Puffer 61 gespeicherten Resultanten-Superworte. Das Ausgangssignal vom Zähler 62 wird aus noch zu erläuternden Gründen über den Steuerkanal 64 zur Steuereinheit 44 geleitet. Der Puffer 61 liefert über einen Datenkanal 65 ein Ausgangssignal zur Fan-in-Schaltung 56, so daß die im Puffer 61 enthaltenen Daten in den Speicher eingelesen werden können, wenn die betreffende Speicherbank für ihre Aufnahme frei ist.
Die Fig. 3A - 3C sind graphische Darstellungen zur Veranschaulichung der Arbeitsweise des Puffers in Verbindung mit aus dem Speicher ausgelesenen Daten. Anhand von Fig. 3A sei nunmehr angenommen, daß der Vektor A zuerst eingeht. Fig. 3A zeigt einen Kreis, der in 32 gleich große Segmente unterteilt ist, die jeweils mit der Bezeichnung A + O bis A +248 beginnen. Die Fläche jedes Segments des Kreises stellt jeweils die Operanden in einer einzelnen Speicherbank (Superwort) dar; jeder Quadrant gibt acht Bänke des Speichers an, die während eines einzigen Hauptzyklus zugreifbar sind. Zum Zweck der Erläuterung sei angenommen,
509838/08Λ 6
daß ein Superwort (acht Operanden) während vier Ünterzyklen des Rechners ausgelesen werden kann, während acht Superworte während eines Hauptzyklus ausgelesen werden können. Somit stellen acht Unterzyklen einen Quadranten gemäß Fig. 3A dar, und diese bilden einen Hauptzyklus des Speichers.
Obgleich dies für die vorliegenden Erläuterungen nicht erforderlich ist, kann der 32. bzw. letzte Neben-oder Unterzyklus eines bestimmten Speicher-Hauptzyklus auch zum Adressieren der gleichen Speicherbank durch einen anderen Operanden oder eine andere Resultante herangezogen werden. Aus diesem Grund ist es tatsächlich nur erforderlich, 31 Unterzyklen einer einzigen Speicherbank zuzuordnen, während der andere Unterzyklus sowohl für Auslesen als auch gleichzeitig für Adressierung benutzt werden kann«
Bezüglich des Diagramms von Fig. 3A sei angenommen, daß die mit A bezeichnete Linie an einer festen Stelle liegt und daß sich beim Zirkulieren des Speichers der die Speicherstellen angebende Kreis in Richtung der Pfeile 70 im Uhrzeigersinn dreht. Nach Beendigung von vier Unterzyklen des Rechners hat sich die Position des Kreises von Fig. 3A mithin so verdreht, daß sich die Position A + 8 am Scheitelpunkt des Kreises an der Linie A befindet.
Gemäß Fig. 3B ist kein Zugriff zur Speicherbank 1 für Operanden B möglich, bis das Auslesen der Operanden A aus der neunten Speicherbank beginnt und die ersten Operanden A1 bis Ag^ vollständig aus den Bänken 1 bis 8 ausgelesen worden sind. In dem in Fig. 3B veranschaulichten Idealfall beginnt die eigentliche Lage der Operanden B an der Speicherbank 9 des Rechners. Mithin werden gemäß Fig. 3B die Α-Operanden A^ bis Ag aus der Bank 1 ausgelesen, während
9-8 38/0846
gleichzeitig die B-Operanden B1 bis BQ aus der Bank 9 ausgelesen werden. Nach Beendigung des ersten Hauptzyklus sind die Operanden B1 bis Bg^ aus den Speicherbänken 9 ausgelesen worden, und die Leseschaltungen sind dann für das Auslesen der Α-Operanden (z.B. Agc) aus der Bank 9 und der B-Operanden (z.B. Bg,-) aus der Speicherbank 17 frei.
Falls jedoch die Operanden A und B die gleiche Bank des Speichers einnehmen, wird der eine der Operandenvektoren nicht ausgelesen, während der andere Operandenvektor, etwa der Vektor A, in der Vorrichtung gemäß Figo 2 ständig gespeichert und gepuffert wird. Wenn daher der Operand A zuerst eintrifft, werden zwei die Operanden A1 und A« darstellende Operanden im Register 28 gespeichert, zwei die Operanden A, und A- darstellende Operanden im Register 26 gespeichert und zwei Operanden A,- und Ag im Puffer 17 gespeichert, während die restlichen Operanden A„ bis Ag» im Puffer 38 gespeichert werden. (Aus den vorstehenden Ausführungen geht hervor, daß, obgleich Operanden anfänglich im Puffer 17 gespeichert werden, bei der Verarbeitung durch die Fan-in-Schaltung 15 alle weiteren Operanden durch den Puffer 38 zwischengespeichert werden.) Wie speziell aus Fig. 3C ersichtlich ist, werden dann nach Abschluß des ersten Hauptzyklus des Speichers und nach dem Puffern von bis zu acht A-Superworten (Operanden A1 bis Ag«) durch die Leseschaltungen die nächsten Α-Operanden Agc usw. aus der neunten Speicherbank ausgelesen, während an der ersten Speicherbank ein Zugriff zum Auslesen von B-Operanden erfolgt. Nach Abschluß der nächsten vier Unterzyklen des Rechnerspeichers sind dann neun Superworte (Operanden A1 bis A~») aus den Speicherbänken 1 bis 9 und ein Superwort (Operanden B1 bis Bo) aus der Speicherbank 1 ausgelesen worden. Wenn der Operand B1 ausgelesen worden ist, können die Operanden A1 und
509838/0848
B1 zu den Rechenabschnitten übertragen werden. Nach der Übertragung des ersten Α-Operanden zum Rechenteil werden die folgenden Operanden im Puffer um eine Stelle hochbewegt.
Anhand von Fig. 3D sei nunmehr angenommen, daß die A- und B-Operandenvektoren an verschiedenen Speicherbänken beginnen, wobei der Vektor B dem Vektor A um drei Bänke nachläuft. Genauer gesagt, wenn die Α-Operanden an der Speicherbank 3 beginnen, während die B-Operanden an der Speicherbank 1 beginnen, werden unter diesen Bedingungen die ersten Α-Operanden (A1 bis A-, g) aus den Speicherbänken 3 und 4 und die B-Operanden B1 bis B1 g aus den Speicherbänken 1 und 2 ausgelesen. Während der nächsten vier Unterzyklen des Speichers wird ein Superwort (Operanden A17 bis A2^) ausgelesen, doch da die Leseschaltungen B17 nicht auslesen können, werden B17 usw. vorübergehend ausgelassen, und das A-Superwort (A17 bis A2,) wird gepuffert. Der Vorgang wird daraufhin auf die beschriebene Weise fortgesetzt, bis A17 und A1Q das Register 28, A1Q und A2Qdas Register 26 und A21 und A22, wie erwähnt, den Puffer 17 einnehmen. Die Operanden A2, bis Ag0, die während des mit der dritten Speicherbank beginnenden ersten Hauptzyklus ausgelesen werden, werden dann über die Fan-in-Schaltung zum Puffer 38 übertragen. Die Linie B verschiebt sich somit zur Position B1 im wesentlichen in den in den Fig. 3B und 3C veranschaulichten Zustand. Während der nächsten vier Unterzyklen des Rechners lesen die dem Speicher zugeordneten Leseschaltungen weiterhin die Α-Operanden aus der Speicherbank aus, während gleichzeitig B-Operanden B17 üsw. aus der dritten Speicherbank ausgelesen werden. Die Operanden B17 bis B2. werden mithin aus dem Speicher ausgelesen und sequentiell über den Kanal 23 und das Register 33 zur Datenaustauscheinrichtung überführt, während gleich-
509838/0846
zeitig die Α-Operanden Ag,, bis Ag8 aus dem Speicher ausgelesen und im Puffer 38 gespeichert werden. Die mit den Kanälen 29 und 34 verbundene, für die Aufnahme der in den Registern 28 und 33 gespeicherten Operanden A^ und B1„ bereitstehende Datenaustauscheinrichtung verarbeitet die Daten, so daß A^8 und B^8 als nächste für die Verarbeitung in die Reihe gelangen. Dieser Vorgang dauert während der nächsten vier Unterzyklen an, bis die Operanden aus dem Puffer 17 freigesetzt sind, worauf die Datenauslesung auf beschriebene Weise aus dem Puffer 38 erfolgt.
Während die Operanden A und B durch den Rechenabschnitt des Rechners verarbeitet werden, werden Resultanten C gebildet, die von der Datenaustauscheinrichtung über den Kanal 51 zum Register 50 zurückgeführt werden. Falls die ersten Resultanten C zu einem Zeitpunkt eintreffen, an welchem die Operanden A oder B aus der gleichen Gruppe von Speicherbänken ausgelesen werden, tritt ein Konflikt auf, weshalb es wünschenswert ist, die Resultanten C eine zweckmäßige Zeitspanne vor der Wiedereingabe in den Speicher über die Speicherzugriffsteuereinheit zwischenzuspeichern. Die Resultanten C werden somit von der Datenaustauscheinrichtung zum Register 50 und von diesem zur Torschaltung 53 übertragen. Anhand von Fig. 4A läßt sich der einfachste Fall der Eingabe der Resultanten C in den Speicher erläutern. Bei dem in Fig. 4A schematisch dargestellten Fall sind die Α-Operanden A^ bis A1^ aus den Speicherbänken 1 bis 18 ausgelesen worden. Ebenso sind B-Operanden B. bis B80 aus den Speicherbänken 1 bis 10 ausgelesen worden. Wenn daher die erste C-Resultante am Register 50 ankommt, sind die ersten acht Speicherbänke frei bzw. unbelegt, da die Operanden A aus der 19« Bank und die Operanden B aus der 11. Bank ausgelesen werden. Da weiterhin die Ankuftszeit der Resultanten C mit dem
509838/0846
dritten Quadranten des Diagramms von Fig. 4A zusammenfällt, treten keine Behinderungen auf, wenn die Operanden A den Hauptzyklus durchlaufen. Infolgedessen wird die Resultante C zum Puffer 61 übertragen, und ein von der SpeicherzugriffSteuereinheit abgegebenes Signal, welches das Freisein der ersten Speicherbank zur Aufnahme der Resultantendaten anzeigt, wird auf dem Kanal 54 der Torschaltung 53 aufgeprägt, um die Fan-in-Schaltung 56 für die Betätigung des Eingaberegisters 58 zu aktivieren, so daß die Resultantendaten über den Kanal 59 und die Speicherzugriffsteuereinheit in den Speicher eingegeben werden.
Ein Konflikt würde jedoch auftreten, wenn die ersten C-Resultanten zu einem Zeitpunkt einträfen, an welchem aus den ersten Speicherbänken, in denen die C-Resultanten gespeichert werden sollen, immer noch Operanden ausgelesen werden. Gemäß Fig. 4B sind beispielsweise Α-Operanden A^ bis Ag8 aus den Speicherbänken 1 bis 11 und B-Operanden B.. bis B^2 aus den Speicherbänken 1 bis 3 ausgelesen worden. Gemäß Fig, 1 ist daher vor dem Abschluß des Hauptzyklus und vor der Beendigung der Auslesung der B-Operanden B2C bis Bg^ aus den Bänken 4 bis 8 kein Zugriff zur ersten Speicherbank möglich. Aus diesem Grund müssen die Resultanten C bis zum Abschluß dieses Speicherzyklus gepuffert werden. Folglich informiert ein von der Speicherzugriffsteuereinheit über den Kanal 54 der Fan-in-Schaltung 56 aufgeprägtes Signal diese Schaltung, daß kein Zugriff zu den Speicherbänken 1 bis 8 möglich ist, so daß die C-Resultantendaten im Puffer 61 gepuffert werden. Der Puffer vermag dabei bis zu sechzehn Datensuperworte (128 Resultanten) zu speichern. Wenn die Resultanten C während des zweiten Quadranten des Diagramms von Fig. 4B eintreffen, speichert der Puffer 61 in diesem Fall bis zu acht Super-
509838/084S
worte der C-Resultanten (64 Resultanten). Gleichzeitig wird der Zähler 62 betätigt, um aus noch näher zu erläuternden Gründen die im Puffer 61 gespeicherten Resultanten-Superworte zu zählen. Nach beendigter Auslesung der B-Operanden aus der ersten Speicherbank sind bis zu acht C-Resultanten-Superworte (64 Resultanten) im Puffer 61 gespeichert. (Da bei dem in Fig. 4B dargestellten Fall die C-Resultanten zu einem Zeitpunkt eintrafen, an welchem drei B-Operanden-Superworte aus den Speicherbänken 1 bis 3 ausgelesen worden sind, werden nur fünf Superworte der Resultante C im Puffer 61 gespeichert.) Wenn die erste Speicherbank freigemacht wordenist, betätigt die Speicherzugriffsteuereinheit über den Kanal 54 die Fan-in-Schaltung 56, um die Übertragung der Resultantendaten vom Puffer 61 zum Eingaberegister 58 und damit die kontinuierliche Überführung von Resultantendaten in den Speicher zu ermöglichen. Weitere C-Resultanten werden kontinuierlich im Puffer 61 zwischengespeichert.
Die Fig. 4C und 4D veranschaulichen zusammen den "ungünstigsten" Fall bei der Rückführung der Resultanten C zum Speicher. Hierbei sind Α-Operanden A. bis A-pQQ aus ^en er~ sten 25 Speicherbänken und B-Operanden B^ bis B,. -,r aus den ersten 17 Speicherbänken ausgelesen worden. Infolgedessen ist die erste Speicherbank anscheinand zur Aufnahme von C-Resultantendaten frei. Die Adressierschaltungen des Lese- und Eingabeabschnitts des Speichers sind jedoch so ausgelegt, daß jeweils 32 Speicherbänke die gleichen Adressierschaltungen benutzen. Da die C-Resultantendaten während des vierten Quadranten oder Hauptzyklus eintreffen, wie in Fig. 4C angedeutet, tritt daher ein Konflikt auf, wenn die Leseschaltungen das Auslesen der Operanden A aus der 33· Speicherbank beginnen, weil das Auslesen aus der 33. Speicherbank und das Einschreiben in die erste Speicherbank
509838/084
S3
nicht gleichzeitig erfolgen können. Aus diesem Grund liefert die Speicherzugriffsteuereinheit über den Kanal 54 ein Signal an die Fan-in-Schaltung 56, so daß die ersten C-Resultantendaten im Puffer 61 gespeichert werden. Wie im Fall von Fig. 4B werden die C-Resultantendaten somit kontinuierlich im Puffer 61 gespeichert. Wie erwähnt, liefert der Zähler 62 eine Zählung der Zahl der im Puffer 61 gespeicherten Resultanten-Superworte, Wenn diese Zählung den Wert 8 erreicht und damit die Speicherung von acht Superworten. der im Puffer 61 gespeicherten Resultanten angibt, wie dies in Fig. 4C scheaatisch durch die gestrichelte Linie angedeutet ist, liefert der Zähler 62 über den Kanal 64 ein Freigabesignal an die Steuereinheit 44, um die Α-Operanden weiter zwischenzuspeichem. Der Grund hierfür besteht darin, daß dann, wenn die Eingabe der C-Operanden an dem durch die gestrichelte Linie C1 in Fig. 4C angedeuteten Punkt beginnen würde, ein Konflikt mit dem Auslesen der B-Operanden aus dem dritten Quadranten des Speichers auftreten würde. Wenn die C-Resultanten weiterhin mit acht zusätzlichen Superworten gespeichert werden, tritt ein Konflikt beim Auslesen der B-Operanden aus dem vierten Quadranten auf.
Als Losung bieten sich zwei Möglichkeiten an. Einmal könnten die C-Resultanten bis zu drei volle Speicherzyklen (24 Bänke) im Zustand gemäß Fig. 4B gepuffert werden,, Diese Möglichkeit ist jedoch nicht besonders günstig, weil dabei Verzögerungen in der Ausnutzung der Resultanten auftreten können und sich daraus auch Überlastung der Kapazität des Puffers 6i ergeben kann. Aus diesem Grund wird eine zweite Möglichkeit als zweckmäßiger betrachtet, bei welcher der Zähler 62, wenn er eine Zählung von 8 erreicht und die Resultanten nicht mehr zu den Eingaberegistern überführt werden können, die Steuereinheit 44 betätigt,
509 8 38/0846
- 82 -
um die Α-Operanden wahrend weiterer acht Superworte (8 Speicherbänke, 64 Operanden) zu puffern. Folglich werden gemäß Fig. 4D die Α-Operanden kontinuierlich aus dem Speicher ausgelesen, während bis zu sechzehn volle Superworte (128 Operanden) der Α-Operanden im Puffer 38 gespeichert werden. Zwischenzeitlich wird das Auslesen der B-Operanden vorübergehend während eines Hauptzyklus des Speichers (64 Operanden) unterbrochen, und die C-Reöultanten werden mit bis zu weiteren sieben Resultanten-Superworten (56 Resultanten) im Puffer 61 gespeichert, bis der Zustand gemäß Fig. 4D erreicht ist. Die Α-Operanden werden somit an der Linie A ausgelesen, die B-Operanden werden an der Linie B1 ausgelesen, und die C-Resultanten werden an der Linie C" verarbeitet. Die C-Resultanten werden daher mit bis zu sechzehn vollen Speicherbänken gepuffert, und die Α-Operanden werden gleichfalls mit bis zu sechzehn vollen Speicherbänken gepuffert. In diesem Fall sind mithin die Α-Operanden A* bis Α,2ο aus den ersten vierzig Speicherbänken und die B-Operanden B^ bis B^Qg aus den ersten 24 Speicherbänken ausgelesen worden. Während der nächsten vier Unterzyklen des Rechners werden folglich die Α-Operanden A^21 bis A,2Q aus der ^1· Speicherbank und die B-Operanden B^q7 bis B2Q. aus der 25. Speicherbank ausgelesen, und die C-Resultanten C^ bis Cg werden konfliktfrei in die erste Speicherbank eingelesen bzw. eingegeben.
Ersichtlicherweise kann der größte Teil der Rechenverarbeitung der Operanden durch die Rechenabschnitte des Rechners innerhalb einer Zeitspanne erfolgen, die einigen wenigen Unterzyklen einer Speicherbank äquivalent ist. Wenn dabei die Resultanten in den gleichen Speicherbänken wie die Operanden gespeichert werden sollen, und zwar beginnend mit der ersten Speicherbank, tritt wahrscheinlich
509838/0 848
SY
der in Verbindung mit Fig. 4B erläuterte Zustand ein. Es ist jedoch auch wahrscheinlich, daß die Resultanten in nachfolgenden Speicherbänken gespeichert werden, wobei sich die Zustände gemäß den Fig. 4A und Fig. 4C und 4D ergeben können.
Obgleich für das Verständnis der Erfindung nicht nötig, ist zu beachten, daß in Fig. 4D die Linien A, B und C an den Trennlinien zwischen drei der vier Quadranten auftreten. Der Zugriff zu den Eingabe/Aus gang-Kanälen ist konfliktfrei unter Ausnutzung von zweckmäßigen Pufferverfahren möglich, um einen Eingang/Ausgang-Zugriff an der vierten Trennlinie zwischen den Quadranten zu ermöglichen (bei A + 218 in Fig. 4D oder A + 152 in Fig. 4B).
In Fig. 5 ist eine erfindungsgemäße Vorrichtung zur Verarbeitung von Sparse-Operandenvektoren (operand sparse vectors) dargestellt, welche ein Leseregister 10 zur Aufnahme eines Sparse-Operandenvektors A von der Speicherzugriffsteuereinheit und vom Speicher eines Rechners über einen Kanal 11 aufweist. Der Ausgang des Leseregisters liegt an einem Puffer 102, dessen Ausgang über einen Kanal 103 wiederum an einem Operanden-Schieberegister 104 liegt. Auf ähnliche Weise empfängt ein Leseregister 12 einen Sparse-Operandenvektor B über einen Kanal 13 von der Speicherzugriffsteuereinheit und vom Speicher des Rechners und liefert ein Ausgangssignal zu einem Puffer 107, welcher seinerseits über einen Kanal 108 ein Ausgangssignal zu einem Operanden-Schieberegister 109 liefert. Die vorzugsweise eine Kapazität von bis zu 32 Operanden besitzenden Puffer 102 und 107 dienen zur Ausrichtung der über die Kanäle 11 bzw. 13 eingehenden Operanden in einem ausgerichteten, fortlaufend geordneten Operandenstrom oder -fluß in der Ausgangsrangfolge entsprechend der Eingangsreihen-
50983 8/0846
Sf
folge. Die Puffer 102 und 107 können aus der Vorrichtung gemäß Fig. 2 bestehen und auf die vorher beschriebene Weise arbeiten.
Ein Leseregister 110 empfängt über einen Kanal 111 ein Eingangssignal von der Speicherzugriffsteuereinheit und vom Speicher des Rechners und liefert ein Ausgangssignal zu einem Puffer 112. Auf ähnliche Weise empfängt ein Leseregister 113 ein Eingangssignal über «inen Kanal 114 von der Speicherzugriffsteuereinheit und vom Speicher des Rechners, um ein Ausgangssignal zu einem Puffer 115 zu liefern. Wie noch deutlicher werden wird, wird der Sparse-Operandenvektor AVom Speicher über den Kanal 11 zum Leseregister 10 geleitet, während der Sparse-Operandenvektor B vom Speicher über den Kanal 13 zum Leseregister 12 geführt, ein Operandenbefehlsvektor X über den Kanal 111 vom Speicher zum Leseregister 110 geleitet und ein Operandenbefehlsvektor über den Kanal 114 vom Speicher zum Leseregister 113 überführt wird. Wie ebenfalls noch deutlicher werden wird, enthalten die Befehlsvektoren X und Y die gleiche Zahl von Bits, wie Operanden in den Öperandenvektoren A bzw. B vorhanden sind, und jede binäre "Eins" in den Befehlsvektoren X und Y entspricht einem Nicht-Null-Operanden der betreffenden Operandenvektoren A bzw. B, während jede binäre "Null" in den Befehls vektoren X und Y einem Nullwert-Operanden der betreffenden Operandenvektoren A bzw· B entspricht. Es ist jedoch zu beachten, daß die von den Leseregistern 10 und 12 erhaltenen Eingangssignale keine NuIlwert-Operanden enthalten, da diese Sparse-Vektoren sind. Die Positionen der Nullwert-Operanden sind allerdings im betreffenden Befehlsvektor mit Null-Bits bezeichnete
Die Puffer 112 und 115 vermögen bis zu 1024 Bits zu spei-
ehern. Der Ausgang des Puffers 112 ist über einen Kanal 116
509838/0
SG
zu einem X-Skalenregister 117 geführt, das seinerseits ein Ausgangssignal zu einem X-Linksschiebenetz 118 liefert, welches wiederum über einen Kanal 119 ein Ausgangssignal an ein X-Flip-Flop 120 liefert. Auf ähnliche Weise ist der Ausgang des Puffers 115 über einen Kanal 121 mit einem Y-Skalenregister 122 verbunden, das sein Ausgangssignal an ein Y-Linksschiebenetz 123 liefert, dessen Ausgang wiederum über einen Kanal 124 mit einem Y-Flip-Flop 125 verbunden ist. Das Ausgangssignal der Register 117 und 122 wird außerdem einem ODER-Glied 126 eingegeben, das ein Ausgangssignal zu einem Normalisierzählernetz 127 liefert, welches seinerseits ein Ausgangssignal zu einem Zählschieberegister 128 liefert. Das Ausgangssignal vom Zählschieberegister 128 wird beiden LinksEchiebenetzen 118 und 123 zugeführt. Das Linksschiebenetz 118 liefert ein Ausgangssignal über einen Kanal 119a zum X-Skalenregister 117, während das Y-Linksochiebenetz ein Ausgangssignal über einen Kanal 124a zum Y-Skalenregister 122 liefert.
Vom X-Flip-Flop 120 wird ein Aus gangs signal über einen Kanal 130 zu einem Operanden-Schieberegister 104 abgenommen, während vom Y-Flip-Flop 125 ein Ausgangssignal über einen Kanal 131 zu einem Operanden-Schieberegister 109 abgenommen wird. Außerdem werden rom X- und vom Y-Flip-Flop 120 bzw. 125 über einen Kanal 130 bzw. 131 oe ein Ausgangssignal zur Vorrichtung gemäß Fig. 2 abgenommen. Ein Multiplexer 132 empfängt Singangssignale über einen Kanal 133 vom Puffer 102, über einen Kanal 134 vom Puffer 107, über einen Kanal 135 vom Puffer 112 und über einen Kanal 136 vom Puffer 115. Der Multiplexer 132 liefert aus noch näher zu erläuternden Gründen ein Ausgangssignal über einen Kanal 137 zur SpeicherzugriffSteuereinheit,
Im Betrieb der bisher beschriebenen Vorrichtung gemäß
509838/0 846
Fig. 5 werden die Α-Operanden der Sparse-Operandenvektoren A vom Speicher über den Kanal 101 empfangen und im Puffer 102 gespeichert. Der Vektor A umfaßt eine Anzahl von Α-Operanden, z.B. A1, A2, A„, Ag ... An, die jeweils einen nicht Null entsprechenden Wert darstellen. Ebenso werden B Operanden des Sparse-Operandenvektors B (B1 - Bm) vom Speicher aufgenommen und im Puffer 107 zwischengespeichert. Die Puffer 102 und 107 richten auf die in Verbindung mit der Vorrichtung gemäß Fig. 2 näher beschriebene Weise die empfangenen Operanden in fortlaufender Folge aus.
Wie erwähnt, enthält ein Sparse-Operandenvektor alle NichtNull-Operanden eines gewöhnlichen Operandenvektors. Zum Zwecke der Beschreibung bezieht sich die folgende Erläuterung auf das Beispiel, bei dem die Operandenvektoren jeweils sechzehn Operanden (A1 -,A-ig bzw. B.. - B^g) enthalten und die Α-Operanden A^, A«, A1-, Ag, Aq, A11, A12 und A1, jeweils einen Nullwert darstellen (so daß die Sparse-A-Vektoren A1, A2, A„, Ag, A10, A1^, A1Cund A^ verbleiben). Ebenso sei angenommen, daß die B-Operanden (B1, B^, Bc, B6, B7, B8, B12, B13 und B1 ^ jeweils einen Null-Wert darstellen (so daß die Sparse-B-Vektoren B2, B^, Bq, B^q, B11, B15 und B1^ verbleiben). Wie erwähnt, richten die Puffer 102 und 107 die A- und B-Operanden so aus, daß der zuerst eintreffende Α-Operand (A1) auf den zuerst eintreffenden B-Operanden (B2), der als zweiter ankommende A«°Operand (A2) auf den als zweiter ankommenden B-Operanden (B^), der als dritter eintreffende Α-Operand (A-) auf den als dritter eintreffenden B-Operanden (Bq) usw. ausgerichtet wird. Wie erwähnt, vermögen die Register 104 und 109 jeweils vier Operanden zu speichern, so daß die Operanden A1, A2, kj und Ag im Register 104 und die Operanden B2, B,, Bq und B10 im Register 109 gespeichert werden, während die
509838/0 84
restlichen Operanden in den Puffern 102 und 107 gespeichert werden. Die Sparse-Vektoren A und B sind daher auf die in Fig. 8 dargestellte Weise ausgerichtet.
Obgleich sich das vorliegende Beispiel auf Operandenvektoren mit sechzehn Ausdrücken bezieht, wobei der Sparse-Operandenvektor A acht Ausdrücke und der Sparse-Operandenvektor B sieben Ausdrücke besitzt, ist zu beachten, daß dies ein sehr einfaches Beispiel darstellt, das lediglich zur Veranschaulichung des Arbeitsprinzips gewählt wurde, und daß die Vektoren normalerweise mehrere tausend Operanden enthalten können. Im Fall von kleinen Vektoren, wie beim beschriebenen Beispiel, kann es tatsächlich zweckmäßiger sein, die Operation auf andere als die beschriebene Weise durchzuführen. Zudem sind beim Beispiel eines aus sechzehn Operanden bestehenden Vektors die Einzelheiten bezüglich der Handhabung von sehr langen Vektoren, d.h. solchen mit mehr als etwa 32 Ausdrücken, weggelassen, doch wird die Art und Weise der Handhabung dieser längeren Vektoren aus der folgenden Beschreibung noch deutlicher ersichtlich. Aus diesem Grund muß ausdrücklich darauf hingewiesen werden, daß das aufgeführte einfache Beispiel eines aus sechzehn Operanden bestehenden Vektors lediglich/beispielhaft angesehen werden soll und nur zur Vereinfachung der Beschreibung gewählt wurde; die Weiterentwicklung der Operation zur Handhabung längerer Vektoren wird aus der folgenden Beschreibung noch deutlicher.
Der X-Befehlsvektor enthält eine Anzahl von Bits, deren Zahl der Zahl von Operanden im gesamten A-Operandenvektor entspricht. Ein binäres 1-Bit im X-Befehlsvektor zeigt an, daß der entsprechende Α-Operand einen nicht einer Null entsprechenden Wert besitzt, während ein binäres O-Bit im X-Befehlsvektor angibt, daß der entsprechende A-Operand
609838/0 846
einen Wert von Null besitzt und daher im Sparse-A-Vektor nicht enthalten ist. Auf ähnliche Weise enthält der Y-Befehlsvektor eine Vielzahl von Bits mit dem Wert 1 und O, abhängig vom Wert des betreffenden B-Operanden0 Beim angegebenen Beispiel, bei dem der A-Operandenvektor sechzehn Ausdrücke und der B-Operandenvektor ebenfalls sechzehn Ausdrücke umfaßt, besitzen daher die X- und Y-Befehlsvektoren jeweils sechzehn Bits, die auf die in Fig. 8 gezeigte Weise angeordnet sind. Gemäß Fig. 8 weist der X-Befehlsvektor binäre "Einsen" in seiner ersten, zweiten, siebten, achten, zehnten, vierzehnten, fünfzehnten und sechzehnten Stelle (von links nach rechts gelesen) entsprechend den nicht nullwertigen Α-Operanden auf, während der Y-Befehlsvektor binäre "Einsen" in seiner zweiten, dritten, neunten, zehnten, elften, fünfzehnten und sechzehnten Stelle (von links nach rechts gesehen) entsprechend den nicht einem Null-Wert entsprechenden B-Operanden aufweist.
Die X- und Y-Befehlsvektoren werden über Kanäle 111 bzw.
114 aus dem Speicher ausgelesen und in Puffern 112 bzw.
115 gespeichert. Ersichtlicherweise können der X-Befehlsvektor und der Sparse-A-Operandenvektor unter Benutzung des gleichen Leseregisters über den gleichen Datenkanal ausgelesen werden; auf ähnliche Weise können der Y-Befehlsvektor und der Sparse-B-Operandenvektor unter Heranziehung des gleichen Leseregisters über den gleichen (gemeinsamen) Datenkanal ausgelesen werden. In diesem Fall kann eine nicht dargestellte Schalteinrichtung vorgesehen sein, um die Α-Operanden zum Puffer 102, die X-Bits zum Puffer 112, die B-Operanden zum Puffer 107 und die Y-Bits zum Puffer 115 zu überführen. (Ersichtlicherweise können die Puffer 102 und 107 bis zu 32 Operanden speichern, während die Puffer 112 und 115 bis zu 1024 Bits zu speichern vermögen.) Die Skalenregister 117 und 122 sind 16-Bit-Register .Die ersten
509838/0846
- se 20
sechzehn Bits der X- und Y-Befehlsvektoren (im vorliegenden Fall X1 - X1 g und Y1 - Y1^) werden zu den Skalenregistern 117 bzw. 122 übertragen. Das Skalenregister 117 liefert seinen gesamten Inhalt von sechzehn Bits zum Linksschiebenetz 118, das seinerseits das erste Bit (X1) zum Setzen (oder Rückstellen)des Flip-Flops 120 überträgt und die restlichen 15 Bits nach links verschiebt und zum Skalenregister 117 zurückführt, wo sie die ersten fünfzehn Bitpositionen einnehmen, während die sechzehnte Bitposition unbesetzt bleibt. Wenn das erste Bit des X-Befehlsvektors (was im vorliegenden Fall zutrifft) ein binäres Bit ist, wird das X-Flip-Flop 120 gesetzt, um über den Kanal 130 ein Durchschaltsignal zum Operanden-Schieberegister 104 zu liefern. Beim zweiten Durchgang des Befehlsvektors durch das Linksschieberegister bewirkt das zweite Bit (X2)» welches die erste Stelle einnimmt, ein Setzen (oder Rückstellen) des Flip-Flops 120, während die restlichen Bits nach links verschoben werden, so daß das dritte Bit die erste Stelle oder Position im Register 117 einnimmt»1 Die Operanden-Schieberegister 104 und 109 liefern normalerweise ein Maschinen-Null-Ausgangssignal auf den Kanälen 29 und 34, außer wenn sie durch das betreffende Flip-Flop 120 bzw. 125 durchgeschaltet sind. Wenn daher das eine Register 104 oder 109 durchgeschaltet ist (und das andere nicht), gibt das eine einen Operanden ab, während das andere weiterhin ein Maschinen-Null-Signal abgibt. Dieser Vorgang dauert so lange an, bis alle Bits verarbeitet worden sind und das Register 117 geleert ist, und zu diesem Zeitpunkt überträgt der Puffer 112 die nächsten 16 Befehlsbits des X-Befehlsvektors zum Register 117, so daß der Vorgang weiter ablaufen kann.
Auf ähnliche Weise schalten das Skalenregister 122 und das Linksschiebenetz 123 durch die Y-Befehlsbits schrittweise
509838/0846
fort, um das Y-Flip-Flop 125 zu setzen (und rückzustellen) und dabei über den Kanal 131 Durchschaltsignale zum Operanden-Schieberegister 109 zu liefern. Die X- und Y-Flip-Flops 120 und 125 können beispielsweise monostabile MuItivibratoren sein, welche bei Eingang eines einer binären 1 entsprechenden Bits gesetzt werden und ein Durchschaltsignal liefern und bei Eingang eines einer binären Null entsprechenden Bits rückgestellt werden.
Das ODER-Glied 126 läßt das ODER-Resultat der X- und Y-Befehlsbits durch. Beim angenommenen Beispiel läßt das ODER-Glied 126 somit
1110001111100111
durch, wobei zu beachten ist, daß die vierten, fünften, sechsten, elften und zwölften Bits jeweils Nullen sind. Wenn das erste Bit eine Null ist, was bei Koinzidenz von Nullen in den X- und Y-Befehlsvektoren der Fall sein kann, zählt das Normalisierzählernetz 127 die Zahl der der nächsten binären "1" vorangehenden Nullen und betätigt daraufhin das Zählschieberegister 128, um eine Ausgangssignal an die beiden Linksschiebenetze 118 und 123zu liefern und deren Zählungen um die gleiche Zahl zu verschieben· Beim vierten Durchgang, wenn das erste Bit eine Null ist, zählt daher das Normalisierzählernetz die dem nächsten 1-Bit vorangehenden Null-Bits (in diesem Fall drei) und liefert die betreffende Zählung zum Register 128. Als Ergebnis werden die Bits in den Netzen 118 und 123 um drei Stellen verschoben, so daß die X- und Y-Befehlsvektoren bei der Rückführung zu den Registern 117 und 122 ihre nächsten Bits" (X„ und Y„) in der vordersten Stelle aufweisen. Bei X^2, Y12 läßt das Netz 127 wiederum eine Zählung von zwei aus, um die Netze 118 und 123 erneut eine Linksverschiebung zum Überspringen von X^fX-j^» Y-|2 1^ Yi3 durchführen zu lassen,
8/0848
Aus den vorstehenden Ausführungen geht hervor, daß die X- und Y-Flip-Flops 120 bzw. 125 entsprechend der folgenden Tabelle gesetzt und rückgestellt werden:
FIiD-FlOT) 120 Vektor Fliü-FlOD 125 Vektor
1 X1 O Y1
1 X2 1 Y2
0 X3 1 Y3
1 X7 O Y7
1 X8 O Y8
0 1 Y9
1 X10 1 Y10
0 X11 1 Y11
1 X14 O Y14
1 X15 1 Y15
1 X16 1 Y16
Die Durchsc haltsignale von den Flip-Flops 120 und 125 schalten die Register 104 bzw. 109 durch, um einen Operanden über die Kanäle 29 bzw. 34 zu den Datenaustausch- und Rechenabschnitten des Rechners (nicht dargestellt) durchzulassen. Wie erwähnt, enthalten die Register 104 und 109 (und die Puffer 102 und 107) die Operanden in der in Fig. 8 dargestellten Folge. Gemäß der vorstehenden Tabelle und gemäß Fig. 8 liefert das Flip-Flop 120 während des ersten Unterzyklus des Rechners somit ein Durchschaltsignal zum Register 104, um den ersten A-0peranden (A,.) zu vaarbeiten bzw. auf den Kanal 138 aufζμβehalten. Das Flip-Flop 125 ist jedoch rückgestellt, so daß kein Durchschaltsignal zum Register 109 geleitet und somit der erste B-Operand nicht durchge-
50 9 838/0846
lassen wird. Stattdessen läßt das Register 109» wie erwähnt, ein Maschinen-Null-Signal durch. Der nächste Operand A (A2) tritt an die vordere Stelle im Register 104, so daß während des nächsten Unterzyklus die beiden Flip-Flops 120 und 125 die Register 104 und 109 zum Durchlassen von Ag und B2 durchschalten. Ebenso schaltet während des nächsten Unterzyklus das Flip-Flop 125 das Register 109 zum Durchlassen von B, durch (das Register 104 läßt wegen des Nuil-Ausgangssignals vom Flip-Flop 120 ein Maschinen-Null-Signal durch). Während des nächsten Unterzyklus schaltet das Flip-Flop 120 das Register 104 zum Durchlassen von A^ usw. durch die gesamten Vektoren durch. Die Daten auf den Kanälen 29 und 34 fließen daher wie folgt:
Unterzyklus Kanal 138 Kanal 139
1 A1 0
2 A2 B2
3 0 B3
4 A7 0
5 A8 0
6 0 V
7 A10 B10
8 0 B11
9 A14 0
10 A15 B15
11 A16 B16
Der Multiplexer 132 empfängt die Signale von den Puffern 102, 107, 112 und 115 zur Weiterleitung von Anforderungen
509838/0846
250551
nach weiteren Vektordaten der A-, B-, X- und Y-Vektoren zum betreffenden Puffer. Falls der Inhalt eines der Puffer geleert wird, wird daher ein diesen Zustand anzeigendes Signal über den Multiplexer 132 zu der nicht dargestellten Speicherzugriffsteuereinheit übertragen,um weitere Vektordaten für diesen Puffer abzurufen. Wie vorstehend erläutert, vermag die SpeicherzugriffSteuereinheit jedem beliebigen Leseregister 10, 12, 110 und 113 während eines jeden Speicherzyklus Daten von einer Einzelgruppe von Speicherbänken zu liefern. Infolgedessen ist es möglich, daß die einzelnen Puffer 102, 107, 112 und 115 zu jedem beliebigen Zeitpunkt unterschiedliche Mengen an ihren jeweiligen Vektoren enthalten. Aus diesem Grund ist es wahrscheinlich, daß der Multiplexer zu konfliktfreien Zeiten Datenanforderungen für verschiedene Vektoren erfüllt« Falls jedoch Daten von zwei oder mehr Puffern angefordert werden, entspricht der Multiplexer dem Bedarf eines dieser Puffer, und der Vorgang wird infolge des Fehlens eines erforderlichen Vektors vorübergehend unterbrochen. Bezüglich der Ausrichtung und der Zeitsteuermerkmale der Pufferung oder Zwischenspeicherung wird auf die vorherigen Ausführungen verwiesene
Die Recheneinheit des Rechners benutzt die auf den Kanälen 29 und 34 auftretenden Operanden zur Entwicklung von Resultanten in Abhängigkeit von der jeweils durchgeführten, speziellen Rechenfunktion. Bei der Addition arbeitet die Recheneinheit beispielsweise wie folgt: A1+0 « C1, A2+B2 m C2, 0+B, » C,, A„+0 » Cr, usw. Bei der Subtraktion werden die Funktionen A1-O - C1, A2-B2 - C2, 0-B3 ■ C , A17-O * C7 usw. durchgeführt. Beim Multiplizieren arbeitet die Recheneinheit wie folgt: Α,,.Ο » C1, A2»B2 » C2, 0^B3 « C3, A7»0 * C7 usw. Beim Dividieren führt die Recheneinheit die Funktionen A1ZO - C1, A2/B2 » C2, 0/B3 - C3, A?/0 » C7
509838/0846
usw. durch. Ersichtlicherweise ergibt die Multiplikation mit einer Null eine Null-Resultante, während das Dividieren mit einem Null-Teiler eine unendliche Resultante und das Dividieren mit einem Null-Dividenden eine Null*- Resultante ergibt. Wie insbesondere in Verbindung mit Fig. 6 noch näher erläutert werden wird, sind derartige Operationen nicht zulässig, so daß sie unabhängig von einer etwa durch die Recheneinheit durchgeführten Berechnung als Null unterdrückt werden.
In Fig. 6 ist eine Vorrichtung zur Überführung von Resultanten von den Datenaustausch- oder Rechenabschnitten des Rechners zur SpeicherzugriffSteuereinheit oder zum Speicher eines Rechners dargestellt. Die C-Resultanten werden von der Datenaustauscheinrichtung über einen Kanal 51 von einem Register 141 aufgenommen, dann zu einem Puffer 142 (der bis zu 128 Resultanten enthalten kann) übertragen und von hier zum Eingaberegister 143 überführt, um über den Kanal 59 (zur Weiterverarbeitung) zur Speicherzugriffsteuereinheit und zum Speicher des Rechners geliefert zu werden. Die Einzelheiten der Pufferung bzw. Zwischenspeicherung und ihrer Zeitsteuerungen sind vorher in Verbindung mit Fig. 2 näher erläutert worden. Die X- und Y-Durchschaltsignale von den Flip-Flops 120 und 125 gemäß Fig. 5 werden über Kanäle 130 und 131 zu UND-Gliedern 145, 146 und 147 geleitet. Genauer gesagt, werden die Durchschaltsignale vom X-Flip-Flop 120 über den Kanal 130 zu einem UND-Eingang der UND-Glieder 145 und 147 und diejenigen des Y-Flip-Flops 125 über einen Kanal 131 zum UND-Eingang von UND-Gliedern 145 und 146 übertragen. Eine Funkti ons Steuereinheit 148 liefert Durchschaltausgangssignale über Kanäle 149 und 150. Im Fall von Multiplikations- oder Divisionsfunktionen wird ein Durchschaltausgangssignal über einen Kanal 149 an einen dritten UND-Eingang des UND-Glieds 145 angelegt. Im Fall einer Additions- oder Subtraktions-
509838/-0846
funktion wird ein Durchschaltsignal über eine Torschaltung 150 an beide UND-Glieder 146 und 147 angelegt. Es ist somit ersichtlich, daß in der Multiplikations- oder Divisionsbetriebsart ein Durchschaltausgangssignal von beiden Flip-Flops 120 und 125 gemäß Fig. 5 erforderlich ist, um das UND-Glied 145 zu betätigen und ein Ausgangssignal von ihm zu liefern. Ebenso ist ersichtlich, daß in der Additionsoder Subtraktionsbetriebsart ein Durchschaltausgangssignal von einem (oder beiden) Flip-Flop^) 120 und/oder 125 selektiv das eine oder das andere (oder beide) UND-Glied(er) 146 und 147 betätigt. Die Ausgangssignale der UND-Glieder 145, 146 und 147 bilden Eingangssignale zu einem ODER-Glied 151. Ersichtlicherweise liefert das ODER-Glied 151 somit nur dann ein Ausgangssignal über den Kanal 152 zum Register 141, wenn einer der beiden Operanden vorhanden ist und sich die Funktionssteuereinheit 148 in ihrer Additions- oder Subtraktionsbetriebsart befindet, oder wenn beide Operanden vorhanden sind und sich die Funktionssteuereinheit in ihrer Multiplikations- oder Divisionsbetriebsart befindet. Folglich wird vom ODER-Glied 151 nur im Fall einer zulässigen Operation der Recheneinheit ein Ausgangssignal abgegeben. In den Fällen, in denen ein Multiplikator, ein Divisor oder ein Dividend mit dem Wert Null vorhanden ist, tritt daher kein Ausgangs signal vom ODER-Glied 151 auf dem Kanal 152 auf.
Das Auftastsignal am Kanal 152 steuert das Register 141 zur Ermöglichung eines Durchgangs der betreffenden Resultante zum Puffer 142, um anschließend im Speicher gespeichert zu werden. In den Fällen, in denen durch die Recheneinheit eine nicht zulässige Berechnung durchgeführt wurde, wird somit das Register 141 nicht durchgeschaltet, so daß die nicht zulässige Resultante nicht gespeichert wird. Stattdessen wird diese nicht zulässige Resultante einfach verworfen bzw. übergangen.
509838/0846
250551
Aus dem vorstehenden Beispiel und aus der vorstehenden Beschreibung geht hervor, daß das Register 141 während einer Additions- oder einer Subtraktionsfunktion durchgeschaltet wird, um Resultanten C^, C2» C,, C^, CQ, Cq, C^q, C11, ci4» ^15 "1^ C-ifi durcllzulassen· In der Multiplikations- oder Divisionsbetriebsart wird das Register 141 dagegen zum Durchlassen der Resultanten C2, c-iq» ^15 1^1** C1^ durchgeschaltet, während die anderen Resultanten als nicht zulässige Resultanten vom Register 143 unterdrückt werden.
Bisher wurde vorausgesetzt, daß sich aus einer Multiplikations- oder Divisionsfunktion ergebende Resultanten mit einem Wert Null oder einem unendlichen Wert nicht zulässige Resultanten darstellen. Es ist jedoch offensichtlich, daß die Nichtspeicherung solcher Resultanten zur Voraussetzung führt, daß sie Maschinen-Null-Signalen entsprechen«, Obgleich diese Voraussetzung in den meisten Fällen zutreffen kann, können dann, wenn bestimmt werden soll, welche Resultanten einen unendlichen Wert haben können, die einzelnen Divisoren und Dividenden durch Vergleichsschaltungen in anderen Abschnitten des Rechners für die Einführung in entsprechende Stellen des Speichers untersucht werden.
Vorstehend ist erläutert worden, auf welche Weise Sparse-Vektoren durch Befehlsvektoren logisch tormäßig gesteuert werden können, um Rechenvorgänge zur Ableitung von im Speicher zu speichernden Sparse-Resultantenvektoren durchzuführen. Derartige Sparse-Resultantenvektoren sind jedoch ohne einen Resultantenbefehlsvektor überhaupt nicht brauchbar. Fig. 7 zeigt eine Vorrichtung zur Erzeugung des Resultantenbefehlsvektors Z, der - ebenso wie Operandenbefehlsvektoren - aus einer Vielzahl von Bits besteht, bei
509838/0846
denen binär« "Einsen" die Nicht-Null-Resultanten des Resultantenvektors und binäre "Nullen" Resultanten mit dem Wert Null angeben.
Gemäß Fig. 7 nimmt ein Leseregister 210 den X-Befehlsvektor von der Speicherzugriffsteuereinheit und vom Speicher des Rechners über einen Kanal 211 auf und überträgt diese Information zu einem X-Puffer 212. Ebenso empfängt ein Leseregister 213 den Y-Befehlsvektor von der Speicherzugriff-Steuereinheit und vom Speicher des Rechners über einen Kanal 214, um diese Information zu einem Puffer 215 zu übertragen. Die Bits werden sequentiell vom Puffer 212 und zu UND-Gliedern 245, 246 und 247 geleitet. Die Funktionssteuerung 148 (bei der es sich um die in Verbindung mit Fig. 6 beschriebene Vorrichtung handeln kann) gibt über einen Kanal 149 ein eine Multiplikations- oder eine Divisionsfunktion angebendes Durchschaltsignal oder über einen Kanal 150 ein derartiges, eine Additions- oder eine Subtraktionsfunktion angebendes Signal ab. Das eine Multiplikations- und Divisionsfunktion anzeigende Ausgangssignal der Funktionssteuereinheit 148 wird über einen Kanal 149 zu einem UND-Glied 246 geleitet, welches seine anderen UND-Eingangssignale von beiden Puffern 212 und 215 empfängt. Die Funktionssteuereinheit 148 überträgt über den Kanal 150 Durchschalt- oder Auftastsignale, die Additions- und Subtraktionsfunktionen anzeigen, zu UND-Gliedern 245 und 247. Die Aus gangs signale der UND-Glieder 245» 246 und 247 werden über ein ODER-Glied 251 übertragen, um anschließend den monostabilen Z-MuItivibrator (Flip-Flop) 260 zu setzen oder rückzustellen. Der Ausgang des Flip-Flops 260 ist mit dem Ausgangsregister 261 verbunden, um das Ausgangssignal über einen Kanal 262 zur Datenaustauscheinrichtung zu leiten.
509838/ÖS46
Da die X- und Y-Vektoren über die Puffer 212 bzw. 215 geleitet werden, werden sie zum Setzen und Rückstellen des Flip-Flops 260 über das ODER-Glied 251 zu den betreffenden UND-Gliedern übertragen. In der Additionsoder Subtraktionsbetriebsart wird beispielsweise für jede im X- oder im Y-Vektor auftretende binäre "Eins" das betreffende UND-Glied 245 oder 247 betätigt, um das ODER-Glied 251 zu betätigen und das Flip-Flop 260 zu setzen und dabei ein binäres 1-Ausgangssignal zum Register 261 zu übertragen. Wenn dagegen in der Multiplikations- oder Divisionsbetriebsart beide X- und Y-Bits binäre "Einsen" sind, wird das UND-Glied 246 betätigt, um das ODER-Glied 251 zum Setzen des Flip-Flops 260 zu betätigen und dabei ein binäres 1-Ausgangssignal zum Register 261 zu liefern. In allen anderen Fällen wird das Flip-Flop 260 rückgestellt, um ein binäres O-Ausgangssignal zum Register 261 zu liefern. Der Z-Befehlsvektor wird hierbei gebildet und zur Datenaustauscheinrichtung überführt, von wo er über den Kanal 140 durch das Register 141 zum Speicher geleitet werden kann« Fig. 9 veranschaulicht den Sparse-C-Resultantenvektor und den Z-Befehlsvektor für das Beispiel der Additions- oder Subtraktionsfunktion, während Fig. 10 den Sparse-C-Resultantenvektor und den Z-Befehlsvektor für das Beispiel der Multiplikations- und Divisionsfunkr tion zeigt.
Ersichtlicherweise entsprechen viele Abschnitte von Fig. praktisch bestimmten Abschnitten gemäß den Fig. 5 und 6. Zur Vereinfachung der Schaltung können daher die Leseregister 210 und 213 die Leseregister 110 und 113 gemäß Fig. und die Puffer 212 und 215 die Puffer 112 und 115 gemäß Fig. 5 sein. Die UND-Glieder 245, 246 und 247 können den UND-Gliedern 145, 146, 147 gemäß Fig. 6 entsprechen, und das ODER-Glied 251 kann dem ODER-Glied 151 gemäß Fig. 6
509838/08^6
entsprechen; zur Erzielung einer ähnlichen Arbeitsweise ist jedoch vorzugsweise zwischen diesen Gliedern zu unterscheiden, da die UND- und ODER-Glieder gemäß Fig. 7 vorzugsweise 16-Bit-Torschaltungen sind, während es sich bei denen gemäß Fig. 6 vorzugsweise um 1-Bit-Torschaltungen handelt. Bei Anwendung einer solchen Gleichartigkeit der Schaltung kann es sich jedoch als erforderlich erweisen, den Z-Befehlsvektor während eines zweiten Iterationsschritts der Daten zu erzeugen.
Mit der Erfindung wird somit eine Vorrichtung zum kontinuierlichen Auslesen von Daten aus den Speicherabschnitten des Rechners zur Rechenverarbeitung durch die Rechenabschnitte des Rechners und zum Einschreiben bzw. Eingeben der Resultanten in den Rechner-Speicherabschnitt vom Rechenabschnitt aus geschaffen. Diese Vorrichtung arbeitet mit einem Mindestmaß an vorgegebenen Verzögerungen, und sobald die Pufferung oder Zwischenspeicherung vorgenommen worden ist, brauchen keine weiteren Verzögerungen mehr eingeführt zu werden. Erfindungsgemäß wird daher die Notwendigkeit für die Einführung zusätzlicher Verzögerungen während der aufeinanderfolgenden Operationen des Rechners ausgeschaltet. Stattdessen werden vorgegebene Verzögerungen zu Beginn oder nahe des Beginns jedes (Daten-)-Stroms in Übereinstimmung mit der optimalen Betriebsweise und der Systemzeitsteuerung des Rechners festgelegt.
Ein Merkmal der Erfindung besteht darin, daß die Pufferung bzw. Zwischenspeicherung mit vom Datenzugriff unabhängigen Geschwindigkeiten oder Folgen erfolgt. In Fällen mit "kurzen" Vektoren, (d.h. solchen mit weniger als etwa 48 Operanden), braucht somit keine Pufferung oder Zwischenspeicherung vorgenommen zu werden, da die später eintreffenden Operanden nach Vervollständigung der ersten Operanden
509838/0846
auftreten. Wenn zudem in den Daten Lücken auftreten, kann sich der Puffer selbst wieder für die optimalste Verarbei~ tung der Vektoren synchronisieren. Im Fall von Vektoren "mittlerer" Länge, (d.h. solchen mit weniger als etwa 320 Operanden), wird ebenfalls eine weitere Optimierung durch die beschriebene Freigabe von Steuerpfaden gewährleistet.
Mit der Erfindung wird in diesem Zusammenhang zudem eine Vorrichtung zur Ausrichtung von Sparse-Vektoren zur Durchführung von arithmetischen Berechnungen an ihnen geschaffen. Die Erfindung betrifft dabei auch eine Vorrichtung zur Verdichtung von Resultantenvektoren zwecks möglichst weitgehender Verkleinerung des für die Speicherung der Resultanten erforderlichen Speicherraums. Wie insbesondere aus den Fig. 9 und 10 hervorgeht, lassen sich erhebliche Einsparungen an Speicherraum durch Speicherung nur der Nicht-Null-Operanden und -Resultanten zusammen mit dem nötigen Befehlsvektor erreichen. Nach der anschließenden Verwendung der Resultanten, beispielsweise als Operanden in einer anschließenden Operation, können die Vektoren in der gleichen Weise benutzt werden. Bei der erfindungsgemäßen Vorrichtung ist es möglich, Vektoren mit einer grossen Zahl von Größen in einem Mindestraum im Rechnerspeicher zu speichern, und es ist dabei auch möglich, die Rechenzeit in Verbindung mit Sparse-Vektoren zu verringern, speziell dann, wenn der Vektor eine große Zahl von Komponenten mit einem vorbestimmten Wert von z.B. Null besitzt.
Mit der erfindungsgemäßen Vorrichtung ist es möglich, große Vektoren, die Operanden und Resultanten darstellen, zwischen den Speicher- und Rechenabschnitten des Rechners zu handhaben, ohne nachteilige Verzögerungen einzuführen, wie dies bei den bekannten Vorrichtungen der Fall ist.
609838/0846
Selbstverständlich ist die Erfindung weiteren Abwandlungen und Änderungen zugänglich, ohne daß vom Rahmen und vom Grundgedanken der Erfindung abgewichen wird.
Zusammenfassend wird mit der Erfindung also eine zwischen den Speicher- und Rechenabschnitten eines Rechners angeordnete Puffervorrichtung zur selektiven Zwischenspeicherung von Vektoren, um eine optimale Zeitsteuerung des Systems zu gewährleisten, geschaffen. Die zuerst eintreffenden von zahlreichen Operandenvektoren werden im Puffer gespeichert, bis der später ankommende Vektor eintrifft; zu diesem Zeitpunkt werden dann beide Vektoren zum Rechenabschnitt übertragen. Der Puffer nimmt zum Kompensieren der Zeitsteuerung oder -Überwachung des Systems auch Operanden auf. Bei der Rückführung der Resultanten wird der Resultantenvektor selektiv*zwischengespeichert, um seine einwandfreie Speicherung zu gewährleisten, ohne das Auslesen der Operandenvektoren zu beeinträchtigen. Zur Optimierung der Zeitsteuerung und zur weitgehenden Verringerung des Ausrüstungsaufwands und der Verzögerungen ist außerdem eine Steuervorrichtung vorgesehen, welche in Abhängigkeit von der Ankunftszeit des Resultantenvektors selektiv zusätzlich Operandenvektoren zwischenspeichert.
Ein Merkmal der Erfindung besteht in der Verarbeitung von ersten und zweiten Sparse-Vektoren, die jeweils Operanden entsprechend Nicht-Null-Ausdrücken eines bestimmten Operandenvektors enthalten, um die Operanden der Vektoren auszurichten. Erste und zweite Befehlsvektoren mit Bits, deren binäre "Einsen" den Nicht-Null-Ausdrücken des betreffenden Operandenvektors und deren binäre "Nullen" den NuIlwert-Ausdrücken des betreffenden Operandenvektors entsprechen können, werden durch eine logische Vorrichtung verarbeitet, um den Puffer selektiv durchzuschalten und dadurch
609838/08AÖ
Hi
einen Operanden eines Sparse-Vektors zu verarbeiten, sooft ein binäres 1-Bit in einem entsprechenden Befehlsvektor auftritt. Die ersten und zweiten Vektoren können auch zur Erzeugung eines dritten Befehlsvektors für einen Sparse-Resultantenvektor herangezogen werden.
509838/084fc

Claims (45)

  1. Patentansprüche
    Vorrichtung zur Übertragung von Daten zwischen den Speicher- und Rechenabschnitten eines elektronischen Rechners, wobei der Speicher einen ersten Vektor aus einer Anzahl aufeinanderfolgender erster Operanden und einen zweiten Vektor aus einer Anzahl aufeinanderfolgender zweiter Operanden enthält und mehrere nacheinander zugreifbare Speicherbänke aufweist, von denen zumindest einige den ersten Vektor und zumindest einige den zweiten Vektor enthalten, während zumindest bestimmte Speicherbänke einige Operanden sowohl des ersten als auch des zweiten Vektors enthalten, wobei der Speicher so ausgeführt ist, daß die Operanden des einen der beiden Vektoren aus der einen Speicherbank zugreifbar sind, während Operanden des anderen der beiden Vektoren aus der anderen Speicherbank zugreifbar sind, gekennzeichnet durch zwei Leseeinrichtungen zum fortlaufenden Auslesen der ersten und zweiten Operanden aus dem Speicher, durch eine selektiv betätigbare Puffereinrichtung zur Speicherung aufeinanderfolgender erster oder zweiter Operanden, durch eine erste Steuereinrichtung, die auf den Anfangs-Operanden der ersten und zweiten Vektoren mit früher an der ersten oder zweiten Leseeinrichtung eintreffendem Anfangs-Operanden anspricht und die erste Puffereinrichtung zur Speicherung aufeinanderfolgender Operanden dieses einen Vektors betätigt und welche weiterhin auf den Anfangs-Operanden des anderen der beiden Vektoren anspricht und die erste Puffereinrichtung betätigt, um aufeinanderfolgende Operanden des einen Vektors freizugeben, durch eine der ersten Leseeinrichtung und der ersten Puffepeinrichtung zugeordnete erste Ausgangseinrichtung zur Übertragung der aufeinanderfolgenden ersten Operanden
    509838/084 iv
    zum Rechenabschnitt und durch eine der zweiten Leseeinrichtung und der ersten Puffereinrichtung zugeordnete zweite Ausgangseinrichtung zur Übertragung der aufeinanderfolgenden zweiten Operanden zum Rechenabschnitt, wobei die entsprechenden ersten und zweiten Operanden durch die beiden Ausgangseinrichtungen in fortlaufend geordneten Strömen gleichzeitig zum Rechenabschnitt übertragbar sind.
  2. 2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß die erste Ausgangseinrichtung eine erste Registereinrichtung zur Speicherung einer vorbestimmten Anzahl von ersten Operanden und die zweite Ausgangseinrichtung eine zweite Registereinrichtung zur Speicherung einer vorbestimmten Anzahl der zweiten Operanden aufweist, daß die beiden Registereinrichtungen jeweils ein erstes Steuersignal abzugeben vermögen, welches für einen Zustand, daß das betreffende Register die vorbestimmte Zahl von Operanden gespeichert hat, repräsentativ ist, und daß die erste Steuereinrichtung in Abhängigkeit vom ersten Steuersignal die Puffereinrichtung für die Speicherung weiterer Operanden des genannten Vektors in Bereitschaft setzt.
  3. 3. Vorrichtung nach Anspruch 2, dadurch gekennzeichnet, daß die beiden Registereinrichtungen Register mit Ausgang nach dem Rang der Eingangsreihenfolge sind (firstin, first-out registers).
  4. 4. Vorrichtung nach Anspruch 2, dadurch gekennzeichnet, daß die in der ersten Puffereinrichtung gespeicherten Operanden fortlaufend nach dem Rang ihrer Eingangsreihenfolge zur betätigten Registereinrichtung übertragbar sind, während vom betätigten Register Operanden zum Rechenabschnitt übertragen werden.
    509838/0846
    - 4fr-
  5. 5. Vorrichtung nach Anspruch 4, dadurch gekennzeichnet, daß die beiden Registereinrichtungen Register mit Ausgang nach dem Rang der Eingangsreihenfolge sind (first-in, first-out registers).
  6. 6. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß der Rechenabschnitt einen dritten Vektor mit einer Vielzahl von aufeinanderfolgenden, im Speicher zu speichernden Resultanten bildet, daß der Speicher gleichzeitig Resultanten in eine andere Speicherbank als die, aus der ein Zugriff zu den Operanden erfolgt, einzugeben vermag, daß die Vorrichtung Empfänger- oder Aufnahmeeinrichtungen zur Aufnahme aufeinanderfolgender Resultanten von den Rechenabschnitten, zweite Puffereinrichtungen zur Speicherung von Resultanten und durch den Speicher betätigbare Eingabeeinrichtungen zur Eingabe der fortlaufenden Resultanten von der zweiten Puffereinrichtung in aufeinanderfolgend bezeichnete Speicherbänke aufweist und daß der Speicher die Eingabeeinrichtung betätigt, wenn die für die Speicherung der Resultanten bestimmte Speicherbank nicht gleichzeitig von der ersten oder der zweiten Leseeinrichtung zugegriffen wird.
  7. 7. Vorrichtung nach Anspruch 6, dadurch gekennzeichnet, daß eine Zählereinrichtung vorgesehen ist, die eine Zählung der Anzahl von in der zweiten Puffereinrichtung gespeicherten Resultanten liefert, und daß die erste Steuereinrichtung in Abhängigkeit von einer vorbestimmten Zählung der Zählereinrichtung, welche angibt, daß die zweite Puffereinrichtung eine vorbestimmte Zahl von Resultanten enthält, zur Betätigung der ersten. Puffereinrichtung zwecks Speicherung weiterer Operanden betätigbar ist.
    509838/0846
  8. 8. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß der erste und der zweite Vektor ein erster bzw. ein zweiter Sparse-Vektor sind und ein erster Befehlsvektor sowie ein zweiter Befehlsvektor eine erste bzw. eine zweite Reihe oder Folge von aufeinanderfolgenden Bits enthalten, wobei die Bits der beiden Befehlsvektoren jeweils einen ersten Binärwert, sooft der entsprechende Ausdruck des betreffenden ersten oder zweiten Operandenvektors einen nicht Null entsprechenden Wert darstellt, und einen zweiten Binärwert besitzen, wenn der genannte Ausdruck einem Null-Wert entspricht, daß weiterhin eine logische Einrichtung zur Verarbeitung der beiden Befehlsvektoren zur Lieferung erster und zweiter Durchschalt- bzw. Auftastsignale vorgesehen ist, daß die logische Einrichtung Prüfeinrichtungen zur sequentiellen Prüfung der Binärwerte der Bits der beiden Befehlsvektoren, eine erste Einrichtung zur Erzeugung des ersten Auftastsignals, sooft die Prüfeinrichtung ein Bit prüft, welches den ersten Binärwert im ersten Befehlsvektor besitzt, und eine zweite Einrichtung zur Lieferung des zweiten Auftastsignals aufweist, sooft die Prüfeinrichtung ein Bit mit dem ersten Binärwert im zweiten Befehlsvektor feststellt, daß die erste Ausgangseinrichtung ein erstes tormäßig steuerbares Register zur Speicherung von Operanden des ersten Sparse-Vektors aufweist, welches einen Ausgang aufweist und auf das erste Auftastsignal anspricht, um vom ersten Sparse-Vektor einen Operanden zum Rechenabschnitt zu liefern, und daß die zweite Ausgangseinrichtung ein zweites tormäßig steuerbares Register zur Speicherung von Operanden des zweiten Sparee-Vektors aufweist, welches einen Ausgang aufweist und zur Lieferung eines Operanden vom zweiten Sparse-Vektor zum Rechenabschnitt auf das zweite Auftastsignal anspricht.
    50S838/0846
  9. 9. Vorrichtung nach Anspruch 8, dadurch gekennzeichnet, daß die logische Einrichtung ein erstes Register zur Speicherung zumindest eines Teils des ersten Befehlsvektors und ein zweites Register zur Speicherung mindestens· eines Teils des zweiten Befehlsvektors und eine Schiebeeinrichtung zum sequentiellen Verschieben des Inhalts der beiden Register aufweist, daß die erste Signalerzeugungseinrichtung das erste Auftastsignal liefert, wenn sich ein Bit mit dem ersten Binärwert in einer vorbestimmten Stelle im ersten Register befindet, und daß die zweite Signalerzeugungseinrichtung das zweite Auftastsignal liefert, wenn sich ein Bit mit dem ersten Binärwert in einer vorbestimmten Stelle im zweiten Register befindet.
  10. 10. Vorrichtung nach Anspruch 9, dadurch gekennzeichnet, daß die Schiebeeinrichtung ein Schiebenetzwerk aufweist.
  11. 11. Vorrichtung nach Anspruch 9, dadurch gekennzeichnet, daß auf eine Koinzidenz der Bits der beiden Befehlsvektoren mit dem zweiten Binärwert ansprechende Koinzidenzeinrichtungen und Zählereinrichtungen zum Zählen der Anzahl der aufeinanderfolgenden, zusammenfallenden Bits mit dem zweiten Binärwert vorgesehen sind, und daß die Schiebeeinrichtung auf die Zählung der Zählereinrichtung anspricht, um zusätzlich den Inhalt der beiden Register um eine der Zählung entsprechende Zahl von Bits zu verschieben.
  12. 12. Vorrichtung nach Anspruch 11, dadurch gekennzeichnet, daß die Koinzidenzeinrichtungen an die beiden Register angeschlossene ODER-Glieder zum Durchlassen eines Bitstroms mit einer Vielzahl von Bits aufweisen, wobei
    509838/0846
    die Bits des Bitstroms einen ersten Binärwert besitzen, wenn das betreffende Bit im ersten oder zweiten Befehlsvektor den ersten Binärwert besitzt, und einen zweiten Binärwert besitzen, wenn das entsprechende Bit im ersten und im zweiten Befehlsvektor den zweiten Binärwert besitzt, und daß die Zählereinrichtungen eine normalisierende Zählereinrichtung zum Zähler der den zweiten Binärwert besitzenden, aufeinanderfolgenden Bits im Bitstrom sowie ein drittes Register zur Speicherung eines für die Zählung repräsentativen Signals aufweisen.
  13. 13. Vorrichtung nach Anspruch 12, dadurch'gekennzeichnet, daß die normalisierende Zählereinrichtung betätigbar ist, wenn das erste Bit im Bitstrom den zweiten Binärwert besitzt.
  14. 14. Vorrichtung nach Anspruch 8, gekennzeichnet durch Aufnahmeeinrichtungen zum Empfangen der Sparse-Resultantenvektoren von den Rechenabschnitten des Rechners, wobei die Sparse-Resultantenvektoren eine Anzahl von aus den ersten und zweiten Operanden abgeleiteten Resultanten enthalten, durch eine Funktionssteuereinrichtung zur Lieferung eines dritten Auftastsignals, das anzeigt, daß die Resultanten das Ergebnis einer Multiplikations- oder einer Divisionsfunktion sind, und durch eine Tor-(schaltungs)einrichtung, die auf eine Koinzidenz zwischen dem ersten, dem zweiten und dem dritten Auftastsignal anspricht, um ausgewählte Resultanten von der Aufnahmeeinrichtung zu verarbeiten bzw. zum Speicher eines elektronischen Rechners zu übertragen.
  15. 15. Vorrichtung nach Anspruch 14, dadurch gekennzeichnet, daß die Funktionssteuereinrichtung ein viertes Auftast-
    S09838/084S
    signal liefert, welches die Resultanten als Ergebnis einer Additions- oder einer Subtraktionsfunktion ausweist, und daß die Toreinrichtung zur Verarbeitung ausgewählter Resultanten von der Aufnahmeeinrichtung zum Speicher auf eine Koinzidenz zwischen dem vierten und entweder dem ersten oder dem zweiten Auftastsignal anspricht.
  16. 16. Vorrichtung nach Anspruch 15* dadurch gekennzeichnet, daß die Toreinrichtung ein erstes UND-Glied, das auf eine Koinzidenz zwischen dem ersten, zweiten und dritten Auftastsignal anspricht und ein erstes UND-Signal liefert, ein zur Lieferung eines zweiten UND-Signals auf eine Koinzidenz zwischen dem ersten und dem vierten Auftastsignal ansprechendes zweites UND-Glied, ein drittes UND-Glied, das zur Lieferung eines dritten UND-Signals auf eine Koinzidenz zwischen dem zweiten und dem vierten Auftastsignal anspricht, und ein ODER-Glied aufweist, das zur Steuerung der Aufnahmeeinrichtung auf das erste, das zweite oder das dritte UND-Signal anspricht.
  17. 17. Vorrichtung nach Anspruch 14, dadurch gekennzeichnet, daß die logische Einrichtung ein erstes Register zur Speicherung zumindest eines Teils des ersten Befehlsvektors und ein zweites Register zur Speicherung mindestens eines Teils des zweiten Befehlsvektors und eine Schiebeeinrichtung zum sequentiellen Verschieben des Inhalts der beiden Register aufweist, daß die erste Signalerzeugungseinrichtung das erste Auftastsignal liefert, wenn sich ein Bit mit dem ersten Binärwert in einer vorbestimmten Stelle im ersten Register befindet, und daß die zweite Signalerzeugungseinrichtung das zweite Auftastsignal liefert, wenn sich ein Bit mit dem ersten Binärwert in einer vorbestimmten Stelle im zweiten Register befindet.
    509836/08 4"6
  18. 18. Vorrichtung nach Anspruch 17, dadurch gekennzeichnet, daß auf eine Koinzidenz der Bits der beiden Befehlsvektoren mit dem zweiten Binärwert ansprechende Koinzidenzeinrichtungen und Zählereinrichtungen zum Zählen der Anzahl der aufeinanderfolgenden, zusammenfallenden Bits mit dem zweiten Binärwert vorgesehen sind, und daß die Schiebeeinrichtung auf die Zählung der Zählereinrichtung anspricht, um zusätzlich den Inhalt der beiden Register um eine der Zählung entsprechende Zahl von Bits zu verschieben.
  19. 19. Vorrichtung nach Anspruch 16, dadurch gekennzeichnet, daß die logische Einrichtung ein erstes Register zur Speicherung zumindest eines Teils des ersten Befehlsvektors und ein zweites Register zur Speicherung mindestens eines Teils des zweiten Befehlsvektors und eine Schiebeeinrichtung zum sequentiellen Verschieben des Inhalts der beiden Register aufweist, daß die erste Signalerzeugungseinrichtung das erste Auftastsignal liefert, wenn sich ein Bit mit dem ersten Binärwert in einer vorbestimmten Stelle im ersten Register befindet, und daß die zweite Signalerzeugungseinrichtung das zweite Auftastsignal liefert, wenn sich ein Bit mit dem ersten Binärwert in einer vorbestimmten Stelle im zweiten Register befindet.
  20. 20. Vorrichtung nach Anspruch 19,
    dadurch gekennzeichnet, daß auf eine Koinzidenz der Bits der beiden Befehlsvektoren mit dem zweiten Binärwert ansprechende Koinzidenzeinrichtungen und Zählereinrichtungen zum Zählen der Anzahl der aufeinanderfolgenden, zusammenfallenden Bits mit dem zweiten Binärwert vorgesehen sind, und daß die Schiebeeinrichtung auf die Zählung der Zählereinrichtung anspricht, um
    609838/0
    -Tf-
    zusätzlich den Inhalt der beiden Register um eine der Zählung entsprechende Zahl von Bits zu verschieben.
  21. 21. Vorrichtung nach Anspruch 15, dadurch gekennzeichnet, daß zweite logische Einrichtungen vorgesehen sind, die auf die ersten und zweiten Befehlsvektoren sowie auf das dritte und das vierte Auftastsignal ansprechen und einen dritten Befehlsvektor erzeugen, welcher eine Anzahl von Bits enthält, wobei ein Bit des dritten Befehlsvektors bei Koinzidenz zwischen einem dritten Auftastsignal und einem Bit mit erstem Binärwert in jedem
    ersten und zweiten Befehlsvektor den ersten Binärwert hat oder bei Koinzidenz zwischen einem vierten Auftastsignal und einem Bit mit erstem Binärwert in einem der ersten und der zweiten Befehlsvektoren einen ersten Binärwert besitzt, während ein Bit des dritten Befehlsvektors bei Koinzidenz zwischen einem dritten Auftastsignal und einem Bit mit zweitem Binärwert in einem der ersten und zweiten Befehlsvektoren den zweiten Binärwert hat oder bei Koinzidenz zwischen dem vierten Auftastsignal und einem dmn zweiten Binärwert besitzenden Bit des ersten und des zweiten Befehlsvektors einen zweiten Binärwert besitzt.
  22. 22. Vorrichtung nach Anspruch 21, dadurch gekennzeichnet, daß die zweite logische Einrichtung ein erstes UND-Glied, das zur Lieferung eines ersten UND-Signals auf eine Koinzidenz zwischen dem dritten Auftastsignal und den den zweiten Binärwert besitzenden Bits des ersten und des zweiten Befehlsvektors anspricht, ein zweites UND-Glied, das zur Lieferung eines zweiten UND-Signals auf eine Koinzidenz zwischen dem vierten Auftastsignal und einem den ersten Binärwert besitzenden Bit des ersten Befehlsvektors anspricht, ein drittes UND-Glied, das zur Erzeu-
    8/0846
    gung eines dritten UND-Signals auf eine Koinzidenz zwischen dem vierten Auftastsignal und einem den ersten Binärwert besitzenden Bit des zweiten Befehlsvektors anspricht, ein zur Lieferung eines Setzsignals auf jedes der drei UND-Signale ansprechendes ODER-Glied und eine mit letzterem verbundene Einrichtung zur Erzeugung der Bits des dritten Befehlsvektors aufweist, so daß ein erzeugtes Bit einen ersten Binärwert besitzt, wenn vom ODER-Glied ein Stellsignal geliefert wird, und einen zweiten Binärwert besitzt, wenn das ODER-Glied kein Stellsignal abgibt.
  23. 23. Vorrichtung zur gleichzeitigen Verarbeitung bzw. Übertragung von Operanden eines ersten Vektors in Form von A1, A2, A, ... An und Operanden eines zweiten Vektors in Form von B^, B2, B, ... Bn zum Rechenabschnitt eines elektronischen Rechners, wobei die beiden Vektoren jeweils eine endliche Zahl von Operanden enthalten und wobei A*, A2, A^ ... A jeweils einzelne, aufeinanderfolgende erste Operanden des ersten Vektors und B., B2, B3 ... B jeweils einzelne aufeinanderfolgende zweite Operanden des zweiten Vektors darstellen, dadurch gekennzeichnet, daß eine Eingabeeinrichtung zur Aufnahme des ersten und des zweiten Vektors in zwei fortlaufend geordneten Operandenströmen und eine an die Eingabeeinrichtung angeschlossene erste Ausrichteinrichtung zur Ausrichtung der beiden Operandenströme vorgesehen sind, um Operandenpaare A^ und B^, A2 und B2, A, und B, ... A und B zu einer Ausgangseinrichtung zu liefern, wobei die Operanden jedes Paars in Zeitkoinzidenz zur Ausgangseinrichtung übertragen werden, und daß die Ausgangseinrichtung mit dem Rechenabschnitt verbunden ist und die Operandenpaare fortlaufend zu ihm überträgt.
    509838/0846
  24. 24. Vorrichtung nach Anspruch 23, dadurch gekennzeichnet, daß die erste Ausrichteinrichtung eine Einrichtung zur Speicherung von Operanden und eine Steuereinrichtung aufweist, die auf das erste Eintreffen der von der Eingabeeinrichtung empfangenen Operanden A1 und B^ zur selektiven Ansteuerung einer Puffereinrichtung anspricht, um die Operanden des betreffenden, dem zuerst eintreffenden Operanden zugeordneten Vektors zu speichern, und daß der Puffer die gespeicherten Operanden fortlaufend zur Ausgangseinrichtung liefert, und zwar nach dem Eintreffen der entsprechenden, nacheinander bzw. fortlaufend angeforderten Operanden des anderen Vektors an der Eingabeeinrichtung und nach ihrer Übertragung zur Ausgangseinrichtung .
  25. 25. Vorrichtung nach Anspruch 24, wobei der Rechenabschnitt die Operandenpaare zur Entwicklung eines Resultantenvektors in Form von C^, Cp, C, ... C verarbeitet, der eine endliche Zahl von Resultanten enthält, und wobei CL, Cp, C, ... C jeweils einen Einzelresultanten des Resultantenvektors darstellen, gekennzeichnet durch eine Aufnahmeeinrichtung zum Empfangen bzw. Aufnehmen des Resultantenvektors vom Rechenabschnitt in einem fortlaufend geordneten Resultantenstrom, durch einen an die Aufnahmeeinrichtung angeschlossenen zweiten Puffer zur Speicherung von Resultanten, wobei der zweite Puffer einen Ausgang aufweist, und durch eine zweite Steuereinrichtung, welche den zweiten Puffer zur Speicherung einer vorbestimmten Zahl von Resultanten anzusteuern vermag.
  26. 26. Vorrichtung nach Anspruch 25, dadurch gekennzeichnet, daß dem zweiten Puffer eine Einrichtung zur Betätigung der ersten Steuereinrichtung zugeordnet ist, um den
    509838/0846
    ersten Puffer zusätzliche Operanden speichern zu lassen, wenn im zweiten Puffer eine vorbestimmte Zahl von Resultanten gespeichert ist.
  27. 27. Vorrichtung nach Anspruch 26, dadurch gekennzeichnet, daß der Rechner einen Speicher mit einer Anzahl von die ersten und zweiten Vektoren enthaltenden Speicherbänken aufweist, daß die Eingabeeinrichtung an den Speicher angeschlossen ist, daß der Ausgang des zweiten Puffers mit dem Speicher verbunden ist, so daß Resultanten in mindestens einigen Speicherbänken speicherbar sind, daß der Speicher eine Sperrsignalanzeige dafür liefert, welche Speicherbänke nicht für die Speicherung von Resultanten zugreifbar sind, und daß die zweite Steuereinrichtung auf das Sperrsignal anspricht, um den zweiten Puffer zu veranlassen, die für die Speicherung in den nicht zugreifbaren Speicherbänken vorgesehenen Resultanten zu speichern.
  28. 28. Vorrichtung nach Anspruch 25, dadurch gekennzeichnet, daß der Rechner einen Speicher mit einer Anzahl von die ersten und zweiten Vektoren enthaltenden Speicherbähken aufweist, daß die Eingabeeinrichtung an den Speicher angeschlossen ist, daß der Ausgang des zweiten Puffers mit dem Speicher verbunden ist, so daß Resultanten in mindestens einigen Speicherbänken speicherbar sind, daß der Speicher eine Sperrsignalanzeige dafür liefert, welche Speicherbänke nicht für die Speicherung von Resultanten zugreifbar sind, und daß die zweite Steuereinrichtung auf das Sperrsignal anspricht, um den zweiten Puffer zu veranlassen, die für die Speicherung in den niGht zugreifbaren Speicherbänken vorgesehenen Resultanten zu speichern.
    509818/0846
  29. 29. Vorrichtung nach Anspruch 23, wobei der Rechenabschnitt die Operandenpaare zur Entwicklung eines Resultantenvektors In Form von C1, Cp> C, ... C verarbeitet, der eine endliche Zahl von Resultanten enthält, und wobei C-, C2* C, ... Cn jeweils einen Einzelresultanten des Resultantenvektors darstellen, gekennzeichnet durch eine Aufnahme einrichtung zum Empfangen bzw. Aufnehmen des Resultantenvektors vom Rechenabschnitt In einem fortlaufend geordneten Resultantenstrom, durch einen an die Aufnahmeeinrichtung angeschlossenen Puffer zur Speicherung von Resultanten, wobei der Puffer einen Ausgang aufweist, und durch eine zweite Steuereinrichtung, welche den Puffer zur Speicherung einer vorbestimmten Zahl von Resultanten anzusteuern vermag.
  30. 30. Vorrichtung nach Anspruch 29, dadurch gekennzeichnet, daß der Rechner einen Speicher mit einer Anzahl von die ersten und zweiten Vektoren enthaltenden Speicherbänken aufweist, daß die Eingabeeinrichtung an den Speicher angeschlossen ist, daß der Ausgang des Puffers mit dem Speicher verbunden ist, so daß Resultanten in mindestens einigen Speicherbänken speicherbar sind, daß der Speicher eine Sperrsignalanzeige dafür liefert, welche Speicherbänke nicht für die Speicherung von Resultanten zugreifbar sind, und daß die Steuereinrichtung auf das Sperrsignal anspricht, um den Puffer zu veranlassen, die für die Speicherung in den nicht zugreifbaren Speioherbänken vorgesehenen Resultanten zu speichern.
  31. 31. Vorrichtung zur Verarbeitung von Daten zwischen dem Speicher und den Rechenabschnitten eines elektronischen Rechners, wobei der Speicher einen ersten Sparse-Vektor nit einer Anzahl von ersten Operanden und einen zweiten
    509838/0846
    Sparse-Vektor mit einer Anzahl von zweiten Operanden enthält, wobei die ersten Operanden jeweils bestimmte derjenigen Ausdrücke eines entsprechenden ersten Operandenvektors darstellen, welche fUr einen vorbestimmten Wert nicht repräsentativ sind, und die zweiten Operanden jeweils bestimmte derjenigen Ausdrücke eines entsprechenden zweiten Operandenvektors darstellen, welche für einen vorbestimmten Wert nicht repräsentativ sind, wobei der Speicher weiterhin einen ersten Befehlsvektor mit einer Anzahl fortlaufender Bits und einen zweiten Befehlsvektor mit einer zweiten Anzahl fortlaufender Bits enthält, wobei mindestens ein Bit des ersten Befehlsvektozs einem bestimmten Ausdruck des ersten Operandenvektors entspricht und mindestens ein Bit des zweiten Befehlsvektors einem bestimmten Ausdruck des zweiten Operandenvektors entspricht, und wobei jedes Bit des ersten und des zweiten Befehlsvektors einen ersten Binärwert besitzt, wenn das Bit einem den vorbestimmten Wert nicht darstellenden Ausdruck entspricht, und jedes Bit des ersten und des zweiten Befehlsvektors einen zweiten Binärwert besitzt, wenn das Bit einem den vorbestimmten Wert darstellenden Ausdruck entspricht, ge kennzeichnet durch eine Ausrichteinrichtung zum Ausrichten jedes fortlaufenden ersten Operanden des ersten Sparse-Vektors auf jeden fortlaufenden zweiten Operanden des zweiten Sparse-Vektors, eine auf die Bits des ersten und des zweiten Befehlsvektors ansprechende logische Einrichtung zur Lieferung von ersten und zweiten Durchschalt- bzw. Auftastsignalen und eine Tor(schaltungs)einrichtung, die auf das erste Auftastsignal zur Verarbeitung bzw. Übertragung eines Operanden des ersten Sparse-Vektors von der Ausrichteinrichtung zum Rechenabschnitt und auf das zweite Auftastsignal zur Verarbeitung bzw. Übertragung eines Operanden des zweiten
    509338/0846
    Sparse-Vektors von der Ausrichteinrichtung zum Rechenabschnitt anspricht.
  32. 32. Vorrichtung nach Anspruch 31» dadurch gekennzeichnet, daß die logische Einrichtung ein erstes Register zur Speicherung zumindest eines Teils des ersten Befehlsvektors und ein zweites Register zur Speicherung zumindest eines Teils des zweiten Befehlsvektors, eine Schiebeeinrichtung zum sequentiellen Verschieben der Inhalte der beiden Register, eine erste Einrichtung zur Erzeugung des ersten Auftastsignals, wenn sich ein Bit mit dem ersten Binärwert in einer vorbestimmten Stelle im ersten Register befindet, und eine zweite Einrichtung zur Erzeugung des zweiten Auftastsignals aufweist, wenn sich ein Bit mit dem ersten Binärwert in einer vorbestimmten Stelle im zweiten Register befindet.
  33. 33. Vorrichtung naoh Anspruch 32, dadurch gekennzeichnet, daß die Schiebeeinrichtung ein Sohiebenetzwerk aufweist.
  34. 34. Vorrichtung nach Anspruch 32, dadurch gekennzeichnet, daß auf eine Koinzidenz der Bits der beiden Befehlsvektoren mit dem zweiten Binärwert ansprechende Koinzidenz-
    . einrichtungen und Zählereinrichtungen zum Zählen der Anzahl der aufeinanderfolgenden, zusammenfallenden Bits mit dem zweiten Binärwert vorgesehen sind, und daß die Schiebeeinrichtung auf die Zählung der Zählereinrichtung anspricht, um zusätzlich den Inhalt der beiden Register um eine der Zählung entsprechende Zahl von Bits zu verschieben.
  35. 35. Vorrichtung nach Anspruch 34, dadurch gekennzeichnet, daß die Koinzidenzeinrichtungen an die beiden Register angeschlossene ODER-Glieder zum Durchlassen eines Bit-
    509838/0846
    stroms mit einer Vielzahl von Bits aufweisen, wobei die Bits des Bitstroms einen ersten Binärwert besitzen, wenn das betreffende Bit im ersten oder zweiten Befehlsvektor den ersten Binärwert besitzt, und einen zweiten Binärwert besitzen, wenn das entsprechende Bit im ersten und. im zweiten Befehls vektor den zweiten Binärwert besitzt, und daß die Zählereinrichtungen eine normalisierende Zählereinrichtung zum Zählen der den zweiten Binärwert besitzenden, aufeinanderfolgenden Bits im Bitstrom sowie ein drittes Register zur Speicherung eines für die Zählung repräsentativen Signals aufweisen.
  36. 36. Vorrichtung nach Anspruch 35» dadurch gekennzeichnet, daß die normalisierende Zählereinrichtung betätigbar ist, wenn das erste Bit im Bitstrom den zweiten Binärwert besitzt.
  37. 37· Vorrichtung nach Anspruch 31, gekennzeichnet durch Aufnahmeeinrichtungen zum Empfangen der Sparse-Resultantenvektoren von den Rechenabschnitten des Rechners, wobei die Sparse-Resultantenvektoren eine Anzahl von aus den ersten und zweiten Operanden abgeleiteten Resultanten enthalten, durch eine Funktionssteuereinrichtung zur Lieferung eines dritten Auftastsignals, das anzeigt, daß die Resultanten das Ergebnis einer Multiplikationsoder einer Divisionsfunktion sind, und durch eine Tor-(schaltungs)einrichtung, die auf eine Koinzidenz zwischen dem ersten, dem zweiten und dem dritten Auftastsignal anspricht, um ausgewählte Resultanten von der Aufnahmeeinrichtung zu verarbeiten bzw. zum Speicher eines elektronischen Rechners zu übertragen.
  38. 38. Vorrichtung nach Anspruch 37, dadurch gekennzeichnet, daß
    509838/0846
    die Funktionssteuereinrichtung ein viertes Auftastsignal liefert, welches die Resultanten als Ergebnis einer Additions-oder einer Subtraktionsfunktion ausweist, und daß die Toreinrichtung zur Verarbeitung ausgewählter Resultanten von der Aufnahmeeinrichtung zum Speicher auf eine Koinzidenz zwischen dem vierten und entweder dem ersten oder dem zweiten Auftastsignal anspricht.
  39. 39. Vorrichtung nach Anspruch 38, dadurch gekennzeichnet, daß die Toreinrichtung ein erstes UND-Glied, das auf eine Koinzidenz zwischen dem ersten, zweiten und dritten Auftastsignal anspricht und ein erstes ÜND-Signal liefert, ein zur Lieferung eines zweiten UND-Signals auf eine Koinzidenz zwischen dem ersten unddem vierten Auftastsignal ansprechendes zweites UND-Glied, ein drittes UND-Glied, das zur Lieferung eines dritten UND-Signals auf eine Koinzidenz zwischen dem zweiten und dem vierten Auftastsignal anspricht, und ein ODER-Glied aufweist, das zur Steuerung der Aufnahmeeinrichtung auf das erste, das zweite oder das dritte UND-Signal anspricht.
  40. 40. Vorrichtung nach Anspruch 37» dadurch gekennzeichnet, daß die logische Einrichtung ein erstes Register zur Speicherung zumindest eines Teils des ersten Befehlsvektors und ein zweites Register zur Speicherung mindestens eines Teils des zweiten Befehlsvektors und eine Schiebeeinrichtung zum sequentiellen Verschieben des Inhalts der beiden Register aufweist, daß die erste Signalerzeugungseinrichtung das erste Auftastsignal liefert, wenn sich ein Bit mit dem ersten Binärwert in einer vorbestimmten Stelle im ersten Register befindet, und daß die zweite Signalerzeugungseinrichtung das zweite
    509838/0846
    Auftastsignal liefert, wenn sich ein Bit mit dem ersten Binärwert in einer vorbestimmten Stelle im zweiten Register befindet.
  41. 41. Vorrichtung nach Anspruch 40, dadurch gekennzeichnet, daß auf eine Koinzidenz der Bits der beiden Befehlsvektoren mit dem zweiten Binärwert ansprechende Koinzidenzeinrichtungen und Zählereinrichtungen zum Zählen der Anzahl der aufeinanderfolgenden, zusammenfallenden Bits mit dem zweiten Binärwert vorgesehen sind, und daß die Schiebeeinrichtung auf die Zählung der Zählereinrichtung anspricht, um zusätzlich den Inhalt der beiden Register um eine der Zählung entsprechende Zahl von Bits zu verschieben.
  42. 42. Vorrichtung nach Anspruch 39» dadurch gekennzeichnet, daß die logische Einrichtung ein erstes Register zur Speicherung zumindest eines Teils des ersten Befehlsvektors und ein zweites Register zur Speicherung mindestens eines Teils des zweiten Befehlsvektors und eine Schiebeeinrichtung zum sequentiellen Verschieben des Inhalts der beiden Register aufweist, daß die erste Signalerzeugungseinrichtung das erste Auftastsignal liefert, wenn sich ein Bit mit dem ersten Binärwert in einer vorbestimmten Stelle im ersten Register befindet, und daß die zweite Signalerzeugungseinrichtung das zweite Auftastsignal liefert, wenn sich ein Bit mit dem ersten Binärwert in einer vorbestimmten Stelle im zweiten Register befindet.
  43. 43. Vorrichtung nach Anspruch 42, dadurch gekennzeichnet, daß auf eine Koinzidenz der Bits der beiden Befehlsvektoren mit dem zweiten Binärwert ansprechende Koinzidenzeinrichtungen und Zählereinrichtungen zum Zählen
    509838/0846
    der Anzahl der aufeinanderfolgenden, zusammenfallenden Bits mit dem zweiten Binärwert vorgesehen sind, und daß die Schiebeeinrichtung auf die Zählung der Zählereinrichtung anspricht, um zusätzlich den Inhalt der beiden Register um eine der Zählung entsprechende Zahl von Bits zu verschieben.
  44. 44. Vorrichtung nach Anspruch 38, dadurch gekennzeichnet, daß zweite logische Einrichtungen vorgesehen sind, die auf die ersten und zweiten Befehlsvektoren sowie auf das dritte und das vierte Auftastsignal ansprechen und einen dritten Befehlsvektor erzeugen, welcher eine Anzahl von Bits enthält, wobei ein Bit des dritten Befehlsvektors bei Koinzidenz zwischen einem dritten Auftastsignal und einem Bit mit erstem Binärwert in jedem ersten und zweiten Befehlsvektor den ersten Binärwert hat oder bei Koinzidenz zwischen einem vierten Auftastsignal und einem Bit mit erstem Binärwert in einem der ersten und der zweiten Befehlsvektoren einen ersten Binärwert besitzt, während ein Bit des dritten Befehlsvektors bei Koinzidenz zwischen einem dritten Auftastsignal und einem Bit mit zweitem Binärwert in einem der ersten und zweiten Befehlsvektoren den zweiten Binärwert hat, oder bei Koinzidenz zwischen dem vierten Auftastsignal und einem den zweiten Binärwert besitzenden Bit des ersten und des zweiten Befehlsvektors einen zweiten Binärwert besitzt.
  45. 45. Vorrichtung nach Anspruch 44, dadurch gekennzeichnet, daß die zweite logische Einrichtung ein erstes UND-Glied, das zur Lieferung eines ersten UND-Signals auf eine Koinzidenz zwischen dem dritten Auftastsignal und den den zweiten Binärwert besitzenden Bits des ersten und des zweiten Befehlsvektors anspricht, ein zweites UND-Glied,
    509838/0846
    das zur Lieferung eines zweiten UND-Signals auf eine Koinzidenz zwischen dem vierten Auftastsignal und einem den ersten Binärwert besitzenden Bit des ersten Befehlsvektors anspricht, ein drittes UND-Glied, das zur Erzeugung eines dritten UND-Signals auf eine Koinzidenz zwischen dem vierten Auftastsignal und einem den ersten Binärwert besitzenden Bit des zweiten Befehlsvektors anspricht, ein zur Lieferung eines Setzsignals auf jedes der drei UND-Signale ansprechendes ODER-Glied und eine mit letzterem verbundene Einrichtung zur Erzeugung der Bits des dritten Befehlsvektors aufweist, so daß ein erzeugtes Bit einen ersten Binärwert besitzt, wenn vom ODER-Glied ein Stellsignal geliefert wird, und einen zweiten Binärwert besitzt, wenn das - ODER-Glied kein Stellsignal abgibt.
    509838/0846
    Leerseite
DE19752505518 1974-03-13 1975-02-10 Vorrichtung zur uebertragung von daten zwischen den speicher- und rechenabschnitten eines elektronischen rechners Granted DE2505518A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US450632A US3898626A (en) 1974-03-13 1974-03-13 Data processing apparatus
US470896A US3919534A (en) 1974-05-17 1974-05-17 Data processing system

Publications (2)

Publication Number Publication Date
DE2505518A1 true DE2505518A1 (de) 1975-09-18
DE2505518C2 DE2505518C2 (de) 1990-03-01

Family

ID=27036074

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19752505518 Granted DE2505518A1 (de) 1974-03-13 1975-02-10 Vorrichtung zur uebertragung von daten zwischen den speicher- und rechenabschnitten eines elektronischen rechners

Country Status (5)

Country Link
JP (1) JPS599944B2 (de)
DE (1) DE2505518A1 (de)
FR (1) FR2264323B1 (de)
GB (1) GB1479404A (de)
NL (2) NL181055C (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5933554A (ja) * 1982-08-18 1984-02-23 Nec Corp オペランド供給装置
US5689653A (en) * 1995-02-06 1997-11-18 Hewlett-Packard Company Vector memory operations
GB2476800A (en) 2010-01-07 2011-07-13 Linear Algebra Technologies Ltd Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2241257A1 (de) * 1971-08-25 1973-03-08 Ibm Datenverarbeitende anlage

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5223704B2 (de) * 1971-09-02 1977-06-25
JPS5728219Y2 (de) * 1973-12-26 1982-06-19

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2241257A1 (de) * 1971-08-25 1973-03-08 Ibm Datenverarbeitende anlage

Also Published As

Publication number Publication date
NL181055B (nl) 1987-01-02
DE2505518C2 (de) 1990-03-01
NL181055C (nl) 1987-06-01
NL8602882A (nl) 1987-03-02
GB1479404A (en) 1977-07-13
NL7502309A (nl) 1975-09-16
FR2264323A1 (de) 1975-10-10
JPS599944B2 (ja) 1984-03-06
AU7854475A (en) 1976-08-26
JPS50123242A (de) 1975-09-27
FR2264323B1 (de) 1980-05-30

Similar Documents

Publication Publication Date Title
DE1951552C3 (de) Speichereinrichtung mit Sicherung durch Schutzschlüssel
DE1449765C3 (de) Einrichtung zur Abfrage eines assoziativen Speichers
DE2819571C2 (de)
DE1956604B2 (de) Datenverarbeitungsanlage
DE2145120A1 (de) Digitales Datenverarbeitungsgerat
DE1942005B2 (de) Datenverarbeitungsanlage zur aufnahme und abgabe von digitalen daten und zur ausfuehrung von operationen an den daten
DE1299145B (de) Schaltungsanordnung zum Steuern von peripheren Ein- und Ausgabegeraeten von Datenverarbeitungssystemen
DE1901343B2 (de) Datenverarbeitungsanlage zur Ausführung von Mateirenrechnungen
DE2341549A1 (de) Einrichtung zur ueberwachung und registrierung von betriebsvorgaengen in einer datenverarbeitungsanlage
DE2659621A1 (de) Anordnung zum uebertragen von datenbloecken
DE2363846A1 (de) Verfahren zum steuern des transfers von daten zwischen einem speicher und einem oder mehreren peripheren geraeten und nach diesem verfahren arbeitende datenverarbeitungsanlage
DE2454613C2 (de) Kanaleinheit für die Steuerung der Datenübertragung auf einer Vielzahl von Kanälen zwischen den peripheren Einrichtungen und dem Hauptspeicher einer digitalen Datenverarbeitungsanlage
DE2054941C2 (de) Anordnung zur Auswahl von Datensätzen
DE3107568A1 (de) Datenverarbeitungseinrichtung
DE2505518A1 (de) Vorrichtung zur uebertragung von daten zwischen den speicher- und rechenabschnitten eines elektronischen rechners
DE2459476C3 (de)
CH632605A5 (en) Data-processing system with normal parallel provision and execution of machine instructions
DE2610428A1 (de) Anordnung zur steuerung der zwischenspeicherung von zwischen zwei funktionseinheiten zu uebertragenden daten in einem pufferspeicher
DE2161213B2 (de) Verfahren und Steuereinheit zum Übertragen von Datenwortblöcken
DE1222290B (de) Binaere Recheneinrichtung zur Bildung und Akkumulation von Produkten
DE2349590A1 (de) Vorrichtung zur datenverarbeitung
DE2000608A1 (de) Schaltungsanordnung fuer eine Nachrichtenverarbeitungs-,insbesondere fuer eine Nachrichtenvermittlungsanlage
DE1094020B (de) Periodisch arbeitende numerische Rechenmaschine
DE2150292C2 (de) Mikroprogrammgesteuerte Datenverarbeitungsanlage mit überlagerter Ausführung und Entnahme von Befehlen
DE2238833A1 (de) Datenverarbeitungsanordnung

Legal Events

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

Representative=s name: HENKEL, G., DR.PHIL. FEILER, L., DR.RER.NAT. HAENZ

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