DE68929080T2 - Anordnung zum Speichern von Informationen für einen Datenanbieterprozessor - Google Patents
Anordnung zum Speichern von Informationen für einen DatenanbieterprozessorInfo
- Publication number
- DE68929080T2 DE68929080T2 DE68929080T DE68929080T DE68929080T2 DE 68929080 T2 DE68929080 T2 DE 68929080T2 DE 68929080 T DE68929080 T DE 68929080T DE 68929080 T DE68929080 T DE 68929080T DE 68929080 T2 DE68929080 T2 DE 68929080T2
- Authority
- DE
- Germany
- Prior art keywords
- memory
- data
- information
- coding
- ase
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving 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)
- Microelectronics & Electronic Packaging (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
- Complex Calculations (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Description
- Die Erfindung bezieht sich auf eine Vorrichtung zum Speichern von Information für einen Host-Prozessor.
- Eine wichtige Anwendung für ein Computersystem ist die Bearbeitung von Daten. Diese Be- oder Verarbeitung ist manchmal von Wert als solche, wie etwa beim Ordnen von Informationsmengen in leicht verständliche Tabellen, die für Menschen einfacher zu erfassen sind. Manchmal werden Daten als Teil von bestimmten Aufgaben bearbeitet, die der Computer durchführt, wie etwa bei einem linearen Programm- Optimierungsvorgang.
- Die in einem Computerspeicher gespeicherten Daten müssen für die Steuerungs- und Verarbeitungsschaltung des Computers zugreif- oder abrufbar sein. Übliche Speicher sind aus vielen Speicherstellen aufgebaut, von denen jede geeignet ist, Informationen zu speichern. Jede Speicherstelle ist einem Postfach ähnlich. Um die Inhalte eines bestimmten Faches zu nutzen, muß die eindeutige oder einzigartige Bezugszahl oder -adresse bekannt sein. Wenn der Computer ein Datenpaket anfordert, muß dieser wissen, an welcher Speicherstelle oder an welchen Speicherstellen des Speichers die angeforderten Daten liegen. Der Computer schreibt dann die Adresse oder die Adressen der geeigneten Speicherstelle oder der geeigneten Speicherstellen in den Speicher, welcher wiederum dem Computer die gegebenen Daten der Speicherstelle oder der Speicherstellen bereitstellt. Daher dient der Speicher als passive Rücklage von Informationen, welche der Computer in diesen einschreiben will.
- Ein Computer führt nützliche Aufgaben durch Abarbeiten von für diesen geschriebenen Programmen durch. Diese Programme müssen als Teil der Aufgabe Kenntnis der Daten aufweisen, auf die zugegriffen wird und die verarbeitet werden. Programmierer, die diese Programme schreiben, haben ein Datenorganisationsschema in Gedanken vor sich, betrachten es oft aber als unbequem, jedem grundlegenden einem Programm zugeordneten Datenelement per Hand einen einzigartigen Namen oder eine Zahl zuzuordnen. Statt dessen ordnen die Programmierer die Daten oftmals in Datenstrukturen genannten Gruppen, von denen einige übliche nachfolgend beschrieben werden.
- Eine übliche Datenstruktur ist ein Stack (Datenstapel). In einem Stack werden die Elemente übereinander angeordnet, wie Tablette in einer Cafeteria. Wenn ein Element aus dem Stack gelesen wird, ist dies immer das oberste Element, das gelesen wird. Wenn in ähnlicher Weise ein Element eingeschrieben wird, wird das Element immer an oberster Stelle des Stacks "aufgeschoben" (pushed). Daher weist der Stack eine "Last-in-First-out" (LIFO) Datenorganisation auf.
- Eine weitere übliche Datenstruktur ist ein Baum. Ein Baum ist einem genealogischen Diagramm ähnlich. Bei einem Baum bildet ein einziges Datenelement den Kopf. Dieses Datenelement wird Wurzel genannt. Die Wurzel ist der erste "Vater", und jeder Vater weist einen oder mehrere "Söhne" auf (jeder Sohn ist selbst ein Datenelement), diese Söhne weisen weitere Söhne auf und so fort. Diese Strukturen sind selbstverständlich abstrakte Einheiten, die den Daten durch das Programm auferlegt werden, weisen jedoch eine semantische Bedeutung für den Benutzer auf.
- Wenn ein Computerprogramm mit als Stack angeordneten Daten arbeitet, ist dieses beispielsweise gezwungen, dessen Betrachtung des Stacks in Begriffe zu übertragen, welche der Speicher verstehen kann, d. h. in numerierte Speicherstellen oder Adressen. Um einen Stack erfolgreich aufzubauen, muß der Prozessor in der Lage sein, sich zu erinnern, wo das aktuelle oberste Element des Stacks ist. Die Adresse des obersten Elementes des Stacks wird wiederum in einer anderen Speicherstelle gespeichert. Um das oberste Datenelement des Stacks auszulesen, muß der Computer zuerst die Adresse erhalten, die das oberste Element des Stacks bezeichnet. Wenn diese Adresse gefunden ist, muß das aktuelle Datenelement bei · dieser Adresse angefordert werden. Vorgänge wie das Addieren eines Elementes zu dem obersten Element eines Stacks, das Löschen eines Datenelementes etc. benötigen mehrfache analoge Speicherzugriffe. In der Tat sind noch mehr Zugriffe erforderlich, wenn ein vorsichtiges Programm prüft, ob der Stack in den diesem zugeordneten Speichergrenzen ist, oder ob dieser sich einem Punkt nähert, bei dem dieser eine Speicherstelle bearbeitet, die aktuell einem anderen Datenaufbau zugewiesen ist. Genauer gesagt besteht ein Unterschied zwischen der Art, mit der ein Speicher als Datenspeicher behandelt wird und der Art, mit der Speicherstellen den Programmen zugeteilt werden.
- Ein Programmierer wendet üblicherweise beträchtliche Anstrengungen auf, sich über die jeden Datenaufbau betreffenden aktuellen Speicherstellen auf dem Laufenden zu halten. Diese Buchführung ist nicht nur lästig und fehlerträchtig, sondern auch außerordentlich unwirtschaftlich. Eine einfache Aufgabe wie ein Stackzugriff, würde in idealer Weise nur einen einzigen Speicherzugriff erfordern. Die Last des Prüfens der Begrenzungen und des Speichermanagements bewirkt, daß diese einfache Aufgabe viele weitere Speicherzugriffe erfordert.
- Die Druckschrift EP-A-0 166 268 offenbart eine Anordnung, die eine Vielzahl von mit einem Speicherschalter bzw. einer Speichervermittlung verbundene Speichermodule aufweist. Die andere Seite des Schalters ist mit Speicherzuordnungsfächern verbunden. Die einzige Aufgabe dieser Speicherfächer ist, Adressen so zu übersetzen, daß ein intelligenter Anschluß (der über ein Anschlußzuordnungsfach und einen Anschlußschalter mit einem Speicherzuordnungsfach verbunden ist) auf die übersetzten Speicherstellen in jedem Speichermodul zugreifen kann. Jedem Speichermodul können wenn gewünscht verschiedene "Fähigkeiten" zugeordnet werden, und die Informationen können in den Anschlußzuordnungsfächern gespeichert werden, um die "Fähigkeiten" mit den Speichermodulen zu korrelieren.
- Gemäß der Erfindung wird eine Vorrichtung nach Anspruch 1 bereitgestellt.
- Die vorliegende Erfindung verbessert den Betrieb von Computern durch Darstellen eines verallgemeinerten programmierbaren Speichersystems, das mit den Steuerungs- und Datenverarbeitungseinheiten eines Computers verbunden ist. Dieses Speichersystem ist dazu geeignet, die Bearbeitung, Buchführung und Prüfung durchzuführen, die gewöhnlich vom Computer durchgeführt wird. Das System umfaßt jede Anzahl aktiver Strukturmodule (ASE), die in einem Netzwerk zum Bilden von Speichermodulen angeschlossen sein können. Die Speichermodule können zum Bilden eines Gesamtsystems verbunden sein, und ein dicht verbundenes Speichersystem umfassen. Das Speichersystem wird daraufhin mit dem Computer verbunden. Jedes ASE enthält einen Prozessorabschnitt und einen üblichen Speicherabschnitt. Der Prozessorabschnitt kann ein programmierbarer Mikroprozessor für allgemeine Zwecke sein, oder ein speziell entworfener Controller, der für bestimmte Funktionen, die das Speichersystem erfüllen soll, gut geeignet ist. Ferner kann mehr als eine CPU mit dem Speichersystem verbunden sein, und die Verbindung kann durch eine Vielzahl von Eingängen wirkungsvoll erreicht werden.
- Fig. 1 zeigt eine Anordnung des Standes der Technik, die zwei Prozessoren und Peripherieeinrichtungen umfaßt, einschließlich eines Speichers,
- Fig. 2 zeigt ein verallgemeinertes Blockdiagramm eines Computersystems gemäß der Erfindung,
- Fig. 3 stellt ein detaillierteres Diagramm des Speichersystems nach Fig. 2 dar,
- Fig. 4 zeigt eine Ausführungsform für ein Netzwerk, das die ASE-Elemente des Speichersystems 20 verbindet,
- Fig. 5 stellt ein Blockdiagramm eines ASE-Elementes dar,
- Fig. 6 zeigt den Mikroprogrammspeicher nach Fig. 5,
- Fig. 7 zeigt einen Abschnitt der Mikroprogramm- Adressteuerlogik nach Fig. 5, und
- Fig. 8 zeigt die Speichersteuerungseinheit 27.
- Das Konzept des Speicherns von Datenstrukturelementen in Speichern, des Bearbeitens von Datenstrukturelementen in Speichern und des Wiedergewinnens von Datenstrukturelementen aus Speichern wurde bisher nicht auf Speichersysteme angewendet. Ein Speichersystem, das dazu geeignet ist, programmiert zu werden, um dadurch mit jeder gewählten Datenstruktur zu arbeiten, und diese mit einer CPU zu verbinden, bei der nicht mehr erforderlich ist, grundlegende Kenntnis der gespeicherten Informationen zu haben, ist gänzlich neu.
- Obwohl das Konzept der "Datenstrukturen" Informatikern bekannt ist, ist es zum Zweck der Beschreibung nützlich, ausführlich zu erklären, was eine "Datenstruktur" ist. Zu diesem Zweck wird ein Abschnitt aus "The C Programming Language", von Kernigham et al., Prentice-Hall 1978, Seite 119, nachfolgend zitiert:
- "Eine Struktur ist eine Auswahl von einer oder mehreren Variablen, möglicherweise verschiedener Art, in einer Gruppe mit einem einzigen Namen zum zweckmäßigen Bearbeiten. (Strukturen werden in manchen Programmiersprachen vor allem in Pascal, "records" genannt.)
- Das herkömmliche Beispiel einer Struktur ist das Gehaltslistenprogramm: ein Angestellter wird durch einen Satz von Merkmalen beschrieben, wie etwa Name, Adresse, Sozialversicherungsnummer, Gehalt etc. Einige dieser Strukturen können wiederum Strukturen sein: ein Name wie auch eine Adresse und sogar das Gehalt weisen verschiedene Bestandteile auf.
- Strukturen helfen beim Ordnen komplexer Daten, insbesondere bei großen Programmen, weil sie in vielen Fällen erlauben, eine Gruppe verwandter Variablen als eine Einheit anstatt einzelner Einheiten zu behandeln.
- Ein Speicher wird bereitgestellt, der ausreichend Informationsgehalt bereithält, um es einem Benutzer zu ermöglichen, Informationen in den Speicher herunter zu laden, um diesem die Datenstruktur, mit welcher der Benutzer arbeiten möchte, mitzuteilen, und dem Speicher die grundlegenden Operationen mitzuteilen, über welche der Speicher Kenntnis hat. Dadurch arbeitet die CPU mit dem Speicher durch Bereitstellen von Speicherstrukturelementen zusammen - den Daten - und/oder den Befehlen, die dem Speicher mitteilen, welche der Operationen der Speicher ausführt. Folglich arbeitet das erfindungsgemäße Speichersystem und ein dem erfindungsgemäßen Speichersystem zugeordneter Computer in einer Weise, die vollständig analog zum Arbeiten üblicher Speicher ist, unter Bewahrung der Fähigkeit, den Speicher für eine gewünschte Datenstruktur zu programmieren und mit der Fähigkeit, mit Datenstrukturelementen zu arbeiten, im Vergleich zu einfachen "Wörtern".
- Um ausgebildeten Programmierern die Ausführung der Erfindung zu ermöglichen, ist die nachfolgende Beschreibung im wesentlichen auf den Aufbau des Speichersystems gerichtet und nicht auf die Art der Anwendung.
- Fig. 1 stellt ein allgemeines schematisches Diagramm einer Multiprozessoranordnung des Standes der Technik dar. Dieses umfaßt die Prozessoren 10 und 11, einen üblichen Bus 12, mit dem die Prozessoren 10 und 11 verbunden sind, und Peripherieeinrichtungen 13 bis 18. Die Einrichtungen 17 und 18 sind Speicher. Im Betrieb greifen beide Prozessoren auf den Bus 12 zu, und der Prozessor, der beim Zugriff erfolgreich ist, erhält Zugriff auf eine der mit dem Bus verbundenen Einrichtungen. Diese Anordnung führt im Bus 12 deutlich zu einem möglichen Flaschenhals im Übertragungsvorgang zwischen den Prozessoren und den Einrichtungen. Um dieses Problem abzuschwächen, schließen einige Entwickler bei jedem Prozessor einen Cache-Speicher an. Dieser Lösungsversuch unterstützt das Verringern von Buskonflikten, löst jedoch nicht das grundlegende Übertragungsproblem zwischen dem Prozessor und dem Speicher. Speicherzugriffe nehmen trotzdem die Form von grundlegendem Abruf- und Speichervorgängen an.
- Fig. 2 stellt ein Blockdiagramm eines Computersystems gemäß der Erfindung dar. Zu Beispielszwecken umfaßt dieses die Prozessoren 10 und 11 und die Peripherieeinrichtungen 13, 14, 15 und 16. In Fig. 2 sind die Prozessoren mit einem Schaltungsnetz 19 verbunden. Ferner umfaßt das Computersystem nach Fig. 2 ein mit dem Netzwerk 19 verbundenes Speichersystem 20. Das Speichersystem 20 ist nicht wie die Speicher in Fig. 1 aus Speichermodulen zusammengesetzt, die gesteuerte Verarbeitungs- und Übertragungsfunktionen umfassen. Das Netzwerk 19 erlaubt einer CPU mit dem Speichersystem 20 zu kommunizieren, während eine andere CPU mit einigen anderen Peripherieeinrichtungen kommuniziert. Das Netzwerk 19 ist auf das Zugriffsproblem gerichtet, nicht aber auf den niedrigen Übertragungsgrad zu und vom Speicher. Der Speicher wird durch den Informationsgehalt im Speichersystem 20 adressiert. Es ist verständlich, daß bei Anwendungen, bei denen keine Zugriffsprobleme auftreten (z. B. bei Anwendungen, bei denen wahrscheinlich keine Konflikte auftreten), das Netzwerk 19 entfernt werden kann. Es sei auch angemerkt, daß eine Übertragung zwischen dem Speichersystem und einigen Peripherieeinrichtungen oftmals ohne Beteiligung einer CPU stattfindet.
- Fig. 3 zeigt den Speicher 20 detaillierter. Dieser enthält Speichermodule 21, 22 und 23, die mit einem Netzwerk verbunden sind, wie etwa mit dem Netzwerk, das die Übertragungsleitungen 24, 25 und 26 umfaßt. Die Module 21 bis 23 sind auch mit dem Netzwerk 19 verbunden. Jedes Speichermodul enthält eine Vielzahl von ASEs, wobei jedes ASE ein Prozessorelement 30 und einen Speicher 31 enthält. Das Prozessorbauteil 30 und der zugeordnete Speicher 31 sind ein Beispiel eines ASE. Die ASEs sind auch mit einem Netzwerk verbunden, wie etwa mit dem Netzwerk, das die Leitungen 67, 68 und 69 umfaßt, welches das Speichermodul bildet.
- Fig. 4 zeigt eine Ausführungsform des Speichermoduls.
- Dieses enthält eine Schaltungs- oder Vermittlungseinrichtung bidirektionaler Übertragungsleitungen, die im Diagramm in Reihen und Spalten angeordnet sind, wie etwa die Leitungen 28 und 29. Ein ASE-Modul, wie etwa 33, bildet einen "Schnittpunkt" zwischen jeder Reihe und Spalte. Jede Reihen- oder Spaltenleitung kann zur Übertragung mit anderen ASEs vorgesehen sein, und in ähnlicher Weise kann jede Reihen- oder Spaltenleitung zur Übertragung mit dem Netzwerk 19 vorgesehen sein. Die Übertragung zwischen ASEs in einem Speichermodul kann über die Reihen- und Spaltenleitungen in Verbindung mit dem Übergang über weitere ASEs in jedem einer Anzahl bekannter Wege bewirkt werden. Am einfachsten kann die Übertragung durch Pakete bewirkt werden, wobei jedes Paket eine Zieladresse aufweist, die gemäß einem vorgeschriebenen Vorgang jedem ASE, das dem Paket begegnet, zu erkennen erlaubt, ob das ASE das Paket von der Reihe zur Zeile oder umgekehrt übertragen soll. In dieser Hinsicht dient das ASE lediglich als Schalter.
- Fig. 5 zeigt das Blockdiagramm einer Ausführungsform des Verarbeitungselementes in einem ASE, das zum Betrieb in der Schalt- oder Vermittlungsumgebung von Fig. 4 ausgebildet ist. Dieses enthält einen Schalter 34, der mit zwei Eingängen des Verarbeitungselementes verbunden ist, welches als vorstehend beschriebener Knotenpunktschalter dient, und eine mit einem üblichen Bus 35 verbundene Anzahl von Blöcken. Insbesondere ist der Bus 35 mit einem Mikroprogrammspeicher 36, mit einem Registerfeld 37, mit einer Arithmetisch-Logischen Einheit (ALU) 38, mit einem Mikroprogramm-Adresszähler 39 und mit einer Speicher-Steuerlogik 27 verbunden.
- In Betrieb weist das Speichersystem 20 zwei Zugriffsarten auf. Eine davon ist, allgemein das Speichersystem und insbesondere jedes benötigte ASE zu programmieren. Das Programm beschreibt die Datenstrukturen, die das Speichersystem benötigt, und die Art der Durchführung der benötigen Operationen mit diesen Datenstrukturen. Beispielsweise definiert ein Programm-Modul die Verarbeitung, die in den ASEs erwartet wird, ein weiteres Programm-Modul definiert die Wechselwirkung zwischen den verschiedenen ASEs, wenn mehr Speicher- oder Datenbearbeitungsschritte für eine bestimmte Aufgabe benötigt werden als für ein bestimmtes Prozessormodul etc. verfügbar ist. Die zweite Zugriffsart ist, dem Speichersystem zu befehlen, die gewünschte Aufgabe unmittelbar durchzuführen. Dieses kann beispielsweise das Speichern eines Datenwortes in einem LIFO-Stack sein, um auf einen "Vater" des zuletzt zugegriffenen "Sohnes" zuzugreifen etc.
- Der Informationsgehalt, der dem ASE erlaubt, die vorstehend beschriebenen Aufgabenarten durchzuführen, liegt im Mikroprogrammspeicher 36. Auf diesen Speicher wird durch Steuerung des Mikroprogrammzählers 39 zugegriffen, und stellt die notwendigen Steuersignale zum Veranlassen der notwendigen Vorgänge im ALU 38, im Registersatz 37 und im Speicher 40 bereit. Der Speicher 36 kann ein üblicher Speicher sein, in unserer bevorzugten Ausführungsform jedoch umfaßt dieser Mikroprogrammspeicher 36 vier 32-Bit-Speichermodule mit jeweils 256 Wörtern, die wie in Fig. 6 gezeigt angeordnet sind. Der Grund dieses Entwurfs liegt im Wunsch, Befehle variabler Länge zuzulassen, die wirkungsvoller gespeichert werden können, und gleichzeitig parallelen Zugriff auf die Befehle variabler Länge zuzulassen.
- Es ist der übliche Lösungsversuch zum Speichern von Befehlen variabler Länge in einem Programmspeicher, sequentielle Speicherstellen zu verwenden, die jeweils einige Abschnitte der Befehle enthalten. Wenn der Befehl benötigt wird, werden diese sequentiellen Speicherstellen ausgelesen und der Befehl wird aus den aufeinanderfolgenden Ausleseergebnissen "aufgebaut". Alternativ können Befehle in einem Speicher gespeichert werden, die ausreichende Bits besitzen, um den größten Befehl zu speichern, wobei die kleineren Befehle einige Bits nicht verwenden. Diese Anwendung verwendet offenbar den verfügbaren Speicher nicht effektiv und ist daher in VLSI-Anordnungen des ASE nicht wünschenswert. Im Gegensatz dazu wird der hypothetisch einzelne Programmspeicher, bei dem Befehle an sequentiellen oder aufeinanderfolgenden Speicherstellen gespeichert sind, in vier Module geteilt, die zu den Adressen korrespondieren, die Vielfache von vier (des hypothetischen Speichers) sind mit jeweils einem Offset von 0, 1, 2 bzw. 3. Folglich wird in Fig. 6 ein erster Befehl von beispielsweise drei 32-Bit- Reihen in der Speicherstelle 0 der Module 41, 42 und 43 gespeichert. Der nächste Befehl aus beispielsweise zwei 32- Bit-Reihen wird in der Speicherstelle 0 des Moduls 44 und in der Speicherstelle 1 des Moduls 41 gespeichert etc. Die tatsächliche Adresse (des hypothetischen Speichers) ist im Adressregister 45 vorhanden und die zwei niederwertigsten Bits werden verbunden, um die tatsächliche Startadresse des Befehls zu beschreiben, das heißt, die zwei niederwertigsten Bits beschreiben das Speichermodul, während die verbleibenden Bits die Speicherstelle in den Speichermodulen beschreiben. Demgemäß zeigt Fig. 6, daß das Register 45 am Ausgang einen Bus mit acht Verbindungen aufweist, wobei sechs Verbindungen zum Speichermodul führen (über die Addierschaltungen 49, 50 und 57) und die zwei niederwertigsten Bits zu den Dekodierschaltungen führen. Zum Bereitstellen der notwendigen Logik sind die Dekodierer 46, 47 und 48 für die zwei niederwertigsten Bits des Registers 45 verantwortlich und der Dekodierausgang wird mit den Addierern 49, 50 und 57 verbunden, die mit den Modulen 41, 42 bzw. 43 verbunden sind.
- Die in den Modulen 41 bis 44 gespeicherten Befehle enthalten Informationen, welche die Befehlslänge beschreiben. Demgemäß wird der Formatdekodierer 51 (mit dem relevanten Bit der Speichermodulausgänge und) mit den zwei niederwertigsten Bits des Registers 45 verbunden, um die Befehlslänge festzustellen. Diese Information wird dem Schalter 52 zum Inkrementieren der Schaltung 54 zugeführt. Die Schaltung 54 ist ebenso für den Registerausgang 45 verantwortlich. In Verbindung mit den zwei niederwertigsten Bits des Registers 45 setzt der Schalter 52 die Ausgänge der Speichermodule auf die vier Ausgänge, wie benötigt, um ein einziges paralleles Befehlswort (128 Bit Länge) zu bilden. Um in den nicht verwendeten Bits eine logische Ziffer "0" am Ausgang zu erzeugen, wenn kurze Befehle vorhanden sind, wird gezeigt, daß der Schalter 52 eine 0 am Eingang führt. Um zuletzt den Speicherzugriff durch andere Möglichkeiten als den inkrementierenden Vorgang zuzulassen, wie etwa wenn der Speicher mit Befehlen geladen wird, oder wenn ein "Zweig"- Befehl ausgeführt wird, umfaßt Fig. 6 einen Multiplexer 84, der zwischen der inkrementierenden Schaltung 54 und dem Register 45 angeordnet ist. Der Multiplexer 84 ist auch für ankommende Signale der Leitungen 55, 56, 58 und 59 verantwortlich.
- Die Mikroprogramm-Adressen-Steuerlogik 39 (Fig. 5) umfaßt einen Logikblock 60 für nichtprogrammierte Programmsprünge (trap) bzw. Trap-Logikblock 60 und einen Zweig-Logikblock 70. Diese sind für den Bus 35 verantwortlich und werden verbunden, um den Leitungen 55 und 56 Signale bereitzustellen, die den in Fig. 6 gezeigten Multiplexer des Mikroprogrammspeichers speisen. Der Logikblock für nichtprogrammierte Programmsprünge wird in Fig. 7 gezeigt.
- Bei vielen Anwendungen kann es wünschenswert sein, den Zustand des Prozessors 33 zu testen und verschiedene Vorgänge auf der Grundlage des Prozessorzustandes durchzuführen. Diese Tests können an verschiedenen Speicherstellen durchgeführt werden, wie etwa im Registersatz, in der ALU und im Speicher- Steuerblock. An jedem beteiligten Punkt wird ein Komparator, ein Wertregister und ein Adressregister für nichtprogrammierte Programmsprünge oder Traps im Prozessor 33 bereitgestellt (z. B. 61, 62 und 63). Viele dieser Sätze können im Prozessor 33 bereitgestellt werden, aus Gründen der Einfachheit zeigt Fig. 7 lediglich zwei Sätze. Der Komparator vergleicht überwachte Daten bis zu dem Wert, der im Wertregister gespeichert ist. Jeder Komparator erzeugt eine "JA/NEIN"-Antwort und dessen Ausgang führt zur Kontrolleinheit 85 für nichtprogrammierte Programmsprünge. Die Einheit 85 betrachtet jede Antwort und fällt eine Entscheidung, ob ein Vorgang durchgeführt oder die Verarbeitung weiter ununterbrochen bleibt. Ein typischer Vorgang ist das Belegen des Adressregisters für nichtprogrammierte Programmsprünge am Mikroprogrammspeicher mit einem Wert. Die Einheit 85 ist für das Ausgangssignal des Komparators (ausschließlich der Komparatoren 61 und 64) und für den Wert in den Adressregistern für nichtprogrammierte Programmsprünge (ausschließlich der Register 63 und 66) verantwortlich. Der nichtprogrammierte bzw. nicht bedingte Programmsprung ermöglicht und der Maskenlogikblock enthält ein festes Prioritätsziel für die verschiedenen Komparatorsignale und enthält zusätzlich ein programmierbares Maskenregister (vom Bus 35 geladen), das die Identität der Komparatoren enthält, die als aktiv zugelassen sind. Die nicht aktiven Komparatoren fallen nicht unter die Maske und werden von der Einheit für nichtprogrammierte Programmsprünge nicht berücksichtigt. Auf der Grundlage der aktiven Maskierung und der festen Priorität bezeichnet der Block 85 den nichtprogrammierten Programmsprung der höchsten Priorität, auf den geantwortet werden soll und auf der Grundlage dieser Bezeichnung, wenn vorhanden, wird der Wert des geeigneten Adressregisters für nichtprogrammierte Programmsprünge zur Leitung 55 zusammen mit einem Signal der Leitung 56, das den Multiplexer 84 steuert, geleitet.
- Der Zweig-Logikblock 70 bewirkt, daß eine Zweigadresse, die im aktuell durchgeführten Mikrobefehl bezeichnet ist, über die Leitung 58 (zusammen mit einem Steuersignal der Leitung 59) zum Multiplexer 54 übermittelt zu werden, vorausgesetzt, daß jede ALU-Bedingung (wie etwa, daß das Ergebnis der ALU-Operation positiv ist), die im Mikrobefehl bezeichnet ist, am Ausgang der ALU erfüllt ist. Während des Auftretens der bestimmten Bedingung speist der Multiplexer 84 das Adressregister 45 mit dieser Zweigadresse und nicht mit der Erhöhung der alten Adresse, bis ein nichtprogrammierter Programmsprung durch den Block 60 erkannt wird. Die Einzelheiten des Zweig-Logikblocks sind absolut üblich und werden daher hierbei nicht detailliert beschrieben.
- Der Registersatz 37 umfaßt eine Registerauswahl, die zum Speichern verschiedener Übergangswerte der ALU und des Speichers verwendet werden. Beispielsweise umfassen Schaltungen Register 37, die Musterübereinstimmungen durchführen, durch Speichern eines passenden Musters in den Registern und Vergleichen der gespeicherten Werte mit den aus dem Speicher 40 der ALU 38 erhaltenen Werte.
- Eine Musterübereinstimmung wird durch Verwenden der nachfolgend beschriebenen Fähigkeit für nichtprogrammierte Programmsprünge bewirkt. Einige Register enthalten Werte, die während einer Musterübereinstimmung mit aktuellen Zeichen verglichen werden. Die Register enthalten Werte zum übereinstimmen, wie etwa: "Stern", welcher der KLEEN- Sternoperator ist (wild card), "neue Zeile", welcher das Zeichen für eine neue Zeile ist, "Dateiende (end of file)", welcher das Ende der Datei bedeutet etc. Bei jedem Durchlauf wird ein Zeichen gelesen und mit einem Zeichen des Musterspeichers verglichen. Wenn das aktuelle Zeichen mit einem der speziellen Werte übereinstimmt, wird ein nichtprogrammierter Programmsprung erzeugt und die geeignete Adresse übernommen. Wenn der Vergleich erfolgreich ist, wird der Musterindex erhöht. Wenn das Zeichen nicht mit dem Musterzeichen übereinstimmt, wird die Speicheradresse erhöht. Eine nicht erfolgreiche Übereinstimmung kann bewirken, daß der Musterindex zum Anfang des Musters zurückgesetzt wird und der Musterspeicher erneut geladen wird.
- Die in Fig. 8 gezeigte Speichersteuerung 27 besteht aus zwei Adressregistern 81 und 82, einem Erhöhungsregister 83 und zwei Offset-Registern 86 und 87. Die Speichersteuerungseinheit speist eine Adresse in den Speicher 40. Diese Adresse wird aus der Summe des ausgewählten Adressregisters und des gewählten Offsets berechnet. Offsets rühren entweder vom Offset-Register oder vom aktuellen Mikrobefehl her. Das Ergebnis des Auslesens aus einem Speicher wird auf den Bus 35 gelegt und kann in jedem Register 37 erfaßt werden. Die Quelle des Einschreibens in einen Speicher kann in ähnlicher Weise jedes Register 37 über den Bus 35 sein. Jedes Speicheradressregister 86 und 87 kann durch die im aktuellen Mikrobefehl beschriebene Summe erhöht oder verringert werden. Diese Summe kann 0, 1, 4 oder der Wert des erhöhten Registers 83 sein.
- Die Arithmetisch-Logische Einheit kann einen üblichen Aufbau aufweisen und wird daher nicht detailliert beschrieben.
- Die nachfolgend kurz beschriebenen Einzelheiten verwenden den vorstehend beschriebenen Aufbau im Zusammenhang mit der Erfindung.
- Bei Betrachtung der vorstehend beschrieben Stack- Datenstrukturen ist leicht ersichtlich, daß zwei Hauptbefehle zum Bearbeiten eines Stacks benötigt werden, ein Push (Aufschieben), der ein Element zur obersten Stelle des Stacks addiert und ein Pop (Abheben), der das oberste Element vom Stack entfernt. Zwei nachrangige Befehle, der eine zum Erzeugen und Initialisieren eines neues Stacks und der andere zum Entfernen eines bestehenden Stacks, werden ebenso benötigt.
- Bei Verwenden des Speichersystems muß zuerst eine oder müssen mehrere ASEs ermittelt werden, die aktuell nicht für andere Aufgaben verwendet werden. Danach muß der Mikrocode zum Verarbeiten der gewünschten Befehle heruntergeladen werden. Der Stack-Zeiger wird so gerichtet, daß dieser auf den ersten verfügbaren Speicherstelle zeigt, welche als unterstes Fach des Stacks betrachtet wird. Die Größe jedes Stack-Elementes wird genauso in ein ASE heruntergeladen, obgleich diese Information auch im Mikrocodeprogramm fest verdrahtet sein kann. Nachdem das Herunterladen fertiggestellt ist, nehmen die ASEs den Zustand "Annahme des Befehls" (accept commands) an. In diesem Zustand empfangen diese die Befehle zum Bearbeiten des Stacks, einschließlich: Push, Pop und Entfernen (delete).
- Ein ASE kann als "Listenanfang" bezeichnet werden, wobei alle Befehle an diesen übertragen werden. Ein anderes ASE kann als Listenende bezeichnet werden. Jedes ASE kennt die Identität des vorangehenden ASE sowie die Identität des nachfolgenden ASE der ausgewählten Gruppe der ASEs, mit Ausnahme des Listenanfangs, welches keinen Vorgänger, und des Listenendes, welches keinen Nachfolger hat. Das Listenanfang- ASE umfaßt anfänglich den aktuellen Stack-Zeiger. Im Falle eines Stack-Überlaufes, d. h. wenn der Stack über einen Punkt wächst, bei dem zwei oder mehr ASEs zum Speichern des Stacks benötigt werden, wird einer der Nachfolger der Listenanfang- ASEs als Verfüger des Stack-Zeigers bestimmt.
- Wenn ein ASE eine Anforderung zur Durchführung eines "Push" empfängt, geschieht das Folgende. Zuerst überprüft das ASE, ob es über den aktuellen Stack-Zeiger verfügt, wenn nicht, wird die Anforderung an das nachfolgende ASE weitergegeben. Gegebenenfalls kommt der Befehl beim ASE an, das über den aktuellen Stack-Zeiger verfügt. Dann startet die tatsächliche Verarbeitung. Das aufzuschiebende (push) Element wird vom Netz 19 auf den Stack übertragen. Dann wird der Stack-Zeiger um die Größe des Elementes erhöht, so daß dieser nun wiederum auf die nächste verfügbare Speicherstelle zeigt. Zuletzt wird die Adresse des Stack-Zeigers geprüft, ob ausreichender Speicher zum Aufschieben weiterer Elemente vorhanden ist. Wenn dies zutrifft, erwidert das ASE eine Nachricht erfolgreichen Fertigstellens zum Host. Wenn kein ausreichender Speicher vorhanden ist, überprüft das ASE, ob dieses einen Nachfolger aufweist. Wenn kein Nachfolger vorhanden ist, sendet das ASE eine Nachricht "Benötige Mehr Speicher" zum Host. Wenn ein Nachfolger vorhanden ist, überträgt das ASE die Verfügung über den Stack-Zeiger und sendet eine Nachricht des erfolgreichen Fertigstellens zum Host. In jedem Fall kehrt das ASE zum Befehlsempfangszustand, bis zur Fertigstellung des Befehls zurück.
- Wenn ein ASE eine Anforderung zur Durchführung eines "Pop" empfängt, geschieht das Folgende. Zuerst überprüft das ASE, ob dieses der Besitzer des aktuellen Stack-Zeigers ist, wenn nicht, wird die Anforderung zum Vorgänger-ASE weitergegeben. Gegebenenfalls wird der Befehl vom ASE empfangen, das den aktuellen Stack-Zeiger umfaßt. Danach startet die eigentliche Verarbeitung. Der Stack-Zeiger wird so herabgesetzt, daß er auf das oberste Element des Stacks zeigt. Wenn dieses Herabsetzen bewirkt, daß der Stack-Zeiger unter das unterste Fach des Stacks gelangt, wird die Anforderung zurück zum Vorgänger gegeben, wenn vorhanden.
- Wenn dieser nicht vorhanden ist, sendet das ASE die Fehlernachricht Bereichsunterschreitung zum Host. Zuletzt wird der Gegenstand, der abgehoben werden soll, vom Stack ins Netzwerk 19 und danach zum Host übertragen. In jedem Fall kehrt das ASE zum Zustand des Befehlsempfangs zurück bis der Befehl fertiggestellt ist.
- Das Streichen eines bestehenden Stacks gestattet die Rückforderung der zugeordneten ASEs. Dies umfaßt einfach das Kennzeichnen jedes ASEs als unbelegt.
Claims (9)
1. Vorrichtung zum Speichern von Informationen für
einen Hostprozessor (10, 11), wobei die Vorrichtung ein
Nachrichtennetz (67, 68, 69, 24, 25, 26), eine Vielzahl
von Kodiereinrichtungen (33), die mit dem
Nachrichtennetz verbunden sind, und
Speichereinrichtungen (31), die jeder Kodiereinrichtung
zugeordnet sind, umfaßt,
welche dadurch gekennzeichnet ist, daß
das Nachrichtennetz Daten,
Datenstrukturinformationen und Befehlsdefinitionsinformationen zum
Definieren der Befehle, die in den Datenstrukturen
ausgeführt werden sollen, überträgt, und
die Kodiereinrichtungen programmierbar sind und
umfassen:
a) eine Einrichtung zum Übertragen von Daten zu
und von dem Nachrichtennetz,
b) eine Einrichtung zum Empfangen und Verarbeiten der
Datenstrukturinformationen und der
Befehlsdefinitionsinformationen und
c) eine Einrichtung zum Empfangen und Verarbeiten der
Befehlsausführungsinformationen, so daß der
Hostprozessor durch einfaches Bereitstellen von Daten
und/oder von Befehlsausführungsinformationen mit der
Vorrichtung in Wechselwirkung steht, damit ein
definierter Befehl von der Vorrichtung ausgeführt wird.
2. Vorrichtung gemäß Anspruch 1,
dadurch gekennzeichnet, daß jede Kodiereinrichtung
wenigstens zwei Eingänge (28, 29) umfaßt, die mit dem
Nachrichtennetz verbunden sind, und die von den
Kodiereinrichtungen durchgeführte Nachrichtenübertragung
das Vermitteln von Informationen über das
Nachrichtennetz umfaßt.
3. Vorrichtung gemäß Anspruch 1,
dadurch gekennzeichnet, daß sich die
Befehlsausführungsinformationen auf ausgewählte
Datenstrukturverarbeitungen beziehen.
4. Vorrichtung gemäß Anspruch 1,
dadurch gekennzeichnet, daß das Nachrichtennetz eine
Vielzahl von Eingängen (28, 29) zum Verbinden mit einem
Host umfaßt.
5. Vorrichtung gemäß Anspruch 1,
dadurch gekennzeichnet, daß das Nachrichtennetz eine
Vielzahl von Anschlüssen (28, 29) und ein Host-
Schnittstellennetz (19) umfaßt, das mit der Vielzahl von
Anschlüssen verbunden ist.
6. Vorrichtung gemäß Anspruch 1,
dadurch gekennzeichnet, daß der Kodierer eine
Musterervergleichshardware mit folgenden Merkmalen
umfaßt:
ein Musterspeicher (37) zum Speichern der zu
vergleichenden Muster,
eine Quelle (40) von Merkmalen zum Vergleichen mit
den Mustern, und
einen Vergleicher (38), der die Inhalte des
Musterspeichers mit der Quelle der Merkmale vergleicht.
7. Vorrichtung gemäß Anspruch 1,
dadurch gekennzeichnet, daß die Kodiereinrichtung einen
Speicher (36) zum Speichern von
Datenverarbeitungsprogrammen umfaßt.
8. Vorrichtung gemäß Anspruch 7, gekennzeichnet durch
eine Verarbeitungseinrichtung (39) zum Verzweigen der
Kodiereinrichtung (33) zu einem ausgewählten Ort in
dessen Speicher (36), bis zum Auftreten
bestimmter Bedingungen in der Kodiereinrichtung.
9. Vorrichtung gemäß Anspruch 7,
dadurch gekennzeichnet, daß
der Speicher (36) Befehlsinformation mit variabler
Breite speichert,
der Speicher (36) in Bänke (41 bis 44) aufgeteilt
ist,
jede Speicherbank bei einem "Lese"-befehl ein Wort
erzeugt, und
die Ausgangssignale der Speicherbänke gemultiplext
werden, um einen Befehl für die Kodiereinrichtung zu
bilden.
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 |
|---|---|
| DE68929080D1 DE68929080D1 (de) | 1999-11-04 |
| DE68929080T2 true DE68929080T2 (de) | 2000-05-25 |
Family
ID=22715870
Family Applications (2)
| 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 |
| DE68928759T Expired - Fee Related DE68928759T2 (de) | 1988-05-13 | 1989-05-04 | Rechner mit intelligentem Speichersystem und zugehöriges Verfahren |
Family Applications After (1)
| 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 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US5134711A (de) |
| EP (2) | EP0779584B1 (de) |
| JP (1) | JPH0229849A (de) |
| CA (1) | CA1326566C (de) |
| DE (2) | DE68929080T2 (de) |
Families Citing this family (20)
| 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. |
| EP0584783A3 (en) * | 1992-08-25 | 1994-06-22 | Texas Instruments Inc | Method and apparatus for improved processing |
| AU673069B2 (en) * | 1993-03-23 | 1996-10-24 | David Siu Fu Chung | Intelligent memory architecture |
| US5677864A (en) * | 1993-03-23 | 1997-10-14 | Chung; David Siu Fu | 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 | 株式会社ルネサステクノロジ | データ処理装置およびデータ処理方法 |
| US5901327A (en) * | 1996-05-28 | 1999-05-04 | Emc Corporation | Bundling of write data from channel commands in a command chain for transmission over a data link between data storage systems for remote data mirroring |
| US6052797A (en) * | 1996-05-28 | 2000-04-18 | Emc Corporation | Remotely mirrored data storage system with a count indicative of data consistency |
| 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 |
| AU2001258545A1 (en) * | 2000-05-19 | 2001-11-26 | Neale Bremner Smith | 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)
| 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 | コンピュータ及びその動作方法 |
-
1988
- 1988-05-13 US US07/193,987 patent/US5134711A/en not_active Expired - Lifetime
-
1989
- 1989-05-04 DE DE68929080T patent/DE68929080T2/de not_active Expired - Fee Related
- 1989-05-04 EP EP97101575A patent/EP0779584B1/de not_active Expired - Lifetime
- 1989-05-04 EP EP89304503A patent/EP0341905B1/de not_active Expired - Lifetime
- 1989-05-04 DE DE68928759T patent/DE68928759T2/de not_active Expired - Fee Related
- 1989-05-11 CA CA000599426A patent/CA1326566C/en not_active Expired - Fee Related
- 1989-05-12 JP JP1117629A patent/JPH0229849A/ja active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0229849A (ja) | 1990-01-31 |
| DE68928759T2 (de) | 1998-12-24 |
| EP0341905B1 (de) | 1998-07-29 |
| DE68928759D1 (de) | 1998-09-03 |
| EP0779584A1 (de) | 1997-06-18 |
| CA1326566C (en) | 1994-01-25 |
| EP0341905A3 (de) | 1992-01-22 |
| EP0341905A2 (de) | 1989-11-15 |
| EP0779584B1 (de) | 1999-09-29 |
| US5134711A (en) | 1992-07-28 |
| DE68929080D1 (de) | 1999-11-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE68929080T2 (de) | Anordnung zum Speichern von Informationen für einen Datenanbieterprozessor | |
| DE2209282C3 (de) | Datenverarbeitungsanlage | |
| EP1146432B1 (de) | Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit | |
| DE69114333T2 (de) | Rechner mit der Fähigkeit mehrere Befehle gleichzeitig auszuführen. | |
| DE69730276T2 (de) | Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes | |
| DE69622305T2 (de) | Verfahren und Gerät für einen optimierenden Kompiler | |
| DE2364408C3 (de) | Schaltungsanordnung zur Adressierung der Speicherplätze eines aus mehreren Chips bestehenden Speichers | |
| DE2423194C2 (de) | Vorrichtung zum Berechnen einer absoluten Hauptspeicheradresse in einer Datenverarbeitungsanlage | |
| DE2350884C2 (de) | Adreßumsetzungseinheit | |
| DE3650532T2 (de) | Speicher mit programmierbarem Zugang | |
| DE1774296B2 (de) | Restruktuierbare Steuereinheit für elektronische Digitalrechner | |
| DE2411963B2 (de) | Datenverarbeitungsanlage | |
| DE2750721A1 (de) | Ein/ausgabe-system | |
| DE2054830C3 (de) | Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge | |
| DE2755616A1 (de) | Asymmetrischer multiprozessor | |
| DE1774052B1 (de) | Rechner | |
| DE2248296A1 (de) | Programmsteuereinrichtung | |
| DE3688738T2 (de) | Musteradressierbarer speicher. | |
| DE2054947A1 (de) | Adressenvorbereitungseinnchtung und verfahren und Speicherzugnffan forderungseinnchtung fur ein Infor mationsver arbeitungssystem | |
| DE2758829A1 (de) | Multiprozessor-datenverarbeitungssystem | |
| EP0062141B1 (de) | Schaltungsanordnung zur Eingabe von Steuerbefehlen in ein Mikrocomputersystem | |
| DE3518818A1 (de) | Datenverarbeitungsvorrichtung und verfahren und vorrichtung zur umsetzung von datenelementen | |
| DE2538978C2 (de) | ||
| DE3587517T2 (de) | Paralleler Registertransfermechanismus für Reduktionsprozessor zur Durchführung von Programmen die als binäre Graphen gespeichert sind und die Anwendungssprachenkodes ohne Variablen verwenden. | |
| DE2548720A1 (de) | Mikroprogramm-steuerwerk |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition | ||
| 8339 | Ceased/non-payment of the annual fee |