DE69332663T2 - Datenprozessor mit einem Cachespeicher - Google Patents

Datenprozessor mit einem Cachespeicher Download PDF

Info

Publication number
DE69332663T2
DE69332663T2 DE69332663T DE69332663T DE69332663T2 DE 69332663 T2 DE69332663 T2 DE 69332663T2 DE 69332663 T DE69332663 T DE 69332663T DE 69332663 T DE69332663 T DE 69332663T DE 69332663 T2 DE69332663 T2 DE 69332663T2
Authority
DE
Germany
Prior art keywords
cache
data
signal
instruction
register
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 - Lifetime
Application number
DE69332663T
Other languages
English (en)
Other versions
DE69332663D1 (de
Inventor
William C. Dripping Springs Moyer
John H. Austin Arends
Christopher E. Dallas White
Keith E. Los Gatos Diefendorf
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP USA Inc
Original Assignee
Motorola Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Motorola Inc filed Critical Motorola Inc
Publication of DE69332663D1 publication Critical patent/DE69332663D1/de
Application granted granted Critical
Publication of DE69332663T2 publication Critical patent/DE69332663T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich im Allgemeinen auf ein Datenverarbeitungssystem und im Besonderen auf einen Cache-Speicher in einem Datenverarbeitungssystem.
  • Hintergrund der Erfindung
  • Cache-Speichersysteme sind entwickelt worden, um es einem Datenverarbeitungssystem zu ermöglichen, schneller und effizienter auf Informationen zuzugreifen. Mit der ansteigenden Effizienz wurden jedoch die Flexibilität und die Anwendersteuerung des Cache-Speichersystems begrenzt. Solche Beschränkungen werden im Allgemeinen für notwendig erachtet, um einen Anwender daran zu hindern, während des Betriebs versehentlich einen Fehler zu verursachen, und sind in der technischen Gemeinschaft gut bekannt.
  • In den meisten Datenprozessoren werden zwei Berechtigungspegel zur Verfügung gestellt, um den Zugriff auf den Speicher, den Cache, oder anders während externer Bustransaktionen, zu steuern und um den Betrieb des Datenprozessors zu steuern. Ein Supervisormodus stellt den höchsten Berechtigungspegel zur Verfügung. Wenn sich der Datenprozessor im Supervisormodus befindet, kann er auf einen Speicher zugreifen, der sowohl für den Supervisormodus als auch für einen Anwenderbetriebsmodus bestimmt ist. Zusätzlich erlaubt der Supervisormodus das Ausführen aller Befehle und den Zugriff zu allen Registerstandorten in dem Datenprozessor. Die Betriebssystemsoftware wird typischerweise ausgeführt, wenn sich der Datenprozessor im Supervisormodus befindet. Zu den bereitgestellten Betriebssystemdiensten zählen Betriebsmittelzuteilung sowohl des Speichers als auch der Peripheriegeräte, Ausnahmehandhabung und Softwareausführungssteuerung. Die Softwareausführungssteuerung umfasst für gewöhnlich die Steuerung eines Anwenderprogramms und den Schutz des Systems vor unbeabsichtigtem und böswilligem Korrumpieren durch ein Anwenderprogramm.
  • Ein Anwendermodus stellt einen zweiten Berechtigungspegel zur Verfügung. Im Anwenderbetriebsmodus darf nur auf den Speicher und die Register, die zur Anwendung in dem Anwendermodus bestimmt sind, zugegriffen werden. Zusätzlich darf nur auf Befehle verwiesen werden, die in einem Anwenderbefehlsspeicher gespeichert sind. Zum Beispiel kann in dem MC88100 RLSC-Prozessor, lieferbar durch Motorola, Inc., Austin, Texas, auf vier Befehle nur im Supervisorbetriebsmodus zugegriffen werden. Drei dieser Befehle führen Lese/Schreib-Zugriffe auf einen Register aus, auf das nur zugegriffen werden kann, wenn sich der Datenprozessor in ei nem Supervisorbetriebsmodus befindet. Ein vierter Befehl führt einen ordentlichen Abbruch einer Ausnahmeverarbeitungsroutine aus.
  • Wenn auf einen Speicher, Register, oder Befehl, die nur zur Verwendung im Supervisormodus vorgesehen sind, zugegriffen wird während sich der Datenprozessor im Anwendermodus befindet, kann eine Ausnahme auftreten. Die Ausnahme resultiert in einer Unterbrechung des Betriebs des Datenprozessors. Dann wird eine Ausnahmebehandlerroutine ausgeführt, um die Ausnahme zu verarbeiten und einen normalen Betriebsmodus des Datenprozessors wiederherzustellen.
  • Zusätzlich darf der Datenprozessor unter bestimmten Bedingungen nur im Supervisormodus arbeiten. Zum Beispiel arbeitet der Datenprozessor im Supervisormodus, wenn eine Ausnahme auftritt. Der Datenprozessor muss sich im Supervisormodus befinden, um eine geeignete Ausnahmeverarbeitungsroutine auszuführen. Auch wenn ein Rücksetzen des Datenprozessors auftritt, arbeitet der Datenprozessor im Supervisormodus. Der Berechtigungspegel des Datenprozessors kann auch durch einen "Trap"-Befehl ("trag instruction") modifiziert werden, der im Anwendermodus ausgeführt wird. Für mehr Informationen über Ausnahmen und die Anwender- und Supervisorbetriebsmodi kann die zweite Auflage des MC88100 RISC Microprocessor User's Manual, veröffentlicht durch Motorola, Inc. 1990, herangezogen werden.
  • Typischerweise ist die eingeschränkte Steuerung eines Cache-Speichers in einem Datenverarbeitungssystem nur in dem Supervisorbetriebsmodus erlaubt, der für den Systemanwender nicht leicht zugänglich ist. Zum Beispiel wird in der MC88200-Cache-Speicherverwaltungseinheit, entwickelt durch Motorola, Inc., Austin, Texas, ein einzelner Cache- Steuervorgang nur in dem Supervisorbetriebsmodus ausgeführt. Alle anderen Cache-Steuervorgänge werden intern gesteuert und sind dem Anwender auch in dem Supervisorbetriebsmodus nicht zugänglich. Für mehr Informationen bezüglich der MC88200-Cache-Speicherverwaltungseinheit kann die zweite Auflage des MC88200 Cache/Memory Management Unit User's Manual, veröffentlicht durch Motorola, Inc. 1990, herangezogen werden.
  • Der Cache-Steuervorgang, der im Supervisormodus ausführbar ist, ist ein "Spülvorgang" ("flush operation"). In einem Spülvorgang wird ein modifizierter, oder "schmutziger", Speicherplatz in dem Cache-Speicher durch Herausnehmen, oder Herausspülen, des schmutzigen Speicherplatzes aus dem Cache-Speicher gelöscht. Typischerweise wird der schmutzige Speicherplatz gelöscht, wenn der Speicherplatz für einen neuen Datenwert zugeteilt werden muss.
  • Andere Cache-Steuervorgänge, die typischerweise während des Cache-Betriebs ausgeführt werden, die aber dem Anwender in keinem beliebigen Betriebsmodus zugänglich sind, umfassen einen Cache-Belegungsvorgang ("cache load"). Während des Cache-Belegungsvorgangs werden Daten nur dann in den Cache-Speicher gespeichert, wenn ein "Fehlschuss" auftritt, weil der angeforderte Datenwert nicht im Cache-Speicher gespeichert ist. Wenn der Fehlschuss auftritt, muss zuerst eine Zeile in dem Cache-Speicher zugeteilt werden, um einen Datenwert zu empfangen. Die Daten werden daraufhin gelesen und bei dieser Zeile gespeichert. Weil die Daten von einer externen Speicherquelle abgerufen werden müssen, treten Verzögerungen auf und die Effizienz des Datenverarbeitungssystems wird verringert. Zusätzlich werden während des Zuteilens und Füllens der Zeile in dem Cache- Speicher oft unnötige Buszyklen ausgeführt. Wie zuvor dargelegt, ist es dem Anwender nicht erlaubt, in einem beliebigen Betriebsmodus einen Cache-Belegungsvorgang zu initiieren. Der Cache-Belegungsvorgang ist einfach ein Nebenprodukt des normalen Cache-Betriebs, der durch den Anwender nicht beeinflusst werden darf.
  • In jedem oben aufgeführten Cache-Steuervorgänge ist der Anwender des Datenprozessors nicht in der Lage, den Cache-Betrieb zu steuern, mit Ausnahme eines Spülbefehlvorgangs, der ausgeführt werden kann, wenn sich der Datenprozessor im Supervisormodus befindet. Selbst dann ist auf den Supervisormodus nicht leicht zuzugreifen, und wenn auf ihn zugegriffen wird, kann er, wenn nicht richtig angewendet, in katastrophalen Fehlern resultieren. Zusätzlich ist die Verarbeitungszeit, die mit der Modifizierung des Berechtigungspegels des Datenprozessors verknüpft ist, oft untragbar lang. Jeder der oben beschriebenen Cache-Steuervorgänge wird gemäß eines vorbestimmten Algorithmus' ausgeführt, der dazu bestimmt ist, die Effizienz des Datenverarbeitungssystems zu maximieren. Es treten jedoch Ausnahmen auf, in denen der Algorithmus nicht den effizientesten Betrieb des Cache-Speichersystems zur Verfügung stellt. Im Falle einer Ausnahme ist der Anwender nicht in der Lage, den effizientesten Betrieb des Cache-Speichers aufrecht zu erhalten, weil das Datenverarbeitungssystem nicht direkt steuerbar ist.
  • Es besteht daher Bedarf für ein Datenverarbeitungssystem, das mehr Flexibilität beim Ausführen von Cache-Steuervorgängen erlaubt. Zusätzlich sollte ein Anwender des Datenverarbeitungssystems über mehr Einblick in den effizienten Betrieb des Cache-Speichers und über eine Fähig keit, diesen effizienten Betrieb des Cache-Speichers zu maximieren, verfügen.
  • Im Allgemeinen lehrt uns der Verweis auf den Stand der Technik, Odnert, et al.: "Architecture and Compiler Enhancements for PA-RISC Workstations," COMPCON 91 Spring Conf., Feb. 25 – Mar. 1, 1991 San Francisco, U. S., pp. 214–218, dass Cache-Erweiterungen die Cache-Verwaltung verbessern. Ein Speicherbefehl umfasst ein Hinweisbit, das der Hardware anzeigt, dass ein, Abruf der Cache-Zeile aus dem Speicher im Falle eines Cache-Fehlschusses nicht nötig ist. Zusätzlich wird einem spezifischen Universalregister ein Vorabruf-Befehl in Form eines Belegungsbefehls zur Verfügung gestellt, was als Hinweis dient, diese Cache-Zeile aus dem Speicher abzurufen und sie, wenn sie nicht schon vorhanden ist, in den Cache zu bringen. Ein Schreiben in das spezifizierte Universalregister würde durch das System ignoriert werden. Der Cache-Vorabrufvorgang erlaubt es dem Kompilierer, früh genug einen Cache-Zeilenabruf auszugeben, so dass die Daten zur Verfügung stehen, wenn sie benötigt werden.
  • Zusammenfassung der Erfindung
  • Die zuvor erwähnten Bedürfnisse werden mit der vorliegenden Erfindung erfüllt. Dementsprechend wird, in einer Form, ein Datenverarbeitungssystem zur Verfügung gestellt, das einen Cache-Speicher und ein Verfahren gemäß den Ansprüchen 1 und 4 hat. Das Datenverarbeitungssystem umfasst ein Interface zum Empfangen einer externen Betriebsanleitung, die ein vorbestimmtes Format hat. Die externe Betriebseinleitung wird bereitgestellt, um den Betrieb des Cache-Speichers zu steuern. Ein Sequencer ist mit dem In terface gekoppelt, um die Betriebsanleitung zu empfangen. Der Sequencer decodiert die Betriebsanleitung, um einen Cache-Vorgang zu bestimmen, der in Reaktion auf die Betriebsanleitung ausgeführt werden soll. Mit dem Sequencer ist auch eine Logikschaltung zum Empfangen eines ersten Teils der externen Betriebsanleitung verbunden. Die Logikschaltung bewertet den Teil, um einen Speicherplatz in dem Cache-Speicher für einen Informationswert zu bestimmen, der während des Ausführens der Betriebsanleitung gehandhabt werden soll. Mit dem Sequencer ist auch eine Cache-Zugriffsschaltung, zum Empfangen einer Vielzahl von Steuerwerten, die der Betriebsanleitung entsprechen, verbunden. Die Cache-Zugriffsschaltung ist auch mit der Logikschaltung verbunden, um den Speicherplatz des zu handhabenden Informationswertes in dem Cache-Speicher zu empfangen. Die Cache-Zugriffsschaltung greift auf den Speicherplatz in dem Cache-Speicher zu, um die Betriebsanleitung in Reaktion auf die Vielzahl von Steuerwerten auszuführen.
  • Diese und andere Merkmale, und Vorteile, werden mit Hilfe der folgenden detaillierten Beschreibung in Verbindung mit den begleitenden Zeichnungen besser verstanden werden, Es ist wichtig anzumerken, dass die Zeichnungen nicht dazu gedacht sind, die einzige Form der Erfindung darzustellen. 25 zur Verfügung gestellt.
  • Wie in 3 dargestellt, verarbeitet der Datencache MMU 58 die Bits Null bis Einunddreißig der effektiven Ad- resse gemäß dem logischen Status des SUPERVISOR-Signals, um die effektive Adresse in eine physikalische Adresse zu übersetzen. Die physikalische Adresse wird anschließend über den PHYSTKALISCHEN ADRESSEN-Bus 57 an das Daten-Tag-Array 56 übertragen. Der Datencache MMU 58 stellt zwei logische Adressenräume (nicht gezeigt) zur Verfügung. Ein erster Adressenraum ist für die Supervisordaten und ein zweiter Adressenraum ist für die Anwenderdaten. Ein Adressenübersetzungscache (nicht gezeigt) im Datencache-Speicher MMU 58 übersetzt die effektive Adresse in die physikalische Adresse. Die Details des Betriebs des Datencaches MMU 58 sind zum Verständnis der vorliegenden Erfindung nicht notwendig.
  • Die physikalische Adresse wird dann verwendet, um auf einen vorbestimmten Speicherplatz in dem Daten-Tag-Array 56 zuzugreifen. Die Bits Null bis Elf der effektiven Adresse werden decodiert, um den vorbestimmten Speicherplatz in dem Daten-Tag-Array 56 zu lokalisieren. Ein Datenwert, der an dem vorbestimmten Speicherplatz gespeichert ist, wird dann mit
  • Kurze Beschreibung der Zeichnungen
  • 1 stellt in Form eines Blockdiagramms ein Datenverarbeitungssystem dar, das eine Datencache-Einheit gemäß der vorliegenden Erfindung hat;
  • 2 stellt in Form eines Blockdiagramms eine Belegungs/Speicher-Einheit von 1 dar;
  • 3 stellt in Form eines Blockdiagramms eine Datencache-Einheit von 1 dar;
  • 4 stellt in Form eines Blockdiagramms eine Cache-Steuerlogik von 3 dar;
  • 5 stellt in Form eines Flussdiagramms eine Folge von Schritten dar, die während eines Cache-Tastbelegungsvorganges ("cache touch load operation") ausgeführt werden, gemäß der vorliegenden Erfindung;
  • 6 stellt in Form eines Flussdiagramms eine Folge von Schritten dar, die während eines Cache-Spülbelegungsvorganges ("cache flush load operation") ausgeführt werden, gemäß der vorliegenden Erfindung; und
  • 7 stellt in Form eines Flussdiagramms eine Folge von Schritten dar, die während eines Cache-Zuteilbelegungsvorganges ausgeführt werden, gemäß der vorliegenden Erfindung.
  • Beschreibung einer bevorzugten Ausführungsform
  • In der vorliegenden Beschreibung der bevorzugten Ausführungsform der Erfindung werden die Ausdrücke "behaupten" ("assert") und "negieren" ("negate") und verschiedene grammatikalische Formen davon verwendet, um Verwirrung bei der Handhabe mit einer Mischung von aktiv hohen ("active high") und aktiv niedrigen ("active low") logischen Signalen zu vermeiden. "Behaupten" wird verwendet, um von der Übertragung eines logischen Signals oder Registerbits in dessen. aktiven, oder logisch wahren, Zustand zu sprechen. "Negieren" wird verwendet, um von der Übertragung eines logischen Signals oder Registerbits in dessen inaktiven, oder logisch falschen, Zustand zu sprechen.
  • Die vorliegende Erfindung stellt eine Vorrichtung und ein Verfahren zum Bereitstellen einer besseren Anwendersteuerung eines Cache-Speichers in einem Datenverarbeitungssystem zur Verfügung. Im Besonderen wurden drei Anwendermodus-Cache-Steuerbefehle implementiert, um einem Anwender des Datenverarbeitungssystems zu erlauben, mehr Kontrolle über die durch den Cache-Speicher ausgeführten Vor gänge zu haben. Die Befehle sind: Cache-Vorbelegung, – Spülbelegung und -Zuteilbelegung.
  • Ein Cache-Vorbelegungs-, oder "Tastbelegungs"-Befehl erlaubt es einem Anwender, Daten in dem Cache-Speichersystem zu speichern, bevor die Daten durch das Datenverarbeitungssystem tatsächlich verwendet werden. In Systemen nach dem Stand der Technik werden die Daten nur dann indem Cache-Spe cher gespeichert, wenn die Daten von dem Datenverarbeitungssystem benötigt werden. Folglich kann der Cache-Speicher gezwungen sein, zu warten, während auf die Daten von einer Quelle zugegriffen wird, die außerhalb des Datenverarbeitungssystems liegt. Der Tastbelegungsbefehl erlaubt es dem Anwender, das Anfordern eines Datenwertes vorherzusagen und den Datenwert in den Cache-Speicher zu speichern, so dass Verzögerungen, die während eines Belegungsvorganges eingeführt werden, minimiert werden können. Zusätzlich kann das Datenverarbeitungssystem, während der Datenwert von der außerhalb des Datenverarbeitungssystems liegenden Quelle abgerufen wird, gleichzeitig andere Funktionen ausführen. Wieder wird die Effizienz des Datenverarbeitungssystems erhöht.
  • In Systemen nach dem Stand der Technik wird, als Nebeneffekt des Zuteilens einer Zeile in den Cache-Speicher für einen neuen Datenwert, eine schmutzige Zeile eines Cache-Speichers in einen externen Speicher kopiert. Im Allgemeinen muss der externe Speicher modifiziert werden, um die Daten, die an der gespülten Zeile des Cache-Speichers gespeichert sind, widerzuspiegeln. Solch ein Betriebsmodus wird als ein "Durchschreibmodus" bezeichnet. Im Durchschreibmodus aktualisieren Speichervorgänge, die einen Datenwert bei einer Adresse speichern, die sich bereits in dem Cache-Speicher befindet, sowohl den externen Speicher al auch den Cache-Speicher. Die Speichervorgänge verändern den Status des Datenwertes an der Adresse in dem Cache-Speicher nicht.
  • In der hierin beschriebenen Ausführungsform der Erfindung zwingt der zweite implementierte Cache-Steuerbefehl eine schmutzige Zeile eines Cache-Speichers in einen Speicher, der außerhalb des Datenverarbeitungssystems liegt, ohne das Overhead, das im Allgemeinen erforderlich ist, um einen Speichervorgang durchzuführen. In einigen Fällen jedoch sollte der externe Speicher schneller modifiziert werden, um die Daten, die in dem Cache-Speicher gespeichert sind, widerzuspiegeln. Anwendungen des Spülbelegungsbefehls werden nachfolgend ausführlicher diskutiert.
  • Der dritte in einer Ausführungsform der vorliegenden Erfindung implementierte Cache-Steuerbefehl führt eine Zeilenzuteilung, oder einen "Zuteilbelegungsvorgang" aus. Ein Zuteilungsbefehl erlaubt dem Anwender, eine Zeile in dem Lache-Speicher für einen nachfolgenden Speichervorgang zuzuteilen, während Speicherzugriffszeiten, die einer normalen Zeilenfülltransaktion entsprechen, vermieden werden.
  • In jedem der oben beschriebenen Lache-Steuerbefehle ist der Anwender in der Lage, den Betrieb des Cache-Speichers zu steuern und Verzögerungen, die normalerweise erforderlich sind, um jeden dieser Vorgänge auszuführen, zu vermeiden. Obwohl der Spülbelegungsvorgang in Systemen nach dem Stand der Technik früher im Supervisormodus ausgeführt wurde, benötigt der Supervisorbetriebsmodus im Allgemeinen mehr Zeit, um vollständig auszuführen, und erlaubt nicht die gleiche Flexibilität wie die Lache-Steuerbefehle, die dem Anwender zugänglich sind.
  • Jeder der oben beschriebenen Cache-Steuerbefehle wird als ein Belegungsvorgang codiert, der einen vorbestimmten Größenzugriff auf ein vorbestimmtes Register hat. Vor der Implementierung der hierin beschriebenen Erfindung würde jede beliebige Belegung des vorbestimmten Registers dazu geführt haben, dass eine Nulloperation (NOP) ausgeführt wird. Durch Codieren der Cache-Steuervorgänge als ein Belegungsvorgang für ein vorbestimmtes Register wurden nur sehr wenige zusätzliche Schaltungen erforderlich und die Befehle wurden auf eine sehr effiziente Weise implementiert.
  • Zusätzlich stellt die vorliegende Erfindung eine Vorrichtung und ein Verfahren zur Verfügung, die dem Anwender des Datenverarbeitungssystems Hinweise über Transaktionen bereitstellen, die in dem Cache-Speicher auftreten. Zum Beispiel werden einem Anwender Daten zur Verfügung gestellt, die anzeigen, wann einer der oben aufgeführten Cache-Steuerbefehle ausgeführt wird. Der Anwender kann dann die Daten verwenden, um den Betrieb einer Speichersteuereinheit, oder eines ähnlichen Verarbeitungssystems, zu steuern, um Annahmen über zukünftige Cache-Speichertransaktionen zu machen. Nehmen wir z. B. an, dass der Cache-Speicher externe Daten zur Verfügung stellt, die anzeigen, dass eine aktuelle Cache-Speichertransaktion ein Tastbelegungsvorgang ist. Wenn während der nächsten Transaktion auf eine nachfolgende Cache-Zeile zugegriffen werden soll, kann dann die Speichersteuereinheit auf die nachfolgende Zeile zugreifen, bevor sie tatsächlich angefordert wird, und die effektive Speicherzugriffszeit wird verringert.
  • Durch Bereitstellen von Anwenderzugriff, um den Betrieb des Cache-Spe chers zu steuern, und durch Bereitstellen externer Informationen, die einen aktuellen Cache-Steuervorgang anzeigen, stellt die vorliegende Erfindung mehrere Mechanismen zur Verfügung, die die Leistung eines beliebigen Cache-Speichers verbessern.
  • Eine Implementierung der bevorzugten Ausführungsform ist in 1 dargestellt. 1 stellt ein Datenverarbeitungssystem 10 dar, das einen Cache-Speicher gemäß der vorliegenden Erfindung hat. Das Datenverarbeitungssystem 10 umfasst im Allgemeinen einen Datenprozessor 20 und einen Hauptspeicher 50. Ein INFORMATIONS-BUS 15 verbindet den Datenprozessor 20 und den Hauptspeicher 50 bidirektional, so dass Daten-, Adressen- und Steuerinformationen zwischen jedem übermittelt werden können. Ein anwenderbestimmtes Programm 52 wird im Hauptspeicher 5D gespeichert.
  • Der Datenprozessor 20 umfasst eine Bus-Interface-Einheit 22, eine Datencache-Einheit 24, eine Befehlscache-Einheit 26, eine Belegungs/Speicher-Einheit 28, einen History-Puffer 30, eine Registerdatei 32, einen Sequencer 34 und eine Ausführungs-Einheit 42. Die Ausführungs-Einheit 42 umfasst eine Gleitkomma-Einheit 36, eine Ganzzahl-Einheit 38 und eine Graphik-Einheit 40. In einer besonderen Ausführungsform kann der Datenprozessor 20 als eine einzelne integrierte Schaltung, wie z. B. als eine MC88110, die durch Motorola, Inc., Austin, Texas, lieferbar ist, implementiert werden.
  • Die Bus-Interface-Einheit 22 vermittelt zwischen externem Befehl und Datenzugriff und steuert interne Zugriffe des INFORMATIONS-BUS 15. Die Bus-Interface-Einheit 22 ist mit der Befehlscache-Einheit 26 bidirektional verbunden, um der Befehlscache-Einheit 26 über einen EXTERNEN BEFEHLSINFORMATIONS-Bus 17 externe Befehlsinformationen zur Verfügung zu stellen. Ebenso ist die Bus-Interface-Einheit 22 mit der Datencache-Einheit 24 bidirektional verbunden, um der Datencache-Einheit 24 über einen EXTERNEN DATENINFORMATIONS-Bus 19 externe Dateninformationen zur Verfügung zu stellen.
  • Auf die Befehlscache-Einheit 26 wird während des Ausführens einer Softwareroutine zugegriffen, wie z. B. dem Softwareprogramm 52, das im Hauptspeicher 50 gespeichert ist, um schnell Befehle zur Verfügung zu stellen und um einen Umfang an Verarbeitungszeit zu verringern, der im Allgemeinen erforderlich ist, um Befehle abzurufen. Die Befehlscache-Einheit 26 stellt über einen BEFEHLSINFORMATIONS-Bus 21 einen Befehl und eine Vielzahl von Steuersignalen, die dem Befehl an den Sequencer 34 entsprechen, zur Verfügung.
  • Der Sequencer 34 decodiert sowohl den Befehl als auch die Vielzahl von Steuersignalen, um über einen INTERNEN INFORMATIONS-Bus 27 sowohl der Ausführungs-Einheit 42 als auch der Belegungsspeicher-Einheit 28 einen decodierten Befehlsoperationscode zur Verfügung zu stellen. Zusätzlich decodiert der Sequencer 34 den Befehl und die Vielzahl der Steuersignale, die durch den BEFEHLSINFORMATIONS-Bus 21 zur Verfügung gestellt werden, um auf einen Operanden zuzugreifen, der für das Ausführen des Befehls von der Registerdatei 32 notwendig ist.
  • In der hierin beschriebenen Ausführungsform der Erfindung umfasst die Registerdatei 32 zweiunddreißig Register, die verwendet werden können, um Operanden und die Ergebnisse eines jeden Befehls, der durch den Datenprozessor 20 ausgeführt wurde, zu speichern. Ein einzelnes als "r0" bezeichnetes Register enthält immer einen konstanten Wert von Null und wird während eines Schreibvorgangs nicht modifiziert. In Systemen nach dem Stand der Technik würde eine Belegung, des Registers r0 entweder in eine Ausnahme oder überhaupt in eine Nulloperation (NOP) resultieren. wenn man anerkennt, dass eine Belegung des Registers r0 decodiert werden kann, um einen Cache-Steuervorgang zur Verfügung zu stellen, sind sehr wenige zusätzliche Schaltkreise erforderlich, um es einem Anwender zu ermöglichen, den Betrieb der Datencache-Einheit 24 im Datenprozessor 20 zu steuern.
  • Die Registerdatei 32 stellt sowohl dem History-Puffer 30 als auch der Ausführungs-Einheit 42 den darin gespeicherten Operanden zur Verfügung. Die in der Registerdatei 32 gespeicherten Informationen werden über den INTERNEN INFORMATIONS-Bus 27 übertragen.
  • Der History-Puffer 30 ist mit der Registerdatei 32 verbunden, um eine Warteschlange eines jeden der Befehle aufrechtzuerhalten, die durch den Datenprozessor 20 ausgeführt werden sollen. Der History-Puffer 30 erhält diese Warteschlange durch Speichern einer Kopie der Registerinhalte, die jedem der Befehle entsprechen, aufrecht. Typischerweise wird ein Befehl, der durch den Sequencer 34 ausgegeben wurde, am Ende der Warteschlange des History-Puffers 30 angeordnet. Der Befehl bewegt sich dann durch die Warteschlange, während vorangegangene Befehle vollständig ausgeführt und von der Warteschlange entfernt werden: Wenn der Befehl den Anfang der Warteschlange erreicht und die Ausführung beendet hat, wird der Befehl von der Warteschlange des History-Puffers 30 entfernt. Der History-Puffer 30 erweist sich als sehr wertvoll, wenn während der Ausführung eines beliebigen Befehls eine Ausnahme auftritt. Der History-Puffer 30 ist in der Lage, die Inhalte der Registerdate 32 in einen Zustand vor der Ausgabe des Befehls wiederherzustellen. Daher kann während einer Ausnahme Verarbeitungszeit verloren gehen, aber, im Allgemeinen treten keine falschen Daten oder katastrophale Fehler auf.
  • Der INTERNE INFORMATIONS-Bus 27 ist jeweils mit der Gleitkomma-Einheit 36, der Ganzzahl-Einheit 38 und der Graphik-Einheit 40 bidirektional verbunden, um die Informationen zu übermitteln, die für die Befehlsausführung notwendig sind. Die Gleitkomma-Einheit 36 führt Vorgänge aus, die Gleitkommadaten erfordern, die unterschiedliche Grade von Genauigkeit haben. Es werden Multiplikationen, Divisionen und Additionen durchgeführt, um Befehle vollständig auszuführen, welche Gleitkommadaten handhaben. Ähnlich führt die Ganzzahl-Einheit 38 Befehle aus, die sich auf Ganzzahl- oder Festkommadaten auswirken. Die Graphik-Einheit 40 stellt Schaltkreise zum Durchführen von Funktionen zur Verfügung, die sich direkt auf Computer-Bilderzeugung beziehen.
  • Zusätzlich ist der INTERNE INFORMATIONS-Bus 27 mit der Belegungs/Speicher-Einheit 28 verbunden. Die Belegungs/Speicher-Einheit 28 ist sowohl über einen DATENCACHE-ADRESSEN-Bus 25 als auch einen DATENCACHE-STEUER-Bus 23 mit der Datencache-Einheit 24 verbunden.
  • Die Belegungs/Speicher-Einheit 28 ist mit der Datencache-Einheit 24 und dem Sequencer 34 verbunden, um Befehle auszuführen, die auf den Datenspeicher zugreifen. Die Belegungs/Speicher-Einheit 28 sequenziert auch das Ausführen der Befehle, die auf den Datenspeicher zugreifen, um die Effizienz des Datenprozessors 20 zu optimieren. Die Belegungs/Speicher-Einheit 28 wird in 2 detaillierter dar gestellt. Die Belegungs/Speicher-Einheit 28 umfasst im Allgemeinen eine effektive Adressenberechnungs-Logikschaltung 42, einen Decodiersteuerblock, eine Vielzahl von Belegungspuffern 46, einen Adressenausgabe-Multiplexer 48 und einen Steuerausgabe-Multiplexer 49.
  • Der INTERNE INFORMATIONS-Bus 27 stellt der effektiven Adressenberechnungs-Logikschaltung 42 ein als "EFFEKTIVE ADRESSENOPERANDEN" bezeichnetes Signal zur Verfügung. Die effektive Adressenberechnungs-Logikschaltung 42 stellt einem ersten Eingang eines aus der Vielzahl von Belegungspuffern 46 und dem Adressenausgabe-Multiplexer 48 ein BERECHNETES ADRESSEN-Signal zur Verfügung.
  • Der INTERNE INFORMATIONS-Bus 27 stellt dem Decodiersteuerblock 45 auch ein als "EINGANGSSTEUERUNG" bezeichnetes Signal zur Verfügung. Der Decodiersteuerblock 45 stellt dem Steuerausgabe-Multiplexer 49 über einen DECODIERTEN STEUER-Bus 47 eine Vielzahl decodierter Steuersignale zur Verfügung.
  • Einer aus der Vielzahl der Belegungspuffer 46 stellt dem Adressenausgabe-Multiplexer 48 einen zweiten Eingang zur Verfügung. Der zweite Eingang wird durch ein GEPUFFERTES ADRESSEN-Signal zur Verfügung gestellt. Der Adressenausgabe-Multiplexer 48 stellt dem DATENCACHE-ADRESSEN-Bus 25 eine effektive Adresse zur Verfügung. Zusätzlich stellt der Steuerausgabe-Multiplexer 49 dem DATENCACHE-STEUER-Bus 23 die Vielzahl von Steuersignalen zur Verfügung. Jedes aus der Vielzahl von Steuersignalen wird jeweils als "BELEGUNG", "GRÖSSE", "SPÜLUNG", "TASTEN", "ZUTEILEN" und "SUPERVISOR" bezeichnet.
  • Zusätzlich stellt der DATENCACHE-STEUER-Bus 23 dem Decodiersteuerblock 45 ein erstes und ein zweites Signal zur Verfügung; das jeweils als "TREFFER" und "AUSNAHME" bezeichnet wird. Der Decodiersteuerblock 45 gibt die ersten und zweiten Signale, jeweils als TREFFER und AUSNAHME bezeichnet, an den INTERNEN INFORMATIONS-Bus 27 weiter, Der Betrieb der Belegungs/Speicher-Einheit 28 wird unten detaillierter beschrieben.
  • Sowohl der DATENCACHE-STEUER-Bus 23 als auch der DATENCACHE-ADRESSEN-Bus 25 verbinden die Belegungs/Steuer-Einheit 28 mit der Datencache-Einheit 24. Die Datencache-Einheit 24 stellt im Allgemeinen Dateninformationen, auf die während eines Speicherzugriffsverfahrens zugegriffen wurde, entweder einem restlichen Anteil des Datenprozessors 20 oder einer externen Quelle, wie z. B. dem Hauptspeicher 50, zur Verfügung. Auch empfängt und stellt die Datencache-Einheit 24 Steuerinformationen zur Verfügung, die notwendig sind, um sicherzustellen, dass sich die im Datencache 54 gespeicherten Daten innerhalb des Datenverarbeitungssystems 10 richtig ausbreiten. Die Datencache-Einheit 24 wird in 3 detaillierter dargestellt. Die Datencache-Einheit 24 umfasst im Allgemeinen einen Datencache 54, ein Daten-Tag-Array 56, eine Datencache-Speicherverwaltungseinheit (MMU) 58 und eine Lache-Steuerlogikschaltung 60.
  • Der DATENCACHE-ADRESSEN-Bus 25 stellt der Datencache-Einheit 24 eine Vielzahl von, jeweils als "A0" bis "A31" bezeichnete, Adressenbits zur Verfügung. In der Datencache-Einheit 24 wird jedes aus der Vielzahl von Adressenbits dem Datencache MMU 58 zur Verfügung gestellt. Zusätzlich werden die Adressenbits Null bis Elf, jeweils als "A0" bis "A11" bezeichnet, dem Datencache 54, der Businterface-Einheit 22 und dem Daten-Tag-Array 56 zur Verfügung gestellt. Ein externer Datenwert wird zwischen dem Datencache 54 und der Businterface-Einheit 22 über einen EXTERNEN DATENINFORMATIONS-Bus 19 übermittelt. Nachfolgend stellt die Businterface-Einheit 22 den externen Datenwert einem externen Prozessor, wie z. B. dem Hauptspeicher 50, über den INFORMATIONS-Bus 15 zur Verfügung. Auch wird ein interner Datenwert zwischen dem Datencache 54 und einem restlichen Teil des Datenprozessors 20 übermittelt. Das Übermitteln des internen Datenwertes ist dem Fachmann sehr gut bekannt und wird daher nicht weiter im Detail diskutiert. Zusätzlich ist das Übermitteln des internen Datenwertes nicht notwendig, um die hierin beschriebene Ausführungsform der Erfindung zu verstehen.
  • Der DATENCACHE-STEUER-Bus 23 überträgt auch Cache-Steuerinformationen zur Datencache-Einheit 24. In der Datencache-Einheit 24 stellt der DATENCACHE-STEUER-Bus 23 dem Datencache MMU 58 das SUPERVISOR-Signal zur Verfügung. Anschließend stellt der Datencache MMU 58 über einen PHYSIKALISCHEN ADRESSEN-Bus 57 einem Eingang des Daten-Tag-Arrays 56 eine physikalische Adresse zur Verfügung. Der PHYSIKALISCHE ADRESSEN-Bus 57 überträgt eine physikalische Adresse zum Daten-Tag-Array 56. Das Daten-Tag-Array 56 ist mit der Lache-Steuerlogikschaltung 60 verbunden, um ein erstes als "Abgleichen" bezeichnetes Signal und ein zweites als "STATUS" bezeichnetes Signal zur Verfügung zu stellen. Zusätzlich ist das Daten-Tag-Array 56 mit der Businterface-Einheit 22 verbunden, um über den PHYSIKALISCHEN TAGADRESSEN-Bus 59 eine physikalische Tagadresse zur Verfügung zu stellen.
  • Der DATENCACHE-STEUER-Bus 23 ist auch mit der Cache-Steuerlogikschaltung 60 verbunden, um das SUPERVISOR-Signal zur Verfügung zu stellen. Zusätzlich werden auch die TAST-, SPÜL-, ZUTEIL-, und BELEGUNGS-Signale der Cache-Steuerlogikschaltung 60 zur Verfügung gestellt. Die Cache-Steuerlogikschaltung 60 stellt der Belegungs/Speicher-Einheit 28 über den DATENCACHE-STEUER-Bus 23 sowohl die AUSNAHME- als auch die TREFFER-Signale zur Verfügung.
  • Die Lache-Steuerlogikschaltung 60 ist über den EXTERNEN DATENINFORMATIONS-Bus 19 mit der Businterface-Einheit 22 verbunden, um eine Vielzahl von Ausgangssignalen zur Verfügung zu stellen, die jeweils als "UNGÜLTIGMACHEN", "SPEICHERZYKLUS", "GRÖSSE", "ÜBERTRAGUNGSCODE", "LESEN/SCHREIBEN", "BURSTMODUS" und "BUSANFORDERUNG" bezeichnet-werden. Die Lache-Steuerlogikschaltung 60 empfängt auch als "BEENDEN", bezeichnete Signale von dem EXTERNEN DATENINFORMATIONS-Bus 19. Der Betrieb der Datencache-Einheit 24 wird unten ausführlicher diskutiert werden.
  • Die Lache-Steuerlogikschaltung 60 empfängt die SUPERVISOR-, TAST-, SPÜL-, ZUTEIL-, BELEGUNGS-, ABGLEICH- und STATUS-Signale und verwendet jedes, um die Vielzahl der oben aufgeführten Ausgangssignale zu erzeugen. Die Vielzahl der Ausgangssignale stellt Informationen zur Verfügung, die aktuelle Vorgänge anzeigen, die durch den Datenprozessor 20 an einen externen Anwender ausgeführt werden. Die Cache-Steuerlogikschaltung 60 wird in 4 detaillierter dargestellt. Die Lache-Steuerlogikschaltung 60 umfasst ein Datencache-Filter 62 und eine zentrale Datencache-Steuerschaltung 64.
  • Der Datencache-Steuerbus 23 stellt jedes der TAST-, SPÜL-, ZUTEIL- und BELEGUNGS-Signale sowohl dem Datencache-Filter 62 als auch der zentralen Datencache-Steuerschaltung 64 zur Verfügung. Zusätzlich stellt der DATENCACHE-STEUER-Bus 23 das SUPERVISOR-Signal der zentralen Datencache-Steuerschaltung 64 zur Verfügung. Die STATUS- und ABGLEICH-Signale werden auch dem Datencache-Filter 62 zur Verfügung gestellt.
  • Das Datencache-Filter 62 stellt der zentralen Datencache-Steuerung in Reaktion auf jedes Eingangssignal eine Vielzahl von Signalen zur Verfügung. Ein Erstes aus der Vielzahl der Signale wird als "INTERNE BUSANFORDERUNG" bezeichnet. Ähnlich wird ein Zweites aus der Vielzahl der Signale als "INTERNES LESEN/SCHREIBEN" bezeichnet und ein Drittes aus der Vielzahl von Signalen wird als "INTERNER BURSTMODUS" bezeichnet. Ein Signal, das als "INTERNER SPEICHERZYKLUS" bezeichnet wird und ein Signal, das als "INTERNES BEENDEN" bezeichnet wird, umfassen jeweils das Vierte und Fünfte aus der Vielzahl von Signalen.
  • Die zentrale Datencache-Steuerung 64 stellt jedes der BUSANFORDERUNGS-, der BURSTMODUS-, der LESE/SCHREIB-, der SPEICHERZYKLUS-, der UNGÜLTIGMACHEN-, der GRÖSSEN- und der ÜBERTRAGUNGSCODE-Signale über den EXTERNEN DATENINFORMATIONS-Bus 19 der Businterface-Einheit 22 zur Verfügung. Ähnlich übermittelt der EXTERNE DATENINFORMATIONS-Bus 19 das BEENDEN-SIGNAL an die zentrale Datencache-Steuerschaltung 64. Zusätzlich stellt die zentrale Datencache-Steuerschaltung 64 über den DATENCACHE-STEUER-Bus 23 das AUSNAHME-Signal der Belegungs/Speicher-Einheit 28 zur Verfügung.
  • Bei der hierin beschriebenen Implementierung der Erfindung werden die Tastbelegungs-, Spülbelegungs- und Zuteilbelegungsvorgänge jeweils durch einen Belegungsvorgang auf das Register r0 ausgeführt. Jeder Vorgang wird weiter durch ein Größensuffix definiert. Zum Beispiel zeigt eine Befehlsmnemonik der Form ld.b r0,<ea> an, dass ein Tastbelegungsvorgang ausgeführt werden soll. Daher entspricht eine Bytegrößenbelegung auf das Register r0 einem Tastbelegungsvorgang. Ähnlich zeigt eine Befehlsmnemonik der Form ld.w r0,<ea> an, dass ein Spülbelegungsvorgang ausgeführt werden soll, und eine Befehlsmnemonik der Form 1d.h r0,<ea> zeigt an, dass ein Zuteilbelegungsvorgang durchgeführt werden soll. Wieder entsprechen eine Wortgrößenbelegung und eine Halbwortgrößenbelegung jeweils einem Spülbelegungsund einem Zuteilbelegungsvorgang. Das Ausführen der Spülbelegungs- und Zuteilbelegungsvorgänge wird im Folgenden detaillierter diskutiert werden.
  • Während des Betriebs des Datenprozessors 20 dienen die Befehlscache-Einheit 26, der Sequencer 34, die Registerdatei 32 und der History-Puffer 30 der Steuerung des Betriebs des Datenprozessors 20, so dass ein korrekter Informationsfluss zwischen den Speicherplätzen des Speichers und der Ausführungs-Einheit 42 erreicht wird.
  • Die Befehlscache-Einheit 26 ruft Befehle von einem internen Befehlscache (nicht gezeigt) ab, wie durch den Fluss eines Programms vorgeschrieben, das durch den Datenprozessor 20 ausgeführt wird. Die Befehlscache-Einheit 26 stellt dann die Befehle dem Sequencer 34 zur Verfügung. Zum Beispiel ruft die Befehlscache-Einheit 26 während des Ausführens eines Tastbelegungsvorgangs einen Befehl der Form ld.b r0,<ea> ab. Der ld.b r0,<ea> ist eine mnemonische Darstel lung des Tastbelegungsbefehls. Tatsächlich wird eine binäre Darstellung der Befehlscache-Einheit 26 zur Verfügung gestellt.
  • Der Sequencer 34 decodiert dann den Befehl und führt ihn in einer Sequenz aus, die durch den Fluss des Programms bestimmt wird, das durch den Datenprozessor 20 ausgeführt wird. Auf notwendige Operanden des decodierten Befehls wird in der Registerdatei 32 zugegriffen, oder sie werden dort abgerufen und über den INTERNEN INFORMATIONS-Bus 27 sowohl der Ausführungs-Einheit 42 als auch der Belegungs/Speicher-Einheit 28 zur Verfügung gestellt. Der Sequencer 34 bestimmt auch, ob der Datenprozessor 20 in einem Anwender- oder einem Supervisor-Betriebsmodus betrieben wird. Zusätzlich bestimmt der Sequencer 34, ob in Reaktion auf das Ausführen des Befehls eine Ausnahme erteilt werden soll. Supervisor- und Anwendermodi werden im US-Patent 3,858,182 von Bruce A. Delagi et al. ausführlicher offenbart, das hiermit durch Erwähnung hierin aufgenommen wird.
  • Der Sequencer 34 und die Registerdatei 32 stellen jeweils den decodierten Befehl und die notwendigen Operandeninformationen sowohl der Ausführungs-Einheit 42 als auch der Belegungs/Speicher-Einheit 28 über den INTERNEN INFORMATIONS-Bus 27 zur Verfügung. Während des Ausführens der hierin beschriebenen Cache-Steuervorgänge wird auf die Ausführungs-Einheit 42 nicht zugegriffen. Wenn der decodierte Befehl jedoch auf eine Komponente der Ausführungs-Einheit 42 zugreifen würde, so würde der Befehl entweder der Gleitkomma-Einheit 36, der Ganzzahl-Einheit 38 oder der Graphik-Einheit 40 zur Verfügung gestellt werden.
  • Während des Ausführens eines aus einer Vielzahl von hierin beschriebenen Cache-Steuervorgängen greift der Be fehl auf einen Speicherplatz in der Datencache-Einheit 24 zu. Der Speicherplatz ist eine effektive Adresse (<ea>), die in der mnemonischen Form des Befehls spezifiziert wird. Daher werden die Dateninformationen, die notwendig sind, um auf diesen Speicherplatz zuzugreifen, der Belegungs/Speicher-Einheit 28 über den INTERNEN INFORMATIONS-Bus 27 zur Verfügung gestellt.
  • Steuer- und Dateninformationen, die notwendig sind, um auf den Speicherplatz zuzugreifen, werden jeweils dem Eingangs-Multiplexer 42 und dem Decodiersteuerblock 45 über den INTERNEN INFORMATIONS-Bus 27 zur Verfügung gestellt. Das EFFEKTIVE ADRESSENOPERANDEN-Signal wird der effektiven Adressenberechnungs-Logikschaltung 42 zur Verfügung gestellt. Die effektive Adressenberechnungs-Logikschaltung stellt eine berechnete Adresse zur Verfügung. Die berechnete Adresse kann durch Addieren der Inhalte zweier Register in der Registerdatei 32 gebildet werden. Ähnlich kann die berechnete Adresse durch Addieren eines konstanten Wertes zu einem in einem Register gespeicherten Wert gebildet werden. Viele andere Varianten werden auch verwendet, um die berechnete Adresse zu erzeugen. Solche Varianten sind jedoch allgemein bekannt, und sollten dem Fachmann auf dem Gebiet gut bekannt sein.
  • Die berechnete Adresse wird sowohl dem Adressenausgabe-Multiplexer 48 als auch einem vorbestimmten aus einer Vielzahl von Belegungspuffern 46 zur Verfügung gestellt. Gleichzeitig empfängt der Decodiersteuerblock 45 über den INTERNEN INFORMATIONS-Bus 27 ein EINGANGSSTEUER-Signal vom Sequencer 34. Das EINGANGSSTEUER-Signal überträgt Steuerinformationen, die durch den Sequencer 34 in Reaktion auf den Tastbelegungsbefehl erzeugt wurden. Das EINGANGSSTEUER- Signal wird durch den Decodiersteuerblock 45 decodiert, um über einen DECODIERTEN STEUER-Bus 47 dem Steuerausgabe-Multiplexer 49 eine Vielzahl von decodierten Steuersignalen zur Verfügung zu stellen.
  • Die Belegungspuffer 46 werden zur Verfügung gestellt, um die berechnete Adresse in einer Warteschlange zu speichern, bis der Adressenausgabe-Multiplexer 48 in der Lage ist, sie an die Datencache-Einheit 24 auszugeben. Jeder aus der Vielzahl von Belegungspuffern 46 ist mit dem Adressenausgabe-Multiplexer 48 verbunden, um allen ein GEPUFFERTES ADRESSEN-Signal zur Verfügung zu stellen. Der Adressenausgabe-Multiplexer 48 gibt, in Abhängigkeit von der Warte-Schlange der Adressenwerte, entweder die berechnete Adresse oder das GEPUFFERTE ADRESSEN-Signal als die effektive Adresse aus. Das EFFEKTIVE ADRESSENSIGNAL wird der Datencache-Einheit 24 über einen DATENCACHE-ADRESSEN-Bus 25 zur Verfügung gestellt.
  • Der Steuerausgabe-Multiplexer 49 gibt auch Steuerinformationen entsprechend der effektiven Adresse aus. In der hierin beschriebenen Implementierung der Erfindung umfassen die Steuerinformationen die SUPERVISOR-, GRÖSSEN-, BELEGUNGS-, TAST-, SPÜL- und ZUTEIL-Signale, die über den DECODIERTEN STEUER-Bus 47 übertragen werden.
  • Während des Ausführens eines der Lache-Steuervorgänge wird das SUPERVISOR-Signal zur Verfügung gestellt, um einen, Betriebsmodus anzuzeigen, in dem der Datenprozessor 20 arbeitet. In dem hierin beschriebenen Beispiel gehen wir von der Annahme aus, dass das SUPERVISOR-Signal negiert wird, um anzuzeigen, dass der Datenprozessor 20 im Anwendermodus , arbeitet. Im Anwendermodus ist der Zugriff der Datencache-Einheit 24 auf einen lediglich kleinen Anteil des als "An wenderspeicher" bezeichneten Speichers und auf eine begrenzte Zahl von Registern in der Registerdatei 32 beschränkt. Zusätzlich kann der Tastbelegungsvorgang auch in dem Supervisorbetriebsmodus ausgeführt werden. Wenn das SUPERVISOR-Signal behauptet wird, arbeitet der Datenprozessor 20 in dem Supervisorbetriebsmodus. Im Supervisorbetriebsmodus ist der Zugriff zur Datencache-Einheit 24 und der Registerdatei 32 unbeschränkt. Ein logischer Zustand des SUPERVISOR-Signals wird durch den Sequencer 34 bestimmt und der Belegungs/Speicher-Einheit 28 über den INTERNEN INFORMATIONS-Bus 27 zur Verfügung gestellt.
  • Das GRÖSSEN-Signal zeigt an, ob ein Speicherzugriff in Byte-, Halbwort-, Wort- oder Doppelwort-Inkrementen durchgeführt werden soll. Das GRÖSSEN-Signal ist typischerweise in dem Befehlsoperationscode codiert, das durch die Befehlscache-Einheit 16 zur Verfügung gestellt wird.
  • Das BELEGUNGS-Signal wird der Datencache-Einheit 24 zur Verfügung gestellt, um anzuzeigen, ob ein aktuell durch den Datenprozessor 20 ausgeführter Befehl ein Belegungsoder Speichervorgang ist. Das BELEGUNGS-Signal wird während eines Belegungsvorgangs behauptet und während eines Speichervorgangs negiert. Weil jedes der Cache-Steuervorgänge ein Belegungsvorgang ist, wird das BELEGUNGS-Signal behauptet.
  • Jedes der SPÜL-, TAST- und ZUTEIL-Signale zeigt an, ob einer der zuvor beschriebenen Cache-Steuervorgänge durch einen Befehl nitiiert worden ist und ausgeführt werden soll. Die SPÜL-, TAST- und ZUTEIL-Signale entsprechen jeweils den Spülbelegungs-, Tastbelegungs- und Zuteilbelegungs-Befehlen.
  • Jedes der oben beschriebenen Steuersignale wird daraufhin der Datencache-Einheit 42 über den DATENCACHE-STEUER-Bus 23 der Datencache-Einheit 24 über den DATENCACHE-ADRESSEN-Bus den Bits Zwölf bis Einunddreißig der physikalischen Adresse verglichen. Ist er identisch, behauptet das Daten-Tag-Array 56 das ABGLEICH-Signal. Ähnlich wird ein Status des am Speicherplatz gespeicherten Datenwertes über das STATUS- zur Verfügung gestellt. Ähnlich wird die effektive Adresse Signal zur Verfügung gestellt.
  • Der Status des Datenwertes kann entweder ungültig, gemeinsam unmodifiziert, ausschließlich modifiziert oder ausschließlich unmodifiziert sein. Wenn der Status des Datenwertes ungültig ist, ist der Datenwert nicht derselbe wie ein entsprechender Wert im Hauptspeicher 50. Wenn der Status des Datenwertes im Datencache 54 gemeinsam unmodifiziert ist, wird der Datenwert mit anderen Prozessoren (nicht gezeigt), die außerhalb des Datenprozessors 20 liegen, geteilt. Der Datenwert ist jedoch derselbe wie ein entsprechender Wert im Hauptspeicher 50. Wenn der Status des Datenwerts im Datencache 54 ausschließlich modifiziert ist, hat nur der Datenprozessor 20 eine Kopie des Datenwerts: Kein externer Prozessor darf auf diesen Datenwert zugreifen. Weil der Datenwert modifiziert ist, ist der Datenwert zusätzlich "schmutzig", oder unterschiedlich von dem entsprechenden Wert im Hauptspeicher 50. Ist der Status des Datenwertes schließlich ausschließlich unmodifiziert, hat nur der Datenprozessor 20 eine Kopie des Datenwertes, und der Datenwert ist derselbe, wie ein entsprechender Wert im Hauptspeicher 50.
  • Jedes der ABGLEICH-, STATUS-, SUPERVISOR-, GRÖSSEN-, BELEGUNGS-, TAST-, SPÜL- und ZUTEIL-Signale wird der Cache- Steuerlogikschaltung 60 zur Verfügung gestellt. Die Cache-Steuerlogikschaltung 60 verarbeitet jedes der Steuersignale, um eine Vielzahl von Steuersignalen zur Verfügung zu stellen, die den internen Betrieb der Datencache-Einheit 24 anzeigen.
  • Wie in 4 dargestellt, stellt der DATENCACHE-STEUER-Bus 23 die TAST-, SPÜL-, ZUTEIL- und BELEGUNGS-Signale dem Datencache-Filter 62 zur Verfügung. Zusätzlich werden auch die STATUS- und ABGLEICH-Signale dem Datencache-Filter 62 durch das Daten-Tag-Array 56 zur Verfügung gestellt. Der Datencache-Filter 62 verarbeitet jede Eingabe, um eine Vielzahl von Ausgaben zur Verfügung zu stellen.
  • Eine erste Ausgabe des Datencache-Filters 22 ist das TREFFER-Signal. Das TREFFER-Signal wird in Reaktion sowohl auf die STATUS- als auch die ABGLEICH-Signale zur Verfügung gestellt, um anzuzeigen, ob der Datenwert, auf den durch die Belegungs/Speicher-Einheit 24 zugegriffen wurde, im Datencache 54 gespeichert ist, oder ob auf ihn im Hauptspeicher 50 zugegriffen werden soll. Das TREFFER-Signal wird zurück über die Belegungs/Speicher-Einheit 28 und dem INTERNEN INFORMATIONS-Bus 27 dem Sequencer 34 zur Verfügung gestellt, um einen nachfolgenden Vorgang anzuzeigen, der ausgeführt werden soll.
  • Das TREFFER-Signal wird nur behauptet, wenn bereits Daten indem Datencache 54 bei der effektiven Adresse des Lache-Steuervorgangs gespeichert sind. Umgekehrt gilt, wenn das TREFFER-Signal negiert wird, werden die Daten nicht in dem Datencache 54 bei der effektiven Adresse des Lache-Steuervorgangs gespeichert.
  • Anschließend behauptet das Datencache-Filter 62 eine zweite Ausgabe, das INTERNE BUSANFORDERUNGS-Signal, zur zentralen Datencache-Steuerschaltung 64. Während des Betriebs treibt die zentrale Datencache-Steuerschaltung 64 jede Ausgabe auf sequenzielle Weise in die Businterface-Einheit 22. Wenn das INTERNE BUSANFORDERUNGS-Signal der zentralen Datencache-Steuerschaltung 64 zur Verfügung gestellt wird, treibt daher die zentrale Steuerung 64 das BUSANFORDERUNGS-Signal über den EXTERNEN DATENINFORMATIONS-Bus 19 zur Businterface-Einheit 22. Das INTERNE BUSANFORDERUNGS-Signal zeigt an, ob der Datenprozessor 20 den Besitz des INFORMATIONS-Bus 15 anfordern soll. Wenn das INTERNE BUSANFORDERUNGS-Signal behauptet wird, führt der Datenprozessor 20 einen Vorgang aus, der Informationen aus einer externen Speicherquelle erfordert. Ähnlich gilt, dass wenn das INTERNE BUSANFORDERUNGS-Signal negiert wird, der Datenprozessor 20 keinen Vorgang ausführt, der einen Zugriff entweder auf den Hauptspeicher 50 oder einen anderen Datenprozessor (nicht gezeigt) erfordert.
  • Zusätzlich behauptet während des Ausführens des Cache-Steuervorgangs eine dritte Ausgabe des Datencache-Filters 62 ein als INTERNES LESEN/SCHREIBEN bezeichnetes Signal. Das INTERNE LESE/SCHREIB-Signal zeigt an, ob der Datenprozessor einen Vorgang ausführt, der entweder einen Datenwert von einem Speicherplatz liest oder einen Datenwert in einen Speicherplatz schreibt. Wieder treibt die zentrale Datencache-Steuerschaltung 64 das INTERNE LESE/SCHREIB-Signal als das LESE/SCHREIB-Sinal zu dem EXTERNEN DATENINFORMATIONS-Bus 19.
  • Während des Durchführens des Cache-Steuervorgangs behauptet das Datencache-Filter 62 auch das INTERNE BURSTMODUS-Signal als eine vierte Ausgabe. Wenn das INTERNE BURSTMODUS-Signal behauptet wird, ist der Datenprozessor 20 in der Lage, während einer Bursttransaktion eine ganze Zeile von Daten, die im Hauptspeicher 50 gespeichert ist, entweder zu lesen oder zu schreiben. Wenn das INTERNE BURSTMODUS-Signal negiert wird, liest der Datenprozessor 20 einfach Daten mit einer Größengrenze, wie durch das GRÖSSEN-Signal bestimmt.
  • Eine fünfte Ausgabe des Datencache-Filters 22 wird als "INTERNER SPEICHERZYKLUS" bezeichnet. Das INTERNE SPEICHERZYKLUS-Signal wird durch die zentrale Datencache-Steuerschaltung 64 als das SPEICHERZYKLUS-Signal zum EXTERNEN DATENINFORMATIONS-Bus 19 getrieben. Das SPEICHERZYKLUS-Signal wird behauptet, um anzuzeigen, dass der Datenprozessor 20 zwischen der Datencache-Einheit 24 und dem Hauptspeicher 50 überträgt. Wenn das SPEICHERZYKLUS-Signal negiert wird, wird ein ungültiger Vorgang ausgeführt und es werden keine Daten übertragen. Während des ungültigen Vorgangs werden gültige Daten durch den Datenprozessor 20 zur Verfügung gestellt, aber weder die Datencache-Einheit 24 noch der Hauptspeicher 50 ist erforderlich, um einen Datenschreibvorgang auszuführen., Zusätzlich stellt das Datencache-Filter 62 ein als "INTERN UNGÜLTIGMACHEN" bezeichnetes sechstes Ausgangssignal zur Verfügung. Die zentrale Datencache-Steuerung 64 treibt das INTERNE UNGÜLTIGMACHEN-Signal als das UNGÜLTIGMACHEN-Signal zum EXTERNEN DATENINFORMATIONS-Bus 19. Wenn das UNGÜLTIGMACHEN-Signal behauptet wird, machen andere Cache-Speichersysteme (nicht gezeigt) im Datenverarbeitungssystem 10 ihre interne Cache-Zeile, die dem Datenwert entspricht, auf dem zugegriffen worden ist, ungültig. Wenn ihre TREFFER-Signale behauptet werden und das STATUS-Signal anzeigt, dass die zu modifizierende Cache-Zeile im Datenca che 54 modifiziert wird, sollte die Cache-Zeile in den Hauptspeicher 50 kopiert werden, bevor sie ungültig gemacht wird.
  • Beim Empfang eines jeden der BUSANFORDERUNGS-, BURSTMODUS-, SCHREIB/LESE-, SPEICHERZYKLUS- und UNGÜLTIGMACHEN-Signale stellt der Hauptspeicher 50 die Daten zur Verfügung, die sich bei der physikalischen Adresse befinden, die durch den Datencache MMU 58 erzeugt wurde. Die Daten werden vom Hauptspeicher 50 über den INFORMATIONS-Bus 15 auf die Businterface-Einheit 22 übertragen. Anschließend werden die Daten in den Datencache 54 bei der durch die physikalische Adresse spezifizierten Adresse übertragen und dort gespeichert.
  • Sollte ein Fehler auftreten, würde die Businterface-Einheit 22 das BEENDEN-Signal behaupten, um anzuzeigen, dass ein Buszyklus bestimmt wurde und eine Ausnahme auftrat. Anschließend würde die Businterface-Einheit 22 das BEENDEN-Signal über den EXTERNEN DATENINFORMATIONS-Bus 19 der zentralen Datencache-Steuerschaltung 64 zur Verfügung stellen. Das BEENDEN-Signal zeigt an, dass sowohl ein Bustimingzyklus vollendet wurde als auch einen Status des Buszyklus'. Zum Beispiel kann der Status des Buszyklus' anzeigen, dass, eine Ausnahme auftrat. Wenn das behauptete BEENDEN-Signal anzeigt, dass eine Ausnahme auftrat, würde die zentrale Cache-Steuerschaltung 64 das AUSNAHME-Signal behaupten und es der Belegungs/Speicher-Einheit 28 zur Verfügung stellen. Anschließend leitet die Belegungs/Speicher-Einheit 28 das AUSNAHME-Signal an den Sequencer 34, um anzuzeigen, dass ein Fehler aufgetreten ist.
  • 5 stellt ein Flussdiagramm von Schritten dar, die erforderlich sind, um einen Tastbelegungscache- Steuervorgang in der Ausführungsform der Erfindung auszuführen, die in 1 bis 4 dargestellt ist. Wie zuvor beschrieben, erlaubt ein Tastbelegungsbefehl, dass Daten durch einen Anwender in den Datencache 54 geladen werden können. In dieser Implementierung ruft der Tastbelegungscache-Steuervorgang die Daten ab und speichert sie im Datencache 54 bevor sie tatsächlich gebraucht werden. Wenn auf die Daten zugegriffen wird, ist daher der Datencache 54 in der Lage, die Daten ohne Verzögerung zur Verfügung zu stellen.
  • In der hierin beschriebenen Impiementierung der Erfindung hat die Tastbelegung einen Befehlsoperationscode der Form ld.b r0,<ea>. Während des Ausführens des Tastbelegungsvorgangs ruft die Befehlscache-Einheit 26 einen Befehl mit einer Mnemonik ld.b r0,<ea> ab. Dann decodiert der Sequencer 34 die binäre Darstellung der ld.b r0,<ea> Mnemonik vollständig und führt den Tastbelegungsbefehl in einer Sequenz aus, die durch den Fluss des durch den Datenprozessor 20 ausgeführten Programms bestimmt wird. Auf notwendige Operanden des decodierten Befehls wird in der Registerdatei 32 zugegriffen, oder sie werden dort "abgerufen", und über den INTERNEN INFORMATIONS-Bus 27 sowohl der Ausführungs-Einheit 42 als auch der Belegungs/Speicher-Einheit 28 zur Verfügung gestellt.
  • Der Sequencer 34 und die Registerdatei 32 stellen jeweils den decodierten Tastbelegungsbefehl und die notwendigen Operandeninformationen über den INTERNEN INFORMATIONS-Bus 27 sowohl der Ausführungs-Einheit 42 als auch der Belegungs/Speicher-Einheit 28 zur Verfügung. Während des Ausführens des Tastbelegungsbefehls wird auf die Datencache-Einheit 24 zugegriffen. Der Speicherplatz ist eine effekti ve Adresse (<ea>), die in dem Tastbelegungsbefehl spezifiziert ist.
  • Die Steuer- und Dateninformationen, die notwendig sind, um auf den Speicherplatz zuzugreifen, werden anschließend der Belegungs/Speicher-Einheit 28 zur Verfügung gestellt. Sowohl die effektive Adresse, auf die während des Tastbelegungsvorgangs zugegriffen wurde, als auch die Steuerinformationen, die dem effektiven Adressensignal entsprechen, werden der Datencache-Einheit 24 zur Verfügung gestellt. Wie zuvor beschrieben, umfassen die Steuerinformationen die SUPERVISOR-, GRÖSSEN-, BELEGUNGS-, TAST-, SPÜL- und ZUTEIL-Signale.
  • Während des Ausführens der Tastbelegungsvorgänge wird das SUPERVISOR-Signal zur Verfügung gestellt, um einen Betriebsmodus anzuzeigen, in dem der Datenprozessor 20 arbeitet. In dem hierin beschriebenen Beispiel wollen wir annehmen, dass das SUPERVISOR-Signal negiert wird, um anzuzeigen, dass der Datenprozessor 20 in einem Anwendermodus arbe tet. Zusätzlich darf der Tastbelegungsvorgang auch in dem Supervisorbetr ebsmodus ausgeführt werden. Wenn das SUPERVISOR-Signal behauptet wird, arbeitet der Datenprozessor 20 in dem Supervisorbetriebsmodus. Das GRÖSSEN-Signal zeigt an, dass ein Bytezugriff in dem ld.b r0, <ea> Befehl spezifiziert ist. Weil der Tastbelegungsvorgang ein Belegungsvorgang ist, wird das BELEGUNGS-Signal behauptet. Zusätzlich wird das TAST-Signal behauptet, um anzuzeigen, dass ein Tastbelegungsvorgang ausgeführt werden soll.
  • Der Datencache MMU 58 verarbeitet die Bits Null bis Einunddreißing der effektiven Adresse, um die effektive Adresse in eine durch den PHYSIKALISCHEN ADRESSEN-Bus 57 übertragene physikalische Adresse zu übersetzen. Die physi kalische Adresse wird dann verwendet, um auf einen vorbestimmten Speicherplatz in dem Daten-Tag-Array 56 zuzugreifen. Die Bits Null bis Elf der effektiven Adresse werden decodiert, um einen vorbestimmten Speicherplatz in dem Daten-Tag-Array 56 zu lokalisieren. Ein an dem vorbestimmten Speicherplatz gespeicherter Datenwert wird dann mit den Bits Elf bis Einunddreißig der physikalischen Adresse verglichen. Wenn er identisch ist, behauptet das Daten-Tag-Array 56 das ABGLEICH-Signal. Ähnlich wird ein Status des Datenwertes, der bei dem Speicherplatz, welcher durch die physikalische Adresse spezifiziert ist, gespeichert ist, über das STATUS-Signal zur Verfügung gestellt.
  • Ein TREFFER-Signal wird in Reaktion auf sowohl das STATUS-Signal als auch das ABGLEICH-Signal zur Verfügung gestellt, um anzuzeigen, ob der Datenwert, auf den durch die Belegungs/Speicher-Einheit 24 zugegriffen worden ist, im Datencache 54 gespeichert ist, oder ob auf ihn durch den Hauptspeicher 50 zugegriffen werden soll. Das TREFFER-Signal wird zurück über die Belegungs/Speicher-Einheit 28 und den INTERNEN INFORMATIONS-Bus 27 dem Sequencer 34 zur Verfügung gestellt, um einen nachfolgenden Vorgang anzuzeigen, der ausgeführt werden soll.
  • Wenn das TREFFER-Signal während des Ausführens des Tastbelegungsbefehls behauptet wird, führt die Cache- Steuerlogikschaltung 60 den Vorgang nicht aus. Das TREFFER-Signal wird behauptet, wenn die Daten bereits im Datencache 54 bei der effektiven Adresse, die in dem Tastablegungsbefehl spezifiziert ist, gespeichert ist. Daher wird ein neuer Datenwert nicht benötigt. Wenn das TREFFER-Signal jedoch während des Ausführens des Tastbelegungsbefehls negiert wird, wird die Cache-Steuerlogikschaltung 60 befähigt, die Steuer- und Dateninformationen zur Verfügung zu stellen, die notwendig sind, um den Tastbelegungsbefehl auszuführen.
  • Die Belegungs-/Speichereinheit 28 stellt die SUPERVISOR-, GRÖSSEN-, BELEGUNGS-, TAST-, SPÜL- und ZUTEIL-Signale zur Verfügung, um die Cache-Steuerlogikschaltung 60 zu befähigen, den Tastbelegungsvorgang auszuführen. Die Cache-Steuerlogikschaltung 60 verarbeitet jedes der Steuersignale, um eine Vielzahl von Steuersignalen zur Verfügung zu stellen, die den internen Betrieb der Datencache-Einheit 24 anzeigen.
  • Die Cache-Steuerlogikschaltung 60 behauptet das BUSANFORDERUNGS-Signal, um den Besitz des INFORMATIONS-Bus 15 anzufordern. Die Cache-Steuerlogikschaltung 60 behauptet auch das LESE/SCHREIB-Signal, um anzuzeigen, dass der Datenprozessor 20 einen Vorgang ausführt, der einen Datenwert aus dem Hauptspeicher 50 liest. Zusätzlich wird das BURSTMODUS-Signal behauptet, um den Datenprozessor 20 zu befähigen, während des Ausführens des Tastbelegungsbefehls eine Zeile von Daten aus dem Hauptspeicher 50 zu lesen. Das SPEICHERZYKLUS-Signal wird behauptet, um anzuzeigen, dass der Datenprozessor 20 Daten zwischen der Datencache-Einheit 24 und dem Hauptspeicher 50 überträgt. Das UNGÜLTIGMACHEN-Signal wird negiert, da weder der Hauptspeicher 50 noch andere Datenprozessoren (nicht gezeigt) in dem Datenverarbeitungssystem 10 entsprechende Kopien der Daten ungültig machen sollen.
  • Beim Empfang eines jeden der BUSANFORDERUNGS-, BURSTMODUS-, LESE/SCHREIB-, SPEICHERZYKLUS- und UNGÜLTIGMACHEN-Signale stellt der Hauptspeicher 50 dem Datencache 54 bei der physikalischen Adresse, die durch den Datencache MMU 58 erzeugt worden ist, Daten zur Verfügung.
  • Durch Ausgeben eines Tastbelegungsbefehls der Form ld.b r0,<ea> kann daher ein Anwender spezifizieren, dass ein Datenwert in den Datencache 54 gespeichert werden muss. Normalerweise werden Daten nur dann in einen Cache gespeichert, wenn die Daten benötigt werden. Nachfolgend führen Befehlsblockaden ("instruction Stalls") aufgrund von Abhängigkeiten von Daten, die durch externe Speicherquellen zur Verfügung gestellt werden müssen, zu einer schlechten Leistung. Durch Ausführen eines Tastbelegungsbefehls, um Daten in den Cache zu speichern bevor sie tatsächlich benötigt werden, kann sich die Latenzzeit für das Abrufen der Daten aus dem externen Speicher mit gleichzeitig ausgeführten nützlichen Funktionen, die dazu dienen, die Verarbeitungszeit, die auf Grund von Befehlsblockaden verschwendet wurde, zu minimieren, überschneiden.
  • Obwohl hierin nicht ausgeführt, erzeugt ein Tastbelegungsbefehl niemals eine Ausnahme. Daher kann ein Tastbelegungsbefehl von dem History-Puffer 30 zurückgezogen werden, sobald er in die Datencache-Einheit 24 eintritt. Zusätzlich wird ein Wert, der während des Ausführens eines Tastbelegungsbefehls geladen wird, nicht in die Registerdatei 32 zurückgeschrieben. Während typischer Belegungsvorgänge werden die in den Datencache 54 geladenen Datenwerte zur Verwendung in nachfolgenden Vorgängen in die Registerdatei 32 zurückgeschrieben. Der Tastbelegungsbefehl macht es jedoch nicht erforderlich, dass die Daten, die bei der effektiven Adresse geladen wurden, die in dem Befehl spezifiziert ist, in die Registerdatei 32 zurückgeschrieben werden. Daher wird die Verarbeitungszeit wiederum minimiert.
  • 6 stellt ein Flussdiagramm der Schritte dar, die erforderlich sind, um einen Spülbelegungscache- Steuervorgang im Datenprozessor 20 auszuführen. Wie zuvor beschrieben, erzwingt ein Spülbelegungsbefehl, dass eine schmutzige Cache-Zeile im Datencache 54 in den Hauptspeicher 50 geschrieben wird. In Systemen nach dem Stand der Technik werden schmutzige Cache-Zeilen nur als Nebeneffekt des Bedarfs, eine neue Zeile im Datencache 54 zuzuteilen, in den Hauptspeicher 50 "zurückkopiert". Manchmal ist es jedoch zweckmäßig, in der Lage zu sein, Daten im Datencache 54 zu spülen, um die in dem Hauptspeicher 50 gespeicherten Informationen augenblicklich zu aktualisieren. In einer Implementierung erlaubt es der Spülbelegungsbefehl dem Anwender, mehrere Speichervorgänge in eine Zeile in dem Datencache 54 durchzuführen und dann die Daten in einer einzelnen Bursttransaktion in den Hauptspeicher 50 zu schreiben. Der Spülbelegungsbefehl kann effizienter in einem Anwenderbetriebsmodus ausgeführt werden. Um indem Supervisorbetriebsmodus zu arbeiten, wäre es erforderlich, dass der Datenprozessor 20 eine Reihe von zeitaufwendigen Befehlen ausführt. Daher würde die Overhead-Zeit, die erforderlich ist, um eine Spülbelegung auszuführen, wesentlich verlängert.
  • In der hierin beschriebenen Implementierung der Erfindung hat die Spülbelegung einen Befehlsoperationscode der Form ld.w r0,<ea>. Während des Ausführens eines Spülbelegungsvorgangs, ruft die Befehlscache-Einheit 26 einen Befehl der Form ld.w r0,<ea> ab. Der Sequencer 34 decodiert dann den ld.w r0,<ea>-Befehl vollständig und führt den Spülbelegungsbefehl in einer Sequenz aus, die durch den Fluss des Programms bestimmt wird, das durch den Datenprozessor 20 ausgeführt wird. Auf notwendige Operanden des decodierten Befehls wird in der Registerdatei 32 zugegrif fen, oder sie werden dort "abgerufen" und über den INTERNEN INFORMATIONS-Bus 27 sowohl der Ausführungs-Einheit 42 als auch der Belegungs/Speicher-Einheit 28 zur Verfügung gestellt.
  • Der Sequencer 34 und die Registerdatei 32 stellen jeweils den decodierten Spülbelegungsbefehl und notwendige Operandeninformationen über den INTERNEN INFORMATIONS-Bus 27 sowohl der Ausführungs-Einheit 42 als auch der Belegungs/Speicher-Einheit 28 zur Verfügung. Während des Durchführens des Spülbelegungsbefehls wird auf einen Speicherplatz der Datencache-Einheit 24 zugegriffen. Der Speicherplatz ist die effektive Adresse (<ea>), die in dem Spülbelegungsbefehl spezifiziert ist.
  • Die Steuer- und Dateninformationen, die notwendig sind, um auf den Speicherplatz zuzugreifen, werden nachfolgend der Belegungs/Speicher-Einheit 28 zur Verfügung gestellt. Sowohl die effektive Adresse, auf die während des Spülbelegungsvorgangs zugegriffen worden ist, als auch die Steuerinformationen, die dem effektiven Adressensignal entsprechen, werden der Datencache-Einheit 24 zur Verfügung gestellt. Wie zuvor beschrieben, umfassen die Steuerinformationen die SUPERVISOR-, GRÖSSEN-, BELEGUNGS-, TAST-, SPÜL- und ZUTEIL-Signale.
  • Während des Ausführens des Spülbelegungsvorgangs wird das SUPERVISOR-Signal zur Verfügung gestellt, um einen Betriebsmodus anzuzeigen, in dem der Datenprozessor 20 arbeitet. In dem hierin beschriebenen Beispiel nehmen wir an, dass das SUPERVISOR-Signal negiert wird, um anzuzeigen, dass der Datenprozessor 20 in einem Anwendermodus arbeitet. Zusätzlich kann der Spülbelegungsvorgang auch in dem Supervisorbetriebsmodus ausgeführt werden. Wenn das SUPERVISOR- Signal behauptet wird, dann arbeitet der Datenprozessor 20 in dem Supervisorbetriebsmodus. Das GRÖSSEN-Signal zeigt an, dass in dem ld.w r0,<ea>-Befehl ein Wortzugriff spezifiziert ist. Da der Spülbelegungsvorgang ein Belegungsvorgang ist, wird das BELEGUNGS-Signal behauptet. Zusätzlich wird das SPÜL-Signal behauptet, um anzuzeigen, dass ein Spülbelegungsvorgang ausgeführt werden soll.
  • Der Datencache MMU 58 verarbeitet die Bits Null bis Einunddreißig der effektiven Adresse, um die effektive Adresse in eine physikalische Adresse zu übersetzen, die durch den PHYSIKALISCHEN ADRESSEN-Bus 57 übertragen wird. Die physikalische Adresse wird dann verwendet, um auf einen vorbestimmten Speicherplatz in dem Daten-Tag-Array 56 zuzugreifen. Die Bits Null bis Elf der effektiven Adresse werden decodiert, um einen vorbestimmten Speicherplatz in dem Daten-Tag-Array 56 zu lokalisieren. Ein Datenwert, der an dem vorbestimmten Speicherplatz gespeichert ist, wird dann mit den Bits Zwölf bis Einunddreißig der physikalischen Adresse verglichen. Wenn er identisch ist, behauptet das Daten-Tag-Array 56 das ABGLEICH-Signal. Ähnlich wird ein Status des Datenwertes, der an dem Speicherplatz, der durch die physikalische Adresse spezifiziert wird, gespeichert ist, über das STATUS-Signal zur Verfügung gestellt. Ein TREFFER-Signal wird in Reaktion auf sowohl das STATUSals auch das ABGLEICH-Signal zur Verfügung gestellt, um anzuzeigen, ob der Datenwert, auf den durch die Belegungs/Speicher-Einheit 24 zugegriffen wurde, in dem Datencache 54 gespeichert ist, oder ob auf ihn im Hauptspeicher 50 zugegriffen werden soll. Das TREFFER-Signal wird zurück über die Belegungs/Speicher-Einheit 28 und den INTERNEN INFORMATIONS-Bus 27 dem Sequencer 34 zur Verfügung gestellt, um einen nachfolgenden Vorgang anzuzeigen, der ausgeführt werden soll.
  • Wenn das TREFFER-Signal während des Ausführens des Spülbelegungsbefehls negiert wird, führt die Cache- Steuerlogikschaltung 60 den Vorgang nicht aus. Die Cache- Steuerlogikschaltung 60 führt den Spülbelegungsbefehl nicht aus, weil die durch die effektive Adresse spezifizierten Daten nicht in dem Datencache 54 gespeichert sind. Daher gibt es keine Daten, die in den Hauptspeicher 50 geschrieben werden sollen. Wenn das TREFFER-Signal jedoch behauptet wird, wird der STATUS des Signals überprüft, um zu bestimmen; ob die darin gespeicherten Daten modifiziert worden sind. Wenn die Daten nicht modifiziert worden sind, dann führt die Cache-Steuerlogikschaltung 60 den Vorgang nicht aus. Die Daten sind dieselben, wie die, die an einem entsprechenden Platz im Hauptspeicher 50 gespeichert sind. Es braucht daher keine neue Kopie in den Hauptspeicher 50 gespeichert werden.
  • Die Belegungs/Speicher-Einheit 28 stellt die SUPERVISOR-, GRÖSSEN-, BELEGUNGS-, TAST-, SPÜL- und ZUTEIL-Signale zur Verfügung: Diese Signale ermöglichen der Cache-Steuerlogikschaltung 60, den Spülbelegungsvorgang auszuführen, wenn die Daten modifiziert worden sind. Die Cache- Steuerlogikschaltung 60 verarbeitet jedes der Steuersignale, um eine Vielzahl von Steuersignalen bereitzustellen, die den internen Betrieb der Datencache-Einheit 24 steuern.
  • Die Cache-Steuerlogikschaltung 60 behauptet das BUSANFORDERUNGS-Signal, um den Besitz des INFORMATIONS-Bus 15 anzufordern. Die Cache-Steuerlogikschaltung 60 negiert auch das LESE/SCHREIB-Signal, um anzuzeigen, dass der Datenprozessor 20 einen Vorgang ausführt, der einen Datenwert in den Hauptspeicher 50 schreibt. Zusätzlich wird das BURSTMODUS-Signal behauptet, um den Datenprozessor 20 zu befähigen, während des Ausführens des Spülbelegungsbefehls eine Zeile von Daten aus dem Hauptspeicher 50 zu lesen. Das SPEICHERZYKLUS-Signal wird während des Ausführens des Spülbeiegungsbefehls behauptet, um anzuzeigen, dass der Datenprozessor 20 Daten zwischen der Datencache-Einheit 24 und dem Hauptspeicher 50 überträgt. Auch wird ein Status des Datenwertes modifiziert. Daher wird das UNGÜLTIGMACHEN-Signal behauptet, um den Hauptspeicher 50 und andere Daten-Prozessoren (nicht gezeigt) in dem Datenverarbeitungssystem 10 zu befähigen, die entsprechenden Kopien der Daten ungültig zu machen.
  • Beim Empfang eines jeden der BUSANFORDERUNGS-, BURSTMODE-, SCHREIB/LESE-, SPEICHERZYKLUS- und UNGÜLTIGMACHEN-Signale speichert der Hauptspeicher 50 Daten, die durch den Datencache 54 bereitgestellt wurden, an der physikalischen Adresse, die durch den Datencache MMU 58 erzeugt wurde.
  • Daher kann ein Anwender durch Ausgeben eines Spülbelegungsbefehls der Form ld.w r0,<ea> einen Datencache-Wert spezifizieren, der in den Hauptspeicher 50 geschrieben werden soll, ohne die längeren Verarbeitungszeiten, die im Allgemeinen durch einen Supervisorbetriebsmodus benötigt werden. Um in dem Supervisorbetriebsmodus zu arbeiten, wäre. es erforderlich, dass der Datenprozessor 20 eine Reihe von, zeitaufwendigen Befehlen ausführt. Daher würde die Overhead-Zeit, die erforderlich ist, um eine Spülbelegung auszuführen, wesentlich zunehmen.
  • 7 stellt ein Flussdiagramm der Schritte dar, die erforderlich sind, um einen Zuteilbelegungscache- Steuervorgang im Datenprozessor 20 auszuführen. In Datenprozessoren nach dem Stand der Technik, erforderten Speichervorgänge, die auf einen Cache-Speicher zugriffen, einen Zeilenfüllvorgang, um einer durch den Speichervorgang spezifizierten Adresse einen Datenwert zur Verfügung zu stellen. In der hierin beschriebenen Implementierung der Erfindung jedoch erlaubt ein Zuteilbelegungsbefehl einem Anwender, eine Zeile in dem Datencache 54 für eine Reihe von nachfolgenden Speichervorgängen zuzuteilen, während ein normaler Zeilenfüllvorgang vom Hauptspeicher 50 vermieden wird. Daher wird die Verarbeitungszeit, die mit dem Abrufen einer neuen Zeile vom Hauptspeicher 50 während eines Speichervorgangs verknüpft ist, minimiert.
  • In der hierin beschriebenen Implementierung der Erfindung hat die Zuteilbelegung einen Befehlsoperationscode der Form ld.h r0,<ea>. Während des Ausführens eines Spülbelegungsvorgangs ruft die Befehlscache-Einheit 26 einen Befehl der Form ld.h r0,<ea> ab. Dann decodiert der Sequencer 34 den ld.h r0,<ea>-Befehl vollständig und führt den Spülbelegungsbefehl in einer Sequenz aus, die durch den Fluss eines Programms bestimmt wird, das durch den Datenprozessor 20 ausgeführt wird. Auf notwendige Operanden des decodierten Befehls wird in der Registerdatei 32 zugegriffen, oder sie werden dort "abgerufen" und sowohl der Ausführungs-Einheit 42 als auch der Belegungs/Speicher-Einheit 28 zur Verfügung gestellt. Zusätzl ch werden, wie in der Ausführung des Tastbelegungsbefehls, niemals Ausnahmen erkannt. Daher wird der Zuteilbelegungsbefehl vom History-Puffer 30 zurückgezogen, sobald die Ausführung des Befehls initiiert wird.
  • Der Sequencer 34 und die Registerdatei 32 stellen jeweils den decodierten Zuteilbelegungsbefehl und notwendige Operandeninformationen über den INTERNEN INFORMATIONS-Bus 27 sowohl der Ausführungs-Einheit 42 als auch der Belegungs/Speicher-Einheit 28 zur Verfügung. Während des Ausführens des Zuteilbelegungsbefehls wird auf die Datencache-Einheit 24 zugegriffen. Der Speicherplatz ist eine effektive Adresse (<ea>), die in dem Zuteilbelegungsbefehl spezifiziert ist.
  • Steuer- und Dateninformationen, die notwendig sind, um auf den Speicherplatz zuzugreifen, werden nachfolgend der Belegungs/Speicher-Einheit 28 zur Verfügung gestellt. Sowohl die effektive Adresse, auf die während des Zuteilbelegungsvorgangs zugegriffen wird, als auch die Steuerinformationen, die dem effektiven Adressensignal entsprechen, werden der Datencache-Einheit 24 zur Verfügung gestellt. wie zuvor beschrieben, umfassen die Steuerinformationen die SUPERVISOR-, GRÖSSEN-, BELEGUNGS-, TAST-, SPÜL- und ZUTEIL-Signale.
  • Während des Ausführens des Zuteilbelegungsvorgangs wird das SUPERVISOR-Signal zur Verfügung gestellt, um einen Betriebsmodus anzuzeigen, in dem der Datenprozessor 20 arbeitet. In dem hierin beschriebenen Beispiel nehmen wir an, dass das SUPERVISOR-Signal negiert wird, um anzuzeigen, dass der Datenprozessor 20 in einem Anwendermodus arbeitet. Zusätzlich kann der Zuteilbelegungsvorgang auch in dem Supervisorbetriebsmodus ausgeführt werden. Wenn das SUPERVISOR-Signal behauptet wird; arbeitet der Datenprozessor 20 in dem Supervisorbetriebsmodus. Das GRÖSSEN-Signal zeigt an, dass ein Halbwortzugriff in dem ld.h r0,<ea>-Befehl spezifiziert ist. Da der Zuteilbelegungsvorgang ein Belegungsvorgang ist, wird das BELEGUNGS-Signal behauptet. Zu sätzlich wird das ZUTEIL-Signal behauptet, um anzuzeigen, dass ein Zuteilbelegungsvorgang ausgeführt werden soll.
  • Der Datencache MMU 58 verarbeitet die Bits Null bis Einunddreißig der effektiven Adresse, um die effektive Adresse in eine, durch den PHYSIKALISCHEN ADRESSEN-Bus 57 übertragene, physikalische Adresse zu übersetzen. Die physikalische Adresse wird dann verwendet, um auf einen vorbestimmten Speicherplatz in dem Daten-Tag-Array 56 zuzugreifen. Die Bits Null bis Elf der effektiven Adresse werden decodiert, um einen vorbestimmten Speicherplatz in dem Daten-Tag-Array 56 zu lokalisieren. Ein an dem vorbestimmten Speicherplatz gespeicherter Datenwert wird dann mit den Bits Zwölf bis Einunddreißig der physikalischen Adresse verglichen. Ist er identisch, behauptet das Daten-Tag-Array 56 das ABGLEICH-Signal. Ähnlich wird ein Status des Datenwertes, der an dem Speicherplatz gespeichert ist, der durch die physikalische Adresse spezifiziert ist, über das STATUS-Signal zur Verfügung gestellt.
  • Ein TREFFER-Signal wird in Reaktion auf sowohl das STATUS- als auch das ABGLEICH-Signal zur Verfügung gestellt, um anzuzeigen, ob der Datenwert, auf den durch die Belegungs/Speicher-Einheit 24 zugegriffen wird, in dem Datencache 54 gespeichert ist, oder ob auf ihn vom Hauptspeicher 50 zugegriffen werden soll. Das TREFFER-Signal wird zurück über die Belegungs/Speicher-Einheit 28 und den INTERNEN INFORMATIONS-Bus 27 dem Sequencer 34 zur Verfügung gestellt, um einen nachfolgenden Vorgang anzuzeigen, der ausgeführt werden soll.
  • Wenn das TREFFER-Signal während des Ausführens des Zuteilbelegungsbefehls behauptet wird, führt die Cache-Steuerlogikschaltung 60 den Vorgang nicht aus. Die Cache- Steuerlogikschaltung 60 führt den Zuteilbelegungsbefehl nicht aus, weil die durch die effektive Adresse spezifizierten Daten schon in dem Datencache 54 gespeichert sind und eine neue Zeile nicht zugeteilt zu werden braucht.
  • Die Belegungs/Speicher-Einheit 28 stellt die SUPERVISOR-, GRÖSSEN-, BELEGUNGS-, TAST-, SPÜL- und ZUTEIL-Signale der Cache-Steuerlogikschaltung 60 zur Verfügung. Wenn das TREFFER-Signal negiert wird, wird die Cache- Steuerlogikschaltung 60 befähigt, eine Vielzahl von Steuersignalen zur Verfügung zu stellen, die notwendig. sind, um den Zuteilbelegungsvorgang auszuführen. Die Cache-Steuerlogikschaltung 60 verarbeitet jedes der Steuersignale, um eine Vielzahl von Steuersignalen zur Verfügung zu stellen, die den internen Betrieb der Datencache-Einheit 24 anzeigen.
  • Die Cache-Steuerlogikschaltung 60 behauptet das BUSANFORDERUNGS-Signal, um den Besitz des INFORMATIONS-Bus 15 anzufordern. Die Cache-Steuerlogikschaltung 60 behauptet auch das LESE/SCHREIB-Signal, um anzuzeigen, dass der Da tenprozessor 20 einen Vorgang ausführt, der einen Datenwert aus dem Hauptspeicher 50 liest. Das BURSTMODUS-Signal wird negiert, so dass in einer einzigen Bustransaktion nur auf ein Halbwort von Daten im Hauptspeicher 50 zugegriffen werden kann. Wenn das BURSTMODUS-Signal behauptet worden wäre, wäre eine Zeile von Daten aus dem Hauptspeicher 50 abgerufen worden. Um das Lesen der Zeile von Daten zum Abschluss zu bringen, wären mindestens vier Buszyklen erforderlich. Daher spart der Zuteilbelegungsbefehl im Vergleich zu Lösungen nach dem Stand der Technik eine signifikante Menge von Verarbeitungszeit.
  • Das SPEICHERZYKLUS-Signal wird während des Ausführens des Zuteilbelegungsbefehls auch negiert, um anzuzeigen, dass der Datenprozessor 20 keine Daten zwischen der Datencache-Einheit 24 und dem Hauptspeicher 50 überträgt. Das UNGÜLTIGMACHEN-Signal wird behauptet, um den Hauptspeicher 50 und andere Datenverarbeitungssysteme (nicht gezeigt) in dem Datenverarbeitungssystem 10 zu befähigen, Kopien der zugeteilten Zeile ungültig zu machen, so dass im ganzen System Datenkohärenz erhalten bleibt.
  • Durch Ausgeben eines Zuteilbelegungsbefehls der Form ld.h r0,<ea> kann daher ein Anwender eine Zeile in dem Datencache 54 spezifizieren, die zugeteilt werden soll, ohne dass ein Zeilenfüllvorgang und die typischerweise erforderliche entsprechende Verarbeitungszeit erforderlich ist. In Fällen, bei denen im Voraus bekannt ist, dass eine vollständige Zeile eines Caches vollständig überschrieben werden soll, kann die Leistung des Datenverarbeitungssystems verbessert werden, wenn eine neue Zeile von Daten nicht von einer externen Speicherquelle abgerufen wird. In dem Datenverarbeitungssystem 10 teilt der Zuteilbelegungsbefehl eine Zeile in dem Datencache 54 zu, so wie es in einem typischen Belegungsvorgang, der missglückt, ausgeführt werden würde. Während des Ausführens des Zuteilbelegungsbefehls werden jedoch keine Daten abgerufen, um einen Zeilenfüllvorgang auszuführen, und das Verarbeitungs-Overhead wird minimiert.
  • Jeder der Tastbelegungs-, Spülbelegungs- und Zuteilbelegungsbefehle wird ohne das Hinzufügen einer signifikanten Menge von Schaltkreisen implementiert. Ein Belegungsbefehl mit einem Zieloperanden des Registers r0 wird verwendet, um anzuzeigen, dass ein Cache-Steuervorgang initiiert wird. Die Größenoperatoren .b, .w und .h werden dann verwendet, um anzuzeigen, ob der Cache-Steuervorgang eine Tastbelegung, eine Spülbelegung oder eine Zuteilbelegung ist. Daher wird eine bessere Steuerung des Betriebs des Datencache 54 ohne das Hinzufügen von mehr Operationscodes und dem Overhead, das notwendig ist, um jeden der Operationscodes zu unterstützen, implementiert. In Implementierungen nach dem Stand der Technik hat jeder der Tastbelegungs-, Spülbelegungs- und Zuteilbelegungsbefehle einen getrennten Operationscode. Durch Zugreifen auf r0 mit einem normalen Belegungsbefehl ist nun ein Vorgang, der eine Nulloperation gewesen wäre, einer der Cache-Steuerbefehle. Wenig zusätzliche Verschaltung ist erforderlich und das Overhead des Systems ist daher minimiert. Weil jeder der Cache-Steuervorgänge ein Nebenprodukt eines normalen Belegungsvorgangs ist, hat die Implementierung jedes dieser Vorgänge als ein Belegungsvorgang zusätzlich deutliche Vorteile. Am Bedeutendsten, ist, dass Verschaltungen, die schon erforderlich sind, um einen normalen Belegungsvorgang auszuführen, verwendet werden können, um jeden der Tastbelegungs-, Spülbelegungs- und Zuteilbelegungsbefehle auszuführen. Wiederum wird die Funktion der Vorrichtung verbessert, während das System-Overhead minimiert wird.
  • Zusätzlich zu den zuvor diskutierten BUSANFORDERUNGS-, BURSTMODUS-, LESE/SCHREIB-, SPEICHERZYKLUS-, UNGÜLTIGMACHEN- und GRÖSSEN-Signalen treibt die zentrale Datencache-Steuerschaltung 64 auch das ÜBERTRAGUNGSCODE-Signal zum EXTERNEN DATENINFORMATIONS-Bus 19. Das ÜBERTRAGUNGSCODE-Signal wird in Reaktion auf jedes der SUPERVISOR-, TAST-, SPÜL- und ZUTEIL-Signale erzeugt. Jedes der oben diskutierten Signale wird der Businterface-Einheit 22 während eines Buszyklus' des Datenprozessors 20 zur Verfügung gestellt.
  • Das ÜBERTRAGUNGSCODE-Signal stellt einem Anwender des
  • Datenprozessors 20 Informationen über den Betrieb der Datencache-Einheit 24 zur Verfügung. In der hierin beschriebenen Ausführungsform der Erfindung stellt das ÜBERTRAGUNGSCODE-Signal "Hinweise" hinsichtlich des aktuell durch den Datenprozessor 20 ausgeführten Vorgangs zur Verfügung. Tabelle 1 stellt eine Ausführungsform einer Codierung für das, ÜBERTRAGUNGSCODE-Signal dar. Tabelle 1
    ÜBERTRAGUNGSCODE-SIGNAL VORGANG
    0000 Reserviert
    0001 Anwender-Datenzugriff
    0010 Anwender-Tast-, -Spül- oder -Zuteilzugriff
    0011 Daten MMU-Tabellensuchvorgang
    0100 Reserviert
    0101 Supervisor-Datenzugriff
    0110 Supervisor-Tast-, -Spül- oder -Zuteilzugriff
    0111 Abhörer-Rückkopie
    1000 Reserviert
    1001 Anwender-Befehlszugriff
    1010 Reserviert
    1011 Inst. MMU-Tabellensuchvorgang
    1100 Reserviert
    1101 Supervisor-Befehlszugriff
    1110 Reserviert
    1111 Reserviert
  • Durch Codieren des ÜBERTRAGUNGSCODE-Signals, um jeden der Vorgänge, die oben in der Tabelle 1 aufgelistet sind, darzustellen, ist ein Anwender in der Lage, die Busaktivität des INTERNEN INFORMATIONS-Bus 26 zu überwachen. Der Anwender kann diese Informationen verwenden, um Einsicht in den Betrieb der Datencache-Einheit 24 zu erhalten. Wenn der durch das ÜBERTRAGUNGSCODE-Signal codierte Vorgang "reserviert" ist, ist noch kein Vorgang codiert worden. Die reservierten Codierungen sind: 0000, 0100, 1000, 1010, 1100, 1110 und 1111.
  • Wenn das ÜBERTRAGUNGSCODE-Signal einen binären Wert von 0001 hat, ist ein Anwenderzugriff auf den Hauptspeicher 50 initiiert worden. Wenn das ÜBERTRAGUNGSCODE-Signal einen binären Wert von 0010 hat, hat ein Anwender entweder einen Tastbelegungs-, Spülbelegungs- oder Zuteilbelegungsbefehl initiiert. Der Datencache MMU 58 hat einen Hardware- Tabellensuchvorgang initiiert, wenn das ÜBERTRAGUNGSCODE-Signal einen binären Wert von 0011 hat. Während eines Tabellensuchvorgangs suchen die Daten MMU 58 nach einem physikalischen Adressenwert. Wenn das ÜBERTRAGUNGSCODE-Signal einen binären Wert von 0101 hat, ist ein Supervisorzugriff auf Daten in der Datencache-Einheit 24 initiiert worden. Wenn das ÜBERTRAGUNGSCODE-Signal einen binären Wert von 0110 hat, ist entweder ein Tastbelegungs-, Spülbelegungs- oder Zuteilbelegungsbefehl in einem Supervisorbetriebsmodus initiiert worden. Ein Abhör-Rückkopievorgang wird initiiert, wenn das ÜBERTRAGUNGSCODE-Signal einen binären Wert von 0111 hat. Wenn das ÜBERTRAGUNGSCODE-Signal einen binären Wert von 1001 hat, greift der Anwender für einen Befehlsdatenwert auf den Hauptspeicher 50 zu. Eine Speicherverwaltungseinheit (nicht gezeigt) in der Befehlscache-Einheit 26 hat einen Hardware-Tabellensuchvorgang initiiert, wenn das ÜBERTRAGUNGSCODE-Signal einen binären Wert von 1011 hat. Wenn das ÜBERTRAGUNGSCODE-Signal einen binären Wert von 1101 hat, wird auf die Befehlscache-Einheit 26 in dem Supervisorbetriebsmodus zugegriffen.
  • Obwohl Tabelle 1 viele Vorgänge darstellt, die codiert werden können, um einem Anwender des Datenprozessors 20 externe Informationen zur Verfügung zu stellen, sind Informationen bezüglich des Betriebs des Datencache 24 von besonderer Bedeutung. Wenn das ÜBERTRAGUNGSCODE-Signal anzeigt, dass ein Tastbelegungs-, Spülbelegungs- oder Zuteilbelegungsbefehl auftritt, kann der Anwender diese Informationen verwenden, um eine externe intelligente Speichersteuerung (nicht gezeigt) zu implementieren, um Steuer- und Dateninformationen für zukünftige Cache-Transaktionen zur Verfügung zu stellen. Das GRÖSSEN-Signal wird verwendet, um zwischen jedem der Tastbelegungs-, Spülbelegungs- oder Zuteilbelegungs-Vorgänge zu unterscheiden. Wie zuvor erwähnt, werden die Cache-Steuervorgänge durch Verwenden eines existierenden Belegungsoperationscodes, der r0 als einen Zieloperanden hat, implementiert. Eine Größe eines Zugriffs des Belegungsvorgangs wurde verwendet, um zwischen jeder der drei Vorgänge zu unterscheiden. Daher kann, wenn das ÜBERTRAGUNGSCODE-Signal anzeigt, dass ein Cache-Steuervorgang ausgeführt wurde, das GRÖSSEN-Signal verwendet werden, um zu bestimmen, ob er ein Tastbelegungs-, Spülbelegungs- oder ein Zuteilbelegungsvorgang war.
  • Zusätzlich zu den ÜBERTRAGUNGSCODE- und GRÖSSEN-Signalen werden die Bits Null bis Vier des physikalischen Adressenwertes über den INFORMATIONS-Bus 15 einem externen Speicher oder Datenprozessor (nicht gezeigt) zur Verfügung gestellt. Zusätzlich zu den ÜBERTRAGUNGSCODE- und GRÖSSEN-Signalen kann der physikalische Adressenwert codiert werden, um Informationen über zukünftige Cache-Transaktionen zur Verfügung zu stellen. Zum Beispiel werden in dieser Ausführungsform der Erfindung die niedrigeren vier Bits des physikalischen Adressenwertes nicht für einen spezifischen Zweck verwendet. Daher können die niedrigeren vier Bits der physikalischen Adresse codiert werden, um mehr Informationen zur Verfügung zu stellen, um die intelligente Speichersteuerung zu befähigen, den zukünftigen Betrieb des Datencaches 54 verlässlicher vorherzusagen.
  • Wenn z. B. ein Tastbelegungsbefehl verwendet wird, um eine Zeile von Daten aus dem Hauptspeicher 50 vorab abzurufen, kann die externe intelligente Speicherkontrolle in der Lage sein, eine nachfolgende Zeile von Daten aus dem Hauptspeicher 50 automatisch abzurufen. Durch Abrufen der nachfolgenden Zeile von Daten aus dem Hauptspeicher 50, bevor sie tatsächlich angefordert wurde, wird eine effektive Zugriffszeit auf den Hauptspeicher 50 minimiert. Obwohl das hierin beschriebene kurze Beispiel einen Anwendermodus-Cache-Steuerbefehl implementiert, können auch die ÜBERTRAGUNGSCODE-, GRÖSSEN- und physikalischen Adressen-Signale einfach verwendet werden, um die intelligente Speichersteuerung zu befähigen, jede beliebige Cache-Transaktion zu antizipieren.
  • Als ein anderes Beispiel nehmen wir an, dass eine Seite des Speichers von der Hexadezimaladresse $0 zur Hexadezimaladresse $1000 kopiert wird. Während der Kopiertransaktion wird der bei der Adresse $0 gespeicherte Speicher gelesen und dann zur Adresse $1000 geschrieben. Diese Kopiertransaktion wird in Wortgröße-Inkrementen fortgesetzt bis die vollständige Seite des Speichers kopiert worden ist. wiederum können die ÜBERTRAGUNGSCODE-, GRÖSSEN- und physikalischen Adressen-Signale verwendet werden, um die repetitive Beschaffenheit der Kopiertransaktion vorherzusagen, so dass die Speicherzugriffszeit minimiert wird. In beiden Fällen erlaubt das ÜBERTRAGUNGSCODE-Signal einem Anwender, Einsicht in den internen Betrieb der Datencache-Einheit 24 zu erhalten und diese Kenntnis anzuwenden, um zukünftige Cache-Transaktionen vorherzusagen.
  • In der hierin beschriebenen Implementierung der Erfindung wird die Steuerung eines Cache-Speichers einem Anwender sowohl durch Cache-Steuervorgänge als auch durch externe Informationen, die mit dem Betrieb des Cache-Speichers verknüpft sind, zur Verfügung gestellt. Die Cache-Steuervorgänge erlauben es einem Anwender, den Cache-Speicher zu konfigurieren, so dass das Ausführen von Cache-Transaktionen effizient durchgeführt wird. Zusätzlich kann der Anwender durch Bereitstellen externer Informationen, die mit dem Betrieb des Cache-Speichers verknüpft sind, zukünftige Cache-Transaktionen vorhersagen und notwendige Informationen in einer minimalen Zeitspanne zur Verfügung stellen.
  • Die hierin beschriebene Implementierung der Erfindung wird nur beispielhaft zur Verfügung gestellt. Viele andere Implementierungen zum Ausführen der hierin beschriebenen Funktion können jedoch existieren. Zum Beispiel können andere Vorgänge als die Tastbelegungs-, Spülbelegungs- und Zuteilbelegungsvorgänge implementiert sein. Jeder dieser drei Vorgänge wird als eine Ausführungsform der Erfindung implementiert. Zusätzlich können die reservierten Codierungen der ÜBERTRAGUNGSCODE-, GRÖSSEN- und physikalischen Ad ressen-Signale verwendet werden, um mehr Informationen bezüglich des Betriebs des Datenprozessors 20 zur Verfügung zu stellen.
  • Obwohl hierin die Prinzipien der Erfindung beschrieben worden sind, ist es dem Fachmann völlig klar, dass diese Beschreibung nur beispielhaft ist, und den Bereich der Erfindung nicht begrenzen soll. Folglich ist es beabsichtigt, durch die angehängten Ansprüche alle Modifikationen der Erfindung, die in den Bereich der Erfindung fallen, abzudecken.

Claims (6)

  1. Datenprozessor (10) mit einem Cache-Speicher (54) hat, der umfasst Interfacemittel (22) zum Empfangen eines Befehls; und Befehlsdecodiermittel (26), das mit den Interfacemitteln verbunden sind, wobei die Befehlsdecodiermittel einen Operationscode des Befehls decodieren, um ein Steuersignal zur Verfügung zu stellen, wobei die Befehlsdecodiermittel einen Registercode des Befehls decodiert, um ein Register anzuzeigen; Ausführungsmittel (42), die mit den Befehlsdecodiermitteln verbunden sind, zum Ausführen eines ersten Vorgangs in Reaktion auf sowohl das Steuersignal als auch ein Register, das durch den Registercode des Befehls angezeigt wird, wobei das Ausführungsmittel den ersten Vorgang nur ausführt, wenn ein Register eines aus einer ersten Vielzahl von Registern ist; Cache-Zugriffsmittel (56), die mit den Befehlsdecodiermitteln verbunden sind, zum Zugreifen auf den Cache-Speicher in Reaktion auf einen Cache-Übertragungscode des Befehls; und der gekennzeichnet ist durch: Cache-Steuermittel (60), die mit den Befehlsdecodiermitteln verbunden sind, zum Ausführen eines zweiten Vorgangs zum Spülen eines Speicherplatzes in dem Lache- Speicher, der durch den Cache-Übertragungscode des Befehls angezeigt wird; so dass er im Cache-Speicher gelöscht wird und in einem externen Speicher gespeichert wird, in Reaktion auf sowohl das Steuersignal als auch ein Register, das durch den Registercode des Befehls angezeigt wird, wobei die Cache-Steuermittel den zweiten Vorgang nur ausführen, wenn ein Register eines aus einer zweiten Vielzahl von Registern ist.
  2. Datenprozessor gemäß Anspruch 1, bei dem der erste Vorgang ein Belegungsvorgang ist, wobei der Belegungsvorgang einen Informationswert in das Register speichert, das durch den Registercode des Befehls angezeigt wird.
  3. Datenprozessor gemäß Anspruch 1 oder 2, bei dem die zweite Vielzahl von Registern einen konstanten Wert speichert, der nicht modifiziert werden darf.
  4. Verfahren zum Ausführen eines Cache-Spül/Cache-Speicher-Zugriffsvorgangs in einem Datenverarbeitungssystem, das einen Cache-Speicher hat, das die Schritte umfasst: Empfangen eines Datenverarbeitungsbefehls; Decodieren eines ersten Teils eines Datenverarbeitungsbefehls, um einen Operationscode zur Verfügung zu stellen; Decodieren eines zweiten Teils des Datenverarbeitungsbefehls, um einen Cache-Übertragungscode zur Verfügung zu stellen; Decodieren eines dritten Teils des Datenverarbeitungsbefehls, um einen Registercode zur Verfügung zu stellen; Durchführen eines ersten Cache-Speicherzugriffsvorgangs, wenn das Register eines aus einer ersten Vielzahl von Registern ist; und gekennzeichnet ist durch die Schritte: Durchführen eines zweiten Cache-Speicher-Zugriffsvorgangs, der durch den Cache-Übertragungscode angezeigt wird, wenn das Register eines aus einer zweiten Vielzahl von Registern ist, bei dem der zweite Cache-Speicher-Zugriffsvorgang einen Speicherplatz in dem Cache-Speicher anzeigt, der in dem Cache-Speicher gelöscht wird und in einem externen Speicher gespeichert wird.
  5. Verfahren gemäß Anspruch 4, bei dem die zweite Vielzahl von Registern einen Wert speichert, der nicht modifiziert werden darf.
  6. Verfahren gemäß Anspruch 4 oder 5, bei dem der erste Cache-Speicher-Zugriffsvorgang ein Belegungsvorgang ist, wobei der Belegungsvorgang einen Informationswert in das Register speichert, das durch den Registercode des Befehls angezeigt wird.
DE69332663T 1992-02-28 1993-02-18 Datenprozessor mit einem Cachespeicher Expired - Lifetime DE69332663T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US844011 1992-02-28
US07/844,011 US5375216A (en) 1992-02-28 1992-02-28 Apparatus and method for optimizing performance of a cache memory in a data processing system

Publications (2)

Publication Number Publication Date
DE69332663D1 DE69332663D1 (de) 2003-02-27
DE69332663T2 true DE69332663T2 (de) 2004-02-19

Family

ID=25291545

Family Applications (3)

Application Number Title Priority Date Filing Date
DE69332663T Expired - Lifetime DE69332663T2 (de) 1992-02-28 1993-02-18 Datenprozessor mit einem Cachespeicher
DE69331448T Expired - Lifetime DE69331448T2 (de) 1992-02-28 1993-02-18 Dataprozessor mit einem Cachespeicher
DE69326491T Expired - Lifetime DE69326491D1 (de) 1992-02-28 1993-02-18 Datenprozessor mit einem Cachespeicher und Verfahren

Family Applications After (2)

Application Number Title Priority Date Filing Date
DE69331448T Expired - Lifetime DE69331448T2 (de) 1992-02-28 1993-02-18 Dataprozessor mit einem Cachespeicher
DE69326491T Expired - Lifetime DE69326491D1 (de) 1992-02-28 1993-02-18 Datenprozessor mit einem Cachespeicher und Verfahren

Country Status (5)

Country Link
US (1) US5375216A (de)
EP (4) EP1286269A3 (de)
JP (1) JP3285644B2 (de)
KR (1) KR100242484B1 (de)
DE (3) DE69332663T2 (de)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2270791B (en) * 1992-09-21 1996-07-17 Grass Valley Group Disk-based digital video recorder
GB2273181A (en) * 1992-12-02 1994-06-08 Ibm Cache/non-cache access control.
US5524225A (en) * 1992-12-18 1996-06-04 Advanced Micro Devices Inc. Cache system and method for providing software controlled writeback
CA2121852A1 (en) * 1993-04-29 1994-10-30 Larry T. Jost Disk meshing and flexible storage mapping with enhanced flexible caching
US5630095A (en) * 1993-08-03 1997-05-13 Motorola Inc. Method for use with a data coherency protocol allowing multiple snoop queries to a single snoop transaction and system therefor
US5848432A (en) 1993-08-05 1998-12-08 Hitachi, Ltd. Data processor with variable types of cache memories
US5802574A (en) * 1993-12-28 1998-09-01 Intel Corporation Method and apparatus for quickly modifying cache state
US5832534A (en) * 1994-01-04 1998-11-03 Intel Corporation Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories
TW233354B (en) * 1994-03-04 1994-11-01 Motorola Inc Data processor with memory cache and method of operation
US6279099B1 (en) * 1994-04-29 2001-08-21 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
US5669014A (en) * 1994-08-29 1997-09-16 Intel Corporation System and method having processor with selectable burst or no-burst write back mode depending upon signal indicating the system is configured to accept bit width larger than the bus width
JP3713312B2 (ja) * 1994-09-09 2005-11-09 株式会社ルネサステクノロジ データ処理装置
US5651134A (en) * 1994-10-26 1997-07-22 Ncr Corporation Method for configuring a cache memory to store only data, only code, or code and data based on the operating characteristics of the application program
US5802588A (en) * 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US5887152A (en) * 1995-04-12 1999-03-23 Advanced Micro Devices, Inc. Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
US5774685A (en) * 1995-04-21 1998-06-30 International Business Machines Corporation Method and apparatus for biasing cache LRU for prefetched instructions/data based upon evaluation of speculative conditions
JP2902976B2 (ja) * 1995-06-19 1999-06-07 株式会社東芝 キャッシュフラッシュ装置
EP0752645B1 (de) 1995-07-07 2017-11-22 Oracle America, Inc. Abstimmbare Softwaresteuerung von Pufferspeichern einer Harvard-Architektur mittels Vorausladebefehlen
EP0752644A3 (de) * 1995-07-07 2001-08-22 Sun Microsystems, Inc. Speicherverwaltungseinheit zur Vorauswahlsteuerung
US5751811A (en) * 1995-08-30 1998-05-12 Magnotti; Joseph C. 32N +D bit key encryption-decryption system using chaos
US5765190A (en) * 1996-04-12 1998-06-09 Motorola Inc. Cache memory in a data processing system
US6192449B1 (en) 1996-04-12 2001-02-20 Motorola, Inc. Apparatus and method for optimizing performance of a cache memory in a data processing system
US5964863A (en) * 1996-04-15 1999-10-12 Motorola, Inc. Method and apparatus for providing pipe fullness information external to a data processing system
US5835946A (en) * 1996-04-18 1998-11-10 International Business Machines Corporation High performance implementation of the load reserve instruction in a superscalar microprocessor that supports multi-level cache organizations
DE19711322A1 (de) * 1997-03-18 1998-02-26 Siemens Ag Schaltungsanordnung mit einem Prozessor
US5943684A (en) * 1997-04-14 1999-08-24 International Business Machines Corporation Method and system of providing a cache-coherency protocol for maintaining cache coherency within a multiprocessor data-processing system
US6202130B1 (en) 1998-04-17 2001-03-13 Motorola, Inc. Data processing system for processing vector data and method therefor
US6240490B1 (en) 1998-07-20 2001-05-29 International Business Machines Corporation Comprehensive multilevel cache preloading mechanism in a multiprocessing simulation environment
US6978357B1 (en) * 1998-07-24 2005-12-20 Intel Corporation Method and apparatus for performing cache segment flush and cache segment invalidation operations
EP1059586B1 (de) * 1999-06-09 2004-09-08 Texas Instruments Incorporated Verteilter Speicher mit programmierbarer Grösse
US6725341B1 (en) * 2000-06-28 2004-04-20 Intel Corporation Cache line pre-load and pre-own based on cache coherence speculation
JP3973129B2 (ja) * 2000-07-19 2007-09-12 株式会社日立製作所 キャッシュメモリ装置及びそれを用いた中央演算処理装置
US7420929B1 (en) 2002-07-02 2008-09-02 Juniper Networks, Inc. Adaptive network flow analysis
US7251215B1 (en) 2002-08-26 2007-07-31 Juniper Networks, Inc. Adaptive network router
US7062610B2 (en) * 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
US7155572B2 (en) * 2003-01-27 2006-12-26 Advanced Micro Devices, Inc. Method and apparatus for injecting write data into a cache
US7334102B1 (en) 2003-05-09 2008-02-19 Advanced Micro Devices, Inc. Apparatus and method for balanced spinlock support in NUMA systems
US7177985B1 (en) * 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7194582B1 (en) 2003-05-30 2007-03-20 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
KR100801814B1 (ko) * 2003-11-18 2008-02-11 마쯔시다덴기산교 가부시키가이샤 캐시 메모리 및 그 제어 방법
US9032095B1 (en) 2004-01-06 2015-05-12 Juniper Networks, Inc. Routing device having multiple logical routers
US20070204107A1 (en) * 2004-02-24 2007-08-30 Analog Devices, Inc. Cache memory background preprocessing
JP4246672B2 (ja) 2004-06-03 2009-04-02 株式会社リコー 画像形成装置および画像形成装置制御方法
US8112584B1 (en) * 2004-06-28 2012-02-07 Cisco Technology, Inc Storage controller performing a set of multiple operations on cached data with a no-miss guarantee until all of the operations are complete
US7546635B1 (en) 2004-08-11 2009-06-09 Juniper Networks, Inc. Stateful firewall protection for control plane traffic within a network device
EP1868101B1 (de) * 2005-04-08 2009-12-23 Panasonic Corporation Cache-speichersystem und steuerverfahren dafür
US20060277396A1 (en) * 2005-06-06 2006-12-07 Renno Erik K Memory operations in microprocessors with multiple execution modes and register files
US7376807B2 (en) * 2006-02-23 2008-05-20 Freescale Semiconductor, Inc. Data processing system having address translation bypass and method therefor
US7401201B2 (en) * 2006-04-28 2008-07-15 Freescale Semiconductor, Inc. Processor and method for altering address translation
US7809827B1 (en) 2006-05-12 2010-10-05 Juniper Networks, Inc. Network device having service card for lawful intercept and monitoring of packet flows
US7633944B1 (en) 2006-05-12 2009-12-15 Juniper Networks, Inc. Managing timeouts for dynamic flow capture and monitoring of packet flows
US7555605B2 (en) * 2006-09-28 2009-06-30 Freescale Semiconductor, Inc. Data processing system having cache memory debugging support and method therefor
US7831800B2 (en) * 2007-05-17 2010-11-09 Globalfoundries Inc. Technique for prefetching data based on a stride pattern
US7882309B2 (en) * 2007-07-26 2011-02-01 Globalfoundries Inc. Method and apparatus for handling excess data during memory access
JP4576568B2 (ja) * 2007-12-03 2010-11-10 Necカシオモバイルコミュニケーションズ株式会社 ヒンジ構造、及び折り畳み式電子機器
US7984273B2 (en) * 2007-12-31 2011-07-19 Intel Corporation System and method for using a mask register to track progress of gathering elements from memory
US8667226B2 (en) 2008-03-24 2014-03-04 Freescale Semiconductor, Inc. Selective interconnect transaction control for cache coherency maintenance
TW201015319A (en) * 2008-09-17 2010-04-16 Panasonic Corp Cache memory, memory system, data copying method and data rewriting method
US8369345B1 (en) 2009-11-13 2013-02-05 Juniper Networks, Inc. Multi-router system having shared network interfaces
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US8413132B2 (en) * 2010-09-13 2013-04-02 Samsung Electronics Co., Ltd. Techniques for resolving read-after-write (RAW) conflicts using backup area
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
WO2016012833A1 (en) * 2014-07-21 2016-01-28 Elliptic Technologies Inc. Pre-loading cache lines
US20160077945A1 (en) * 2014-09-11 2016-03-17 Netapp, Inc. Storage system statistical data storage and analysis
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9767041B2 (en) * 2015-05-26 2017-09-19 Intel Corporation Managing sectored cache
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US20180074970A1 (en) * 2016-09-09 2018-03-15 Sap Se Cache-Efficient Fragmentation of Data Structures
US10776118B2 (en) * 2016-09-09 2020-09-15 International Business Machines Corporation Index based memory access using single instruction multiple data unit
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10846253B2 (en) 2017-12-21 2020-11-24 Advanced Micro Devices, Inc. Dynamic page state aware scheduling of read/write burst transactions
FR3102868B1 (fr) 2019-11-04 2021-11-12 Idemia Identity & Security France Procédé pour exécuter une transaction

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3858182A (en) * 1972-10-10 1974-12-31 Digital Equipment Corp Computer program protection means
WO1984002799A1 (en) * 1982-12-30 1984-07-19 Ibm A hierarchical memory system including separate cache memories for storing data and instructions
US4713755A (en) * 1985-06-28 1987-12-15 Hewlett-Packard Company Cache memory consistency control with explicit software instructions
US5148528A (en) * 1989-02-03 1992-09-15 Digital Equipment Corporation Method and apparatus for simultaneously decoding three operands in a variable length instruction when one of the operands is also of variable length
US5255378A (en) * 1989-04-05 1993-10-19 Intel Corporation Method of transferring burst data in a microprocessor
US5067078A (en) * 1989-04-17 1991-11-19 Motorola, Inc. Cache which provides status information

Also Published As

Publication number Publication date
DE69331448D1 (de) 2002-02-14
KR100242484B1 (ko) 2000-02-01
EP0838762A2 (de) 1998-04-29
JPH0612327A (ja) 1994-01-21
DE69331448T2 (de) 2002-06-20
EP1286269A2 (de) 2003-02-26
EP1286269A3 (de) 2009-03-11
EP0557884B1 (de) 1999-09-22
US5375216A (en) 1994-12-20
EP0838762B1 (de) 2002-01-09
EP0557884A1 (de) 1993-09-01
EP0895163A1 (de) 1999-02-03
DE69332663D1 (de) 2003-02-27
KR930018378A (ko) 1993-09-21
DE69326491D1 (de) 1999-10-28
EP0895163B1 (de) 2003-01-22
EP0838762A3 (de) 1998-07-01
JP3285644B2 (ja) 2002-05-27

Similar Documents

Publication Publication Date Title
DE69332663T2 (de) Datenprozessor mit einem Cachespeicher
DE69715328T2 (de) System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen
DE69929936T2 (de) Verfahren und Vorrichtung zum Abrufen von nicht-angrenzenden Befehlen in einem Datenverarbeitungssystem
DE69620702T2 (de) Prozessor mit vom Kompilierer zugewiesener Zwischenspeicherung variabler Länge
DE69130858T2 (de) Überlappende Serienverarbeitung
DE68927172T2 (de) Multiprozessorsystem mit cache-speichern
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE3588009T2 (de) Vorrichtung und Verfahren zum Rekonfigurieren eines Speichers in einer Datenverarbeitungsanordnung.
DE69031433T2 (de) Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher
DE69323790T2 (de) Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
DE69432133T2 (de) Datenprozessor mit Cache-Speicher
DE69612991T2 (de) System zur bearbeitung von selbstmodifizierendem kode
DE3751474T2 (de) Verzweigungsstrom-Koprozessor.
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE3751426T2 (de) Busschnittstellenschaltung für digitalen Datenprozessor.
DE3853759T2 (de) Datenprozessor mit zwei Betriebsmoden.
DE3854369T2 (de) Zentralprozessoreinheit für digitale datenverarbeitungsanordnung mit cache-speicherverwaltungsvorrichtung.
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE69023568T2 (de) Cache-Speicheranordnung.
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE68925470T2 (de) Verfahren zum Abrufen von potentiell ungültigen Daten in einem Mehrrechnersystem
DE69523690T2 (de) Mikroprozessor mit Registerspeicher
DE10297166T5 (de) Mechanismus zur Interrupt-Abwicklung in Computersystemen, welche die gleichzeitige Ausführung mehrerer Threads unterstützen
DE69507975T2 (de) Verarbeitungssystem und -verfahren

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: FREESCALE SEMICONDUCTOR, INC., AUSTIN, TEX., US

R071 Expiry of right

Ref document number: 895163

Country of ref document: EP