DE19983745B9 - Verwendung von Seitenetikettregistern um einen Zustand von physikalischen Seiten in einer Speichervorrichtung zu verfolgen - Google Patents

Verwendung von Seitenetikettregistern um einen Zustand von physikalischen Seiten in einer Speichervorrichtung zu verfolgen Download PDF

Info

Publication number
DE19983745B9
DE19983745B9 DE19983745A DE19983745A DE19983745B9 DE 19983745 B9 DE19983745 B9 DE 19983745B9 DE 19983745 A DE19983745 A DE 19983745A DE 19983745 A DE19983745 A DE 19983745A DE 19983745 B9 DE19983745 B9 DE 19983745B9
Authority
DE
Germany
Prior art keywords
page
memory
bank
command
requested
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
DE19983745A
Other languages
English (en)
Other versions
DE19983745T1 (de
DE19983745B3 (de
Inventor
Henry Stracovsky
Piotr Szabelski
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE19983745B3 publication Critical patent/DE19983745B3/de
Application granted granted Critical
Publication of DE19983745B9 publication Critical patent/DE19983745B9/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1621Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison

Abstract

Ein Verfahren zum Beschleunigen eines Speicherzugriffs einer Speicherseite, die in einer Speicherbank in einem Mehrbanktypspeicher (908) enthalten ist, durch eine Speichersteuerung (904) ist beschrieben. Eine ankommende Systemadreßanforderung wird von der Speichersteuerung (904) empfangen, die eine angeforderte Bankzahl und eine angeforderte Seitenzahl umfaßt. Eine Seitenregisterzahl entsprechend der angeforderten Bank wird dann lokalisiert, wonach die gespeicherte Seitenadresse, die in dem lokalisierten Seitenregister enthalten ist, mit der angeforderten Seitenadresse verglichen wird. Auf die angeforderte Seite in der Speicherbank entsprechend der angeforderten Bankzahl wird dann zugegriffen, wenn die gespeicherte Seitenadresse mit der angeforderten Seitenadresse für die angeforderte Speicherbank übereinstimmt.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich allgemein auf Rechensysteme. Insbesondere bezieht sich die vorliegende Erfindung auf ein Liefern eines Zugriffs auf gemeinschaftlich verwendete Ressourcen bei einem Rechensystem, wie z. B. Mehrprozessorrechensystemen und dergleichen, und spezieller auf Vorrichtungen und Verfahren zum Liefern eines Universalzugriffs auf gemeinschaftlich verwendete Ressourcen.
  • HINTERGRUND DER ERFINDUNG
  • Bei dem Basisrechensystem arbeitet eine zentrale Verarbeitungseinheit, die CPU, gemäß einem vorbestimmten Programm oder Satz von Instruktionen, die in einem zugeordneten Speicher gespeichert sind. Zusätzlich zu dem gespeicherten Instruktionssatz oder -Programm, unter dem der Prozessor arbeitet, wird Speicherplatz entweder in dem Prozessorspeicher oder in einem zugeordneten zusätzlichen Speicher vorgesehen, um die Manipulation von Informationen durch den Zentralprozessor während des Verarbeitens zu erleichtern. Der zusätzliche Speicher sorgt für die Speicherung von Informationen, die von dem Prozessor erzeugt werden, als auch für die Speicherung von Informationen auf einer temporären oder ”Notizblockspeicher”-Basis, die der Prozessor verwendet, um das Programm auszuführen. Zusätzlich schafft der zugeordnete Speicher Stellen, an denen die Ausgangsinformationen des Prozessorbetriebsinstruktionssatzes plaziert werden, um für das/die Ausgangsgerät/e verfügbar zu sein.
  • Bei Systemen, in denen sich viele Komponenten (Prozessoren, Festplatte usw.) einen gemeinsamen Bus teilen müssen, um auf einen vorhandenen Speicher zuzugreifen, gibt es eine hohe Wahrscheinlichkeit von Konflikten beim Speicherzugriff. Vor allem in dem Fall von Mehrprozessorrechensystemen und dergleichen, bei denen Systeme, die unterschiedliche Prozessoren verwenden, gleichzeitig in Betrieb sind, wird ein Zugriff auf einen Speicher oder andere gemeinschaftlich verwendete Ressourcen komplex. Da es wahrscheinlich ist, daß jeder der Prozessoren oder Prozessorsysteme gleichzeitig Zugriff auf den gleichen Speicher benötigt, wird ein Konflikt zwischen den Prozessoren im allgemeinen unvermeidbar sein. Im wesentlichen führt bei einem Mehrprozessorrechensystem der Betrieb von zwei oder mehr Prozessoren oder Prozessorsystemen in periodischen Abständen zu einer Überschneidung der Speicherbefehle bezüglich eines gemeinsamen Speichers oder einer anderen gemeinschaftlich verwendeten Ressource.
  • Herkömmliche Ansätze, das Problem von in Konflikt stehenden Speicherzugriffsanforderungen auf einen gemeinschaftlich verwendeten Speicher zu lösen, umfassen bei einem Fall eine komplette Redundanz der Speicher, die für jeden der Prozessoren verwendet werden, und eine Trennung der Prozessorsysteme. Dieser Ansatz, das Problem von in Konflikt stehenden Speicherzugriffsanforderungen zu lösen, verhindert jedoch oft den vorgesehenen Vorteil des Mehrprozessorsystems. Derartige Mehrprozessorsysteme sind am effizientesten, wenn sie auf eine Weise betrieben werden, um parallele Rechenoperationen bei den gleichen Daten zu liefern, bei denen ein Prozessor die Operation des anderen unterstützt. Herkömmlicherweise können derartige Prozessorsysteme entweder im Time-Sharing-Betrieb arbeiten, wobei die Prozessoren um den Zugriff auf eine gemeinschaftlich verwendete Ressource, wie z. B. einen Speicher, konkurrieren, oder die Prozessorsysteme können mit Dualports versehen sein, wobei jeder Prozessor seinen eigenen Speicherbus aufweist, wobei z. B. einer in eine einer in eine Warteschlange gestellt wird, während dem anderen der Zugriff ermöglicht wird.
  • Verschiedene Ansätze wurden verwendet, um die oben beschriebenen Konfliktprobleme zu vermeiden. Bei einem Ansatz wird die Vermeidung von Konflikten durch sequentielles Betreiben der Prozessoren oder einen Time-Sharing-Betrieb der Prozessoren erreicht. Auf diese Weise „wechseln” sich die Prozessoren einfach beim Zugreifen auf die gemeinschaftlich verwendete Ressource „ab”, um einen Konflikt zu vermeiden. Derartige Systeme, die häufig verwendet werden, umfassen ein „Ringweiterreich-” oder „Token-Systeme”, bei denen die potentiell in Konflikt stehenden Prozessoren einfach durch das System gemäß einer vorbestimmten Sequenz abgefragt werden, ähnlich wie bei einem Weiterreichen eines Rings bei einer Gruppe von Benutzern.
  • Leider bürdet die Verwendung von Sequenzprozessorzugriffsmethodiken eine wesentliche Einschränkung auf den Betrieb des Gesamtrechensystems auf. Diese Einschränkung resultiert aus der Tatsache, daß eine wesentliche Zeit von dem System beim Abfragen der konkurrierenden Prozessoren verwendet wird. Zusätzlich wird bei dem Fall, bei dem ein einzelner Prozessor arbeitet und Zugriff auf den gemeinschaftlich verwendeten Speicher benötigt, z. B. eine Verzögerung zwischen den Prozessorzugriffen auf die gemeinschaftlich verwendete Ressource erzeugt, die jedem Speicherzyklus folgt, wenn das System durch die Sequenz schreitet.
  • Ein weiterer herkömmlicher Ansatz zur Konfliktvermeidung verläßt sich auf ein Festlegen von Prioritäten unter den Prozessoren bei einem Rechensystem. Eine derartige Anordnung sorgt dafür, daß jedem Prozessor eine Priorität mit der Hierarchie der Systembedeutung zugeteilt ist. Die Speichersteuerung verschafft einfach dem Prozessor mit der höchsten Priorität Zugriff, jedesmal, wenn ein Konflikt auftritt. Bei einem Zwei-Prozessor-System z. B. greifen ein erster und ein zweiter Prozessor auf einen gemeinschaftlich verwendeten Speicher zu, der typischerweise eine Speichervorrichtung des Typs des dynamischen Direktzugriffsspeichers (DRAM) ist, die ein periodisches Auffrischen der gespeicherten beibehaltenen Speicherdaten erfordert. Allgemein wird der DRAM-Typ-Speicher durch ein separates unabhängiges Auffrischungssystem aufgefrischt. Bei einem derartigen Mehrprozessorsystem konkurrieren sowohl die Prozessoren als auch das Auffrischungssystem um einen Zugriff auf den gemeinsamen Speicher. Eine Systemspeichersteuerung wird Konflikte der Speicherzugriffsanforderungen oder Befehle verarbeiten, wie durch die verschiedenen Prioritäten, die den Prozessoren und dem Auffrischungssystem zugeteilt sind, bestimmt ist. Während derartige Systeme Konflikte lösen und etwas effizienter sind als reine Sequenzkonfliktvermeidungssysteme, leiden sie dennoch an einem Mangel von Flexibilität.
  • Ein weiterer Ansatz der Konfliktauflösung schließt Entscheidungsfindungsfähigkeiten ein, die in der Speichersteuerung enthalten sind. Leider entsteht, weil die Entscheidungsfindungsabschnitte der Speichersteuerung unter der Steuerung und der Zeitgebung eines Taktsystems arbeiten, ein Problem dahingehend, daß eine wesentliche Zeit zum Durchführen der tatsächlichen Entscheidungsfindung verwendet wird, bevor die Speichersteuerung Zugriff auf den gemeinsamen Speicher erteilen kann.
  • Leider beseitigt dieses Problem des Durchführens der tatsächlichen Entscheidungsfindung im wesentlichen die Fähigkeit von herkömmlichen Speichersteuerungen, die Zugriff auf Speichersysteme des Mehrbanktyps erteilen. Bei Speichersystemen des Mehrbanktyps ist der tatsächliche Speicherkern in bestimmte Regionen, oder Bänke, gegliedert, in denen Daten, die wiedergewonnen werden sollen, gespeichert werden. Obwohl ein schnellerer und effizienterer Speicherzugriff geschaffen wird, verlangsamt die Komplexität, die von herkömmlichen Speichersteuerungen beim Handhaben einer Mehrbankspeichervorrichtung benötigt wird, die Gesamtzugriffszeit des Systems als Ganzes beträchtlich.
  • Angesichts des Vorausgegangenen sollte es offensichtlich sein, daß ein Verfahren zum Beschleunigen eines Speicherzugriffs, durch eine Speichersteuerung, einer Speicherseite, die in einer Speicherbank in einem Mehrbanktypspeicher enthalten ist, erwünscht ist.
  • Aus der WO 98/19248 A1 ist ein SDRAM-Speichersystem bekannt, das eine Steuerung aufweist, die konfiguriert ist, um die Reihenfolge, in der SDRAM-Zugriffe einer Mehrzahl von Komponenten erteilt werden, zu steuern. Hierbei können die Datenquelle, die Anfangsadresse der Daten, die Größe eines Zugriffs und die Richtung eines Zugriffs in Kombination mit Informationen über momentan anhängige Anforderungen in einer gemeinsam verwendeten Speicher-Pipeline verwendet werden, um eine nächste optimale Anforderung entsprechend den Parametern der speziellen Implementierung auszuwählen.
  • Aus der JP 08255107 A ist eine Anzeigesteuerung bekannt, die eine Speichersteuerschaltung aufweist, die einen synchronen DRAM steuert. Eine Adresssteuerschaltung ist vorgesehen, die einen Seitentreffer-Erfassungsmechanismus aufweist. Der Speicher umfasst zwei Speicherbänke.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, Verfahren zu schaffen, die einen beschleunigten Speicherzugriff ermöglichen.
  • Diese Aufgabe wird durch Verfahren gemäß den Ansprüchen 1 und 7 gelöst.
  • Ein weiteres Verständnis der Natur und der Vorteile der vorliegenden Erfindung kann bezugnehmend auf die verbleibenden Abschnitte der Spezifizierung und die Zeichnungen realisiert werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird beispielhaft, und nicht einschränkend, in den Figuren der beiliegenden Zeichnungen erläutert, bei denen gleiche Bezugszeichen sich auf gleiche Elemente beziehen:
  • 1A zeigt eine breite Implementierung einer Universalsteuerung gemäß einem Ausführungsbeispiel der Erfindung;
  • 1B zeigt eine bestimmte Implementierung der Universalsteuerung aus 1A;
  • 1C zeigt eine Adreßraumsteuerung, die mit der Universalsteuerung gekoppelt ist, gemäß einem Ausführungsbeispiel der Erfindung;
  • 1D zeigt eine bestimmte Implementierung der Adreßraumsteuerung aus 10;
  • 1E zeigt eine exemplarische Anforderung/Antwort-ID-Zahl gemäß einem Ausführungsbeispiel der Erfindung;
  • 2A zeigt einen allgemeinen Universalbefehl gemäß einem Ausführungsbeispiel der Erfindung;
  • 2B zeigt einen bestimmten Universalbefehl der Art, die in 2A gezeigt ist, der geeignet zum Anfordern eines Speicherseitenlesebefehls ist;
  • 2C zeigt ein Beispiel eines Sequenzbefehls, der durch Liefern von geeigneten Zeitgebungsintervallen zwischen den Befehlskomponenten des exemplarischen Befehls aus 2B gebildet ist;
  • 3 zeigt ein Ressourcenetikett gemäß einem Ausführungsbeispiel der Erfindung;
  • 4 zeigt ein Flußdiagramm, das ein Verfahren für eine Universalsteuerung detailliert zeigt, um auf eine gemeinschaftlich verwendete Ressource gemäß einem Ausführungsbeispiel der Erfindung zuzugreifen;
  • 5 zeigt ein Verfahren, durch das die Universalsteuerung den Zustand der Ressource und die Sequenz von durchzuführenden Operationen gemäß einem Ausführungsbeispiel der Erfindung bestimmt;
  • 6 zeigt ein Verfahren, durch das die Universalsteuerung die geeignete Zeitgebung zwischen der Sequenz und Operationen basierend auf einem Verfahren gemäß einem Ausführungsbeispiel der vorliegenden Erfindung bestimmt;
  • 7A und 7B zeigen eine Seite-Treffer/Fehlschlag-Steuerung gemäß einem Ausführungsbeispiel der Erfindung;
  • 8 zeigt eine Bankzugriffssteuerung gemäß einem Ausführungsbeispiel der Erfindung;
  • 9A ist ein exemplarisches SLDRAM-basierendes Mehrprozessorsystem gemäß einem Ausführungsbeispiel der Erfindung;
  • 9B ist ein Zeitdiagramm, das eine exemplarische SLDRAM-Bus-Transaktion gemäß dem Mehrprozessorsystem aus 9A zeigt;
  • 10 ist ein Blockdiagramm einer Speichersteuerung gemäß einem Ausführungsbeispiel der Erfindung;
  • 11 ist ein Blockdiagramm eines Restriktionsblocks gemäß einem Ausführungsbeispiel der Erfindung;
  • 12 ist ein exemplarisches SLDRAM-Befehlszeitdiagramm gemäß einem Ausführungsbeispiel der Erfindung;
  • 13A bis 13C sind Zeitlinien des Neuordnens von Speicherbefehlen gemäß einem spezifischen Ausführungsbeispiel der vorliegenden Erfindung;
  • 14 ist ein Blockdiagramm eines Abschnitts einer Speichersteuerung, die gemäß einem spezifischen Ausführungsbeispiel der Erfindung entworfen ist;
  • 15 ist ein Blockdiagramm eines Neuordnungsschaltungsaufbaus, der gemäß einem spezifischen Ausführungsbeispiel der Erfindung entworfen ist;
  • 16 ist ein detaillierteres Blockdiagramm des Neuordnungsschaltungsaufbaus aus 15;
  • 17 ist ein Diagramm des Inhalts eines Befehlswarteschlangenelements gemäß einem spezifischen Ausführungsbeispiel der Erfindung;
  • 18 ist ein Blockdiagramm eines spezifischen Ausführungsbeispiels einer Adreßschiebeeinrichtung;
  • 19 ist ein Diagramm des Inhalts eines Datenwarteschlangenelements gemäß einem spezifischen Ausführungsbeispiel der Erfindung;
  • 20 zeigt ein Kollisionserfassungssystem, das eine weitere Implementierung des Kollisionserfassungssystems aus 15 ist;
  • 21 zeigt ein exemplarisches Zeitdiagramm, das darstellt, wie jeder Lesen/Schreiben-Befehl an das Zielgerät eine auf es bezogene Datenpaketübertragung aufweist;
  • 22 zeigt ein Prädiktorsystem, das N Seitenzeitgeber aufweist, die die Zeit zwischen dem letzten ausgegebenen Befehl an die bestimmte Seite und einem vorausgesagten nächsten Zugriff auf diesen Speicher speichern;
  • 23 zeigt eine Gerätesteuerung, die einen Gerätezugriffsprioritätgeber gemäß einem Ausführungsbeispiel der Erfindung aufweist; und
  • 24 zeigt eine Tabelle 4, die das Planungsverfahren zusammenfaßt, das durch einen Restriktionsblock gemäß einem Ausführungsbeispiel der Erfindung durchgeführt wird.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
  • Bei Systemen, bei denen mehrere Geräte, wie z. B. Prozessoren, eine gemeinsame Ressource gemeinschaftlich verwenden, wurden verschiedene Ansätze verwendet, um die Konflikte zu vermeiden, die typischerweise entstehen, wenn mehr als ein Gerät Zugriff auf die gemeinschaftlich verwendete Ressource benötigt. Bei einem Ansatz wird die Vermeidung von Konflikten durch ein sequentielles Bedienen der Prozessoren oder durch eine Zeitschachtelung der Prozessoren erreicht. Auf diese Weise „wechseln” sich die Prozessoren beim Zugreifen auf die gemeinschaftlich verwendete Ressource „ab”, um einen Konflikt zu vermeiden. Derartige Systeme, die häufig verwendet werden, umfassen ein „Ringweiterreich-” oder „Token-Systeme”, bei denen die potentiell in Konflikt stehenden Prozessoren einfach durch das System gemäß einer vorbestimmten Sequenz abgefragt werden, was dem Weiterreichen eines Rings bei einer Gruppe von Benutzern ähnelt.
  • Leider bürden diese Sequenzzugriffsmethodiken eine wesentliche Beschränkung auf den Betrieb des Gesamtrechnersystems auf, da eine wesentliche Menge Zeit beim Abfragen der konkurrierenden Prozessoren verwendet wird.
  • Ein weiterer herkömmlicher Ansatz zur Konfliktvermeidung verläßt sich auf ein Festlegen von Prioritäten unter den Prozessoren bei dem Rechnersystem. Eine derartige Anordnung sorgt dafür, daß jedem Prozessor eine Priorität mit der Hierarchie der Systembedeutung zugeteilt wird. Während derartige Systeme Konflikte lösen und etwas effizienter als reine Sequenzkonfliktvermeidungssysteme sind, leiden sie dennoch an einem Mangel von Flexibilität.
  • Ein weiterer herkömmlicher Ansatz zur Konfliktauflösung schließt eine Entscheidungsfindungslogik ein, die in einem Steuerungstypgerät eingebaut ist. Leider macht es die Komplexität der Entscheidungsfindungslogik nötig, daß eine wesentliche Menge Zeit beim Durchführen der tatsächlichen Entscheidungsfindung verwendet wird, bevor die Steuerung Zugriff auf den gemeinschaftlich verwendeten Speicher erteilen kann.
  • Das Problem, daß eine komplexe Logik das Systemverhalten verlangsamt, wird dahingehend verschlimmert, daß Mehrchip-Modultyp-Speichersysteme einen Speicher aufweisen, der zwischen einer Zahl von verbundenen Speichervorrichtungen zerstreut ist, die jeweils unterschiedliche Betriebscharakteristika aufweisen. Da eine herkömmliche Logik nicht konfiguriert werden kann, um alle der unterschiedlichen Zugriffscharakteristika auszugleichen, die den verschiedenen Speichervorrichtungen eigen sind, stellt das Gesamtsystemverhalten einen Kompromiß dar.
  • Allgemein gesprochen kann die Erfindung, wie sie in 1A gezeigt ist, mittels eines Systems 100 beschrieben werden, das Anforderungsgeräte 102 aufweist, von denen jedes mit einer Universalgerätesteuerung 104 mittels eines Systembusses 106 gekoppelt ist, der geeignet konfiguriert ist, um Zugriff auf jede Zahl und jeden Typ von gemeinschaftlich verwendeten Ressourcen 108 zu liefern. Bei einem Ausführungsbeispiel ist der Systembus 106 mittels einer zugeordneten Systemschnittstellenschicht 110 mit der Universalsteuerung 104 gekoppelt, wohingegen die Universalsteuerung 104 wiederum mittels einer Schnittstelle der gemeinschaftlich verwendeten Ressource 109 mit der gemeinschaftlich verwendeten Ressource 108 gekoppelt ist. Allgemein gesagt ist die Universalsteuerung 104 angeordnet, um einen Zustand der gemeinschaftlich verwendeten Ressource 108 basierend auf der Anforderung der gemeinschaftlich verwendeten Ressource zu bestimmen, die von einem der Anforderungssysteme 102 erzeugt wurde, und basierend auf Betriebscharakteristikparameter der gemeinschaftlich verwendeten Ressource 113 zu bestimmen.
  • In den Situationen, in denen das Anforderungssystem 102 ein Mikroprozessor in einem Mehrprozessorsystem ist, das Zugriff auf die gemeinschaftlich verwendete Ressource 108 als eine Speichervorrichtung 108 benötigt, die mit anderen Prozessoren, die daran gekoppelt sind, gemeinschaftlich verwendet wird, bestimmt die Universalsteuerung 104 eine Sequenz von Operationen, die durchgeführt werden sollen, um die benötigte Ressourcenanforderung zu komplettieren. Wenn die Speichervorrichtung 108 z. B. ein SDRAM ist, umfassen die Operationen üblicherweise ein Vorladen, ein Schließen der Seite, ein Öffnen der Seite und ein Lesen der Seite oder ein Schreiben der Seite.
  • Sobald die bestimmte Sequenz von Operationen bestimmt ist, bestimmt die Universalsteuerung 104 eine geeignete Zeitgebung zwischen der Sequenz von Operationen, um z. B. Datenkollisionen oder andere Arten von Konflikten zu vermeiden. Bei einem bevorzugten Ausführungsbeispiel basiert die Zeitgebung teilweise auf den Betriebscharakteristika der gemeinschaftlich verwendeten Speichervorrichtung, die z. B. in einer Nachschlagtabelle gespeichert sind. Der ordnungsgemäß sequenzierte Zugriffsbefehl wird dann durch die Universalsteuerung ausgegeben, auf den der gemeinschaftlich verwendete Speicher dann antwortet.
  • In der folgenden detaillierten Beschreibung der vorliegenden Erfindung werden zahlreiche spezifische Ausführungsbeispiele fortgeführt, um ein gründliches Verständnis der Erfindung zu liefern. Wie den Fachleuten jedoch ersichtlich sein wird, kann die vorliegende Erfindung jedoch auch ohne diese spezifischen Details oder durch Verwendung anderer Elemente oder Verfahren ausgeführt werden. In anderen Fällen wurden bekannte Verfahren, Abläufe, Komponenten und Schaltungen nicht detailliert beschrieben, um die Aspekte der vorliegenden Erfindung nicht unnötig zu verschleiern.
  • Die Erfindung wird nun mittels einer Speichersteuerung beschrieben werden, die angeordnet ist, um als eine Verbindung zwischen einem Prozessor und einem gemeinschaftlich verwendeten Speicher zu wirken. Es soll jedoch angemerkt werden, daß die Erfindung als eine Universalsteuerung implementiert werden kann, die in der Lage ist, einen Zugriff auf jede Ressource zu steuern, ob diese nun gemeinschaftlich verwendet wird oder nicht. Derartige Ressourcen müssen tatsächlich nicht notwendigerweise Speicher sein, wobei die Erfindung auch verwendet werden könnte, um einen Zugriff auf einen gemeinschaftlich verwendeten Systembus zu steuern, wie z. B., um eine Verkehrssteuerung bei einem Mehrprozessorsystem zu liefern, um so die effektive Systembusbandbreite zu erhöhen, indem die Buszugriffslatenzzeit reduziert wird.
  • Bezugnehmend auf 1B weist ein System 100 ein Anforderungsgerät 102, wie z. B. einen Prozessor, auf, der mittels eines Systembusses 106 mit einer Universalsteuerung 104 gekoppelt ist. Die Steuerung 104 ist wiederum mit einer gemeinschaftlich verwendeten Ressource 108 gekoppelt, wie z. B. einem Speicher 108, der viele Formen aufweisen kann, wie z. B. ein DRAM, SDRAM, SLDRAM, EDO, FPM, RDRAM und dergleichen. Bei dem beschriebenen Ausführungsbeispiel umfaßt der Systembus 106 einen unidirektionalen Adreßbus 106-1, der angeordnet ist, um Speicheradreßanforderungen, die von dem Prozessor 102 erzeugt werden, an die Universalsteuerung 104 zu leiten. Der Systembus 106 umfaßt auch einen unidirektionalen Befehlsbus 106-2, der, in Verbindung mit dem Adreßbus 106-1, einen Befehl trägt, der der Speicheradresse zugeordnet ist. Wenn z. B. der Prozessor 102 eine ausführbare Instruktion benötigt, die an einer bestimmten Speicherstelle in dem Speicher 108 gespeichert ist, gibt der Prozessor eine Lesen-Anforderung (Systembefehl genannt) an den Befehlsbus 106-2 im wesentlichen gleichzeitig mit einer entsprechenden Speicheradreßanforderung (Systemadresse genannt) auf dem Adreßbus 106-1 aus. Sowohl die Systemadresse als auch der Systembefehl wird von einer konfigurierbaren Systemschnittstelle 110, die in der Steuerung 104 enthalten ist, empfangen. Es soll angemerkt sein, daß konfigurierbar bedeuten soll, daß die Systemschnittstelle 110 angeordnet sein kann, um den empfangenen Systembefehl und die -Adresse zu verarbeiten, in welcher Weise und Form dies auch immer von dem Speicher 108 angefordert wird. Auf diese Weise können Daten, die von dem Prozessor 102 benötigt werden, in jeder Zahl und Art von Speichervorrichtungen gespeichert werden, die mit der Steuerung 104 gekoppelt sind, ohne daß der Prozessor 102 kundenspezifische Anforderungen für jede Speichervorrichtung erzeugen muß.
  • Bei dem beschriebenen Ausführungsbeispiel ist die Systemschnittstelle 110 angeordnet, um den empfangenen Systembefehl und die Systemadresse in das umzuwandeln, was ein Universalbefehl 200 genannt wird, wobei ein Beispiel dessen in 2A gezeigt ist. Bei einer Implementierung wird, wenn die gemeinschaftlich verwendete Ressource eine DRAM-Typ-Speichervorrichtung (u. a. SLDRAM, SDRAM, EDO DRAM) ist, der Universalbefehl 200 aus fünf Datenfeldern gebildet, die alle Operationen umfassen, die benötigt werden, um jeden Speicherzugriff auf den Speicher 108 durchzuführen. Derartige Operationen umfassen eine Vorladeoperation, die durch ein Vorladen-Datenfeld 202 identifiziert wird, das verwendet wird, um anzuzeigen, ob eine bestimmte Zeile vorgeladen werden soll oder nicht. Weitere Operationen umfassen ein Aktivierdatenfeld 204, ein Lesen-Datenfeld 206, ein Schreiben-Datenfeld 208 und ein Auffrischen-Datenfeld 210. Es gibt z. B. den Fall, bei dem in dem Speicher 208 eine Speicherseite 1 der Speicherbank 1 gegenwärtig aktiv ist (d. h. offen, nachdem von ihr gelesen oder an sie geschrieben wurde), wobei ein nachfolgender Prozessorbefehl dann verlangt, daß die Daten, die auf einer Seite 2 der Speicherbank 1 gespeichert sind, an den Prozessor 102 gelesen und ausgegeben werden. In diesem Fall muß, um den angeforderten Befehl durch den Prozessor 102 auszuführen, die Seite 1 geschlossen sein (d. h. Seite 1 ist vorgeladen), wobei Seite 2 aktiviert sein muß und wobei, nachdem die Aktivierung komplett ist, die Seite 2 gelesen wird. Deshalb wird der Universalbefehl 212 aus 2B durch den Universalbefehlerzeuger 110 erzeugt, bei dem die Datenfelder 202, 204 und 206 auf „1” eingestellt sind, um „Durchführen der zugeordneten Operation” anzuzeigen, während die Datenfelder 208 und 210 auf „0” eingestellt sind und „die zugeordnete Operation nicht durchführen” (d. h. „NOP”) anzeigen.
  • Bezugnehmend auf 1B verändert sich, da das Zugreifen auf den Speicher 108 insofern dynamischer Natur ist, als daß eine Zahl von unterschiedlichen Anforderungsgeräten den Zugriff auf den Speicher 108 gemeinschaftlich verwendet, der Zustand des Speichers 108 ständig. Der Zustand des Speichers bedeutet hier, daß, um eine bestimmte Operation an einer bestimmten Speicherstelle erfolgreich durchzuführen, der Zustand dieser Speicherstelle bekannt sein muß. Wenn z. B. eine bestimmte Speicherseite geschlossen wird, dann muß, um eine Lesen-Operation durchzuführen, diese Speicherseite geöffnet sein. Dafür wird, um den gegenwärtigen Zustand einer bestimmten Adreßstelle sicherzustellen, die aktuellste Operation, die an dieser bestimmten Speicherstelle durchgeführt wurde, mit einem Ressourcenetikett 300, wie in 3 dargestellt, identifiziert. Bei einem Ausführungsbeispiel der Erfindung umfaßt das Ressourcenetikett 300 ein Adreßfeld 302, das verwendet wird, um eine bestimmte Speicheradressenstelle zu identifizieren, ein Zuletzt-Ausgegebener-Befehl-Feld 304, das verwendet wird, um den zuletzt ausgegebenen Befehl für die Adresse zu identifizieren, die in 302 identifiziert wurde, und ein Zeit-des-letzten-Befehls-Datenfeld 306. Ein Ressourcenetikett 308 für eine Speicheradresse ADD5 zeigt z. B. an, daß ein Seitenlesen zu einer Zeit 5ϕ (stellt 5 Systemtaktzyklen dar) ausgegeben wurde, während ein Ressourcenetikett 310 anzeigt, daß für die gleiche Speicheradresse ADD5 ein Seitenschreiben auf der Speicherseite bei ADD5 zu einer Zeit 10ϕ durchgeführt werden soll. Durch Verfolgen des Zustands der Speicheradresse ADD5 weiß die Universalsteuerung 104, daß die Speicherseite bei ADD5 bereits offen ist, weshalb eine Seite-Offen-Operation nicht benötigt wird.
  • Unter Verwendung der Ressourcenzustandsinformationen, die durch die Etiketten 300 geliefert werden, die in einem Ressourcenetikettpuffer 114 gespeichert sind, liefert ein Befehlssequenzer 114, der mit der konfigurierbaren Systemschnittstelle 112 gekoppelt ist, geeignete Zeitintervalle zwischen den Befehlskomponenten 202 bis 210 des Universalbefehls 200, um einen sequenzierten Befehl 220 zu liefern, der in 2C dargestellt ist, und Zeitintervalle t1 und t2 zwischen den Befehlskomponenten 202 bis 204 bzw. 204 bis 206 aufweist. Es soll angemerkt sein, daß, da die Befehlskomponenten 208 und 210 „NOP”-Typ-Felder sind, der sequenzierte Befehl 220 keinen Verweis auf diese Felder umfaßt, und als solches nur eine Zeitperiode benötigt, die im wesentlichen gleich den Taktzyklen, die für die Komponenten 202 bis 206 benötigt werden, plus der Zeitperiode ist, die im wesentlichen gleich t1 + t2 ist. Auf diese Weise ist der Befehlssequenzer 114 in der Lage, einen optimalen Befehls- und Datenfluß zwischen dem Prozessor 102 und dem Speicher 108 zu liefern.
  • Bei einem anderen Ausführungsbeispiel der Erfindung kann, wenn die gemeinschaftlich verwendete Ressource 108 eine Mehrbanktypspeichervorrichtung ist, wie z. B. ein SDRAM, oder wenn die gemeinschaftlich verwendete Ressource eine Mehrgerätespeichervorrichtung ist, wie z. B. ein Mehrchipmodul, der Ressourcenetikettpuffer 114 z. B. Ressourcenetiketten für alle geöffneten Seiten in einer bestimmten Bank oder einem bestimmten Gerät speichern. Bei einer Implementierung erfaßt eine Komparatoreinheit (nicht gezeigt) eine Bankzahl oder einen Geräteidentifizierer in der Systemadresse und vergleicht die Seitenadresse und die Systemadresse mit dem Inhalt des Etikettpuffers 114. In dem Fall, bei dem der Vergleich kein „Treffer” ist (d. h. die Adressen stimmen nicht überein), muß die Universalsteuerung 104 die alte Seite unter Verwendung der Adresse von dem Etikettpuffer 114 schließen und eine neue Seite basierend auf dem neuen Systembefehl öffnen.
  • In den Fällen, bei denen eine Zahl von unterschiedlichen Geräten von der Universalsteuerung 104 bedient wird, wäre es wünschenswert, in der Lage zu sein, die Betriebsparameter, die nur dem bestimmten Gerät zugeordnet sind, dem die ankommende Systemadresse zugeordnet ist, auszuwählen. In Situationen, bei denen die Universalsteuerung eine Zahl von unterschiedlichen Geräten bedient, ist eine Adreßraumsteuerung 120, die mit der Universalsteuerung 104 gekoppelt ist, bezugnehmend auf 1C gezeigt. Bei dem beschriebenen Ausführungsbeispiel sorgt die Adreßraumsteuerung 120 für die Fähigkeit des Auswählens nur der für das eine Gerät gerätespezifischen Parameter, das der ankommenden Systemadresse zugeordnet ist. Bei einer bestimmten Implementierung, die in 1D gezeigt ist, umfaßt die Adreßraumsteuerung 120 eine Komparatoreinheit 122, die angeordnet ist, um die ankommende Systemadresse mit dem Inhalt eines Regionadreßbereichspuffers 124 zu vergleichen, der identifiziert, welchem der Geräte (oder in diesem Fall welchen Speicherregionen) die ankommende Adresse zugeordnet ist. Sobald das bestimmte Gerät oder die Region identifiziert ist, wird eines einer Gruppe von Geräteparameterregistern 126 und 128 (wobei jedes mit dem Bereichspuffer 124 gekoppelt ist und die gerätespezifischen Parameter für ein bestimmtes Gerät umfaßt) ausgewählt. Das ausgewählte Geräteparameterregister liefert dann die spezifischen Betriebsparameter, die dem Gerät entsprechend der Systemadresse zugeordnet sind. Bei einigen Ausführungsbeispielen wird der Inhalt des ausgewählten Geräteparameterregisters an die LUT 118 eingegeben. Auf diese Weise kann jede Zahl von unterschiedlichen Geräten von der Universalsteuerung 104 bedient werden, so daß die bestimmten Betriebsparameter jedes Geräts identifiziert werden und verwendet werden, um den entsprechenden Universalbefehl optimal zu sequenzieren.
  • Es soll auch angemerkt sein, daß in einigen Fällen eines der Geräte, das mit der Universalsteuerung gekoppelt ist, besetzt ist und keine neuen Befehle annehmen kann, wobei es vorteilhaft wäre, in der Lage zu sein, irgend einen anderen der Befehle auszuwählen, die in einer Befehlswarteschlange warten. Bei einigen Ausführungsbeispielen der Erfindung weist jede Antwort durch das Gerät und die Anforderungen durch die Universalsteuerung eine zugeordnete ID-Zahl 150 auf, die bei dem beschriebenen Ausführungsbeispiel ein Datenwort mit einer Länge von 5 Bits ist, wie in 1E dargestellt. Die ID-Zahl 150 ist konfiguriert, um ein Gruppenselektorfeld 152 mit 2 Bits Länge und ein Anforderungszahlfeld 153 mit 3 Bits Länge zu umfassen. Der Gruppenselektor (GS) bestimmt, zu welcher Gruppe die bestimmte Systemanforderung gehört (z. B. zu dem Prozessor), während die Anforderungszahl (RN) die Zahl von Anforderungen oder Antworten darstellt, wobei die zugeordnete Gruppe derart durch das Gruppenselektorfeld 152 identifiziert wird, daß nachfolgende Anforderungen von dem gleichen Sende/Empfangsgerät nachfolgende Anforderungszahlen aufweisen.
  • Bei einigen Ausführungsbeispielen umfaßt ein Gruppenprioritätsselektorregister 154 derart Prioritätswerte für jede der Antwort- und Anforderungsgruppe, daß eine Antwort- oder Anforderungsgruppe mit einer höheren Priorität Vorrang vor der mit einer niedrigeren Priorität hat. Auf diese Weise kann eine Antwort oder Anforderung mit einer höheren Priorität die mit einer niedrigeren Priorität umgehen, wenn die Anforderung oder Antwort mit der niedrigeren Priorität nicht in dem nächsten Taktzyklus verarbeitet werden kann. Um das zu verhindern, was als Permanent-Aktivitäts-Blockade bezeichnet wird, enthält ein Permanent-Aktivitäts-Blockade-Zählregister 156 Informationen über die Zahl von nachfolgenden Anforderungen (oder Antworten), wobei die höhere Priorität Anforderungen (oder Antworten) mit einer niedrigeren Priorität umgehen kann. Auf diese Weise darf keine Anforderung (oder Antwort) mit niedriger Priorität für eine wesentliche Zahl von Taktzyklen verkümmern.
  • Es soll angemerkt sein, daß, um die Steuerung sowohl des Befehls- als auch des Datenflusses zu optimieren, es zu erkennen ist, daß jede gemeinschaftlich verwendete Ressource ihr zugeordnet einen Satz von Betriebscharakteristika (wie z. B. Zugriffszeit, CAS-Latenzzeit in dem Fall von DRAM-Typ-Geräten) aufweist. In den Fällen, bei denen mehr als eine gemeinschaftlich verwendete Ressource von der Universalsteuerung 104 bedient wird, weist jede der gemeinschaftlich verwendeten Ressourcen einen unterschiedlichen Satz von Betriebscharakteristika auf, die in einigen Ausführungsbeispielen in einer Nachschlagtabelle (LUT) 118 gespeichert sind, die mit dem Befehlssequenzer 116 gekoppelt ist. Der Befehlssequenzer 116 verwendet die Informationen, die durch die LUT 118 bereitgestellt werden, in Verbindung mit den Ressourcenetiketten, die in dem Ressourcenetikettpuffer 114 gespeichert sind, um die Befehlskomponenten 202 bis 210 ordnungsgemäß zu sequenzieren, um den sequenzierten Befehl 220 zu bilden. Dies gilt insbesondere für Fälle, bei denen die gemeinschaftlich verwendete Ressource in Wirklichkeit eine Gruppe von Speichervorrichtungen, wie z. B. ein Mehrchipmodul, ist, bei denen jedes Gerät wesentlich unterschiedliche Betriebscharakteristik aufweisen kann.
  • Bezugnehmend auf 4 ist ein Flußdiagramm gezeigt, das ein Verfahren 400 für eine Universalsteuerung zeigt, um auf eine gemeinschaftlich verwendete Ressource gemäß einem Ausführungsbeispiel der Erfindung zuzugreifen. Das Verfahren 400 beginnt bei 420, indem das System einen Zugriffsbefehl für die gemeinschaftlich verwendete Ressource erzeugt. Wenn die gemeinschaftlich verwendete Ressource eine DRAM-basierende Speichervorrichtung ist, umfassen derartige Operationen ein Vorladen, Auffrischen, Schließen, Öffnen, Lesen und Schreiben. Ein Prozessor fordert z. B. eine Speicherseite an, die in einem gemeinschaftlich verwendeten Speicher gespeichert ist, indem ein Systembefehl (z. B. Seitenlesen) und eine zugeordnete Systemadresse erzeugt wird, die die Stelle in dem Speicher anzeigt, an der die angeforderte Seite gespeichert ist. Bei einem bevorzugten Ausführungsbeispiel wird der Zustand der Ressource bei 404 z. B. unter Verwendung der Ressourcenetiketten bestimmt, die aktiven Speicherstellen in dem gemeinschaftlich verwendeten Speicher zugeordnet sind. Als nächstes wird bei 406 eine Entscheidung aus einer Sequenz von Operationen getroffen, die benötigt werden, um die benötigte Anforderung auf die gemeinschaftlich verwendete Ressource durchzuführen. Bei 408 erzeugt die Universalsteuerung einen Universalbefehl, der auf der Sequenz der Operationen basiert, die benötigt werden, um die benötigte Anforderung durchzuführen. Um z. B. eine Seite-Lesen-Operation durchzuführen, muß eine vorher offene Seite geschlossen werden, eine neue Seite aktiviert werden und die Lesenoperation durchgeführt werden, wobei dies alles in der einzelnen Universalbefehlsstruktur enthalten ist. Sobald der Universalbefehl von der Universalsteuerung aufgebaut wurde, bestimmt die Universalsteuerung unter Verwendung von Ressourcenetiketten und spezifischen Betriebscharakteristikdaten für die gemeinschaftlich verwendete Ressource dann bei 410 die geeignete Zeitgebung zwischen den verschiedenen Befehlskomponenten des Universalbefehls. Der sequenzierte Befehl wird dann bei 412, bei einigen Ausführungsbeispielen unter Verwendung einer physikalischen Stufe, an die gemeinschaftlich verwendete Ressource ausgegeben. Schließlich antwortet bei 414 die gemeinschaftlich verwendete Ressource auf den sequenzierten Befehl, indem sie z. B. Daten liefert, die an der Stelle gespeichert sind, die durch die Systemadresse angezeigt wird.
  • Bei einem Ausführungsbeispiel der Erfindung bestimmt die Universalsteuerung den Zustand der Ressource (402) und die Sequenz von durchzuführenden Operationen (404) unter Verwendung eines Prozesses 500, der in 5 gezeigt ist. Der Prozeß 500 beginnt bei 502, wo ein Ressourcenpartitionsidentifizierer (d. h. Speicheradreßregister) mit einem Ressourcenidentifizierer (d. h. Ressourcenetikettadreßfeld 202) verglichen wird. Wenn bei 504 bestimmt wird, daß ein „Treffer” aufgetreten ist (d. h., daß die Adresse des neuen Befehls mit dem gegenwärtigen Etikettadreßfeld übereinstimmt), wird der nächste Befehl (Datenoperation) bei 506 ausgegeben. Andererseits wird, wenn die Adresse des neuen Befehls nicht mit dem gegenwärtigen Etikettadreßfeld übereinstimmt (d. h. kein Treffer) bei 508 eine Bestimmung durchgeführt, ob die alte Seite offen ist oder nicht. Wenn die alte Seite offen ist, wird die alte Seite bei 510 geschlossen und die neue Seite bei 512 geöffnet. Wenn jedoch bei 508 die alte Seite nicht offen ist, dann wird die neue Seite bei 512 geöffnet, wobei in beiden Fällen, sobald die neue Seite geöffnet ist, der nächste Befehl (Datenoperation) bei 506 ausgegeben wird.
  • Bei einem Ausführungsbeispiel der Erfindung bestimmt die Universalsteuerung das geeignete Zeitgeben zwischen der Sequenz von Operationen (410) basierend auf einem Verfahren 600, das in 6 gezeigt ist. Das Verfahren 600 beginnt bei 602, wo die Universalsteuerung den ersten Befehl in der neuen Sequenz von Befehlen mit dem letzten Befehl der aktuellsten vergangenen Sequenz von Befehlen für eine bestimmte Ressource vergleicht. Bei 604 bestimmt die Universalsteuerung die Zeitgebungseinschränkungen zwischen den Universalbefehlskomponenten, indem sie die erste Befehlskomponente des neuen Universalbefehls mit der letzten Befehlskomponente des aktuellsten vergangenen Universalbefehls vergleicht. Bei einem Ausführungsbeispiel verwendet die Universalsteuerung eine 2-Index-Nachschlagtabelle (LUT) in der Form eines zweidimensionalen Arrays, das als Tabelle 1 gezeigt ist, wobei eine erste Zeile des Arrays den alten (d. h. den aktuellsten vergangenen) Befehl darstellt und eine erste Spalte den neuen Befehl. Zum Beispiel bezugnehmend auf Tabelle 1 liefert, wenn der alte Befehl ein Seitenlesen war und wenn der neue Befehl ein Seitenschließen ist, der Schnittpunkt des neuen Befehls Seitenschließen und des alten Befehls Seitenlesen (d. h. 5ϕ) die minimal erlaubte Zeitmenge (d. h. minimale physikalische Ausgabezeit) zwischen den beiden Operationen. Typischerweise werden die Informationen, die in einer LUT gespeichert sind, von dem Hersteller der gemeinschaftlich verwendeten Ressource geliefert. Tabelle 1
    Figure 00220001
  • Sobald die physikalischen Beschränkungen der Ressource für eine bestimmte Universalbefehlskomponente bestimmt sind, wird eine Entscheidung bei 606 gemacht, ob zusätzliche Befehlskomponenten in dem Universalbefehl enthalten sind oder nicht. Wenn es keine zusätzlichen Befehlskomponenten gibt, werden der Universalbefehl und die zugeordneten Komponentenzeitspezifizierungen bei 608 gespeichert. Andererseits wird, wenn zusätzliche Befehlskomponenten in dem Universalbefehl enthalten sind, die Steuerung zurück zu 604 geleitet, wo die entsprechenden physikalischen Zeitgebungsbeschränkungen für diese Komponente bestimmt werden.
  • Um jedoch einen Zustand der physikalischen Seiten in dem gemeinschaftlich verwendeten Speicher 108 zu verfolgen, der eine Zahl von Speicherbänken aufweist, würde z. B. eine große Zahl von Ressourcenetiketten eine große Menge Cachespeicher benötigen, der dem Ressourcenetikettpuffer 114 zugeordnet ist. Dies würde das Verhalten der Universalsteuerung 104 verlangsamen, da eine beträchtliche Zeitmenge benötigt würde, um bestimmte Ressourcenetiketten für bestimmte Seiten von Speicher wiederzugewinnen, von denen jede sich an verschiedenen Stellen befinden kann. Bezugnehmend auf 7A ist bei einem Ausführungsbeispiel eine Seite-Treffer/Fehlschlag-Steuerung 702 in der Universalsteuerung 104 enthalten, die angeordnet ist, um die Zahl M von Seitenregistern 704 unter die Zahl N von Speicherbänken in einem Mehrbankspeicher 706 zu reduzieren, da nicht jede Bank ihre Darstellung in den M Seitenregistern 704 hat. Bei der Operation speichert jedes der M Seitenregister 704 Adreß- und Zustandsdaten einer offenen Seite, wobei ein Zufallsseitenregisterzahlerzeuger 708 eine zufällige Ganzzahl kleiner oder gleich M entsprechend dem Seitenregister erzeugt, der durch den Zustand einer offenen Seite ersetzt werden muß. Eine Komparatoreinheit 710 vergleicht eine ankommende Systemadresse mit der Bankzahl und der Seitenadresse aller M Register parallel, wobei es vier mögliche Ergebnisse gibt.
    • 1) Wenn die Komparatoreinheit 710 einen Treffer anzeigt, ist die benötigte Seite der angeforderten Bank offen und bereit für einen Zugriff;
    • 2) wenn die Komparatoreinheit 710 anzeigt, daß es einen Banktreffer und einen Seitenfehlschlag gibt, muß die Universalsteuerung 104 die alte Seite unter Verwendung der Seitenadresse von dem Seitenregister schließen und eine neue Seite unter Verwendung der Seitenadresse von der Systemadresse öffnen;
    • 3) wenn die Komparatoreinheit 710 einen Bank- und einen Seitefehlschlag anzeigt, muß die Universalsteuerung 104 jede alte Seite der Bank schließen, wobei die Zahl durch den Zufallsseitenzahlerzeuger gegeben ist, eine neue Seite unter Verwendung der Systemadresse öffnen und schließlich auf die angeforderte Bank zugreifen; und
    • 4) Bank- und Seitefehlschlag, wobei aber zumindest ein Seitenregister nicht benutzt wird, und wobei dieses Register dann verwendet wird und eine neue Seite geöffnet wird.
  • Bei einigen Ausführungsbeispielen wird der Zufallszahlseitenerzeuger 708 durch zumindest eine Am-Wenigsten-Aktuell-Verwendete-(LRU-)Komparatoreinheit 712, wie in 7B gezeigt, ersetzt, die bestimmt, welche der M Register 704 die längste Zeit nicht verwendet wurde (d. h. am wenigsten aktuell verwendet).
  • Zusätzlich zum Verfolgen der Zustände der physikalischen Seiten in einem Mehrbankspeicher 704 umfaßt eine Bankzugriffssteuerung 800, die in 8 gezeigt ist, N Bankregister 802 entsprechend der Zahl von Speicherbänken N, die in dem Mehrbankspeicher 704 enthalten sind. Das Bankregister 802 umfaßt ein Bankzahlfeld 804, das eine Identifizierungszahl der Bank definiert, für die die Informationen in der zugeordneten Bank gespeichert werden. Das Bankregister 802 umfaßt auch ein Bankstatusfeld 806, das den Zustand einer bestimmten Bank anzeigt, die durch die Bankzahl in dem Bankzahlfeld 804 identifiziert wird. Bei einem bestimmten Ausführungsbeispiel kann das Bankstatusfeld 806 Werte, wie die, die in Tabelle 2 dargestellt sind, annehmen. Tabelle 2
    Bankregisterelemente Beschreibung
    Bankzahl Identifiziert Bank, für die die Informationen im Bankregister gespeichert werden
    Bankstatus Zeigt Status der Bank an: „00” – ungültiger Eintrag „01” – der Bankzählwert wird erniedrigt, bis der Wert 0 erreicht. Wenn der Bankzähler größer als 0 ist, wird ein Zugriff auf diese Bank verboten. „10” – die Bank ist geschlossen. „01” – der Bankzählwert wird erniedrigt, bis er 0 erreicht. Wenn der Bankzähler größer als 0 ist, dann werden Zugriffe auf alle Bänke in dem Speicher verboten.
    Bankzeitgeber Wenn Bankzähler größer als 0 ist, werden die Zugriffe auf Speicher gemäß dem Bankstatuswert verboten.
  • Mit der Entwicklung von hochgeschwindigkeitspaketorientierten Speichern, wie z. B. einem synchronen Verbindungsdynamik-Dirketzugriffsspeicher (SLDRAM), die Busdatengeschwindigkeiten in dem Bereich von 400 bis 800 Mb/s/Pin liefern, erhöhen sich die Probleme, die durch Speicherzugriffskonflikte entstehen, stark. Bezugnehmend auf 9A ist ein exemplarisches SLDRAM-basierendes Mehrprozessorsystem 900 gemäß einem Ausführungsbeispiel der Erfindung gezeigt. Das Mehrprozessorsystem 900 umfaßt Prozessoren 902, die mittels eines Systembusses 906 mit einer Steuerung 904 verbunden sind. Die Universalsteuerung 904 ist wiederum mit einem Synchronverbindungs-DRAM (SLDRAM) 908 und einem SLDRAM 910 mittels eines SLDRAM-Busses verbunden, der aus einem unidirektionalen Befehlsbus 912 und einem bidirektionalen Datenbus 914 besteht. Es soll angemerkt sein, daß, obwohl nur zwei SLDRAM in 9A gezeigt sind, jede Zahl von SLDRAM mit der Universalsteuerung 904 mittels der Busse 912 und 914 verbunden sein kann. In einigen Fällen können die SLDRAM die Form eines gepufferten Moduls einnehmen, das jede geeignete Zahl von SLDRAM umfaßt, wie z. B., für diese Besprechung, den SLDRAM 908. Ein Initialisierungs/Synchronisations-(I/S-)Bus 916, der die Universalsteuerung 904 mit jedem der SLDRAM 908 und 910 verbindet, liefert einen Signalpfad für Initialisierungssignale als auch für Synchronisationssignale, die von der Universalsteuerung 904 erzeugt werden.
  • Bei einem Ausführungsbeispiel der Erfindung werden paketisierte Befehls-, Adreß- und Steuerungsinformationen von der Universalsteuerung 904 selektiv an den SLDRAM 908 und den SLDRAM 910 auf dem Befehlsbus 912 gesendet. Der Datenbus 914 ist angeordnet, um Paket-Schreiben-Daten von der Universalsteuerung 904 zu ausgewählten des SLDRAM 908 und des SLDRAM 910 zu übertragen. Alternativ ist der Datenbus 914 auch konfiguriert, um Paket-Lesen-Daten von ausgewählten des SLDRAM 908 und des SLDRAM 910 zurück zu der Universalsteuerung 904 zu übertragen. Es soll angemerkt sein, daß der Befehlsbus 912 und der Datenbus 914 typischerweise mit der gleichen Geschwindigkeit operieren, z. B. 400 MB/s/p, 600 MB/s/P, 800 MB/p/s usw.
  • Eine Zahl von Steuerungssignalen, die von der Universalsteuerung 904 erzeugt werden und durch den Befehlsbus 912 getragen werden, umfassen z. B. ein differentiales, frei laufendes Taktsignal (CCLK), ein FLAG-Signal, ein Befehlsadreßsignal CA, ein LISTEN-Signal, ein LINKON-Signal und ein RESET-Signal. Typischerweise werden Paketbefehle aus vier aufeinanderfolgenden 10-Bit-Wörtern gebildet, wobei das erste Wort eines Befehls durch eine „1” in dem ersten Bit des FLAG-Signals angezeigt wird. Bei einem bevorzugten Ausführungsbeispiel werden beide Kanten des Differenzfreilauftaktes CCLK von dem SLDRAM 908 und 910 verwendet, um Befehlswörter zwischenzuspeichern. Die SLDRAM 908 und 910 sprechen darauf, daß das LISTEN-Signal HOCH ist, an, indem sie den Befehlsbus 912 hinsichtlich ankommender Befehle überwachen. Alternativ sprechen die SLDRAM 908 und 910 darauf, daß das LISTEN-Signal TIEF ist, an, indem sie einen Stromspar-Standby-Modus betreten. Das LINKON-Signal und die RESET-Signale werden verwendet, um nach Wunsch ausgewählte von SLDRAM 908 und 910 in einen bekannten Zustand herunterzufahren bzw. hochzufahren.
  • Für den Rest der Erörterung wird der SLDRAM 908 jedoch nur mit der vollständigen Kenntnis erörtert werden, daß jede Zahl von SLDRAM mit der Universalsteuerung 904, je nachdem, was für geeignet gehalten wird, verbunden sein kann. Wie oben erklärt, ist ein typisches SLDRAM-Gerät, wie z. B. der SLDRAM 908, hierarchisch durch Speicherbänke, Spalten, Zeilen und Bits als auch in Speicherregionen organisiert. Es ist wichtig anzumerken, daß beobachtet werden kann, daß jeder dieser hierarchischen Pegel tatsächlich unterschiedliche Betriebscharakteristika in bezug auf die anderen aufweisen kann. Derartige Betriebscharakteristika umfassen, sind jedoch nicht ausschließlich, derartige Parameter, wie Speicherzugriffszeit, Chipaktivierungszeit, Datenwiedergewinnungszeit usw. Es soll angemerkt sein, daß die Bänke in dem Mehrbankspeicher typischerweise die gleichen Betriebscharakteristika aufweisen, wohingegen Regionen definiert sind, um unterschiedliche Geräte zu sein, wie z. B. unterschiedliche Speichertypen oder unterschiedliche Speichergruppen, von denen jedes eine unterschiedliche Befehls- und Datenlatenzzeit aufweist. Eine lokale Speichergruppe kann z. B. direkt mit der Speichersteuerung und einer zweiten, nicht lokalen Speichergruppe verbunden sein, die sich auf einer Platine befindet, an der einer Platine befindet, an der eingreifende Treiber die Befehls- und die Datenlatenzzeiten bezüglich der lokalen Speichergruppe erhöhen. In anderen Fällen kann jeder der verschiedenen Speicherchips, die ein Mehrchipmodul bilden werden, als eine unterschiedliche Speicherregion betrachtet werden.
  • Insbesondere bezugnehmend auf das System von 9A ist der SLDRAM 908 ein Mehrchipmodul mit vier Speicherchips, A, B, C und D, wobei auf jedes einzeln von dem Befehlsbus 912, dem Datenbus 914 und dem I/S-Bus 916 zugegriffen werden kann. Da jeder der Speicherchips A bis D unterschiedliche Betriebscharakteristika (typischerweise von dem Hersteller geliefert) aufweisen kann, um Befehls- und Datenpakete optimal abzustimmen, ist die Universalsteuerung 904 in der Lage, die Betriebscharakteristika eines bestimmten Hierarchiepegels und/oder Speicherregionen entsprechend zu verwenden.
  • 9B zeigt beispielhaft ein repräsentatives Zeitdiagramm für eine exemplarische SLDRAM-Bus-Transaktion gemäß dem Mehrprozessorsystem 900, das in 9 gezeigt ist. Während des Betriebs erzeugen die Prozessoren typischerweise Prozessorbefehlspakete, wie z. B. einen Lesen-Befehl 950 und einen Schreiben-Befehl 952, für die der oder die geeigneten Speicherbänke des SLDRAM 908 entsprechend antworten. Typischerweise sind der Lesen-Befehl 950 und der Schreiben-Befehl 952 pipelineartig auf dem Systembus 906 basierend auf den bestimmten Anforderungen des Prozessors 902, von dem sie erzeugt werden, und nicht für ein optimales SLDRAM-Verhalten. Ein Systemtakt CLKsys (nicht gezeigt) liefert die notwendigen Zeitgebungssignale.
  • Für dieses Beispiel erzeugt ein Prozessor 902a den Lesen-Befehl 950, der eine Speicheradresse MA1 aufweist, die sich in dem Speicherchip A des SLDRAM 908 befindet, während ein Prozessor 902b einen Schreiben-Befehl 952 erzeugt, der eine Speicheradresse MA2 aufweist, die sich auch in dem Speicherchip A des SLDRAM 908 befindet. Bei diesem Beispiel wird der Lesen-Befehl 950 an den Systembus 906 ausgegeben, bevor der Schreiben-Befehl 952 ausgegeben wird. Die Universalsteuerung 904 empfängt den Lesen-Befehl 950 zuerst und schreitet fort, den Befehl basierend auf dem Befehl selbst und die Befehlsadresse MA1 unter Verwendung der spezifischen Zieladreßinformationen zu verarbeiten, die in der Universalsteuerung 904 gespeichert sind. Sobald die minimale Ausgabezeit bestimmt ist, erzeugt die Universalsteuerung 904 ein SLDRAM-Befehlspaket LESEN 960 entsprechend dem empfangenen Prozessorbefehl 950 und gibt diesen an den Befehlsbus 912 aus.
  • Allgemein ist das SLDRAM-Befehlspaket als vier 10-Bit-Wörter organisiert, wie in Tabelle 3 dargestellt ist, die einen 64-M-SLDRAM mit vier Bänken, 1.024 Zeilenadressen und 128 Spaltenadressen darstellt. Wie gezeigt, gibt es 3 Bits für die Bankadresse (BNK), 10 Bits für die Zeilenadresse (ROW) und 7 Bits für die Spaltenadresse (COL). Es soll angemerkt sein, daß viele andere Organisationen und Dichten möglich sind und in dem beschriebenen 40-Bit-Format untergebracht werden können, als auch in jedem anderen Format, das für geeignet gehalten wird. Während des Hochfahrens organisiert die Universalsteuerung 904 das Befehlspaket basierend auf einem Abfragen der SLDRAM nach derartigen Faktoren, wie z. B. der Zahl von Bänken, Zeilen, Spalten, und zugeordneten Betriebscharakteristika, die dann von der Universalsteuerung 904 gespeichert werden.
  • Das erste Wort des Befehlspakets enthält die Chip-ID-Bits. Ein SLDRAM wird jeden Befehl ignorieren, der nicht mit der lokalen ID übereinstimmt. Die Chip-ID wird durch die Universalsteuerung 904 beim Hochfahren unter Verwendung der Initialisierungs- und Synchronisationssignale zugeteilt. Auf diese Weise adressiert die Universalsteuerung 904 jeden SLDRAM bei dem Mehrprozessorsystem 900 allein, wobei sie auf ein Erzeugen von separaten Chipaktivierungssignalen oder einer Randlogik zurückgreift. Tabelle 3 SLDRAM-BEFEHLSPAKETSTRUKTUR
    FLAG CA9 CA8 CA7 CA6 CA5 CA4 CA3 CA2 CA1 CA0
    1 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0 CMD5
    0 CMD4 CMD3 CMD2 CMD1 CMD0 BKN2 BKN1 BKN0 RW9 RW8
    0 ROW7 ROW6 ROW5 ROW4 ROW3 ROW2 ROW1 ROW0 0 0
    0 0 0 0 COL6 COL5 COL4 COL3 COL2 COL1 COL0
  • Da der Lesen-Befehl 950 und der Schreiben-Befehl 952 pipelineartig arbeiten, empfängt die Universalsteuerung 904 den Schreiben-Befehl 952 (er könnte auch in einem Puffer gespeichert sein) eine bestimmte Zeitperiode nach dem Empfang des Lesen-Befehls 950 und gibt nach und nach ein SLDRAM-Befehlspaket-Schreiben 662 entsprechend einem Schreiben-Befehl 952 aus. Die Universalsteuerung 904 verwendet MA2-spezifische Charakterisierungsdaten als auch die Ausgabezeit (d. h. die Zeit des Ausgebens) des LESEN-Befehls 960, um eine minimale Ausgabezeit und einen Datenversatz für SCHREIBEN 962 zu erzeugen, um eine Interferenz mit dem vorher ausgegebenen LESEN-Befehl 960 zu vermeiden, da auf die gleiche Bank (A) durch beide Befehle zugegriffen wird.
  • Auf diese Weise ist die Universalsteuerung 904 in der Lage, das Ausgeben der SLDRAM-Befehlspakete basierend zumindest auf bestimmten Zieladreßgerätbetriebscharakteristika als auch auf dem gegenwärtigen Zustand des Befehls- und Datenpaketstroms dynamisch abzustimmen.
  • Bezugnehmend auf 10 ist ein Blockdiagramm einer Speichersteuerung 1000 gemäß einem Ausführungsbeispiel der Erfindung gezeigt. Es soll angemerkt sein, daß die Speichersteuerung 1000 nur ein mögliches Ausführungsbeispiel der Universalsteuerung 104 aus 1 ist und deshalb nicht als eine Einschränkung des Bereichs der Erfindung aufgefaßt werden sollte. Die Speichersteuerung 1000 umfaßt eine Systemschnittstelle 1002, die mittels des Systembusses 906 die Prozessoren 902 mit einem Speicherplaner 1006 (der Planer genannt) verbindet. Bei einem Ausführungsbeispiel der Erfindung ist die Systemschnittstelle 1002 konfiguriert, sowohl für die Übertragung von Speicherbefehlspaketen als auch von zugeordneten Schreiben-Datenpaketen, die von den Prozessoren 902 erzeugt werden, an den Speicherbefehlspaketplaner 1004 zu sorgen. In der Situation, bei der der Planer 1006 anzeigt, daß alle internen Puffer voll sind und neue Befehle nicht untergebracht werden können, hält die Systemschnittstelle 1002 jeden neuen Befehl, bis zu der Zeit, zu der der Planer 1006 anzeigt, daß er bereit ist, um neue Befehle anzunehmen.
  • Eine Synchronverbindungsmedienzugriffssteuerung (SLiMAC) 1008 liefert eine physikalische Schnittstelle zwischen dem Planer 1006 und dem SLDRAM 908. Insbesondere umfaßt die SLiMAC 1008 eine Befehlsschnittstelle 1010 und eine Datenschnittstelle 1012, die die SLiMAC 1008 mit dem SLDRAM 908 mittels des Befehlsbusses 912 bzw. des Datenbusses 914 verbindet. Bei einem bevorzugten Ausführungsbeispiel der Erfindung überträgt die Befehlsschnittstelle 1010 Speicherbefehle von der SLiMAC 1008 zu dem SLDRAM 908, was von dem zugeordneten Befehlstakt CCLK begleitet wird. Es soll angemerkt sein, daß bei einigen Ausführungsbeispielen die SLiMAC 1008 einen Taktverdoppler aufweist, der ein Schnittstellentaktsignal ICLK verwendet (das in der Lage ist, bei ca. 100 MHz zu laufen), um das Befehlstaktsignal CCLK zu erzeugen, das üblicherweise bei 200 MHz läuft.
  • Bei einem Ausführungsbeispiel der Erfindung empfängt und überträgt die Datenschnittstelle 1012 Daten bei dem Datenbus 914. Es soll angemerkt sein, daß die Breite des Datenbusses 914 so groß wie nötig sein kann, um so viele SLDRAM wie benötigt zu unterstützen. Um deshalb die nötige Bandbreite zu liefern, können so viele Datenschnittstellen wie benötigt in die SLiMAC 1008 eingebaut sein. Beispielhaft kann, wenn der Datenbus 914 32 Bits breit ist (z. B. 16 Bits pro SLDRAM), die SLiMAC 1008 zwei Datenschnittstellen umfassen, von denen jede in der Lage ist, 16 Bits zu handhaben, die einem bestimmten SLDRAM zugeordnet sind. Auf diese Weise kann die Größe der Datenschnittstellen, die in der SLiMAC 1008 enthalten sind, eng mit den bestimmten Konfigurationen der SLDRAM angepaßt werden, die mit ihnen verbunden sind.
  • Ähnlich wie bei der Befehlsschnittstelle 1010 ist die SLiMAC 1008 in der Lage, ein Datentaktsignal DCLK zu liefern, das die Lesen-Daten begleitet, die von dem SLDRAM 908 zu der SLiMAC 1008 übertragen werden. Bei einem Ausführungsbeispiel der Erfindung wird der Datentakt DCLK unter Verwendung des Taktverdopplers erzeugt, um die Schnittstellentakt-ICLK-Frequenz von ca. 100 MHz auf ca. 1.000 MHz zu verdoppeln. Es soll angemerkt sein, daß das Schnittstellentaktsignal-ICLK, das Befehlstaktsignal-CCLK und das Datentaktsignal-DCLK alle phasensynchron sind.
  • Bei einem bevorzugten Ausführungsbeispiel der Erfindung umfaßt der Planer 1006 einen Restriktionsblock 1016, der angeordnet ist, um Systembefehls- und zugeordnete Systemadreßdaten von der Systemschnittstelle 1002 zu empfangen, die mit demselben verbunden ist. Der Restriktionsblock 1016 liefert SLDRAM-Befehlspaketdaten und zugeordnete Zeitgebungsinformationen an einen Neuordnungsblock 1018. Ein Schreiben-Puffer 1020 empfängt Schreiben-Daten von der Systemschnittstelle 1002. Wie von dem Planer 1006 beauftragt, werden die Lesen-Daten von der Datenschnittstelle 1012 durch einen Lesen-Puffer 1022, der mit dem Datenbus 914 verbunden ist, übertragen, der angeordnet ist, um der Systemschnittstelle 1002 Lesen-Daten zu liefern. Ein Initialisierungs/Synchronisations-(I/S-)Block 1024, der mit dem I/S-Bus 916 verbunden ist, liefert geeignete Initialisierungs- und/oder Synchronisationssignale wie benötigt an den SLDRAM 908.
  • Beim Betrieb empfängt der Planer 1006 pipelineartig arbeitende Speicherbefehlspakete, die von dem Prozessor 902 erzeugt werden. Typischerweise bestehen die Speicherbefehlspakete aus einem Speicherbefehl und einer zugeordneten Speicheradresse. Bei einem Ausführungsbeispiel der Erfindung decodiert der Planer 1006 die Speicheradresse, die dem empfangenen neuen Befehl zugeordnet ist, um die Zieladresse zu bestimmen, an die der Speicherbefehl und das zugeordnete Datenpaket (wenn es überhaupt eines gibt) gerichtet sind. Sobald die Speicheradresse decodiert ist, verwendet der Planer 1006 die Zieladreß-Spezifisches-Gerät-Charakterisierungsdaten, die darin gespeichert sind, und die Informationen, die einem gerade vorher ausgegebenem Speicherbefehl zugeordnet sind, um ein neues SLDRAM-Befehlspaket auszugeben. Das neue SLDRAM-Befehlspaket wird an den Befehlsbus 912 ausgegeben und schließlich an den SLDRAM, der durch die Chip-ID identifiziert wird, die in dem SLDRAM-Befehlspaket enthalten ist.
  • Als Teil des Planungsprozesses bestimmt der Planer 1006 die minimale Zeitmenge nach dem Ausgeben des gerade vorher ausgegebenen Befehls, die benötigt wird, bevor ein neuer Befehl ausgegeben werden kann. Da, wie oben beschrieben, jeder hierarchische Pegel, wie z. B. eine Speicherbank, eines SLDRAM unterschiedliche Betriebscharakteristika aufweisen kann (herkömmlicherweise von dem Hersteller geliefert), fragt der Planer 1006 jeden SLDRAM, den er während der Initialisierung bedient, ab. Bei einigen Ausführungsbeispielen können die speicherspezifischen Parameter (wie z. B. Zeitgebung) direkt in das Restriktionsblockregister 1016 geschrieben werden, wenn die verbundenen Speichergeräte kein Abfragen erlauben, um Betriebscharakteristika zu bestimmen. Sobald die SLDRAM abgefragt sind, speichert der Planer 1006 die gerätespezifischen Informationen, die er später verwendet, um die geeigneten Planungsprotokolle zu entwickeln. Auf diese Weise ist der Planer 1006 in der Lage, adaptiv Planungsdienste für jede Zahl und jeden Typ von SLDRAM zu liefern, ohne auf eine Festverdrahtung oder weitere zeitaufwendige und teure Verfahren zurückzugreifen.
  • 11 ist eine schematische Darstellung eines Restriktionsblocks 1100 gemäß einem Ausführungsbeispiel der Erfindung. Es wird darauf hingewiesen, daß der Restriktionsblock 1100 nur ein mögliches Ausführungsbeispiel des in 10 gezeigten Restriktionsblocks 1016 ist, und als solcher nicht als beschränkend aufgefaßt werden sollte. Der Restriktionsblock 1100 umfaßt einen Adreßdecodierer 1102, der mit der Systemschnittstelle 1002 verbunden ist und angeordnet ist, um ein empfangenes neues Adreßsignal zu decodieren, das einem neuen Speicherbefehl zugeordnet ist, der durch die Prozessoren 902 erzeugt wird. Das decodierte neue Adreßsignal liefert ein Eingangssignal an ein Arrayetikettregister 1104, in dem der Status und andere relevante Informationen für alle oder in einigen Fällen nur einen Teilsatz von zugehörigen SLDRAM-Speicherbänken gespeichert sind. Das Arrayetikettregister 1104 liefert ein Eingangssignal an einen Selektor 1106, der relevante Daten für die ausgewählte virtuelle Bank auf der Basis der decodierten neuen Befehlsadresse an eine Nachschlagtabelle (LUT = look up table) 1108 weiterleitet.
  • Der Restriktionsblock 1100 umfaßt außerdem einen Regionskomparator 1110, der ebenfalls mit der Schnittstelle 1002 verbunden ist und angeordnet ist, um das empfangene neue Adreßsignal zu verwenden, um einen Regionsidentifizierer zu liefern, der die Region des Speichers anzeigt, für die die neue Befehlsadresse lokalisiert ist. Auf diese Weise ist der Restriktionsblock 1100 in der Lage, ein Günstigster-Fall-Planungsprotokoll für den neuen Speicherbefehl basierend zumindest teilweise auf den spezifischen Charakterisierungsdaten der Speicherregion zu liefern. Der Regionskomparator 1110 liefert den Regionsidentifizierer als ein Eingangssignal zusammen mit dem neuen Befehlssignal an die LUT 1108. Die LUT 1108 dagegen liefert eine minimale Deltaausgabezeit und einen Datenoffset, der verwendet wird, um den neuen Befehl und die zugeordnete neue Adresse in ein SLDRAM-Befehlspaket umzuwandeln. Es wird darauf hingewiesen, daß die minimale Deltaausgabezeit die Deltazeit zum Ausgeben des neuen Befehls bezüglich des soeben ausgegebenen alten Befehls anzeigt (in Taktzyklen). Die Datenoffsetzeit zeigt die Deltazeit in Taktzyklen an, um ein dem neuen Befehl zugeordnetes Lesendatenpaket zu empfangen, nachdem der neue Befehl ausgegeben wurde.
  • Bei einem Ausführungsbeispiel der Erfindung umfaßt der Restriktionsblock 1100 16 Arrayetikettbankregister und die LUT 1108 ist in der Lage, vier unterschiedliche Parametersätze für jeweils vier Zeitgebungsregionen zu speichern, die wiederum 16 zugeordnete Register umfassen.
  • 12 ist ein Zeitdiagramm 1200 von SLDRAM-Bussignalen ansprechend auf empfangene Prozessorbefehle gemäß einem Ausführungsbeispiel der Erfindung. Es wird darauf hingewiesen, daß TABELLE 4 den Planungsprozeß zusammenfaßt, der durch den Restriktionsblock 1100 durch Identifizieren der verschiedenen erzeugten Signale ausgeführt wurde. Es wird außerdem darauf hingewiesen, daß ein Speicherbefehl die Form von {Befehl, Adresse} annimmt, wobei „Befehl” die Instruktion darstellt, die ausgeführt werden soll, und „Adresse” die zugeordnete Speicherposition.
  • Bezugnehmend auf TABELLE 4 und 12 wird während eines Systemtaktzyklusses ø1 ein erster {OPENPAGE, 1000}-Befehl an dem Adreßdecodierer 302 und gleichzeitig an dem Regionskomparator 1110 empfangen. Für dieses Beispiel decodiert der Adreßdecodierer 1202 die OPENPAGE-Befehlsadresse „1000” als „100” und „400”, was der Regionskomparator 1110 als innerhalb der Speicherregion 0 umfaßt bestimmt. Da der OPENPAGE-Befehl der erste Befehl ist, der empfangen wird, gibt es keine „Treffer” mit einer der virtuellen Bänke B0 –13 und ein entsprechender Ersatzzähler ist auf „0” eingestellt. Bei dem beschriebenen Ausführungsbeispiel wird der Ersatzzähler auf der Basis eines Pseudozufallszählschemas aktualisiert, während bei anderen Ausführungsbeispielen Zufallszählen oder andere geeignete Schemata verwendet werden können. Da der erste {OPENPAGE, 1000}-Befehl ein Offen-Typ-Befehl ist, gibt es keine zugeordnete minimale Deltaausgabezeit oder Datenoffset, und folglich wird die Seite an der Adresse 100 bei dem ersten Befehlstaktzyklus øC1 geöffnet.
  • Während einem nächsten Systemtaktzyklus ø2 wird ein {READ, 1000}-Befehl an dem Restriktionsblock 1100 empfangen, den der Adreßdecodierer 1102 als „100” und „400” decodiert (d. h. Lesen der Seite, die an der Speicheradreßposition 1000 von dem vorhergehenden Taktzyklus geöffnet ist), was wieder bewirkt, daß der Regionskomparator 1110 den Regionsidentifizierer auf REGION1 einstellt. In diesem Fall jedoch führt der vorhergehende bzw. „alte Befehl”, der in einem B0-Register gespeichert war, zu einem „Treffer” bei B0, was bewirkt, daß der Selektor „READ” als das „Alter-Befehl”-Eingangssignal an die LUT 1108 ausgibt. Zusätzliche Eingangssignale umfassen den Regionsindikator REGION1, der durch den Regionskomparator 1104 und das „Neuer-Befehl”-Eingangssignal als READ erzeugt wurde. Die LUT 1108 verwendet gespeicherte Charakterisierungsdaten, um eine minimale Deltaausgabezeit von drei Befehlstaktzyklen ø3 zu erzeugen, was anzeigt, daß zumindest drei Befehlstaktzyklen die Ausgabe des {PAGEOPEN, 1000}-Befehls und des zugeordneten {READ, 1000}-Befehls trennen müssen.
  • Auf diese Weise wird jedes Speicherbefehlspaket, das an dem Restriktionsblock 1100 empfangen wird, gemäß den Charakterisierungsdaten, die innerhalb der LUT 1108 und zumindest teilweise bezüglich des kurz davor ausgegebenen Befehls gespeichert sind, verarbeitet.
  • Das Neuordnen von Befehlen, die von dem Restriktionsblock gemäß einem spezifischen Ausführungsbeispiel der Erfindung empfangen wurden, werden nun beschrieben. Die 13A bis 13C sind Zeitlinien 1302 und 1304, die durch ein einfaches Befehlsneuordnungsbeispiel dazu dienen, einige der Vorteile darzustellen, die durch Neuordnen von Speicherbefehlen gemäß einem spezifischen Ausführungsbeispiel der vorliegenden Erfindung realisiert werden können. Jede Zeitlinie zeigt vier Lesenbefehle, die zwei unterschiedlichen Speicherbänken entsprechen. CMD0 und CMD1 sind Lesenbefehle, die an die Bank 1 des zugeordneten Speichers gerichtet sind. CMD2 und CMD3 sind Lesenbefehle, die an die Bank 2 des zugeordneten Speichers gerichtet sind. Die Zeitlinie 1302 zeigt Speicherbefehle, die auf einem Befehlsbus angeordnet sind, der eine Speichersteuerung und einen Speicher in der Reihenfolge verbindet, in der Befehle von der Speichersteuerung von dem Systemprozessor empfangen wurden; CMD0 besetzt den Zeitschlitz 0, CMD1 besetzt den Zeitschlitz 3, CMD2 besetzt den Zeitschlitz 4 und CMD3 besetzt den Zeitschlitz 7. Jeder Zeitschlitz stellt einen Taktzyklus dar.
  • Wie oben erörtert, müssen Befehle an die gleiche Speicherbank eine minimale Verzögerung zwischen der Ausgabe aufweisen, um das Bedienen des vorher ausgegebenen Befehls zu ermöglichen. Dies ist in 13A durch die zwei Zeitschlitze zwischen jedem Paar von Befehlen dargestellt. Falls die vier Lesenbefehle in der in 13A gezeigten Reihenfolge zu dem Speicher gesendet werden, wird der Speicherbus, wie ersichtlich ist, während vier möglichen Taktzyklen, d. h. den Zeitschlitzen 1, 2, 5 und 6, ungenutzt sein. Wie erörtert werden wird, kann zumindest ein Teil dieser Ineffizienz durch Neuordnen des Befehls gemäß der vorliegenden Erfindung verbessert werden.
  • Die Zeitlinien 1304 und 1306 der 13B und 13C stellen jeweils das Neuordnen der Befehle von 13A gemäß einem spezifischen Ausführungsbeispiel der Erfindung und zumindest einige der Vorteile dar, die dadurch gewonnen werden. Bei diesem Beispiel werden Konflikte auf dem Datenbus aus Gründen der Einfachheit nicht betrachtet. Wie unten erörtert, muß jedoch solchen Betrachtungen für effektives Neuordnen von Speicherbefehlen Beachtung geschenkt werden. Aufgrund der Tatsache, daß CMD2 und CMD3 an andere Speicherbänke gerichtet sind als CMD0 und CMD1, sind Speicherzugriffslatenzzeiten wie zwischen den beiden Paaren von Befehlen nicht relevant und können ignoriert werden. Das heißt, die Befehle können neu angeordnet werden, wie es in der Zeitlinie 1304 gezeigt ist, um CMD2 in den Zeitschlitz 1 unmittelbar nach CMD0 zu plazieren, und CMD3 in den Zeitschlitz 4 unmittelbar nach CMD1. Dies liegt daran, daß zwischen der Ausgabe von CMD0 und CMD2 oder zwischen der Ausgabe von CMD1 und CMD3 keine Verzögerung notwendig ist aufgrund der Tatsache, daß sie an unterschiedliche Speicherbänke gerichtet sind. Wie es jedoch offensichtlich sein wird und wie es in 13C gezeigt ist, muß die minimale Verzögerungszeit, z. B. zwei Taktzyklen, zwischen dem Paar von Befehlen, die an die gleiche Bank gerichtet sind, beibehalten werden. Das heißt, das Neuordnen von Befehlen kann keine Versuche beinhalten, die Verzögerungszeit zwischen aufeinanderfolgenden Befehlen an die gleiche Speicherbank zu reduzieren.
  • Das Ergebnis des Neuordnens der Befehle ist in 13C gezeigt, worin die vier Befehle in fünf Taktzyklen ausgegeben werden, wobei nur der Zeitschlitz 2 nicht genutzt wird. Es wird jedoch darauf hingewiesen, daß ein fünfter Speicherbefehl an noch eine weitere Speicherbank in den Zeitschlitz 2 eingefügt werden kann, um die Effizienz, mit der der Befehlsbus verwendet wird, weiter zu maximieren.
  • 14 ist ein Blockdiagramm eines Abschnitts einer Speichersteuerung, die gemäß einem spezifischen Ausführungsbeispiel der Erfindung gestaltet ist. Die Neuordnungsschaltungsanordnung 1400 empfängt eine Sequenz von ankommenden Speicherbefehlen, d. h. 1, 2, 3, von dem Systemprozessor. Gemäß einem spezifischen Ausführungsbeispiel werden die Speicherbefehle über eine Restriktionsschaltungsanordnung (nicht gezeigt) an eine Neuordnungsschaltungsanordnung 1400 übertragen, die, wie oben beschrieben, auf ausgewählte Befehle Ausgabezeitbeschränkungen auferlegt bezüglich anderer Befehle, die an die gleiche logische Bank des zugeordneten Speichers gerichtet sind. Die Befehle werden in der Befehlsschlange 1402 neu geordnet, von der die Befehle an den Speicher ausgegeben werden. Bei diesem Beispiel werden die Befehle in die Sequenz 1, 3, 2 neu geordnet.
  • Die ursprüngliche Speicherbefehlssequenz, d. h. 1, 2, 3, ist in einem FIFO-Speicher 1404 in der Datenleseschaltungsanordnung 1406 gespeichert. Die Sequenz in FIFO 1404 wird zum Neuordnen der Daten verwendet, die von dem Speicher empfangen wurden, um der Reihenfolge zu entsprechen, in der die Befehle ursprünglich von der Speichersteuerung empfangen wurden. Es wird darauf hingewiesen, daß jedoch einige der Prozessoren Daten in der Reihenfolge erwarten, während andere Daten außerhalb der Reihenfolge erwarten, daher kann durch Ein- und Ausschalten des FIFO 1404, wie erforderlich, jeder Typ von Datenreihenfolge unterstützt werden. Dies ist notwendig, weil der Prozessor „erwartet”, die Daten in einer Reihenfolge zu empfangen, die der Reihenfolge entspricht, in der er die Befehle ursprünglich an die Speichersteuerung übertragen hat.
  • Da außerdem Daten von dem Speicher durch die Speichersteuerung in einer Sequenz empfangen werden können, die der ursprünglichen Sequenz, mit der der Prozessor die Speicherbefehle überträgt, nicht entspricht, wird eine dritte Sequenz in der Datenwarteschlange 1408 gespeichert. Diese Sequenz (in diesem Beispiel 3, 1, 2) stellt die Reihenfolge dar, in der die Daten, die der Befehlssequenz 1, 3, 2 entsprechen, durch die Datenleseschaltungsanordnung 1406 empfangen werden. Die Datenwarteschlangensequenz wird durch die Neuordnungsschaltungsanordnung 1400 auf der Basis der Befehlswarteschlangensequenz und bekannter Latenzzeiten, die den verschiedenen logischen Bänken des Speichers zugeordnet sind, berechnet. Wenn der Speicher Daten an die Speichersteuerung in der Sequenz, die in der Datenwarteschlange 1408 gespeichert ist (d. h. 3, 1, 2), überträgt, werden die Daten in dem Lesedatenpuffer 1410 gespeichert und auf der Basis der Informationen in dem FIFO 1404 und der Datenwarteschlange 1408 neu geordnet, so daß die Daten in einer Reihenfolge an den Prozessor übertragen werden, die der ursprünglichen Befehlssequenzreihenfolge (d. h. 1, 2, 3) entspricht.
  • 15 ist ein Blockdiagramm der Neuordnungsschaltungsanordnung 1500 in einer Speichersteuerung, die gemäß einem spezifischen Ausführungsbeispiel der Erfindung gestaltet ist. Die Neuordnungsschaltungsanordnung 1500 umfaßt die Befehlswarteschlange 1502, die Befehle, die von dem Systemprozessor empfangen werden, speichert und neu ordnet. Die Befehlswarteschlange 1502 berechnet eine Ausgabezeit für jeden Befehl, gibt die Befehle aus und entfernt die ausgegebenen Befehle von der Warteschlange unter der Verwendung von Befehlsausgabezeitbeschränkungen, die Befehlen an die gleiche logische Bank in dem Speicher zugeordnet sind, und auch von Datenbusverwendungsbeschränkungen.
  • Die Datenwarteschlange 1504 speichert Datenelemente, die Datenauftrittszeiten darstellen, die ausgegebenen Speicherbefehlen entsprechen, berechnet neue Datenauftrittszeiten für jeden neuen Eintrag in der Warteschlange und entfernt Warteschlangeneinträge, wenn die entsprechende Speichertransaktion abgeschlossen ist.
  • Die Komparatormatrix 1506 führt eine Kollisionserfassungsfunktion aus, bei der die Datenauftrittszeit eines Befehls, der bereit ist, ausgegeben zu werden, von der Befehlswarteschlange 1502 (wie es über einen Multiplexer 1508 kommuniziert wird), mit den Datenauftrittszeiten von vorher ausgegebenen Befehlen verglichen wird, wie sie in der Datenwarteschlange 1504 dargestellt sind. Falls eine Kollision erfaßt wird, wird die Ausgabe des Befehls verzögert.
  • 16 ist ein detaillierteres Blockdiagramm der Neuordnungsschaltungsanordnung 1500 von 15. Die Befehlswarteschlange 1502 umfaßt sechs Befehlwarteschlangenelemente 1602, von denen jedes 61 Bit an Informationen bezüglich eines speziellen Speicherbefehls speichert, wie es durch das Diagramm von 17 dargestellt ist. Ein Befehlsfeld 1702 enthält das 40-Bit-Speicherbefehlspaket, das den Speicherbefehl spezifiziert. Ein Befehlsausgabezeit-(Cd-)Feld 1704 ist ein 6-Bit-Feld, das eine Deltazeit in Taktzyklen anzeigt, bevor der Befehl ausgegeben werden kann. Der Wert in dem Feld 1704 wird bestimmt durch die Restriktionsschaltungsanordnung, wie sie oben beschrieben ist, und bezieht sich auf den letzten Speicherbefehl, der der gleichen logischen Bank in dem Speicher entspricht. Das heißt, der Wert in dem Cd-Feld zeigt die Latenzzeit zwischen zwei Befehlen an die gleiche Bank an. Die Informationen über die erforderlichen Latenzzeiten für jede Bank sind in der Restriktionsschaltungsanordnung gespeichert und sind überwiegend durch die physikalischen Charakteristika des Speichers bestimmt. Sobald es in der Befehlswarteschlange ist, wird das Cd-Feld für jeden Taktzyklus einmal dekrementiert, mit einigen Ausnahmen. Beispielsweise kann die Latenzzeit zwischen aufeinanderfolgenden Befehlen an die gleiche logische Bank nicht geändert werden. Falls folglich das Cd-Feld für einen Befehl, der an eine spezielle Bank gerichtet ist, Null erreicht und nicht ausgegeben wird, können die Cd-Felder für alle anderen Befehle an die gleiche Bank nicht dekrementiert werden, bis der erste Befehl ausgegeben wird.
  • Ein Datenauftrittszeit-(Dd-)Feld 1706 ist ein 6-Bit-Feld, das eine Deltazeit in Taktzyklen zwischen der Ausgabe eines Speicherbefehls von der Befehlswarteschlange anzeigt, um die entsprechenden Daten zu übertragen. Ein Dd-Feld 1706 kann in der Befehlswarteschlange nicht geändert werden. Das Befehls-ID-Feld 1708 ist ein 5-Bit-Feld, das den Befehl in dem Befehlspaket 1702 einzigartig identifiziert. Diese Informationen werden mit entsprechenden Informationen in dem FIFO und der Datenwarteschlange verwendet, um zu verfolgen, welche Pakete welche sind und welche Daten welchen Paketen entsprechen, so daß das Neuordnen von Befehlen und Daten bewirkt werden kann. Ein logisches Bank-(B-)Feld 1710 ist ein 3-Bit-Feld, das identifiziert, an welche logische Bank in dem Speicher das Befehlspaket gerichtet ist. Schließlich ist das Bündelindikator-(Db-)Feld 1712 ein 1-Bit-Feld, das anzeigt, ob die Daten, die angefordert werden oder geschrieben werden, einen oder zwei Taktzyklen besetzen.
  • Unter erneuter Bezugnahme auf 16 wird die Operation der Befehlswarteschlange durch die Befehlswarteschlangensteuerung 1604 gesteuert. Eine Steuerung 1604 verfolgt, welche Befehlswarteschlangenelemente 1602 erhältlich sind und steuert die Einfügung von ankommenden Befehlen in ein spezielles Warteschlangenelement 1602 über einen Freie-Position-Indikator 1606. Die Steuerungseinrichtung 1604 ermöglicht außerdem die Einfügung von Befehlswarteschlangenelementinformationen in die Datenwarteschlange 1504, sobald der entsprechende Befehl ausgegeben wurde. Gemäß einem spezifischen Ausführungsbeispiel werden Befehle in die Befehlswarteschlange 1502 eingegeben, ohne die Verfügbarkeit freier Zeitschlitze auf dem Befehls- oder Datenbus zu berücksichtigen.
  • Ein Befehl kann von jedem der Befehlswarteschlangenelemente 1602 über einen Multiplexer 1608 an den Befehlsbus ausgegeben werden, falls sein Cd-Zählwert Null ist und keine Kollisionen auf dem Datenbus angezeigt sind. Das heißt, freie Zeitschlitze auf dem Befehlsbus und/oder dem Datenbus müssen identifiziert werden. Falls der Befehl kein Lesen- oder Schreibenbefehl ist (und daher keine Datenbusressourcen erfordert), wird nur ein Befehlsbus-Zeitschlitz benötigt. Falls der Befehl ein Lesen- oder Schreibenbefehl ist, werden Zeitschlitze sowohl auf dem Befehls- als auch auf dem Datenbus benötigt.
  • Ein Nullkomparator 1610 in der Steuerungseinrichtung 1604 wird verwendet, um die erste Bestimmung durchzuführen, d. h. ob Cd = 0 ist. Subtrahierer 1612 werden verwendet, um „1” von dem Cd-Zählwert für jedes Befehlswarteschlangenelement 1602 in jedem Taktzyklus abzuziehen, es sei denn, es liegt eine Ausnahme, wie oben beschrieben, vor, d. h. wo Cd = 0 für einen speziellen Befehl ist, der nicht ausgegeben werden kann. In einem solchen Fall erzeugt die Warteschlangensteuerung 1604, die die Cd- und B-Felder für alle Warteschlangenelemente verwendet, ein Maskensignal (M), das den Cd-Zählwert für alle Befehle an die gleiche logische Bank davon abhält, dekrementiert zu werden.
  • Falls es zwei Warteschlangenelemente mit Cd = 0 gibt, wird gemäß einem spezifischen Ausführungsbeispiel das mit der höchsten Priorität (z. B. das älteste) ausgegeben. Eine Adreßschiebeeinrichtung 1614 bestimmt die Priorität der Befehle in der Warteschlange, wie es nachfolgend mit Bezugnahme auf 18 ausführlicher erörtert wird. Gemäß einem weiteren spezifischen Ausführungsbeispiel kann, falls ein neuer Befehl mit seinem Cd-Zählwert bereits bei Null an der Befehlswarteschlange ankommt, derselbe direkt über einen Multiplexer 1608 an den Speicher übertragen werden. Ein neuer Befehl wird in einem Befehlswarteschlangenelement 1602 gespeichert, falls sein Cd-Zählwert nicht Null ist, oder andere Befehle in der Befehlswarteschlange mit Cd = 0 und höherer Priorität gespeichert sind. Falls jedoch die Befehlswarteschlange leer ist, kann ein neuer Befehl unmittelbar ausgegeben werden (falls Cd gleich Null ist).
  • Für Lesen- oder Schreiben-Befehle werden Kollisionen unter Verwendung der Dd- und Db-Felder des Befehlswarteschlangenelements 1602 erfaßt, die den Befehl enthalten, der bereit ist, ausgegeben zu werden. Die Auftrittszeit und -dauer der Daten, die dem Befehl entsprechen, werden über den Multiplexer 1508 zu der Komparatormatrix 1506 übertragen, die wiederum durch die Warteschlangensteuerung 1604 gesteuert ist. Das heißt, die Warteschlangensteuerungseinrichtung 1604 steuert den Multiplexer 1508, um die Datenauftrittszeit und -dauer (entweder ein oder zwei Taktzyklen) des Warteschlangenelements zu übertragen, für das die Befehlsausgabezeit, d. h. Cd, Null ist. Die Dauer wird entweder als ein oder zwei Zyklen angezeigt, durch Addieren des Db-Bits mit der Datenauftrittszeit Dd mit Addierern 1616, was entweder eine „0” für Dd+1 (zeigt einen Taktzyklus an) oder eine „1” (zeigt zwei Taktzyklen an) ergibt. Die Datenauftrittszeit und -dauer werden dann in der Komparatormatrix 1506 mit den Datenauftrittszeiten und -dauer von fünf vorher ausgegebenen Befehlen, die in der Datenwarteschlange 1504 gespeichert sind, verglichen. Gemäß einem spezifischen Ausführungsbeispiel umfaßt die Komparatormatrix 1506 eine 2·10 parallele Komparatormatrix.
  • 18 ist ein Blockdiagramm eines spezifischen Ausführungsbeispiels einer Adreßschiebeeinrichtung 1614 von 16. Wie vorher erwähnt, bestimmt die Adreßschiebeeinrichtung 1614 die Priorität der Befehle. Wie ebenfalls oben erörtert, werden neue Befehle in ein beliebiges freies Befehlswarteschlangenelement 1602 eingefügt, gemäß dem Freie-Position-Indikator 1606. Die Adresse des Befehlswarteschlangenelements 1602, in das ein neuer Befehl eingefügt wird, wird in die erste freie Position (A0–A5) mit der höchsten Priorität eingefügt. Das Resultat ist, daß die A0-Position in der Adreßschiebeeinrichtung 1614 die Warteschlangenelementadresse für den ältesten Befehl, der noch nicht ausgegeben wurde, speichert. Wenn ein Befehl von der Befehlswarteschlange ausgegeben wird, wird der entsprechende Eintrag in der Adreßschiebeeinrichtung 1614 entfernt und die Adressen für Befehle mit niedrigerer Priorität werden in höhere Prioritätspositionen geschoben. Wie oben erörtert, kann, wenn der Cd-Zählwert für einen Befehl in der Befehlswarteschlange Null erreicht, derselbe ausgegeben werden. Falls jedoch mehr als ein Befehl vorliegt, für den Cd = 0 ist, wird der älteste, d. h. der Befehl mit der höchsten Priorität, wie es durch die Position seiner Adresse in der Adreßschiebeeinrichtung 1614 angezeigt ist, ausgegeben.
  • Die Datenwarteschlange 1504 von 16 umfaßt fünf Warteschlangenelemente 1652, von denen jedes 12 Bit von Informationen bezüglich eines vorher ausgegebenen Speicherbefehls speichert, wie es durch das Diagramm von 19 dargestellt ist. Ein Datenauftrittszeit-(Dd-)Feld 1902 ist ein 6-Bit-Feld, das eine Deltazeit in Taktzyklen zwischen der Ausgabe eines Befehls von der Befehlswarteschlange und dem Empfang der entsprechenden Daten anzeigt. Der Dd-Zählwert für jedes Datenwarteschlangenelement 1652 wird unter Verwendung eines der Subtrahierers 1654 in jedem Taktzyklus dekrementiert, bis sein Wert Null erreicht. Wenn Dd = 0 ist, sind die entsprechenden Daten auf dem Datenbus. Daher wird darauf hingewiesen, daß nur ein Datenwarteschlangenelement 1652 zu einer Zeit Dd = 0 haben kann. Nachdem der Dd-Zählwert Null erreicht, werden die Informationen in dem entsprechenden Datenwarteschlangenelement von der Datenwarteschlange 1504 entfernt.
  • Ein Befehls-ID-Feld 1904 ist ein 5-Bit-Feld, das den ausgegebenen Befehl, dem die Daten entsprechen, einzigartig identifiziert. Diese Informationen sind nützlich zum Neuordnen der Daten, um der Reihenfolge zu entsprechen, in der die Befehle ursprünglich an die Speichersteuerungseinrichtung übertragen wurden. Schließlich ist ein Bündelindikator-(Db-)Feld 1906 ein 1-Bit-Feld, das anzeigt, ob die Daten einen oder zwei Taktzyklen besetzen.
  • Unter erneuter Bezugnahme auf 16 und wie oben beschrieben, werden die Datenauftrittszeit (Dd) und -dauer für jedes der Datenwarteschlangenelemente 1652 in der Komparatormatrix 1506 mit der Dd und Dauer für einen Befehl in der Befehlswarteschlange 1502 verglichen, der bereit ist, ausgegeben zu werden, d. h. für den Cd = 0 ist. Die Dauer wird entweder als ein oder zwei Taktzyklen angezeigt, durch Addieren des Db-Bits mit der Datenauftrittszeit Dd mit Addierern 1656, was entweder eine „0” für Dd+1 (was einen Taktzyklus anzeigt) oder eine „1” (was zwei Taktzyklen anzeigt) ergibt. Falls der Vergleich keine Kollisionen auf dem Datenbus zeigt, wird der Befehl von der Befehlswarteschlange ausgegeben.
  • Eine Datenwarteschlangensteuerung 1658 steuert den Betrieb der Datenwarteschlange 1504. Der Freie-Position-Indikator 1660 zusammen mit der Befehlswarteschlangensteuerung 1604 ermöglicht das Einfügen neuer Datenwarteschlangenelementinformationen in die Datenwarteschlangenelemente 1652. Der Freie-Position-Indikator ermöglicht außerdem die Entfernung von Informationen von den Datenwarteschlangenelementen 1652, wenn die entsprechenden Speicherzugriffe abgeschlossen sind. Ein Nullkomparator 1662 und Bündelindikator 1664 werden verwendet, um zu bestimmen, wenn Dd für eines der Datenwarteschlangenelemente 1652 Null ist, und wenn die Datenübertragung den Datenbus nicht mehr weiter besetzt, und folglich, wenn die entsprechenden Informationen von der Datenwarteschlange entfernt werden können.
  • Gemäß einem weiteren spezifischen Ausführungsbeispiel der Erfindung wird die Kollisionserfassung komplexer durch die Verwendung eines zweidimensionalen Arrays von Komparatoren und Multiplexern. Dieser Lösungsansatz ist siliziumintensiver als der eindimensionale Lösungsansatz, der oben beschrieben wurde, und betrachtet alle der Elemente in der Befehlswarteschlange und nicht nur das eine für den Befehl, der bereit ist, ausgegeben zu werden. Er plant Befehle nicht nur hinsichtlich vorher ausgegebener Befehle, sondern auch hinsichtlich der Reihenfolge von Datenpaketen auf dem Datenbus.
  • Um einen neuen Befehl einzufügen, muß jeder Satz von zwei aufeinanderfolgenden Stufen in dem auszugebenden Abschnitt der Befehlsleitung verglichen werden, um zu sehen, ob ein neuer Befehl zwischen denselben eingefügt werden kann. Der Vergleich bestimmt in der Tat einen Bereich, in den der Befehl eingefügt werden kann. Dieser Bereich ist wie folgt: CLENx = Befehlslänge Tcstart = tcA + CLENA (1) Tcend = tcB (2) wobei tcA und tcB die Ausgabezeiten für aufeinanderfolgende Pipelineelemente A und B sind. Das Pipelineelement A liegt vor dem Pipelineelement B und folglich ist seine Ausgabezeit die niedrigere von den beiden. Falls eine Einfügung stattfinden soll, muß selbstverständlich zumindest ein offener Schlitz zwischen den Elementen A und B liegen. Folglich: N = Tcend – Tcstart + 1 (3) (wobei N = die Anzahl von Zeitschlitzen zwischen den Elementen A und B ist) LEN <= tcB – tcA – CLENA (4)
  • Bei der Hardware ist es einfach, nur die folgende Bedingung zu implementieren: (tcB – CLENA) – (tcA + CLENA) => 0 (5)
  • Der Anfangspunkt und der Endpunkt des Bereichs spezifizieren außerdem einen möglichen Bereich von zugeordneten Datenschlitzen. Dieser Bereich muß mit jedem Satz von aufeinanderfolgenden Elementen in der Datenleitung verglichen werden, um zu sehen, ob eine Überlappung vorliegt und was der neue Bereich sein wird. Für diesen Vergleich gibt es fünf verschiedene Fälle.
  • Fall 0
  • In diesem Fall liegt der Bereich, der durch die Datenschlitze tdA und tdB beschrieben wird, vollständig außerhalb des Bereichs der beiden aufeinanderfolgenden Elemente M und N. In diesem Fall ist folglich: tdA + CLENA => tdN (6) oder, wo DLENx = DATENLÄNGE, tdB <= tdM + DLENM (7)
  • Zwischen dem Paar M und N gibt es keinen möglichen Datenschlitz.
  • Fall 1
  • In diesem Fall liegt der Bereich, der durch die Datenschlitze tdA und tdB beschrieben ist, vollständig innerhalb des Bereichs der beiden aufeinanderfolgenden Elemente M und N. In diesem Fall ist folglich: tdA + CLENA => tdM + DLENM (8) und tdB – CLEN + DLEN <= tdN (wobei CLEN eine neue Befehlslänge und DLEN eine neue Datenlänge in Schlitzen ist) (9)
  • Die frühest mögliche Datenschlitzzeit in diesem Fall ist tdA + LENA mit einer entsprechenden Befehlsausgabezeit von tcA + CLENA.
  • Fall 2
  • In diesem Fall umfaßt der Bereich, der durch die Datenschlitze tdA und tdB beschrieben ist, das Element M. In diesem Fall ist folglich: tdA + CLENA < tdM + DLENM (10) und tdB – CLEN + DLEN > tdM + DLENM und tdB – CLEN + DLEN < tdM (11)
  • Die frühest mögliche Datenschlitzzeit in diesem Fall ist tdM + DLENM + 1 mit einer entsprechenden Befehlsausgabezeit von tdM + CLENM – DATA_OFFSET, wobei DATA_OFFSET die Zeit zwischen Befehlsausgabezeit und Datenbelegung ist.
  • Fall 3
  • In diesem Fall umfaßt der Bereich, der durch die Datenschlitze tdA und tdB beschrieben ist, das Element N. In diesem Fall ist folglich: tdA + CLENA > tdM + DLENM (12) und tdA + CLENA + DLEN < tdN (13)
  • Folglich ist die frühest mögliche Datenschlitzzeit in diesem Fall tdA + CLENM mit einer entsprechenden Befehlsausgabezeit von tcA + CLENA + 1. Es wird darauf hingewiesen, daß der Fall 1 ebenfalls innerhalb dieses Falls liegen kann.
  • Fall 4
  • In diesem Fall umfaßt der Bereich, der durch die Datenschlitze tdA und tdB beschrieben ist, den Bereich, der durch die Elemente M und N definiert ist. In diesem Fall ist folglich: tdA + CLENA < tdM + DLENM (14) und tdB – LEN > CtdN (15)
  • Folglich ist die frühest mögliche Datenschlitzzeit in diesem Fall tdM + CLENM mit einer entsprechenden Befehlsausgabezeit von tcM + CLENA + DATA_OFFSET, wobei DATA_OFFSET = tdA – tcA.
  • Es ist offensichtlich, daß der Fall 1 und der Fall 3 zum Zweck der Planung identisch sind, da immer der frühest mögliche Schlitz besetzt wird. Der kombinierte Fall ist daher der Fall 3. Gleichartig dazu sind der Fall 2 und der Fall 4 identisch, da das gewünschte Resultat tdM + LENM ist. In diesem Fall muß lediglich gezeigt werden, daß tdM durch den Bereich, der durch tdA und tdB gegeben ist, umfaßt ist. Zusätzlich müssen die frühest mögliche Ausgabezeit (tc) und Datenschlitz (td) für den ankommenden Befehl betrachtet werden. Die Vergleiche, die an jedem Datenleitungspaar für jedes Befehlsleitungspaar gemacht werden müssen, sind:
    Figure 00500001
    Figure 00510001
  • Folglich sind die benötigten Operationen für die Befehlsleitung:

    tcB – CLEN => tcA + CLENA
    tcB – CLEN => tc
    tc + CLEN <= tcB
    tc > tcA + CLENA
    tc <= tcA + CLENA
  • Während die benötigten Operationen für die Datenleitung sind:

    tdA + CLENA <= tdM + DLENM
    tdA + CLENA >= tdM + DLENM
    tdB – DLEN >= tdM + DLENM
    tdN >= tdA + CLENA + DLENA
    td < tdM + DLENM
    tdN >= td + DLEN
    td >= tdM + DLENM
  • Die Entscheidungslogik besteht daher aus einer Matrix von Komparatorzellen, wie sie oben definiert ist. Die optimale Wahl ist die früheste Befehlsausgabezeit und diese wird durch einen einfachen Prioritätscodierer bestimmt.
  • Die Neuordnungsleitungssteuerungslogik muß dynamisch bestimmen, welche Operation auf welchem Element der Befehls- und der Datenleitung durchgeführt werden muß.
  • Bei der anstehenden Befehlsleitung hat jedes Befehlselement vier mögliche Operationen, Lesen vom vorhergehenden Element (Leitung schiebt vor), Halten aktueller Inhalte (Leitung hält), Lesen vom nächsten Element (Leitung sichert) und Lesen von ankommendem Befehlsbus. Ein Mehrfachsatz von Bedingungen kann an verschiedenen Punkten in der Leitung bestehen, wie es durch vier Fälle definiert ist. Das Element, von dem Ausgaben an die SLiMAC gemacht werden, ist als Element 0 definiert, während das Element, das am weitesten von der Ausgabe entfernt ist, als Element M definiert ist. Eine Einfügung in ein Element N wird durchgeführt, falls die Neuordnungsbestimmungslogik herausfindet, daß der optimale Einfügungspunkt in der aktuellen Pipeline zwischen den Elementen N – 1 und N liegt.
  • Fall 1 – Halten
  • Die Leitung hält, da keine Ausgabe an die SLiMAC oder Einfügung eines neuen Befehls stattfindet.
  • Fall 2 – Halten und Einfügen
  • In diesem Fall gibt es keine Ausgabe an die SLiMAC, aber es gibt eine Einfügung eines neuen Befehls in die Leitung. Falls eine Einfügung an dem Element N auftritt, wird die Leitung von dem Element 0 zu dem Element N – 1 halten, ein Element N einfügen und von dem Element N + 1 bis Element M sichern.
  • Fall 3 – Ausgeben
  • In diesem Fall findet eine Ausgabe an die SLiMAC von dem Element 0 statt, und der Rest der Leitung rückt vor, so daß das Element 0 den Inhalt von Element 1 enthält, das Element 1 den Inhalt von Element 2 enthält usw., bis das Element M – 1 den Inhalt des Elements M enthält.
  • Fall 4 – Ausgeben und Einfügen
  • In diesem Fall gibt es eine Ausgabe an die SLiMAC von dem Element 0 und eine Einfügung an dem Element N. In diesem Fall besitzen die Elemente 0 bis N – 2 Vorschuboperationen, das Element N – 1 besitzt eine Einfügungsoperation, während die Elemente N bis M halten. Während das Element, das Daten von dem nachfolgenden Element speichern wird, eine Vorschuboperation besitzt, bedeutet die Einfügung an dem Element N (das Element soll zwischen Element N – 1 und dem Element N der aktuellen Leitung eingefügt werden) in Wirklichkeit, daß das eingefügte Element in die Position N – 1 der aktualisierten Leitung kommt.
  • 20 stellt ein Kollisionserfassungssystem 2000 dar, das eine weitere Implementation des in 15 gezeigten Kollisionserfassungssystems 1500 ist. Bei diesem Ausführungsbeispiel ordnet das Kollisionserfassungssystem 2000 Befehle neu, um auf der Basis von Zielantwortrestriktionen eine optimale Befehlssequenz zu erhalten, und bestimmt den optimalen Schlitz für die Datenübertragung zwischen Initiatorsteuerung und Zielteilsystem. Da das Neuordnen der Befehle keine Kollision der unterschiedlichen Datenpakete auf dem Datenbus bewirken kann, ist ein Kollisionsdetektor 2002 erforderlich, der die Ausgabe eines speziellen Befehls verbietet, falls die Befehlsdatenübertragung bezüglich dieses speziellen Befehls einen Datenkonflikt bewirken würde. Bei dem beschriebenen Ausführungsbeispiel umfaßt das Kollisionserfassungssystem 2000 den Kollisionsdetektor 2002, der mit einer Befehlswarteschlange 2004 gekoppelt ist.
  • Bei dem beschriebenen Ausführungsbeispiel erfaßt der Kollisionsdetektor 2002 alle möglichen Datenkollisionen zwischen einem „auszugebenden” Befehl (der in einer Befehlswarteschlange 2004 gespeichert ist) und „bereits ausgegebenen” Befehlen (die in der Datenwarteschlange 2006 gespeichert sind). Bei dem beschriebenen Ausführungsbeispiel gibt es N Befehlswarteschlangen 2004, die jeweils mit einem Multiplexer 2008 gekoppelt sind. Jede der N Befehlswarteschlangen 2004 ist angeordnet, um diese Befehle, die ausgegeben werden sollen, einen Zeitfaktor „d_timeND”, der anzeigt, wann die Datenübertragung auf einem Datenbus zwischen der Universalsteuerung 104 und der Zielvorrichtung (d. h. gemeinschaftlich verwendete Ressource) 108 auftreten wird, nachdem der Befehl an die Zielvorrichtung ausgegeben wurde, ein Bündel-Bit (bND), das die Datenbündelübertragung anzeigt, und ein Lesen/Schreiben-Bit (rwND) zu speichern. Bei dem beschriebenen Ausführungsbeispiel speichert die Datenwarteschlange 2006 einen Zeitfaktor „d_timeD”, der anzeigt, wann die Datenübertragung auf dem Datenbus zwischen der Steuerung 104 und der Zielvorrichtung 108 auftreten wird, für eine bereits ausgegebene Anforderung an die Zielvorrichtung. Die Befehlswarteschlange 2006 speichert außerdem das Bündel-Bit (bND) und das Lesen/Schreiben-Bit (rwND).
  • Bei einem bevorzugten Ausführungsbeispiel umfaßt das Kollisionserfassungssystem 2000 eine Warteschlangen-Und-Verbindugssteuerungseinheit 2010, die angeordnet sind, um diese Befehle, die ausgegeben werden sollen, zu speichern und neu zu ordnen. Die Warteschlangen- und Steuerungseinheit 2010 berechnet außerdem die neue Ausgabezeit der Befehle und eine Zeit, wann die Daten auf dem Datenbus erscheinen. Die Warteschlangen- und Steuerungseinheit 2010 überträgt außerdem das ausgegebene Element von der Befehlswarteschlange in die Datenwarteschlange, und entfernt dasselbe auch von der Befehlswarteschlange, nachdem der Befehl ausgegeben wurde. Die Warteschlangen- und Steuerungseinheit 2010 entfernt außerdem Datenelemente von der Datenwarteschlange, nachdem der Zugriff auf den Speicher abgeschlossen wurde.
  • Bezugnehmend auf 2 ist auf jeden Lesen/Schreibenbefehl an die Zielvorrichtung eine Datenpaketübertragung bezogen. Vor der Ausgabe des Befehls an die Zielvorrichtung wird das neue Datenpaket ND (New Data = Neue Daten) gemäß seiner Zeitinformationen überprüft, um zu sehen, ob es ohne Kollision in die Datenwarteschlange eingefügt werden kann. Bei diesem in 21 gezeigten Beispiel ist ein ausgegebenes Datenpaket D bereits in der Datenwarteschlange plaziert und ein neues Datenpaket ND wird mit dem ausgegebenen Datenpaket D verglichen. Es wird darauf hingewiesen, daß sowohl das ausgegebene Datenpaket D als auch das neue Datenpaket ND Bündelzugriffe darstellen. Bei diesem Beispiel gibt es daher zwei Möglichkeiten, wie das neue Datenpaket ND hinsichtlich des ausgegebenen Datenpakets D plaziert werden kann, ohne eine Datenkollision zu bewirken. Das neue Datenpaket ND kann an der linken Seite oder an der rechten Seite des ausgegebenen Datenpakets D plaziert werden.
  • Dieses spezielle Beispiel stellt eine Kollisionserfassung der Speichersteuerung dar, die sowohl keine Bündel- als auch Bündel-Datenübertragung (d. h. vier Datenströme) unterstützt. Aufgrund der bidirektionalen Natur des Datenbus muß zwischen aufeinanderfolgenden Lesen-Schreiben- oder Schreiben-Lesen-Übertragungen ein Taktzyklus eingefügt werden.
  • Es wird darauf hingewiesen, daß es viele mögliche Folgen haben kann, von denen einige unten aufgeführt sind.
    • 1) Zwischen D und ND tritt keine Kollision auf, falls ND hinter oder vor D plaziert wird.
    • 2) Zwischen aufeinanderfolgenden Lesen-Schreiben- oder Schreiben-Lesen-Datenübertragungen muß ein Taktzyklus eingefügt werden. Jedes Element der Befehls- und der Datenwarteschlange steuert ein „rw”-Bit, das anzeigt, ob die Operation „Daten lesen” (rw = 0) oder „Daten schreiben” (rw = 1) ist.
    • 3) Datenpakete bestehen aus einem Datenstrom (keine Bündelübertragung) oder vier Strömen (Bündelübertragung). Jedes Element der Befehls- und der Datenwarteschlange speichert ein „Bündel”-Bit, das anzeigt, ob die Operation „Bündelübertragung” (Bündel = 1) oder „keine Bündelübertragung” (Bündel = 0) ist.
  • Die Vergleiche, die an jedem auszugebenden Datenpaket und ausgegebenen Datenpaketpaar für jeden auszugebenden Befehl gemacht werden müssen, sind:
    Figure 00560001
    Figure 00570001
  • Bei noch einem weiteren Ausführungsbeispiel der Erfindung wird eine Vorrichtung und ein Verfahren zum Vorhersagen der Zeit zwischen zwei aufeinanderfolgenden Speicherzugriffen offenbart, die eine sehr schnelle Berechnung der frühesten „Befehlsausgabezeit” für den neuen Befehl ermöglicht. Bezugnehmend auf 22 ist ein Prädiktorsystem 2200 dargestellt mit N Seitenzeitgebern 2202, die die Zeit zwischen dem letzten ausgegebenen Befehl an die spezielle Seite und einem vorhergesagten nächsten Zugriff auf diesen Speicher speichert. Der nächste Zugriff auf die gleiche Seite kann „Öffnen”, „Schließen”, „Schreiben” oder „Lesen” sein. Der ankommende neue Befehl (z. B. Lesen) wählt einen speziellen Seitenzeitgeber, der anzeigt, wie lange ein spezieller Seitenzugriff vor der Ausgabe warten muß. Der gleiche neue Befehl wählt dann geeignete Inhalte einer Zeitgebungsnachschlagtabelle 2204 aus, die zwischen diesem Befehl (Lesen) und möglichen nachfolgenden Zugriffen (Schließen, Öffnen, Schreiben und Lesen) auf die gleiche Seite eingefügt werden muß. Die Auflösung der Zeitgeber ist ein Taktzyklus.
  • Die Zeitgebungsnachschlagtabelle für Daten speichert eine Zeit, die anzeigt, wie viele Zyklen nach der Ausgabe des Befehls die Daten auf dem Datenbus gültig sein werden. Falls der neue Befehl inaktiv ist, dann wird bei jedem Zyklus der Wert aller Seitenzeitgeber erniedrigt, bis deren Wert „0” erreicht.
  • Bezugnehmend auf 23 ist bei noch einem weiteren Ausführungsbeispiel der Erfindung eine Vorrichtungssteuerung 2300 mit einem Vorrichtungszugriffprioritätsgeber 2302 gemäß einem Ausführungsbeispiel der Erfindung gezeigt. Bei dem beschriebenen Ausführungsbeispiel umfaßt der Prioritätsgeber 2302 eine Anforderungswarteschlange 2303, die zum Empfangen und Speichern einer beliebigen Anzahl von Vorrichtungsanforderungen geeignet ist, und die mit einer Anforderungssteuerungseinheit 2304 gekoppelt ist, die teilweise dazu verwendet wird, eine spezielle Antwort von einer beliebigen Position in der Anforderungswarteschlange 2303 abzurufen und die abgerufene Antwort an eine geeignete der Mehrzahl von gemeinschaftlich verwendeten Vorrichtungen 108 zu übertragen. Bei dem beschriebenen Ausführungsbeispiel umfaßt der Prioritätsgeber 2302 außerdem eine Antwortwarteschlange 2306, die angeordnet ist, um Antworten von jedem der gemeinschaftlich verwendeten Vorrichtungen 108 zu empfangen und zu speichern, die mit einer Antwortsteuerungseinheit 2308 gekoppelt sind, die verwendet wird, um spezielle gespeicherte Antworten auszuwählen, die zu der Anforderungsvorrichtung 102 gesendet werden sollen.
  • Bei einem bevorzugten Ausführungsbeispiel ist jeder Antwort und jeder Anforderung ein in 1E gezeigter ID-Zählwert 150 zugeordnet, so daß jede Anforderung und ihre zugeordnete Antwort die gleiche ID-Zählwert 150 aufweisen. Wie vorher erörtert, umfaßt die ID-Zählwert 150 fünf Datenbits, wobei das erste und das zweite Datenbit das Gruppenselektorfeld 152 sind, das die Gruppe der anfordernden Vorrichtungen identifiziert (wie z. B. eine Gruppe von Prozessoren in einer Mehrprozessorrechenumgebung), zu der diese spezielle Antwort/Anforderung gehört. Wiederum stellt das Anforderungszahlfeld (RN) 153, wie oben erörtert, die Anzahl von Anforderungen und/oder Antworten dar, die der Gruppe von anfordernden Vorrichtungen zugeordnet sind, die durch das Gruppenselektorfeld 152 identifiziert sind, so daß aufeinanderfolgende Anforderungen von der gleichen anfordernden Vorrichtung beispielsweise aufeinanderfolgende Anforderungszahlfelder 153 aufweisen.
  • Während des Betriebs umfassen sowohl die Anforderungssteuerungseinrichtung 2304 als auch die Antwortsteuerungseinrichtung 2308 jeweils das Gruppenprioritätsselektorregister 154, das Permanent-Aktivitäts-Blockade-Zählerregister (Livelock-Zählerregister) 156 und einen neuordnenden Selektor 2312. Das Gruppenprioritätsselektorregister 154 umfaßt Prioritätsinformationen für eine spezielle Anforderung/Antwort-Gruppe, die durch das RN 152 identifiziert ist, wobei bei einem Ausführungsbeispiel ein Wert von „3” eine höchste Priorität darstellt, während ein Wert von „0” eine niedrigste Priorität darstellt, so daß die Anforderung mit der höheren Priorität die Anforderung mit der niedrigeren Priorität umgehen kann.
  • Um eine Permanent-Aktivitäts-Blockade-Situation zu vermeiden, enthält das Livelock-Zählerregister 156 Informationen darüber, wie viele aufeinanderfolgende Anforderungen (oder Antworten) mit der höheren Priorität Anforderungen (oder Antworten) mit der niedrigeren Priorität umgeben können. Es wird darauf hingewiesen, daß das Livelock-Zählerregister 156 nur in den Situationen aktiv ist, in denen die Anforderung mit der höheren Priorität die Anforderung mit der niedrigeren Priorität umgeht. Falls in der Tat keine Anforderung (oder Antwort) mit der niedrigeren Priorität in der geeigneten Warteschlange vorliegt, ist das Livelock-Zählerregister 156 nicht aktiv.
  • Obwohl nur einige Ausführungsbeispiele der vorliegenden Erfindung im Detail beschrieben wurden, wird darauf hingewiesen, daß die Erfindung in anderen spezifischen Formen ausgeführt werden kann, ohne von dem Wesen oder dem Schutzbereich der Erfindung abzuweichen. Daher sollen die vorliegenden Beispiele beispielhaft und nicht beschränkend sein, und die Erfindung soll nicht auf die hier gegebenen Einzelheiten beschränkt sein, sondern kann innerhalb des Schutzbereichs der angehängten Ansprüche modifiziert werden.

Claims (12)

  1. Ein Verfahren zum Beschleunigen des Zugriffs auf eine Speicherseite, die in einer Speicherbank in einem Mehrbanktypspeicher mit einer Menge von N Speicherbänken enthalten ist, durch eine Speichersteuerung, wobei die Speichersteuerung eine Menge von M Seitenregistern umfaßt, wobei die Menge von M Seitenregistern kleiner ist als die Menge von N Speicherbänken, so daß nicht jede der N Speicherbänke in den M Seitenregistern dargestellt ist, wobei ein Seitenregister angeordnet ist, um eine ausgewählte Bankzahl, die einer ausgewählten der N Speicherbänke entspricht, eine Offen-Seite-Adresse, die innerhalb der ausgewählten Bank positioniert ist, und einen Offen-Seite-Status zu speichern, und wobei die Speichersteuerung ferner eine einstellbare Komparatoreinheit umfaßt, die mit jedem der Mehrzahl von Seitenregistern gekoppelt ist, und wobei die Speichersteuerung ferner einen Zufallsseitenregisterzahlgenerator umfaßt, der angeordnet ist, um zufällig eine Ganzzahl zwischen und einschließlich 1 und M zu erzeugen, wobei das Verfahren folgende Schritte umfaßt: Empfangen einer ankommenden Systemadreßanforderung, wobei die ankommende Systemadreßanforderung eine angeforderte Bankzahl und eine angeforderte Seitenzahl umfaßt; falls ein Seitenregister, dessen gespeicherte Bankzahl der angeforderten Bankzahl entspricht, durch den Komparator lokalisiert wird: Vergleichen der gespeicherten Seitenadresse, die in dem lokalisierten Seitenregister enthalten ist, mit der angeforderten Seitenadresse; und Zugreifen auf die angeforderte Seite in der Speicherbank, die der angeforderten Bankzahl entspricht, wenn die gespeicherte Seitenadresse mit der angeforderte Seitenadresse für die angeforderte Speicherbank übereinstimmt; und falls die angeforderte Bankzahl nicht der gespeicherten Bankzahl entspricht und die angeforderte Seitenzahl nicht der gespeicherten Seitenadresse entspricht und alle M Seitenregister benutzt werden: Schließen der gespeicherten Seite von dem Seitenregister der Bank, dessen Nummer durch den Zufallsseitenregisterzahlgenerator gegeben ist; Öffnen einer neuen Seite unter Verwendung der Seitenadresse von der ankommenden Systemadresse; und Zugreifen auf die angeforderte Bank.
  2. Ein Verfahren gemäß Anspruch 1, bei dem das Speicherelement ein SDRAM ist.
  3. Ein Verfahren gemäß Anspruch 2, bei dem der Komparator ein einstellbarer Komparator ist.
  4. Ein Verfahren gemäß Anspruch 3, bei dem der einstellbare Komparator auf der Basis von Betriebscharakteristika des Mehrbankspeicherelements konfiguriert ist.
  5. Ein Verfahren gemäß Anspruch 4, bei dem die Betriebscharakteristika in einer Adreßraumsteuereinheit gespeichert sind, die mit der Speichersteuerung gekoppelt ist.
  6. Ein Verfahren gemäß Anspruch 5, bei dem, wenn die spezielle Bankzahl bestimmt ist, die Betriebscharakteristika der speziellen Bank verwendet werden, um den einstellbaren Komparator zu konfigurieren.
  7. Ein Verfahren zum Beschleunigen eines Speicherzugriffs einer Speicherseite, die in einer Speicherbank in einem Mehrbanktypspeicher mit einer Menge von N Speicherbänken enthalten ist, durch eine Speichersteuerung, wobei die Speichersteuerung eine Menge von M Seitenregistern umfaßt, wobei die Menge von M Seitenregistern kleiner ist als die Menge von N Speicherbänken, so daß nicht jede der N Speicherbänke in den M Seitenregistern dargestellt ist, wobei ein Seitenregister angeordnet ist, um eine ausgewählte Bankzahl, die einer ausgewählten der N Speicherbänke entspricht, eine Offen-Seite-Adresse, die innerhalb der ausgewählten Bank positioniert ist, und einen Offen-Seite-Status zu speichern, und wobei die Speichersteuerung ferner eine einstellbare Komparatoreinheit umfaßt, die mit jedem der Mehrzahl von Seitenregistern gekoppelt ist, und wobei die Speichersteuerung ferner einen am wenigsten kürzlich verwendeten Generator umfaßt, der angeordnet ist, um die Zahl des ältesten ungenutzten Seitenregisters zu erzeugen, wobei das Verfahren folgende Schritte umfaßt: Empfangen einer ankommenden Systemadreßanforderung, wobei die ankommende Systemadreßanforderung eine angeforderte Bankzahl und eine angeforderte Seitenzahl umfaßt; falls ein Seitenregister, dessen gespeicherte Bankzahl der angeforderten Bankzahl entspricht, durch den Komparator lokalisiert wird: Vergleichen der gespeicherten Seitenadresse, die in dem lokalisierten Seitenregister enthalten ist, mit der angeforderten Seitenadresse; und Zugreifen auf die angeforderte Seite in der Speicherbank, die der angeforderten Bankzahl entspricht, wenn die gespeicherte Seitenadresse mit der angeforderten Seitenadresse für die angeforderte Speicherbank übereinstimmt; und falls die angeforderte Bankzahl nicht der gespeicherten Bankzahl entspricht und die angeforderte Seitenzahl nicht der gespeicherten Seitenadresse entspricht und alle M Seitenregister benutzt werden: Schließen der gespeicherten Seite von dem Seitenregister der Bank, dessen Zahl durch den am wenigsten kürzlich verwendeten Seitenregisterzahlgenerator gegeben ist; Öffnen einer neuen Seite unter Verwendung der Seitenadresse von der ankommenden Systemadresse; und Zugreifen auf die angeforderte Bank.
  8. Ein Verfahren gemäß Anspruch 7, bei dem die Speichervorrichtung ein SDRAM ist.
  9. Ein Verfahren gemäß Anspruch 8, bei dem der Komparator ein einstellbarer Komparator ist.
  10. Ein Verfahren gemäß Anspruch 9, bei dem der einstellbare Komparator auf der Basis von Betriebscharakteristika der Mehrbankspeichervorrichtung konfiguriert ist.
  11. Ein Verfahren gemäß Anspruch 10, bei dem die Betriebscharakteristika in einer Adreßraumsteuereinheit gespeichert sind, die mit der Speichersteuerung gekoppelt ist.
  12. Ein Verfahren gemäß Anspruch 11, bei dem, wenn die spezielle Bankzahl bestimmt wird, die Betriebscharakteristika der speziellen Bank verwendet werden, um den einstellbaren Komparator zu konfigurieren.
DE19983745A 1998-11-16 1999-11-15 Verwendung von Seitenetikettregistern um einen Zustand von physikalischen Seiten in einer Speichervorrichtung zu verfolgen Expired - Lifetime DE19983745B9 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US10893098P 1998-11-16 1998-11-16
US60/108,930 1998-11-16
US09/439,303 1999-11-12
US09/439,303 US6374323B1 (en) 1998-11-16 1999-11-12 Computer memory conflict avoidance using page registers
PCT/US1999/027021 WO2000029957A1 (en) 1998-11-16 1999-11-15 Using page tag registers to track a state of physical pages in a memory device

Publications (2)

Publication Number Publication Date
DE19983745B3 DE19983745B3 (de) 2012-10-25
DE19983745B9 true DE19983745B9 (de) 2012-11-08

Family

ID=26806430

Family Applications (2)

Application Number Title Priority Date Filing Date
DE19983745T Granted DE19983745T1 (de) 1998-11-16 1999-11-15 Verwendung von Seitenetikettregistern um einen Zustand von physikalischen Seiten in einer Speichervorrichtung zu verfolgen
DE19983745A Expired - Lifetime DE19983745B9 (de) 1998-11-16 1999-11-15 Verwendung von Seitenetikettregistern um einen Zustand von physikalischen Seiten in einer Speichervorrichtung zu verfolgen

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE19983745T Granted DE19983745T1 (de) 1998-11-16 1999-11-15 Verwendung von Seitenetikettregistern um einen Zustand von physikalischen Seiten in einer Speichervorrichtung zu verfolgen

Country Status (7)

Country Link
US (1) US6374323B1 (de)
JP (1) JP2002530743A (de)
KR (1) KR20010086035A (de)
CN (1) CN1282925C (de)
DE (2) DE19983745T1 (de)
GB (1) GB2359909B (de)
WO (1) WO2000029957A1 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7047391B2 (en) * 1998-09-14 2006-05-16 The Massachusetts Institute Of Technology System and method for re-ordering memory references for access to memory
US6453370B1 (en) * 1998-11-16 2002-09-17 Infineion Technologies Ag Using of bank tag registers to avoid a background operation collision in memory systems
US6490674B1 (en) * 2000-01-28 2002-12-03 Hewlett-Packard Company System and method for coalescing data utilized to detect data hazards
US6535966B1 (en) * 2000-05-17 2003-03-18 Sun Microsystems, Inc. System and method for using a page tracking buffer to reduce main memory latency in a computer system
KR100644596B1 (ko) 2000-07-27 2006-11-10 삼성전자주식회사 버스 시스템 및 그 버스 중재방법
US6684311B2 (en) * 2001-06-22 2004-01-27 Intel Corporation Method and mechanism for common scheduling in a RDRAM system
US7007133B2 (en) * 2002-05-29 2006-02-28 Micron Technology, Inc. Synchronous memory open page register
JP2004078683A (ja) * 2002-08-20 2004-03-11 Toshiba Corp コンピュータシステムおよび共有メモリ制御方法
US7308510B2 (en) * 2003-05-07 2007-12-11 Intel Corporation Method and apparatus for avoiding live-lock in a multinode system
US7404047B2 (en) * 2003-05-27 2008-07-22 Intel Corporation Method and apparatus to improve multi-CPU system performance for accesses to memory
US7231499B2 (en) * 2003-12-17 2007-06-12 Broadcom Corporation Prioritization of real time / non-real time memory requests from bus compliant devices
JP4419074B2 (ja) * 2004-11-15 2010-02-24 エルピーダメモリ株式会社 半導体記憶装置
CN100385417C (zh) * 2005-06-15 2008-04-30 乐金电子(惠州)有限公司 请求页面调度方法及将有关页面信息输入到页面内的方法
US20070174549A1 (en) * 2006-01-24 2007-07-26 Yevgen Gyl Method for utilizing a memory interface to control partitioning of a memory module
KR101286643B1 (ko) 2007-04-05 2013-07-22 삼성전자주식회사 독립적으로 뱅크의 모드를 선택하는 반도체 메모리 장치,메모리 컨트롤러 및 그 제어 방법
CN101639817B (zh) * 2009-03-13 2012-01-25 青岛海信信芯科技有限公司 一种存储器的控制方法、存储器控制器和存储器控制系统
US20100318746A1 (en) * 2009-06-12 2010-12-16 Seakr Engineering, Incorporated Memory change track logging
US8856488B2 (en) 2010-02-11 2014-10-07 Memory Technologies Llc Method for utilizing a memory interface to control partitioning of a memory module
KR101121902B1 (ko) * 2010-06-22 2012-03-20 성균관대학교산학협력단 변경된 메모리 주소를 추적하는 트랜잭션 메모리 시스템 및 방법
KR101292309B1 (ko) * 2011-12-27 2013-07-31 숭실대학교산학협력단 반도체칩 및 메모리 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
KR20160061704A (ko) 2014-11-24 2016-06-01 삼성전자주식회사 페이지 상태 알림 기능이 있는 메모리 장치
US9601193B1 (en) * 2015-09-14 2017-03-21 Intel Corporation Cross point memory control
US10090067B1 (en) 2017-05-30 2018-10-02 Seagate Technology Llc Data storage device with rewritable in-place memory
US11449431B2 (en) 2017-05-30 2022-09-20 Seagate Technology Llc Data storage device with rewritable in-place memory
US10147501B1 (en) 2017-05-30 2018-12-04 Seagate Technology Llc Data storage device with rewriteable in-place memory
US10068663B1 (en) 2017-05-30 2018-09-04 Seagate Technology Llc Data storage device with rewriteable in-place memory
CN116225977B (zh) * 2023-05-09 2023-08-11 中信建投证券股份有限公司 一种存储地址确定方法及电路系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4937791A (en) * 1988-06-02 1990-06-26 The California Institute Of Technology High performance dynamic ram interface
JPH08255107A (ja) * 1994-11-29 1996-10-01 Toshiba Corp ディスプレイコントローラ
WO1998019248A1 (en) * 1996-10-28 1998-05-07 3Com Corporation Shared sdram memory system and controller
WO1998045780A2 (en) * 1997-04-07 1998-10-15 Intel Corporation Method and apparatus for reordering commands and restoring data to original command order

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5893917A (en) * 1996-09-30 1999-04-13 Intel Corporation Memory controller and method of closing a page of system memory
US5940848A (en) * 1997-01-14 1999-08-17 Intel Corporation Computer system and method for efficiently controlling the opening and closing of pages for an aborted row on page miss cycle
US5969997A (en) * 1997-10-02 1999-10-19 International Business Machines Corporation Narrow data width DRAM with low latency page-hit operations
US6052134A (en) * 1997-12-22 2000-04-18 Compaq Computer Corp. Memory controller and method for dynamic page management
US6199145B1 (en) * 1998-02-27 2001-03-06 Intel Corporation Configurable page closing method and apparatus for multi-port host bridges
US6219765B1 (en) * 1998-08-03 2001-04-17 Micron Technology, Inc. Memory paging control apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4937791A (en) * 1988-06-02 1990-06-26 The California Institute Of Technology High performance dynamic ram interface
JPH08255107A (ja) * 1994-11-29 1996-10-01 Toshiba Corp ディスプレイコントローラ
WO1998019248A1 (en) * 1996-10-28 1998-05-07 3Com Corporation Shared sdram memory system and controller
WO1998045780A2 (en) * 1997-04-07 1998-10-15 Intel Corporation Method and apparatus for reordering commands and restoring data to original command order

Also Published As

Publication number Publication date
DE19983745T1 (de) 2002-03-28
US6374323B1 (en) 2002-04-16
WO2000029957A1 (en) 2000-05-25
GB2359909A (en) 2001-09-05
CN1333891A (zh) 2002-01-30
GB2359909B (en) 2003-10-29
JP2002530743A (ja) 2002-09-17
DE19983745B3 (de) 2012-10-25
GB0111924D0 (en) 2001-07-04
CN1282925C (zh) 2006-11-01
KR20010086035A (ko) 2001-09-07

Similar Documents

Publication Publication Date Title
DE19983737B3 (de) System zum Neuordnen von Befehlen, die von einer Speichersteuerung zu Speichervorrichtungen ausgegeben werden, unter Verhinderung von Kollision
DE19983745B9 (de) Verwendung von Seitenetikettregistern um einen Zustand von physikalischen Seiten in einer Speichervorrichtung zu verfolgen
DE69834026T2 (de) Verfahren und vorrichtung zur befehlswiedereinordnung und wiederherstellung von daten zur originalen befehlsreihenfolge
DE69722117T2 (de) Einheitliche Speicherarchitektur mit dynamischer Grafikspeicherzuordnung
DE112011103916B4 (de) Speicherzugriffseinheit für gemeinsame Speichernutzung zwischen mehreren Prozessoren
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE60011797T2 (de) Ausführung von mehreren fäden in einem parallelprozessor
DE69834739T2 (de) Ausgleichen von daten die zwischen verschiedenen leitern fliessen die auf unterschiedlichen frequenzen operieren
DE69838387T2 (de) Verfahren und vorrichtung in einem paketenleitweglenkungsschalter um den zugriff zu einem gemeinsamen speicher auf verschiedenen datenraten zu steuern
US6430642B1 (en) Methods and apparatus for prioritization of access to external devices
DE60030767T2 (de) Datenzuweisung zu threads in einem multi-threaded netzwerkprozessor
US6385708B1 (en) Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses
DE60010907T2 (de) Sram-steuerungvorrichtung für parallele prozessorarchitektur mit adressen- und befehlswarteschlange und arbiter
US6216178B1 (en) Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution
DE60009355T2 (de) Busbrücke mit einer speichersteuerung mit verbessertem speicheranforderungsarbitrierungsmechanismus
DE2944419C2 (de)
US6510474B1 (en) Methods and apparatus for re-reordering command and data packets in order to restore an original order of out-of-order memory requests
DE112005002432B4 (de) Verfahren und Vorrichtung zum Bereitstellen eines Quellenoperanden für eine Instruktion in einem Prozessor
DE10296959T5 (de) System und Verfahren zum Steuern der Buszuteilung während Cache-Speicher-Burstzyklen
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102013018135B4 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
US6286075B1 (en) Method of speeding up access to a memory page using a number of M page tag registers to track a state of physical pages in a memory device having N memory banks where N is greater than M
US6532505B1 (en) Universal resource access controller
DE112012004926B4 (de) Gemeinsame Speichernutzung durch Prozessoren
DE102018119881A1 (de) Verwaltung einer DRAM-Bankaktivierung