DE112010001404T5 - Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen - Google Patents

Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen Download PDF

Info

Publication number
DE112010001404T5
DE112010001404T5 DE112010001404T DE112010001404T DE112010001404T5 DE 112010001404 T5 DE112010001404 T5 DE 112010001404T5 DE 112010001404 T DE112010001404 T DE 112010001404T DE 112010001404 T DE112010001404 T DE 112010001404T DE 112010001404 T5 DE112010001404 T5 DE 112010001404T5
Authority
DE
Germany
Prior art keywords
processor
memory
mmio
attribute
write
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.)
Ceased
Application number
DE112010001404T
Other languages
English (en)
Inventor
David J. Harriman
Andrew F. Glew
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112010001404T5 publication Critical patent/DE112010001404T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation

Abstract

Verfahren und Vorrichtungen zur opportunistischen Verbesserung einer Memory Mapped Input/Output(MMIO)-Anfrageabwicklung (z. B. aufgrund von Zielberichten von Raumerfordernissen) werden beschrieben. In einer Ausführungsform kann eine Logik in einem Prozessor ein oder mehrere Bits in einer Nachricht detektieren, welche dafür bestimmt ist, von einem Eingabe/Ausgabe(I/O)-Gerät übertragen zu werden. Das eine oder die mehreren Bits können eine Memory Mapped I/O(MMIO)-Information entsprechend einem oder mehrerer Attributen des I/O-Geräts anzeigen. Andere Ausführungsformen werden auch offenbart.

