DE68928759T2 - Rechner mit intelligentem Speichersystem und zugehöriges Verfahren - Google Patents

Rechner mit intelligentem Speichersystem und zugehöriges Verfahren

Info

Publication number
DE68928759T2
DE68928759T2 DE68928759T DE68928759T DE68928759T2 DE 68928759 T2 DE68928759 T2 DE 68928759T2 DE 68928759 T DE68928759 T DE 68928759T DE 68928759 T DE68928759 T DE 68928759T DE 68928759 T2 DE68928759 T2 DE 68928759T2
Authority
DE
Germany
Prior art keywords
memory
data
processing
storage means
modules
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.)
Expired - Fee Related
Application number
DE68928759T
Other languages
English (en)
Other versions
DE68928759D1 (de
Inventor
Abhaya Berkeley Heights New Jersey 07922 Asthana
Jonathan A. Murray Hill New Jersey 07974 Chandross
Hosagrahar V. Berkeley Heights New Jersey 07922 Jagadish
Scott C. Mountainside New Jersey 07092 Knauer
Daniel Berkeley Heights New Jersey 07922 Lin
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.)
AT&T Corp
Original Assignee
AT&T Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by AT&T Corp filed Critical AT&T Corp
Publication of DE68928759D1 publication Critical patent/DE68928759D1/de
Application granted granted Critical
Publication of DE68928759T2 publication Critical patent/DE68928759T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus
    • 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/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Multi Processors (AREA)
  • Complex Calculations (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Description

  • Die vorliegende Erfindung betrifft Computer, Speichersysteme und Verfahren zur Speicherung von Daten in einem Speicher.
  • Eine wichtige Aufgabe eines Computersystems ist die Manipulation von Daten. Diese Manipulation hat oft für sich einen Wert, wie zum Beispiel das Organisieren einer Masse von Informationen in für Menschen leicht verständlichen Tabellen. Oft werden die Daten auch als Teil einer Aufgabe, die der Computer durchführt, manipuliert, wie zum Beispiel bei einem Prozeß der Optimierung durch lineare Programmierung.
  • Auf die in dem Speicher eines Computers gespeicherten Daten wird zwangsläufig durch die Steuerungs- und Manipulationsschaltkreise des Computers zugegriffen. Herkömmlicher Speicher besteht aus mehreren Speicherstellen, die jeweils Infomationen speichern können. Jede dieser Speicherstellen ist mit einem Postfach vergleichbar. Um den Inhalt eines bestimmten Fachs zu benutzen, muß man seine eindeutige Identifizierungsnummer oder Adresse kennen. Immer wenn der Computer einen Datenposten benötigt, muß er wissen, in welcher Speicherstelle bzw. in welchen Speicherstellen die benötigten Daten vorliegen. Der Computer gibt dann dem Speicher die Adresse(n) der entsprechenden Speicherstelle(n) an, und der Speicher stellt dem Computer daraufhin die in dieser Speicherstelle bzw. in diesen Speicherstellen vorliegenden Daten zur Verfügung. Somit dient der Speicher als ein passives Lager für jegliche Informationen, die der Computer darin abzulegen wünscht.
  • Ein Computer führt nützliche Aufgaben durch, indem er Programme ausführt, die für ihn geschrieben wurden. Diese Programme müssen über eine Kenntnis der Daten verfügen, auf die als Teil der gerade gegebenen Aufgabe zugegriffen wird bzw. die als Teil der gerade gegebenen Aufgabe manipuliert werden. Fachleute, die diese Programme schreiben, denken dabei an einen bestimmten Organisationsplan für Daten, finden es aber oft unzweckmäßig, allen elementaren Datenposten, die zu einem gegebenen Programm gehören, eindeutige Namen oder Zahlen zuzuweisen. Statt dessen organisieren Programmierer die Daten oft in Gruppen, die Datenstrukturen genannt werden, und von denen einige gebräuchliche nachfolgend beschrieben werden.
  • Eine gebräuchliche Datenstruktur ist ein Stack ("Stapel"). In einem Stack werden Einträge wie Tablette in einem Selbstbedienungsrestaurant "übereinandergestapelt". Wenn ein Eintrag aus dem Stack ausgelesen werden soll, dann handelt es sich immer um den obersten des Stacks, der gelesen wird. Ähnlich wird ein Eintrag, der geschrieben werden soll, immer oben auf den Stack "geschoben". Somit weist der Stack eine "last-in-first-out"-(LIFO)-Datenorganisation auf.
  • Eine weitere gebräuchliche Datenstruktur ist der Baum. Ein Baum ist mit einem Familienstammbaum vergleichbar. In einem Baum bildet ein einzelner Datenposten den Kopf. Dieser Datenposten wird als Wurzel bezeichnet. Die Wurzel ist der erste "Elternteil", und jeder Elternteil kann ein oder mehrere "Kinder" aufweisen (wobei jedes Kind selbst ein Datenposten ist), und diese Kinder können weitere Kinder aufweisen usw. Diese Strukturen sind natürlich abstrakte Gebilde, die den Daten durch das Programm auferlegt werden, besitzen jedoch für den Benutzer eine semantische Bedeutung.
  • Immer wenn ein Computerprogramm Operationen an Daten ausführt, die zum Beispiel als ein Stack organisiert sind, ist es gezwungen, seine Sichtweise des Stacks in die Begriffe zu übersetzen, die der Speicher verstehen kann, d.h. in die numerierten Speicherstellen oder Adressen. Zur erfolgreichen Implementierung eines Stacks muß der Prozessor in der Lage sein, sich zu erinnern, wo sich die aktuelle oberste Position des Stacks befindet. Die Adresse der obersten Position des Stacks ist wiederum in einer weiteren Speicherstelle gespeichert. Um also den Eintrag in der obersten Position des Stacks zu lesen, muß der Computer zuerst die Adresse aufrufen, die die oberste Position des Stacks identifiziert. Wenn diese Adresse aufgefunden wurde, muß das an dieser Adresse vorliegende tatsächliche Datenelement angefordert werden. Operationen wie das Hinzufügen eines Eintrags an der obersten Position des Stacks, das Löschen eines Eintrags usw., erfordern analoge mehrfache Speicherzugriffe. Tatsächlich können sogar weitere Zugriffe erforderlich sein, da ein sorgfältiges Programm außerdem überprüfen sollte, ob der Stack innerhalb der Speicherstellengrenzen liegt, die für ihn reserviert wurden, oder ob es sich einem Punkt nähert, an dem es eine Speicherstelle manipuliert, die zur Zeit für eine andere Datenstrukur reserviert ist. Offensichtlich besteht ein Unterschied zwischen der Art und Weise der Behandlung von Speicher als Datenlager und der Art und Weise der sparsamen Austeilung von Speicherstellen an Programme.
  • Ein Programmierer verbringt typischerweise viel Zeit mit der Verfolgung der an jeder Datenstruktur beteiligten tatsächlichen Speicherstellen. Diese Buchführung ist nicht nur umständlich und fehleranfällig, sondern auch äußerst ineffizient. Eine einfache Aufgabe, wie zum Beispiel ein Stack-Zugriff, sollte idealerweise nur einen einzigen Speicherzugriff in Anspruch nehmen. Durch die Last des Überprüfens von Grenzen und der Speicherverwaltung erfordert diese einfache Aufgabe wesentlich mehr Speicherzugriffe.
  • Die EP-A-0 166 268 offenbart eine Anordnung, die eine Mehrzahl von Speichermodulen umfaßt, die an einen Speicherumschalter angekoppelt sind. Die andere Seite des Umschalters ist mit Speicherabbildungskästen verbunden. Die einzige Aufgabe der Speicherkästen ist das Übersetzen von Adressen, so daß ein (durch einen Endgeräte-Abbildungskasten und einen Endgeräteumschalter an einen Speicherabbildungskasten angekoppeltes) intelligentes Endgerät auf übersetzte Speicherstellen in einem beliebigem der Speichermodule zugreifen kann. Jedes der Speichermodule kann gegebenenfalls verschiedenen "Fähigkeiten" fest zugeordnet werden, und in den Endgeräte-Abbildungskästen werden Informationen gespeichert, um die "Fähigkeiten" mit den Speichermodulen zu korrelieren.
  • Gemäß einem Aspekt der vorliegenden Erfindung wird ein Computer nach Anspruch 1 bereitgestellt.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Speichersystem nach Anspruch 3 bereitgestellt.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren nach Anspruch 4 bereitgestellt.
  • Die vorliegende Erfindung verbessert den Betrieb von Computern durch die Bereitstellung eines verallgemeinerten, programmierbaren Speichersystems, das eine Schnittstelle mit den Steuerungs- und Datenmanipulationseinheiten eines Computers aufweist. Dieses Speichersystem ist in der Lage, die Manipulation, die Buchführung und die Überprüfung durchzuführen, die normalerweise vom Computer durchgeführt werden. Das System umfaßt eine beliebige Anzahl von Aktivstrukturmodulen (ASE), die in einem Netz miteinander verbunden werden können, um Speichermodule zu bilden. Die Speichermodule können miteinander verbunden werden, um ein Gesamtsystem zu bilden, das ein dicht verkoppeltes Speichersystem umfaßt. Es wird dann eine Schnittstelle zwischen diesem Speichersystem und dem Computer eingerichtet. Jedes ASE enthält einen Prozessorteil und einen Teil mit herkömmlichem Speicher. Der Prozessorteil kann ein programmierbarer Allzweck-Mikroprozessor sein oder eine speziell entworfene Steuerung, die sich für eine bestimmte Funktion, die das Speichersystem erwartungsgemäß ausführen wird, besonders eignet. Außerdem können mehr als eine CPU mit dem vorliegenden Speichersystem verbunden werden, und die Verbindung kann effektiv durch eine Mehrzahl von Ports erzielt werden.
  • Kurze Beschreibung der Zeichnungen
  • FIG. 1 zeigt eine Anordnung des Stands der Technik, die zwei Prozessoren und Peripheriegeräte, darunter einen Speicher, enthält;
  • FIG. 2 stellt ein verallgemeinertes Blockschaltbild eines die Erfindung verkörpernden Computersystems dar;
  • FIG. 3 stellt ein ausführlicheres Schaltbild des Speichersystems von FIG. 2 dar;
  • FIG. 4 beschreibt eine Implementierung für das Netz zur Verbindung der ASE-Einheiten des Speichersystems 20;
  • FIG. 5 stellt ein Blockschaltbild einer ASE- Einheit dar;
  • FIG. 6 zeigt den Mikroprogrammspeicher von FIG. 5;
  • FIG. 7 zeigt einen Teil der Mikroprogramm- Adressensteuerungslogik von FIG. 5; und
  • FIG. 8 zeigt die Speichersteuerungseinheit 27.
  • Ausführliche Beschreibung
  • Das Konzept des Einspeicherns von Datenstrukturelementen in den Speicher, des Manipulierens von Datenstrukturelementen im Speicher und des Abrufens von Datenstrukturelementen aus dem Speicher wurde bisher in der Technik der Speichersysteme nicht angewandt. Über ein Speichersystem zu verfügen, das programmiert werden kann, um somit mit jeder beliebigen gewählten Datenstrukturanordnung arbeiten zu können, und es an eine CPU anzukoppeln, von der nicht mehr erwartet wird, daß sie eine Wissensdatenbank über die gespeicherten Daten aufrechterhält, ist völlig neuartig.
  • Das Konzept der "Datenstrukturen" ist Fachleuten auf dem Gebiet der Computerwissenschaft wohlbekannt. Dennoch ist es für die vorliegende Beschreibung nützlich, ausdrücklich festzulegen, was eine "Datenstruktur" ist. Zu diesem Zweck wird nachfolgend ein Abschnitt aus The C Programming Language von Kernigham et al., Prentice-Hall, 1978, Seite 119, zitiert:
  • Eine Struktur ist eine Ansammlung einer oder mehrere Variablen möglicherweise verschiedener Typen, die zur einfacheren Behandlung unter einem einzigen Namen gruppiert werden. (Strukturen werden in manchen Sprachen, insbesondere in Pascal, "Records" genannt.)
  • Das traditionelle Beispiel einer Struktur ist das Lohnregister: ein "Angestellter" wird durch eine Menge von Attributen, wie zum Beispiel Name, Adresse, Sozialversicherungsnummer, Gehalt usw. beschrieben. Von diesen könnten manche selbst wieder Strukturen sein: ein Name hat mehrere Bestandteile, wie auch eine Adresse und sogar das Gehalt.
  • Strukturen helfen insbesondere in großen Programmen bei der Organisation komplizierter Daten, weil sie in vielen Situationen gestatten, eine Gruppe miteinander in Beziehung stehender Variablen statt als separate Gebilde als eine Einheit zu behandeln.
  • Es wird ein Speicher bereitgestellt, der genug Intelligenz enthält, um es einem Benutzer zu ermöglichen, Informationen in den Speicher herunterzuladen, um ihn über die Datenstruktur zu informieren, mit der der Benutzer zu arbeiten wünscht, und ihn über die grundlegenden Operationen zu informieren, von denen der Speicher Kenntnis haben muß. Danach tritt die CPU mit dem Speicher in Wechselwirkung, indem sie ihm einfach Speicherstrukturelemente - nämlich die Daten - und/oder die Befehle bereitstellt, die dem Speicher angeben, welche der Operationen der Speicher ausführen soll. Somit funktionieren das erfindungsgemäße Speichersystem und ein mit dem erfindungsgemäßen Speichersystem angeordneter Computer auf eine völlig analoge Weise wie herkömmliche Speicher, mit der Ausnahme, daß es möglich ist, den Speicher für eine gewählte Datenstruktur zu programmieren und mit Datenstrukturelementen zu arbeiten (im Gegensatz zu einfachen "Worten").
  • Um qualifizierte Fachleute in die Lage zu versetzen, die vorliegende Erfindung anzuwenden, ist die folgende Beschreibung deshalb hauptsächlich auf die Struktur des erfindungsgemäßen Speichersystems gerichtet und weniger auf die Art und Weise seiner Verwendung.
  • FIG. 1 zeigt ein verallgemeinertes Schaltbild einer Multiprozessoranordnung des Stands der Technik. Diese enthält die Prozessoren 10 und 11, einen gemeinsamen Bus 12, mit dem die Prozessoren 10 und 11 verbunden sind, und Peripheriegeräte 13-18. Die Geräte 17 und 18 sind Speicher. Beim Betrieb konkurrieren die Prozessoren um den Bus 12, und dem erfolgreichen Prozessor wird der Zugriff auf ein beliebiges der mit dem Bus verbundenen Geräte gewährt. Eine solche Anordnung führt offensichtlich dazu, daß der Bus 12 bei dem Kommunikationsprozeß zwischen den Prozessoren und den Geräten ein potentieller Engpaß ist. Zur Abschwächung des Problems fügen manche Entwickler zu jedem Prozessor einen Cache-Speicher hinzu. Dieser Ansatz ist bei der Verminderung des Buskonflikts hilfreich, löst aber nicht das grundlegende Kommunikationsproblem zwischen dem Prozessor und dem Speicher. Die Speicherzugriffe erfolgen immer noch in Form von elementaren Abrufungen und Speicherungen.
  • FIG. 2 zeigt ein Blockschaltbild eines die Erfindung verkörpernden Computersystems. Dieses enthält als Beispiel die Prozessoren 10 und 11 und die Peripheriegeräte 13, 14, 15 und 16. In FIG. 2 sind die Prozessoren mit einem Schaltnetzwerk 19 verbunden. Außerdem enthält das Computersystem von FIG. 2 ein mit dem Netzwerk 19 verbundenes Speichersystem 20. Das Speichersystem 20 besteht im Gegensatz zu den Speichern in FIG. 1 aus Speichermodulen, die Fähigkeiten zur gesteuerten Verarbeitung und Kommunikation aufweisen.
  • Das Netzwerk 19 ermöglicht einer CPU, mit dem Speichersystem 20 zu kommunizieren, während eine weitere CPU mit einem anderen Peripheriegerät kommuniziert. Das Netzwerk 19 behandelt das Konfliktproblem, nicht aber die untere Ebene der Kommunikation zu und von dem Speicher. Diese wird durch die Intelligenz in dem Speichersystem 20 behandelt. Natürlich ist zu bemerken, daß Benutzer, die kein Konfliktproblem haben (z.B. bei Anwendungen, bei denen es wahrscheinlich nicht zu Konflikten kommt), das Netzwerk 19 entfallen kann. Außerdem sollte beachtet werden, daß oft ohne Beteiligung jeglicher CPU eine Kommunikation zwischen dem Speichersystem und manchen Peripheriegeräten stattfinden kann.
  • FIG. 3 zeigt den Speicher 20 in etwas größerem Detail. Er enthält die Speichermodule 21, 22 und 23, die mit einem Netzwerk, wie zum Beispiel dem Netzwerk mit den Kommunikationsleitungen 24, 25 und 26, verbunden sind. Die Module 21-23 sind außerdem mit dem Netzwerk 19 verbunden. Jedes Speichermodul enthält eine Mehrzahl von ASE, wobei jedes ASE ein Prozessorelement 30 und einen Speicher 31 enthält. Das Prozessorelement 30 und der zugehörige Speicher 31 sind ein Beispiel eines ASE. Die ASE sind ebenfalls in einem Netzwerk, wie zum Beispiel dem Netzwerk mit den Leitungen 67, 68 und 69, miteinander verbunden, durch das das Speichermodul gebildet wird.
  • FIG. 4 zeigt eine Ausführungsform für Speichermodul. Sie enthält eine Koppelstruktur aus bidirektionalen Kommunikationsleitungen, die diagrammartig in Zeilen und Spalten angeordnet sind, wie zum Beispiel die Leitungen 28 und 29. Ein ASE-Modul, wie zum Beispiel 33, bildet einen "Kreuzungspunkt" zwischen jeder Zeilenleitung und Spaltenleitung. Jede beliebige der Zeilen- oder Spaltenleitungen kann für die Kommunikation mit anderen ASE bestimmt werden, und genauso kann jede beliebige Zeilen- und Spaltenleitung für die Kommunikation mit dem Netzwerk 19 bestimmt werden. Die Kommunikation zwischen ASE in einem Speichermodul kann über die Zeilen- und Spaltenleitungen in Kombination mit dem auf eine beliebige bekannte Weise erfolgenden Durchlaufen anderer ASE bewirkt werden. Am einfachsten kann die Kommunikation durch Pakete bewirkt werden, wobei jedes Paket eine Zieladresse aufweist, die gemäß einer vorgeschriebenen Prozedur jedem ASE, das auf das Paket stößt, ermöglicht zu wissen, ob es das Paket aus der Zeile in die Spalte oder umgekehrt übertragen soll oder nicht. In dieser Eigenschaft dient das ASE lediglich als ein Kreuzschalter.
  • FIG. 5 zeigt das Blockschaltbild einer Ausführungsform für das Verarbeitungselement in einem ASE, das für den Betrieb in der Koppelumgebung von FIG. 4 ausgelegt ist. Es enthält einen Schalter 34, der mit zwei Ports des Verarbeitungselements verbunden ist und als der oben besprochene Kreuzschalter dient, und einen gemeinsamen Bus 35, mit dem eine Anzahl von Blöcken verbunden sind. Insbesondere wird durch den Bus 35 eine Schnittstelle mit einem Mikroprogrammspeicher 36, mit der Registeranordnung 37, mit der Arithmetik- und Logikeinheit (ALU) 38, mit dem Mikroprogrammadressenzähler 39 und mit der Speichersteuerlogik 27 bereitgestellt.
  • Beim Betrieb wird das Speichersystem 20 zwei Arten von Zugriff unterworfen. Eine ist die Programmierung des Speichersystems im allgemeinen, und jedes der benötigten ASE im besonderen. Die Programmierung gibt die Datenstrukturen an, die das Speichersystem behandeln können soll, und die Art und Weise der Durchführung der erforderlichen Operationen, die an diesen Datenstrukturen ausgeführt werden. Zum Beispiel würde ein Programmodul die Verarbeitung definieren, die von den ASE erwartet wird, während ein anderes Programmodul die Wechselwirkung zwischen den verschiedenen ASE definieren würde, wenn für eine bestimmte Aufgabe mehr Speicher oder Datenmanipulation benötigt wird als einem bestimmten Prozessormodul verfügbar ist usw. Die zweite Art von Zugriff besteht darin, das Speichersystem anzuweisen, die gewünschte Aufgabe tatsächlich durchzuführen. Dabei kann es sich zum Beispiel darum handeln, ein Datenwort in einem LIFO-Stack zu speichern, auf einen "Elternteil" des "Kinds", auf das zuletzt zugegriffen wurde, zuzugreifen usw.
  • Die Intelligenz, die es ASE ermöglicht, die oben erwähnte Art von Aufgaben durchzuführen, ist in dem Mikroprogrammspeicher 36 verankert. Auf diesen Speicher wird unter Steuerung des Mikroprogrammzählers 39 zugegriffen, und er stellt die erforderlichen Steuersignale zur Bewirkung der erforderlichen Aktionen in der ALU 38, der Registeranordnung 37 und dem Speicher 40 bereit. Der Speicher 36 kann ein herkömmlicher Speicher sein; in der vorliegenden bevorzugten Ausführungsform umfaßt der Mikroprogrammspeicher 36 jedoch vier 32-Bit-Speichermodule mit jeweils 256 Worten in der in FIG. 6 abgebildeten Anordnung. Der Grund für diesen Entwurf liegt in dem erfindungsgemäßen Wunsch, eine effiziente Speicherung von Befehlen variabler Länge zu ermöglichen und gleichzeitig einen parallelen Zugriff auf die gespeicherten Befehle variabler Länge zu ermöglichen.
  • Der übliche Ansatz zur Speicherung von Befehlen variabler Länge in einem Programmspeicher ist die Verwendung sequentieller Speicherstellen, wobei jede Speicherstelle einen Teil des Befehls enthält. Wenn der Befehl benötigt wird, dann werden diese sequentiellen Speicherstellen ausgelesen, und der Befehl wird aus den aufeinanderfolgenden Leseoperationen "zusammengebaut". Als Alternative kann man die Befehle in einem Speicher speichern, der genug Bit besitzt, um den größten Befehl zu speichern, wobei die kleineren Befehle manche Bit nicht benutzen. Eine solche Anordnung wäre natürlich eine ineffiziente Verwendung des verfügbaren Speichers und ist deshalb für VLSI-Implementierungen des ASE nicht wünschenswert. Im Gegensatz dazu wird erfindungsgemäß der hypothetische einzelne Programmspeicher, in dem Befehle in sequentiellen Speicherstellen eingespeichert werden, in vier Module aufgeteilt, die Adressen entsprechen, die Vielfache von vier sind (des hypothetischen Speichers), und mit einem Offset von 0, 1, 2 und 3. Somit wird in FIG. 6 ein beispielsweise aus drei 32- Bit-Stücken bestehender erster Befehl in der Speicherstelle 0 der Module 41, 42 und 43 gespeichert. Ein nächster Befehl, der beispielsweise aus zwei 32- Bit-Stücken besteht, wird in der Speicherstelle 0 des Moduls 44 und in der Speicherstelle 1 des Moduls 41 gespeichert usw. Die tatsächliche Adresse (des hypothetischen Speichers) wird dem Adreßregister 45 vorgelegt, und die beiden niedrigstwertigen Bit geben zusammen die tatsächliche Startadresse des Befehls an, d.h. die beiden niedrigstwertigen Bit geben das Speichermodul an, während die übrigen Bit die Speicherstelle in den Speichermodulen angeben. Dementsprechend zeigt FIG. 6, daß das Register 45 an seinem Ausgang einen Bus mit acht Leitungen aufweist, wobei sechs der Leitungen (durch die Addiererschaltungen 49, 50 und 57 hindurch) zu den Speichermodulen führen, und die beiden niedrigstwertigen Bit zu Decodiererschaltungen führen. Zur Einrichtung der erforderlichen Logik reagieren die Decodierer 46, 47 und 48 auf die beiden niedrigstwertigen Bit des Registers 45, und die Ausgangsleitungen des Decodierers werden an die Addierer 49, 50 und 57 angelegt, die an die Module 41, 42 bzw. 43 angeschlossen sind.
  • Die in den Modulen 41-44 gespeicherten Befehle enthalten Informationen, die die Länge des Befehls angeben. Dementsprechend ist der Formatdecodierer 51 (mit dem relevanten Bit der Ausgabe der Speichermodule) und mit den beiden niedrigstwertigen Bit des Registers 45 verbunden, um die Länge des Befehls zu bestimmen. Diese Informationen werden an den Schalter 52 und an die Inkrementierungsschaltung 54 angelegt. Die Schaltung 54 reagiert außerdem auf die Ausgabe des Registers 45. Zusammen mit den beiden niedrigstwertigen Bit des Registers 45 leitet der Schalter 52 die Ausgaben der Speichermodule wie erforderlich zu den vier Ausgängen, um ein einziges paralleles Befehlswort (mit einer Breite von 128 Bit) zu bilden. Um eine Ausgabe von logisch "0" in den nicht benutzten Bit zu ermöglichen, wenn kurze Befehle vorliegen, enthält der Schalter 52 wie gezeigt einen "0"-Eingang. Als letztes enthält FIG. 6 zur Ermöglichung des Zugriffs auf den Speicher durch andere Mittel als den Inkrementierungsprozeß, zum Beispiel wenn der Speicher mit Befehlen geladen werden soll, oder wenn ein "Verzweigungsbefehl" ausgeführt werden soll, einen Multiplexer 84, der zwischen der Inkrementierungsschaltung 54 und dem Register 45 angeordnet ist. Der Multiplexer 84 reagiert außerdem auf ankommende Signale auf den Leitungen 55, 56, 58 und 59.
  • Die Mikroprogrammadressensteuerlogik 39 (FIG. 5) umfaßt einen Traplogikblock 60 und einen Verzweigungslogikblock 70. Alle reagieren auf den Bus 35 und erzeugen zusammen Signale auf den Leitungen 55 und 56, die den Multiplexer des in FIG. 6 gezeigten Mikroprogrammspeichers speisen. Der Traplogikblock ist in FIG. 7 dargestellt.
  • Bei vielen Anwendungen kann es wünschenswert sein, den Zustand des Prozessors 33 zu prüfen und aufgrund des Zustands des Prozessors verschiedene Aktionen durchzuführen. Solche Prüfungen können an verschiedenen Stellen durchgeführt werden, wie zum Beispiel an der Registeranordnung, der ALU und dem Speichersteuerungsblock. An jedem solchen interessierenden Punkt werden im Prozessor 33 ein Komparator, ein Wertregister und ein Trap-Adressenregister bereitgestellt (z.B. 61, 62 und 63). Es können viele solcher Anordnungen im Prozessor 33 bereitgestellt werden, der Einfachheit halber zeigt FIG. 7 jedoch nur zwei Anordnungen. Der Komparator vergleicht beobachtete Daten mit dem im Wertregister gespeicherten Wert. Jeder Komparator erzeugt ein "Ja/Nein"-Antwortsignal, und sein Ausgangssignal wird in die Trap-Steuerungseinheit 85 eingegeben. Die Einheit 85 untersucht jedes Antwortsignal und entscheidet, ob eine Aktion durchgeführt werden oder die Verarbeitung ohne Unterbrechung fortfahren sollte. Eine typische Aktion wäre zum Beispiel die Beaufschlagung des Mikroprogrammspeichers mit dem Wert in dem Trap- Adressenregister. Die Einheit 85 reagiert auf die Ausgangssignale der Komparatoren (es sind nur die Komparatoren 61 und 64 gezeigt) und auf den Wert in den Trap-Adressenregistern (es sind nur die Register 63 und 66 gezeigt). Der Trap-Aktivierungs- und -Maskierungslogikblock enthält eine Festprioritätszuweisung für die verschiedenen Komparatorsignale und zusätzlich ein (aus dem Bus 35 geladenes) programmierbares Maskierungsregister, das die Identität derjenigen Komparatoren enthält, die "aktiv" sein dürfen. Die "inaktiven" Komparatoren werden herausmaskiert und von der Trapeinheit ignoriert. Der Block 85 identifiziert auf der Grundlage der Aktivitätsmaskierung und der festen Priorität das Trap mit der höchsten Priorität, auf das reagiert werden sollte, und der Wert des entsprechenden Trap-Adreßregisters wird auf der Grundlage dieser (möglichen) Identifizierung zusammen mit einem Signal auf der Leitung 56, das den Multiplexer 84 steuert, zu der Leitung 55 weitergeleitet.
  • Der Verzweigungslogikblock 70 bewirkt, daß eine in dem gerade ausgeführten Mikrobefehl angegebene Verzweigungsadresse über die Leitung 58 (zusammen mit einem Steuersignal auf der Leitung 59) zu dem Multiplexer 54 gesendet wird, vorausgesetzt, daß etwaige in dem Mikrobefehl angegebene ALU-Bedingungen (wie zum Beispiel die Bedingung, daß das Ergebnis der ALU-Operation positiv ist) am Ausgang der ALU erfüllt sind. Wenn die angegeben Bedingung eintritt, dann lädt der Multiplexer 84, sofern der Block 60 kein Trap identifiziert, statt der inkrementierten alten Adresse diese Verzweigungsadresse in das Adreßregister 45. Die Einzelheiten des Verzweigungslogikblocks sind von völlig herkömmlicher Art und werden deshalb hier nicht ausführlich beschrieben.
  • Die Registeranordnung 37 enthält eine Ansammlung von Registern zur Speicherung verschiedener Übergangswerte der ALU und des Speichers. Zum Beispiel sind die Register 37 an Schaltkreisen beteiligt, die einen Mustervergleich durchführen, indem ein Vergleichsmuster in den Registern gehalten wird und die gespeicherten Werte mit Daten verglichen werden, die aus dem Speicher 40 in der ALU 38 erlangt werden.
  • Ein Mustervergleich wird durch Verwendung der bereits beschriebenen Trap-Einrichtung bewirkt. Einige der Register enthalten Werte, die während eines Mustervergleichs mit dem aktuellen Zeichen zu vergleichen sind. Die Register enthalten Vergleichswerte wie zum Beispiel "Stern", d.h. den Kleene- Sternoperator (Wildcard), "neue Zeile", d.h. das Zeilenumbruchzeichen, "Dateiende", d.h. die Dateiendemarke, usw. Bei jedem Zyklus wird ein Zeichen gelesen und mit einem Zeichen in dem Musterspeicher verglichen. Wenn das aktuelle Zeichen mit einem beliebigen der speziellen Werte übereinstimmt, dann wird ein Trap erzeugt und die entsprechende Adresse genommen. Wenn der Vergleich erfolgreich ist, dann wird der Musterindex inkrementiert. Wenn das Zeichen nicht mit dem Musterzeichen übereinstimmt, dann wird die Speicheradresse inkrementiert. Ein erfolgloser Vergleich kann eine Rücksetzung des Musterindex auf den Anfang des Musters und ein Neuladen des Musterspeichers bewirken.
  • Die Speichersteuerung 27 ist in FIG. 8 gezeigt und besteht aus zwei Adreßregistern 81 und 82, einem Inkrementierungsregister 83 und den beiden Offset-Registern 86 und 87. Die Speichersteuerungseinheit legt eine Adresse an den Speicher 40 an. Diese Adresse wird als die Summe aus dem gewählten Adreßregister und dem gewählten Offset berechnet. Offsets können aus jedem der beiden Offsetregister kommen, oder aus dem aktuellen Mikrobefehl. Das Ergebnis einer Speicher-Leseoperation wird auf dem Bus 35 plaziert und kann in einem beliebigen der Register in 37 aufgezeichnet werden. Ähnlich kann die Quelle für eine Speicher- Schreiboperation durch den Bus 35 ein beliebiges der Register in 37 sein. Jedes der Speicheradressenregister 86 und 87 kann um den in dem aktuellen Mikrobefehl angegebenen Betrag inkrementiert oder dekrementiert werden. Dieser Betrag kann 0, 1, 4 oder der Wert des Inkrementregisters 83 sein.
  • Die Arithmetik- und Logikeinheit des Prozessors kann von beliebiger herkömmlicher Entwurfsart sein und wird deshalb hier nicht im Detail besprochen.
  • Nachfolgend wird kurz die Verwendung der oben beschriebenen Struktur im Kontext der vorliegenden Erfindung dargelegt.
  • Bei Betrachtung der oben beschriebenen Stack- Datenstruktur ist leicht einzusehen, daß zur Manipulierung eines Stacks zwei primäre Befehle erforderlich sind, nämlich ein Ablegen, wodurch ein Element an der obersten Position des Stacks hinzugefügt wird, und eine Entnahme, wodurch das oberste Element von dem Strack entfernt wird. Außerdem werden zwei sekundäre Befehle benötigt: ein Befehl zur Erzeugung und Initialisierung eines neuen Stacks und ein weiterer zur Entfernung eines existierenden Stacks.
  • Bei der Verwendung des erfindungsgemäßen Speichersystems muß man zuerst eines oder mehrere ASE finden, die gerade für keine andere Aufgabe benutzt werden. Dann muß Mikrocode zur Verarbeitung der gewünschten Befehle heruntergeladen werden. Der Stackzeiger wird so eingestellt, daß er auf die erste verfügbare Speicherstelle zeigt, die dann als das untere Ende des Stacks behandelt wird. Die Größe jedes Stackelements wird ebenfalls zu den ASE heruntergeladen, obwohl diese Informationen auch in das Mikrocodeprogramm festverdrahtet werden könnten. Nach dem Abschluß des Herunterladens gehen die ASE zu einem Zustand "Befehle annehmen" über. In diesem Zustand nehmen sie Befehle zur Manipulierung des Stacks an, darunter die folgenden: Ablegen, Entnehmen und Löschen.
  • Eines der ASE kann als der "Kopf" bezeichnet werden, und es werden alle Befehle zu ihm gesendet. Ein weiteres der ASE kann als das "Ende" bezeichnet werden. Jedes ASE kennt die Identität des vor ihm stehenden ASE, und auch die die Identität des hinter ihm stehenden ASE in dieser ausgewählten Gruppe von ASE, mit Ausnahme des Kopfs, der keinen Vorgänger hat, und des Endes, das keinen Nachfolger hat. Das Kopf-ASE ist anfänglich der Besitzer des aktuellen Stackzeigers. Im Fall eines Stacküberlaufs, d.h. wenn der Stack bis zu einem Punkt wächst, an dem zwei oder mehr ASE benötigt werden, um den Stack zu halten, wird einer der Nachfolger des Kopf-ASE als der Besitzer des Stackzeigers bezeichnet.
  • Wenn ein ASE eine Aufforderung zur Durchführung eines "Ablegens" erhält, dann passieren die folgenden Dinge: Als erstes prüft das ASE, ob es der Besitzer des aktuellen Stackzeigers ist; wenn dies nicht der Fall ist, dann wird die Aufforderung zu seinem Nachfolger-ASE weitergeleitet. Irgendwann wird der Befehl dann an dem ASE ankommen, das den aktuellen Stackzeiger besitzt. Dann beginnt die eigentliche Verarbeitung. Der abzulegende Eintrag wird aus dem Netzwerk 19 auf den Stack übertragen. Anschließend wird der Stackzeiger um die Größe des Eintrags inkrementiert, so daß er nun wieder auf die nächste verfügbare Speicherstelle zeigt. Als letztes wird die Adresse des Stackzeigers überprüft, um festzustellen, ob genug Speicher existiert, um einen weiteren Eintrag abzulegen. Wenn dies der Fall ist, dann gibt das ASE dem Host eine Erfolgsnachricht zurück. Wenn kein ausreichender Platz existiert, dann prüft das ASE, ob es einen Nachfolger hat. Wenn kein Nachfolger existiert, dann gibt das ASE dem Host eine Nachricht "mehr Speicherplatz erforderlich" zurück. Wenn ein Nachfolger existiert, dann überträgt ihm das ASE den Besitz des Stackzeigers und gibt dem Host eine Erfolgsnachricht zurück. In allen Fällen kehrt das ASE bei Beendigung des Befehls zu dem Zustand "Befehl annehmen" zurück.
  • Wenn ein ASE eine Aufforderung zur Durchführung einer "Entnahme" erhält, dann passieren die folgenden Dinge: Als erstes prüft das ASE, ob es der Besitzer des aktuellen Stackzeigers ist; wenn dies nicht der Fall ist, dann wird die Aufforderung zu seinem Nachfolger-ASE weitergeleitet. Irgendwann wird der Befehl dann an dem ASE ankommen, das den aktuellen Stackzeiger besitzt. Dann beginnt die eigentliche Verarbeitung. Der Stackzeiger wird dekrementiert, so daß er auf den Eintrag auf der obersten Position des Stacks zeigt. Wenn diese Dekrementierung dazu führt, daß der Stackzeiger unter das untere Ende des Stacks fällt, dann wird die Aufforderung zu seinem Vorgänger zurückgeleitet, sofern dieser existiert. Wenn er nicht existiert, dann gibt das ASE dem Host eine Unterschreitungs-Fehlernachricht zurück. Als letztes wird der zu entnehmende Eintrag aus dem Stack in das Netzwerk 19 transferiert und zu dem Host übertragen. In allen Fällen kehrt das ASE bei Beendigung des Befehls zu dem Zustand "Befehl annehmen" zurück.
  • Durch das Löschen eines existierenden Stacks wird es möglich, die reservierten ASE wieder zurückzugewinnen. Dabei wird einfach jedes ASE als freigegeben markiert.

Claims (4)

1. Computer mit einer CPU (10, 11) und einem Speicher (20), wobei der Speicher folgendes umfaßt:
eine Mehrzahl von Speichermitteln (31) zum Speichern von Informationen für die CPU, und durch folgendes gekennzeichnet ist:
eine gleichartige Mehrzahl programmierbarer Verarbeitungsmittel (30), wobei jedem der besagten programmierbaren Verarbeitungsmittel ein Speichermittel der besagten Mehrzahl von Speichermitteln zugeordnet ist, und das so angeordnet ist, daß es als Reaktion auf einen Befehl aus der CPU Daten manipuliert, die in seinem zugeordneten Speichermittel gespeichert sind, wobei die Art der durch das besagte Verarbeitungsmittel durchgeführten Datenmanipulation durch eine durch die CPU im voraus geladene Befehlssequenz definiert ist.
2. Computer nach Anspruch 1, wobei die in einem ersten der besagten Speichermittel gespeicherten Daten mit den in mindestens einem anderen der besagten Speichermittel gespeicherten Daten in Zusammenhang stehen und die Verarbeitung von Daten in dem anderen Speichermittel durch sein zugeordnetes Verarbeitungsmittel von dem Verarbeitungsmittel des besagten ersten dieser Speichermittel gesteuert wird.
3. Speichersystem (10) mit einer Mehrzahl von Speichermodulen, wobei jedes der Speichermodule
ein Speicherelement (31) enthält; und gekennzeichnet ist durch:
ein zugeordnetes Verarbeitungselement (30), wobei jedes Verarbeitungselement folgendes enthält:
ein Mittel (36) zum Empfangen von Befehlen, die eine spezifizierte Datenstruktur und Datenstruktur-manipulationen an in dem zugeordneten Speicher gespeicherten Daten definieren; und
Mittel (36, 34) zur Kommunikation mit Verarbeitungselementen anderer Speichermodule, um diese anderen Module bei der Durchführung seiner spezifizierten Manipulationen an in den Speicherelementen dieser anderen Module gespeicherten Daten einzubinden.
4. Verfahren zum Speichern von Daten in einem Speicher, Manipulieren von Daten in dem besagten Speicher und Abrufen von Daten aus dem besagten Speicher, wobei der besagte Speicher aus einer Mehrzahl von Speicherblöcken (31) zusammengesetzt ist und durch eine gleichartige Mehrzahl von Verarbeitungselementen (30) gekennzeichnet ist, wobei jedes Verarbeitungselement einem entsprechenden Speicherblock zugeordnet ist und das Verfahren folgendes umfaßt:
Speichern von Datenstrukturbefehlen in den besagten Verarbeitungselementen, die für eine ausgewählte Menge von Manipulationen der besagten Daten charakteristisch sind; und
Senden von Befehlen zu den besagten Verarbeitungselementen, die die Ausführung ausgewählter besagter gespeicherter Datenstrukturbefehle angeben.
DE68928759T 1988-05-13 1989-05-04 Rechner mit intelligentem Speichersystem und zugehöriges Verfahren Expired - Fee Related DE68928759T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/193,987 US5134711A (en) 1988-05-13 1988-05-13 Computer with intelligent memory system

Publications (2)

Publication Number Publication Date
DE68928759D1 DE68928759D1 (de) 1998-09-03
DE68928759T2 true DE68928759T2 (de) 1998-12-24

Family

ID=22715870

Family Applications (2)

Application Number Title Priority Date Filing Date
DE68928759T Expired - Fee Related DE68928759T2 (de) 1988-05-13 1989-05-04 Rechner mit intelligentem Speichersystem und zugehöriges Verfahren
DE68929080T Expired - Fee Related DE68929080T2 (de) 1988-05-13 1989-05-04 Anordnung zum Speichern von Informationen für einen Datenanbieterprozessor

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE68929080T Expired - Fee Related DE68929080T2 (de) 1988-05-13 1989-05-04 Anordnung zum Speichern von Informationen für einen Datenanbieterprozessor

Country Status (5)

Country Link
US (1) US5134711A (de)
EP (2) EP0341905B1 (de)
JP (1) JPH0229849A (de)
CA (1) CA1326566C (de)
DE (2) DE68928759T2 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544347A (en) 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5367637A (en) * 1992-03-26 1994-11-22 International Business Machines Corporation Self-tuning virtual storage management for dedicated real-time computer system
CH683665B5 (fr) * 1992-05-27 1994-10-31 Ebauchesfabrik Eta Ag Récepteur d'appel local.
KR940004434A (ko) * 1992-08-25 1994-03-15 윌리엄 이. 힐러 스마트 다이나믹 랜덤 억세스 메모리 및 그 처리방법
AU673069B2 (en) * 1993-03-23 1996-10-24 David Siu Fu Chung Intelligent memory architecture
WO1994022090A1 (en) * 1993-03-23 1994-09-29 David Siu Fu Chung Intelligent memory architecture
CA2145106C (en) * 1994-04-22 1999-08-24 Abhaya Asthana Intelligent memory-based input/output system
JP3658072B2 (ja) * 1996-02-07 2005-06-08 株式会社ルネサステクノロジ データ処理装置およびデータ処理方法
US6052797A (en) * 1996-05-28 2000-04-18 Emc Corporation Remotely mirrored data storage system with a count indicative of data consistency
US6044444A (en) * 1996-05-28 2000-03-28 Emc Corporation Remote data mirroring having preselection of automatic recovery or intervention required when a disruption is detected
US6658552B1 (en) 1998-10-23 2003-12-02 Micron Technology, Inc. Processing system with separate general purpose execution unit and data string manipulation unit
EP1050885B1 (de) * 1999-05-03 2005-02-02 STMicroelectronics S.A. Ein Mehrport-Speicher
US20030182376A1 (en) * 2000-05-19 2003-09-25 Smith Neale Bremner Distributed processing multi-processor computer
US20040252547A1 (en) * 2003-06-06 2004-12-16 Chengpu Wang Concurrent Processing Memory
JP4845591B2 (ja) * 2006-05-24 2011-12-28 本田技研工業株式会社 自走式芝刈機の電子制御装置の配置構造
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US8930618B2 (en) * 2010-08-24 2015-01-06 Futurewei Technologies, Inc. Smart memory
US10089043B2 (en) 2013-03-15 2018-10-02 Micron Technology, Inc. Apparatus and methods for a distributed memory system including memory nodes
US9779138B2 (en) 2013-08-13 2017-10-03 Micron Technology, Inc. Methods and systems for autonomous memory searching
US10003675B2 (en) 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1128576A (en) * 1967-07-29 1968-09-25 Ibm Data store
US3609702A (en) * 1967-10-05 1971-09-28 Ibm Associative memory
US3757312A (en) * 1970-10-09 1973-09-04 Us Navy General purpose associative processor
US3699534A (en) * 1970-12-15 1972-10-17 Us Navy Cellular arithmetic array
US3753238A (en) * 1971-08-27 1973-08-14 Bell Telephone Labor Inc Distributed logic memory cell with source and result buses
US3787817A (en) * 1972-06-21 1974-01-22 Us Navy Memory and logic module
US4149240A (en) * 1974-03-29 1979-04-10 Massachusetts Institute Of Technology Data processing apparatus for highly parallel execution of data structure operations
US3962706A (en) * 1974-03-29 1976-06-08 Massachusetts Institute Of Technology Data processing apparatus for highly parallel execution of stored programs
GB1540996A (en) * 1975-05-12 1979-02-21 Plessey Co Ltd Associative processors
US4631666A (en) * 1982-10-25 1986-12-23 Burroughs Corporation Data transfer network for variable protocol management
US4580215A (en) * 1983-03-08 1986-04-01 Itt Corporation Associative array with five arithmetic paths
US4710868A (en) * 1984-06-29 1987-12-01 International Business Machines Corporation Interconnect scheme for shared memory local networks
US4734848A (en) * 1984-07-17 1988-03-29 Hitachi, Ltd. Combination reduction processing method and apparatus
US4819152A (en) * 1985-04-05 1989-04-04 Raytheon Company Method and apparatus for addressing a memory by array transformations
CA1263760A (en) * 1985-09-27 1989-12-05 Alan L. Davis Apparatus for multiprocessor communication
US4731737A (en) * 1986-05-07 1988-03-15 Advanced Micro Devices, Inc. High speed intelligent distributed control memory system
JPS6364178A (ja) * 1986-08-29 1988-03-22 インタ−ナショナル・ビジネス・マシ−ンズ・コ−ポレ−ション 画像処理システム
US4959776A (en) * 1987-12-21 1990-09-25 Raytheon Company Method and apparatus for addressing a memory by array transformations
JPH01261772A (ja) * 1988-04-08 1989-10-18 Cogent Res Inc コンピュータ及びその動作方法

Also Published As

Publication number Publication date
EP0341905B1 (de) 1998-07-29
EP0341905A2 (de) 1989-11-15
DE68929080T2 (de) 2000-05-25
US5134711A (en) 1992-07-28
DE68928759D1 (de) 1998-09-03
EP0779584A1 (de) 1997-06-18
EP0341905A3 (de) 1992-01-22
CA1326566C (en) 1994-01-25
DE68929080D1 (de) 1999-11-04
EP0779584B1 (de) 1999-09-29
JPH0229849A (ja) 1990-01-31

Similar Documents

Publication Publication Date Title
DE68928759T2 (de) Rechner mit intelligentem Speichersystem und zugehöriges Verfahren
DE2423194C2 (de) Vorrichtung zum Berechnen einer absoluten Hauptspeicheradresse in einer Datenverarbeitungsanlage
EP1146432B1 (de) Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
DE69023018T2 (de) Prozessor-Unterbrechungssteuerung.
DE2209282C3 (de) Datenverarbeitungsanlage
DE2540975C2 (de) Datenverarbeitungseinrichtung zur Ausführung mehrerer gleichzeitig ablaufender Prozesse
DE69107506T2 (de) Verfahren und Vorrichtung zur Gleichzeitigkeitssteuerung von gemeinsamen Datenaktualisierungen und Abfragen.
DE69024753T2 (de) Tragbarer, Ressourcen teilender Datei-Server, der gemeinsame Routines benutzt
DE69114333T2 (de) Rechner mit der Fähigkeit mehrere Befehle gleichzeitig auszuführen.
DE2839726A1 (de) Datenverarbeitungsanlage mit verteilter steuerarchitektur in einem multiprozessor-system
DE2411963B2 (de) Datenverarbeitungsanlage
DE68927753T2 (de) Daten-Eingangs/-Ausgangssteuerungssystem in einem Betriebssystem
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE3232675A1 (de) Verfahren zur steuerung des datenzugriffs in einem rechner und daten-kontrollsystem zur durchfuehrung des verfahrens
DE2054830C3 (de) Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge
DE1774052B1 (de) Rechner
DE3688738T2 (de) Musteradressierbarer speicher.
DE2054947A1 (de) Adressenvorbereitungseinnchtung und verfahren und Speicherzugnffan forderungseinnchtung fur ein Infor mationsver arbeitungssystem
DE2758829A1 (de) Multiprozessor-datenverarbeitungssystem
DE3338329C2 (de)
DE3518818A1 (de) Datenverarbeitungsvorrichtung und verfahren und vorrichtung zur umsetzung von datenelementen
DE69111778T2 (de) Verfahren und Gerät zur Erweiterung einer Rechnerarchitektur von zweiunddreissig auf vierundsechzig Bits.
DE3650305T2 (de) Anordnung zur Steuerung eines Rechnersystems durch ein anderes Rechnersystem.
DE3410497A1 (de) Rechneranordnung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee