DE69620807T2 - Datenverarbeitungsvorrichtung zum Vorziehen einer Datenstruktur aus dem Hauptspeicher oder seinem Cachespeicher - Google Patents
Datenverarbeitungsvorrichtung zum Vorziehen einer Datenstruktur aus dem Hauptspeicher oder seinem CachespeicherInfo
- Publication number
- DE69620807T2 DE69620807T2 DE69620807T DE69620807T DE69620807T2 DE 69620807 T2 DE69620807 T2 DE 69620807T2 DE 69620807 T DE69620807 T DE 69620807T DE 69620807 T DE69620807 T DE 69620807T DE 69620807 T2 DE69620807 T2 DE 69620807T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- prefetch
- read
- request
- processor
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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/30181—Instruction operation extension or modification
-
- 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/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Memory System (AREA)
Description
- Die vorliegende Erfindung betrifft eine Informationsverarbeitungsvorrichtung zum Vorauslesen einer Gruppe von bestimmte Strukturen aufweisenden Daten, wie Felddaten usw., aus einem Speicher in der Art eines Hauptspeichers oder dergleichen.
- Eine herkömmliche Hochleistungs-Informationsverarbeitungsvorrichtung weist normalerweise eine Befehlsverarbeitungseinrichtung, einen Cache-Speicher und einen Speicher auf. Die Informationsverarbeitungsvorrichtung veranlaßt, daß der Speicher ein Programm und Daten speichert, und verarbeitet die im Speicher enthaltenen Daten entsprechend jedem im Programm beschriebenen Befehl. Der Cache-Speicher ist eine Speichereinrichtung, auf die schnell von der Befehlsverarbeitungseinrichtung zugegriffen werden kann und die eine relativ geringe Kapazität aufweist und in der einige der Programme und Daten vorübergehend gespeichert werden. Zum Ausführen des Befehls erforderliche Daten werden aus dem Speicher gelesen. Ein Datenblock mit den Daten wird jedoch gleichzeitig auf eine den Cache-Speicher bildende Leitung kopiert. Wenn anschließend ein Zugriff oder eine Bezugnahme auf die in dem Bloek enthaltenen Daten festgelegt wird, greift die Leitung des Cache-Speichers auf die Daten zu oder nimmt darauf Bezug. Das Übertragen des Datenblocks vom Speicher zur Cache-Leitung wird als Block- oder Leitungsübertragung bezeichnet. Wenn bei der Befehlsausführung keine Daten im Cache-Speicher existieren, wird dies als Cache-Fehlgriff bezeichnet. Beim Auftreten des Cache-Fehlgriffs wird die Leitungsübertragung ausgeführt. Wenn bei der herkömmlichen Informationsverarbeitungsvorrichtung die Leitungsübertragung beim Ausführen eines Befehls stattfindet, wird die Ausführung des Befehls in einen Wartezustand versetzt, bis die Leitungsübertragung abgeschlossen ist. Wenn daher der Cache-Fehlgriff häufig stattfindet, tritt das Problem auf, daß die zum Ausführen des Programms erforderliche Zeit wegen des mit der Leitungsübertragung verbundenen Wartens ansteigt und die Verarbeitungsleistung der Informationsverarbeitungsvorrichtung verringert wird. Insbesondere bei technischen Berechnungen zum Handhaben großer Datenmengen und zur Datenbankverarbeitung werden die Bedingungen schwerwiegender.
- Andererseits wurde vor kurzem für ein Programm im voraus ein Versuch unternommen, eine Leistungsverringerung infolge der Leitungsübertragung zu verhindern, indem ein spezieller Befehl zum Festlegen eines Vorgreifens auf Daten vor einem Befehl, bei dem die Möglichkeit eines Cache-Fehlgriffs besteht, ausgeführt wurde. Das Vorgreifen auf Daten wird auch als Datenvorauslesen oder einfach Vorauslesen bezeichnet. Ein Speicherzugriffsbefehl (nachfolgend als Lade-GR0-Vorauslesebefehl bezeichnet) für eine Universalregisternummer 0 wird als ein Mittel zum Verwirklichen des Vorauslesens in einem Mikroprozessor PA7100 von Hewlett-Packard Company, USA (nachfolgend gelegentlich als erster Stand der Technik bezeichnet) definiert. Der Lade-GR0-Vorauslesebefehl liest an einer festgelegten Operandenadresse vorhandene Daten aus, verwirft jedoch das Leseergebnis nach dem Auslesen. Wenn während dieser Operation ein Cache-Fehlgriff auftritt, wird die Leitungsübertragung ausgeführt, ohne auf den entsprechenden Befehl zu warten. Weil dann die Daten im Cache-Speicher gesichert sind, wenn der Befehl zum Zugriff auf die Daten später ausgeführt wird, kann die Leistungsverschlechterung verhindert werden.
- Wenn jedoch der Vorauslesebefehl verwendet wird, treten vier weiter unten zu beschreibende Probleme auf. Das erste Problem besteht darin, daß es dann, wenn beispielsweise ein eine Schleifenstruktur aufweisendes Programm, das auf Vektordaten nacheinander zugreift oder sich darauf bezieht, bei Verwendung des Vorauslesens ausgeführt wird, erforderlich ist, zwei Befehle unter Einschluß eines Speicherzugriffsbefehls zum Laden von Daten in ein einen Operanden speicherndes Register und des Vorauslesebefehls hinsichtlich eines Vektorelements auszuführen, wodurch eine entsprechende Erhöhung der Befehlsverarbeitungszeit bewirkt wird. Unter der Annahme, daß Codes ausgeführt werden, die durch Hinzufügen des Vorauslesebefehls zu einem Programm, bei dem große Mengen von Daten in einem Cache-Speicher gesichert sind, erhalten werden, besteht die Möglichkeit, daß die Befehlsverarbeitungszeit im Vergleich zu einem Programm, zu dem der Vorauslesebefehl nicht hinzugefügt wurde, ansteigt und die Leistungsfähigkeit dagegen verschlechtert wird.
- Das zweite Problem besteht darin, daß die Ausführung des eigentlichen Vorauslesebefehls dann, wenn die Ausführung des Programms aus gewissen Gründen in einen Wartezustand versetzt wird, seit der Vorauslesebefehl im Programm beschrieben ist, auch in einen Wartezustand versetzt wird, wodurch die Wirkung des Vorauslesens, daß das Datenlesen so früh wie möglich beginnt, vermindert wird. Um dies zu vermeiden, muß der Vorauslesebefehl früher als der ihm entsprechende Speicherzugriffsbefehl ausgegeben werden. Hierdurch tritt jedoch das Problem auf, daß die Struktur das entsprechenden Programms komplex wird und die Größe des Programms zunimmt.
- Das dritte Problem besteht darin, daß weil Großvektordaten gemäß dem Lade-GR0- Vorauslesebefehl der Reihe nach in einen Cache-Speicher geladen oder aufgenommen werden, andere im Cache-Speicher bereits gespeicherte Daten daraus ausgestoßen werden, woraus sich die Möglichkeit ergibt, daß Cache-Fehlgriffe zunehmen und folglich die Leistungsfähigkeit der Informationsverarbeitungsvorrichtung verschlechtert wird.
- Das vierte Problem besteht darin, daß selbst Daten, auf die nicht zugegriffen wurde, gelesen werden, wenn der Datenzugriff auf den Zugriff nicht sequentieller Vektordaten angewendet wird, weil beim Lade-GR0-Vorauslesen ein Datenzugriff in Leitungseinheiten des Cache-Speichers ausgeführt wird, was zu einer Leistungsverringerung führt.
- Als eine andere bekannte Technik wurde eine Technik zum Bereitstellen einer Vorausleseeinheit vorgeschlagen, die von einem Prozessor anfänglich gesetzt wird und nachfolgend Daten asynchron mit dem Prozessor ausliest. Es sei beispielsweise auf Nakazato u. a., "Architecture and evaluation of OCHANOMIZ-1", Research Report des Information Processing Institute of Japan, Computer Architecture, Nr. 101-8, S. 57-64, 20. August 1993 verwiesen. Die in der Literatur beschriebene Technik kann als eine zweite bekannte Technik bezeichnet werden. Eine Technik zum Vorauslesen von Felddaten durch jeden Prozessor in einem mehrere Prozessoren aufweisenden System wurde im Stand der Technik offenbart. Insbesondere war eine Technik offenbart, bei der Vorauslesesteuereinheiten für die Prozessoren mehrere Elemente in Anordnungsdaten entsprechend Adressen, Schritten, Längen der vorauszulesenden Anordnungsdaten, die von den jeweiligen Prozessoren festgelegt werden, vorauslesen, und bei der die Elemente jeweils in den Prozessoren entsprechenden Vorauslesepuffern gespeichert werden. Ein anderer Bericht über dieselbe Vorrichtung ist in "General purpose fine-grained parallel processor: OCHANOMIZU-1- Architecture and Performance Evaluation" von Totsuka u. a., in Proc. of Parallel processing symposium JSPP '94, S. 70-83, Mai 1994 des Information processing Institute of Japan beschrieben.
- Gemäß der zweiten bekannten Technik sind die in Zusammenhang mit der ersten bekannten Technik beschriebenen Probleme verringert. Die folgenden Probleme treten jedoch beim Verwirklichen der zweiten bekannten Technik auf.
- Bei der zweiten bekannten Technik ist offenbart, daß ein Cache-Speicher zum Sichern von in einem Hauptspeicher gespeicherten Daten jeweils einem Prozessor entspricht. Es wird jedoch nicht beschrieben, wie der Cache-Speicher beim Vorauslesen von Daten durch die Vorausleseeinheit zu verwenden ist.
- Weiterhin ist bei der zweiten bekannten Technik eine Technik zum Vorauslesen mehrerer Dateneinheiten, deren Adressen einfach wie bei den mehreren Dateneinheiten in dem oben angegeben Feld bei vorbestimmten Adressenintervallen voneinander getrennt sind, offenbart. Daten in der Art von Elementen eines indexierten Vektors, deren Adressen durch eine andere Gruppe von Daten bestimmt sind, sind jedoch auch in einer von einem Programm verarbeiteten Gruppe von Daten vorhanden.
- Bei der zweiten bekannten Technik treten verschiedene andere Probleme auf, die zu lösen sind, um die zweite bekannte Technik praktisch anzuwenden.
- Eine Informationsverarbeitungsvorrichtung, die der zuerst erwähnten bekannten Technik in der Hinsicht ähnelt, daß ein Vorauslesebefehl von einem Prozessor verwendet wird, um Daten vorab aus einem Hauptspeicher in einen Cache-Speicher zu laden, ist in DE-A-43 35 475 offenbart. Es ist in diesem Dokument überdies offenbart, daß zwischen dem Hauptspeicher und dem Cache-Speicher ein Puffer bereitgestellt ist, um im Cache- Speicher zu speichernde Daten einschließlich vorauszulesender Daten vorübergehend zu sichern, damit andere Cache-Zugriffe ohne unnötiges Blockieren des Cache-Speichers während des Vorauslesens von Daten aus dem Hauptspeicher ermöglicht werden. Es ist eine Ausweichleitung vorgesehen, um bei Bedarf Daten unter Umgehung des Cache-Speichers dem Prozessor direkt aus dem Puffer zuzuführen. Es sind keine Mittel zum Handhaben komplizierterer Datenstrukturen, wie Vektoren oder Felder, vorgesehen.
- Ein System, das einen Hauptspeicher und einen Cache-Speicher, die ursprünglich für die Verwendung mit einem Skalarprozessor ausgelegt sind, verwendet auch zusammen mit einem Vektorprozessor ist in W- 89/06397 offenbart. Dieses System weist einen Vorausleseanforderungsgenerator auf, der ansprechend auf einen Vektorladebefehl an den Vektorprozessor den Cache-Speicher anweist, aus dem Hauptspeicher Blöcke vorauszulesen, die die Elemente eines zu ladenden Vektors enthalten.
- Eine Aufgabe der Erfindung besteht darin, eine zum schnellen Vorauslesen fähige Informationsverarbeitungsvorrichtung bereitzustellen.
- Diese Aufgabe wird durch die in Anspruch 1 dargelegte Vorrichtung gelöst. Die Vorrichtung weist Puffer zum Sichern vorausgelesener Daten auf und beschleunigt das Vorauslesen durch Verwenden eines Cache-Speichers und durch Vorauslesen aus dem Cache-Speicher oder aus einer darunter liegenden Speichereinrichtung, wie in Anspruch 1 dargelegt ist.
- Die Unteransprüche beziehen sich auf bevorzugte Ausführungsformen der Erfindung.
- Eine Ausführungsform der vorliegenden Erfindung ist eine zum Vorauslesen mehrerer Gruppen von Daten fähige Informationsverarbeitungsvorrichtung.
- Eine weitere Ausführungsform der vorliegenden Erfindung ist eine Informationsverarbeitungsvorrichtung, die zum Vorauslesen einer Gruppe von einen indexierten Vektor bildenden Daten fähig ist.
- Gemäß einer ersten Ausführungsform ist zum Lösen der oben angegebenen Aufgaben eine Vorauslesedaten-Anforderungsschaltung zum der Reihe nach erfolgenden Ausgeben einer Gruppe von Leseanforderungen hinsichtlich einer Gruppe von Daten an eine Cache-Steuerschaltung zum Steuern der Zugriffe auf einen Cache-Speicher und zum der Reihe nach erfolgenden Speichern einer ansprechend auf die Gruppe von Leseanforderungen zugeführten Gruppe von Daten in einer Gruppe von der Reihe nach angeordneten Puffern, die in einer Schaltung zum Vorauslesen der von einem Prozessor angeforderten Gruppe vorauszulesender Daten bereitgestellt sind, als eine Schaltung bereitgestellt, die aktiviert wird, um die Gruppe von Daten vorauszulesen.
- Weiterhin umfaßt die Cache-Steuereinheit als beim Vorauslesen der Gruppe von Daten aktivierte Schaltungen:
- eine Schaltung zum Übertragen beliebiger aus der Gruppe von Daten, die durch die Gruppe von Leseanforderungen festgelegt sind, vom Cache-Speicher zur Vorausleseschaltung, wenn beliebige aus der Gruppe von Daten im Cache-Speicher gesichert sind, und
- eine Vorauslesedaten-Leseanforderungsschaltung zum Auffordern der Speichersteuerschaltung, mindestens durch beliebige aus der Gruppe von Vorauslesedaten-Leseanforderungen festgelegte Daten aus der Speichereinrichtung zu lesen, wenn die festgelegten Daten nicht im Cache-Speicher gesichert sind.
- Die Speichereinrichtungs-Steuerschaltung weist eine Speichereinrichtungs-Zugritffsschaltung zum Zuführen von Daten, die durch eine von der Vorauslesedaten-Anforderungsschaltung ausgegebene Anforderung festgelegt sind, zur Vorausleseschaltung auf.
- Weiterhin umfaßt die Vorausleseschaltung als eine Schaltung, die aktiviert wird, wenn der Prozessor die Gruppe bereits vorausgelesener Daten verwendet: eine Vorauslesedaten-Zuführungsschaltung zum Erfassen, ob Daten, die durch die vom Prozessor ausgegebene Datenleseanforderung festgelegt sind, in der Gruppe von Puffern gesichert sind, und zum Übertragen der gesicherten Daten dann zum Prozessor, wenn die festgelegten Daten in der Gruppe von Puffern gesichert sind.
- Wenn also die Vorausleseschaltung beim Vorauslesen der Gruppe von Daten die im Cache-Speicher gesicherten Daten anfordert, können die Daten aus dem Cache-Speicher der Vorausleseschaltung zugeführt werden, wodurch ein schnelles Vorauslesen der Daten ermöglicht ist.
- Bei einer bevorzugteren Ausführungsform der vorliegenden Erfindung ist in der Vorausleseschaltung eine Datenübertragungs-Verhinderungsschaltung vorgesehen, die verhindert, daß die Cache-Steuerschaltung die festgelegten Daten vom Cache-Speicher zum Prozessor überträgt, wenn die festgelegten Daten in der Gruppe von Puffern gesichert sind.
- Gemäß einer zweiten Ausführungsform werden die gleichen Daten sowohl in einem Cache-Speicher als auch in einer Vorausleseschaltung gesichert. Wenn ein Prozessor jedoch vorausgelesene Daten später verwendet, führt die Vorausleseschaltung dem Prozessor die Daten zu, und die Verhinderungsschaltung verhindert, daß der Cache-Speicher ihm Daten zuführt. Dadurch kann verhindert werden, daß dieselben Daten dem Prozessor doppelt zugeführt werden. Weiterhin kann die Vorausleseschaltung richtig verwalten, ob die vorausgelesenen Daten in den Prozessor gelesen wurden oder nicht.
- Wenn bei einer anderen Ausführungsform der vorliegenden Erfindung beliebige aus der Gruppe von Daten, für die jeweils eine Datenvorausleseanforderung ausgegeben wurde, nicht im Cache-Speicher vorhanden sind, wird in der Cache-Steuerschaltung eine Schaltung bereitgestellt, die den Cache-Speicher auffordert, einen die Daten aufweisenden Block zu übertragen. Wenn daher andere zum Block gehörende Daten in der Gruppe vom Prozessor angeforderter Daten mehrfach vorhanden sind, kann das Vorauslesen anderer Daten schnell unter Verwendung der Daten im übertragenen Block ausgeführt werden. Es besteht jedoch auch die Möglichkeit, daß die Anzahl der gleichzeitig zum selben Block gehörenden Daten aus einer Anzahl von Daten, die eine Gruppe vorauszulesender Daten bilden, Null oder weniger beträgt. In diesem Fall treten das dritte und das vierte Problem auf, die bei der angesprochenen ersten bekannten Technik beschrieben wurden. Demgemäß ist bei der bevorzugteren Ausführungsform der vorliegenden Erfindung eine Schaltung vorgesehen, die abhängig von Informationen, die als einige der Datenvorausleseanforderungen durch den Prozessor festgelegt sind, steuert, ob die Blockübertragung durchzuführen ist.
- Bei der zweiten Ausführungsform ist im Prozessor ebenfalls eine Schaltung, die der Vorausleseschaltung mehrere Datenvorausleseanforderungen zum Festlegen von Nummern für zum Berechnen von Adressen einer Gruppe vorauszulesender Daten verwendete Basisregister als einige der Datenvorausleseanforderungen zuführt, vorgesehen, um das Vorauslesen mehrerer Gruppen von Daten zu ermöglichen.
- Die Vorausleseschaltung weist auf:
- mehrere Gruppen nacheinander angeordneter Puffer, die jeweils für eine Gruppe vorausgelesener Daten verwendet werden,
- eine auf jede von mehreren vom Prozessor ausgegebenen Datenvorausleseanforderungen ansprechende Schaltung zum Zuweisen einer Gruppe von Puffern innerhalb der mehreren Gruppen von Puffern,
- eine Schaltung, in der eine durch eine Datenvorausleseanforderung festgelegte Basisregisternummer, die jeder Gruppe von Puffern zugewiesen wurde, entsprechend jeder Gruppe von Puffern gespeichert wird, und
- eine Schaltung, in der eine durch eine Datenvorausleseanforderung festgelegte Basisregisternummer, die jeder Gruppe von Puffern zugewiesen wurde, gespeichert wird.
- Demgemäß werden die mehreren Gruppen von Puffern unterschiedlichen Basisregisternummern zugeordnet, die durch unterschiedliche Datenvorausleseanforderungen festgelegt sind.
- Weiterhin ist im Prozessor eine Schaltung vorgesehen, die eine durch den Befehl festgelegte Basisregisternummer als Teil der Datenleseanforderungen der Vorausleseschaltung zuführt, falls jede Datenleseanforderung ansprechend auf einen Datenlesebefehl, der das Lesen von Daten durch die Speichervorrichtung anfordert, der Vorausleseschaltung zugeführt wird.
- Die Vorausleseschaltung weist auf:
- eine auf eine vom Prozessor ausgegebene Datenleseanforderung ansprechende Schaltung zum Erkennen auf der Grundlage einer Basisregisternummer, die so gespeichert ist, daß sie jeder Gruppe von Puffern entspricht, ob eine Gruppe von Puffern existiert, die einer Datenvorausleseanforderung, die eine durch die Datenleseanforderung festgelegte Basisregisternummer festgelegt hat, zugewiesen ist, und
- eine Vorauslesedaten-Zuführungsschaltung zum Übertragen der in der Gruppe von Puffern gesicherten vorausgelesenen Daten zum Prozessor, falls eine Gruppe von Puffern, die einem durch die Datenleseanforderung festgelegten Basisregister zugewiesen sind, existiert.
- Nachdem also mehrere Gruppen von Daten vorausgelesen wurden und die vorausgelesenen Daten in der Vorausleseschaltung gesichert wurden, können die mehreren Gruppen von Puffern von unterschiedlichen Basisregisternummern, die durch unterschiedliche vom Prozessor ausgeführte Datenleseanforderungen festgelegt wurden, verwendet werden.
- Weiterhin ist gemäß einer dritten Ausführungsform in der Vorausleseschaltung eine Schaltung zum zunächst erfolgenden Vorauslesen einer anderen Datengruppe, die als ein Index für einen indexierten Vektor zum Vorauslesen einer Gruppe von den indexierten Vektor bildenden Daten verwendet wird, zum Sichern von dieser in einer Vorausleseschaltung und zum Vorauslesen der Gruppe von Daten unter Verwendung der anderen Datengruppe vorgesehen. Demgemäß kann der indexierte Vektor unter Verwendung der Vorausleseschaltung vorausgelesen werden.
- Fig. 1 zeigt eine Ansicht, in der die Gesamtkonfiguration einer Informationsverarbeitungsvorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt ist.
- Fig. 2 zeigt eine Ansicht, in der die Konfiguration einer bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten Vorausleseeinheit schematisch dargestellt ist.
- Fig. 3 zeigt eine Ansicht, in der die Konfiguration einer bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten Vorauslesestatus-Steuereinheit schematisch dargestellt ist.
- Fig. 4 zeigt eine Ansicht, in der die Konfiguration einer bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten Vorausleseanforderungs-Steuereinheit schematisch dargestellt ist.
- Fig. 5 zeigt eine Ansicht, in der die Konfiguration einer bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten Vorausleseadressen-Steuerschaltung schematisch dargestellt ist.
- Fig. 6 zeigt eine Ansicht, in der die Konfiguration einer bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten PDSR-Aktualisierungssteuerschaltung schematisch dargestellt ist.
- Fig. 7 zeigt eine Ansicht, in der die Konfiguration einer bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten Vorauslesedateneinheit schematisch dargestellt ist.
- Fig. 8 zeigt eine Ansicht, in der die Konfiguration einer bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten Vorauslesedaten-Lesesteuereinheit dargestellt ist.
- Fig. 9 zeigt eine Ansicht, in der die Konfiguration einer bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten Cache-Anforderungseinheit 101 schematisch dargestellt ist.
- Fig. 10 zeigt eine Ansicht, in der die Konfiguration einer bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten Cache-Speichereinheit 3 schematisch dargestellt ist.
- Fig. 11 zeigt eine Ansicht, in der die Konfiguration eines bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten Prozessors 2 schematisch dargestellt ist.
- Fig. 12 zeigt ein Zustandsübergangsdiagramm von bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten PDR-Elementen.
- Fig. 13Aa zeigt eine Struktur eines vorauszulesenden sequentiellen Vektors, der durch die in Fig. 1 dargestellte Informationsverarbeitungsvorrichtung erhalten wird.
- Fig. 13Ab zeigt ein Programm zum sequentiellen Zugriff auf den sequentiellen Vektor.
- Fig. 13Ac zeigt ein Programm zum schrittweisen Zugriff auf den sequentiellen Vektor.
- Fig. 13Ba zeigt eine Struktur eines vorauszulesenden indexierten Vektors, der durch die in Fig. 1 dargestellte Informationsverarbeitungsvorrichtung erhalten wird.
- Fig. 13Bb zeigt ein Programm zum Zugriff auf den indexierten Vektor.
- Fig. 13Ca zeigt eine Struktur eines Felds vorauszulesender einfacher verknüpfter Listen, die durch die in Fig. 1 dargestellte Informationsverarbeitungsvorrichtung erhalten werden.
- Fig. 13Cb zeigt ein Programm zum Zugriff auf das Feld einfacher verknüpfter Listen.
- Fig. 13Da zeigt eine Struktur eines Felds vorauszulesender Bäume, die durch die in Fig. 1 dargestellte Informationsverarbeitungsvorrichtung erhalten werden.
- Fig. 13Db zeigt ein Programm zum Zugriff auf das Feld von Bäumen.
- Fig. 14A zeigt die Konfiguration der ersten Gruppe eines bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten Vorauslesesteuerregisters.
- Fig. 14B zeigt die Konfiguration der zweiten Gruppe des Vorauslesesteuerregisters.
- Fig. 14C zeigt die Konfiguration der dritten Gruppe des Vorauslesesteuerregisters.
- Fig. 14D zeigt die Konfiguration der vierten Gruppe des Vorauslesesteuerregisters.
- Fig. 15A veranschaulicht Informationen zum Festlegen von Daten für einen sequentiellen Vektor, die bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendet werden.
- Fig. 15B veranschaulicht Informationen zum Festlegen von Daten für einen indexierten Vektor, die bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendet werden.
- Fig. 15C veranschaulicht Informationen zum Festlegen einer bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten verknüpften Liste.
- Fig. 16A zeigt ein Beispiel eines Quellcodes, der zum Zugriff auf ein bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendetes zweidimensionales Feld verwendet wird.
- Fig. 16B zeigt ein Beispiel einer zweidimensionalen Anordnung, auf die vom Quellcode zugegriffen wird.
- Fig. 17A zeigt ein allgemeines Format für Befehle, die bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendet werden.
- Fig. 17B zeigt ein Format eines Basisteils eines Speicherzugriffsbefehls, der bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendet wird.
- Fig. 17C zeigt ein Format eines Basisteils eines Berechnungsbefehls, der bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendet wird.
- Fig. 17D zeigt ein allgemeines Format eines Erweiterungsteils eines Befehls, der bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendet wird.
- Fig. 18 zeigt eine Ansicht, in der die Konfiguration eines bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten Maskenregisters dargestellt ist.
- Fig. 19A zeigt ein Beispiel eines Status eines PDR und eines PDSR, bevor die Steuerung zu einer Unterbrechungsverarbeitungsroutine in der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verschoben wurde.
- Fig. 19B zeigt ein Beispiel eines Status des PDR und des PDSR, nachdem die Steuerung wieder an ein unterbrochenes Programm in der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung übergeben wurde.
- Fig. 20 zeigt ein Zeitablaufdiagramm zum Beschreiben der von der Hardware gesteuerten Kohärenzgewährleistung bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung.
- Fig. 21A zeigt ein Beispiel eines zum Beschreiben der Kohärenzgewährleistung unter Vorgriffssteuerung bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendeten Programms.
- Fig. 21B zeigt ein Zeitablaufdiagramm zum Beschreiben der Kohärenzgewährleistung unter Vorgriffssteuerung bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung.
- Fig. 22A zeigt ein Beispiel eines Quellprogramms, das bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendet wird.
- Fig. 22B zeigt ein Beispiel eines nach der Dreifachschleifenentfaltung des Quellprogramms erhaltenen Programms.
- Fig. 23 zeigt eine Ansicht zum Beschreiben eines Schleifenobjektprogramms aus dem Programmbeispiel 1.
- Fig. 24 zeigt eine Ansicht zum Beschreiben einer oberen Hälfte einer Befehlsausführungsspur aus dem Programmbeispiel 1.
- Fig. 25 zeigt eine Ansicht zum Beschreiben einer unteren Hälfte der Befehlsausführungsspur aus dem Programmbeispiel 1.
- Fig. 26A zeigt ein Beispiel eines anderen Quellprogramms, das bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendet wird.
- Fig. 26B zeigt ein Beispiel eines nach der Dreifachschleifenentfaltung des anderen Quellprogramms erhaltenen Programms.
- Fig. 27 zeigt eine Ansicht zum Beschreiben eines Schleifenobjektprogramms aus dem Programmbeispiel 2.
- Fig. 28 zeigt eine Ansicht zum Beschreiben einer Befehlsausführungsspur (obere Hälfte) aus dem Programmbeispiel 2.
- Fig. 29 zeigt eine Ansicht zum Beschreiben einer Befehlsausführungsspur (untere Hälfte) aus dem Programmbeispiel 2.
- Fig. 30A zeigt ein Beispiel eines weiteren Quellprogramms, das bei der in Fig. 1 dargestellten Informationsverarbeitungsvorrichtung verwendet wird.
- Fig. 30B zeigt ein Beispiel eines Programms, das nach der Dreifachschleifenentfaltung des anderen Quellprogramms erhalten wird.
- Fig. 31 zeigt eine Ansicht zum Beschreiben eines Schleifenobjektprogramms aus dem Programmbeispiel 3.
- Fig. 32 zeigt eine Ansicht zum Beschreiben einer Befehlsausführungsspur (obere Hälfte) aus dem Programmbeispiel 3.
- Fig. 33 zeigt eine Ansicht zum Beschreiben einer Befehlsausführungsspur (untere Hälfte) aus dem Programmbeispiel 3.
- Eine Informationsverarbeitungsvorrichtung gemäß der vorliegenden Erfindung wird nachfolgend mit Bezug auf die in der anliegenden Zeichnung dargestellten Ausführungsformen in näheren Einzelheiten beschrieben.
- Fig. 1 zeigt die Gesamtstruktur einer Ausführungsform einer Informationsverarbeitungsvorrichtung gemäß der vorliegenden Erfindung. Peripherievorrichtungen in der Art einer Ein-/Ausgabevorrichtung usw. sind jedoch fortgelassen.
- Eine Bezugszahl 1 gibt einen Speicher an, in dem ein Programm und Daten gespeichert sind. Eine Bezugszahl 2 gibt einen Prozessor an, der in dem im Speicher 1 gespeicherten Programm enthaltene Befehle nacheinander liest und ausführt. Eine Bezugszahl 3 gibt eine Cache-Speichereinheit an, die einen Cache-Speicher 1001 zum Speichern von Teilkopien im Speicher 1 beinhaltet. Eine Bezugszahl 4 gibt eine Systemsteuereinheit an, die aus einer Schaltung zum Erhalten eines Zugriffs auf den Cache-Speicher 1001 oder den Speicher 1 ansprechend auf eine vom Prozessor 2 ausgegebene Speicheranforderung (Speicherzugriffsanforderung) besteht. Die vorliegende Ausführungsform weist jedoch das vorteilhafte Merkmal auf, daß eine Vorausleseeinheit 105 aufgenommen ist.
- Diese Schaltung wird später in Einzelheiten beschrieben. Daher werden hier Grobbeschreibungen der Vorausleseeinheit 105 und der Datenvorausleseoperationen von dieser gegeben. Die Vorausleseeinheit 105 bearbeitet auf der Grundlage von Vorauslesesteuerinformationen, die ursprünglich durch das vom Prozessor 2 ausgeführte Programm festgelegt wurden, eine Gruppe durch die Vorauslesesteuerinformationen bezeichneter Daten, beispielsweise Vorgriffsdaten (Vorauslesedaten) von mehreren Elementen in einer bestimmten Feldgruppe, asynchron mit einer vom Prozessor 2 vorgenommenen Befehlsausführung. Die vorausgelesenen Daten werden vorübergehend in einem von mehreren Vorauslesedatenregistern (PDR) (704 (Fig. 7)) gespeichert, die in der Vorausleseeinheit 105 bereitgestellt sind. Weiterhin überträgt die Vorausleseeinheit 105 die vorausgelesenen, von diesem Befehl festgelegten Daten aus dem Register zum Prozessor 2, wenn ein Speicherzugriffsbefehl, für den die Daten erforderlich sind, vom Prozessor 2 später ausgeführt wird. Demgemäß können die Daten dann, wenn sie nicht im Cache-Speicher 1004 gespeichert sind, dem Prozessor 2 schneller als im herkömmlichen Fall, in dem die Daten dem Prozessor 2 aus dem Speicher 1 zugeführt werden, zugeführt werden.
- Die Vorauslesesteuerinformationen werden entsprechend dem vom Prozessor 2 ausgeführten Programm vorab in einem Universalregister GR im Prozessor 2 erzeugt. Ferner werden die Vorauslesesteuerinformationen vom Prozessor 2 durch eine Signalleitung oder einen Leiter 106 entsprechend einem Initialisierungsbefehl zum Inneren der Vorausleseeinheit 105 verschoben und in ein in der Vorausleseeinheit 105 bereitgestelltes Vorauslesestatus-Steuerregister (PFR) geschrieben. Wie später beschrieben wird, bezeichnet das PFR eine Kombination aus einem Vorauslesestatusregister (PSR) (301 (Fig. 3)) und einem Vorauslesesteuerregister (PCR) (302 (Fig. 3)). Ein PFR-Schreibregister PFRWN, das die Nummer eines zu schreibenden Registers angibt, wird durch den Initialisierungsbefehl festgelegt und vom Prozessor 2 der Vorausleseeinheit 105 zugeführt.
- Die Vorausleseeinheit 105 liest eine Gruppe durch die Vorauslesesteuerinformationen festgelegter Daten von einer Cache-Anforderungseinheit 101 gesteuert folgendermaßen vorab aus. Die Vorausleseeinheit 105 sendet zuerst eine Vorausleseanforderung PFREQ, eine Vorausleseadresse PFA, eine REQPCRN, die die Nummer eines PCR zum Speichern von Vorauslesesteuerinformationen über die darin vorauszulesenden Daten angibt, ein PDRTP-Signal, das eine Position in einem PDR angibt, an der vorausgelesene Daten gespeichert sind, und ein BUF-Signal, das das Vorhandensein oder Fehlen einer Leitungsübertragung bezeichnet, über eine Signalleitung 107 zur Cache-Anforderungseinheit 101.
- Die Cache-Anforderungseinheit 101 erfaßt, ob durch die Vorausleseadresse bezeichnete Daten im Cache-Speicher 1001 gespeichert wurden. Falls erfaßt wird, daß die Daten im Cache-Speicher 1004 gespeichert wurden, sendet die Cache-Anforderungseinheit 101 über eine Leitung 1132 eine dieser Adresse PFA entsprechende Cache-Adresse CADR zur Cache-Einheit 3 und verlangt, daß die Cache-Einheit 3 die Daten ausliest. Diese Daten CDATA werden vom Cache-Speicher 1001 über eine Leitung 108 zur Vorausleseeinheit 105 übertragen. Die Cache-Anforderungseinheit 101 sendet ein Datenzuführungsbefehl- CADV-Signal, eine PDR-Nummer CWPDRN und eine im PDR befindliche Speicherposition CPDRIP über eine Signalleitung 120 zur Vorausleseeinheit 105. Die Vorausleseeinheit 105 gestattet, daß die Daten CDATA entsprechend diesen Signalen im PDR gespeichert werden. Wenn die von der Vorausleseeinheit 105 angeforderten Daten nicht im Cache- Speicher 1001 enthalten sind, sendet die Cache-Anforderungseinheit 101 eine Speicherleseanforderung MREQ und eine Speicheradresse MADR zu einer Speicheranforderungseinheit 103, um anzufordern, daß die Speicheranforderungseinheit 103 die Daten aus dem Speicher 1 liest.
- Die Speicheranforderungseinheit 103 sendet diese Signale zum Speicher 1 und überträgt einen Datenzuführungsbefehl MADV, eine PDR-Nummer MWPDRN und eine im PDR befindliche Speicherposition MPDRIP über eine Signalleitung 121 zur Vorausleseeinheit 105. Wenn die Daten aus dem Speicher 1 gelesen wurden, sendet eine Speicherdateneinheit 104 die Daten MDATA über eine Leitung 109 zur Vorausleseeinheit 105. Wenn für die Daten, für die eine Vorausleseanforderung ausgegeben wurde, keine Leitungsübertragung festgelegt wurde, werden die Daten nicht in den Cache-Speicher 1001 geschrieben.
- Die Vorausleseeinheit 105 führt die oben angegebenen Operationen wiederholt an einer Gruppe vorauszulesender Daten aus. Es ist nun wichtig, daß die Datenzugriffsanforderung von der oben beschriebenen vom Prozessor 2 unabhängigen Vorausleseeinheit ausgegeben wird, damit die Daten verarbeitet werden. Die einzelnen PDR haben jeweils mehrere der Reihe nach angeordnete Speicherpositionen, wo die vorausgelesene Gruppe von Daten gespeichert wird, und sie speichern die vorausgelesene Gruppe von Daten entsprechend der Reihenfolge dieser Speicherpositionen an verschiedenen Speicherpositionen. Wenn das Auslesen dieser Daten angefordert wird, werden die vorausgelesenen Daten weiterhin entsprechend diesen Speicherpositionen nacheinander ausgelesen, wie später beschrieben wird. Hierdurch können die Schreib- und Auslesepositionen der Gruppe von Daten leicht gesteuert werden. In jedem PDR kann eine Gruppe von Daten gespeichert werden, deren Struktur im Vergleich zu einem einfachen Vektor komplex ist.
- Falls die Leitungsübertragung für die vorauszulesenden Daten festgelegt ist, liefert die Cache-Anforderungseinheit eine Leitungsübertragungsanforderung LT an die Speicheranforderungseinheit 103, wenn die Speicheranforderungseinheit 103 aufgefordert wird, die vorauszulesenden Daten zu lesen. In diesem Fall wird der Speicherdateneinheit 104 eine Operation zum Senden von Daten aus einem entsprechend der Leitungsübertragungsanforderung LT an die Cache-Speichereinheit 3 ausgelesenen Block über die Leitung 109, eine Cache-Dateneinheit 102 und eine Leitung 114 hinzugefügt. Wenn eine Vorausleseanforderung für eine Menge von im selben Block enthaltenen Daten ausgegeben wird, ist es wirksam, die Leitungsübertragung auszuführen. Bei der vorliegenden Ausführungsform kann auf der Grundlage des Werts des BUF-Signals zum Bezeichnen des Fehlens oder Vorhandenseins der Leitungsübertragung, der in den Vorauslesesteuerinformationen enthalten ist, durch ein Programm festgelegt werden, ob die Leitungsübertragung vorgenommen werden muß.
- Wenn der Prozessor 2 einen Speicherzugriffsbefehl ausführt, der das Auslesen von Daten anfordert, sendet der Prozessor 2 eine Speicherzugriffsanforderung PRREQ und eine Speicheradresse PRADR unabhängig davon, ob für die durch die Anforderung bezeichneten Daten die Vorausleseanforderung ausgegeben wurde, wie gewöhnlich zur Cache-Anforderungseinheit 101 und überträgt gleichzeitig eine Speicheranforderung PRREQ, Speicherzugriffsbefehl-Decodierinformationen LD und eine Basisregisternummer BRN des oben angegebenen Speicherzugriffsbefehls über die Signalleitung 106 zur Vorausleseeinheit 105.
- Die Vorausleseeinheit 105 trifft eine Entscheidung darüber, ob die angeforderten Daten in irgendeinem von mehreren darin bereitgestellten PDR gespeichert sind. Wenn die angeforderten Daten im PDR vorhanden sind, überträgt die Vorausleseeinheit 105 ihre Daten DATA und ein PDR-Treffersignal PDRHIT über eine Signalleitung 110 zur Cache- Speichereinheit 102. Weiterhin überträgt die Cache-Dateneinheit 102 sie über die Signalleitung 114 zur Cache-Speichereinheit 3. Danach durchlaufen sie die Cache-Speichereinheit 3 und werden schließlich über die Signalleitung 108 zum Prozessor 2 übertragen. Daher sendet die Vorausleseeinheit 105 einen DATA-Übertragungsbefehl PDRHIT über eine Signalleitung 111 zur Cache-Speichereinheit 3, wodurch die oben angegebenen, über die Signalleitung 114 übertragenen Daten über eine innerhalb der später beschriebenen Cache- Speichereinheit 3 bereitgestellte Ausweichleitung an die Signalleitung 108 ausgegeben werden.
- Weil bei der vorliegenden Ausführungsform die Erlaubnis erteilt wird, die Daten aus dem Gache-Speicher 1001 auszulesen, wenn die Daten vorausgelesen werden, besteht die Möglichkeit, daß Daten, für die vom Prozessor 2 eine Ausleseanforderung ausgegeben wurde, in irgendeinem PDR der Vorausleseeinheit 105 und auch im Cache-Speicher 1001 vorhanden sind. Bei der vorliegenden Ausführungsform werden die Daten, die in jedem PDR existieren, vom PDR zugeführt, sie werden jedoch nicht aus dem Gache-Speicher ausgelesen. Daher sendet die Cache-Speichereinheit 3 die aus dem PDR ausgelesenen Daten DATA zur Leitung 108, wenn der Cache-Speichereinheit 3 das PDR-Treffersignal zugeführt wird. Demgemäß können, wie später in Einzelheiten beschrieben wird, die Daten in der Vorausleseeinheit 105 verwaltet werden, indem die Vorausleseeinheit und der Cache- Speicher 1001 so eingestellt werden, daß sie nicht dieselben Daten ausgeben, und indem die in der Vorausleseeinheit 105 vorhandenen Daten vorzugsweise zur Verarbeitungsvorrichtung gesendet werden, wobei dies unabhängig vom Vorhandensein oder Fehlen des dem Cache-Speicher 1001 zugeführten Treffers erfolgt.
- Wenn die Vorausleseeinheit 105 keine Treffer bezüglich der Speicherzugriffsanforderung zum Auslesen der Daten aus dem Prozessor aufweist, werden die Daten folgendermaßen aus dem Cache-Speicher 1001 und dem Speicher 1 ausgelesen. Die Cache-Anforderungseinheit 101 empfängt eine Speicheranforderung PRREQ und eine vom Prozessor 2 über eine Signalleitung 122 zugeführte Operandenadresse PRADR und prüft, ob ein Datenblock, der die durch die Anforderung festgelegten Daten enthält, im Cache-Speicher 1001 existiert. Falls die Antwort Ja ist, sendet die Cache-Anforderungseinheit 101 eine Cache-Speicheradresse CADR für den entsprechenden Datenblock über eine Signalleitung 113 zur Cache-Speichereinheit 3. Falls die Antwort Nein ist, gibt die Cache-Anforderungseinheit 101 eine Speicheranforderung MREQ und eine Adresse MADR zum Auslesen der entsprechenden Daten über eine Signalleitung 115 an die Speicheranforderungseinheit 103 aus. Wenn der Cache-Speicher 1001 keine Treffer bezüglich der vom Prozessor ausgegebenen Daten-Speicherzugriffsanforderung aufweist, wie es bei der vorliegenden Ausführungsform normalerweise der Fall ist, fordert die Speicheranforderungseinheit 103 den Speicher 1 auf, einen Daten enthaltenden Block an der Speicheradresse MADR auszulesen, und die Speicherdateneinheit 104 überträgt die im Block gesicherten Daten zum Cache- Speicher 1001.
- Falls die vom Prozessor 1 zugeführte Speicherzugriffsanforderung PRREQ eine Datenschreibanforderung ist, werden Schreibdaten vom Prozessor 2 über eine Signalleitung 119 zur Cache-Dateneinheit 102 übertragen und nachfolgend über die Signalleitung 114 in den Cache-Speicher 1001 geschrieben. Weil ein Verfahren zum Schreiben der Daten in den Cache-Speicher bei der vorliegenden Ausführungsform ein sogenanntes Einspeicherungsverfahren verwendet, erübrigt sich die Übertragung der Schreibdaten in den Speicher 1. Die Widerspiegelung der Daten im Speicher 1 wird verwirklicht, indem der entsprechende Datenblock zurück in den Speicher 1 geschrieben wird, wenn ein modifizierter Datenblock im Cache-Speicher 1001 aus einer Leitung ausgestoßen wird. Daher wird der aus dem Cache-Speicher 1001 ausgelesene Datenblock über die Signalleitung 108 zur Speicherdateneinheit 104 übertragen und wird anschließend über eine Signalleitung 118 in den Speicher 1 geschrieben.
- Bei der Speicherzugriffsanforderung zum derartigen Datenschreiben tritt das folgende Problem auf: Wenn der Prozessor 2 einen Speicherbefehl zum Ändern entsprechender Daten, nachdem die Daten durch Vorauslesen ausgelesen wurden, ausführt, werden die vorausgelesenen Daten ungültig, wenn dieser Speicherbefehl vom Standpunkt des Programms vor einem Speicherzugriffsbefehl zum Zugriff auf die entsprechenden Daten existiert. Die vorliegende Ausführungsform weist außerdem das wichtige Merkmal auf, daß zumindest ein Teil der Adressen für die vorausgelesenen Daten zusammen mit den vorausgelesenen Daten gespeichert wird, daß Adressen für den vom Prozessor 2 ausgeführten Speicherbefehl nacheinander einzeln mit diesem Teil verglichen werden, falls eine Möglichkeit besteht, daß für gegebene vorausgelesene Daten eine Adressenänderung vorgenommen wurde und diese ungültig gemacht wurden, daß sie erfaßt wird, und daß geänderte Daten ausgelesen werden, indem bei der Ausführung des Speicherzugriffsbefehls bezüglich der ungültigen Daten auf den von PDR verschiedenen Speicher zugegriffen wird, wodurch das Problem gelöst wird. Zur oben angegebenen Steuerung sendet der Prozessor 2 eine Speicherbefehl-Ausführungsanweisung ST und eine Operandenadresse PRADR über die Signalleitung 106 zur Vorausleseeinheit 105. Weiterhin überträgt die Vorausleseeinheit 105 ein PDRHIT-Signal zur Cache-Anforderungseinheit 101.
- Wenn bei der vorliegenden Ausführungsform der Prozessor die Vorauslesesteuerinformationen an die Vorausleseeinheit 105 ausgibt und die Speicherzugriffsanforderung ausgibt, legt er außerdem in jedem Fall die Basisregisternummer BRN fest. Demgemäß wird das PDR zum Speichern der vorausgelesenen Gruppe von Daten der durch die Vorauslesesteuerinformationen festgelegten Basisregisternummer zugeordnet. Danach erfaßt der Prozessor 1 auf der Grundlage einer Basisregisternummer, die festgelegt wird, wenn der Prozessor 1 Daten und eine Speicherzugriffsanforderung zum Auslesen von Daten ausgegeben hat, ob das der Basisregisternummer zugeordnete PDR existiert. Falls das entsprechende PDR existiert, wird eine der Gruppen vorausgelesener Daten im PDR ausgelesen. Daher wird eine Schaltung, in der mehrere Gruppen von Daten gespeichert sind, vereinfacht.
- Weiterhin kann bei der vorliegenden Ausführungsform eine Gruppe von Daten mit komplexen Strukturen, wie Elemente, die einen indexierten oder verknüpften Vektor bilden, oder dergleichen, ebenso wie eine Gruppe von einen einfachen Vektor bildenden Daten vorausgelesen werden.
- Ferner kann bei der vorliegenden Ausführungsform auch ein sogenannter Adressensprung verwirklicht werden, wobei ein Intervall zwischen Adressen für vorauszulesende Daten entsprechend den vorauszulesenden Daten geändert wird, um zu ermöglichen, daß eine Gruppe von Daten, die aus Daten besteht, welche zu mehreren Reihen in einer Anordnung gehören, fortlaufend vorausgelesen wird.
- Weiterhin kann die vorliegende Ausführungsform selbst auf den Fall angewendet werden, in dem eine WENN-Anweisung in einer Schleife existiert, falls vorausgelesene Daten durch eine leere Übertragung selbst dann übersprungen werden, wenn die Ausführung einer bedingten Speicherzugriffsanweisung unterdrückt wird.
- Weiterhin kann die vorliegende Ausführungsform auch einer Unterbrechung Rechnung tragen, die bezüglich einer Befehlsausführung durch den Prozessor 2 auftritt. Insbesondere meldet der Prozessor 2 der Vorausleseeinheit ein Unterbrechungssignal INT über die Signalleitung 106. Nach Empfang der Meldung unterbricht die Vorausleseeinheit ihre Vorausleseoperation. Wenn die unterbrochene Vorausleseoperation nach Beendigung der Unterbrechungsverarbeitung wiederaufgenommen wird, wird eine Sicherungswiederherstellung von PCR und PSR ausgeführt. Demgemäß sendet der Prozessor 2 Registeradresseninformationen PFRM zum Auslesen dieser mit dem Vorauslesen verbundenen Register über die Signalleitung 106 zur Vorausleseeinheit. Die gelesenen Informationen werden über eine Signalleitung 112 zum Prozessor 2 gesendet.
- Eine Struktur und Operationen der vorliegenden Ausführungsform werden nachfolgend in näheren Einzelheiten unter Einschluß anderer Eigenschaften der vorliegenden Ausführungsform beschrieben.
- Fig. 11 ist eine Ansicht, in der die Struktur des Prozessors 2 schematisch dargestellt ist. Eine Bezugszahl 1101 gibt eine Befehlssteuereinheit an, die eine Befehlsabrufschaltung 1101A zum Abrufen eines Befehls aus dem Speicher 1 und einen Befehlsdecodierer 1101 B zum Decodieren von diesem aufweist. Eine Bezugszahl 1102 gibt eine Anforderungssteuereinheit an, die eine Speicheranforderung PRREQ erzeugt, um eine Befehlsabrufanforderung zu erzeugen und das Lesen oder Schreiben von Speicherdaten auf der Grundlage einer von der Befehlssteuereinheit 1101 ausgegebenen Anforderung anzufordern. Es kann auch ein Innerprozessor-Cache-Speicher 1102A geringer Kapazität in der Anforderungssteuereinheit 1102 bereitgestellt werden. Eine Bezugszahl 1103 gibt eine Berechnungssteuereinheit an, die eine Funktionseinheit 1103A, eine Universalregister-(GR)-Gruppe 1103B, eine Gleitkommaregistergruppe 1103C, ein Maskenregister 1103D usw. enthält.
- Die Anforderungssteuereinheit 1102 sendet die Speicheranforderung PRREQ und ihre Adresse PRADR über die Signalleitung 122 zur Cache-Anforderungseinheit 101 und überträgt Schreibdaten nach dem Schreiben über die Signalleitung 119 zur Cache-Dateneinheit 102. Aufgrund einer gemäß einem Speicherzugriffsbefehl erzeugten Anforderung empfängt die Anforderungssteuereinheit 1102 decodierte Informationen LD von dieser und eine Basisregisternummer BRN von dieser von der Befehlssteuereinheit 1101 und empfängt einen Maskenregisterwert MK von der Berechnungssteuereinheit 1103. Weiterhin sendet die Anforderungssteuereinheit 1102 sie zusammen mit PRREQ und PRADR über die Signalleitung 106 zur Vorausleseeinheit 105. Die Anforderungssteuereinheit 1102 empfängt eine Speicherbefehl-Ausführungsanweisung ST von der Befehlssteuereinheit 1101, die zu einer gemäß einem Speicherbefehl erzeugten Anforderung gehört, und sendet diese in der oben beschrieben Weise zur Vorausleseeinheit 105. Wenn eine Datenausleseanforderung erzeugt wird, werden gelesene Daten von der Cache-Speichereinheit 3 der Anforderungseinheit 1102 über die Signalleitung 108 zugeführt.
- Wenn die Berechnungssteuereinheit 1103 einen Zugriffsbefehl bezüglich eines Vorausleseregisters PFR von der Befehlssteuereinheit 1101 empfängt, erzeugt die Berechnungssteuereinheit 1103 ein Zugriffsanforderungssignal PFRREQ sowie eine PFRM und eine PFRWN zum Festlegen von Lese- und Schreibregistern. Beim Schreiben ruft die Berechnungssteuereinheit 1103 das allgemeine Register GR ab oder liest dieses und sendet es über die Signalleitung 106 zur Vorausleseeinheit 105. Der gelesene Inhalt von PFR wird von der Vorausleseeinheit 105 über die Signalleitung 112 eingegeben.
- Weiterhin erfaßt die Berechnungssteuereinheit 1103 bei der Befehlsausführung einen Unterbrechungsfaktor. Wenn dieser von der Berechnungssteuereinheit 1103 erfaßt wird, erzeugt die Berechnungssteuereinheit 1103 ein INT-Signal und meldet es der Vorausleseeinheit 105 über die Signalleitung 106. Zusätzlich empfängt die Anforderungssteuereinheit 1102 von der Vorausleseeinheit 105 über die Signalleitung 112 ein PDRWAIT-Signal. Wenn keine Daten vom Vorauslesedatenregister PDR ankommen, unterbricht die Anforderungssteuereinheit 1102 die Ausgabe der folgenden Speicheranforderung PRREQ entsprechend dem Signal.
- Vor der detaillierten Beschreibung der Vorauslesesteuerung werden die Datenstrukturen beschrieben, die auf ein die vorliegende Ausführungsform darstellendes Vorauslesesystem anzuwenden sind. Die Datenstrukturen für das vorliegende Vorauslesesystem werden in vier Typen eingestuft, die in den Fig. 13Aa bis 13Db dargestellt sind. Beispiele von Programmen, die Zugriff auf jeweilige strukturierte Daten gewinnen, werden zur gleichen Zeichnung hinzugefügt.
- Eine in Fig. 13Aa dargestellte Datenstruktur zeigt einen Vektor, in dem N Elemente, die jeweils eine Länge von 1 aufweisen, sequentiell im Speicher angeordnet sind. Eine Leitadresse davon ist &B(1). Die jeweiligen Elemente sind als B(1), B(2), ... B(N) dargestellt. Ein Beispiel eines darauf sequentiell zugreifenden Programms ist in Fig. 13Ab dargestellt. In diesem Fall stimmt das Intervall zwischen den Elementen, auf die an jeder Schleife zugegriffen wurde, mit der Elementlänge von 1 überein. Weiterhin wird in Fig. 13Ac ein Beispiel eines Programms dargestellt, das einen schrittweisen Zugriff ausführt. In diesem Fall beträgt das Zugriffsintervall 5 · 1.
- Die vorliegende Datenstruktur besteht aus zwei in Fig. 13Ba dargestellten sequentiellen Vektoren L(i) (1 £ i £ N) und B(j) (1 £ j £ M). Elementlängen und Leitadressen von L(i) und B(j) sind als 1L und &L(1) bzw. 1B und &B(1) dargestellt. Beim indexierten Vektor zeigen die Elemente der ersten Ebene (nachfolgend "indexierter Vektor" oder "Risikovektor" genannt) L(i) jeweils Elementnummern der zweiten Ebene (nachfolgend "Zielvektor" genannt) B(j).
- Ein Beispiel eines Programms, das auf den indexierten Vektor zugreift, ist in Fig. 13Bb dargestellt. In dem Beispiel wird der Zugriff auf den indexierten Vektor an den benachbarten Elementen der Reihe nach ausgeführt. Ein einzelner indexierter Vektor wird gelegentlich zum Zugriff auf mehrere Zielvektoren entsprechend einem Benutzercode verwendet. Die vorliegende Ausführungsform kann selbst in diesem Fall angewendet werden.
- Die vorliegende Datenstruktur besteht aus dem Satz von in mehreren Ebenen dargestellten Daten. Die signifikanteste Ebene entspricht einem sequentiellen Vektor, der aus einer Leitadresse a und einer Elementlänge 1L besteht. Jedes von seinen Elementen b, b', ... b" sichert eine Leitadresse jeder Tabelle, in der Daten einer zweiten Ebene aufgenommen sind. Daten aus Ebenen, die niedriger als die zweite Ebene sind, werden in der Tabelle gesichert, wobei ihre Positionen jeweils durch ihre entsprechende Leitadresse in der Tabelle und eine Verschiebung gegenüber dem Kopf festgelegt werden. Die vorliegende Ausführungsform ist für den Fall vorgesehen, in dem die Verschiebung für alle Daten derselben Ebene konstant gehalten wird. Es kann jedoch auch eine Erweiterung ausgeführt werden, die ermöglicht, daß die Verschiebung für alle Daten variiert. Alle Daten einer Ebene, die niedriger als die zweite Ebene ist, wobei die am wenigsten signifikante Ebene ausgenommen ist, weisen die Leitadresse in der Tabelle zum Speichern von Daten der nächsten Ebene auf.
- Beim in der Zeichnung dargestellten Beispiel zeigt das signifikanteste Leitelement b des Vektors eine Tabelle C einschließlich von Daten c einer zweiten Ebene. Die Daten c sind an einer einer vorbestimmten Verschiebung j entsprechenden Position angeordnet. Die Daten c zeigen eine Tabelle D einschließlich von Daten d, und die Daten d sind an einer einer vorbestimmten Verschiebung k entsprechenden Position angeordnet. Die Daten d stellen eine Tabelle E einschließlich von Daten e der am wenigsten signifikanten Ebene dar, und die Daten e sind an einer einer vorbestimmten Verschiebung 1 entsprechenden Position angeordnet. Ein Beispiel eines Programms, das auf das Feld der einfachen verknüpften Listen zugreift, ist in Fig. 13Cb dargestellt. Zusätzlich zu diesem Beispiel ist diese Funktion für den Zugriff auf ein Feld von leicht durch die Sprache C zu beschreibenden Strukturen geeignet.
- Die vorliegende Datenstruktur ähnelt im wesentlichen dem Feld der im Absatz 3) beschriebenen einfachen verknüpften Listen. Wie in Fig. 13Da dargestellt ist, besteht die Datenstruktur aus dem Satz von Daten mehrerer Ebenen. Die signifikanteste Ebene ist durch einen sequentiellen Vektor gegeben, der aus einer Leitadresse a und einer Elementlänge 1 L besteht. Jeweilige Elemente b, b', ..., b" sichern Leitadressen in Tabellen, in denen Daten zweiter Ebenen angeordnet sind. Daten jeweiliger Ebenen, die niedriger als die zweiten Ebenen sind, sind in den Tabellen enthaltene Daten. Ihre Datenpositionen sind durch eine Leitadresse jeder Tabelle und eine Verschiebung gegenüber dem Kopf festgelegt.
- Das Feld der Bäume unterscheidet sich von dem Feld der im Absatz 3) beschriebenen einfachen verknüpften Listen dadurch, daß die Daten der Ebenen, die niedriger als die zweiten Ebenen sind, zu mehreren bezüglich der entsprechenden um eine Ebene höheren Daten bestehen. Die mehreren Dateneinheiten sind in derselben Tabelle angeordnet, und jede Verschiebung gegenüber dem Kopf der Tabelle wird im voraus festgelegt. Die vorliegende Ausführungsform ist für den Fall vorgesehen, in dem die Verschiebung für alle Daten derselben Ebene konstant gehalten wird. Es kann jedoch auch eine Erweiterung vorgenommen werden, die ermöglicht, daß die Verschiebung für jede Dateneinheit variiert wird. Alle Daten der Ebene, die niedriger als die zweite Ebene ist, wobei die am wenigsten signifikante Ebene ausgenommen ist, weisen die Leitadresse in der Tabelle zum Speichern von Daten der nächsten Ebene auf.
- Beim in der Zeichnung dargestellten Beispiel zeigt das signifikanteste Leitelement b des Vektors eine Tabelle CD einschließlich Daten c und d der zweiten Ebenen. Die Daten c und d sind an den vorbestimmten Verschiebungen j und k entsprechenden Positionen angeordnet. Die Daten c zeigen eine Tabelle E einschließlich Daten e der am wenigsten signifikanten Ebene, und die Daten e sind an einer einer vorbestimmten Verschiebung 1 entsprechenden Position angeordnet. Die Daten d stellen eine Tabelle F einschließlich Daten f der am wenigsten signifikanten Ebene dar, und die Daten f sind an einer einer vorbestimmten Verschiebung m entsprechenden Position angeordnet. Ein Beispiel eines Programms, das auf das Feld der Bäume zugreift, ist in Fig. 13Db dargestellt.
- Die Fig. 17A bis 17D zeigen bei der vorliegenden Ausführungsform verwendete Befehlsformate. Fig. 17A zeigt ein allgemeines Befehlsformat. Ein Befehl weist einen Basisteil von 32 Bits und einen Erweiterungsteil von 16 Bits auf. Der Basisteil stimmt mit der PA-RISC-Architektur von Hewlett-Packard Company, USA überein. Fig. 17B zeigt ein Basisteilformat eines Speicherzugriffsbefehls. Die Symbole op, b, t/r, s und im 14 stellen einen Befehlscode, eine Basisregisternummer, eine Operandenregisternummer, eine Raumregisterfestlegung bzw. 14-Bit-Direktdaten dar. Fig. 17C gibt ein Basisteilformat eines Berechnungsbefehls an. Die Symbole op1 und op2 bezeichnen jeweils Befehlscodes, die Symbole r1 und r2 bezeichnen jeweils Operandenregisternummern, ein Symbol t bezeichnet eine Nummer des Registers, an dem das Ergebnis gespeichert wird, und die Symbole c und f bezeichnen jeweils Befehlsunterdrückungsbedingungen. Für detaillierte Informationen sei auf "PA-RISC 1.1 Architecture and Instruction Set Reference Manual", zweite Ausgabe, S. C-1 bis C-6, Hewlett-Packard, HP-Teilenummer: 09740-90039, 1992 verwiesen.
- Fig. 17D zeigt ein Format eines Erweiterungsteils. Die Symbole rm und tm geben eine Lesemaskennummer bzw. eine Schreibmaskennummer an, die beide ein in Fig. 18 dargestelltes Maskenregister MR festlegen. Das Maskenregister besteht aus 62 Einbitregistern. Das Maskenregister speichert bedingte Werte, die dem Ergebnis einer Berechnung durch einen Berechnungsbefehl entsprechen. Insbesondere wird beim Ausführen des Berechnungsbefehls eine dem Ergebnis der Berechnung durch den Berechnungsbefehl entsprechende Bedingung in einem Maskenregister gespeichert, das entsprechend der Festlegung des c- und f-Felds des Basisteils durch tm festgelegt wird. Falls der Wert eines durch rm festgelegten Registers 1 ist, wird der durch den Basisteil festgelegte Befehl ausgeführt. Falls der Wert davon 0 ist, wird der Befehl unterdrückt. Das Steuern des Vorhandenseins oder Fehlens der Befehlsausführung durch das Maskenregister wird als "bedingte Ausführungssteuerung" bezeichnet. Wenn die Nummern 0 und 1 durch rm festgelegt werden, werden die Maskenwerte 0 und 1 identisch ausgelesen. Wenn die Nummer 0 oder 1 weiterhin durch tm festgelegt wird, bleibt der Inhalt jedes Maskenregisters unverändert.
- Weiter unten werden Spezifikationen eines bestimmten Befehls zur Vorauslesesteuerung beschrieben. In der folgenden Beschreibung gibt ein Symbol [m] ein Lesemaskenfeld an. Die Ausführung des Befehls wird entsprechend dem Inhalt eines durch m festgelegten Maskenregisters gesteuert. Das nächste Feld zeigt den Typ des Befehls, und mehrere Operandenfelder schließen sich dem nächsten Feld an. Der Typ des Befehls und des Operanden wird bei jedem Befehl beschrieben.
- 1) Aufbau- und Speicher-/Wiederherstellungsbefehle des Vorauslesestatusregisters (PSR):
- - Move GR to PSR; [m] MVRPSR, s1
- Dieser Befehl setzt den Wert von PSR entsprechend dem Inhalt eines durch s1 festgelegten Universalregisters (GR). Dieser Befehl wird zum Wiederherstellen von PSR bei einem Kontextwechsel, wie einer Initialisierung von PSR, einer Unterbrechung zu PSR oder dergleichen, verwendet.
- - Move to PSR-Direktdaten; [m]MVPSRI, imm16
- Dieser Befehl setzt PSR entsprechend einem Befehls-16-Bit-Direktdatenfeld. Dieser Befehl wird zum Initialisieren von PSR verwendet.
- - Move PSR to GR; [m]MVPSRR, t
- Dieser Befehl ermöglicht, daß der Inhalt von PSR in einem durch t festgelegten GR gespeichert wird. Dieser Befehl wird zum Erlangen eines Zugriffs auf PSR verwendet.
- 2) Aufbau- und Speicher-/Wiederherstellungsbefehle des Vorauslesesteuerregisters (PCR):
- - Move GR to PCR; [m] MVRPCR, s1, t
- Dieser Befehl setzt den Wert des durch t festgelegten PCR entsprechend dem Inhalt eines durch s1 festgelegten Universalregisters (GR). Dieser Befehl wird zum Wiederherstellen von PCR bei einem Kontextwechsel, wie einer Initialisierung von PCR, seiner Unterbrechung oder dergleichen, verwendet.
- - Move PCR to GR; [m]MVPCRR, s1, t
- Dieser Befehl ermöglicht, daß der Inhalt des durch s1 festgelegten PCR in dem durch t festgelegten GR gespeichert wird. Dieser Befehl wird zum Speichern von PCR bei einem Kontextwechsel, wie einem Zugriff und einer Unterbrechung von PCR oder dergleichen, verwendet.
- Die folgenden Befehle werden zum Aktualisieren nur bestimmter Felder von PSR und PCR verwendet.
- - Set PCR ACT; [m]SPCRACT, imm8, t
- Dieser Befehl aktualisiert ein ACT-Kennzeichen (Fig. 14A) eines durch t festgelegten PCR entsprechend dem Wert eines imm8-Felds.
- - Set PSR SUSP; [m]SPSRSUSP, imm8
- Dieser Befehl aktualisiert ein SUSP-Kennzeichen (Fig. 3) von PSR entsprechend dem Wert des imm8-Felds.
- - Initialize PCR; [m]IPCR, all, t
- Dieser Befehl setzt VLD- und ACT-Kennzeichen (Fig. 14A) des durch t festgelegten PCR zurück. Falls jedoch alle 1 betragen, setzt dieser Befehl alle PCR zurück.
- - Initialize PDR; [m]IPDR
- Dieser Befehl setzt RC-Felder, die sich auf alle Elemente aller PDSR beziehen, auf 0 zurück. <
- Fig. 2 zeigt Hauptsignale, die zwischen vier die Vorausleseeinheit 105 bildenden Einheiten sowie zwischen diesen und nicht zur Vorausleseeinheit gehörenden Vorrichtungskomponenten übertragen werden. Detaillierte Prüfungen der jeweiligen Signale und ein Verfahren zum Erzeugen der Signale werden später zusätzlich mit Bezug auf erklärende Zeichnungen für alle Einheiten beschrieben. Schematische Konfigurationen der jeweiligen Einheiten und ihre Operationen werden nun nur für die wesentlichen der in Fig. 2 dargestellten Signale beschrieben.
- Eine Bezugszahl 201 gibt eine Vorauslesestatus-Steuereinheit zum Ausführen einer Lese-/Schreibsteuerung des Vorauslesestatusregisters (PSR) 301 und des Vorauslesesteuerregisters (PCR) 302 an. PSR und PCR werden in Kombination als eine "Vorauslesestatus- Steuereinheit" (PFR) bezeichnet. Wenn das Vorauslesen ermöglicht ist, setzt die Vorauslesestatus-Steuereinheit 201 Informationen zum Festlegen einer Objektdatenstruktur und einen Vorauslesebetriebsmodus für PFR beim Ausführen eines Programms durch den Prozessor 2.
- Nach dem Festlegen von PFR durch das Programm werden die festgelegten Informationen vorab im Universalregister (GR) im Prozessor 2 gespeichert. Als nächstes werden die festgelegten Informationen in die durch den zuvor erwähnten Vorauslesesteuerbefehl festgelegte PFR geschrieben. Beim Ausführen des Vorauslesesteuerbefehls zu diesem Zeitpunkt empfängt die Vorausleseeinheit 105 einen PFR-Schreibbefehl PFRREQ, eine PFR-Identifikationsnummer PFRWN und die in GR enthaltenen Daten vom Prozessor 2 über die Signalleitung 106.
- Eine Bezugszahl 202 gibt eine Vorausleseanforderungs-Steuereinheit zum Ausgeben einer Vorausleseanforderung und zum Aktualisieren eines PCR und eines später zu beschreibenden Vorauslesedaten-Statusregisters PDSR ansprechend auf die Ausgabe der Vorausleseanforderung an. Die Vorausleseanforderungs-Steuereinheit 202 liest ein PSR und ein PCR über eine Signalleitung 206 und liest ein PDSR von einer Vorauslesedateneinheit 203 über eine Signalleitung 210. Weiterhin prüft die Vorausleseanforderungs-Steuereinheit 202, ob eine Anforderung, die ausgegeben werden kann, in 16 PCR existiert. Falls die Antwort Ja ist, wählt die Vorausleseanforderungs-Steuereinheit 202 als nächstes ein PCR zum Ausgeben einer Anforderung auf der Grundlage einer später zu beschreibenden vorbestimmten Norm. Daraufhin sendet die Vorausleseanforderungs-Steuereinheit 202 eine Vorausleseanforderung PFREQ und eine PCR-Nummer REQPCRN (dessen Wert nachfolgend als "i" bezeichnet wird) über eine Signalleitung 205 zur Vorauslesestatus- Steuereinheit 201. Die Vorausleseanforderungs-Steuereinheit 202 liest aus einem durch REQPCRN bezeichneten i-ten Vorauslesesteuerregister PCRi ein auf die Anforderung bezogenes Feld und nimmt es über die Signalleitung 206 auf. Jedes Feld von PCR wird nachfolgend durch Hinzufügen eines tiefgestellten Zeichens i dargestellt.
- Als Hauptelemente hierin können eine Vorausleseadresse PFAi und ein PDR-Oben- Zeiger PDRTPi, der die Position angibt, an der die gelesenen Daten im PDR gespeichert sind, erwähnt werden. Sie werden über die Signalleitung 107 zusammen mit den PFREQ- und REQPCRN-Signalen zur Cache-Anforderungseinheit 101 gesendet. Der Zustand jedes PDSR in der Vorauslesedateneinheit 203 wird als eine über eine Signalleitung 209 ausgegebene Anforderung angezeigt. Eine PDSR-Position dafür ist durch REQPCRN und PDRTPi festgelegt. Als Initialisierungsinformationen können wenigstens ein Teil von PFAi und die Anzahl der Zugriffe NRi, die später zu beschreiben sind, erwähnt werden.
- Bei der Ausgabe von PFREQ erzeugt die Vorausleseanforderungs-Steuereinheit 202 als nächstes aktualisierte Werte (nachfolgend wird zu den aktualisierten Werten jeweiliger Felder von PCR und PDSR' als Feldnamen hinzugefügt) der Felder von PCRi, die sich auf die Ausgabe der Anforderung beziehen, wie PFAi und PDRTPi oder dergleichen, und sendet sie über die Signalleitung 205 zur Vorauslesestatus-Steuereinheit 201. Zum Erzeugen des aktualisierten Werts der Vorausleseadresse PFAi wird ein später zu beschreibender Adressenmodifizierer MODi oder dergleichen aus dem PCRi gelesen. Weil die Verarbeitung der zuvor angenommenen Vorausleseanforderung noch nicht abgeschlossen ist, sendet die Cache-Anforderungseinheit 101 ein Besetzt-Signal REQBSY, das einen Zustand angibt, in dem die Anforderung momentan nicht angenommen ist, über die Signalleitung 120 zur Vorausleseanforderungs-Steuereinheit 202.
- Die Vorauslesedateneinheit 203 enthält mehrere Vorauslesedatenregister (PDR) 704 zum vorübergehenden Speichern vorausgelesener Daten und mehrere Vorauslesedaten- Statusregister (PDSR) 705 zum Speichern von Lesesteuerinformationen zu diesen. Wenn die vorausgelesenen Daten aus dem Cache-Speicher 1001 ausgelesen werden, nimmt die Vorausleseeinheit 105 den Datenzuführungsbefehl CADV, die die Speicher-PDR-Nummer angebende CWPDRN und die die Position jedes Elements im PDR angebende CPDRIP jeweils mit der PDR-Nummer über die Signalleitung 120 auf und speichert die vom Cache- Speicher 1001 gelieferten Daten CDATA entsprechend dieser Aufnahmeverarbeitung.
- Wenn die vorausgelesenen Daten aus dem Speicher 1 ausgelesen werden, nimmt die Vorausleseeinheit 105 den Datenzuführungsbefehl MADV, die die Speicher-PDR- Nummer angebende MWPDRN und die die Position jedes Elements im PDR angebende MPDRIP auf, die jeweils die PDR-Nummer aufweisen, und speichert die Daten MDATA entsprechend der Aufnahmeverarbeitung. Beim Speichern der Daten wird der Zustand von PDSR als "Daten angekommen" angezeigt.
- Zum Unterbrechen der Vorausleseoperation entsprechend der Erzeugung einer Unterbrechung durch den Prozessor 2 sendet die Vorauslesedateneinheit 203 ein Statussignal PFBSY, das die Beendigung einer Vorausleseanforderungsverarbeitung angibt, über eine Signalleitung 213 zur Vorauslesestatus-Steuereinheit 201.
- Eine Bezugszahl 204 gibt eine Vorauslesedaten-Lesesteuereinheit zum Steuern der Übertragung vorübergehend im entsprechenden Vorauslesedatenregister PDR gespeicherter Daten zum Prozessor 2 an. Die Vorauslesedaten-Lesesteuereinheit 204 nimmt die Speicheranforderung PRREQ und die Speicherzugriffsbefehl-Decodierinformationen LD über die Signalleitung 106 auf. Die vorliegende Ausführungsform weist das Merkmal auf, daß die Basisregisternummer BRN, an der die Operandenadresse für diesen Befehl gespeichert wurde, gleichzeitig jedem PDR als ein Schlüssel zugeordnet wird.
- Weil insbesondere die gemäß dem Speicherzugriffsbefehl erzeugte Basisregisternummer in einem Befehlsidentifizierer-IID-Feld eines PCR, das dem der Basisregisternummer BRN zugeordneten PDR entspricht, gespeichert wird, kann erkannt werden, daß das entsprechende PDR der Basisregisternummer zugeordnet ist, indem die oben erwähnte BRN mit der gespeicherten Basisregisternummer verglichen wird. Daher nimmt die Vorauslesedaten-Lesesteuereinheit 204 die Werte der IID-Felder aller PCR über eine Signalleitung 208 auf. Die Vorauslesedaten-Lesesteuereinheit 204 sendet die so identifizierte PDR- Nummer als ein RPDRN-Signal (dessen Wert als m angesehen wird) über eine Signalleitung 207 zur Vorauslesestatus-Steuereinheit 201. Weiterhin liest die Vorauslesedaten-Lesesteuereinheit 204 ein PDR-Aus-Zeigerfeld PDROPm (dessen Wert als n angesehen wird) aus dem festgelegten PCRm und nimmt es über die Signalleitung 208 auf. Die Vorauslesedaten-Lesesteuereinheit 204 sendet einen PDR-Lesebefehl PDRREQ, eine gelesene PDR- Nummer RPDRN und die oben angegebene PDROPm über eine Signalleitung 212 zur Vorauslesedateneinheit 203. Danach liest die Vorauslesedaten-Lesesteuereinheit 204 Daten DATAm (n) aus einem n-ten Element eines m-ten PDR aus und sendet sie über die Signalleitung 110 zur Cache-Dateneinheit 102. Zu dieser Zeit prüft die Vorauslesedaten-Lesesteuereinheit 204 die Gültigkeit der an der PDR-Position gespeicherten Daten und sendet ein die Gültigkeit der Daten angebendes PDRHIT-Signal jeweils über die Signalleitung 111 zur Cache-Speichereinheit 3, über die Signalleitung 110 zur Cache-Dateneinheit 102 und über die Signalleitung 107 zur Cache-Anforderungseinheit 101. Demgemäß unterdrückt die Cache-Anforderungseinheit 101 eine Speicheranforderungsoperation aufgrund des Speicherzugriffsbefehls.
- Falls keine Daten an der entsprechenden PDR-Position ankommen, erzeugt die Vorauslesedaten-Lesesteuereinheit 204 ein PDRWAIT-Signal und sendet es zur Cache-Anforderungseinheit 101 und zum Prozessor 2. Ansprechend auf dieses Signal sichert die Cache-Anforderungseinheit 101 eine laut dem Speicherzugriffsbefehl erzeugte Cache-Zugriffsanforderung. Die Cache-Anforderungseinheit 101 sichert das PDRWAIT-Signal, bis die entsprechenden vorausgelesenen Daten ankommen, und gibt es nach ihrer Ankunft frei. Zu dieser Zeit prüft die Vorauslesedaten-Lesesteuereinheit 204 die Gültigkeit der Daten und erzeugt aufgrund des Prüfergebnisses ein PDRHIT in der oben beschriebenen Weise. Wenn die Daten in jedem PDR ungültig sind, wird das PDRHIT nicht erzeugt, weshalb die laut dem Speicherzugriffsbefehl vorgenommene Speicheranforderungsoperation ohne Unterdrückung verarbeitet wird. Es ist daher möglich, die aktuellen Daten aus dem Cache- Speicher oder dem Speicher 1 zu lesen. Dadurch kann das Problem gelöst werden, das mit der Ungültigkeitserklärung von Daten wegen einer Aktualisierung der vorausgelesenen Daten durch einen Speicherbefehl verbunden ist. Es sei bemerkt, daß der Prozessor 2, der das PDRWAIT empfangen hat, eine fortlaufende Speicheranforderung hält, während er eingeschaltet wird. Die Vorauslesedateneinheit 203 liest jeweilige Felder RC, RI, DA und DI jedes PDSR, die später beschrieben werden, über die Signalleitung 212, unter Erzeugung der oben angegebenen PDRHIT und PDRWAIT und gibt sie in die Vorauslesedaten- Lesesteuerschaltung 204 ein.
- Beim Ausführen des Speicherbefehls nimmt die Vorauslesedateneinheit 203 die Speicheranforderung PRREQ, die Speicherbefehls-Ausführungsanweisung ST und die Operandenadresse PRADR über die Signalleitung 106 an. Zu dieser Zeit werden sie mit wenigstens einigen der Vorausleseadressen verglichen, die in jedem Element des dem jeweiligen PDSR entsprechenden jeweiligen PDR gesichert sind. Wenn sie miteinander übereinstimmen, wird die Ungültigkeit gelesener Daten als das Vorhandensein einer Aktualisierungsmöglichkeit am entsprechenden PDR-Element angezeigt.
- Detailliertere Strukturen der jeweiligen die Vorausleseeinheit 105 bildenden Einheiten werden weiter unten beschrieben.
- Fig. 3 zeigt die Einzelheiten der Vorauslesestatus-Steuereinheit 201.
- Eine Bezugszahl 301 gibt das Vorauslesestatusregister (PSR) an, das ein SUSP zum Anzeigen eines Stoppzustands des Ausgebens einer Vorausleseanforderung, ein Vorausleseanforderung-Besetzt-Kennzeichen PFBSY zum Anzeigen des Vorhandenseins oder Fehlens einer anstehenden Vorausleseanforderung und ein PDRI7PT zum Anzeigen der Tiefe von PDR sichert. Wenn das PFRREQ-Signal eingeschaltet ist und PFRWN ein PSR festlegt, wird das Schreiben von Daten in das PSR301 ausgeführt. Zu dieser Zeit wird der vom Prozessor 2 zugeführte Inhalt von GR in das PSR301 geschrieben. Es werden jedoch keine Daten in das PFBSY-Kennzeichen geschrieben. PSR310 gibt das INT-Signal zum Melden der Erzeugung einer Unterbrechung vom Prozessor 2 ein und setzt das SUSP-Kennzeichen ansprechend auf das INT-Signal. PSR310 gibt das PFBSY-Signal von der Vorauslesedateneinheit 203 über die Signalleitung 213 ein und zeigt es am PFBSY-Kennzeichen an. Das Lesen von Daten aus dem entsprechenden PSR durch den Prozessor 2 wird durch Festlegen einer Leseadresse PFRM und eines PSR entsprechend einem Programm und Auswählen ihres Inhalts durch einen Wähler 318 ausgeführt. PFRM wird über eine Signalleitung 319 dem Wähler 318 zugeführt. Die Ausgabe des Wählers 318 wird über die Signalleitung 112 zum Prozessor 2 gesendet. Weiterhin wird der Inhalt von PSR über die Signalleitung 206 zur Vorausleseanforderungs-Steuereinheit 202 gesendet.
- Jeweilige Felder im PSR haben folgende Bedeutungen:
- - Pause-Kennzeichen; SUSP
- SUSP gibt einen Zustand an, in dem sich ein Vorauslesemechanismus gemäß der vorliegenden Ausführungsform in einem Anforderungsstoppzustand befindet. Wenn SUSP eingeschaltet ist, befindet sich der Vorauslesemechanismus im Anforderungshaltezustand. Selbst dann, wenn aktive Vorausleseanforderungen im entsprechenden Vorauslese-Steuerregister PCR existieren, wird keine Vorausleseanforderung ausgegeben. Wenn SUSP ausgeschaltet ist, kann die Vorausleseanforderung ausgegeben werden. Wenn eine Unterbrechung beispielsweise infolge einer Ausnahme des Speicherschutzes erzeugt wird, meldet der Prozessor 2 sie auf der Grundlage des INT-Signals über die Signalleitung 106 dem Vorauslesestatusregister, um das SUSP-Kennzeichen des entsprechenden PSR zu setzen. SUSP kann vom Programm gesetzt werden.
- - Vorausleseanforderung-Besetzt-Kennzeichen; PFBSY
- PFBSY stellt das Vorhandensein einer Vorausleseanforderung dar, die angibt, daß das Datenlesen nicht beendet ist. PFBSY wird zum Versetzen von SUSP in den eingeschalteten Zustand nach Erzeugen einer Unterbrechung, um die Ausgabe der Anforderung zu unterbrechen, und zum Angeben, daß der Vorauslesemechanismus infolge des Ausschaltens des PFBSY-Kennzeichens in einen Pausezustand versetzt wurde, verwendet.
- - PDR-Tiefe; PDRDPT
- PDRDPT zeigt die Anzahl der Elemente von jedem der 16 PDR. Demgemäß werden in der ganzen Vorrichtung 16 · PDRDPT-Registerelemente, die jeweils eine Breite von 8 Bytes aufweisen, zum vorübergehenden Speichern vorausgelesener Daten vorbereitet.
- Das SUSP- und das PFBSY-Kennzeichen werden bei einer später zu beschreibenden Unterbrechungsverarbeitung in Einzelheiten beschrieben.
- Eine Bezugszahl 302 gibt 16 Vorauslesesteuerregister PCR0 bis PCRi5 an, in denen jeweils Vorauslesesteuerinformationen gespeichert werden. Wenn kein Chaos verursacht wird, wird entweder ein einzelnes Vorauslesesteuerregister oder werden alle Vorauslesesteuerregister einfach als PCR beschrieben. Das PCR enthält Informationen zum Beschreiben von Positionen und Strukturen vorauszulesender Daten, Identifikationsinformationen über einen vorausgelesene Daten anfordernden Befehl, Informationen über die Datenleseanforderungs-Steuerung, Steuerinformationen zum Auslesen in jedem PDR gespeicherter Daten usw.
- In Fig. 3 geben die Bezugszahlen 303, 305 und 307 jeweils Datenschreibschaltungen an, die so bereitgestellt sind, daß sie den PCR entsprechen. Die Datenschreibschaltungen schreiben jeweils GR, PDROPm' und (PDRTPi', PDRQPi', PFAi', SKIPCNTi') über die Signalleitungen 304, 306 und 308 entsprechend den Befehlen PFRREQ, PDRREQ und PFREQ der Reihe nach in das PCR, das durch PFRWN, RPDRN und REQPCRN angegebene Nummern aufweist.
- Eine Bezugszahl 315 gibt 2 in jedem PCR bereitgestellte Ausgleich-(BAL)- Feldaktualisierungsschaltungen an. In jede der Aktualisierungsschaltungen 315 wird über eine Signalleitung 316 ein Ausgleichfeld BAL für sein entsprechendes PCR, über die Signalleitung 308 ein mit der Ausgabe von PFREQ verbundener BAL-Erhöhungsbefehl und über die Signalleitung 306 ein mit der Ausgabe von PDRREQ verbundener Ausgleich- (BAL)-Verringerungsbefehl eingegeben. Ein Ausgleich (BAL) wird hinsichtlich des Erhöhungsbefehls um Eins erhöht und hinsichtlich des Verringerungsbefehls um Eins verringert. Wenn beide Befehle gleichzeitig erhalten werden, wird ein aktualisierter Wert unverändert erzeugt und über eine Signalleitung 317 auf seinen entsprechenden Ausgleich BAL gesetzt. Demgemäß wird die Anzahl der Elemente von PDR, die das Lesen am Prozessor 2 nicht ausführen, aus denjenigen, die Anforderungen ausgegeben haben, am entsprechenden Ausgleich BAL angezeigt.
- Die Bezugszahlen 309, 311 und 313 geben jeweils PCR-Datenleseschaltungen an. In die Datenleseschaltungen 309, 311 und 313 wird der jeweilige Inhalt von PCR über die Signalleitungen 310, 312 und 314 eingegeben, sie wählen PCR mit den durch PFRM, RPDRN und REQPCRN angegebenen Nummern und geben den in Doppelworteinheiten festgelegten Inhalt (PDROPm, MOEm, RDCm) und (ORGi, LLi, PDRTPi, PDRQPi, NRi, PFAi, MODi, DLi, BUFi, SKIPi, SKIPPi, SKIPCNTi und SKIPGAPi) von PCR über eine Signalleitung 320, die Signalleitung 208 und die Signalleitung 206 aus. Weiterhin werden VLD- und IID-Felder aller PCR an die Signalleitung 208 ausgegeben und werden alle VLD-, ACT-, LA-, LAC-, BAL- und ORG-Felder in ähnlicher Weise an die Signalleitung 206 ausgegeben.
- Ein einzelnes PCR besteht aus vier Doppelwörtern, wie in den Fig. 14A bis 14D dargestellt ist. Für einen auf eine Unterbrechung oder dergleichen bezogenen Kontextwechsel muß ein Speichern/Wiederherstellen betreffender PCR durch ein Programm ausgeführt werden. Weil die jeweiligen Felder entsprechend Funktionen in Gruppen eingestuft werden und jeweils in Doppelwörtern zugewiesen werden und weil die Zugriffe durch das Programm in Doppelworteinheiten ausgeführt werden, können auf unnötige Funktionen bezogene Gruppen aus den zu speichernden und wiederherzustellenden Objekten ausgeschlossen werden. Demgemäß kann die vorteilhafte Wirkung erreicht werden, daß die Anzahl der mit der Unterbrechungsverarbeitung und -initialisierung verbundenen Programmausführungsschritte verringert werden kann.
- Die Übertragung von Informationen zwischen GR und PCR wird entsprechend dem zuvor erwähnten zweckgebundenen Übertragungsbefehl ausgeführt. Es sei bemerkt, daß ein diskreter Zugriff auf ein bestimmtes Feld auch als ein PCR-Zugriff zusätzlich zu den Doppelworteinheiten über GR ausgeführt werden kann. Weil diese leicht durch eine gewöhnliche Technik verwirklicht werden können, werden detaillierte Strukturen zum Veranschaulichen von ihnen nicht speziell dargestellt.
- Die Bedeutungen der jeweiligen Felder von PCR werden weiter unten beschrieben. 1) Erste Gruppe: Basis-Vorauslesesteuerinformationen
- - Gültig-Kennzeichen; VLD
- VLD zeigt, daß das entsprechende PCR bei dem gegenwärtigen Kontext gültig ist.
- - Aktiv-Kennzeichen; ACT
- ACT stellt dar, daß das entsprechende PCR in einem aktiven Zustand ist. Wenn PCR aktiv ist, wird eine festgelegten Daten entsprechende Vorausleseoperation ausgeführt.
- - Ursprünglich-Kennzeichen; ORG
- ORG stellt dar, daß das entsprechende PCR einen sequentiellen Vektor oder einen indexierten Vektor sowie ein anfängliches PCR einer PCR-Verknüpfung beim Vorauslesen in einer verknüpften Liste festlegt. In einigen Fällen wird möglicherweise ein PCR, dessen ORG eingeschaltet ist, als ein ursprüngliches PCR bezeichnet und andere werden als verknüpfte PCR bezeichnet.
- - Vorauslesedatenlänge; DL
- DL legt eine vorauszulesende Operandenlänge eines Speicherzugriffsbefehls fest. Die Operandenlänge ist jedoch als eine Exponente definiert, die beim Ausdrücken durch das Quadrat mit einer Breite von 2 erhalten wird.
- - Vorauslesepuffer-Festlegung; BUF
- BUF legt einen Ort, an dem vorausgelesene Daten gesichert werden, also einen Vorauslesepuffer, fest. Wenn BUF ausgeschaltet ist, werden Daten nur in einem als Vorauslesepuffer verwendeten PDR gespeichert. Wenn BUF eingeschaltet ist, werden Daten sowohl in einem PDR als auch in einem Cache-Speicher gespeichert. Wenn BUF ausgeschaltet ist, ist nämlich bei einem Cache-Fehlgriff eine einzige Dateneinheit aus dem Speicher 1 erforderlich, während eine Leitungsübertragung aus dem Speicher 1 erforderlich ist, wenn BUF eingeschaltet ist.
- - Befehlsidentifikator; IID
- IID wird zum Identifizieren eines Speicherzugriffsbefehls verwendet, der zu einem Objekt für das entsprechende Vorauslesen wird. Eine Basisregisternummer für einen Speicherzugriffsbefehl wird zu seiner Identifikation verwendet. Dieses Feld wird beim Ausführen des Speicherzugriffsbefehls mit der Basisadressen-Registernummer verglichen. Wenn sie übereinstimmen, überträgt ein Vorauslesedatenregister Daten zum entsprechenden Speicherzugriffsbefehl.
- - Vorgriffssteuerungs-Festlegung; IA
- LA macht eine Vorgriffs- oder Vorauslesesteuerfunktion wirksam. Wenn die Vorauslesesteuerftmnktion gültig oder wirksam ist, legt ein weiter unten zu beschreibender Vorgiffszählwert LAC für den entsprechenden Speicherzugriffsbefehl die Anzahl der Ausführungen, bei denen das Vorgreifen erlaubt ist, fest.
- - Vorgriffszählwert; LAC
- LAC legt einen Wert, der die maximale Anzahl der Ausführungen, bei denen das Vorauslesen erlaubt ist, angibt, für den entsprechenden Speicherzugriffsbefehl fest.
- - Adressensprung-Festlegung; SKIP
- SKIP macht eine Adressensprungfunktion gültig oder wirksam. Wenn die Adressensprungftmnktion wirksam ist, wird eine Vorausleseadresse bei jeder Datenvorausleseanforderung um eine durch eine weiter unten zu beschreibende Sprunglücke SKIPGAP festgelegte Länge entsprechend der durch einen weiter unten zu beschreibenden Sprungzählwert SKIPCNT festgelegten Zahl aktualisiert.
- - PDR-Oben-Zeiger; PDRTP
- PDRTP gibt die Position eines Elements zum Sichern von Daten aufgrund der spätesten Anforderung in einem PDR an.
- - Verarbeitungsanforderungs-Zählwert; BAL
- BAL gibt die Anzahl der Verarbeitungsanforderungen an, bei denen keine Datenübertragung vorgenommen wird.
- - Anzahl der Bezugnahmen; NR
- NR gibt an, wieviel Male auf dieselben aufgrund der Festlegung des entsprechenden PCR ausgelesenen Daten Bezug genommen wird. Die hier genannte Bezugnahme umfaßt eine Bezugnahme, die als eine Adresse oder ein Modifizierer (die beide als verknüpfte Daten bezeichnet werden) definiert ist, die für das als ein Operand definierte Datenlesen aufgrund des entsprechenden Speicherzugriffsbefehls und einer durch ein nachgeordnetes PCR festgelegten Datenvorausleseoperation erforderlich sind. NR gibt die abhängig von einer Datenstruktur bestimmte Anzahl an. Bei der vorliegenden Ausführungsform kann jedoch die Anzahl maximal auf 16 festgelegt werden. Einzelne im PDR gespeicherte Daten gelten nach der durch NR festgelegten Anzahl von Bezugnahmen als verwendet und abgeschlossen. Es sei auf später zu beschreibende RC-Felder in jedem PDSR verwiesen.
- - Maskenüberschreibungs-Festlegung; MOE
- MOE legt fest, ob eine Datenleseanforderung, die von einem PDR in Zusammenhang mit der Ausführung eines Speicherzugriffsbefehls erzeugt wurde, vom Wert eines Maskenregisters abhängt, der eine Bedingung für das Ausführen des entsprechenden Speicherzugriffsbefehls angibt. Falls eine WENN-Anweisung in einer Schleife existiert und der entsprechende Speicherzugriff abhängig von einer WENN-Erfiillungsbedingung ausgeführt wird, wird ein leeres Lesen von PDR zu der Zeit, zu der ein Maskenwert 0 ist, durch Versetzen von MOE in einen eingeschalteten Zustand vorgenommen.
- - PDR-Aus-Zeiger; PDROP
- PDROP gibt die Position jedes Elements in einem PDR an, an der zu übertragende Daten gespeichert werden, wenn der entsprechende Speicherzugriffsbefehl ausgeführt wird.
- - Umleitungsdaten-Zählwert; RDC
- RDC gibt die Anzahl der Elemente, die durch eine später zu beschreibende Vorauslesepuffer-Umleitungsfunktion umzuleiten sind, von den in einem PDR gesicherten wirksamen Daten an. Dies wird später bei der Unterbrechungsverarbeitung in Einzelheiten beschrieben.
- 2) Zweite Gruppe: Optionsinformationen
- - Vorausleseadresse; PFA
- PFA stellt eine Speicheradresse zum Vorauslesen dar, die zusammen mit der Ausgabe einer Anforderung bei einem Ursprungs-PCR (sequentieller Vektor) auf die nächste Adresse gebracht wird. Daher wird ein aus einem PFA-Feld ausgelesener Wert bei der Ausgabe der nächsten Vorausleseanforderung unverändert als die Vorausleseadresse angesehen. Bei einem verknüpften PCR wird eine durch ein vorbestimmtes Verfahren erzeugtes und im entsprechenden RFA-Feld gespeicherte Adresse als die Vorausleseadresse angesehen.
- 3) Dritte Gruppe; Optionsinformationen
- - Adressenmodifizierer; MOD
- MOD ist ein 64-Bit-Adressenmodifizierer. Beim sequentiellen Vektor legt MOD ein Intervall zwischen Datenelementen fest. Bei einem indexierten Vektor legt MOD eine Verschiebung gegenüber einer Leitadresse eines Zielvektors fest, während MOD bei einer verknüpften Liste eine Verschiebung gegenüber einer Adresse in einer verknüpften Tabelle festlegt. Die Einzelheiten von MOD werden später mit Bezug auf die Fig. 15A bis 15C beschrieben.
- 4) Vierte Gruppe; Optionsinformationen
- - Vorauslesefestlegung für eine verknüpfte Liste; LL
- LL zeigt, daß das entsprechende PCR ein nachgeordnetes PCR zum Festlegen eines Vorauslesens in der verknüpften Liste ist. Zu dieser Zeit wird eine Speicheradresse durch Hinzufügen aus einem Stamm-PCR ausgelesener verknüpfter Daten zum Adressenmodifizierer des entsprechenden PCR erzeugt und bei einer PFA gesichert.
- - Verknüpfungs-PCR-Nummer; LPCR
- LPCR zeigt die Nummer eines Stamm-PCR, die zum Vorauslesen eines indexierten Vektors und einer verknüpften Liste verwendet wird. Es können normalerweise mehrere nachgeordnete PCR mit einem gemeinsamen PCR als Stamm festgelegt werden. Wenn daher unter Verwendung beispielsweise eines gemeinsamen indexierten Vektors auf zwei Typen von Zielvektoren Bezug genommen wird, kann das Vorauslesen selbst dann angewendet werden, wenn eine Index-Bezugnahme zum Erzeugen von Adressen der zwei Typen von Zielvektoren so programmiert ist, daß aus einem vom Speicher 1 verschiedenen GR ausgelesen wird, in dem ein Index für einen Typ des Zielvektors gespeichert wurde. Dies ist ein anhand der vorliegenden Ausführungsform erhaltenes Merkmal.
- - PDR-Anforderungszeiger; PDRQP
- PDRQP gibt die Position jedes Elements in einem Stamm-PDR an, an der Daten zum Zugriff auf einen Adressenerzeugungsindex oder eine Tabellenadresse bei einem indexierten Vektor oder einem Vorauslesen einer verknüpften Liste gesichert werden.
- - Sprungintervall; SKIPP
- SKIPP zeigt ein Anforderungsintervall, bei dem ein später zu beschreibender Adressensprung ausgeführt wird.
- - Sprunglücke; SKIPGAP
- SKIPGAP gibt den Wert eines Adresseninkrements bei jedem Adressensprung an. Wenn der Adressensprung ausgeführt wird, wird eine durch Addieren von SKIPGAP zu PFA erhaltene Adresse als die nächste Adresse angesehen.
- - Sprungzählwert; SKIPCNT
- SKIPCNT gibt die Anzahl der nach dem vor kurzem ausgeführten Adressensprung ausgegebenen Anforderungen an.
- Als nächstes werden in den Fig. 15A bis 15C ausgewählte Beispiele von PCR und darauf basierten Datenstrukturen dargestellt. Felder, die keine Bedeutung für ihre Beschreibung haben, sind jedoch nicht dargestellt. Zwei PCR werden zum Vorauslesen des indexierten Vektors verwendet. Zum Vorauslesen einfacher verknüpfter Listen werden der Anzahl ihrer Ebenen entsprechende PCR verwendet. (1): PCRi legt ein Verfahren zum Vorauslesen eines Vektors B(i) fest. RFA legt eine Leitadresse fest, und der Adressenmodifizierer MOD legt ein Bezugsintervall fest. (2): PCRi und PCR2 legen ein Verfahren zum Vorauslesen eines indexierten Vektors fest. PCRi entspricht einem indexierten Vektor, und PCR2 entspricht einem Zielvektor. Insbesondere zeigt ein LPCR-Feld in PCR2, daß ein Stamm-PCR ein PCRi ist. (3): PCRi bis PCR3 legen ein Verfahren zum Vorauslesen einer dreistufigen verknüpften Liste fest. Durch PCR2 und PCR3 festgelegte MOD geben Verschiebungen gegenüber den Kopfteilen der Tabellen C und D für vorgesehene Daten c bzw. d an.
- Fig. 4 zeigt Einzelheiten einer Vorausleseanforderungs-Steuereinheit 202. Eine Bezugszahl 401 gibt sechzehn Sätze von PCR-Bereit-Prüfschaltungen 0 bis 15 an, die so bereitgestellt sind, daß sie PCR0 bis PCRi5 entsprechen und prüfen, ob sich jeweilige PCR im Bereitzustand zum Ausgeben von Vorausleseanforderungen befinden. Den PCR-Bereit- Prüfschaltungen k wird der Inhalt SUSP und PDRDPT eines Vorauslesestatusregisters PSR über die Signalleitung 206 zugeführt, werden VLDk, ACTk, LAk, BALk, LACk, ORGk, LPCRk und PDRQPk von einem Vorauslesesteuerregister PCRk zugeführt, werden RC- und DA-Felder von allen PDSR über die Signalleitung 210 zugeführt und wird ein RE- QBSY von der Cache-Anforderungseinheit 101 über die Signalleitung 120 zugeführt. Eine Bezugszahl 402 gibt einen Wähler an, der entsprechend einem PDSRx, das einem PDR mit einer durch LPCRk angegebenen Nummer (deren Wert als x defniert ist) entspricht, und entsprechend einem Element mit einer durch PDRQPk angegebenen Nummer (deren Wert als y definiert ist) Statuskennzeichen RCx(y) und DAx(y) hinsichtlich der RC- und DA-Felder aller PDSR auswählt und die ausgewählten Kennzeichen über eine Signalleitung 412 an die entsprechende Schaltung 403 ausgibt. Wenn PCRk ein verknüpftes PCR ist, gibt das Statuskennzeichen DAx(y) an, ob für PCRk zum Erzeugen einer Vorausleseadresse erforderliche verknüpfte Daten von einem Stamm-PCR begleitet in ein PDRx gelesen werden. Es sei bemerkt, daß DAx(y) angibt, daß seine Angabe wirksam ist, wenn ein Zählwert RCx(y) für nicht stattgefundene Bezugnahmen von Null abweicht.
- Eine Bezugszahl 403 gibt die Bereitstatus-Prüfschaltung zum Prüfen, ob sich PCRk in einem Bereitzustand befindet, und zum Ausgeben eines das Prüfergebnis angebenden RDYk-Signals an. Die Symbole &, #, ^ und < geben ein logisches Produkt, eine logische Summe, ein logisches NICHT bzw. ein Ungleichheitszeichen an. Bedingungen, unter denen RDYk erzeugt wird, sind innerhalb eines Blocks dargestellt, der die in der Zeichnung dargestellte Schaltung 403 angibt. Die Bedingungen haben jedoch folgende Bedeutungen:
- (1) Der Vorauslesemechanismus befindet sich nicht im Anforderungsstoppzustand (SUSP ist ausgeschaltet)
- (2) Die Cache-Anforderungseinheit 101 kann die Vorausleseanforderung annehmen (REQBSY ist ausgeschaltet)
- (3) Das entsprechende PCR ist wirksam (VLD ist eingeschaltet) und befindet sich im aktiven Zustand (ACT ist eingeschaltet)
- (4) Wenn die Vorgriffs- oder Vorauslesesteuerung festgelegt ist (LA ist eingeschaltet), erreicht die Anzahl der Verarbeitungsanforderungen (BAL) nicht den Vorgriffszählwert (LAC). Andererseits erreicht BAL nicht die Tiefe von PDR (PDRDPT), wenn die Vorgriffssteuerung nicht festgelegt ist (LA ist ausgeschaltet).
- (5) Wenn das entsprechende PCR das Ursprungs-PCR ist (ORG ist eingeschaltet) oder nicht das Ursprungs-PCR ist (ORG ist ausgeschaltet), werden die verknüpften Daten, die für das entsprechende PCR zum Erzeugen der Vorausleseadresse erforderlich sind, in ihr entsprechendes PDR gelesen (DAx(y) ist eingeschaltet).
- Dem jeweiligen PCR zugeordnete Bereit-Signale RDY0 bis RDY15 werden zu einer Vorausleseanforderungs-Ausgabeschaltung 404 gesendet, um dadurch anhand von diesen als nächstes ein PCR zum Ausgeben einer Anforderung zu wählen. Eine Bezugssignal 405 gibt ein ID-Register des angeforderten PCR an, das einen PCR-Identifikator speichert, der an der letzten Stufe eine Anforderung ausgegeben hat, und meldet es der Vorausleseanforderungs-Ausgabeschaltung 404 über eine Signalleitung 406. Die Vorausleseanforderungs-Ausgabeschaltung 404 prüft Bereit-Zustände von PCR beginnend mit einem PCR, das dem PCR folgt, welches die Anforderung an der letzten Stufe ausgegeben hat. Die Vorausleseanforderungs-Ausgabeschaltung 404 bestimmt das zuerst gefundene bereite PCR als dasjenige, das beim nächsten Mal eine Anforderung ausgeben soll, und gibt seinen Identifikator als eine Anforderung PCR ID REQPCRN aus. Die RDY-Signale werden in ansteigender Reihenfolge der PCR-Identifikatoren geprüft und werden nach dem 15-ten Signal wieder vom 0-ten Signal an geprüft. Wenn das bereite PCR existiert, gibt die Vorausleseanforderungs-Ausgabeschaltung 404 eine Vorausleseanforderung PFREQ aus. Ansprechend auf PFREQ sendet die Vorausleseanforderungs-Ausgabeschaltung 404 eine REQPCRN über eine Signalleitung 407 zum ID-Register 405 des angeforderten PCR, um seinen Inhalt zu aktualisieren.
- Weil die oben angegebene Anforderungssteuerung ausgeführt wird, kann das Programm die in der Schleife vorauszulesenden Speicherzugriffsbefehle entsprechend der Reihenfolge ihrer Beschreibung leicht und wirksam dem PCR zuweisen.
- Die Vorausleseanforderungs-Ausgabeschaltung 404 sendet PFREQ und REQPCRN (deren Wert als i definiert ist) über die Signalleitung 205 zur Vorauslesestatus-Steuereinheit 201. Daraufhin liest die Vorauslesestatus-Steuereinheit 201 den Inhalt der dadurch festgelegten PCRi, damit er über die Signalleitung 206 in der Vorausleseanforderungs- Steuereinheit 202 aufgenommen wird.
- Eine Bezugszahl 408 gibt eine Zeigeraktualisierungseinheit an, die das Aktualisieren von PDRTPi und PDRQPi ansprechend auf PFREQ steuert. Demgemäß nimmt die Zeigeraktualisierungseinheit 408 den aktuellen PDRTPi und PDRQPi über die Signalleitung 206 auf und gibt durch Addieren von 1 zu diesen erhaltene Werte, von denen PDRTPi ein Modulus ist, als aktualisierte Werte aus, die über die Signalleitung 205 zur Vorauslesestatus-Steuereinheit 201 gesendet werden. Diese Werte werden ansprechend auf PFREQ in das entsprechende Feld von PCRi geschrieben.
- Eine Bezugszahl 409 gibt eine Vorausleseadressen-Steuerschaltung an, die einen aktualisierten Wert PFAi' der Vorausleseadresse und einen aktualisierten Wert SKIPCNTi' des Adressensprung-Zählwerts über die Signalleitung 205 zur Vorauslesestatus-Steuereinheit 201 sendet.
- Eine Bezugszahl 410 gibt eine PDSR-Aktualisierungsschaltung zum Steuern der Initialisierung oder Aktualisierung eines in Verbindung mit der Ausgabe von PFREQ erforderlichen PDSR an. Bei der Ausgabe der Vorausleseanforderung sendet die PDSR-Aktualisierungsschaltung 410 Informationen zum anfänglichen Setzen von Statuskennzeichen eines mit einem PDRi (j) zum Speichern von Daten verbundenen PDSRi (j) über die Signalleitung 209 zur Vorauslesedateneinheit 203. Diese Signale sind anfänglich gesetzte Werte von PFREQ, REQPCRN, PDRTPi, NRi, PFAi und DIi(j). Wenn weiterhin die entsprechende Vorausleseanforderung von einem verknüpften PCR erzeugt wird, sendet die PDSR-Aktualisierungsschaltung 410 auch Informationen zum Aktualisieren eines Statuskennzeichens RC eines PDR zum Speichern verknüpfter Daten gleichzeitig mit dem oben angegeben Vorgang.
- Die Vorausleseanforderungs-Steuereinheit 202 sendet die Vorausleseanforderung und davon begleitete Informationen über die Signalleitung 107 zur Cache-Anforderungseinheit 101. Als die begleiteten Informationen können eine PDR-Nummer REQPCRN, an der Daten gespeichert werden, und ihre Elementposition PDRTPi, eine Vorausleseadresse PFAi und eine BUFi erwähnt werden.
- Die Vorausleseadressen-Steuerschaltung 409 wird anhand von Fig. 5 in näheren Einzelheiten beschrieben.
- Eine Bezugszahl 501 gibt einen Adressenaddierer an, der das Ergebnis der Addition von Eingangsdaten als den aktualisierten Wert PFAi' der Vorausleseadresse über die Signalleitung 205 zur Vorauslesestatus-Steuereinheit 201 sendet. Die Eingangsdaten werden von den Wählern 502 und 503 über die Signalleitungen 512 bzw. 513 zugeführt.
- Der Wähler 502 wählt eines von einer PFAi, einem Index X und verknüpften Daten DATAp(q) entsprechend Steuerleitungen SELX und SELL. Die verknüpften Daten DA- TAp(q) werden von der Vorauslesedateneinheit 203 über die Signalleitung 210 eingegeben. Eine Bezugszahl 504 gibt eine Verschiebungseinrichtung an, der die DATAp(q) zugeführt werden und die das Ergebnis ausgibt, das durch Verschieben der Daten um die durch eine Vorausleselänge DLi als den Index X festgelegte Anzahl von Bits in Richtung höherwertiger Bits erhalten wird. Eine Bezugszahl 505 gibt eine Steuersignal-Erzeugungsschaltung für den Wähler 505 an, in die ein ORGi und eine LLi zur Erzeugung von SELX und SELL eingegeben werden. SELX stellt einen Wählbefehl für den Index X dar und ist eingeschaltet, wenn ein Zielvektor bezüglich eines indexierten Vektors vorausgelesen wird. Weiterhin zeigt SELL einen Wählbefehl für die verknüpften Daten DATAp(q) und ist eingeschaltet, wenn Daten einer zweiten Ebene oder darunter in einer verknüpften Liste vorausgelesen werden.
- Der Wähler 503 wählt eines von einem MODi und einem SKIPGAPi entsprechend einer Steuerleitung SELSKIP. Wenn ein SKIPCNTi ein SKIPPi nach Festlegen des Adressensprungs erreicht (wenn SKIPi eingeschaltet ist), wird SELSKIP eingeschaltet. Daher vergleicht der Vergleicher 506 SKIPCNTi und SKIPPi und sendet das Vergleichsergebnis über eine Signalleitung 507 zu einer UND-Schaltung 509. Die UND-Schaltung 509 versetzt die Ausgabe-SELSKIP in den eingeschalteten Zustand, wenn sie aufgrund des Vergleichsergebnisses übereinstimmen und SKIPi eingeschaltet ist. Eine Bezugszahl 508 gibt eine Inkrementeinrichtung zum Addieren von 1 zu SKIPCNTi an, wobei SKIPPi ein Modulus ist, der einen aktualisierten Wert von SKIPCNTi zur Vorauslesestatus-Steuereinheit 201 sendet. Die Vorauslesestatus-Steuereinheit 201 ermöglicht, daß das PCRi ansprechend auf PFREQ den aktualisierten Wert annimmt.
- Es ist möglich, einen aktualisierten Wert der Vorausleseadresse gemäß der Vorausleseanforderung zu erzeugen und ihn ansprechend auf PFREQ wie oben beschrieben gesteuert in das PCRi aufzunehmen.
- Die PDSR-Aktualisierungsschaltung wird in näheren Einzelheiten mit Bezug auf Fig. 6 beschrieben. Wenn eine PFREQ vom Ursprungs-PCR (ORGi ist eingeschaltet) ausgegeben wird, werden dem PDSRi(j) zugehörige Statusinformationen RC, RI, DA, DI und MDKEY anfänglich gesetzt. Insbesondere wird die Anzahl der Bezugnahmen NRi auf RCi(j) gesetzt, und 1, 0 und 0 werden für RIi(j), DAi(j) bzw. DIi(j) gesetzt. Bei der vorliegenden Ausführungsform werden 16 höherwertige Bits des PFAi auf einen MDKEYi(j) gesetzt. Daher erfaßt die PDSR-Aktualisierungsschaltung 410 PFREQ und REQPCRN von der Vorausleseanforderungs-Ausgabeschaltung 404 über eine Signalleitung 411 und nimmt PDRTPi, NRi und PFAi von der Vorauslesestatus-Steuereinheit 201 über die Signalleitung 206 auf. Die PDSR-Aktualisierungsschaltung 410 sendet diese über die Signalleitung 209 unverändert zur Vorauslesedateneinheit 203.
- Wenn PFREQ vom verknüpften PCR (ORGi ist ausgeschaltet) ausgegeben wird, ist es erforderlich, die zum PDSR, in dem verknüpfte Daten gespeichert werden, gehörenden Statusinformationen zu aktualisieren (1 davon zu subtrahieren). Daher nimmt die PDSR- Aktualisierungsschaltung 410 das ORGi über die Signalleitung 206 auf. Die PDSR-Aktualisierungsschaltung 410 erzeugt auch ein RC-Aktualisierungsbefehl-DECRC-Signal unter Verwendung von 601 und gibt es an die Signalleitung 209 aus. Weiterhin liest die PDSR- Aktualisierungsschaltung 410 eine (als = p angesehene) Nummer LPCRi des entsprechenden PDSR und eine (als = q angesehene) Elementposition PDRQPi über die Signalleitung 206 aus und sendet sie zur Vorauslesedateneinheit 203.
- Ein Wähler 602 wählt den Inhalt DIp einer durch die LPCRi angegebenen Nummer aus DI-Feldern aller PDSR und führt ihn einem Wähler 603 zu. Der Wähler 603 wählt den Inhalt DIp(q) eines durch PDRQPi festgelegten Elements aus dem Inhalt DIp und führt ihn einer Ungültig-Kennzeichen-Erzeugungsschaltung 605 zu. Die Ungültig-Kennzeichen-Erzeugungsschaltung 605 erzeugt einen anfänglich gesetzten Wert des DIi(j) zum Zeitpunkt der Ausgabe der PFREQ vom verknüpften PCR. Eine Bedingung zum Erzeugen des Werts durch die Ungültig-Kennzeichen-Erzeugungsschaltung 605 bedeutet, daß dann, wenn zum Erzeugen einer Adresse erforderliche PDR-Daten nach der Ausgabe einer verknüpften Anforderung ungültig sind (DIp(q) ist eingeschaltet), die Möglichkeit besteht, daß die erzeugte Adresse und unter Verwendung der Adresse ausgelesene Daten ungültig sind, wodurch es erforderlich wird, das DI-Kennzeichen des entsprechenden PDSR auf eingeschaltet (ungültig) zu setzen. Der anfänglich gesetzte Wert wird zusammen mit PFREQ zur Vorauslesedateneinheit gesendet und auf DIi(j) gesetzt.
- Die Vorauslesedateneinheit 203 wird in näheren Einzelheiten mit Bezug auf Fig. 7 beschrieben. Die Vorauslesedateneinheit ist mit sechzehn Sätzen von Vorauslesedatenschaltungen 701 versehen, die dem PCR0 bis 15 entsprechen. Jede der Vorauslesedatenschaltungen ist mit dem Vorauslesedatenregister (PDR) 704 versehen, das aus mehreren Datenregisterelementen besteht, in denen jeweils 8-Byte-Daten gespeichert sind. Die Anzahl der ein einzelnes PDR bildenden Datenregisterelemente ist durch ein PDRDPT-Feld des entsprechenden PSR dargestellt. Es gibt einen Fall, in dem die sämtlichen sechzehn Vorauslesedatenregister als PDR bezeichnet werden. Aus dem Cache-Speicher 1001 ausgelesene Daten CDATA werden über die Signalleitung 108 im entsprechenden PDR gespeichert. Ein Datenzuführungsbefehl CADV, eine PDR-Nummer CWPDRN und eine Speicherelementposition CPDRIP für diesen Zweck werden von der Cache-Anforderungseinheit 101 über die Signalleitung 120 zugeführt. Aus dem Speicher 1 ausgelesene Daten MDATA werden über die Signalleitung 109 im entsprechenden PDR gespeichert. Ein Datenzuführungsbefehl MADV, eine PDR-Nummer MWPDRN und eine Speicherelementposition MPDRIP für diesen Zweck werden von der Speicheranforderungseinheit 103 über die Signalleitung 121 zugeführt.
- Zum Auslesen von Daten aus dem entsprechenden PDR nach dem Ausführen eines Befehls durch den Prozessor 2 werden eine PDRREQ, eine RPDRN und eine PDROPm von der Vorauslesedaten-Lesesteuereinheit 204 geliefert. Jedes einzelne PDR liefert ein Element über eine Signalleitung 709 an einen Wähler 710. Der Wähler 710 wählt es ansprechend auf die (als = n angesehene) PDROPm und führt das Ergebnis der Auswahl über eine Signalleitung 712 einem Wähler 713 zu. Der Wähler 713 wählt Daten aus einem gewünschten PDR auf der Grundlage der (als = m angesehenen) RPDRN. Diese Ausgangsdaten DATAm(n) werden über die Signalleitung 110 zur Cache-Dateneinheit 102 gesendet. Zum Lesen verknüpfter Daten aus dem entsprechenden PDR ansprechend auf die Ausgabe einer Vorausleseanforderung vom verknüpften PCR werden LPCRi und PDRQPi von der Vorausleseanforderungs-Steuereinheit 202 über die Signalleitung 209 zugeführt. Jedes einzelne PDR führt einem Wähler 711 über die Signalleitung 709 ein Element zu. Der Wähler 711 wählt es ansprechend auf PDRQPi (= q) und führt es über eine Signalleitung 714 einem Wähler 715 zu. Der Wähler 715 wählt auf der Grundlage von LPCRi (= p) Daten aus einem gewünschten PDR. Diese ausgegebenen DATAp(q) werden über die Signalleitung 210 zur Vorausleseanforderungs-Steuereinheit 202 gesendet.
- Eine Bezugszahl 705 gibt ein Vorauslesedaten-Statusregister PDSR zum Sichern von Statusinformationen, die jeweiligen das PDR bildenden Elementen entsprechen, an. Die Bedeutung der jeweiligen im PDSR gesicherten Statusinformationen, ihre anfängliche Festlegung und ihre Aktualisierungssteuerung werden weiter unten beschrieben.
- - Zählwert für nicht stattgefundene Bezugnahmen; RC
- Der RC gibt die Anzahl der noch nicht ausgeführten Bezugnahmen aus der Anzahl der Bezugnahmen NR, die gegenüber dem entsprechenden Element in einem PDR vorgenommen werden müssen, an. Ein Element, das angibt, daß der RC 0 wird, wird bereits verwendet und ist zum Speichern als nächstes auszulesender Daten verwendbar. Wenn eine Vorausleseanforderung PFREQ bezüglich des entsprechenden Elements unter Verwendung eines PCRi ausgegeben wird, wird der RC zum anfänglichen Festlegen des Werts eines Bezugszahl-NRi-Felds im PCRi verwendet. Daher werden eine PFREQ, eine REQPCRN, eine PDRTPi und eine NRi in das vorhandene Feld des PDSR 705 eingegeben. Sie werden jedesmal verringert, wenn Daten zum Prozessor 2 übertragen werden und ansprechend auf die Ausgabe einer verknüpften Anforderung ein Bezug darauf genommen wird. Um eine Datenaktualisierung zum Zeitpunkt der Ausgabe der verknüpften Anforderung auszuführen, werden ein DECRC, eine LPCRi und eine PDRQPi in das PDSR 705 eingegeben.
- Weiterhin werden eine PDRREQ, eine RPDRN und eine PDROPm in das PDSR 705 eingegeben, um eine Datenaktualisierung zum Zeitpunkt der Datenübertragung zum Prozessor 2 auszuführen.
- Jeweilige RI-, DA-, DI- und MDKEY-Kennzeichen, die weiter unten zu beschreiben sind, werden nur dann als gültig dargestellt, wenn RC von Null verschieden ist.
- - Anforderung-Ausgegeben-Kennzeichen; RI
- RI zeigt, daß eine Vorausleseanforderung zum Speichern von Daten im entsprechenden Element bereits ausgegeben wurde und die Daten noch nicht angekommen sind. Dieses Kennzeichen wird beim Ausgeben von PFREQ eingeschaltet, und es wird ausgeschaltet, wenn die Daten ankommen. Demgemäß werden in dieses Kennzeichen des PDSR 705 PFREQ, REQPCRN und PDRTPi zum Berücksichtigen der Zeit, zu der die Anforderung ausgegeben wird, CADV, CWPDRN und CPDRIP zum Berücksichtigen der Zeit, zu der die CDATA ankommen, bzw. MADV, MWPDRN und MPDRIP zum Berücksichtigen der Zeit, zu der die MDATA ankommen, eingegeben. Weil Schaltkreise zum Ein- und Ausschalten der jeweiligen Kennzeichen leicht konfiguriert werden können, wird auf ihre Beschreibung verzichtet. Später zu beschreibende Kennzeichen und Felder werden nicht in der gleichen Weise beschrieben.
- - Daten-Angekommen-Kennzeichen; DA
- DA stellt dar, daß die entsprechenden Daten bereits angekommen und gesichert sind. Dieses Kennzeichen wird ausgeschaltet, wenn PFREQ ausgegeben wird, während es nach der Ankunft der Daten eingeschaltet wird. Demgemäß werden in dieses Kennzeichen von PDSR 705 PFREQ, REQPCRN und PDRTPi zum Berücksichtigen der Zeit, zu der die Anforderung ausgegeben wird, CADV, CWPDRN und CPDRIP zum Berücksichtigen der Zeit, zu der die CDATA ankommen, bzw. MADV, MWPDRN und MPDRIP zum Berücksichtigen der Zeit, zu der die MDATA ankommen, eingegeben.
- - Daten-Ungültig-Kennzeichen; DI
- DI zeigt, ob ausgelesene und in das entsprechende PDR-Element gespeicherte Daten gültig sind. In einzelnen Elementen von PDR gespeicherte Daten werden als ungültig angesehen, wenn die Möglichkeit besteht, daß Daten an der entsprechenden Speicheradresse vor der Ausführung eines Speicherzugriffsbefehls aktualisiert oder erneuert werden. Überdies werden die Daten auch als ungültig angesehen, wenn bei der entsprechenden Daten-Bezugnahme eine Zugriffsausnahme erfaßt wird.
- Das anfängliche Setzen dieses Kennzeichens bei der Ausgabe von PFREQ unterscheidet sich abhängig davon, ob das entsprechende PCR das Ursprungs-PCR oder das verknüpfte PCR ist. Wenn das Ursprungs-PCR vorliegt, wird dieses Kennzeichen anfänglich auf 0 gesetzt. Wenn das verknüpfte PCR vorliegt, wird anfänglich ein Daten-Ungültig- Kennzeichen DIp(q) für verknüpfte Daten gesetzt. Dies liegt daran, daß wegen der Möglichkeit, daß eine zu erzeugende Adresse auch ungültig ist, wenn die verknüpften Daten ungültig sind, auf der Adresse basierte Daten als ungültig angesehen werden sollten. Daher wird ein anfänglich gesetzter Wert DIi(j) dieses PFREQ beigefügten Kennzeichens von der PDSR-Aktualisierungsschaltung 410 erzeugt und über die Signalleitung 209 in PDSR aufgenommen, wie in Fig. 6 beschrieben ist. PFREQ, REQPCRN und PDRTPi werden in PDSR eingegeben, um eine Aktualisierungszeit, eine PDSR-Nummer und eine Elementposition festzulegen.
- Wenn von der Cache-Anforderungseinheit 101 die Zugriffsausnahme erfaßt wird, sendet die Cache-Anforderungseinheit 101 die Zugriffsausnahme EXP zusammen mit dem CADV-Signal über die Signalleitung 120 und setzt das vorliegende Kennzeichen. CADV, CWPDRN und CPDRIP werden eingegeben, um die Aktualisierungszeit, die PDSR-Nummer und die Elementposition festzulegen.
- Wie im folgenden MDKEY beschrieben wird, wird das vorliegende Kennzeichen gesetzt, wenn die Möglichkeit besteht, daß vorausgelesene Daten gemäß dem vom Prozessor 2 ausgeführten Speicherbefehl aktualisiert wurden.
- Falls herausgefunden wird, daß die Daten in PDR ungültig sind, wenn der die vorausgelesenen Daten anfordernde Speicherzugriffsbefehl ausgeführt wird, werden die entsprechenden Daten vernachlässigt, und eine aufgrund des Speicherzugriffsbefehls erzeugte Speicheranforderung wird aktiviert, um Daten wie gewöhnlich aus dem Cache-Speicher oder dem Speicher 1 auszulesen. Diese Operation wird in der vorliegenden Beschreibung als Vorauslesepuffer-Umleitung PBR bezeichnet, sie wird jedoch in näheren Einzelheiten beschrieben.
- - Aktualisierungserfassungsschlüssel; MDKEY
- MDKEY ist ein Schlüssel zum Erfassen des Vorhandenseins oder Fehlens einer Aktualisierung der Adresse aller vorausgelesenen Daten. MDKEY legt die Vorausleseadressen oder einige von ihnen bei der Ausgabe von PFREQ fest. Daher werden PFREQ, REQPCRN und PFAi in das vorliegende Feld eingegeben.
- Eine Bezugszahl 706 gibt vier Zustände von Vergleichern zum Erfassen der Aktualisierung an, die in allen PDR-Elementen bereitgestellt sind. Der Vergleicher vergleicht die vom Prozessor 2 gesendete Operandenadresse PRADR und den über eine Signalleitung 707 zugeführten Wert von MDKEY ansprechend auf die vom Prozessor 2 über die Signalleitung 106 gesendete Speicherbefehl-Ausführungsanweisung ST. Wenn aufgrund des Vergleichsergebnisses herausgefunden wird, daß sie miteinander übereinstimmen, werden die entsprechenden PDR-Daten als ungültig angesehen und wird das DI-Kennzeichen des entsprechenden Elements über eine Signalleitung 708 in den eingeschalteten Zustand (auf ungültig) gesetzt. Bei der Ausführungsform, bei der MDKEY als einige der Vorausleseadressen dargestellt ist, wird nur der entsprechende Teil der Adressen damit verglichen. Zu dieser Zeit wird ein Vergleich selbst dann durchgeführt, wenn die Adresse in der Praxis nicht mit dem oben angegebenen Wert übereinstimmt. In diesem Fall tritt jedoch hinsichtlich des Gewährleistens der richtigen Arbeitsweise eines Programms kein Problem auf, weil der Speicherzugriffsbefehl bei der PBR-Operation Daten ausliest.
- Eine Bezugszahl 717 gibt eine Schaltung zu einer ODER-Verknüpfung aller RI- Kennzeichen an. Die Schaltung sendet ein Ausgangs-PFBSY über die Signalleitung 213 zur Vorauslesestatus-Steuereinheit 201. PFBSY zeigt, daß eine Anforderung ausgegeben wurde, jedoch noch keine Daten angekommen sind. Ein Programm nimmt darauf Bezug, um zu bestätigen, daß die Vorausleseoperation nach Erzeugung einer Unterbrechung in einen Pausezustand versetzt wurde.
- Jede Vorauslesedatenschaltung sendet die RC-, DA- und DI-Kennzeichen aller PDSR über die Signalleitung 210 zur Vorausleseanforderungs-Steuereinheit 202 und überträgt RC, RI, DA und DI über die Signalleitung 211 zur Vorauslesedaten-Lesesteuereinheit 204.
- Fig. 12 zeigt ein Zustandsübergangsdiagramm, das sich auf jedes Element eines PDR bezieht und durch die vier Typen von Statuskennzeichen RC, RI, DA und DI angegeben ist.
- Fig. 8 gibt die Vorauslesedaten-Lesesteuereinheit 204 zum Lesen von Daten aus jedem PDR und zum Steuern der Übertragung der gelesenen Daten zum Prozessor 2 und dergleichen an.
- Die Vorauslesedaten-Lesesteuereinheit 204 nimmt ansprechend auf die Ausführung des Speicherzugriffsbefehls vom Prozessor 2 die Speicheranforderung PRREQ, die Speicherzugriffsbefehl-Decodierinformationen LD, die Basisregisternummer BRN des Speicherzugriffsbefehls und den Maskenregisterwert MK, der die Ausführungsbedingung für den Speicherzugriffsbefehl angibt, über die Signalleitung 106 auf. Wenn MK ausgeschaltet ist, muß der entsprechende Befehl vom Standpunkt des Programms her ungültig gemacht werden. Die Verarbeitung wird jedoch so ausgeführt, als ob MK in der Vorrichtung eingeschaltet wäre, und es wird nur das Schreiben ihres Ergebnisses unterdrückt. Demgemäß kann die Vorauslesedaten-Lesesteuereinheit 204 Informationen über diesen Befehl sowie PRREQ unabhängig vom Wert von MK aufnehmen. Eine Bezugszahl 809 gibt ein Register zum Speichern dieser aufgenommenen Informationen an. Wenn die die entsprechenden Daten anfordernde PRREQ vor der Ankunft der vorausgelesenen Daten ausgegeben wird, sichert das Register 809 diese Informationen bis zur Ankunft der Daten. Daher wird das später zu beschreibende PDRWAIT-Signal als eine Haltebedingung in das Register 809 eingegeben.
- Eine Bezugszahl 801 gibt sechzehn Sätze von Vergleichern an, die jedem PCR entsprechen. Die Vergleicher vergleichen ihre jeweiligen IID-Felder und die BRN, die vom Register 809 zugeführt wurden, und senden die jeweiligen Vergleichsergebnisse über Signalleitungen 802 zu einem Codierer 803 und einer ODER-Schaltung 810. Es sei bemerkt, daß ein Vergleich für gültige PCR (VLD ist eingeschaltet) allein vorgenommen wird. Das Vergleichsergebnis hinsichtlich jedes unwirksamen PCR ist so aufgebaut, daß 0 sichergestellt ist.
- Der Codierer 803 codiert eine Nummer eines PCR, an der aufgrund der Vergleichsergebnisse die Übereinstimmung erhalten wird, und gibt sie als ein RPDRN-Signal aus.
- Die Ausgabe der ODER-Schaltung 810 ist ein MATCH-Signal, das angibt, daß jedes dem entsprechenden Speicherzugriffsbefehl zugeordnete gültige PCR existiert.
- Einem Wähler 804 werden die RC-, RI-, DA- und DI-Felder aller PDSR von der Vorauslesedateneinheit 203 zugeführt, und er wählt den Inhalt entsprechend einem durch das RPDRN-Signal festgelegten PDSR an jedem Feld aus. Die vom Wähler 804 erzeugten Ausgaben von RCm, RIm, DAm und DIm werden in einen Wähler 805 eingegeben, von dem der Inhalt entsprechend jedem Element eines durch das über die Signalleitung 208 gesendete PDROPm festgelegten PDSRm an jedem Feld gewählt wird.
- Einem Inkrementierer 808 wird PDROPm zugeführt, er addiert 1 zu PDROPm, wobei PDRDPT ein Modulus ist, und er gibt das Additionsergebnis als einen aktualisierten Wert PDROPm' aus.
- In einen Dekrementierer 811 wird das über die Signalleitung 208 gesendete RDCm- Signal eingegeben, und er gibt einen durch Subtrahieren von 1 davon erhaltenen aktualisierten Wert RDCm' aus. Wenn RDCm jedoch bereits 0 ist, bleibt es auch bei 0.
- In eine PDR-Leseanforderungs-Steuerschaltung 806 werden PRREQ, LD und MK vom Register 809, MATCH von der ODER-Schaltung 810, RCm(n), RIm(n), DAm(n) und DIm(n) sowie eine Maskenüberschreibungs-Festlegung MOEm von der Signalleitung 208 eingegeben. Die PDR-Leseanforderungs-Steuerschaltung 806 erzeugt eine PDR-Leseanforderung PDRREQ, ein PDR-Treffersignal PDRHIT und ein PDR-Lesewartesignal PDRWAIT.
- Die Bedingungen zum Erzeugen der jeweiligen Signale sind in der Zeichnung dargestellt. Ihre Bedeutungen werden jedoch kurz beschrieben. Die Bedingung zum Erzeugen von PDRREQ wird in drei Teilen betrachtet.
- Diese Bedingung besteht darin, daß eine Speicheranforderung vom Prozessor 2 aufgrund eines Speicherzugriffsbefehls (PRREQ & LD wurden erzeugt) ausgegeben wird. In diesem Fall sollte der Speicherzugriffsbefehl darin, daß ihre Ausführung erlaubt ist, (wobei die Maske MK eingeschaltet ist), oder in einer Bezeichnung, die das Festlegen einer zu ignorierenden Maske erlaubt (wobei MOEm eingeschaltet ist), bestehen.
- Diese Bedingung besteht darin, daß ein gültiges PCR zum Vorauslesen von Daten laut dem entsprechenden Speicherzugriffsbefehl festgelegt wird (MATCH ist eingeschaltet).
- Die Bedingung besteht darin, daß Daten bereits in ein PDRm(n) gelesen wurden ((RCM(n) - 0) & DAm(n) wurde erzeugt) oder darin, daß das Lesen von Daten zum Ausführen der Vorauslesepufferumleitung nicht erforderlich ist (RDCm - 0).
- Bei der Bedingung zum Erzeugen von PDRHIT weicht nur die dritte Bedingung für PDRREQ folgendermaßen ab. Diese Bedingung besteht nämlich darin, daß für PDRm(n) gültige Daten bereits gelesen wurden ((RCm(n) - 0) & DAm(n) & ADIm(n) wurden erzeugt) und daß keine Daten gelesen werden müssen (RDCm = 0).
- Bei der Bedingung zum Erzeugen von PDRWAIT weicht nur die dritte Bedingung für PDRREQ folgendermaßen ab. Diese Bedingung besteht nämlich darin, daß ungeachtet der Tatsache, daß das Lesen von Daten in das PDRm(n) erforderlich ist (RDCm = 0), noch keine Anforderung ausgegeben wurde (RCm(n) = 0) oder keine Daten ankommen (RIm(0) ist eingeschaltet).
- Die RPDRN, PDROPm und PDRREQ der Signale, die von der Vorauslesedaten- Lesesteuereinheit 204 in der oben beschriebenen Weise erzeugt oder erfaßt wurden, werden über die Signalleitung 211 zur Vorauslesedateneinheit 203 gesendet, die PDROPm', RD- Cm' und RPDRN davon werden über die Signalleitung 207 zur Vorauslesestatus-Steuereinheit 201 gesendet, die PDRHIT davon werden jeweils über die Signalleitungen 111 und 110 zur Cache-Speichereinheit 3 und Cache-Dateneinheit 102 gesendet, die PDRHIT und das PDRWAIT davon werden über die Signalleitung 107 zur Cache-Anforderungseinheit 101 gesendet, und das PDRWAIT davon wird über die Signalleitung 112 zum Prozessor 2 gesendet.
- Fig. 9 zeigt die Konfiguration der Cache-Anforderungseinheit 101. In die Cache- Anforderungseinheit 101 werden PFREQ, PDRHIT, PDRWAIT, PFAi, REQPCRN, PDRTPi und BUFi über die Signalleitung 107 eingegeben. Weiterhin werden der Cache- Anforderungseinheit 101 PRREQ und PRADR vom Prozessor 2 über die Signalleitung 122 zugeführt.
- In ein Register 908 werden die Vorausleseanforderung PFREQ und die PFAi-, RE- QPCRN-, PDRTPi- und BUFi-Signale entsprechend ihren Begleitinformationen eingegeben. Das Register 908 sichert die Anforderung und ihre Begleitinformationen, während das später zu beschreibende REQBSY eingeschaltet ist, und es gibt dann diese an eine Signalleitung 915 aus. Einem Register 909 wird das PDRHIT-Signal zugeführt, und es gibt dieses unverändert an eine Signalleitung 916 aus. In ein Register 910 werden PRREQ, PRADR und PDRWAIT eingegeben. Während PDRWAIT eingeschaltet ist, sichert das Register 910 die Anforderung und die Adresse und gibt sie danach an eine Signalleitung 917 aus. Eine Bezugszahl 901 gibt eine Cache-Anforderungssteuereinheit an. Wenn Speicheranforderungen gleichzeitig ausgegeben werden, weist die Cache-Anforderungssteuereinheit 901 ihnen Prioritäten zu. Wenn die Daten bereits von der Vorausleseeinheit ausgelesen wurden, unterdrückt die Cache-Anforderungssteuereinheit 901 einen Zugriff auf den Cache-Speicher 1001. Demgemäß werden PFREQ über die Signalleitung 915, PRREQ über die Signalleitung 917 und PDRHIT über die Signalleitung 916 in die Cache-Anforderungssteuereinheit 901 eingegeben. PDRHIT zeigt, daß die Daten, die für die Speicheranforderung PRREQ vom Prozessor 2 gültig oder wirksam sind, bereits von der Vorausleseeinheit ausgelesen wurden. Bei der vorliegenden Ausführungsform gibt die Cache-Anforderungssteuereinheit PRREQ Priorität, wenn PFREQ und PPREQ gleichzeitig ausgegeben werden. Anhand des Obenerwähnten ergibt sich, daß das zum Cache-Speicher 1001 oder zum Speicher 1 zu sendende Anforderungs-REQ-Signal erzeugt wird, wenn eine der folgenden zwei Bedingungen erfüllt sind.
- 1) PRREQ & ^PDRHIT
- 2) ^PRREQ & PFREQ
- Das REQ-Signal wird über eine Signalleitung 914 zu einer Cache-Zugriffssteuereinheit 903 gesendet.
- Wenn PFREQ und PRREQ gleichzeitig ausgegeben werden, versetzt die Cache-Anforderungssteuereinheit 901 die PFREQ-Verarbeitung in einen Wartezustand. Weiterhin erzeugt die Cache-Anforderungssteuereinheit 901 ein REQBSY-Signal zum Unterbrechen der Ausgabe einer nachfolgenden Vorausleseanforderung und sendet es über die Signalleitung 120 zur Vorausleseeinheit 105.
- Ein Wähler 902 wählt eine Adresse ansprechend auf die gewählte Anforderung. Demgemäß werden dem Wähler 902 PFAi über die Signalleitung 915 und PRADR und PRREQ über die Signalleitung 917 zugeführt. Wenn PRREQ eingeschaltet ist, wählt der Wähler 902 PRADR und gibt es als ein ADR-Signal aus. Wenn PRREQ ausgeschaltet ist, wählt der Wähler 902 PFAi und gibt es als das ADR-Signal aus.
- Eine Bezugszahl 903 gibt die Cache-Zugriffssteuereinheit an, die mit einem Adressenübersetzungs-Puffermechanismus (TLB) 904 zum Umwandeln einer virtuellen Adresse in eine reale Adresse, einem Adressenfeld 905 zum Speichern von Adressen im Cache- Speicher 1001 registrierter Datenblöcke, einer Cache-Trefferprüfungsschaltung 906 zum Prüfen eines Cache-Treffers anhand des Ergebnisses einer Wiedergewinnung durch TLB und das Adressenfeld sowie einer Anforderungs-Reihenfolgesteuerschaltung 907 zum Speichern und Verwalten der Anforderung beigefügter Informationen versehen ist. Weil sie grundsätzlich durch Anwenden des Stands der Technik auf sie aufgebaut sind, wird auf ihre detaillierte Beschreibung verzichtet. In die Cache-Zugriffssteuereinheit 903 werden REQ über die Signalleitung 914 sowie REQPCRN, PDRTPi und BUFi über die Signalleitung 915 eingegeben. Weiterhin wird ADR vom Wähler 902 in die Cache-Zugriffssteuereinheit 903 eingegeben.
- Die Cache-Zugriffssteuereinheit 903 spricht auf die von der Cache-Anforderungssteuerschaltung 901 ausgegebene REQ an, um dadurch zu ermöglichen, daß TLB904 eine eine virtuelle Adresse angebende ADR in eine tatsächliche Adresse MADR umwandelt. Zu dieser Zeit prüft TLB904 gleichzeitig die in TLB registrierten Speicherschutzinformationen und erzeugt ein EXP-Signal, wenn eine Zugriffsausnahme erfaßt wird. Als nächstes wird unter Verwendung der tatsächlichen Adresse das Adressenfeld 905 wiedergewonnen, und das Ergebnis der Wiedergewinnung wird von der Cache-Trefferprüfschaltung 906 geprüft. Wenn herausgefunden wird, daß die entsprechende Adresse registriert ist, entscheidet die Cache-Trefferüberprüfungsschaltung 906, daß das Ergebnis der Wiedergewinnung ein Cache-Treffer ist. Weiterhin erzeugt die Cache-Trefferüberpüfungsschaltung 906 durch ein herkömmliches Verfahren eine Cache-Adresse CADR und sendet sie über die Signalleitung 113 zur Cache-Speichereinheit 3. Weiterhin erzeugt die Cache-Trefferüberpüfungsschaltung 906 einen Datenzuführungsbefehl CADV. Falls herausgefunden wird, daß die entsprechende Adresse nicht registriert ist, entscheidet die Cache-Trefferüberpüfungsschaltung 906, daß das Ergebnis ein Cache-Fehlgriff ist, und erzeugt eine Speicheranforderung MREQ. Die Cache-Trefferprüfschaltung 906 sendet die tatsächliche Adresse MADR über die Signalleitung 115 zur Speicheranforderungseinheit 103. Wenn die Vorauslesepufferfestlegung BUFi eingeschaltet ist, sendet die Anforderungs-Reihenfolgesteuerschaltung 907 eine darauf bezogene Leitungsübertragungsanforderung LT.
- Die Anforderungs-Reihenfolgesteuerschaltung 907 nimmt REQPCRN und PDRTPi über die Signalleitung 915 auf. Beim Auftreten des Cache-Treffers sendet die Anforderungs-Reihenfolgesteuerschaltung 907 beide über die Signalleitung 120 als CWPRM und CPDRIP zur Vorausleseeinheit 105. Beim Auftreten eines Cache-Fehlgriffs sendet die Anforderungs-Reihenfolgesteuerschaltung 907 beide über die Signalleitung 115 als MWP- DRN und MPDRIP zur Speicheranforderungseinheit 103.
- Fig. 10 zeigt die Einzelheiten der Cache-Speichereinheit 3. Die Cache-Speichereinheit 3 erfaßt CADR von der Cache-Anforderungseinheit 101 über die Signalleitung 113 und nimmt zu schreibende Daten in den Cache-Speicher und vorausgelesene Daten von der Cache-Dateneinheit 102 über die Signalleitung 114 auf. Eine Bezugszahl 1001 gibt den Cache-Speicher an, der einen Zugriff unter Verwendung der Adresse CADR ausführt. Die in den Cache-Speicher zu schreibenden Daten werden über die Signalleitung 114 in den Cache-Speicher 1001 eingegeben. Die aus dem Cache-Speicher 1001 gelesenen Daten und die Daten auf der Signalleitung 114 werden über eine Signalleitung 1002 in einen Wähler 1003 eingegeben. Der Wähler 1003 nimmt das PDRHIT-Signal von der Vorausleseeinheit 105 über die Signalleitung 111 auf und wählt Daten ansprechend auf das Signal. Wenn PDRHIT eingeschaltet ist, werden die aus PDR gelesenen gültigen vorausgelesenen Daten bereits zur Signalleitung 114 gesendet und vom Wähler 1003 gewählt. Der Wähler 1003 sendet sie über die Signalleitung 108 zum Prozessor 2. Dies bewirkt die vorteilhafte Wirkung einer Kostenverringerung, weil eine andere Datenleitung beim Aufbau des Prozessors 2 unnötig wird.
- Nachfolgend wird eine zusätzliche Beschreibung einer Vorauslesefunktion und - operation und eines Verfahrens zum Ausführen des Programms und dergleichen gegeben, wobei die in der obigen Beschreibung dargelegten Punkte im Mittelpunkt stehen.
- Ein Verfahren zum anfänglichen Setzen jedes PCR und eine Vorauslesesteuerung werden weiter unten bei jedem Datenstrukturtyp beschrieben.
- Ein Vorauslesen für den sequentiellen Vektor wird durch ein einzelnes PCR festgelegt. Auf dem Programm basierende anfänglich gesetzte Informationen sind die folgenden. Das Setzen von keine Beschreibung aufweisenden Feldern ist unnötig, weshalb dies beim Vernngern des Zusatzaufwands beim Setzen nützlich ist. Weiter unten werden Beispiele für das anfängliche Setzen von PCR anhand eines in den Fig. 22A bis 25 dargestellten Programmbeispiels 1 beschrieben. Es wird hier PCR0 verwendet.
- - ACT = 1; Starten einer Vorausleseoperation
- - ORG = 1; Festlegen von PCR als Ursprungs-PCR
- - MOD = (8); Schritt beträgt 8B
- - DL = (3); Operandenlänge beträgt 8B
- - BUF = 0; nur PDR wird als Vorauslesepuffer verwendet
- - IID = (GR12); 12 ist als Basisregisternummer des Load-Befehls festgelegt
- - LA = 1; Festlegen des Vorhandenseins einer Vorgriffssteuerung
- - LAC = (20); Vorgreifen auf 20 Elemente
- - SKIP = 0; Vorhandensein eines Adressensprungs
- - PDRTP = 0; Festlegen des Leitelements von PDR
- - BAL = 0; (ein mit PDRTP identischer Wert)
- - NR = 1; nur der Speicherzugriffsbefehl greift auf vorausgelesene Daten zu
- - MOE = 0; Maskenüberschreibungsfestlegung ist unnötig
- - PFA = (&B(1)); anfängliche Elementadresse von Vektor B (anfänglicher Wert von GR12)
- Das Vorauslesen des indexierten Vektors wird durch das Ursprungs-PCR zum Festlegen der Steuerung des Lesens eines Index und das verknüpfte PCR zum Steuern des Lesens eines Ziels (normalerweise durch mehrere gegeben) festgelegt. Weiter unten werden Beispiele für das anfängliche Setzen von PCR in einem in den Fig. 26A bis 29 dargestellten Programmbeispiel 2 und Beispiele für das anfängliche Setzen von PCR in einem in den Fig. 30A bis 33 dargestellten Programmbeispiel 3 beschrieben.
- - ACT = 1; Starten einer Vorausleseoperation
- - ORG = 1; Festlegen von PCR als Ursprungs-PCR zum Lesen eines indexierten Vektors
- - MOD = (8); Schritt beträgt 8B
- - DL = (3); Operandenlänge des indexierten Vektors beträgt 8B
- - BUF = 0; nur PDR wird als Vorauslesepuffer verwendet
- - IID = (GR10); 10 ist als Basisregisternummer des Load-Befehls festgelegt
- - LA = 1; Festlegen des Vorhandenseins einer Vorgriffssteuerung
- - LAC = (5); Vorgreifen auf 5 Elemente
- - SKIP = 0; Fehlen eines Adressensprungs
- - PDRTP = 0; Festlegen des Leitelements von PDR
- - BAL = 0; (ein mit PDRTP identischer Wert)
- - NR = 2; Bezugnehmen auf das entsprechende PDR, um Vorausleseadressen für den Load-Befehl und den Fload-Befehl zu erzeugen
- - MOE = 0; Maskenüberschreibungsfestlegung ist unnötig
- - PFA = (&L(1)); anfängliche Elementadresse eines indexierten Vektors L (anfänglicher Wert von GR10) <
- - ACT = 1; Starten einer Vorausleseoperation
- - ORG = 0; verknüpftes PCR zum Lesen eines Zielvektors B
- - MOD = (&B(1)); Basisadresse des Zielvektors B
- - DL = (3); Operandenlänge des Zielvektors B beträgt 8B
- - BUF = 1; PDR und Cache-Speicher werden als Vorauslesepuffer festgelegt
- - IID = (GR12); 12 ist als Basisregisternummer des Fload-Befehls festgelegt
- - LA = 0; das Festlegen des Fehlens einer Vorgriffssteuerungsanforderung ist nicht erforderlich, weil dies zum Lesen von Daten in einem Ausgangs-PCR gehört
- - SKIP = 0; Fehlen eines Adressensprungs
- - PDRTP = 0; (Programmbeispiel 2)/1 (Programmbeispiel 3)
- - BAL = 0; (ein mit PDRTP identischer Wert)
- - NR = 1; Fload-Befehl bezieht sich auf das entsprechende PDR
- - MOE = 0; (Programmbeispiel 2)/1 (Programmbeispiel 3)
- - LL = 0; Angeben, daß PCR ein verknüpftes PCR für den indexierten Vektor ist
- - LPCR = (PCR0); Festlegen der ursprünglichen PCR-Nummer
- - PDRQP = 0; mit PDRTP des Ursprungs-PCR identisch
- - PFA; Initialisierung nicht erforderlich
- Es sei bemerkt, daß PDRTP des verknüpften PCR anfänglich auf 1 gesetzt wird, weil der Inhalt von PDR entsprechend einem Fload-Befehl (Position (7, 3) in Fig. 32), dessen Ausführung durch die Festlegung der Maskenüberschreibung beim Programmbeispiel 3 unterdrückt wird, an einer Einleitungsstufe ausgelesen wird.
- Jede der Leseadressen für den Zielvektor wird erzeugt, indem ein Wert, der durch Verschieben eines gelesenen Elements des indexierten Vektors um die durch DL festgelegte Anzahl von Bits erhalten wird, zu einem Modifizierer für das verknüpfte PCR addiert wird. Die erzeugte Adresse wird in einem PFA-Feld des verknüpften PCR gesichert und für eine Vorausleseanforderung verwendet.
- Das Vorauslesen der verknüpften Listen wird durch zwei oder mehr PCR zum Steuern des Lesens von Daten in mehreren mehrstufigen Tabellen, die mit dem höchsten sequentiellen Vektor und seinen Elementen als Anfangspunkte verknüpft sind, festgelegt. Aufgrund eines Programms anfänglich gesetzte Informationen sind die folgenden:
- - ACT = [0/1]; Starten einer Vorausleseoperation, wenn ACT = 1
- - ORG = 1; Festlegen von PCR als Ursprungs-PCR zum Lesen eines indexierten Vektors
- - MOD = (Schritt)
- - DL = (Festlegen der Operandenlänge des indexierten Vektors)
- - BUF = [0/1]; [PDR/Cache-Speicher]
- - IID = (Basisregisternummer)
- - LA = [0/1]; Festlegen des Vorhandenseins oder Fehlens einer Vorgriffssteuerung
- - SKIP = [0/1]; wenn SKIP = 1, ist die Festlegung von SKIPP und SKIPGAP erforderlich
- - PDRTP = Festlegen der Anzahl der leeren Leseoperationen von PDR an der Einleitungsstufe, wenn MOE = 0 und MOE = 1
- - BAL = 0; (ein mit PDRTP identischer Wert)
- - NR = [2/3/...]; Festlegen der Anzahl der Zugriffe auf das PDR, in dem Tabellenelemente höchster Ebenen gespeichert sind
- - MOE = [0/1]; Maskenüberschreibungsfestlegung
- - PFA = (Basisadresse); anfängliche Elementadresse des indexierten Vektors
- - ACT = [0/1]; Starten einer Vorausleseoperation, wenn ACT = 1
- - ORG = 0; Festlegen des PCR als verknüpftes PCR zum Lesen einer Liste niedriger Ebene
- - MOD = (Verschiebung); Verschiebung einer nächsten Ebene bezüglich der verknüpften Daten in der Tabelle
- - DL = (Festlegen der Länge der verknüpften Daten)
- - BUF = 0/1; [PDR/Cache-Speicher]
- - IID = (Basisregisternummer)
- - LA = 0; Festlegen des Fehlens einer Vorgriffssteuerung (eine Anforderung ist nicht erforderlich, weil sie zum Lesen von Daten in einem Stamm-PCR gehört)
- - SKIP = 0; Sprung ist nicht erforderlich
- - PDRTP = wenn MOE = 0 und MOE = 1, die Anzahl der Ausführungen des Speicherzugriffsbefehls an der Einleitungsstufe
- - BAL = (ein mit PDRTP identischer Wert)
- - RN = [1/2/...]; Festlegen von 1, falls das PCP der niedrigsten Ebene vorliegt, und Festlegen der Anzahl der Zugriffe auf das entsprechende Daten speichernde PDR, falls andere Ebenen vorliegen
- - MOE = [0/1]; Maskenüberschreibungsfestlegung
- - LL = 1; Festlegen des PCR als ein verknüpftes PCR in verknüpften Listen
- - LPCR = (Stamm-PCR-Nummer)
- - PDRQP = (mit PDRTP des Stamm-PCR identisch)
- - PFA = Initialisierung nicht erforderlich
- Jede der Leseadressen durch ein nachgeordnetes PCR zu erzeugender Daten wird erhalten, indem ein Modifizierer des nachgeordneten PCR zu einem durch ein Stamm-PCR gelesenen hohen Element (verknüpfte Daten) addiert wird. Die erzeugte Adresse wird in einem PFA-Feld des nachgeordneten PCR gesichert und für eine Vorausleseanforderung verwendet. Die Steuerung der Ausgabe der Vorausleseanforderung durch das nachgeordnete PCR ähnelt derjenigen für das Vorauslesen des indexierten Vektors.
- Die vorliegende Ausführungsform weist eine Adressensprungfunktion auf. Die Adressensprungfunktion ist für das Vorauslesen einer teilweisen Bezugnahme auf ein mehrdimensionales Feld wirksam.
- Weil die Elemente an der Peripherie des Felds eine Randbedingung bei numerischen Berechnungen unter Verwendung des mehrdimensionalen Felds bereitstellen, kann der Fall auftreten, daß sie nicht für Hauptberechnungen verwendet werden. Es kann auch ein Fall auftreten, in dem ein Feld definiert wird, dem Elemente, auf die absichtlich nicht zugegriffen wurde, hinzugefügt sind, um eine Konkurrenz zwischen Speicherbänken zu vermeiden. Die Fig. 16A und 16B zeigen ein Beispiel, in dem ein teilweiser Zugriff auf ein zweidimensionales Feld ausgeführt wird. In diesem Fall wird ein Feld A (100, 200), das 100 Elemente je Spalte und 200 Elemente je Reihe aufweist, auf einer Spaltenprioritätsbasis ausgelesen. In diesem Programm wird auf einen durch einen dicken Rahmen umgebenen Abschnitt von A (1-99, 1-199) zugegriffen. Es ist nämlich erforderlich, das Vorauslesen aus dem Element der oberen Zeile der nächsten Spalte kontinuierlich durchzuführen, ohne daß beim Vorauslesen von Daten auf das Element der letzten Zeile jeder Spalte zugegriffen wird. Speicherbereiche, die von 99 sequentiellen Elementen blockiert sind, unter denen Intervalle für jedes Element einzeln definiert sind, werden als die Speicherbereiche, auf die tatsächlich zugegriffen wird, verwendet. Wenn das Vorauslesen immer wieder an jeder Spalte gestartet wird, entsteht ein Zusatzaufwand, woraus sich das Risiko ergibt, daß keine ausreichende Beschleunigung erreicht werden kann. Weil die blockierten Speicherbereiche bei jedem Starten des Vorauslesens selbst in diesem Fall ausgelesen werden können, ist die vorliegende Adressensprungfunktion für eine Verringerung des Zusatzaufwands wirksam.
- Durch die Adressensprungfunktion kann eine große Wirkung erzielt werden, wenn die Gesamtdatenkapazität gegenüber der den Cache-Speicher übersteigenden Kapazität groß ist und die Vorauslesestartzeit verglichen mit der Ausführungszeit der innersten Schleife nicht vernachlässigt werden kann. Wenn beispielsweise bei einem dreidimensionalen Feld der Größe 100 · 100 · 100 ein Ausführungszyklus der innersten Schleife 50 Zyklen je Iteration umfaßt und ein Zusatzaufwand von 25 Zyklen beim Start des Vorauslesens auftritt, verspricht die vorliegende Funktion eine Beschleunigung um 50%.
- Weiter unten werden auf der Hard- und Software basierte Prozesse zu der Zeit, zu der eine Unterbrechung während einer Vorausleseoperation ausgelöst wird, detailliert beschrieben. Die mit der Vorausleseoperation verbundenen Unterbrechungsprozesse unterscheiden sich je nach dem Typ des Ausnahmeereignisses, das ihre Ursache angibt. Die Ausnahmeereignisse werden in folgende vier Typen eingestuft:
- - Während einer Vorausleseoperation erfaßte behebbare Ausnahmen Beispiel: ein Seitenfehler, ein TLB-Fehler beim Vorauslesen
- - Während einer Vorausleseoperation erfaßte nicht behebbare Ausnahmen Beispiel: eine Datenspeicherschutz-Prüfung, eine nicht synchrone Datenzugriffsfalle beim Vorauslesen
- - Unabhängig von einer Vorausleseoperation erfaßte behebbare Ausnahmen Beispiel: ein Seitenfehler und ein TLB-Fehler, die durch Speicherzugriffe gemäß einer externen Unterbrechung und einer Befehlsausführung erfaßt werden
- - Unabhängig von einer Vorausleseoperation erfaßte nicht behebbare Ausnahmen
- Beispiel: eine Maschinenprüfung mit hoher Priorität, eine Speicherschutzprüfung, die durch einen Speicherzugriff gemäß einer Befehlsausführung erfaßt wird
- Wenn der Typ des die Ursache einer Unterbrechung angebenden Ausnahmeereignisses behebbar ist, kann das Vorauslesen nach seiner Wiederaufnahme weiterlaufen. Bei der vorliegenden Ausführungsform werden in diesem Fall nur die erforderlichen Vorauslesesteuerinformationen gespeichert und wiederhergestellt, und der Zusatzaufwand wird ohne Speichern und Wiederherstellen der Daten in einem Vorauslesedatenregister verringert.
- Weiter unten werden Grobbeschreibungen mit einem Vorauslesen verbundener Prozesse zu der Zeit, zu der eine Unterbrechung in der die vorliegende Erfindung veranschaulichenden Informationsverarbeitungsvorrichtung erzeugt wird, beschrieben.
- Eine mit dem Speicherlesen zum Vorauslesen verbundene Zugriffsausnahme EXP wird auf der Grundlage der Indizes von TLB 904 in der Cache-Anforderungseinheit 101 erfaßt.
- Das Erfassen der Zugriffsausnahme ist beim Ausführen des entsprechenden Speicherzugriffsbefehls vom Prozessor 2 erforderlich. Dies liegt daran, daß ein Fall auftreten kann, in dem es schwierig ist, das Ergebnis der gemäß der Anforderungsverarbeitung beim Vorauslesen erhaltenen Erfassung zu verwenden, weil die Zeit zum Ausführen und Unterdrücken eines nachfolgenden Befehls zur Zeit der Erfassung der Ausnahme kritisch ist. Daher meldet die Vorausleseeinheit dem Prozessor 2 die Ausnahme nicht. Das Erfassen der Zugriffsausnahme durch den Prozessor 2 wird auf der Grundlage des Indizierens eines TLB (nicht dargestellt) im Prozessor 2 wie gewöhnlich ausgeführt.
- Wenn eine Ausnahme EXP in bezug auf eine Vorausleseanforderung erfaßt wird, wird ein an das der entsprechenden Anforderung entsprechenden PCR-Element angehängtes Daten-Ungültig-Kennzeichen DI gesetzt, um die Ungültigkeit von Daten anzugeben. Selbst in diesem Fall wird das nachfolgende Vorauslesen von Daten fortgesetzt. Diese Fortsetzung hat folgende Gründe:
- - Weil die Möglichkeit besteht, daß die Ausführung des entsprechenden Speicherzugriffsbefehls bei bedingter Ausführungssteuerung unterdrückt wird, wird die entsprechende Ausnahme nicht unbedingt erfaßt.
- - Es können Fälle auftreten, in denen an den nachfolgenden Adressen keine Ausnahmen erzeugt werden, wenn die nachfolgenden Datenadressen beispielsweise bei einem nicht angrenzenden sequentiellen Vektor, einem indexierten Vektor und einem Vorauslesen einer verknüpften Liste weitgehend getrennt sind.
- - Wenn das Vorauslesen der nachfolgenden Daten unterbrochen wird, wartet der Speicherzugriffsbefehl weiter auf vorausgelesene Daten, so daß eine Sicherung erzeugt werden kann.
- Wenn eine Ausnahme beim Ausführen des entsprechenden Speicherzugriffsbefehls erfaßt wird, wird die Ausführung des entsprechenden Befehls unterdrückt und wird ein auf der Hardware basierter Arbeitsvorgang bei der Unterbrechung ausgeführt. Zu dieser Zeit meldet der Prozessor 2 der Vorausleseeinheit 105 das Auftreten der Unterbrechung unter Verwendung des INT-Signals. Die Vorausleseeinheit 105 setzt das SUSP-Kennzeichen des entsprechenden PSR. Demgemäß unterbrechen alle Vorausleseoperationen die Ausgabe der nachfolgenden Anforderungen und warten, bis auf die bereits ausgegebene Anforderung bezogene Daten angekommen sind. Wenn alle Daten angekommen sind, wird das PFBSY- Kennzeichen von PSR während des Hardwarebetriebs ausgeschaltet. Dieser Zustand des Vorauslesemechanismus wird als Pausezustand bezeichnet. Der Prozessor 2 liest ein PSR am Kopf der Unterbrechungsroutine und bestätigt, daß sich der Vorauslesemechanismus im Pausezustand befindet, worauf die Ausführung der nachfolgenden Unterbrechungsroutine folgt. Wenn der Inhalt eines PSR, eines PCR, eines PDR und eines PDSR, die Vorausleseinformationen angeben, bei einer behebbaren Unterbrechung gespeichert wird, während die Unterbrechung bearbeitet wird, wenn insbesondere der die vorliegende Ausführungsform veranschaulichende Vorauslesemechanismus überhaupt nicht verwendet wird, bevor das Programm zum ursprünglichen Programm zurückkehrt, muß er gemäß der Unterbrechungsroutine nicht gespeichert werden. Daher wird der für den entsprechenden Prozeß erforderliche Zusatzaufwand nicht verursacht.
- Wenn nicht sichergestellt ist, daß die entsprechenden Vorausleseinformationen bei der behebbaren Unterbrechung gespeichert werden, während die Unterbrechung bearbeitet wird, braucht die Unterbrechungsroutine bei der vorliegenden Ausführungsform nur das PSR und das PCR zu speichern. Das Speichern bzw. Wiedergewinnen wird entsprechend dem Befehl ausgeführt. Weil das Neulesen des PDR, nachdem es zurückgesetzt wurde, selbst in diesem Fall von der Unterbrechung ausgeführt wird, ist das Speichern des PDR nicht erforderlich. Wenngleich das Speichern des PDSR auch nicht erforderlich ist, müssen Statusinformationen initialisiert werden, wie nachfolgend beschrieben wird.
- Bei der behebbaren Unterbrechung wird die Vorausleseoperation ungültig gemacht, indem die Gültig-Kennzeichen VLD aller PCR entsprechend der Unterbrechungsroutine zurückgesetzt werden. In diesem Fall ist das Speichern verschiedener auf das Vorauslesen bezogener Ressourcen nicht erforderlich.
- Die Unterbrechungsroutine nimmt nach dem Zurücksetzen des Programms von einer Unterbrechung eine Wiederherstellungsverarbeitung an einem PSR und einem gültigen PCR vor, wobei sie nicht in der Lage ist, das Speichern der Vorausleseinformationen sicherzustellen. Während dieser Zeit wird das SUSP-Kennzeichen gesetzt, um zu gewährleisten, daß die Vorausleseoperation nicht mit den PCR-Informationen weiterläuft, während sie wiederhergestellt wird. Wenn das Speichern der Vorausleseinformationen sichergestellt ist, während die Unterbrechung bearbeitet wird, ist die entsprechende Wiederherstellungsoperation nicht erforderlich.
- Das SUSP-Kennzeichen wird zurückgesetzt, indem ein Befehl unmittelbar vor der Rückkehr der Unterbrechungsroutine zum ursprünglichen Programm ausgeführt wird. Demgemäß wird der Vorauslesemechanismus in einen Betriebszustand gemäß der Festlegung des wiederhergestellten PCR versetzt, so daß die Vorausleseoperation wiederaufgenommen wird. Durch Ausführen eines Rückkehrbefehls durch die Unterbrechungsroutine nimmt der Prozessor 2 die Ausführung des ursprünglichen Programms wieder auf. Nach der Rückkehr von der Unterbrechung wird eine Vorausleseanforderung unter Verwendung des wiederhergestellten PFA ausgegeben, und Daten werden aus einem durch das wiederhergestellte PDRTP festgelegten PDR-Element gespeichert. Dieses Element befindet sich in der Nähe von PDR-Elementen, die der durch das BAL-Feld angegebenen Nummer entsprechen und die von der Unterbrechung aufgegeben wurden.
- Wenn die Wiederaufnahme des Vorauslesens nach der Unterbrechung beispielsweise bei Erfassung eines Hardwarefehlers einer bestimmten mit dem Vorauslesemechanismus verbundenen Schaltung nicht angemessen ist, wird das VLD-Kennzeichen nach einem PCR-Initialisierungsbefehl ausgeschaltet, um die Ungültigkeit des Vorauslesens zu bewirken. Selbst in diesem Fall ist die richtige Arbeitsweise des Programms durch die folgende Vorauslesepufferumleitung gewährleistet.
- Wenn die vorausgelesenen Daten infolge des Aktualisierens oder des Auftretens der Zugriffsausnahme ungültig sind, wird die Steuerung zum Lesen der richtigen Daten aus dem Cache-Speicher 1001 oder dem Speicher 1 beim Ausführen des entsprechenden Speicherzugriffsbefehls in der bereits beschriebenen Weise ausgeführt. Wie bereits beschrieben wurde, wird diese Steuerung durchgeführt, indem das PDRHIT-Signal zum Unterdrücken der Verarbeitung des Speicherzugriffsbefehls gemäß der Speicheranforderung PRREQ nicht ausgegeben wird. Diese Operation wird Vorauslesepufferumleitung genannt, die als PBR abgekürzt wird.
- Selbst dann, wenn es erwünscht ist, auf die beim Unterbrechen aufgegebenen vorausgelesenen Daten zuzugreifen, nachdem das unterbrochene Programm wiederaufgenommen wurde, wird die oben angegebene PBR verwendet. Insbesondere wird ein Umleitungsdatenzählwert-RDC-Feld eines PCR beim Auftreten der Unterbrechung nach der Programmwiederherstellung von der Unterbrechung auf BAL gesetzt. Falls RDC bei jedem Ausführen des Speicherzugriffsbefehls von Null verschieden ist, führt die Vorausleseeinheit fortlaufend PBR aus. RDC wird bei jedem Lesen von Speicherdaten um Eins verringert. PDROP verweist nach ihrem Zurücksetzen auf eine PDR-Elementposition, an der die ältesten der aufgegebenen Daten gesichert wurden. Daraufhin wird PDROP bei jeder Ausführung der PBR-Operation erhöht.
- Die Fig. 19A und 19B zeigen Statusbeispiele von PDR und PDSR beim Kontextwechsel. Fig. 19A zeigt den Status eines PDR und eines PDSR vor dem Übergeben der Steuerung an die Unterbrechungsroutine. In diesem Fall werden im BAL-Feld angegebene n Daten im entsprechenden PDR gespeichert, und Daten-Ungültig-Kennzeichen DI werden durch Aktualisierung für einige von ihnen gesetzt. Selbst beim Auftreten der Unterbrechung werden diese PDR und PDSR nicht gespeichert. Fig. 19B zeigt den Status eines PDR und eines PDSR unmittelbar nach dem Zurückkehren der Steuerung zum unterbrochenen Programm. In diesem Fall stellen PDROP, PDRTP und BAL den Inhalt beim Unterbrechen entsprechend dem Programm wieder her, und der Umleitungsdatenzählwert RDC wird auf den gleichen Wert n wie BAL gesetzt. Der gesamte Inhalt der RC-Felder von PDSR wird anfänglich auf 0 gesetzt. Wenn ein dem entsprechenden PDR zugeordneter Speicherzugriffsbefehl ausgeführt und eine PDR-Leseanforderung ausgegeben wird, werden Daten aus dem Cache-Speicher 1001 oder dem Speicher 1 unter der Vorauslesepufferumleitung gelesen. Diese Vorauslesepufferumleitung wird ausgeführt, wenn RDC von 0 abweicht. Weiterhin wird RDC bei jedem PDR-Lesen um 1 verringert, und PDROP geht zur nächsten Stufe über. Hierdurch kann die richtige Arbeitsweise des Programms selbst dann gewährleistet werden, wenn die Daten im PDR nach dem Unterbrechen nicht gespeichert und wiederhergestellt wurden. Ferner kann die Wirksamkeit einer Unterbrechungsverarbeitung durch Verringern der für das Speichern und Wiederherstellen der Daten erforderlichen Verarbeitungszeit verbessert werden.
- Beim vorliegenden Vorauslesesystem gewährleistet die Hardware die Kohärenz zwischen PDR und dem Cache-Speicher 1001 entsprechend der Vorauslesepufferumleitung. Wenn insbesondere die entsprechenden Daten laut einem Speicherbefehl aktualisiert werden, bevor die Daten gemäß einem Speicherzugriffsbefehl nach dem Ausführen eines Vorauslesestartbefehls ausgelesen wurden, gewährleistet das Programm, daß der Speicherzugriffsbefehl die aktualisierten Daten annimmt.
- Ein Beispiel dieses Steuerzeitdiagramms ist in Fig. 20 dargestellt. Diese Zeichnung veranschaulicht auch, wie Ladebefehle zum Zugriff auf die entsprechenden Daten wiederholt unter Schleifensteuerung ausgeführt werden, nachdem ein Vorauslesen durch die Ausführung eines Befehls zum Festlegen des Vorauslesens gestartet wurde. Den Ladebefehlen hinzugefügte Zahlen mit () geben an, wie oft diese Schleifen auftreten. Beim vorliegenden Programm aktualisiert ein Speicherbefehl einer ersten Schleife einen Operanden für einen Ladebefehl einer zweiten Schleife. Beim vorliegenden Beispiel beginnt die Vorausleseeinheit bei jedem Zyklus, nachdem eine Vorausleseadresse für das entsprechende PFA festgelegt wurde, mit der Ausgabe einer Vorausleseanforderung aus einem dritten Zyklus (C3). Die Vorausleseadresse PFA wird in eine Cache-Adresse CADR umgewandelt, und gelesene Cache-Daten CDATA werden in ihrem entsprechenden PDR1(0) gespeichert. Wenn ein Ladebefehl (1) ausgeführt wird, wird eine PDR-Leseanforderung PDRREQ erzeugt. Weiterhin werden die im PDR1(0) gespeicherten Daten ausgelesen und im Universalregister GR des Prozessors 2 in C12 gespeichert. Eine einem Ladebefehl (2) entsprechende Vorausleseanforderung wird in C4 ausgegeben, und der Status eines PDSR1(1) wird entsprechend zu (1100) geändert. Weil ein Aktualisieren beim Ausführen eines Speicherbefehls (1) erfaßt wird, wird der Zustand von PDSR auf (1101) geändert. Weil die Daten nachfolgend ankommen, wird sein Status auf (1011) geändert. Wenn ein Ladebefehl (2) ausgeführt wird, wird die Ungültigkeit der Daten aufgrund des Status von PDSR erkannt oder identifiziert, weshalb ein PDRHIT unterdrückt wird, so daß PBR ausgeführt wird. Demgemäß wird eine Speicheranforderungsadresse für den Ladebefehl (2) anstelle der Vorausleseadresse als die Cache-Adresse in C12 gesetzt. Die gelesenen Daten des Ladebefehls (2) werden auf Daten in einem PDR1(1) geändert, die den aktualisierten vorausgehen, und sie werden im entsprechenden Register im Prozessor 2 in C15 gespeichert.
- Wegen der Gewährleistung der Kohärenz durch die Hardware braucht das Programm logischerweise nicht die Reihenfolge des Speicherbefehls und des Vorauslesestartbefehls beim Sicherstellen des Betriebs zu der Zeit, zu der das Vorauslesen angewendet wird, zu berücksichtigen. Demgemäß ist dies im Hinblick auf das Erreichen einer Codeoptimierung zum so früh wie möglich erfolgenden Ausführen des Vorauslesestartbefehls und zum Verringern des Zusatzaufwands beim Start wirksam.
- Bei der vorliegenden Ausführungsform wird die Kohärenz durch die Hardware gewährleistet. Wenn das Aktualisieren vorausgelesener Daten häufig auftritt, werden jedoch auch Ausführungsformen berücksichtigt, bei denen die Leistungsfähigkeit beeinflußt wird. In einem solchen Fall kann die Kohärenz gewährleistet werden, während die Beeinflussung der Leistungsfähigkeit durch eine Vorgriffs- oder Vorauslesesteuerung verhindert wird. Dies wird anhand des folgenden Beispiels beschrieben.
- DO 10 I = 1,N = A(I - M) A(I) = 10 CONTINUE
- Bei diesem Beispiel wird ein Symbol M als zur Kompilierungszeit bekannt angesehen. In dem Beispiel wird davon ausgegangen, daß das Vorauslesen selbst dann für eine Verbesserung der Leistungsfähigkeit wirksam ist, wenn ein Vorgriffszählwert LAC so festgelegt ist, daß LAC < m gilt. Weil das Vorauslesen nicht fortgesetzt wird, bevor die über die durch LAC zu dieser Zeit angegebene Anzahl hinausgehenden Daten schließlich zum Speicherzugriffsbefehl übertragen worden sind, wird das Vorauslesen von Daten aufgrund von A(I - M) nicht vor dem Aktualisieren von A(I) zu den entsprechenden Daten durchgeführt. Dementsprechend werden die aktualisierten Daten immer vorausgelesen, so daß die Kohärenz sichergestellt ist. Ein Beispiel eines Zeitablaufdiagramms zum Beschreiben einer Datenkohärenz-Gewährleistungsoperation unter der Vorgriffssteuerung ist in den Fig. 21A und 21B dargestellt.
- Dieses Beispiel veranschaulicht das Gewährleisten der Kohärenz während des Lesens eines Feldelements A(I - 4) in einer in derselben Zeichnung dargestellten DO-Schleife. Weil das Feldelement A(I - 4) in der Schleife immer vor vier Durchgängen beim Ausführen einer Schleife aktualisiert wird, muß das Ergebnis seiner Aktualisierung gelesen werden. Daher wird der Vorgriffszählwert LAC als 3 festgelegt und wird das aufgrund des Vorauslesens ausgeführte Vorgreifen auf drei Elemente beschränkt. Weil der Wert von BAL LAC erreicht, wenn das Datenlesen für einen Ladebefehl (3) in einem vierten Zyklus (C4) abgeschlossen ist, wird das Ausgeben einer Anforderung unterbrochen. Wenn ein Ladebefehl (1) (als 1d.1 abgekürzt) in C6 ausgeführt wird und PDR-Daten ausgelesen werden, wird BAL auf 2 gesetzt, so daß eine Vorausleseanforderung ausgegeben werden kann. Es kann daher gewährleistet werden, daß das nächste Vorauslesen von 1d.5 nach dem Ausführen eines Befehls von 1d.2 ausgeführt wird. Andererseits wird das vor dem Vorauslesen von 1d.5 auszuführende Schreiben st.5 von Daten in ein Feldelement A(5) vor 1d.2 ausgeführt, wie anhand des Programms offensichtlich ist. Dementsprechend wird der Befehl 1d.5 nach Abschluß von st.5 ausgeführt, wodurch aktualisierte Daten erhalten werden können.
- Mehrere Programme, die auf die Objekten entsprechenden Datenstrukturen zugreifen oder Bezug nehmen, werden nun in Zusammenhang mit einem Optimierungssystem zum Erzielen der Beschleunigung, einem Objektprogramm, auf das das System angewendet wird, und bei der vorliegenden Informationsverarbeitungsvorrichtung verwendeten Befehlsausführungsverfolgungen beschrieben.
- Die Fig. 22A und 22B zeigen ein Programm, das auf einen sequentiellen Vektor B zugreift oder darauf Bezug nimmt. In diesem Fall wird angenommen, daß eine Schleifenlänge 3 N groß ist und ein Vektor B(I) die Kapazität des Cache-Speichers im Prozessor 2 übersteigt. Es wird das Optimieren zum Zugriff auf einen extern bereitgestellten Cache-Speicher (nachfolgend einfach Cache-Speicher genannt) des Prozessors 2 ausgeführt. Unter der Annahme, daß bei der vorliegenden Ausführungsform etwa 7 Zyklen zum Zugriff auf den Cache-Speicher 1001 erforderlich sind, werden die folgende Schleifenentfaltung und Befehlszeitplanung angewendet. Ein Quellprogramm wird zuerst zur Dreifachschleifenentfaltung gebracht, wie in Fig. 22B dargestellt ist. Befehle, die durch Entfalten dieses Schleifenabschnitts zum Objektprogramm und Anwenden der Befehlszeitplanung auf diesen erhalten werden, sind in Fig. 23 dargestellt. In der Zeichnung werden die Befehle als drei Befehle für jede Zeile beschrieben. Hierdurch soll die Entsprechung mit dem Quellprogramm nach der in Fig. 22B dargestellten Schleifenentfaltung leicht verständlich werden. Befehlspositionen des Speichers 1 sind in Form einer ersten Zeile und einer ersten Spalte (nachfolgend als 1, 1) beschrieben), (1, 2), (1, 3) (2, 1), ... ausgerichtet. Falls die Befehle insbesondere für bis zu drei Reihen in einer normalen Schreibweise beschrieben werden, werden sie folgendermaßen ausgedrückt:
- (1,1)[MR2]Fload(GR12) → FR2; B(I)
- (1,2)[MR3]Und MR3, MR10 → MR3
- (2,1)[MR2]Addiere GR12 + d1 → GR12
- (2,2)[MR1]Setze 1 aufMR3
- (2,3)[MR4]Fstore FR4 → (GR13); A(I + 2)
- (3,2)[MR1]Und MR3, MR10 → MR3
- (3,3)[MR4]Addiere GR13 + d2 → GR13
- Maskenregisternummern (durch rm bezeichnet) zum Steuern des Vorhandenseins oder Fehlens einer Ausführung der Befehle werden den Kopfteilen der Befehle zugewiesen. Die Fig. 24 und 25 zeigen die Ausrichtung (Spuren) ausgeführter Befehle zu der Zeit, zu der die Objekte ausgeführt wurden. Beim ursprünglichen Programm ist jedoch eine Schleifenlänge der Einfachheit halber auf 6 (N = 2) gesetzt. Bei der ersten Ausführung eines Objektprogramms in einer Schleife müssen der anfängliche Befehl in einer zweiten Spalte und die anfänglichen drei Befehle in einer dritten Spalte nicht ausgeführt werden. Sie werden unter einer Bedingungserfüllungssteuerung ausgeführt, weil die anfänglichen Werte der Maskenregister wie in derselben Zeichnung dargestellt gesetzt sind. Es sei bemerkt, daß MR1 (in einem logischen Wert als wahr ausgedrückt) immer 1 ist. Eine erste Programmausführungsstufe einschließlich dieser Ausführungsunterdrückung wird als Einleitungsstufe bezeichnet. Bei einer zweiten Ausführung werden alle Befehle in der Schleife ausgeführt. Diese Programmausführungsstufe wird als Hauptstufe bezeichnet. Bei diesem Beispiel wird die Hauptstufe einmal ausgeführt. Die Hauptstufe wird jedoch normalerweise wiederholt entsprechend der Schleifenlänge ausgeführt. Bei einer dritten Ausführung wird die Ausführung der Befehle aus der 21. bis 26. Zeile und der 28. Zeile der ersten Spalte, der Befehle aus der 24. bis 29. Zeile der zweiten Spalte und der Befehle aus der 27. bis 28. Zeile der dritten Spalte unterdrückt. Diese letzte Schleifenausführungsstufe wird als Abschlußstufe bezeichnet. Schließlich wird in der Praxis eine tatsächliche ATA in einem PDR1(0) gespeichert. Wenn der Ladebefehl (1) ausgeführt wird, wird eine PDR-Leseanforderung PDRREQ erzeugt, und die im PDR1(0) gespeicherten Daten werden ausgelesen und im Universalregister GR des Prozessors 2 in C 12 gespeichert. Eine dem Ladebefehl (2) zugeordnete Vorausleseanforderung wird in C4 ausgegeben, und der Zustand eines PDS- R1(1) wird dementsprechend zu (1100) geändert. Weil ein Aktualisieren beim Ausführen des Speicherbefehls (1) erfaßt wird, wird der Status von PDSR zu (1101) geändert. Weil anschließend Daten ankommen, wird der Zustand von PDSR zu (1011) geändert. Wenn der Ladebefehl (2) ausgeführt wird, wird aufgrund des Status von PDSR erkannt, daß die Daten ungültig sind, so daß PDRHIT unterdrückt und PBR ausgeführt wird. Demgemäß wird eine Speicheranforderungsadresse für den Ladebefehl (2) anstelle der Vorausleseadresse als die Cache-Adresse in C 12 gesetzt. Die gelesenen Daten des Ladebefehls (2) werden zu Daten in einem PDR1(1) geändert, die den aktualisierten Daten vorausgehen, und sie werden im entsprechenden Register im Prozessor 2 in C15 gespeichert.
- Wegen der Gewährleistung der Kohärenz durch die Hardware braucht das Programm logischerweise nicht die Reihenfolge des Speicherbefehls und des Vorauslesestartbefehls beim Sicherstellen des Betriebs zu der Zeit, zu der das Vorauslesen angewendet wird, zu berücksichtigen. Demgemäß ist dies beim Erreichen einer Codeoptimierung zum so früh wie möglich erfolgenden Ausführen des Vorauslesestartbefehls und zum Verringern des Zusatzaufwands beim Start wirksam.
- Bei der vorliegenden Ausführungsform wird die Kohärenz durch die Hardware gewährleistet. Wenn das Aktualisieren vorausgelesener Daten häufig vorkommt, werden jedoch auch Ausführungsformen berücksichtigt, bei denen die Leistungsfähigkeit beeinflußt wird. In einem solchen Fall kann die Kohärenz gewährleistet werden, während die Beeinflussung der Leistungsfähigkeit durch eine Vorgriffs- oder Vorauslesesteuerung verhindert wird. Dies wird anhand des folgenden Beispiels beschrieben.
- DO 10 I = 1,N = A(I - M) A(I) = 10 CONTINUE
- Bei diesem Beispiel wird ein Symbol M als zur Kompilierungszeit bekannt angesehen. In dem Beispiel wird davon ausgegangen, daß das Vorauslesen selbst dann für eine Verbesserung der Leistungsfähigkeit wirksam ist, wenn ein Vorgriffszählwert LAC so festgelegt ist, daß LAC < M gilt. Weil das Vorauslesen nicht fortgesetzt wird, bevor die über die durch LAC zu dieser Zeit angegebene Anzahl hinausgehenden Daten schließlich zum Speicherzugriffsbefehl übertragen worden sind, wird das Vorauslesen von Daten aufgrund von A(I - M) nicht vor dem Aktualisieren von A(I) zu den entsprechenden Daten durchgeführt. Dementsprechend werden die aktualisierten Daten immer vorausgelesen, so daß die Kohärenz sichergestellt ist. Ein Beispiel des Zeitablaufdiagramms zum Beschreiben der Datenkohärenz-Gewährleistungsoperation unter der Vorgriffssteuerung ist in den Fig. 21A und 21B dargestellt.
- Dieses Beispiel veranschaulicht das Gewährleisten der Kohärenz während des Lesens eines Feldelements A(I - 4) in einer in derselben Zeichnung dargestellten DO-Schleife. Weil das Feldelement A(I - 4) in der Schleife immer vor vier Durchgängen beim Ausführen einer Schleife aktualisiert wird, muß das Ergebnis seiner Aktualisierung ausgelesen werden. Daher wird der Vorgriffszählwert LAC als 3 festgelegt und wird das aufgrund des Vorauslesens ausgeführte Vorgreifen auf drei Elemente beschränkt. Weil der Wert von BAL LAC erreicht, wenn das Datenlesen für einen Ladebefehl (3) in einem vierten Zyklus (C4) abgeschlossen ist, wird das Ausgeben einer Anforderung unterbrochen. Wenn ein Ladebefehl (1) (als 1d.1 abgekürzt) in C6 ausgeführt wird und PDR-Daten ausgelesen werden, wird BAL auf 2 gesetzt, so daß eine Vorausleseanforderung ausgegeben werden kann. Es kann daher gewährleistet werden, daß das nächste Vorauslesen von 1d.5 nach dem Ausführen eines Befehls von 1d.2 ausgeführt wird. Andererseits wird das vor dem Vorauslesen von 1d.5 auszuführende Schreiben st.5 von Daten in ein Feldelement A(5) vor 1d.2 ausgeführt, wie anhand des Programms offensichtlich ist. Dementsprechend wird der Befehl 1d.5 nach Abschluß von st.5 ausgeführt, wodurch aktualisierte Daten erhalten werden können.
- Mehrere Programme, die auf die Objekten entsprechenden Datenstrukturen zugreifen oder Bezug nehmen, werden nun in Zusammenhang mit einem Optimierungssystem zum Erzielen der Beschleunigung, einem Objektprogramm, auf das das System angewendet wird, und bei der vorliegenden Informationsverarbeitungsvorrichtung verwendeten Befehlsausführungsverfolgungen beschrieben.
- Fig. 22A zeigt ein Programm, das auf einen sequentiellen Vektor B zugreift oder Bezug nimmt. In diesem Fall wird angenommen, daß eine Schleifenlänge 3 N groß ist und ein Vektor B(I) die Kapazität des Cache-Speichers im Prozessor 2 übersteigt. Es wird das Optimieren zum Zugriff auf einen extern bereitgestellten Cache-Speicher (nachfolgend einfach Cache-Speicher genannt) des Prozessors 2 ausgeführt. Unter der Annahme, daß bei der vorliegenden Ausführungsform etwa 7 Zyklen zum Zugriff auf den Cache-Speicher 1001 erforderlich sind, werden die folgende Schleifenentfaltung und Befehlszeitplanung angewendet. Ein Quellprogramm wird zuerst zur Dreifachschleifenentfaltung gebracht, wie in Fig. 22B dargestellt ist. Befehle, die durch Entfalten dieses Schleifenabschnitts zum Objektprogramm und Anwenden der Befehlszeitplanung auf diesen erhalten werden, sind in Fig. 23 dargestellt. In der Zeichnung werden die Befehle als drei Befehle für jede Zeile beschrieben. Hierdurch soll die Entsprechung mit dem Quellprogramm nach der in Fig. 22B dargestellten Schleifenentfaltung leicht verständlich werden. Befehlspositionen des Speichers 1 sind in Form einer ersten Zeile und einer ersten Spalte (nachfolgend als 1, 1) beschrieben), (1, 2), (1, 3) (2, 1), ... ausgerichtet. Falls die Befehle insbesondere für bis zu drei Zeilen in einer normalen Schreibweise beschrieben werden, werden sie folgendermaßen ausgedrückt:
- (1,1)[MR2]Fload(GR12) → FR2; B(I)
- (1,2)[MR3]Und MR3, MR10 → MR3
- (2,1)[MR2]Addiere GR12 + d1 → GR12
- (2,2)[MR1]Setze 1 auf MR3
- (2,3)[MR4]Fstore FR4 → (GR13); A(I + 2)
- (3,2)[MR1]Und MR3, MR10 → MR3
- (3,3)[MR4]Addiere GR13 + d2 → GR13
- Maskenregisternummern (durch rm bezeichnet) zum Steuern des Vorhandenseins oder Fehlens einer Ausführung der Befehle werden den Kopfteilen der Befehle zugewiesen. Die Fig. 24 und 25 zeigen die Ausrichtung (Spuren) ausgeführter Befehle zu der Zeit, zu der die Objekte ausgeführt wurden. Beim ursprünglichen Programm ist jedoch eine Schleifenlänge der Einfachheit halber auf 6 (N = 2) gesetzt. Nach der ersten Ausführung eines Objektprogramms in einer Schleife müssen der anfängliche Befehl in einer zweiten Spalte und die anfänglichen drei Befehle in einer dritten Spalte nicht ausgeführt werden. Sie werden unter einer Bedingungserfüllungssteuerung ausgeführt, weil die anfänglichen Werte der Maskenregister wie in derselben Zeichnung dargestellt gesetzt sind. Es sei bemerkt, daß MR1 (in einem logischen Wert als wahr ausgedrückt) immer 1 ist. Eine erste Programmausführungsstufe einschließlich dieser Ausführungsunterdrückung wird als Einleitungsstufe bezeichnet. Bei einer zweiten Ausführung werden alle Befehle in der Schleife ausgeführt. Diese Programmausführungsstufe wird als Hauptstufe bezeichnet. Bei diesem Beispiel wird die Hauptstufe einmal ausgeführt. Die Hauptstufe wird jedoch normalerweise wiederholt entsprechend der Schleifenlänge ausgeführt. Bei einer dritten Ausführung wird die Ausführung der Befehle aus der 21. bis 26. Zeile und der 28. Zeile der ersten Spalte, der Befehle aus der 24. bis 29. Zeile der zweiten Spalte und der Befehle aus der 27. bis 28. Zeile der dritten Spalte unterdrückt. Diese letzte Schleifenausführungsstufe wird als Abschlußstufe bezeichnet. Schließlich würden die auszuführenden Befehle nur die durch Rahmen umgebenen Befehle sein.
- Wenn dieser Code ausgeführt wird, veranlaßt ein Gleitkommazahl-Speicherzugriffsbefehl Fload an einer Position (1, 1), daß ein Gleitkommaregister FR2 ein Vektorelement B(I) aus einem siebten Zyklus aufnimmt. Adressen wurden in einem Universalregister GR12 gespeichert. Es müssen neun Befehle verarbeitet werden, bis ein auf FR2 zugreifender Gleitkommazahl-Speicherbefehl Fstore an einer Position (5, 1) ausgeführt wird. Dieser Prozessor 2 braucht neun Zyklen. Daher wird der Fstore-Befehl ohne Warten ausgeführt, weil die erforderlichen Daten bereits in FR2 aufgenommen wurden. Der Fload-Befehl an einer Position (4, 2) liest das nächste Vektorelement B(I + 1) aus. Weil jedoch FR2 verwendet wird, wird das Vektorelement B(I + 1) in ein FR3 aufgenommen. Ein Register zum Speichern einer Adresse verwendet jedoch gemeinsam damit GR12.
- Eine Datenbezugs-Latenzzeit, die länger ist als eine Pipeline-Teilung, kann in einem anderen Befehlsprozeß versteckt werden, indem der Objektcode nach der Schleifenentfaltung auf diese Weise optimal zeitlich geplant wird. Bei der vorliegenden Ausführungsform kann das Objektprogramm ohne Warten auf einen Datenbezug in der oben beschriebenen Weise ausgeführt werden, falls alle Daten im Cache-Speicher 1001 gesichert sind. Falls die Daten jedoch nicht vollständig in den Cache-Speicher 1001 eingegeben werden können, wird in eine Warteschlange eingereiht. Um dies zu vermeiden, wird ein Verfahren zum weiteren Verbessern der Multiplizität der Schleifenentfaltung berücksichtigt. Weil die Anzahl der erforderlichen Register jedoch ansteigt, werden diesem Verfahren Einschränkungen auferlegt. Die vorliegende Ausführungsform löst dieses Problem wirksam.
- Fig. 26A zeigt ein Beispiel eines Programms, das sich auf einen indexierten Vektor B bezieht. Der indexierte Vektor ist L. Ebenso wie das Programmbeispiel 1 wird das Programm einer Dreifachschleifenentfaltung unterzogen, wie in Fig. 26B dargestellt ist, um dadurch in Fig. 27 dargestellte Objekte zu erzeugen. Der Einfachheit halber wird die Länge einer Schleife als 3 (N = 1) definiert, und die sich aus ihrer Befehlsausführung ergebenden Spuren sind in den Fig. 28 und 29 dargestellt. Unter einer Bedingungsausführungssteuerung ausgeführte Befehle sind durch Rahmen umgeben und angegeben.
- Fig. 30A veranschaulicht ein Beispiel eines Programms, das sich auf einen indexierten Vektor bezieht. Das Ergebnis wird nur unter der Voraussetzung, daß der Wert eines Index positiv ist, in einem Vektor A gespeichert. In diesem Zusammenhang ist auch in Fig. 30B ein übersetztes Quellprogramm gezeigt, ist in Fig. 31 ein Objektprogramm dargestellt und sind in den Fig. 32 und 33 Befehlsausführungsspuren veranschaulicht. Wie oben beschrieben wurde, kann die Informationsverarbeitungsvorrichtung gemäß der vorliegenden Ausführungsform die folgenden Merkmale aufweisen.
- Eine Vorausleseoperation hinsichtlich aller einzelnen Daten wird ohne Ausführen eines expliziten Vorauslesebefehls asynchron mit dem Prozessor 2 ausgeführt. Hierdurch kann eine Leistungsverminderung verhindert werden, die durch einen beim synchronen Vorauslesen auftretenden Befehlsausführungs-Engpaß bewirkt wird.
- Bei einem Dateneinheit-Vorauslesemechanismus werden Daten nacheinander einzeln in Verbindung mit einem die Daten benötigenden Speicherzugriffsbefehl gelesen und im entsprechenden Vorauslesedatenregister (PDR) gesichert. Selbst bei an derselben Adresse vorhandenen Daten können die Daten gemäß dem Speicherzugriffsbefehl erneut ausgelesen und an verschiedenen Orten im Vorauslesedatenregister (PDR) gespeichert werden. Das oben angegebene Vorauslesen in den Dateneinheiten kann sich auf einen großen sequentiellen Vektor, einen nicht zusammenhängenden sequentiellen Vektor mit einer großen Schrittweite usw. sowie auf Vorauslesedaten mit einer geringen Wahrscheinlichkeit einer erneuten Verwendung beziehen.
- Weil eine Funktion zum Speichern vorausgelesener Daten im Cache-Speicher 1001 bereitgestellt ist, kann eine vorteilhafte Wirkung erreicht werden, bei der eine auf den Speicher 1 ausgeübte Belastung durch Vorauslesen der Daten aus diesem Cache-Speicher verringert werden kann, wo das Vorauslesen aus derselben Adresse häufig auftritt. Dies ist beispielsweise beim Bezug auf einen Zielvektor in indexierten Vektoren und niedrige Daten aus einer verknüpften Liste wirksam.
- Weil eine für eine Vorausleseanforderung erzeugte Adresse mit einer Operandenadresse für einen Speicherzugriffsbefehl identisch sein sollte, ist sie eine virtuelle Adresse. Die Vorausleseanforderung wird asynchron mit dem Prozessor 2 erzeugt und in einem zugeordneten Vorausleseadressenregister gesichert.
- Es sind zweckgebundene Vorauslesedatenpuffer (PDR) zum Sichern gelesener Daten bereitgestellt, um das Datenvorauslesen in Dateneinheiten vorzunehmen. Weil die PDR bereitgestellt sind, kann der erforderliche Datendurchsatzwert für den Zugriff auf den Cache-Speicher in gleichem Maße wie in dem Fall, in dem kein Vorauslesen verwendet wird, verringert werden. Demgemäß ist das Bereitstellen der PDR beim Reduzieren einer Kostenerhöhung wirksam.
- Beim Ausführen eines Vorauslesens werden das Initialisieren und Einleiten von Steuerinformationen sowie das Unterbrechen ihrer Zuführung entsprechend zweckgebundenen Befehlen ausgeführt.
- Die Übertragung der Daten von einem Vorauslesepuffer zum Prozessor 2 wird durch Ausführen des entsprechenden Speicherzugriffsbefehls angefordert. Der Speicherzugriffsbefehl wird jedoch mit seiner Basisadressenregister-Nummer als Schlüssel identifiziert. Daher ist ein der Übertragung fest zugeordneter Befehl nicht erforderlich. Weiterhin ist eine Erweiterung in der Art der Bereitstellung eines Identifikationsfelds für den herkömmlichen Befehl oder dergleichen ebenfalls nicht erforderlich.
- Wenn die Ausführungszeit des entsprechenden Speicherzugriffsbefehls als Bezug definiert ist, kann die Zeit, zu der die entsprechenden Daten gelesen werden, gesteuert werden. Es kann insbesondere eine Steuerung ausgeführt werden, die ermöglicht, daß nur Daten vorausgelesen werden, die für eine Befehlsausführung erforderlich sind, die der Ausführung des vorauszulesenden Speicherzugriffsbefehls n mal vorausgeht. Daher kann eine Verunreinigung des Cache-Speichers mit den unnötigen Daten verhindert werden. Weiterhin kann die Vorgriffssteuerung auch zur Gewährleistung der Datenkohärenz verwendet werden.
- Die Kohärenz zwischen PDR und dem Cache-Speicher wird unter Verwendung einer Speicheradressenüberprüfung und eines als Vorauslesepufferumleitung PBR bezeichneten Mechanismus durch die Hardware gewährleistet. Wenn insbesondere ein Speicherbefehl einen Vorauslesebereich nach dem Starten des Vorauslesens aktualisiert, stellt die Hardware sicher, daß sich ein Speicherzugriffsbefehl auf aktualisierte Daten bezieht.
- Selbst dann, wenn eine WENN-Anweisung in einer Schleife existiert, kann das vorliegende Vorauslesen angewendet werden, indem vorausgelesene Daten selbst dann, wenn die Ausführung eines bedingten Speicherzugriffsbefehls unterdrückt wird, bei einer leeren Übertragung übersprungen werden.
- Beim Erzeugen von auf einen sequentiellen Vektor bezogenen Vorausleseadressen können die Adressen bei vorbestimmten Intervallen nichtlinear aktualisiert werden. Demgemäß können alle erforderlichen Daten durch ein einziges Starten des Vorauslesens vorausgelesen werden, wenn die innerste Schleife zum teilweisen Zugriff auf ein mehrdimensionales Feld wiederholt ausgeführt wird. Dies ist zum Verringern des Zusatzaufwands beim Start des Vorauslesens und zum Erzielen der Beschleunigung wirksam.
- Durch einen mit einer Unterbrechung verbundenen Kontextwechsel erübrigt es sich, ein Speichern und Wiederherstellen eines PDR durchzuführen. Bei einer Unterbrechung aufgegebene Daten werden nach ihrer Rückkehr erneut durch einen PBR-Mechanismus gelesen. Dies ist zum Beschleunigen des Kontextwechsels wirksam.
- Gemäß den verschiedenen oben beschriebenen Merkmalen der vorliegenden Erfindung kann eine Informationsverarbeitungsvorrichtung bereitgestellt werden, die eine Vorausleseschaltung mit einer höheren Funktion aufweist.
- Gemäß einem Merkmal der vorliegenden Erfindung können beispielsweise in einem Cache-Speicher gesicherte Daten beim Vorauslesen in der Informationsverarbeitungsvorrichtung, bei der der Cache-Speicher in einem Speicher in der Art eines Hauptspeichers oder dergleichen vorhanden ist, verwendet werden.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung können mehrere Gruppen von Daten vorausgelesen werden.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung können auch Daten vorausgelesen werden, deren Struktur im Vergleich zu einem einfachen Vektor in der Art eines indexierten Vektors oder dergleichen komplex ist.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung kann eine Vorausleseschaltung erhalten werden, die selbst dann anwendbar ist, wenn eine WENN-Anweisung in einer Schleife existiert, indem vorausgelesene Daten selbst dann bei leerer Übertragung übersprungen werden, wenn die Ausführung eines bedingten Speicherzugriffsbefehls unterdrückt wird.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung können die Adressen in nichtlinearer Weise bei vorbestimmten Intervallen aktualisiert werden, wenn auf einen sequentiellen Vektor bezogene Vorausleseadressen erzeugt werden. Demgemäß können sämtliche erforderlichen Daten durch ein einziges Starten des Vorauslesens vorausgelesen werden, wenn die innerste Schleife zum teilweisen Zugriff auf ein mehrdimensionales Feld wiederholt ausgeführt wird. Dies ist zum Verringern des Zusatzaufwands beim Start des Vorauslesens und zum Erzielen der Beschleunigung wirksam.
- Gemäß einem weiteren Merkmal der vorliegenden Erfindung kann die Verwendung oder Nichtverwendung vorausgelesener Daten selbst dann gesteuert werden, wenn in der Informationsverarbeitungsvorrichtung eine Unterbrechung erzeugt wird.
Claims (15)
1. Informationsverarbeitungsvorrichtung, aufweisend:
(a) eine Speichereinrichtung (1) zum Speichern eines Programms und von Daten,
(b) einen mit der Speichereinrichtung (1) verbundenen Prozessor (2) zur Ausführung
von in dem Programm enthaltenen Befehlen,
(c) einen mit der Speichereinrichtung (1) verbundenen Cache-Speicher (1001) zum
Speichern einer Kopie von in jener enthaltenen Blöcken,
(d) eine mit dem Cache-Speicher (1001) und dem Prozessor (2) verbundene Cache-
Steuerschaltung (101, 102, 1003 (Fig. 10)) zur Steuerung von Zugriffen auf den
Cache-Speicher (1001), und
(e) eine mit dem Prozessor (2) und der Speichereinrichtung (1) verbundene
Vorausleseschaltung (105) zum Vorauslesen einer Gruppe von Daten vor dem Ausführen
von Befehlen, die die Gruppe von Daten verwenden können,
wobei die Vorausleseschaltung (105) beinhaltet:
(e1) mehrere Puffer (704) zum Speichern der vorausgelesenen Gruppe von Daten, und
(e2) eine Vorauslese-Steuerschaltung (105) zur Durchführung des Vorauslesens durch
Ansprechen auf eine von dem Prozessor (2) ausgegebene
Datenvorausleseanforderung und aufeinanderfolgendes Ausgeben einer Gruppe von
Vorauslese-Datenleseanforderungen, die das Auslesen einer Gruppe von durch die
Datenvorausleseanforderung bezeichneten Daten verlangen, an die Cache-Steuerschaltung (101, 102,
1003 (Fig. 10)) und außerdem durch Ansprechen auf eine folgende Lieferung der
genannten Gruppe von Daten an die Vorausleseschaltung (105) und
aufeinanderfolgendes Schreiben der gelieferten Gruppe von Daten in die Puffer (704),
(e3) wobei die Vorauslese-Steuerschaltung (105) außerdem auf einen von dem Prozessor
(2) nach der Datenvorausleseanforderung ausgegebene Datenleseanforderung
anspricht und erkennt, ob von der Datenleseanforderung bezeichnete Daten in einem
der Puffer (704) gespeichert sind, und die bezeichneten Daten aus einem der Puffer
(704) zum Prozessor (2) überträgt, falls sie in dem einen Puffer gespeichert sind,
und
(d1) wobei die Cache-Steuerschaltung (101, 102, 1003 (Fig. 10)) auf jede aus der
Gruppe an von der Vorauslese-Steuerschaltung (105) ausgegebenen Vorauslese-
Datenleseanforderungen anspricht und von der jeweiligen
Vorauslese-Datenleseanforderung bezeichnete Daten an die Vorausleseschaltung (105) überträgt, falls die
bezeichneten Daten im Cache-Speicher (1001) gespeichert sind, und verlangt, die
bezeichneten Daten aus der Speichereinrichtung (1) zu lesen, falls sie nicht im
Cache-Speicher (1001) gespeichert sind.
2. Vorrichtung nach Anspruch 1,
wobei die Vorauslese-Steuerschaltung (105) außerdem verhindert, daß die Cache-
Steuerschaltung (101, 102, 1003 (Fig. 10)) die von der von dem Prozessor (2)
ausgegebenen Datenleseanforderung bezeichneten Daten überträgt, falls diese in einem der Puffer
(704) in der Vorausleseschaltung (105) gespeichert sind,
wobei die Gache-Steuerschaltung (101, 102, 1003 (Fig. 10)) außerdem auf die
vom Prozessor (2) ausgegebene Datenleseanforderung anspricht und die von der
Datenleseanforderung bezeichnete Daten von dem Cache-Speicher (1001) zum Prozessor (2)
überträgt, wenn die Übertragung der bezeichneten Daten nicht von der
Vorauslese-Steuerschaltung (105) verhindert ist, falls die bezeichneten Daten im Cache-Speicher (1001)
gespeichert sind,
wobei die Cache-Steuerschaltung (101, 102, 1003 (Fig. 10)) außerdem auf die
Datenleseanforderung anspricht und an die Speichereinrichtung (1) eine erste
Blockübertragungsanforderung liefert, die die Übertragung eines ersten Blocks mit den bezeichneten
Daten verlangt, falls die bezeichneten Daten nicht in dem Gache-Speicher (1001)
gespeichert sind, wenn eine Übertragung der bezeichneten Daten nicht von der
Vorauslese-Steuerschaltung (105) verhindert ist, und wobei die Cache-Steuerschaltung (101, 102, 1003
(Fig. 10)) außerdem die in dem ersten Block enthaltenen bezeichneten Daten an den
Prozessor (2) überträgt, falls der erste Block von der Speichereinrichtung (1) an den Cache-
Speicher (1001) übertragen ist.
3. Vorrichtung nach Anspruch 2 mit einer Speichereinrichtungs-Steuerschaltung (103,
104) zur Steuerung von Zugriffen auf die Speichereinrichtung (1),
wobei die Cache-Steuerschaltung (101, 102, 1003 (Fig. 10)) außerdem auf jeden
aus der Gruppe an Vorauslese-Datenleseanforderungen anspricht und an die
Speichereinrichtungs-Steuerschaltung (103, 104) eine zweite Blockübertragungsanforderung liefert,
die verlangt, daß die Speichereinrichtung (1) einen zweiten Block ausliest, der von der
jeweiligen Vorauslese-Datenleseanforderung bezeichnete Daten enthält, falls die von der
jeweiligen Vorauslese-Datenleseanforderung bezeichneten Daten nicht im Cache-Speicher
(1001) gespeichert sind,
wobei die Speichereinrichtungs-Steuerschaltung (103, 104) auf die zweite
Blockübertragungsanforderung anspricht, um den zweiten Block aus der Speichereinrichtung (1)
auszulesen und an den Cache-Speicher (1001) zu übertragen und die von der genannten einen
Vorauslese-Datenleseanforderung bezeichneten und in dem ausgelesenen zweiten
Block enthaltenen Daten an die Vorausleseschaltung (105) zu übertragen.
4. Vorrichtung nach Anspruch 3, wobei die Vorauslese-Steuerschaltung (105)
außerdem auf eine aus der Gruppe an Vorauslese-Datenleseanforderungen anspricht und an die
Speichereinrichtungs-Steuerschaltung (103, 104) eine
Vorauslese-Datenübertragungsanforderung liefert, die das Auslesen der von der einen Vorauslese-Datenleseanforderung
bezeichneten Daten aus der Speichereinrichtung (1) und die Übertragung der genannten
bezeichneten Daten an die Vorausleseschaltung (105) verlangt,
wobei die Vorauslese-Steuerschaltung (105) außerdem auf die von dem Prozessor
(2) ausgegebene Datenvorausleseanforderung anspricht und so gesteuert wird, daß
abhängig davon, ob die von dem Prozessor (2) ausgegebene Datenvorausleseanforderung eine
vorbestimmte Information enthält, entweder die zweite Blockübertragungsanforderung
oder die Vorauslese-Datenübertragungsanforderung geliefert wird,
wobei die Speichereinrichtungs-Steuerschaltung (103, 104) außerdem auf die
zweite Blockübertragungsanforderung anspricht und den zweiten Block aus der
Speichereinrichtung (1) ausliest und an den Cache-Speicher (1001) überträgt und die von der
genannten einen Vorauslese-Datenleseanforderung bezeichneten und in den ausgelesenen
Daten enthaltenen Daten an die Vorausleseschaltung (105) überträgt,
wobei die Speichereinrichtungs-Steuerschaltung (103, 104) außerdem auf die
Vorauslese-Datenübertragungsanforderung anspricht und die von der einen
Vorauslese-Datenleseanforderung bezeichneten Daten aus der Speichereinrichtung (1) ausliest und an die
Vorausleseschaltung (105) überträgt.
5. Vorrichtung nach Anspruch 3,
wobei die Cache-Steuerschaltung (101, 102, 1003 (Fig. 10)) außerdem auf eine
von dem Prozessor (2) ausgegebene Schreibanforderung, die zu schreibende Daten und
eine Adresse eines Orts der Speichereinrichtung (1) bezeichnet, anspricht und in den Cache-
Speicher (1001) die von der Schreibanforderung bezeichneten Daten schreibt,
wobei die Vorauslese-Steuerschaltung (105) außerdem auf die genannte
Schreibanforderung anspricht und erkennt, ob in einem der genannten Puffer (704) Daten mit der von
der Schreibanforderung bezeichneten Adresse gespeichert sind,
wobei die Vorauslese-Steuerschaltung (105) außerdem auf die Erkennung, daß
Daten mit der bezeichneten Adresse in einem der Puffer (704) gespeichert sind, anspricht und
die in dem einen Puffer gespeicherten Daten ungültig macht, und
wobei die Vorauslese-Steuerschaltung (105) außerdem auf die von dem Prozessor
(2) ausgegebene Datenleseanforderung anspricht und nicht verhindert, daß die
Cache-Steuerschaltung (101, 102, 1003 (Fig. 10)) die von der vom Prozessor (2) ausgegebenen
Datenleseanforderung bezeichneten Daten überträgt, falls die bezeichneten Daten in einem der
Puffer (704) gespeichert sind, aber von der Vorauslese-Steuerschaltung (105) ungültig
gemacht wurden.
6. Vorrichtung nach einem der Ansprüche 1 bis 5,
wobei der Prozessor (2) mehrere Register (1103B, 1103C (Fig. 11)) beinhaltet, die
von den Befehlen bezeichnet werden können,
wobei die Vorauslese-Steuerschaltung (105) eine Gruppe von Daten aus der
Speichereinrichtung (1) liest, ansprechend auf jede aus einer Gruppe von von dem Prozessor (2)
ausgegebenen Datenvorausleseanforderungen die gelesene Gruppe von Daten in eine
Gruppe von Puffern innerhalb der Vielzahl von Puffern (704) speichert und entsprechend
der genannten Gruppe von Puffern eine Basisregisternummer speichert, wobei jede
Datenvorausleseanforderung eine Datenstruktur der Gruppe von Daten und die
Basisregisternummer bezeichnet,
wobei ansprechend auf jede aus einer Gruppe an von dem Prozessor (2)
ausgegebenen Datenleseanforderungen, die jeweils eine Adresse eines aus einer Gruppe von aus der
Speichereinrichtung (1) auszulesenden Daten und die Basisregisternummer eines
Basisregisters, das für die genannte Gruppe an Datenleseanforderungen gemeinsam zur
Bezeichnung der Adresse verwendet wird, bezeichnet, die Vorauslese-Steuerschaltung (105)
außerdem erkennt, ob die gleiche Basisregisternummer wie die von der jeweiligen
Datenleseanforderung bezeichnete bereits in der Vorauslese-Steuerschaltung (105) entsprechend
einer Gruppe von Puffern innerhalb der Vielzahl von Puffern gespeichert ist, und
wobei die Vorauslese-Steuerschaltung (105) ansprechend auf jede
Datenleseanforderung an den Prozessor (2) außerdem eines aus der Gruppe an Daten liefert, die in der
einen Gruppe von Puffern innerhalb der Vielzahl an Puffern gespeichert sind, wenn erkannt
wurde, daß die gleiche Basisregisternummer bereits in Entsprechung zu der einen Gruppe
an Puffern gespeichert ist.
7. Vorrichtung nach Anspruch 6, wobei die Vielzahl an von dem Prozessor (2)
ausgegebenen Datenvorausleseanforderungen eine Datenvorausleseanforderung beinhaltet, die
als Datenstruktur einer vorauszulesenden Gruppe an Daten die Datenstruktur eines
einfachen Vektors bezeichnet, dessen Elemente eine vorbestimmte Adressenschrittweite
aufweisen.
8. Vorrichtung nach Anspruch 6, wobei die Vielzahl an von dem Prozessor (2)
ausgegebenen Datenvorausleseanforderungen eine Datenvorausleseanforderung enthält, die als
Datenstruktur einer vorauszulesenden Gruppe an Daten die Datenstruktur eines
zweidimensionalen Felds bezeichnet, das mehrere einfache Vektoren beinhaltet, die voneinander
durch eine vorbestimmte Adressenschrittweite getrennt sind, wobei jeder einfache Vektor
Elemente beinhaltet, die eine vorbestimmte Adressenschrittweite aufweisen.
9. Vorrichtung nach Anspruch 6, wobei die Vielzahl an von dem Prozessor (2)
ausgegebenen Datenvorausleseanforderungen eine Datenvorausleseanforderung enthält, die als
Datenstruktur einer vorauszulesenden Gruppe an Daten die Datenstruktur eines indizierten
Vektors bezeichnet, der einen ersten einfachen Vektor und einen zweiten einfachen Vektor,
dessen Elemente Indizes auf vorauszulesende Elemente innerhalb von Elementen des
ersten Vektors enthält, wobei die Elemente des ersten und des zweiten einfachen Vektors je
eine vorbestimmte Adressenschrittweite aufweisen.
10. Vorrichtung nach Anspruch 6, wobei die Vielzahl an von dem Prozessor (2)
ausgegebenen Datenvorausleseanforderungen eine Datenvorausleseanforderung beinhaltet, die
als Datenstruktur einer vorauszulesenden Gruppe an Daten die Datenstruktur einer
Linkliste bezeichnet, die mehrere Stufen an Tabellen enthält, wobei Elemente einer jeweiligen
Tabelle Ortsinformationen eines Elements einer der Vielzahl von Tabellen enthalten, die
der jeweiligen Tabelle folgt.
11. Vorrichtung nach einem der Ansprüche 1 bis 10,
wobei der Prozessor (2) an die Vorausleseschaltung (105) mehrere
Datenvorausleseanforderungen ausgibt, die jeweils eine Gruppe von vorauszulesenden Daten bezeichnen
und die mindestens eine Datenvorausleseanforderung beinhalten, die eine Datenstruktur
einer von der genannten einen Datenvorausleseanforderung zu lesenden Gruppe an Daten
und die Datenstruktur mindestens einer anderen Gruppe an Daten, die verwendet wird, um
die Adressen der genannten Gruppe an zu lesenden Daten zu berechnen, enthält,
wobei die Vorauslese-Steuerschaltung (105) mit dem Prozessor (2) und der
Vielzahl an Puffern (704) verbunden ist und auf die genannte von dem Prozessor (2)
ausgegebene eine Datenvorausleseanforderung anspricht, um nacheinander die andere Gruppe an
Daten aus der Speichereinrichtung (1) zu lesen und die andere Gruppe an Daten
nacheinander in eine erste Gruppe an Puffern in der genannten Vielzahl an Puffern (704) zu
schreiben,
wobei die Vorauslese-Steuerschaltung (105) außerdem auf die genannte eine
Datenvorausleseanforderung anspricht und eine Gruppe an Adressen für die genannte Gruppe
an vorauszulesenden Daten aufgrund der in der ersten Gruppe an Puffern gespeicherten
anderen Gruppe an Daten erzeugt,
wobei die Vorauslese-Steuerschaltung (105) außerdem nacheinander die zu lesende
Gruppe an Daten aufgrund der erzeugten Gruppe an Adressen aus der Speichereinrichtung
(1) ausliest und die ausgelesene Gruppe an zu lesenden Daten nacheinander in eine zweite
Gruppe an Puffern innerhalb der Vielzahl an Puffern (704) schreibt,
wobei die Vorauslese-Steuerschaltung (105) außerdem auf eine von dem Prozessor
(2) ausgegebene Datenleseanforderung anspricht und aufgrund von von der
Datenleseanforderung bezeichneter Adress-Informationen erkennt, ob von der Datenleseanforderung
verlangte Daten in der zweiten Gruppe an Puffern gespeichert sind, und
die Vorauslese-Steuerschaltung (105) dem Prozessor (2) außerdem aus dem
genannten einen Puffer die von der Datenleseanforderung verlangten Daten liefert, falls die
zweite Gruppe an Puffern die von der Datenleseanforderung verlangten Daten speichert.
12. Vorrichtung nach einem der Ansprüche 1 bis 11,
wobei der Prozessor (2) eine Datenvorausleseanforderung ausgibt, die das
Vorauslesen einer Gruppe an Daten verlangt, die aus einer Vielzahl an der Reihe nach geordneten
Teilgruppen an Daten besteht, die jeweils Elemente beinhalten, deren Adressen um eine
erste vorbestimmte Adressenschrittweite von einem benachbarten Element beabstandet
sind, wobei die Adresse des letzten Elements einer jeweiligen Teilgruppe um eine zweite
vorbestimmte Adressenschrittweite von der Adresse eines Startelements einer Teilgruppe
an Daten, die der jeweiligen Teilgruppe folgt, beabstandet ist,
wobei die Vorauslese-Steuerschaltung (105) mit dem Prozessor (2) und der
Vielzahl an Puffern (704) verbunden ist und auf die von dem Prozessor (2) ausgegebene
Datenvorausleseanforderung anspricht, um nacheinander Adressen der genannten Gruppe an
Daten zu erzeugen,
wobei die Vorauslese-Steuerschaltung (105) aufgrund der ersten
Adressenschrittweite nacheinander Adressen von zu einer Teilgruppe innerhalb der genannten Teilgruppen
an Daten gehörenden Daten erzeugt,
wobei die Vorauslese-Steuerschaltung (105) außerdem auf die Erzeugung von
Adressen von Daten der genannten einen Teilgruppe anspricht und eine Adresse von
Startdaten einer der genannten einen Teilgruppe folgenden Teilgruppe aufgrund der zweiten
Adressenschrittweite erzeugt,
wobei die Vorauslese-Steuerschaltung (105) außerdem aufgrund der erzeugten
Adressen nacheinander die Gruppe an Daten aus der Speichereinrichtung (1) ausliest und
die ausgelesene Gruppe an Daten nacheinander in die Vielzahl an Puffern (704) schreibt,
wobei die Vorauslese-Steuerschaltung (105) außerdem auf eine von dem Prozessor
(2) für die Speichereinrichtung (1) ausgegebene Datenleseanforderung anspricht und
aufgrund von durch die Datenleseanforderung bezeichneter Adressinformationen erkennt, ob
von der Datenleseanforderung verlangte Daten in einem der Vielzahl an Puffern (704)
gespeichert sind, und
wobei die Vorauslese-Steuerschaltung (105) dem Prozessor außerdem die von der
Datenleseanforderung verlangten Daten aus dem einen Puffer liefert, falls die Puffer die
von der Datenleseanforderung verlangten Daten speichern.
13. Vorrichtung nach einem der Ansprüche 1 bis 12, wobei der Prozessor (2) aufweist:
mehrere Maskenregister (1103D (Fig. 11)), die jeweils Maskeninformationen
enthalten, die die Ausführung eines das jeweilige Maskenregister bezeichnenden Befehls
steuern,
wobei der Prozessor (2) an die Vorausleseschaltung (105) eine
Datenvorausleseanforderung ausgibt, die eine Gruppe an zu lesenden Daten und eines der Vielzahl an
Maskenregistern (1103D (Fig. 11)) bezeichnet,
wobei der Prozessor (2) außerdem auf jeden einer Vielzahl von Datenlesebefehlen
anspricht, die jeweils das Auslesen von Daten aus der Speichereinrichtung (1) verlangen,
und sie an die Vorausleseschaltung (105) ausgibt, wobei jede Datenleseanforderung
Adressinformationen beinhaltet, die von dem Datenlesebefehl und dem Inhalt eines von
dem jeweiligen Datenlesebefehl bezeichneten aus der Vielzahl an Maskenregistern (1103D
(Fig. 11)) bezeichnet sind,
wobei die Vorauslese-Steuerschaltung (105) mit dem Prozessor (2), der
Speichereinrichtung (1) und der Vielzahl an Puffern (704) verbunden ist und auf die von dem
Prozessor (2) ausgegebene Datenvorausleseanforderung anspricht, um nacheinander die
Gruppe an durch die Datenvorausleseanforderung bezeichneten Daten von der
Speichereinrichtung (1) zu lesen und die genannte Gruppe an Daten nacheinander in die Vielzahl an
Puffern (704) zu schreiben,
wobei die Vorauslese-Steuerschaltung (105) außerdem auf jede der Vielzahl an
dadurch ausgegebenen Datenleseanforderungen anspricht und aufgrund der von der
jeweiligen Datenleseanforderung bezeichneten Adressinformationen erkennt, ob die von der
jeweiligen Datenleseanforderung verlangten Daten in der Vielzahl an Puffern (704) enthalten
sind,
wobei die Vorauslese-Steuerschaltung (105) dem Prozessor (2) außerdem aus der
Vielzahl an Puffern (704) Daten liefert, die von jeder der Vielzahl an
Datenleseanforderungen verlangt wurden, falls die Vielzahl an Puffern (704) die von der jeweiligen
Datenleseanforderung verlangten Daten speichern,
wobei die Vorauslese-Steuerschaltung (105) außerdem auf eine Gruppe von
Datenleseanforderungen innerhalb der Vielzahl an von dem Prozessor (2) ausgegebenen
Datenleseanforderungen anspricht und nacheinander eine Gruppe von Daten aus der Vielzahl an
Puffern (704) liest, wobei die Gruppe von Datenleseanforderungen in der Vielzahl an
Puffern (704) gespeicherte Daten verlangt, und
wobei die Vorauslese-Steuerschaltung (105) außerdem auf den Inhalt eines von der
jeweiligen aus der Gruppe an Datenleseanforderungen bezeichneten aus der Vielzahl an
Maskenregistern (1103B (Fig. 11)) anspricht und das Auslesen von von der jeweiligen
Datenleseanforderung verlangten Daten so steuert, daß die verlangten Daten in
Abhängigkeit davon, ob der Inhalt der bezeichneten Maske einen vorbestimmten Wert oder nicht
aufweist, ausgelesen oder nicht ausgelesen wird.
14. Vorrichtung nach Anspruch 13,
wobei die von dem Prozessor (2) ausgegebene Datenvorausleseanforderung
Maskenverwendungsinformationen beinhaltet, die die Verwendung oder nicht die Verwendung
des Inhalts eines von einer von dem Prozessor (2) ausgegebenen Datenleseanforderung
bezeichneten der Vielzahl an Maskenregistern (1103D (Fig. 11)) angibt, und
wobei die Vorauslese-Steuerschaltung (105) außerdem verhindert, daß sie auf den
Inhalt eines von der jeweiligen aus der Gruppe an Datenleseanforderungen bezeichneten
aus der Gruppe an Maskenregistern (1104D (Fig. 11)) anspricht, falls die von der
Datenvorausleseanforderung bezeichneten Maskenverwendungsinformationen nicht die
Verwendung des Inhalts eines Maskenregisters angeben.
15. Vorrichtung nach einem der Ansprüche 1 bis 14, wobei der Prozessor (2) an die
Vorausleseschaltung (105) eine Datenvorausleseanforderung ausgibt, die eine Gruppe zu
lesender Daten bezeichnet,
wobei die Vorauslesesteuerschaltung (105) mit dem Prozessor (2) und der
Speichereinrichtung (1) verbunden ist und auf die von dem Prozessor (2) ausgegebene
Datenvorausleseanforderung anspricht, um nacheinander die von der
Datenvorausleseanforderung bezeichnete Gruppe an Daten aus der Speichereinrichtung (1) auszulesen und die
gelesene Gruppe an Daten in die Vielzahl an Puffern zu schreiben,
wobei die Vorauslese-Steuerschaltung (105) außerdem auf die Ausführung eines
Befehls durch den Prozessor (2) anspricht, der die Bezugnahme auf eines aus der Gruppe
an Daten in der Vielzahl an Puffern (704) verlangt, und den Prozessor (2) mit den vom
Befehl bezeichneten Daten aus der Vielzahl an Puffern (704) beliefert, falls diese die
verlangten Daten speichern,
wobei die Vorauslese-Steuerschaltung (135) außerdem auf eine im Prozessor (2)
erzeugte Unterbrechung anspricht, um erste die genannte Datengruppe angebende
Informationen und zweite, bei Auftreten der Unterbrechung noch nicht aus der Speichereinrichtung
(1) gelesene Daten unter der Gruppe an Daten angebende Informationen und dritte, bei
Auftreten der Unterbrechung bereits an den Prozessor (2) gelieferte Daten unter einer
Anzahl an bereits von der Vorauslese-Steuerschaltung (105) ausgelesenen Daten
bezeichnende Informationen zu speichern,
wobei die Vorauslese-Steuerschaltung (105) außerdem auf die Beendigung der
durch den Prozessor (2) ausgeführten Unterbrechungsverarbeitung anspricht und die
gesicherten ersten bis dritten Informationen wiedergewinnt, und
die Vorauslese-Steuerschaltung (105) außerdem auf die wiedergewonnenen ersten
bis dritten Informationen anspricht und nacheinander aus der Speichereinrichtung (1) einen
Teil der Gruppe an Daten vorausliest, der bereits aus der Speichereinrichtung (1) gelesene
aber noch nicht bis Auftreten der Unterbrechung an den Prozessor (2) gelieferte Daten
sowie bis zum Auftreten der Unterbrechung unter der Gruppe an Daten noch nicht aus der
Speichereinrichtung (1) gelesene Daten enthält.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP00738895A JP3548616B2 (ja) | 1995-01-20 | 1995-01-20 | 情報処理装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE69620807D1 DE69620807D1 (de) | 2002-05-29 |
| DE69620807T2 true DE69620807T2 (de) | 2002-11-28 |
Family
ID=11664551
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE69620807T Expired - Fee Related DE69620807T2 (de) | 1995-01-20 | 1996-01-12 | Datenverarbeitungsvorrichtung zum Vorziehen einer Datenstruktur aus dem Hauptspeicher oder seinem Cachespeicher |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US5721865A (de) |
| EP (1) | EP0723221B1 (de) |
| JP (1) | JP3548616B2 (de) |
| DE (1) | DE69620807T2 (de) |
Families Citing this family (46)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6065108A (en) * | 1996-01-24 | 2000-05-16 | Sun Microsystems Inc | Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same |
| US5925100A (en) * | 1996-03-21 | 1999-07-20 | Sybase, Inc. | Client/server system with methods for prefetching and managing semantic objects based on object-based prefetch primitive present in client's executing application |
| US5983324A (en) * | 1996-03-28 | 1999-11-09 | Hitachi, Ltd. | Data prefetch control method for main storage cache for protecting prefetched data from replacement before utilization thereof |
| US5887151A (en) * | 1997-07-10 | 1999-03-23 | Emc Corporation | Method and apparatus for performing a modified prefetch which sends a list identifying a plurality of data blocks |
| US6058461A (en) | 1997-12-02 | 2000-05-02 | Advanced Micro Devices, Inc. | Computer system including priorities for memory operations and allowing a higher priority memory operation to interrupt a lower priority memory operation |
| US6247107B1 (en) * | 1998-04-06 | 2001-06-12 | Advanced Micro Devices, Inc. | Chipset configured to perform data-directed prefetching |
| US6055580A (en) * | 1998-05-29 | 2000-04-25 | 3Com Corporation | System for transferring length round down to cache line multiple capable to determine type of read request which selects and reads portion of prefetched data in memory |
| JP3506024B2 (ja) | 1998-12-10 | 2004-03-15 | 日本電気株式会社 | 情報処理装置 |
| US6311260B1 (en) * | 1999-02-25 | 2001-10-30 | Nec Research Institute, Inc. | Method for perfetching structured data |
| US6449697B1 (en) * | 1999-04-23 | 2002-09-10 | International Business Machines Corporation | Prestaging data into cache in preparation for data transfer operations |
| JP3968914B2 (ja) | 1999-06-02 | 2007-08-29 | 株式会社日立製作所 | ディスクアレイ装置 |
| US6754779B1 (en) * | 1999-08-23 | 2004-06-22 | Advanced Micro Devices | SDRAM read prefetch from multiple master devices |
| JP3739607B2 (ja) | 1999-08-24 | 2006-01-25 | 富士通株式会社 | 情報処理装置 |
| US6862657B1 (en) * | 1999-12-21 | 2005-03-01 | Intel Corporation | Reading data from a storage medium |
| EP1160662A1 (de) | 2000-03-10 | 2001-12-05 | Texas Instruments France | Prozessor mit Verfolgen von Zeiger zur Eliminierung redundanter Speicherabholung |
| US6934807B1 (en) * | 2000-03-31 | 2005-08-23 | Intel Corporation | Determining an amount of data read from a storage medium |
| US6629178B1 (en) | 2000-06-15 | 2003-09-30 | Advanced Micro Devices, Inc. | System and method for controlling bus access for bus agents having varying priorities |
| JP3979009B2 (ja) * | 2000-07-07 | 2007-09-19 | 株式会社デンソー | 制御情報出力装置及び情報システム |
| AU2001294788A1 (en) * | 2000-09-29 | 2002-04-08 | Sun Microsystems, Inc. | System and method for pre-fetching for pointer linked data structures |
| US6668307B1 (en) | 2000-09-29 | 2003-12-23 | Sun Microsystems, Inc. | System and method for a software controlled cache |
| US6598124B1 (en) | 2000-09-29 | 2003-07-22 | Sun Microsystems, Inc. | System and method for identifying streaming-data |
| US6578111B1 (en) | 2000-09-29 | 2003-06-10 | Sun Microsystems, Inc. | Cache memory system and method for managing streaming-data |
| US6782454B1 (en) | 2000-09-29 | 2004-08-24 | Sun Microsystems, Inc. | System and method for pre-fetching for pointer linked data structures |
| CN1537275A (zh) * | 2001-02-24 | 2004-10-13 | �Ҵ���˾ | 低等待时间存储器系统访问 |
| US20030014420A1 (en) * | 2001-04-20 | 2003-01-16 | Jessee Charles B. | Method and system for data analysis |
| US20030154363A1 (en) * | 2002-02-11 | 2003-08-14 | Soltis Donald C. | Stacked register aliasing in data hazard detection to reduce circuit |
| US6874067B2 (en) * | 2002-04-11 | 2005-03-29 | International Business Machines Corporation | Eliminating unnecessary data pre-fetches in a multiprocessor computer system |
| US7167954B2 (en) * | 2002-09-09 | 2007-01-23 | Broadcom Corporation | System and method for caching |
| DE10254653B4 (de) * | 2002-11-22 | 2009-05-28 | Infineon Technologies Ag | Vorrichtung zur Steuerung der Verarbeitung von Datenwörtern eines Datenstroms |
| US7058938B2 (en) * | 2003-03-05 | 2006-06-06 | Intel Corporation | Method and system for scheduling software pipelined loops |
| US7284014B2 (en) | 2003-04-07 | 2007-10-16 | Hitachi, Ltd. | Pre-fetch computer system |
| US7421525B2 (en) * | 2003-05-13 | 2008-09-02 | Advanced Micro Devices, Inc. | System including a host connected to a plurality of memory modules via a serial memory interconnect |
| US7529895B2 (en) | 2003-08-22 | 2009-05-05 | International Business Machines Corporation | Method for prefetching non-contiguous data structures |
| US7111126B2 (en) * | 2003-09-24 | 2006-09-19 | Arm Limited | Apparatus and method for loading data values |
| US7246203B2 (en) * | 2004-11-19 | 2007-07-17 | Motorola, Inc. | Queuing cache for vectors with elements in predictable order |
| US7761666B2 (en) | 2006-10-26 | 2010-07-20 | Intel Corporation | Temporally relevant data placement |
| JP5068552B2 (ja) * | 2007-02-02 | 2012-11-07 | ルネサスエレクトロニクス株式会社 | プリフェッチ方法、及びキャッシュ機構用ユニット |
| GB2466695B (en) * | 2007-06-18 | 2011-11-23 | Fujitsu Ltd | Processor and prefetch support program |
| CN101939733A (zh) * | 2008-02-08 | 2011-01-05 | 松下电器产业株式会社 | 外部设备存取装置、其控制方法及系统大规模集成电路 |
| US8364901B2 (en) * | 2009-02-13 | 2013-01-29 | Micron Technology, Inc. | Memory prefetch systems and methods |
| US8954680B2 (en) * | 2011-11-20 | 2015-02-10 | International Business Machines Corporation | Modifying data prefetching operation based on a past prefetching attempt |
| US9280474B2 (en) | 2013-01-03 | 2016-03-08 | Intel Corporation | Adaptive data prefetching |
| US9996350B2 (en) * | 2014-12-27 | 2018-06-12 | Intel Corporation | Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array |
| US20170177349A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Load-Indices-and-Prefetch-Gathers Operations |
| US10248569B2 (en) * | 2016-08-11 | 2019-04-02 | Futurewei Technologies, Inc. | Pattern based preload engine |
| US12299446B2 (en) * | 2017-06-28 | 2025-05-13 | Texas Instruments Incorporated | Streaming engine with stream metadata saving for context switching |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4860199A (en) * | 1987-07-31 | 1989-08-22 | Prime Computer, Inc. | Hashing indexer for branch cache |
| US4888679A (en) * | 1988-01-11 | 1989-12-19 | Digital Equipment Corporation | Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements |
| US5163140A (en) * | 1990-02-26 | 1992-11-10 | Nexgen Microsystems | Two-level branch prediction cache |
| DE4391002T1 (de) * | 1992-03-06 | 1995-02-23 | Rambus Inc | Vor-heranholen in einen Cache-Speicher zum minimieren der Hauptspeicherzugriffszeit und der Cache-Speichergröße in einen Computersystem |
| JPH06222990A (ja) * | 1992-10-16 | 1994-08-12 | Fujitsu Ltd | データ処理装置 |
| JP2744882B2 (ja) * | 1993-01-15 | 1998-04-28 | インターナショナル・ビジネス・マシーンズ・コーポレイション | キューにより命令の実行を制御する装置及び方法 |
| US5537573A (en) * | 1993-05-28 | 1996-07-16 | Rambus, Inc. | Cache system and method for prefetching of data |
-
1995
- 1995-01-20 JP JP00738895A patent/JP3548616B2/ja not_active Expired - Fee Related
-
1996
- 1996-01-12 EP EP96100414A patent/EP0723221B1/de not_active Expired - Lifetime
- 1996-01-12 DE DE69620807T patent/DE69620807T2/de not_active Expired - Fee Related
- 1996-01-18 US US08/588,503 patent/US5721865A/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| US5721865A (en) | 1998-02-24 |
| EP0723221A2 (de) | 1996-07-24 |
| EP0723221B1 (de) | 2002-04-24 |
| EP0723221A3 (de) | 1997-05-14 |
| JP3548616B2 (ja) | 2004-07-28 |
| DE69620807D1 (de) | 2002-05-29 |
| JPH08194615A (ja) | 1996-07-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE69620807T2 (de) | Datenverarbeitungsvorrichtung zum Vorziehen einer Datenstruktur aus dem Hauptspeicher oder seinem Cachespeicher | |
| DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
| DE69715328T2 (de) | System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen | |
| DE69427734T2 (de) | Linearadressierter Mikroprozessorcachespeicher | |
| DE68928513T2 (de) | Verfahren zur Vorverarbeitung mehrerer Befehle | |
| DE69023568T2 (de) | Cache-Speicheranordnung. | |
| DE3751474T2 (de) | Verzweigungsstrom-Koprozessor. | |
| DE69816044T2 (de) | Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken | |
| DE68928812T2 (de) | Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu | |
| DE69514165T2 (de) | Mehrstufige Cache-Speicheranordnung | |
| DE69518676T2 (de) | Cache-Speicheranordnung für einen Speicher | |
| DE68927172T2 (de) | Multiprozessorsystem mit cache-speichern | |
| DE69433339T2 (de) | Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren | |
| DE69032276T2 (de) | Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems | |
| DE69031183T2 (de) | Verfahren und Anordnung zur Kontrolle der Umwandlung virtueller Adressen in physikalische Adressen in einem Computersystem | |
| DE3884101T2 (de) | Abholung von Operanden in Unordnung. | |
| DE69929936T2 (de) | Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem | |
| DE112004002848B4 (de) | Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor | |
| DE69033331T2 (de) | Sprungvorhersage | |
| DE69329778T2 (de) | System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor | |
| DE69612991T2 (de) | System zur bearbeitung von selbstmodifizierendem kode | |
| DE69935737T2 (de) | Verfahren und gerät um zeitliche und feste daten in einer einzelspeicherstruktur zu verwalten | |
| DE69224084T2 (de) | Rechneranordnung mit Mehrfachpufferdatencachespeicher und Verfahren dafür | |
| DE68928727T2 (de) | Cachespeicheranlage zum Versorgen eines Festworts eines Befehlscodes mit variabler Länge und Befehlsabrufanlage | |
| DE69029995T2 (de) | Multiprozessor mit relativ atomaren Befehlen |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition | ||
| 8327 | Change in the person/name/address of the patent owner |
Owner name: HITACHI, LTD., TOKIO/TOKYO, JP Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE |
|
| 8339 | Ceased/non-payment of the annual fee |