Description

  • GEBIET
  • Die vorliegende Erfindung betrifft allgemein das Gebiet der Elektronik. Insbesondere betrifft eine Ausführungsform der Erfindung Techniken zur opportunistischen Verbesserung einer Memory Mapped Input/Output(MMIO)-Anfrageabwicklung, z. B. aufgrund eines Zielberichts über Raumerfordernisse.
  • HINTERGRUND
  • MMIO betrifft im Allgemeinen einen Mechanismus zum Ausführen von Eingabe/Ausgabe-Vorgängen, z. B. zwischen einem Prozessor und einem Peripheriegerät in einem Computer. Beispielsweise können ausgewählte oder reservierte Bereiche einer Speichervorrichtung, die durch einen Prozessor adressierbar sind (z. B. für Lese- und Schreibvorgänge) abgebildet werden, um ein oder mehrere Eingabe/Ausgabe(„I/O” oder „IO”)-Geräte auszuwählen. Auf diese Weise kann eine Kommunikation zwischen Prozessoren und I/O-Geräten über ein Speichergerät stattfinden.
  • Ein aktueller Prozessor und Chipsatz, welche einen MMIO-Zugriff durch einen Prozessor abwickeln (z. B. in einem Speicher, der als „Uncached” (UC) markiert ist), können durch Kompabilitätserfordernisse zu Altgeräten bestimmt sein, die allgemein sehr viel konservativer sein können, als es für die Mehrzahl der Implementationen notwendig wäre. Es wurden einige Versuche unternommen, dies zu umgehen, durch Definieren von neuen Speicherraumtypen, wie z. B. Write-Combining (WC), jedoch können solche Ansätze durch Systemsoftware konfiguriert werden und können dadurch nur benutzt werden, wenn die Implementierung einer neuen Systemsoftware erforderlich wird, und wenn potentielle neue Anwendungssoftware akzeptiert wird. Häufig ist dies nicht akzeptabel aufgrund von erhöhten Kosten und der Vertriebszeit. Stattdessen muss man möglicherweise mit den Leistungskonsequenzen von Verhaltensweisen leben, die nahezu immer unnötig konservativ sein können.
  • Kurze Beschreibung der Zeichnungen
  • Die detaillierte Beschreibung wird in Bezug auf die beigefügten Figuren gegebenen. In den Figuren bezeichnet die linke Ziffer(n) eines Bezugszeichens die Figur, in der die Bezugszeichen das erste Mal auftreten. Die Verwendung gleicher Bezugszeichen in unterschiedlichen Figuren kann gleiche oder identische Gegenstände bezeichnen.
  • 1, 45 und 7 zeigen Blockdiagramme von Ausführungsformen eines Computersystems, welche verwendet werden können, um verschiedene Ausführungsformen, die hierin beschrieben werden, zu implementieren.
  • 2 zeigt ein Vergleichsdiagramm entsprechend einer Ausführungsform.
  • 3 zeigt Kopf- und MMIO-Bereichsattribute gemäß einer Ausführungsform.
  • 6 zeigt ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform.
  • Detaillierte Beschreibung
  • In der folgenden Beschreibung sind zahlreiche Details dargestellt, um ein vollständiges Verständnis der verschiedenen Ausführungsformen zu geben. Einige Ausführungsformen können jedoch ohne die spezifischen Details ausgeführt werden. In anderen Fällen wurden gut bekannte Verfahren, Prozeduren, Komponenten und Schaltungen nicht im Detail beschrieben, um nicht von den besonderen Ausführungsformen abzulenken.
  • Einige Ausführungsformen betreffen wirksame Techniken zum Differenzieren der Anfrageablieferungserfordernisse für verschiedene MMIO-Räume. In einer Ausführungsform kann ein Gerät (und/oder sein zugehöriger Softwaretreiber in einer Ausführungsform) konfiguriert werden, um auf die Erfordernisse für MMIO-Zugriffe auf dieses Gerät Rücksicht zu nehmen und diese zu verstehen. Durch Vorsehen eines Mechanismus, um diese Information zu einem Host-Prozessor/Kern/Nicht-Kern/Chipsatz (welche umgekehrt eine Logik enthalten würden, um die Geräte spezifische Informationen zu detektieren und zu verarbeiten) zu kommunizieren, können die voreingestellten Anfrageabwicklungsverhaltensweisen (z. B. verknüpft mit der UC-Speicherimplementierung) opportunistisch modifiziert werden. Darüber hinaus können Altgeräte zum Teil unberücksichtigt bleiben, weil sie die voreingestellten UC-Anfrageabwicklungseigenschaften beibehalten.
  • Insbesondere können in einer Ausführungsform neue I/O-Geräte die Anfrageabwicklungserfordernisse anzeigen, insbesondere Speicherbereiche, welche auf das jeweilige I/O-Gerät abgebildet werden, unter Verwendung einer Nachricht, welche für diesen Zweck definiert ist, und/oder einer Information, welche in Abschlussnachrichten für prozessorinitiierte Anfragen auf diesen Bereich enthalten ist. Diese Information kann von dem Prozessor gespeichert oder zwischengespeichert werden, z. B. in einem Puffer, einem Datencache, einem dezidierten Cache, einem TLB (Translation Lookaside Buffer), einem Bloom-Filter (welcher z. B. einen Raum-effektive probabilistische Datenstruktur ist, die verwendet wird, um zu prüfen, ob ein Element ein Mitglied eines Satzes ist), oder in anderen Zwischenspeicher- oder Speicherstrukturen, welche zum Anzeigen von Anfrageabwicklungsattributen geeignet sind, wie z. B. Speichergeräte, die hier im Zusammenhang mit den 27 beschrieben werden. In einer Ausführungsform kann die zwischengespeicherte/gespeicherte Information unter vorbestimmten Bedingungen gelöscht werden in einem Versuch, um sicherzustellen, dass eine veraltete Information nicht verwendet wird.
  • Demgemäß stellen einige Ausführungsformen eine Möglichkeit zur Verfügung, eine MMIO-Leistung zu steigern, ohne dass es erforderlich ist, Systemsoftware zu aktivieren oder Systemsoftware zu modifizieren. Im Ergebnis unterstützen einige Ausführungsformen die weitere Verwendung von nicht modifizierter alter Hardware und/oder Software, während sie neuer Hardware ermöglichen, Leistungsverbesserungen zu erzielen, z. B. wie sie durch das Host-System, welches einen Prozessor umfasst, ermöglicht werden.
  • Insbesondere stellt 1 ein Blockdiagramm eines Computersystem 100 entsprechend einer Ausführungsform der Erfindung dar. Das System 100 kann einen oder mehrere Agenten 102-1 bis 102-M (gemeinsam hierin als „Agenten 102” oder noch allgemeiner als „Agent 102” bezeichnet) umfassen. In einer Ausführungsform kann/können eine oder mehrere der Agenten 102 irgendwelche Komponenten eines Computersystems sein, wie z. B. die Computersysteme, welche in Verbindung mit den 45 oder 7 beschrieben werden.
  • Wie in 1 dargstellt können die Agenten 102 über ein Netzwerk 104 kommunizieren. In einer Ausführungsform kann das Netzwerk 104 ein Computernetz umfassen, das es verschiedenen Agenten (wie z. B. Computergeräten) ermöglicht, Daten zu kommunizieren. In einer Ausführungsform kann das Netzwerk 104 ein oder mehrere Zwischenverbindungen (oder Zwischenverbindungsnetze) umfassen, die über einen seriellen Link (z. B. Punkt-zu-Punkt) oder über ein gemeinsam genutztes Kommunikationsnetz kommunizieren. Beispielsweise können einige Ausführungsformen eine Komponentenfehlerbeseitigung oder Validierung auf Links unterstützen, die eine Kombination mit vollständig gepufferten dualen In-Line-Speichermodulen (FBD) ermöglichen, z. B. wenn der FBD-Link ein serieller Link zum Koppeln eines Speichermoduls mit einem Host-Controllergerät (wie ein Prozessor oder ein Speicherhub) ist. Debug-Informationen können von dem FBD-Kanalhost gesendet werden, so dass die Debug-Informationen entlang des Kanals durch Kanalverkehrsspurerfassungstools (wie ein oder mehrere logische Analysatoren) beobachtet werden können.
  • In einer Ausführungsform kann das System 100 ein Schichtprotokollschema unterstützen, das eine physikalische Schicht, eine Sicherungsschicht, eine Leitungsschicht, eine Transportschicht und/oder eine Protokollschicht umfasst. Das Netz 104 kann ferner eine Datenübertragung (z. B. in Form von Paketen) von einem Protokoll (z. B. einem Prozessor mit Cache oder einem Speichercontroller mit Cache) zu einem anderen Protokoll für eine Punkt-zu-Punkt- oder ein gemeinsam genutztes Netzwerk unterstützen. In einigen Ausführungsformen kann das Netzwerk 104 auch eine Kommunikation zur Verfügung stellen, die ein oder mehrere Cachekohärenzprotokolle beinhalten.
  • Ferner können, wie durch die Pfeilrichtung in 1 gezeigt ist, die Agenten 102 Daten über das Netzwerk 104 senden und/oder empfangen. Dazu können einige Agenten eine unidirektionale Verbindung verwenden, während andere eine bidirektionale Verbindung für die Kommunikation verwenden können. Beispielsweise kann/können ein oder mehrere Agenten (wie z. B. Agent 102-M) Daten senden (z. B. über eine undirektionale Verbindung 106), ein oder mehrere andere Agenten (wie z. B. Agent 102-2) kann/können Daten empfangen (z. B. über eine unidirektionale Verbindung 108) während ein oder einige Agent(en) (wie z. B. Agent 102-1) sowohl Daten senden als auch empfangen kann (z. B. über eine bidirektionale Verbindung 110).
  • In einigen Situationen erkennt das I/O-Gerät die Reihenfolge und Datenabwicklungserfordernisse (welche hierin auch als „Attribute” bezeichnet werden), die mit den MMIO-Bereichen, welche zu dem I/O-Gerät gehört, verknüpft sind. Derzeitige Ansätze erfordern jedoch eine Systemkonfigurationssoftware, um das Memory Type Range Register (MTRR) oder Seitenattribute zu programmieren, um dem Prozessor bzw. der Plattform zu ermöglichen, diese Attribute zu erfassen. Im Ergebnis beschränkt dies die Anwendung auf Fälle, bei denen eine geeignete Systemsoftwareinfrastruktur existiert, und kann allgemein zu einer schlechten Skalierbarkeit führen.
  • Eine Ausführungsform stellt alternativ einen Mechanismus für ein I/O-Gerät zur Verfügung, um ein oder mehrere MMIO-Bereichsattribute (und/oder Daten auf Bestellung und Datenabwicklungserfordernisse des I/O-Geräts) zur Verfügung zu stellen, welche gespeichert würden, z. B. in einem History Buffer, Cache oder anderen Speichergeräten. Diese voreingestellten MMIO-Attribute würden zu den derzeitigen UC-Verhalten passen, bis ein Gerät (z. B. direkt oder über ein Zwischenverbindungsgerät wie einen Schalter) anzeigt, dass eine Abweichung annehmbar ist. Diese Anzeige kann mit einer Abschlussnachricht einer früheren Anfrage verbunden sein oder durch eine Nachricht, die durch einen Zugriff auf das Gerät ausgelöst wird (was eine Anzeige umfassen kann, welche eine solche Nachricht anfragt, z. B. weil es keinen Eintrag gibt, der einem MMIO-Bereich in einem entsprechenden Speicher/Cache des Prozessors entspricht). Diese Anzeige könnte auch mit einer Nachricht verknüpft sein, die selbständig von dem Gerät gesendet wird.
  • Eine Vielzahl von Aspekten der Transaktionsabwicklung kann aufgrund von Erfordernissen eines Geräts modifiziert werden (ein Prozessor ist jedoch nicht erforderlich, um alle diese Vorgänge zu implementieren und kann nur eine Untermenge in einigen Ausführungsformen ausführen). Beispielsweise könnten die folgenden Attribute beschrieben werden:
    • (1) Prefetchable – besitzt in der Regel keine Read-Nebeneffekte und gibt alle Bytes auf Read zurück unabhängig von den gesetzten Bytes (welche z. B. anzeigen, welche spezifischen Bytes beschrieben oder erforderlich sind, um der Speicheranfrage Genüge zu tun) und ermöglicht Write Merging (was weiter unten beschrieben wird). Beispielsweise hat Speicher, der Prefetchable (vorabladbar) ist, das Attribut, dass er die gleichen Daten zurückgibt, wenn er mehrfach gelesen wird, und dass er keinerlei Gerätezustände ändert, wenn er gelesen wird.
    • (2) Write-Through Type Caching – wenn ein Speicherort beschrieben wird, werden die zu schreibenden Werte unverzüglich in den Speicher geschrieben. Write-Through wird typischerweise Write-Back gegenübergestellt, welches das sofortige Schreiben vermeidet, typischerweise durch Erlangen einer exklusiven Inhaberschaft einer Cachezeile, Schreiben in die Cachezeile, jedoch nicht in den Speicher. Nach einem oder vieler solcher Writes wird die „Dirty”-Zeile in den Speicher geschrieben.
    • (3) Write Type(s) wie Combine/Collapse/Merge-Writes – Kombinieren separater jedoch sequentieller Writes im Speicher mit Adressen in steigender Reihenfolge in einem einzelnen großen Übertrag; Verwenden von gesetzten Bytes zum Verhindern des Überschreibens von Orten ist erlaubt, obgleich dies im Allgemeinen nicht möglich ist in einem PCIe (Peripheral Component Interconnect (PCI) express) aufgrund von einer Semantik gesetzter Bytes des PCIe. Merging Writes können die Verschmelzung separater jedoch sequentiell maskierter (Byte-Granularität) Speicher-Writes auf eine DWORD-Adresse in einen einzelnen Größeren einbeziehen, unter der Voraussetzung, dass alle Byteorte nur einmal beschrieben werden. Auch Collapsing Writes können sequentielle Speicher-Writes auf die gleiche Adresse einbeziehen, die in einen einzelnen Übertrag konvertiert werden, indem nur die letzten Daten geschrieben werden. Dies ist im Allgemeinen im PCI nicht erlaubt, obgleich ein WC-Speichertyp verwendet werden kann, um dies auszuführen.
    • (4) Speculative Access – MMIO-Speicherorte können Nebeneffekte haben – sie können Vorgänge ausführen wie ein Rebooten des Systems in Reaktion auf Ladevorgänge. Einige Mikroprozessoren benutzen „spekulative” Techniken, wie z. B. Cut-Off-Order-Execution und Abzweigevorhersagen, um die Leistung zu erhöhen. Auf solchen Systemen kann die Hardware Mikroarchitektur Ladevorgänge (und andere Operationen) spekulativ ausführen, die der Programmierer nicht auszuführen beabsichtigt, oder in einer Reihenfolge, die sich von der vom Programmierer spezifizierten unterscheidet. Die Hardware stellt sicher, dass die Wirkungen solcher Vorgänge wie von dem Programmierer beabsichtigt erscheinen, jedoch typischerweise nur für gewöhnlichen Speicher, nicht für MMIO. Gewöhnlicher Speicher besitzt keine Nebeneffekte auf Ladevorgänge, spekulativ oder sonstige. MMIO kann offensichtlich schlechtes Verhalten aufweisen, falls spekulative Ladevorgänge von MMIO durchgeführt werden. Zu diesem Zweck wird entsprechend einer Ausführungsform angezeigt, welche Bereiche des Speichers spekulative Ladevorgänge zulassen und welche Bereiche nicht.
    • (5) Memory Ordering Model – einige Computerprozessoren können Memory Ordering Modelle implementieren, wie Sequential Consistency, Total Store Ordering, Processor Consistency oder Weak Ordering. In einigen Implementation ermöglichen Weak Memory Ordering Modelle einfachere Hardware, Stringer Memory Ordering Modelle können jedoch von einigen Programmierern von Parallelanwendungen berücksichtigt werden.
  • Die folgende Figur stellt dar, wie diese Art von Information verwendet werden kann, um die Leistung einer Sequenz von Prozessorzugriffen auf ein I/O-Gerät zu verbessern. Insbesondere stellt die 2 eine beispielhaften Codesequenz und die sich daraus ergebenden Busvorgänge für ein beispielhaftes geläufiges System gegenüber einer Ausführungsform der Erfindung (welche zu einer Leistungserhöhung führt) dar.
  • Wie in 2 gezeigt ist, sind alle diese Vorgänge des Prozessors auf das Gerät seriell – der Prozessorbetrieb wird angehalten, um auf die Ergebnisse aus jedem Read zu warten, bevor mit der nächsten Anweisung fortgefahren wird. In einem optimierten System (auf der rechten Seite der Figur gezeigt) sind die Daten-Reads auf dem Gerät in einer Pipeline spekulativ hinter der Zustandsregisterleseoperation angeordnet. Wenn der Zustandstest fehlschlägt (z. B. wird der „OK”-Code ausgelassen), werden die Ergebnisse aus den Daten-Reads verworfen. In dem Fall, dass der Zustandslesetest erfolgreich ist, werden die Datenwerte verwendet. Es ist zu beachten, dass in beiden Fällen die Reads in der Reihenfolge stattfinden, so dass es keine Möglichkeit gibt, dass z. B. die Daten-Reads hinter den Zustands-Reads neu angeordnet werden. Es kann jedoch akzeptabel sein, dass die Daten-Reads untereinander in einigen Ausführungsformen neu geordnet werden könnten (obgleich dies in den Figur nicht gezeigt ist).
  • Damit der Prozessor/Chipsatz diese Art von Optimierung vornehmen kann, kommuniziert ferner das I/O-Gerät in einigen Ausführungsformen die Attribute des Speicherplatzes an den Prozessor/Chipsatz. Eine Art dies vorzunehmen ist durch Einfügen des Attributes/der Attribute in jede Read-Abschlussnachricht, welche durch das I/O-Gerät zurückgegeben wird. Für ein PCIe I/O-Gerät kann dies durch Ersetzen des Completer ID-Feldes (welches keine Architektur definierte Verwendung haben darf) durch ein MMIO Range Attribute-Feld, wie in 3 gezeigt, erfolgen.
  • Insbesondere stellt die 3 einen Completion Header mit MMIO Range Attributes Replacing Complete ID-Feld gemäß einer Ausführungsform dar. Das vorhergehend reservierte Bit MRA (MMIO Range Attributes) würde eine Abschlussnachricht einschließlich der MMIO Range Attribute anzeigen. Ein Prozessorzugriff auf einen MMIO-Bereich (z. B. einen 4K Beriech einer Linie eines UC-Speichers) ohne zwischengespeicherte/gespeicherte MMIO-Attribute wäre bei Verwendung der voreingestellten UC-Abwicklung abgeschlossen. Wenn eine Abschlussnachricht zurückgegeben wird, die MMIO Range Attribute anzeigt, die von voreingestellten UC-Attributen abweichen, würde diese Information gespeichert werden und dazu verwendet werden, zukünftige Zugriffe auf den gleichen Bereich entsprechend zu modifizieren.
  • Alternativ (oder zusätzlich) könnte ein Nachrichtenprotokoll benutzt werden, bei welchem entweder durch eine explizite Aufforderung von dem Prozessor oder durch eine implizite Aufforderung (wie durch einen Seitenzugriff) eines I/O-Gerätes ausgelöst, ein I/O-Gerät eine Nachricht zu dem Prozessor/Chipsatz senden würde, welche den MMIO-Range und zugehörige Attribute anzeigt. In einigen Ausführungsformen würden die Cache-Einträge von dem Prozessor/Chipsatz aufrecht erhalten werden, bis sie aufgrund der Cache-Kapazitätsbeschränkungen (z. B. unter Verwendung eines LRU(least recently used)-Algorithmus) oder aufgrund einer expliziten oder impliziten Aufforderung, einen Eintrag zu invalidieren, herausgeworfen werden. Jeder Zugriff durch einen Prozessor auf den Konfigurationsraum eines bestimmten Gerätes, um die Speicherbereichseinstellung zu ändern (z. B. PCIe BARs (base address registers)) würde die zwischengespeicherten Attributeinträge für das entsprechende Gerät invalidieren. Als eine Vereinfachung in einigen Ausführungsformen könnte man diese Einträge invalidieren, wenn irgendein PCIe-Konfigurationszugriff auf das Gerät erfolgt oder (noch einfacher) wenn irgendein PCIe-Konfigurationsschreibvorgang durchgeführt wird. Unter Verwendung eines Nachrichtenprotokolls könnte ein Gerät in einigen Ausführungsformen explizit zur Invalidierung oder zur Aktualisierung von Seitenattributen auffordern.
  • Ein Gerät könnte auch wünschen, die Attribute eines gegebenen Bereichs zu ändern, z. B., wenn es aus einem Betriebsmodus zu einem anderen wechselt, so dass es die am stärksten aggressiven oder effizienten Attribute in einem Modus verwenden kann, bei welchem eine solche Verwendung annehmbar ist, und diese Attribute auf weniger aggressive oder konservative Attribute ändern, wenn dies notwendig ist, anstelle den konservativeren Ansatz verwenden zu müssen, immer die weniger aggressiven Attribute anzuzeigen. Diese Technik könnte z. B. von einer Grafikkarte benutzt werden, welche einen Satz von Attributen auf Speicher auf der Karte anwendet, der der Verwendung durch die Grafikkarte zugeordnet ist, könnte jedoch einen anderen Satz von Attributen anwenden, wenn der gleiche Speicher auf der Karte der Verwendung durch eine GP-GPU (Generalized Programming-Graphics Processing Unit) Implementierung neu zugeordnet wird.
  • Wie in 3 gezeigt ist, können die Bits 0 bis 6 eines Bytes 4 verwendet werden, um MMIO Range-Attribute anzuzeigen. Die Bitwerte und entsprechende Anzeigen sind in der nachfolgenden Tabelle angegeben. Abhängig von der Implementierung kann ein gesetztes Bit oder ein gelöschtes Bit verwendet werden, um eine Option auszuwählen.
    Bit Falls 1b anzeigt:
    [0] Prefecthable – Bereit zum Vorabladen in diesen Raum
    [1] Speculative access – Bereit zum Ausgeben spekulativer Zugriffe in diesen Raum
    [2] Write-through type caching – diesen Bereich als WT behandeln
    [3] Write Combining – Bereit zum Kombinieren von Writes auf aufeinander folgende Adresse in Bündeln
    [4] Write Merging – Bereit zum Verbinden von verschiedenen Bytes des gleichen DW
    [5] Write Collapsing – Bereit zum Zusammenfallen aufeinander folgender Write auf die gleiche Adresse und nur die letzte auszuführen
    [6] Relaxed Ordering – Anwenden eines Attributes PCIe Relaxed Orderin auf Anfragen in diesem Bereich
  • Verschiedene Arten von Computersystemen können verwendet werden, um die Ausführungsformen, die hierin beschrieben werden (wie jene, welche im Zusammenhang mit den 2 bis 3 beschrieben sind) zu implementieren. Beispielsweise stellt 4 ein Blockdiagramm eines Abschnitts eines Computersystems 400 gemäß einer Ausführungsform dar. In einer Ausführungsform können verschiedene Komponenten des Systems 400 durch einen oder mehrere Agenten 102-1 und/oder 102-N implementiert werden, welche in Verbindung mit der 1 beschrieben wurden. Weitere Details hinsichtlich des Betriebs des Computersystems 400 werden hier in Verbindung mit 6 beschrieben.
  • Das System 400 kann einen oder mehrere Prozessoren 402-1 bis 402-N aufweisen (welche gemeinsam hierin als „Prozessoren 402” oder noch allgemeiner als „Prozessor 402” bezeichnet werden). Jeder der Prozessoren 402-1 bis 402-N kann verschiedene Komponenten aufweisen, wie z. B. privaten und gemeinsam genutzten Cache, Ausführungseinheit(en), ein oder mehrere Kerne usw. Ferner können die Prozessoren 402 über einen Bus 404 mit anderen Komponenten wie einem Schnittstellengerät 406 kommunizieren. In einer Ausführungsform kann das Schnittstellengerät 406 ein Chipsatz oder einen Speichercontrollerhub (MCH) sein. Ferner, wie weiter in Verbindung mit 7 beschrieben wird, können die Prozessoren 402 über eine Punkt-zu-Punkt(PtP)-Verbindung mit anderen Komponenten kommunizieren. Zusätzlich kann das Schnittstellengerät 406 mit einem oder mehreren Peripheriegeräten 408-1 bis 408-P kommunizieren (welche gemeinsam hierin als „Peripheriegeräte 408” oder einfacher als „Gerät 408” bezeichnet werden). Die Geräte 408 können in einer Ausführungsform ein Peripheriegerät sein, welches entsprechend der PCIe-Spezifikation kommuniziert.
  • Wie in 4 gezeigt ist, kann eine Schaltlogik 412 zwischen verschiedenen Agenten (z. B. Peripheriegeräte 408 und das Schnittstellengerät 406) gekoppelt sein. Die Schaltlogik 412 kann eine Attributlogik 420 umfassen, um Attributinformationen (wie jene, die im Zusammenhang mit den 2 bis 3 beschrieben wurden), z. B. im Auftrag eines oder mehrerer Peripheriegeräte 408, zu dem Schnittstellengerät 406 (oder einem Chipsatz wie dem Chipsatz 506 der 5) und/oder Prozessor(en) 402 zu senden. Ferner kann einer oder mehrere der Prozessoren 402 eine MMIO-Logik 422 wie gezeigt aufweisen, um die Informationen aus der Attributlogik 420 und/oder des/der Peripheriegeräts bzw. -geräte direkt zu empfangen. Der/Die Prozessor(en) kann/können eine Speichereinheit (oder einen Cache) aufweisen, um die Attribut/MMIO-Informationen zu speichern. Obgleich die Logik 420 in einer Schaltlogik 412 dargestellt ist, kann diese woanders im System 400, wie das Schnittstellengerät 406, angeordnet sein.
  • 5 stellt ein Blockdiagramm einer Ausführungsform eines Computersystems 500 dar. Einer oder mehrere der Agenten 102 der 1 und/oder das System 400 der 4 kann eine oder mehrere Komponenten des Computersystems 500 umfassen. Das Computersystem 500 kann eine oder mehrere zentrale Bearbeitungseinheiten (CPUs) 502 aufweisen (welche gemeinsam hierin als „Prozessoren 502” oder allgemeiner als „Prozessor 502” bezeichnet werden), die mit einem Verbindungsnetzwerk (oder Bus) 504 gekoppelt sind. Die Prozessoren 502 können jede Art von Prozessor sein, wie ein Mehrzweckprozessor, ein Netzwerkprozessor (welcher Daten bearbeiten kann, die über ein Computernetzwerk 505 kommuniziert werden) usw. (einschließlich eines Prozessors eines Computers mit reduziertem Befehlssatz (RISC) oder eines Computers mit komplexem Befehlssatz (CISC)). Ferner können die Prozessoren 502 einen Einzelkern- oder Mehrkernaufbau aufweisen. Die Prozessoren 502 mit einem Mehrkernaufbau können verschiedene Arten von Prozessorkernen auf dem gleichen Halbleiterelement mit integriertem Schaltkreis (IC) integrieren. Ferner können die Prozessoren 502 mit einem Mehrkernaufbau als symmetrische oder asymmetrische Multiprozessoren implementiert sein.
  • Der Prozessor 502 kann einen oder mehrere Cache (nicht gezeigt) aufweisen, welcher ein privater oder einem gemeinsam genutzter Cache in verschiedenen Ausführungsformen ist. Allgemein speichert ein Cache Daten entsprechend der ursprünglichen Daten, welche woanders gespeichert oder früher bearbeitet wurden, zwischen. Um die Speicherzugriffslatenz zu reduzieren, kann, nachdem Daten in einem Cache gespeichert sind, eine weitere Verwendung durch Zugriff auf eine zwischengespeicherte Kopie erfolgen, anstatt auf die ursprünglichen Daten zurückgreifen oder diese erneut zu berechnen. Der Cache kann jede Art von Cache sein, wie z. B. ein Level 1(L1)-Cache, ein Level 2(L2)-Cache, ein Level 3(L3)-Cache, ein Mid-Level-Cache, ein Last-Level-Cache (LLC) usw., um elektronische Daten (z. B. einschließlich Anweisungen) zu speichern, welche von einer oder mehreren Komponenten des Systems 500 verwendet werden.
  • Ein Chipsatz 506 kann zusätzlich mit dem Verbindungsnetzwerk 504 gekoppelt sein. In einer Ausführungsform kann der Chipsatz 506 gleich oder ähnlich zu dem Schnittstellengerät 406 der 4 sein. Ferner kann der Chipsatz 506 einen Speichercontrolhub (MCH) 508 aufweisen. Der MCH 508 kann einen Speichercontroller 510 aufweisen, der mit einem Speicher 512 gekoppelt ist. Der Speicher 512 kann Daten speichern, z. B. Sequenzen von Anweisungen, die von dem Prozessor 502 oder jedem anderen Gerät, welches in Verbindung mit den Komponenten des Computersystems 500 stehen, ausgeführt werden. In einer Ausführungsform kann der Speicher 512 gleich oder ähnliche dem Speicher 411 der 4 sein. In einer Ausführungsform der Erfindung kann der Speicher 512 auch einen oder mehrere flüchtige Speichergeräte (oder Speicher) aufweisen, wie Random Access Memory (RAM), Dynamic RAM (DRAM), synchroner DRAM (SDRAM), statischer RAM (SRAM) usw. Nichtflüchtige Speicher können auch verwendet werden, wie eine Festplatte. Zusätzliche Geräte können mit dem Verbindungsnetzwerk 504 gekoppelt sein, wie mehrere Prozessoren und/oder mehrere Systemspeicher.
  • Der MCH 504 kann ferner eine Grafikschnittstelle 514 aufweisen, die mit einem Anzeigegerät 516 gekoppelt ist (z. B. über einen Grafikbeschleuniger in einer Ausführungsform). In einer Ausführungsform kann die Grafikschnittstelle 514 mit dem Anzeigegerät 516 über PCIe gekoppelt sein. In einer Ausführungsform der Erfindung kann das Anzeigegerät 516 (wie ein Flachbildschirm) mit der Grafikschnittstelle 514 durch beispielsweise einen Signalwandler gekoppelt sein, der eine digitale Darstellung eines Bildes, welches in einem Speichergerät gespeichert ist, wie einen Videospeicher oder Systemspeicher (z. B. Speicher 512), in Anzeigesignale übersetzt, die interpretiert und von der Anzeige 516 angezeigt werden.
  • Wie in 5 gezeigt ist, kann eine Hubschnittstelle 518 den MCH 508 mit einem Eingabe/Ausgabe-Controlhub (ICH) 520 koppeln. Der ICH 520 kann eine Schnittstelle zu Eingabe/Ausgabe-Geräten bereitstellen, welche mit dem Computersystem 500 gekoppelt sind. Der ICH 520 kann mit einem Bus 522 durch eine Peripheriebrücke (oder Controller) 524 gekoppelt sein, wie eine Peripheral Component Interconnect(PCI)-Brücke, welche kompatibel zu der PCIe-Spezifikation sein kann, einen Universal Serial Bus(USB)-Controller usw. Die Brücke 524 kann einen Datenweg zwischen dem Prozessor 502 und Peripheriegeräten bereitstellen. Andere Arten von Topologien können verwendet werden. Mehrere Busse können mit dem ICH 520 z. B. durch mehrere Brücken oder Controller gekoppelt sein. Beispielsweise kann der Bus 522 zu der PCI-Local Bus Specification, Version 3.0, 2004, erhältlich von PCI Special Interest Group, Portland, Oregon, USA (nachfolgend als „PCI-Bus” bezeichnet) kompatibel sein. Alternativ kann der Bus 522 einen Bus umfassen, der zu der PCI-X Spezifikation Version 3.0a, 2003 (nachfolgend als PCI-X-Bus” bezeichnet) und/oder PCI-Express(PCIe)-Spezifikation (PCIe Spezifikation, Version 2.0, 2006) erhältlich von der vorhergehend genannten PCI Special Interest Group, Portland, Oregon, USA kompatibel sein. Ferner kann der Bus 522 andere Arten und Konfigurationen von Bussystemen umfassen. Darüber hinaus können andere Peripheriegeräte, welche mit dem ICH 520 gekoppelt sind, in verschiedenen Ausführungsformen der Erfindung Integrated Drive Electronics (IDE) oder Small Computer System Interface (SCSI), Festplatte(n), USB-Anschluss(Anschlüsse), eine Tastatur, eine Maus, Parallelschnittstelle(n), seriellen Anschluss (Anschlüsse), Floppydisk-Laufwerk(e), Digital Output Support (z. B. Digital Video Interface (DVI)) usw. umfassen.
  • Der Bus 522 kann mit einem Audiogerät 526, einem oder mehreren Diskettenlaufwerken 528 und einem Netzwerkadapter 530 (welcher ein NIC in einer Ausführungsform sein kann) gekoppelt sein. In einer Ausführungsform kann der Netzwerkadapter 530 oder andere Geräte, die mit dem Bus 522 gekoppelt sind, mit dem Chipsatz 506 über die Schaltlogik 512 (welche die gleiche oder ähnlich der Logik 512 der 4 in einigen Ausführungsformen sein kann) kommunizieren. Andere Geräte können mit dem Bus 522 gekoppelt sein. Ferner können verschiedene Komponenten (wie der Netzwerkadapter 530) mit dem MCH 508 in einigen Ausführungsformen der Erfindung gekoppelt sein. Zusätzlich kann der Prozessor 502 und der MCH 508 zur Bildung eines einzelnen Chips kombiniert sein. In einer Ausführungsform kann der Speichercontroller 510 in einer oder mehreren der CPUs 502 vorgesehen sein. Ferner kann in einer Ausführungsform der MCH 508 und der ICH 520 in einem Peripheral Control Hub (PCH) kombiniert sein.
  • Zusätzlich kann das Rechnersystem 500 flüchtigen und/oder nichtflüchtigen Speicher (oder Speichergeräte) umfassen. Beispielsweise kann nichtflüchtiger Speicher eines oder mehrer des Folgenden umfassen: Nurlesespeicher (ROM), programmierbarer ROM (PROM), löschbarer PROM (EPROM), elektronischer EPROM (EEPROM), eine Festplatte (z. B. 528), eine Floppydisk, ein Compaktdisk ROM (CD-ROM), eine Digital Versatile Disk (DVD), Flash Memory, eine magnetooptische Diskette oder andere Arten von nichtflüchtigen maschinenlesbaren Medien, die in der Lage sind, elektronische Daten (z. B. einschließlich Anweisungen) zu speichern.
  • Der Speicher 512 kann eines oder mehrere des Folgenden in einer Ausführungsform umfassen: ein Betriebssystem (O/S) 235, chic Anwendung 534 und/oder einen Gerätetreiber 536. Der Speicher 512 kann außerdem Bereiche aufweisen, welche für MMIO-Vorgänge reserviert sind. Programme und/oder Daten, welche in dem Speicher 512 gespeichert sind, können in einem Diskettenlaufwerk 528 als Teil von Speichermanagementvorgängen ausgetauscht werden. Die Anwendung(en) 534 kann/können ausgeführt werden (z. B. auf dem/den Prozessor(en) 502), um ein oder mehrere Pakete mit einem oder mehreren Rechnergeräten, welche mit dem Netzwerk 505 gekoppelt sind, zu kommunizieren. In einer Ausführungsform kann ein Paket eine Sequenz von einem oder mehreren Symbolen oder Werten sein, welche durch ein oder mehrere elektrische Signale codiert sind, die von wenigstens einem Sender zu wenigstens einem Empfänger übertragen werden (z. B. über ein Netzwerk wie das Netzwerk 505). Beispielsweise kann jedes Paket einen Kopf besitzen, der verschiedene Informationen aufweist, die zum Routing und/oder Bearbeiten des Pakets verwendet werden können, wie eine Quellenadresse, chic Zieladresse, eine Paketart usw. Jedes Paket kann auch eine Nutzlast besitzen, die Rohdaten (oder Inhalt) aufweist, welche das Paket zwischen verschiedenen Rechnergeräten über ein Computernetzwerk (wie das Netzwerk 505) überträgt.
  • In einer Ausführungsform kann die Anwendung 534 das O/S 532 verwenden, um mit verschiedenen Komponenten des Systems 500 zu kommunizieren, z. B. durch den Gerätetreiber 536. Somit kann der Gerätetreiber 536 Netzwerkadapter (530)-spezifische Befehle aufweisen, um für eine Kommunikationsschnittstelle zwischen dem O/S 532 und dem Netzwerkadapter 530, oder anderen I/O-Geräten, die mit dem System 500 z. B. über den Chipsatz 506, gekoppelt sind, zu sorgen.
  • In einer Ausführungsform kann das O/S 532 einen Netzwerkprotokollstapel umfassen. Ein Protokollstapel betrifft allgemein einen Satz von Prozeduren oder Programmen, die ausgeführt werden können, um Pakete zu bearbeiten, die über ein Netzwerk (505) gesendet werden, wobei die Pakete einem speziellen Protokoll entsprechen. Beispielsweise können TCP/IP(Transport Control Protocol/Internet Protocol)-Pakete unter Verwendung eines TCP/IP-Stapels bearbeitet werden. Der Gerätetreiber 536 kann die Puffer 538 anzeigen, die zu bearbeiten sind, z. B. über den Protokollstapel.
  • Wie in 5 dargestellt, kann der Netzwerkadapter 530 die Attributlogik 420 (beschrieben im Zusammenhang mit 4) aufweisen, welche Attributinformationen, wie im Zusammenhang mit den 2 bis 3 beschrieben, zu der CPU (den CPUs) 502 zu senden. Wie bei 4 kann/können die CPU(s) eine Logik (z. B. Logik 422) aufweisen, um die Attributinformation zu empfangen. Außerdem kann/können die CPU(s) ein oder mehrere Speichereinheiten (wie einen Cache, Puffer usw.) aufweisen, um die Attributinformation zu speichern. Obgleich die Logik 420 in einem Netzwerkadapter 530 in 5 enthalten ist, kann sie auch woanders angeordnet sein, wie innerhalb der Schaltlogik 512, dem Chipsatz 506 usw.
  • Das Netzwerk 505 kann jede Art von Computernetzwerk umfassen. Der Netzwerkadapter 530 kann ferner eine Direct Memory Access(DMA)-Maschine 522 aufweisen, welche Pakete auf Puffer schreibt (z. B. in dem Speicher 512 speichert), die verfügbaren Deskriptoren (z. B. in dem Speicher 512 gespeichert) zum Senden und/oder Empfangen von Daten über das Netzwerk 505 zugeschrieben sind. Ferner kann der Netzwerkadapter 530 einen Netzwerkadaptercontroller 554 aufweisen, welcher eine Logik aufweisen kann (wie eine oder mehrere programmierbare Prozessoren) um adapterbezogene Vorgänge auszuführen. In einer Ausführungsform kann der Adapter 554 eine MAC(Media Access Control)-Komponente sein. Der Netzwerkadapter 530 kann ferner einen Speicher 556, wie jede Art von flüchtigen, nichtflüchtigen Speicher (z. B. einschließlich eines oder mehrerer Cache und/oder anderen Speicherarten, die in Bezug auf den Speicher 512 beschrieben wurden) aufweisen. In einer Ausführungsform kann der Speicher 556 Attributinformationen (wie jene, die im Zusammenhang mit den 2 bis 3 beschrieben wurden) des Netzwerkadapters 530 speichern.
  • 6 stellt ein Ablaufdiagramm eines Verfahrens 600 zum Zugreifen auf einen/mehrere MMIO-Bereich(e) gemäß einer Ausführungsform dar. In einer Ausführungsform können verschiedene Komponenten, die im Zusammenhang mit den 1 bis 5 und 7 beschrieben sind, benutzt werden, um einen oder mehrere der Vorgänge, die im Zusammenhang mit der 6 beschrieben wird, auszuführen.
  • Bezug nehmend auf die 1 bis 6 wird eine Nachricht in einem Vorgang 602 empfangen (z. B. von der Logik 420 an die Logik 422). In einigen Ausführungsformen wird die Nachricht durch ein I/O-Gerät erzeugt (oder einen Schalter anstelle eines I/O-Gerätes, welches mit dem Schalter gekoppelt ist), ohne eine Anfrage einer anderen Komponente und auf eigene Veranlassung des Gerätes. In einem Vorgang 406 werden Attributanzeigen (z. B. ein oder mehrere Bits wie jene, die mit den MMIO-Attributen der 3 beschrieben wurden) detektiert (z. B. durch die Logik 422). Falls der Attributvermerk nicht vorhanden ist, kehrt das Verfahren 600 zum Vorgang 602 zurück, um eine andere Nachricht zu empfangen. Andernfalls kann die Attributinformation gespeichert werden 608 (z. B. in einem Speichergerät (wie einem Cache, Puffer, Table usw.) eines Prozessors wie jener, der im Zusammenhang mit den 1 bis 5 oder 7 beschrieben wurde). Bei einem Vorgang 610 kann auf einen MMIO-Bereich zugegriffen werden (z. B. durch Prozessor(en)/Kern(e) wie jene, die im Zusammenhang mit den 1 bis 5 oder 7 beschrieben sind) z. B. aufgrund von gespeicherten Informationen beim Vorgang 608.
  • 7 stellt ein Computersystem 700 dar, welches in einer Punkt-zu-Punkt(PtP)-Konfiguration angeordnet ist gemäß einer Ausführungsform der Erfindung. Insbesondere zeigt die 7 ein System, bei dem Prozessoren, Speicher und Eingabe/Ausgabe-Vorrichtungen durch eine Anzahl von Punkt-zu-Punkt-Schnittstellen untereinander verbunden sind. Die Vorgänge, welche im Zusammenhang mit den 1 bis 6 beschrieben wurden, können durch ein oder mehrere Komponenten des Systems 700 ausgeführt werden.
  • Wie in 7 dargestellt, kann das System 700 verschiedene Prozessoren aufweisen, von denen nur zwei Prozessoren 702 und 704 zur Verdeutlichung dargestellt sind. Die Prozessoren 702 und 704 können jeweils einen lokalen Speichercontrollerhub (MCH) 706 und 708 aufweisen, um eine Kommunikation mit den Speichern 710 und 712 (welche MMIO-Bereiche wie im Zusammenhang mit den Ansprüchen 2 bis 3 beschrieben, speichern können) zu ermöglichen. Die Speicher 710 und/oder 712 können verschiedene Daten speichern wie jene, welche im Zusammenhang mit dem Speicher 512 der 5 beschrieben wurden. Wie in 7 gezeigt, können die Prozessoren 702 und 704 außerdem einen oder mehrere Cache aufweisen, wie jene, die im Zusammenhang mit den 4 und 5 beschrieben wurden.
  • In einer Ausführungsform können die Prozessoren 702 und 704 die Prozessoren 502, welche im Zusammenhang mit 5 beschrieben wurden, sein. Die Prozessoren 702 und 704 können Daten über eine Punkt-zu-Punkt(PtP)-Schnittstelle 714 unter Verwendung von PtP-Schnittstellenschaltungen 716 bzw. 718 austauschen. Außerdem können die Prozessoren 702 und 704 jeweils Daten mit einem Chipsatz 720 über individuelle PtP-Schnittstelle 722 und 724 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 726, 728, 730 und 732 austauschen. Der Chipsatz 720 kann ferner Daten mit einer hochleistungsfähigen Grafikschaltung 734 über eine hochleistungsfähige Grafikschnittstelle 736, z. B. unter Verwendung einer PtP-Schnittstellenschaltung 737, austauschen.
  • In wenigstens einer Ausführungsform kann die Schaltlogik 420 zwischen den Chipsatz 720 und anderen Komponenten des Systems 700 gekoppelt sein, wie jene, die über einen Bus 420 kommunizieren. Andere Ausführungsformen der Erfindungen können jedoch in anderen Schaltungen, Logikeinheiten oder Vorrichtungen wie in dem System 700 der 7 vorhanden sein. Ferner können andere Ausführungsformen der Erfindung über verschiedene Schaltungen, Logikeinheiten oder Geräten, welche in 7 dargestellt sind, verteilt sein. Außerdem kann ein Chipsatz 720 die Logik 422 (im Zusammenhang mit 2 bis 6 beschrieben) aufweisen und der/die Prozessor(en) 702, 704 kann/können die Logik 422 (im Zusammenhang mit 2 bis 6 beschrieben) aufweisen. Ferner kann die Logik 420 woanders in dem System 700, wie z. B. in der Logik 412, der/den Kommunikationsgeräten) 746 usw., angeordnet sein.
  • Der Chipsatz 720 kann mit dem Bus 740 unter Verwendung einer PtP-Schnittstellenschaltung 741 kommunizieren. Der Bus 740 kann ein oder mehrere Geräte besitzen, die mit ihm kommunizieren, wie eine Busbrücke 742 und I/O-Geräte 743. Über einen Bus 744 kann die Busbrücke 742 mit anderen Geräten wie einer Tastatur/Maus 745, Kommunikationsgeräten 746 (wie Modem, Netzwerkschnittstellengeräte oder andere Kommunikationsgeräte, die mit dem Computernetzwerk 505 kommunizieren können), einem Audio-I/O-Gerät und/oder einem Datenspeichergerät 748 kommunizieren. Das Datenspeichergerät 748 kann Code 749 speichern, welcher von den Prozessoren 702 und/oder 704 ausgeführt werden kann.
  • In verschiedenen Ausführungsformen der Erfindung können die hierin beschriebenen Vorgänge, z. B. mit Bezug auf die Verbindung mit 1 bis 7, als Hardware (z. B. Schaltung), Software, Firmware, Microcode oder Kombinationen davon, die als ein Computerprogrammprodukt, z. B. einschließlich eines maschinenlesbaren Codes oder computerlesbarem Medium mit darauf gespeicherten Anweisungen (oder Softwarevorgängen), die verwendet werden, um einen Computer zum Ausführen eines hierin diskutierten Vorgangs zu programmieren, implementiert sein. Außerdem kann der Ausdruck „Logik” beispielsweise Software, Hardware oder Kombinationen von Software und Hardware umfassen. Das maschinenlesbare Medium kann ein Speichergerät aufweisen wie jene, die im Zusammenhang mit 1 bis 7 beschrieben wurden. Zusätzlich können solche computerlesbaren Medien als ein Computerprogrammprodukt herunterladbar sein, wobei das Programm über einen entfernten Computer (z. B. einen Server) zu einem anfragenden Computer (z. B. einem Client) über Datensignale übermittelt wird, die in einer Trägerwelle oder anderen Übertragungsmedien über eine Kommunikationsverbindung (z. B. einen Bus, ein Modem oder einer Netzwerkverbindung) bereitgestellt werden.
  • Eine Bezugnahme in der Beschreibung auf „eine einzelne Ausführungsform” oder „eine Ausführungsform” bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder eine Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben wurde, in wenigstens einer Implementierung enthalten ist. Das Auftreten des Ausdrucks „in einer einzigen Ausführungsform” an verschiedenen Orten der Beschreibung kann auf die gleiche Ausführungsform Bezug nehmen, oder nicht.
  • Außerdem können in der Beschreibung und in den Ansprüchen die Ausdrücke „gekoppelt” und „verbunden” zusammen mit ihren Abwandlungen verwendet werden. In einigen Ausführungsformen der Erfindung kann „verbunden” verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem physikalischen Kontakt oder elektrischem Kontakt zueinander stehen. „Gekoppelt” kann bedeuten, dass zwei oder mehr Elemente sich in direktem physikalischen oder elektrischen Kontakt befinden. Jedoch kann „gekoppelt” auch bedeuten, dass zwei oder mehr Elemente nicht im direkten Kontakt zueinander befinden, aber dennoch miteinander zusammenwirken oder sich gegenseitig beeinflussen.
  • Somit ist zu verstehen, dass, obgleich Ausführungsformen der Erfindung in einer Sprache, welche spezifisch für strukturelle Merkmale und/oder methodologischer Vorgänge ist, beschrieben wurden, eines beanspruchten Gegenstands nicht auf die speziellen Merkmale oder Vorgänge, die beschrieben wurden, beschränkt sind. Stattdessen sind die speziellen Merkmale und Vorgänge als beispielhafte Formen der Implementierung des beanspruchten Gegenstandes offenbart.

Claims (30)

  1. Prozessor, der Folgendes aufweist: eine erste Logik zum Detektieren eines oder mehrerer Bits in einer Nachricht, welche zum Übertragen an ein Eingabe/Ausgabe(I/O)-Gerät bestimmt ist, wobei das eine oder die mehreren Bits dazu bestimmt sind, eine Memory Mapped I/O(MMIO)-Information anzuzeigen, welche einem oder mehreren Attributen des I/O-Geräts entspricht; einen Speicher, um die MMIO-Informationen zu speichern; und einen Prozessorkern, um auf einen MMIO-Bereich in dem Speicher aufgrund der MMIO-Information zuzugreifen.
  2. Prozessor nach Anspruch 1, wobei das eine oder die mehreren Attribute dafür bestimmt sind, ein Prefetchable-Attribut, ein Write-Through Type Caching-Attribut, ein Write Type-Attribut, ein Speculative Access-Attribut und/oder ein Memory Ordering Mode-Attribut zu umfassen.
  3. Prozessor nach Anspruch 2, wobei das Write Type-Attribut dazu bestimmt ist, ein Combine Write-Attribut, ein Collapse Write-Attribut und/oder ein Merge Write-Attribut zu umfassen.
  4. Prozessor nach Anspruch 1, wobei das eine oder die mehreren Bits in einer Abschlussnachricht vorhanden sind, welche einer prozessoriniitierten Anfrage an den MMIO-Bereich entspricht.
  5. Prozessor nach Anspruch 1, wobei die MMIO-Information dafür bestimmt ist, Daten auf Anfrage oder Datenabwicklungserfordernisse des I/O-Gerätes zu umfassen.
  6. Prozessor nach Anspruch 1, wobei das eine oder die mehreren Bits dafür bestimmt sind, von dem I/O-Gerät in Antwort auf eine Anfrage, welche von dem I/O-Gerät empfangen wird, zu senden.
  7. Prozessor nach Anspruch 6, wobei die Anfrage in Antwort auf ein Ausbleiben eines Eintrags, welcher dem MMIO-Bereich in dem Speicher entspricht, zu erzeugen ist.
  8. Prozessor nach Anspruch 1, wobei der Speicher dazu bestimmt ist, Datencache, dezidierten Cache, Translation Look-Aside Puffer und/oder Bloom-Filter zu umfassen.
  9. Prozessor nach Anspruch 1, wobei die erste Logik, der Speicher und/oder der Prozessorkern sich auf dem gleichen Halbleiter mit integrierter Schaltung befinden.
  10. Prozessor nach Anspruch 1, welcher ferner mehrere Prozessorkerne aufweist, um auf den MMIO-Bereich in dem Speicher, welcher der MMIO-Information entspricht, zuzugreifen.
  11. Prozessor nach Anspruch 10, wobei sich die erste Logik, der Speicher und/oder einer oder mehrere der Prozessorkerne auf dem gleichen Halbleiter mit integrierter Schaltung sich befinden.
  12. Prozessor nach Anspruch 1, wobei das I/O-Gerät dazu bestimmt ist, eine Logik zum Erzeugen der MMIO-Information zu umfassen.
  13. Prozessor nach Anspruch 1, wobei eine Schaltlogik dazu bestimmt ist, die MMIO-Informationen zu erzeugen, wobei die Schaltlogik zwischen dem Prozessor und dem I/O-Gerät gekoppelt ist.
  14. Verfahren, welches Folgendes umfasst: Empfangen einer Nachricht, welche ein oder mehrere Bits umfasst, von einem Eingabe/Ausgabe(I/O)-Gerät, wobei das eine oder die mehreren Bits dafür bestimmt sind, eine Memory Mapped I/O(MMIO)-Information anzuzeigen, welche einem oder mehreren Attributen des I/O-Gerätes entspricht; Speichern der MMIO-Information in einem Speicher; und Zugreifen auf einen MMIO-Bereich in dem Speicher aufgrund der MMIO-Information.
  15. Verfahren nach Anspruch 14, welches ferner ein Detektieren des einen oder der mehreren Bits nach Empfangen der Nachricht aufweist.
  16. Verfahren nach Anspruch 14, wobei das eine oder die mehreren Attribute dafür bestimmt sind, ein Prefetchable-Attribut, ein Write-Through Type Caching-Attribut, ein Write Type-Attribut, ein Speculative Access-Attribut und/oder ein Memory Ordering Model-Attribut zu umfassen.
  17. Verfahren nach Anspruch 16, wobei das Write Type-Attribut dazu bestimmt ist, ein Combine Write-Attribut, ein Collapse Write-Attribut und/oder ein Merge Write-Attribut zu umfassen.
  18. Verfahren nach Anspruch 14, wobei das Empfangen der Nachricht ein Empfangen einer Abschlussnachricht, welcher einer prozessorinitiierten Anfrage an den MMIO-Bereich entspricht, umfasst.
  19. Verfahren nach Anspruch 14, welches ferner ein Senden des einen oder der mehreren Bits in Antwort auf den Empfang einer Anfrage an dem I/O-Gerät umfasst.
  20. Verfahren nach Anspruch 14, welches ferner ein Erzeugen einer Anfrage des einen oder der mehreren Bits in Antwort auf einen ausbleibenden Eintrag, welcher dem MMIO-Bereich in dem Speicher entspricht, umfasst.
  21. System, welches Folgendes umfasst: ein Eingabe/Ausgabe(I/O)-Gerät; einen Prozessor, der eine erste Logik zum Detektieren eines oder mehrerer Bits in einer Nachricht umfasst, welche dafür bestimmt ist, von einem I/O-Gerät empfangen zu werden, wobei das eine oder die mehreren Bits dazu bestimmt sind, eine Memory Mapped I/O(MMIO)-Information, welche einem oder mehreren Attributen des I/O-Geräts entspricht, anzuzeigen; einen Speicher zum Speichern der MMIO-Information; und einen Prozessor, der wenigstens einen Prozessorkern zum Zugreifen auf einen MMIO-Bereich in dem Speicher aufgrund der MMIO-Information umfasst.
  22. System nach Anspruch 21, wobei das eine oder die mehreren Attribute dafür bestimmt sind, ein Prefetchable-Attribut, ein Write-Through Type Caching-Attribut, ein Write Type-Attribut, ein Speculative Access-Attribut und/oder ein Memory Ordering Mode-Attribut umfasst.
  23. System nach Anspruch 22, wobei das Write Type-Attribut dafür bestimmt ist, ein Cobine Write-Attribut, ein Collapse Write-Attribut und/oder ein Merge Write-Attribut zu umfassen.
  24. System nach Anspruch 21, wobei das eine oder die mehreren Bits in einer Abschlussnachricht, welche einer prozessorinitiierten Anfrage an den MMIO-Bereich entspricht, umfasst.
  25. System nach Anspruch 21, wobei das eine oder die mehreren Bits dafür bestimmt sind, von dem I/O-Gerät in Antwort auf eine Anfrage, welche das I/O-Gerät empfängt, zu senden.
  26. System nach Anspruch 25, wobei die Anfrage dafür bestimmt ist, in Antwort auf ein Ausbleiben eines Eintrags, welcher dem MMIO-Bereich in dem Speicher entspricht, erzeugt zu werden.
  27. System nach Anspruch 21, wobei der Speicher dafür bestimmt ist, einen Datencache, einen dezidierten Cache, einen Translation Look-Aside Puffer und/oder einen Bloom-Filter zu umfassen.
  28. System nach Anspruch 21, wobei sich die erste Logik, der Speicher und/oder der Prozessor auf einem gleichen Halbleiter mit integrierter Schaltung befinden.
  29. System nach Anspruch 21, wobei das I/O-Gerät dafür bestimmt ist, eine Logik zum Erzeugen der MMIO-Information zu umfassen.
  30. System nach Anspruch 21, wobei eine Schaltlogik dafür bestimmt ist, die MMIO-Information zu erzeugen, wobei die Schaltlogik zwischen dem Prozessor und dem I/O-Gerät gekoppelt ist.
DE112010001404T 2009-03-31 2010-03-08 Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen Ceased DE112010001404T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/415,913 2009-03-31
US12/415,913 US8055805B2 (en) 2009-03-31 2009-03-31 Opportunistic improvement of MMIO request handling based on target reporting of space requirements
PCT/US2010/026558 WO2010117528A2 (en) 2009-03-31 2010-03-08 Opportunistic improvement of mmio request handling based on target reporting of space requirements

Publications (1)

Publication Number Publication Date
DE112010001404T5 true DE112010001404T5 (de) 2013-01-24

Family

ID=42785657

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202010018020U Expired - Lifetime DE202010018020U1 (de) 2009-03-31 2010-03-08 Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE112010001404T Ceased DE112010001404T5 (de) 2009-03-31 2010-03-08 Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE202010018020U Expired - Lifetime DE202010018020U1 (de) 2009-03-31 2010-03-08 Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen

Country Status (5)

Country Link
US (2) US8055805B2 (de)
CN (2) CN102326156B (de)
DE (2) DE202010018020U1 (de)
TW (1) TWI506444B (de)
WO (1) WO2010117528A2 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8055805B2 (en) 2009-03-31 2011-11-08 Intel Corporation Opportunistic improvement of MMIO request handling based on target reporting of space requirements
US8819686B2 (en) * 2009-07-23 2014-08-26 Empire Technology Development Llc Scheduling threads on different processor cores based on memory temperature
US8924975B2 (en) * 2009-07-23 2014-12-30 Empire Technology Development Llc Core selection for applications running on multiprocessor systems based on core and application characteristics
US8356122B2 (en) 2010-01-08 2013-01-15 International Business Machines Corporation Distributed trace using central performance counter memory
US9268611B2 (en) 2010-09-25 2016-02-23 Intel Corporation Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores
US8943248B2 (en) * 2011-03-02 2015-01-27 Texas Instruments Incorporated Method and system for handling discarded and merged events when monitoring a system bus
CN103268278B (zh) * 2013-06-14 2016-12-28 苏州国芯科技有限公司 支持多核处理器的sram控制器及其跟踪信息处理方法
US20150074219A1 (en) * 2013-07-12 2015-03-12 Brocade Communications Systems, Inc. High availability networking using transactional memory
US9959224B1 (en) * 2013-12-23 2018-05-01 Google Llc Device generated interrupts compatible with limited interrupt virtualization hardware
US9524114B2 (en) * 2015-01-27 2016-12-20 Futurewei Technologies, Inc. Optimizing synchronous write via speculation
WO2018035856A1 (zh) * 2016-08-26 2018-03-01 华为技术有限公司 实现硬件加速处理的方法、设备和系统
US10929302B2 (en) 2018-06-08 2021-02-23 International Business Machines Corporation MMIO addressing using a translation table
US11321240B2 (en) 2018-06-08 2022-05-03 International Business Machines Corporation MMIO addressing using a translation lookaside buffer

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5561780A (en) * 1993-12-30 1996-10-01 Intel Corporation Method and apparatus for combining uncacheable write data into cache-line-sized write buffers
US5956753A (en) * 1993-12-30 1999-09-21 Intel Corporation Method and apparatus for handling speculative memory access operations
US5680565A (en) * 1993-12-30 1997-10-21 Intel Corporation Method and apparatus for performing page table walks in a microprocessor capable of processing speculative instructions
US5420991A (en) * 1994-01-04 1995-05-30 Intel Corporation Apparatus and method for maintaining processing consistency in a computer system having multiple processors
US5751995A (en) * 1994-01-04 1998-05-12 Intel Corporation Apparatus and method of maintaining processor ordering in a multiprocessor system which includes one or more processors that execute instructions speculatively
ZA954460B (en) * 1994-09-30 1996-02-05 Intel Corp Method and apparatus for processing memory-type information within a microprocessor
US5819079A (en) * 1995-09-11 1998-10-06 Intel Corporation Instruction fetch on demand for uncacheable memory which avoids memory mapped I/O side effects in a processor with speculative instruction fetch
US6009488A (en) * 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
US7213081B2 (en) * 2001-06-29 2007-05-01 Fujitsu Limited Dynamic determination of memory mapped input output range granularity for multi-node computer system
US6681311B2 (en) * 2001-07-18 2004-01-20 Ip-First, Llc Translation lookaside buffer that caches memory type information
US7099318B2 (en) * 2001-12-28 2006-08-29 Intel Corporation Communicating message request transaction types between agents in a computer system using multiple message groups
US7581026B2 (en) * 2001-12-28 2009-08-25 Intel Corporation Communicating transaction types between agents in a computer system using packet headers including format and type fields
US6944617B2 (en) * 2001-12-28 2005-09-13 Intel Corporation Communicating transaction types between agents in a computer system using packet headers including an extended type/extended length field
US7206865B2 (en) * 2003-03-28 2007-04-17 Intel Corporation Apparatus and method for combining writes to I/O
US7127560B2 (en) * 2003-10-14 2006-10-24 International Business Machines Corporation Method of dynamically controlling cache size
US7539832B2 (en) * 2004-08-23 2009-05-26 Hewlett-Packard Development Company, L.P. Option ROM code acquisition
US7814292B2 (en) 2005-06-14 2010-10-12 Intel Corporation Memory attribute speculation
US8423682B2 (en) * 2005-12-30 2013-04-16 Intel Corporation Address space emulation
JP5103823B2 (ja) * 2006-08-18 2012-12-19 富士通株式会社 情報処理装置および入出力要求制御方法
US20080147903A1 (en) * 2006-10-11 2008-06-19 Paul Gregory Curtis Method and Apparatus for Implementing Commands in Input/Output (IO) Hub
US8654634B2 (en) 2007-05-21 2014-02-18 International Business Machines Corporation Dynamically reassigning virtual lane resources
US8312219B2 (en) * 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
US8055805B2 (en) 2009-03-31 2011-11-08 Intel Corporation Opportunistic improvement of MMIO request handling based on target reporting of space requirements

Also Published As

Publication number Publication date
CN102326156A (zh) 2012-01-18
TWI506444B (zh) 2015-11-01
US20100250792A1 (en) 2010-09-30
CN101853227B (zh) 2014-06-04
CN101853227A (zh) 2010-10-06
WO2010117528A3 (en) 2011-01-27
CN102326156B (zh) 2015-02-04
US8055805B2 (en) 2011-11-08
DE202010018020U1 (de) 2013-09-10
US8904045B2 (en) 2014-12-02
TW201135469A (en) 2011-10-16
US20120054380A1 (en) 2012-03-01
WO2010117528A2 (en) 2010-10-14

Similar Documents

Publication Publication Date Title
DE112010001404T5 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE102018006756A1 (de) Beschleuniger-Fabric
DE112010001467B4 (de) Steuerung von Blöcken einer On-Die-System-Struktur
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
DE102009047518B4 (de) Computersystem und Verfahren geeignet zum Vermeiden von Datenkommunikationsverklemmungssituationen durch Markieren von CPU-Datenverkehr als speziell
DE112005002405B4 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE102018213430A1 (de) Beschleuniger mit geringer Latenzzeit
DE102008048421A1 (de) Zwischenspeichern einer Adressübersetzung und Verbesserung des Leistungsverhaltens eines I/O-Cache in virtualisierten Umgebungen
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102019104394A1 (de) Befehlssatzarchitektur zum ermöglichen von energieeffizientem rechnen für exascalearchitekturen
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE202012007252U1 (de) Vorrichtung für TLB-Shootdown in einem gemeinsam genutzten virtuellen Speicher unterstützenden, heterogenen Rechensystem
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE112019000629B4 (de) Koordination von cacheoperationen
DE112007001466T5 (de) Behandlung von Adressübersetzungen und Ausnahmen einer Heterogenen Ressource
DE102013114256A1 (de) Systeme und Verfahren zur Beibehaltung der Informationskohärenz
DE112012004551T5 (de) Mehrkernverknüpfung in einem Netzprozessor
DE112005002355T5 (de) Vorrichtung zum Abrufen von Daten in einem Prozessor-Cachespeicher
DE10234990B4 (de) Hostcontroller, Verfahren zum Betreiben, zugehöriges Southbridgebauelement und Computersystem zur Steuerung der Ersetzung im voraus geholter Deskriptoren in einem Cache
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE102018005039A1 (de) System und verfahren für pro-agent-steuerung und - dienstqualität gemeinsam genutzter ressourcen in chip-mehrprozessor-plattformen
DE112010002777T5 (de) Verzeichnis-Cache-Allokation basierend auf Snoop-Antwort-Informationen
DE102018006849A1 (de) Verfahren, Vorrichtung, System für frühe granulare Seitenhinweise anhand einer PCIE-Vorrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final

Effective date: 20130827