DE112013001361B4 - System auf einem Chip, Verfahren, maschinenlesbares Medium und System für die Bereitstellung einer Snoop-Filterung zugeordnet mit einem Datenpuffer - Google Patents

System auf einem Chip, Verfahren, maschinenlesbares Medium und System für die Bereitstellung einer Snoop-Filterung zugeordnet mit einem Datenpuffer Download PDF

Info

Publication number
DE112013001361B4
DE112013001361B4 DE112013001361.4T DE112013001361T DE112013001361B4 DE 112013001361 B4 DE112013001361 B4 DE 112013001361B4 DE 112013001361 T DE112013001361 T DE 112013001361T DE 112013001361 B4 DE112013001361 B4 DE 112013001361B4
Authority
DE
Germany
Prior art keywords
memory
request
sniffed
requests
fabric
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.)
Active
Application number
DE112013001361.4T
Other languages
English (en)
Other versions
DE112013001361T5 (de
Inventor
Jose S. Niell
Daniel F. Cutter
James D. Allen
Deepak Limaye
Shadi T. Khasawneh
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.)
Tahoe Research Ltd
Original Assignee
Tahoe Research Ltd
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 Tahoe Research Ltd filed Critical Tahoe Research Ltd
Publication of DE112013001361T5 publication Critical patent/DE112013001361T5/de
Application granted granted Critical
Publication of DE112013001361B4 publication Critical patent/DE112013001361B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

System auf einem Chip (SoC) (200), umfassend:ein Gewebe (210; 300), eine Vielzahl von Agenten (220, 230, 240; 315) des SoC zu verbinden, das Gewebe (210; 300) umfassend:einen Datenpuffer (344) mit einer Vielzahl von Einträgen, jeweils zum Speichern von Daten, um zu und von der Viellzahl von Agenten (220, 230, 240; 315), und zu und von einem Speicher gekoppelt zu dem SoC übertragen zu werden;einen Besitzindikator (343) zugeordnet mit jeder der Vielzahl von Einträgen des Datenpuffers (344), wobei der Besitzindikator (343) in einem ersten Zustand ist, um anzuzeigen, dass entsprechende Daten der Einträge in Cache-Agenten (220) der Vielzahl von Agenten (220, 230, 240; 315) für ungültig erklärt wurden; undeine Entscheidungseinrichtung (320) zum Ermöglichen einer Mehrzahl von Speicheranforderungen zugeordnet mit Daten in einem der Vielzahl von Einträgen, um akzeptiert zu werden, nachdem das Gewebe (210; 300) die Daten in zumindest einem Cache-Speicher eines ersten Agenten aus der Mehrzahl von Agenten (220, 230, 240; 315) für ungültig erklärt hat,wobei die Entscheidungseinrichtung (320) den Besitzindikator (343) in den ersten Zustand aktualisieren muss, wenn eine erste erschnüffelte Speicheranforderung verbundenen mit Daten eines ersten Eintrags des Datenpuffers (344) in den Ruhestand geht, wobei die Entscheidungseinrichtung (320) einen temporalen Snoop-Filter (334) umfasst, wobei der temporale Snoop-Filter inklusive in Bezug auf den Datenpuffer (344) und nicht-inklusive in Bezug auf eine oder mehrere Cache-Speicher des SoC ist.

Description

  • Technisches Gebiet
  • Diese Offenbarung bezieht sich auf Computersysteme und insbesondere (aber nicht ausschließlich) auf solche Systeme einschließlich einer Gewebe zum Koppeln mehrerer Geräte an einen Speicher. Die Erfindung bezieht sich auch auf ein Verfahren, ein maschinenlesbares Medium und ein System.
  • US20130007376A1 offenbart ein Verfahren und eine Vorrichtung, die sich auf Opportunistic Snoop Broadcast (OSB) in verzeichnisfähigen Home-Snoopy-Systemen beziehen. In einer Ausführungsform werden mehrere Snoops als Antwort auf eine Datenanforderung und basierend auf einem Vergleich eines Bandbreitenverbrauchs der Verbindung und eines Schwellenwerts an mehrere Caching-Agenten gesendet.
  • Der Erfindung liegt die Aufgabe zu Grunde, eine energiesparende und energieeffiziente integrierte Schaltung bereit zu stellen, in der Besitzverhältnisse über Cache-Lines schnell gelöst werden können. Diese Aufgabe wird mit den Gegenständen der unabhängigen Ansprüche 1, 7, 13 und 14 gelöst. Bevorzugte Weiterbildungen sind in den abhängigen Ansprüchen angegeben.
  • Figurenliste
    • 1 zeigt eine Ausführungsform eines Blockdiagramms für ein Rechensystem mit einem Mehrkernprozessor.
    • 2 ist ein Blockdiagramm einer hohen Ansicht eines Systems auf einem Chip (SoC) gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 3 ist ein Blockdiagramm eines Abschnitts eines gemeinsamen Speicherstoff gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 4 ist ein Blockschaltbild weiterer Einzelheiten eines zugebenen Schiedsrichters gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 5 ist ein Blockschaltbild weiterer Einzelheiten einer gemeinsamen Speicherstoff gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 6 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 7 ist ein Flussdiagramm eines Verfahrens zur Handhabung von ankommenden Speicheranforderungen mit Snoop-Filter-Logik gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 8 ist ein Blockdiagramm eines SoC gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 9 ist ein Blockdiagramm von Komponenten in einem Computersystem gemäß einer Ausführungsform der vorliegenden Erfindung.
  • Detaillierte Beschreibung
  • In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt, wie etwa Beispiele für spezifische Typen von Prozessoren und Systemkonfigurationen, spezifische
  • Hardware-Strukturen, spezifische architektonische und Mikroarchitekturdetails, spezifische Registerkonfigurationen spezifischen Befehlstypen, bestimmte Systemkomponenten, spezifische Messungen Höhen, bestimmte Pipeline-Stufen des Prozessors und Betrieb etc., um ein gründliches Verständnis der vorliegenden Erfindung zu schaffen. Es wird offensichtlich jedoch für einen Fachmann sein, dass diese spezifischen Details nicht verwendet werden müssen, um die vorliegende Erfindung zu praktizieren. In anderen Fällen sind gut bekannte Komponenten oder Verfahren, wie beispielsweise spezielle und alternative Prozessor-Architekturen, spezifische Logikschaltungen Code beschriebenen Algorithmen spezifische Firmware-Code, spezifische Verbindungsvorgang spezifischen Logikkonfigurationen spezifische Herstellungstechniken und Materialien, spezifische Compiler-Implementierungen bestimmte Expression von Algorithmen in Code, spezifische Leistung nach unten und Gating-Techniken Logik und andere spezifische Betriebsdetails des Computersystems nicht im Detail beschrieben, um nicht unnötig Verschleierung der vorliegenden Erfindung beschrieben.
  • Obwohl die folgenden Ausführungsformen mit Bezug auf die Energieeinsparung und die Energieeffizienz in spezifischen integrierten Schaltungen, wie beispielsweise in Computer-Plattformen oder Mikroprozessoren beschrieben warden können, sind andere Ausführungsformen anwendbar auf andere Typen von integrierten Schaltungen und Logikeinrichtungen. Ähnliche Techniken und Lehren der hierin beschriebenen Ausführungsformen können andere Arten von Schaltungen oder Halbleitervorrichtungen angewendet werden, die auch von einer besseren Energieeffizienz und Energieeinsparung zugute kommen können. Beispielsweise sind die offenbarten Ausführungsformen nicht auf Desktop-Computersystemen oder Ultrabooks ™ beschränkt. Und kann auch in anderen Geräten verwendet werden, wie beispielsweise andheld-Geräte, Tablets, andere dünne Notebooks, Systeme auf einem Chip (SOC)-Geräte und Embedded-Anwendungen. Einige Beispiele für Handheld-Geräte umfassen Mobiltelefone, Internet-Protokoll-Geräte, Digitalkameras , Personal Digital Assistants (PDAs) und Handheld-PCs. Embedded-Anwendungen umfassen typischerweise einen Mikrocontroller, einen digitalen Signalprozessor (DSP), ein System auf einem Chip, Netzwerk-Computer (NetPCs), Set-Top-Boxen, Netzwerk-Hubs, Wide Area Network (WAN)-Schalter, oder jedes andere System, das die Funktionen und die unter unterrichteten Operationen durchführen kann. Außerdem sind die Geräte, Methoden und hier beschriebenen Systeme nicht auf physikalische Rechenvorrichtungen beschränkt, sondern kann sich auch für Software-Optimierungen zur Energieeinsparung und Effizienz beziehen. Wenn leicht ersichtlich in der folgenden Beschreibung werden, sind die Ausführungsformen der Verfahren, Vorrichtungen und hier beschriebenen Systemen (ob in Bezug auf Hardware, Firmware, Software oder einer Kombination davon) entscheidend für eine „grüne Technologie“ Zukunft ausgewogen mit Leistungsaspekte.
  • Wenn Computersysteme vorankommen, werden die darin enthaltenen Komponenten immer komplexer. Als ein Ergebnis wird die Verbindungsarchitektur zur Kopplung und Kommunikation zwischen den Komponenten auch zunehmend komplexer zur Gewährleistung der Bandbreitenanforderungen für eine optimale Komponentenbetrieb erfüllt. Darüber hinaus erfordern unterschiedliche Marktsegmente unterschiedliche Aspekte der Verbindungsarchitekturen, um auf die Bedürfnisse des Marktes zu entsprechen. Zum Beispiel erfordern Server höhere Leistung, während das mobile Ökosystem manchmal in der Lage ist, um die Gesamtleistung für Energieeinsparungen zu opfern. Doch, es ist eine einzigartige Zweck der meisten Stoffe, um höchstmögliche Performance bei maximaler Energieeinsparung zu bieten. Unten ist eine Anzahl von Verbindungen diskutiert werden, die möglicherweise von Aspekten der hier beschriebenen Erfindung profitieren würden.
  • Gemäß 1 ist eine Ausführungsform eines Blockdiagramms für ein Rechensystem mit einem Mehrkernprozessor dargestellt. Der Prozessor 100 umfasst jede Prozessor oder Verarbeitungseinrichtung, wie einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor, einen Handheld-Prozessor, einen Anwendungsprozessor , einen Coprozessor, ein System auf einem Chip (SOC ) oder eine andere Vorrichtung zum Ausführen von Code. Prozessor 100, in einem Ausführungsbeispiel, umfasst zumindest zwei Kerne - Kern 101 und 102, die asymmetrische oder symmetrische Kerne (die dargestellte Ausführungsform) enthalten können. Jedoch kann der Prozessor 100 eine beliebige Anzahl von Verarbeitungselementen enthalten, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik, um einen Software-Thread zu unterstützen. Beispiele für Hardwareverarbeitungselemente umfassen: eine Gewindeeinheit , eine Fadenschlitz, einen Faden, eine Verarbeitungseinheit, einen Rahmen, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und oder andere Element, das in der Lage ist, einen Zustand für einen Prozessor, wie ein Ausführungszustand oder architektonischen Zustand zu halten. In anderen Worten, bezieht sich ein Verarbeitungselement, in einer Ausführungsform, auf ein Hardware, die in der Lage ist, unabhängig zugeordnet mit dem Code wie beispielsweise einen Software-Thread, das Betriebssystem, eine Anwendung oder einen anderen Code zu sein. Ein physikalischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die potentiell eine beliebige Anzahl von anderen Verarbeitungselementen, wie Kerne oder Hardware-Threads umfassen.
  • Ein Kern bezieht sich häufig auf Logik auf einer integrierten Schaltung in der Lage des Aufrechterhaltens eines unabhängigen Architekturzustand, wobei jeweils unabhängig voneinander aufrechterhalte Architekturzustand mit wenigstens einigen speziellen Ausführungsressourcen zugeordnet ist. Im Gegensatz zu Kernen, bezieht sich ein Hardware-Thread typischerweise jede Logik angeordnet auf einer integrierten Schaltung in der Lage des Aufrechterhaltens eines unabhängigen Architekturzustand, wobei die unabhängig voneinander aufrechterhalte architektonische Zustände den Zugang zu Ausführungsressourcen teilt. Wie gesehen, wenn bestimmte Ressourcen geteilt werden und andere auf einer architektonischen Zustand gewidmet werden, überlappt die Linie zwischen der Nomenklatur eines Hardware-Thread und Kern. Noch häufiger werden ein Kern und ein Hardware-Thread durch ein Betriebssystem als einzelne logische Prozessoren betrachtet, wobei das Betriebssystem in der Lage ist, um Operationen individuell auf jedem logischen Prozessor zu planen
  • Physikalischen Prozessor 100, wie in FIGUR ,1 enthält zwei Kerne-Core 101 und 102. Hier sind Kern 101 und 102 als symmetrischen Kernen, dh Kerne mit den gleichen Konfigurationen, Funktionseinheiten und oder Logik betrachtet. In einer anderen Ausführungsform umfasst ein Kern 101 Aus-der-Ordnung-Prozessor-Kern, während Kern 102 einen In-Order-Prozessorkern umfasst. Allerdings können Kerne 101 und 102 einzeln von jeder Art von Kern, wie einem nativen Kern, einer Software-verwalteten Kern, einem angepassten Kern, um eine native Befehlssatzarchitektur (ISA) durchzuführen, einem angepassten Kern, um eine übersetzte Instruction Set Architecture auszuführen (ISA), einem Co-entworfen Kern oder anderen bekannten Kern ausgewählt werden. In einer heterogenen Kern-Umgebung (dh asymmetrische Kerne) können einige Formen der Übersetzung, wie eine binäre Übersetzung, verwendet werden, um zu planen, oder Code auf eine oder beide Kerne zu führen. Noch in der Diskussion zu fördern, die Funktionseinheiten dargestellt in Kern 101 sind weiter unten im Detail beschrieben, da die Einheiten im Kern 102 in ähnlicher Weise in der dargestellten Ausführungsform arbeiten.
  • Wie dargestellt, umfasst Kern 101 zwei Hardware-Threads 101a und 101b, die auch als Hardware-Thread Schlitze 101a und 101b bezeichnet werden kann. Daher sehen Software-Einheiten, wie beispielsweise ein Betriebssystem in einer Ausführungsform, theoretisch den Prozessor 100 als vier separate Prozessoren an, das heißt, vier logischen Prozessoren oder Verarbeitungselemente zur gleichzeitigen Ausführung von vier Software-Threads. Wie oben angedeutet, ist ein erster Faden mit Architekturzustandsregistern 101a verbunden, ein zweiter Thread ist mit Architekturzustandsregister 101b verbunden, ein dritter Thread kann mit Architekturzustandsregister 102a in Verbindung gebracht werden, und eine vierte Thread kann mit Architekturzustandsregister 102b zugeordnet werden. Hier kann jeder der Architekturzustandsregistern (101a, 101b, 102a und 102b) als Verarbeitungselemente, Faden Schlitze oder Faden-Einheiten bezeichnet werden, wie oben beschrieben. Wie dargestellt, sind Architekturzustandsregister 101a in der Architekturzustandsregister 101b repliziert, so dass individuelle Architektur-Status/Kontexte in der Lage sind, für logische Prozessor 101a und logischen Prozessor 101b gespeichert zu sein. Im Kern 101 können andere kleinere Quellen, wie beispielsweise Befehlszeiger und Umbenennungslogik in Zuordner und Umbenennungsblock 130, auch für Fäden 101a und 101b repliziert. Einige Ressourcen, wie zum Beispiel Re-Puffer, im Neuordnungs Renteneinheit 135, ILTB 120 Lade Speicher-Puffer und Warteschlangen können durch Partitionierung geteilt werden. Andere Ressourcen, wie zB internen Register des allgemeinens Zwecks, Seitentabellenbasisregister (s), Niedrig-Ebene-Daten-Cache und Daten-TLB 115, Ausführungseinheit (en) 140, und Teile der Aus-der-Ordnung-Einheit 135 sind potenziell vollständig geteilt.
  • Prozessor 100 enthält oft andere Ressourcen, die vollständig, durch Partitionierung geteilt, oder durch Verarbeitungselementen gewidmet werden kann. In 1 ist eine Ausführungsform eines rein beispielhaften Prozessors mit illustrativen logischen Einheiten Ressourcen eines Prozessors veranschaulicht. Beachten Sie, dass ein Prozessor , jede dieser Funktionseinheiten beinhalten, oder weglassen kann, sowie alle anderen bekannten Funktionseinheiten, Logik oder die nicht dargestellte Firmware umfassen kann. Wie dargestellt, enthält Kern 101 einen vereinfachten, vertretenden Aus-der-Ordnung (OOO) Prozessorkern. Aber eine In-Ordnung-Prozessor kann in verschiedenen Ausführungsformen verwendet werden. Der OOO Kern umfasst einen Verzweigungszielpuffer 120 Filialen, um vorherzusagen , um auszuführenden genommen zu warden und eine Anweisung-Übersetzungspuffer (I-TLB) 120, um Adressübersetzung Einträge für Anweisungen zu speichern.
  • Kern 101 enthält ferner Decodierungsmodul 125 gekoppelt um Abrufeinheit 120, um hergeholte Elemente zu entschlüsseln. Abruflogik, in einer Ausführungsform, enthält einzelne Sequenzen zugeordnet mit Gewinde Schlitze 101 a, 101b. Gewöhnlich ist Kern 101 mit einem ersten ISA zugeordnet, der ausführbare Anweisungen auf dem Prozessor 100 definiert festlegt. Oft umfassen Maschinencodebefehlen, die ein Teil der ersten ISA sind, einen Teil des Befehls (als Opcode bezeichnet), der eine Anweisung oder durchgeführte Operation bezeichnet/angibt. Decodierlogik 125 enthält eine Schaltung, die diese Anweisungen von ihrem Operationscodes erkennt und die dekodierten Anweisungen in der Pipeline für die Verarbeitung wie definiert durch den ersten ISA leitet. Zum Beispiel, wie erörtert im Folgenden näher, Decoder 125, in einer Ausführungsform, enthalten eine konstruierte oder angepasste Logik, um spezielle Anweisungen, wie Transaktionsbefehl zu erkennen. Als ein Ergebnis der Erkennung durch die Decoder 125 nimmt die Architektur oder Kern 101 bestimmten vorgegebenen Aktionen für Aufgaben zugeordnet mit der entsprechenden Instruktion. Es ist wichtig zu beachten, dass eine der Aufgaben, die Blöcke, Operationen und hierin beschriebenen Verfahren in Reaktion auf eine einzelne oder mehrere Anweisungen durchgeführt werden können; von denen einige neue oder alte Anweisungen sein. Hinweis-Decoder 126, in einer Ausführungsform erkennen die gleiche ISA (oder eine Teilmenge davon). Alternativ erkennt, in einem heterogenen Umfeld, Kerndecoder 126 eine zweite ISA (entweder eine Teilmenge der ersten ISA oder ein bestimmter ISA).
  • In einem Beispiel umfassen Zuordner und Umbenennungsblock 130 eine Zuordnungseinrichtung zum Reservieren von Ressourcen, wie Registerdateien, um Befehlsverarbeitungsergebnisse zu speichern. Allerdings sind Themen 101a und 101b potenziell in der Lage zur Aus-der-Ordnung-Ausführung, wo Zuordner und Umbenennungsblock 130 auch andere Ressourcen behält, wie Umordnungspuffern, um Befehlsergebnisse zu verfolgen. Einheit 130 kann auch eine Registerumbenennungs enthalten, um Programm Befehlsreferenz Register zu anderen Registern zu internem Prozessor 100 umzubenennen. Neuordnungs/Ruhestand Einheit 135 umfasst Komponenten, wie die oben erwähnten Neuordnungspuffer, Ladepuffer und Speicherpuffer, um Aus-der-Ordnung-Ausführung und später in-Ordnung-Ruhestand von Anweisungen ausgeführt aus der Ordnung zu unterstützen.
  • Scheduler und die Ausführungseinheit (en) Block 140, in einer Ausführungsform umfassen einen Scheduler-Einheit, um Anweisungen Betrieb an Ausführungseinheiten zu planen. Zum Beispiel wird ein Gleitkomma-Befehl an einem Port einer Ausführungseinheit hat vorgesehen, die einen verfügbaren Gleitkomma-Ausführungseinheit. Register-Dateien zugeordnet mit der Ausführungseinheiten sind ebenfalls umgefasst, um Informationen-Befehlsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten umfassen eine Gleitkomma-Ausführungseinheit , eine Integer-Ausführungseinheit , eine Sprungausführungseinheit, eine Lastausführungseinheit, einen Speicher-Ausführungseinheit und anderen bekannten Ausführungseinheiten.
  • Untere Ebene-Daten-Cache und Datenübersetzungspuffer (D-TLB) 150 werden an die Ausführungseinheit (en) 140 gekoppelt. Der Daten-Cache ist vor kurzem auf Elemente zur Speicherung verwendet betrieben, wie Datenoperanden, die möglicherweise in Speicher-Kohärenz-Status stattfinden. Die D-TLB ist es, aktuelle virtuelle linearen in physischen Adressübersetzungen zu speichern. Als ein spezifisches Beispiel kann ein Prozessor einen Seitentabellenstruktur aufweisen, um physikalischen Speicher in eine Vielzahl von virtuellen Seiten zu brechen.
  • Hier teilen die Kerne 101 und 102 den Zugang zu höherer Ebene oder weiter-out-Cache, wie eine Cache der zweiten Ebene verbunden mit On-Chip-Schnittstelle 110. Beachten Sie, dass höhere Ebene oder weiter-out sich auf Cache-Ebenen erhöht oder immer weiter Weg von der Ausführungseinheit (en) bezieht. In einer Ausführungsform ist Cache höherer Ebene ein Last-Ebene-Daten-Cache - letzte Cache in der Speicherhierarchie auf Prozessor 100 - wie eine zweite oder dritte Ebene-Daten-Cache. Allerdings ist eine höhere Ebene-Cache nicht so begrenzt, weil es mit verbunden werden oder einen Befehls-Cache umfassen kann. Ein Trace-Cache - eine Art von Befehl-Cache - stattdessen kann nach Decoder 125 gekoppelt werden, um decodierte Spuren vor kurzem zu speichern. Hier bezieht sich ein Befehl potentiell auf ein Makrobefehl (dh eine allgemeine Anweisung erkannt durch die Decoder), die in eine Anzahl von Mikrobefehlen (Mikrooperationen) decodieren kann.
  • Bei der dargestellten Konfiguration enthält der Prozessor 100 auch On-Chip-Schnittstellenmodul 110. Historisch wird eine Speichersteuerung, die weiter ausführlicher unten beschrieben wird, in einem Computersystem außerhalb Prozessor 100 aufgenommen. In diesem Szenario muss On-Chip-Schnittstelle 11 mit Geräten extern an den Prozessor 100 kommunizieren, wie dem Systemspeicher 175, einem Chipsatz (oft mit einem Speichercontroller -Hub, um den Speicher 175 und eine I O-Controller-Hub, um die Peripheriegeräte zu verbinden), einem Speicher-Controller-Hub, einem Northbridge oder anderer integrierten Schaltung. Und in diesem Szenario kann der Bus 105 jede bekannte Verbindungs gehören, wie Multi-Drop-Bus, eine Punkt-zu-Punkt-Verbindung, eine serielle Verbindung, einen parallelen Bus, einen kohärenten (zB Cache-kohärent) Bus, eine geschichtete Protokollarchitektur, einen Differenz-Bus und einen GTL-Bus.
  • Speicher 175 kann mit dem Prozessor 100 oder gewidmet werden oder mit anderen Geräten in einem System verteilt werden. Häufige Beispiele von Typen von Speicher 175 umfassen DRAM, SRAM, nichtflüchtigen Speicher (NV-Speicher) und andere bekannte Speichereinrichtungen. Beachten Sie, dass Vorrichtung 180 eine Grafikbeschleuniger Prozessor oder Karte gekoppelt mit einem Speichercontroller-Hub enthalten kann. Datenspeicher gekoppelt mit einem I O-Controller-Hub, einen drahtlosen Transceiver, eine Flash-Vorrichtung, eine Audiosteuereinheit, eine Netzwerksteuerung oder eine andere bekannte Vorrichtung.
  • Kürzlich jedoch wenn mehr logische und Vorrichtungen auf einem einzigen Chip, wie beispielsweise SOC integriert sind, kann jedes dieser Geräte in den Prozessor 100 einverleibt werden. Zum Beispiel in einem Ausführungsbeispiel ist ein Speicher-Controller-Hub auf derselben Verpackung und oder der Matrize mit dem Prozessor 100. Hier umfasst ein Abschnitt des Kerns (Ein-Kern-Abschnitt) 110 eine oder mehrere Steuerung (en) für die Verbindung mit anderen Vorrichtungen wie beispielsweise Speicher 175 oder einem Graphikgerät 180. Die Konfiguration inklusive eine Verbindung und Steuerungen zur Verbindung mit solchen Vorrichtungen wird oft als On-Kern (oder un-Kern-Konfiguration) bezeichnet. Als ein Beispiel gehört On-Chip-Schnittstelle 110 eine Ringverbindung für On-Chip-Kommunikation und serielle Punkt-zu-Punkt-Verbindung 105 mit einer Hochgeschwindigkeit für Off-Chip-Kommunikation. Doch in der SOC-Umgebung noch mehr Geräte, wie beispielsweise die Netzwerkschnittstelle, Co-Prozessoren, Speicher 175, Graphikprozessor 180, und jede andere bekannte Computersysteme /-Schnittstelle können auf einem einzigen Chip oder eine integrierte Schaltung integriert warden, um den kleinen Formfaktor mit hoher Funktionalität und niedrigem Stromverbrauch zu bieten.
  • In einer Ausführungsform kann der Prozessor 100 eine Compiler, Optimierung und/oder Übersetzer Code 177 ausführen, um zu kompilieren, um zu übersetzen, und/oder um Anwendungscode 176 zu optimieren, um das Gerät und hier beschriebenen Verfahren order zu Schnittstelle mit diesem zu unterstützen. Ein Compiler enthält oft ein Programm oder eine Gruppe von Programmen, um Quelltext/Code in Zieltext/code zu übersetzen. In der Regel wird Zusammenstellung des Programms/Anwendungscode mit einem Compiler in mehreren Phasen durchgeführt und geht zur Transformierung der Hoch-Ebene-Programmiersprache-Code in Niedrig-Ebene-Maschine oder Assembler-Code. Dennoch können Single-Pass-Compilern noch für einfache Zusammenstellung genutzt werden. Ein Compiler kann jedes bekannte Zusammenstellungstechniken verwenden und alle bekannten Compileroperationen führen, wie die lexikalische Analyse, Vorverarbeitung, Parsing, semantische Analyse, Code-Generierung, Code-Transformation und Code-Optimierun Größere Compiler enthalten oft mehrere Phasen, aber meistens werden diese Phasen in zwei allgemeine Phasen enthalten: (1) ein Front-End, das heißt in der Regel, wo syntaktische Verarbeitung, semantische Verarbeitung, und einige Transformation/Optimierung stattfinden kann, und (2) ein Back-End, dh in der Regel, wo die Analyse, Transformationen, Optimierungen und Code-Generierung erfolgt. Einige Compiler beziehen sich auf eine Mitte, die die Verwischung der Abgrenzung zwischen einem Front-End und Back-End eines Compilers zeigt. Als Ergebnis kann Beziehung auf Insertion, Verband Generation oder eine andere Operation eines Compilers in einer der oben genannten Phasen oder Pässe, sowie allen anderen bekannten Phasen oder Durchgängen von einem Compiler stattfinden. Als illustratives Beispiel, fügt ein Compiler potenziell Operationen, Anrufe, Funktionen, usw. in einer oder mehreren Phasen der Zusammenstellung ein, wie Einsetzen der Anrufe/Operationen in einem Front-End-Phase der Zusammenstellung und dann Transformation der Anrufe/Operationen in Niedriger-Ebene-Code während einer Transformationsphase. Beachten Sie, dass bei der dynamischen Zusammenstellung, Compiler-Code oder dynamische Optimierungscode kann diesen Betrieb/Anrufe einfügen, sowie den Code für die Ausführung während der Laufzeit optimieren. Als ein spezifisches illustratives Beispiel kann Binär-Code (bereits kompilierten Code) dynamisch zur Laufzeit optimiert werden. Hierbei kann der Programmcode die dynamische Optimierungscode, den binären Code oder eine Kombination davon umfassen.
  • Ähnlich mit einem Compiler übersetzt Übersetzer, wie eine binäre Übersetzer, Code entweder statisch oder dynamisch, um Code zu optimieren und oder zu übersetzen. Daher kann sich Beziehung auf die Ausführung von Code, Anwendungscode, Programmcode oder andere Software-Umgebung beziehen: (1) Durchführung einer Compiler-Programm (en), die Optimierung der Codeoptimierer oder Übersetzer entweder dynamisch oder statisch, um Programmcode zu kompilieren, um Software-Strukturen zu erhalten, um andere Operationen durchzuführen, um Code zu optimieren, oder um Code zu übersetzen; (2) Ausführung der Hauptprogrammcode einschließlich Operationen Anrufe, wie Anwendungscode, der optimiert wurde/zusammengestellt; (3) Ausführung anderer Programmcode, wie Bibliotheken zugeordnet mit dem Hauptprogrammcode, um Software-Strukturen zu erhalten, um anderen Software-bezogenen Operationen durchzuführen, oder um Code zu optimieren; oder (4) eine Kombination davon.
  • In verschiedenen Ausführungsformen kann ein Prozessor als System-on-Chip (SoC) konfiguriert werden. Solche SoC kann in einer Vielzahl von Rechenvorrichtungen von Niedrig-Power tragbare Rechenvorrichtungen wie Smartphones, Tablet-Computer, Ultrabooks™ und so weiter zu den herkömmlichen Computer-Systeme wie Notebooks, Desktops, Server-Computern und anderen verwendet werden. In modernen SoCs, sind typischerweise viele verschiedene Mittel auf einem einzelnen Halbleiterchip vorhanden. Diese Mittel umfassen eine oder mehrere Verarbeitungseinheiten. In einer Ausführungsform kann ein SoC mehrere zentrale Verarbeitungseinheiten (CPUs) umfassen, jeweils inklusive einen oder mehrere Kerne, zugeordneten Cache-Speicher, Schnittstellen und so weiter. Darüber hinaus umfasst der SOC anderen Mitteln wie einen Kohärenz-Stoff, der Mittel auf dem Chip verbindet, und führt Kohärenzverarbeitung. In einigen Ausführungsformen wird diese Kohärenzstoff als Systemmittel bezeichnet, das sich aus verschiedenen Bestandteilen einschließlich Speicher-Controller-Schaltung, Shared-Memory-Gewebe Schaltung unter anderem Schaltungen und Logik gebildet ist. Die Begriffe „kohärenten Stoff“, „Kohärenzstoff“ und „Systemagenten“ werden hierin austauschbar verwendet.
  • Ein Snoop Anzeige kann mit einer Speicheranforderung zugeordnet warden, um anzuzeigen, dass die Anforderung mit Caching-Agenten in dem System, wie beispielsweise Zentraleinheiten (CPUs) gehalten warden sollte. Nicht-Caching Agenten einer SoC kann die geschnüffelten und nicht geschnüffelten Speicheranforderungen ausgeben. Eine Kohärenzgewebe oder andere Mittel verwendet eine Bus-Protokoll, um das Eigentum von einem geschnüffelten Speicheranforderung über alle Caching-Agenten zu lösen. Diese Kohärenz-Protokolle können mehrere Messaging-Zyklen dauern, um das Eigentum von einer Cache-Zeile zu lösen. Ein geringer Strom Bereich Snooping-Algorithmus arbeitet, um einen einzigen zusammenhängenden Anfrage pro Adresse auf einmal zu verarbeiten. Als solcher, zwei oder mehrere kohärente Zugriffe auf die gleiche Adresse (zB Cache-Zeile) werden serialisiert, die dafür sorgt, dass das Eigentum eindeutig für jede kohärente Anfrage etabliert wird. Jedoch kann diese Serialisierung die Leistung reduzieren und die Leistung durch nicht benötigten Schnüffler erhöhen. Andere Implementierungen umfassen eine inklusive Snoop-Filter in der Kohärenzstoff, um das Eigentum an allen Cache-Zeilen in das System schnell zu lösen. Doch können die Fläche Leistungskosten unerwünscht für den Bau einer so großen Snoop-Filter für Niedrig-Power-Prozessoren wie SoC sein.
  • Ausführungsformen bieten einen Algorithmus und Mikroarchitektur, um eine sehr kostengünstige zeitlichen Snoop-Filter unter Verwendung von Datensteuerstrukturen eines Kohärenzstoff bereitzustellen. Ausführungsformen können optimiert werden, um Schnüffler aus Nicht-Caching Mittel zu filtern, die vielen gleichen Cache-Zeile-Zugänge in zeitlicher Nähe ausgeben. In einer Ausführungsform als Teil des SoC Startkonfigurationsprozesses wird die Aktivierung und Deaktivierung der zeitlichen Snoop-Filter in einem Steuerregister beschreibbar BIOS ausgesetzt.
  • Unter Bezugnahme auf 2 ist ein Blockdiagramm auf hohem Niveau Ansicht eines SoC in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 2 umfasst SoC 200 verschiedene Mittel und anderen Komponenten. Für die Zwecke der Verbindung des verschiedenen Mittels und der Bereitstellung bestimmter System-Ebene-Kontrolltechniken wird ein kohärente Stoff 210 vorgesehen, hierin auch als Systemmittel. Wie weiter unten beschrieben wird, umfasst das Systemmittel 210 eine zeitliche Snoop-Filter-Logik in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung sowie verschiedene andere Bestandteile, wie Warteschlangen, Puffer, Tracker, Steuerlogik und so weiter.
  • Wie gesehen, wirkt kohärenter Stoff 210 als primäre on-Chip-Verbindung zwischen einer Vielzahl unterschiedlicher Mittel und andere Komponenten. An einer stromaufwärtigen Seite ist eine Mehrzahl von Cache-Agenten 2201-220n vorgesehen. Obwohl der Umfang der vorliegenden Erfindung nicht in dieser Hinsicht beschränkt ist, können diese Caching-Agenten zentrale Verarbeitungseinheiten (CPUs) entsprechen, die in der Regel einen oder mehrere Prozessorkerne und eine oder mehrere Ebenen eines Cache-Speichers umfassen. So sind diese Mittel Caching-Agenten, wo sie konfiguriert sind, um Daten in einer kohärenten Weise über interne Mittel-Caches zu erhalten. Obwohl als CPUs beschrieben, zu verstehen, dass andere Arten von Caching-Mittel wie Kerne, Grafik-Engines oder andere spezielle Verarbeitungslogik im Zusammenhang mit Cache-Speicher als Caching-Agenten in einigen Ausführungsformen handeln können. Auch verstehen, dass Mittel, die Erinnerung abgebildet Input-Output-(MMIO) Schreibt senden, nicht auf Caching-Agenten und andere Mittel beschränkt sind, wie nicht-Caching-Agenten auch senden MMIO Transaktionen.
  • Im Gegensatz dazu können andere Agenten des SoC 200 als nicht-Caching-Agenten konfiguriert werden. Verschiedene Arten von nicht-Cache-Mittel können vorhanden sein, wie IO Mittel, die in vielen Formen, wie Aufnahmegeräten, Wiedergabevorrichtungen, Peripheriegeräten und so weiter erfolgen. Einige dieser nicht-Caching Mittel wie nicht-Caching IO Mittel 2301 und 2302 sind direkt an den System Agent 210 über eine On-Chip-Verbindung gekoppelt, die Ordnungsregeln in Übereinstimmung mit der Peripheral Component Interconnect Express (PCIe ™)-Kommunikationsprotokoll entspricht. Die nicht-Caching-Agenten geben aufwärts die geschnüffelten und nicht geschnüffelten Speicheranforderungen auf einem primären Schnittstelle dieses on-Chip-Verbindung aus. O Mittel können Speicheranforderungen auf jedem virtuellen Kanal (VC) auszugeben, die der SoC (Beachten Sie, dass einige SoCs unterstützen VC 1, einige unterstützen 2 VCs, einige unterstützen 3 VCs und so weiter) unterstützt.
  • Anfragen und Schreiben von Daten kommen um Systemagent 210 auf einer eingehenden Pfad. Lese der Fertigstellungsdaten kommt um die Agenten auf dem ausgehenden Pfad zurück. Caching Agenten geben abwärts Anforderungen an IO-Devices über Port lOs aus oder zugeordneter Speicher liest schreibt. Diese Anfragen reisen auf einem ersten virtuellen Kanal (nämlich VC0), in einer Ausführungsform. Jede Anfrage von einem Caching-Agent 220 erhält eine Anzeige von Systemagent 210, wenn es global bestellt ist. MMIO Schreib von einem Caching-Agent 220 werden weltweit bestellt, wenn sie in eine geordnete Domäne der Systemagent 210 passieren. Diese Weitergabe wird als die Buchung der nachgeschalteten Schreib in den ausgehenden Pfad bezeichnet. Sobald eine abgehende Leseabschluss in die bestellten Domain gekreuzt wurde, kann sie einen vorherigen MMIO Schreib der gleichen VC nicht umgehen, die in der bestellten Domain gepostet wurde.
  • Wiederum koppeln andere nicht-Caching IO Mittel 2303-230z über einen Schalter-Gewebe 235 zu der primäre Schnittstelle der On-Chip-Verbindung oder eine Brücke zu einem anderen Protokoll. In dem gezeigten Beispiel kann jeder dieser nicht-Cache-Mittel (und die Switch-Fabric) zu kohärentem Stoff 210 über eine erste Schnittstelle des On-Chip-Verbindung koppeln. In einer Ausführungsform umfasst eine primäre Schnittstelle eine oder mehrere VC, ohne Bestellanforderungen zwischen verschiedenen VC. Zusätzlich umfasst SoC 200 ferner eine Mehrzahl von integrierten nicht-Caching-Agenten 2401-240x, die direkt zu kohärentem Stoff 210 über eine Schnittstelle Antragsteller von einem anderen Interconnect-Technologie koppeln können. Weiter kann eine Mehrzahl von Speichersteuerungen 2501-250n auch zu kohärentem Stoff 210 gekoppelt werden, um eine Verbindung und Funktionskontrolle für einen Speicher (nicht zur Vereinfachung der Darstellung in 2) gekoppelt zu dem SOC bereitzustellen, der in einer Ausführungsform als dynamische Direktzugriffsspeicher (DRAM) implementiert warden kann.
  • Kohärente Gewebe 210 umfasst eine gemeinsame Speicher-Gewebe, um die Mittel auf einen gemeinsamen Speicher (beispielsweise über eine dazwischen Speichersteuerung) zu koppeln. Die geteilte Speicher- Gewebe ist so konfiguriert, um die Einhaltung der Anforderungen der Qualität der Dienstleistungen (QoS) für zeitkritische isochrone Geräte zu ermöglichen, während der Bereitstellung von Speicherbandbreite Dosierung für nicht taktsynchronen Geräte, auch bezeichnet als Best-Effort-Vorrichtungen, in einer Ausführungsform. Obwohl bei diesem Beispiel in der Ausführungsform der 2 gezeigt, ist Verständnis des Schutzumfangs der vorliegenden Erfindung nicht in dieser Hinsicht, und vielen verschiedenen Arten von SoCs begrenzt und andere Halbleitervorrichtungen können die Vorteile eines zeitlichen Snoop-Filter-Logik gemäß einer Ausführungsform der vorliegenden Erfindung zu verlassen.
  • Eine Klasse der Dienstkategorie wird jedem Gerät gekoppelt mit der gemeinsam genutzten Speichergewebe zugeordnet. Mehrere Serviceklassen kann durch das Gewebe unterstützt werden. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, können in einer Ausführungsform Geräte von zwei Klassen von Dienstleistungskategorien vorhanden sein, einschließlich eines isochronen Klasse der Servicekategorie für latenzempfindlichen Geräten verwendet und ein Best-Effort-Klasse der Kategorie Service verwendet für Geräte, die mehr Latenzen tolerieren können, um ihre Anforderungen in den Speicher zu bedienen. Obwohl der Umfang der vorliegenden Erfindung nicht in dieser Hinsicht beschränkt ist, umfassen in einigen Ausführungsformen Latenzempfindlichen Vorrichtungen die Darstellungssystemen, wie Audio-oder Video-Player, Kameraeinrichtungen und so weiter, während Einrichtungen mit geringer Priorität Prozessorkerne, Grafikprozessoren und usw... gehören.
  • Zeit, in der Form einer Frist von Anforderung wird von den isochronen Vorrichtungen auf den Stoff übertragen, um auf dem Gewebe zu zeigen, die erforderliche Latenz, um eine Anforderung für den Speicher zu beenden. Um die Synchronisierung zu aktivieren, sendet das Gewebe eine globale Timer für alle isochronen ersuchenden Mittel. Diese globale Zeitgeber ist kontinuierlich auf Ausgangssignale von dem Gewebe getrieben, so daß es für die Abtastung durch den isochronen Geräte verfügbar ist. In Reaktion auf diesen Wert der Zeit, bestimmen die Agenten eine Latenzbedarf für die Fertigstellung einer Anfrage, und fügen diese Latenzwert der globalen Timer-Wert ein, um eine Frist für den Antrag zu bilden. Unterschiedliche Art und Weise der Bestimmung Latenz kommen in verschiedenen Ausführungsformen. Basierend auf dieser mitgeteilten Latenz oder Frist-Wert kann das Gewebe bessere Planungsentscheidungen basierend auf der Kenntnis der aktuellen Energiezustand des Speichers und der erforderlichen Wartezeiten für andere außerplanmäßige Speicheranforderungen angemeldet in den Stoff. Diese Frist-Kommunikation kann die Speicherbandbreite verbessern und auch die Systemleistung sparen. Die Verwendung von Anfrage-Fristen bietet den Stoff mit Latenzinformationen für jede Anfrage von einem isochronen Gerät.
  • Ausführungsformen können auch für die Effizienz der Speicherbandbreite durch Ermöglichung der Speicheranforderungen bereitstellen, um außerhalb der Reihenfolge geplant zu warden. Um solche Bedenken zu lösen, weist das Gewebe eine Prioritätsstufe zu jedem isochronen Speicheranforderung, zB ein hoher oder niedriger Priorität zu. Bei der Planung der isochronen Anforderungen mit hoher Priorität ist der Betrag der erlaubten Auftragsterminierung weniger als das, was akzeptabel ist, bei der Planung bester Anstrengung oder isochroner Anforderungen mit niedriger Priorität. Begrenzen der Menge an Aus-der-Ordnung-Planung für Anforderungen mit hoher Priorität wird in Reihenfolge durchgeführt, um sicherzustellen, dass die Latenzanforderung erfüllt ist. Weil Anfrage-Priorität wird nach Ablauf der Frist des Antrags bestimmt, kann der Stoff sofort bestimmen, nachdem ein Antrag geplant wurde, was die Prioritätsstufen von anderen anstehenden Anforderungen für einen isochronen Gerät sind. Mit der Frist-Verfahren ändert die Prioritätsstufe aller ausstehenden Anforderungen nur, wenn der globalen Timer inkrementiert.
  • In einer Ausführungsform enthält den gemeinsame Speicher-Stoff zwei Entscheidungspunkten, die für Plannungsanforderungen gesendet in die Speichersteuerung verwendet werden. Die erste Schiedsstelle wird verwendet, um Anfragen von den Geräten in den gemeinsam genutzten Speicherstoff zu zugeben und wird als zugebenen Schiedsrichter bezeichnet. Die zweite Schiedsstelle wird verwendet, um die von dem gemeinsamen Speicher-Stoff an den Speichercontroller gesendeten Anforderungen zu planen und wird als eines Scheduler-Schiedsrichters bezeichnet.
  • Jedes Gerät verbunden mit den gemeinsamen Speicher Gewebe hat eine Auftragsschnittstelle, die zwischen dem Gerät und Gewebe verbunden ist. Die Auftragsschnittstelle liefert Informationen über die Anforderung, die für die QoS-Speicherplanung verwendet werden kann. In einer Ausführungsform umfassen diese Informationen eine Speicheradresse oder ID-Feld und ein Operationscode-Feld. Für die isochronen Geräte ist ein zusätzliches Feld genannt Anfrage-Frist-Feld vorgesehen, um die erforderliche Wartezeit benötigt zur Vervollständigung der Anforderung anzuzeigen. Man beachte, dass in einigen Implementierungen SoCs die Schnittstelle der Speicherstoff an andere Gewebe oder Schaltern verbunden warden kann, die mehrere Geräte ermöglichen, eine gemeinsame Auftragsschnittstelle zu teilen.
  • Unter Bezugnahme auf 3, ist der Blockdiagramm eines Abschnitts eines gemeinsamen Speicherstoff in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 3 ist ein gemeinsam genutzter Speicher Gewebe 300 zwischen einer Vielzahl von Agenten 3150-3153 (allgemein Mittel 315) und einer Speichersteuerung 370 gekoppelt. Man beachte, dass in einigen Ausführungsformen mehr als eine Speichersteuereinheit vorhanden ist. Selbstverständlich, während gezeigt nicht zur Vereinfachung der Darstellung, verstehen, dass der Speicher-Controller mit einem Systemspeicher wie beispielsweise einen dynamischen Direktzugriffsspeicher (DRAM) oder einem anderen Systemspeicher gekoppelt ist.
  • In der in 3 sind verschiedene Arten von Mitteln zur gemeinsamen Speichergewebe 300 gekoppelt. Insbesondere gehören die verschiedenen Agenten eine erste Klasse von Service (CoS) Agententyp, nämlich so genannte isochronen Mittel und eine zweite Klasse von Service-Agent Art, nämlich so genannte Best-Effort-COS Mittel. Wie man sieht, kann jeder der Agenten 315 Anfrage-Informationen an einen zugebenen Schiedsrichter 320 kommunizieren. Im Gegenzug kann der zugebene Schiedsrichter 220 entsprechende Steuertyp -Informationen zurück an die Agenten kommunizieren. Darüber hinaus umfassen die isochronen Mitteln (nämlich 3151 und 3153 Mittel in der Ausführungsform der 3) ferner eine zusätzliche Verbindung, um die Anfrage- Fristinformationen an die zugebene Schiedsrichter 320 zu kommunizieren. Zu diesem Zweck sind diese Mittel ferner konfiguriert, um die globale Zeitinformation von einem globalen Zeitgeber 350 zu empfangen, auch sowohl zu der zugebene Schiedsrichter 320 und einem Scheduler-Schiedsrichter 330 gekoppelt
  • In der Ausführungsform der 3, kann der zugebene Schiedsrichter 320 so konfiguriert warden, um die eingehenden Anfragen von Agenten 315 (und Anfrage-Termin-Informationen von isochronen Agenten) zu empfangen, um entsprechende Anfragen auf Scheduler Schiedsrichter 330 zu wählen. In ihrer Schiedsprozess zu unterstützen, empfängt der zugebene Schiedsrichter 320 Konfigurationsinformationen von einem Satz von Konfigurationsregistern 360 gekoppelt weiter auf Scheduler Schiedsrichter 330. Außerdem kann eine Anforderung und Kohärenz-Tracker 340 auf Schiedsrichter 320 und 330 gekoppelt werden. Im allgemeinen kann Tracker 340 mehrere Anzeigetafeln 342, einen Datenpuffer 344 und die entsprechenden Adress-Tag-Speicher 345, Steuer Warteschlangen 346 und andere Ressourcen, wie beispielsweise verschiedene Puffer, Logik wie Ressourcenzuweisungslogik 248, und so weiter umfassen. In einigen Implementierungen kann das Tag-Array und die Datenpuffer an anderer Stelle als dem Tracker befinden. Obwohl gezeigt auf diesem hohen Niveau in der Ausführungsform der 3, ist das Verständnis des Umfangs der vorliegenden Erfindung nicht in dieser Hinsicht beschränkt.
  • Die Shared-Memory-Gewebe kann bestimmte endliche Ressourcen sind, die zuerst zugeordnet sind, bevor eine Anforderung von einem anfordernden Agenten kann durch den zugebenen Schiedsrichter gewährt werden. Die Ressourcen gehören verfügbaren Einträge in der internen Datenpuffer und Adressanhänger Lagerung. Andere endliche Ressourcen umfassen verfügbare Einträge in den Speicher-Scheduler und Tracker-Anzeigetafeln der Anfrage. Es gibt eine Eins-zu-eins-Entsprechung in Ressourcen für den internen Datenpuffer, Tag-Array und Speicher Scheduler-Anzeigetafel des Gewebes. In einer Ausführungsform sind diese Mittel zu einem vorbestimmten Bereich (beispielsweise die Breite einer Cache-Zeile wie 64 Byte) des Speichers zugeordnet. Jede aktive Anfrage ist auch einen eigenen Eintrag in der Anfrage und Kohärenz-Tracker zugeordnet, aber mehrere Anfragen auf dieselbe Region im Speicher teilen den gleichen Eintrag im Datenpuffer, Tag-Array und Scheduler-Anzeigetafel des Speichers. Obwohl es für mehr als 1 Anfrage möglich ist, um an den gleichen Daten-Puffer, Tag-Array, und den Anzeigetafel-Eintrag des Schedulers zugeordnet zu warden, ist nur 1 Leseanforderung an den Speicher-Controller für alle ausstehenden Leseanforderungen in der Anfrage und Kohärenz-Tracker geplant.
  • Die Anforderungsschnittstelle für alle Geräte hat eine Verbindung mit dem zugebenen Schiedsrichter des Gewebes. Isochronen Geräte verwenden die Frist-Feld der Anfrage-Bus, um auf das Gewebe anzuzeigen, die erforderliche Wartezeit, um die Anforderung abzuschließen. Der Stoff sendet eine globale Timer-Wert für alle isochronen Geräten, die mit dem Stoff befestigt sind. Für jede Anfrage geschickt zu der Gewebe bestimmt die isochronen Einrichtung, beispielsweise in einer Frist-Logik, die erforderliche Wartezeit für den benötigten Antrag, um den Wert auf den aktuellen Wert der globalen Timer zur Erstellung des Anfrage-Termins zu vollenden und zu addieren. Unterschiedliche Verfahren können durch verschiedene isochronen Einrichtungen verwendet werden, um die erforderliche Wartezeit für die Anforderung zu bestimmen, sondern alle isochronen Vorrichtungen den Stoff, doe Latenz-Anfrage zur Verwendung eines Frist-Felds der Anforderungsschnittstelle zeigen.
  • In einer Ausführungsform hat der zugebene Schiedsrichter zwei Prioritätsstufen. Es gibt einen Pfad mit hoher Priorität in dem Schiedsrichter, der für dringende isochronen Anforderungen verwendet wird. Ein Antrag gilt als dringend, wenn der ersuchende Mittel als einen isochronen Agent konfiguriert ist und und die Frist-Feld der Anforderung ist kleiner als ein Wert gespeichert in einem Konfigurationsregister mit Spezifizierung eines Schwellenwerts, bezogen auf eine Dringlichkeit Schwellenwert. Der zugebene Schiedsrichter, hat auch einen Pfad mit niedriger Priorität für Best-Effort-Anfragen und für isochronen Anforderungen, die nicht als dringend verwendet sind. Die letzte Stufe des Schiedsverfahrens mit der Verwendung einer Prioritätswähler getan, der zwischen dem Gewinner der hohen Priorität-Schiedsverfahren und dem Gewinner der niedrigen Priorität-Schiedsverfahren auswählen.
  • In einer Ausführungsform hat der Abschlussschalter des zugebenen Schiedsrichters zwei Betriebsarten, die mit einem Konfigurationsregister ausgewählt werden können. Der erste Modus ist ein fester Priorität-Modus, in dem die Annahme mindestens einer Anforderung hoher Priorität am Eingang des zugebenen Schiedsrichters anwesend ist, der Wähler wählt die Gewinner des Schieds-Pfad mit hoher Priorität vor der Wahl der Gewinner des Schieds-Pfad mit niedriger Priorität. Der zweite Modus des letzten Selektor ist ein gewichteter Round-Robin-Modus, in der die endgültigen Wahlschalter zwischen Gewährung des hohen Priorität-Pfads zu der Gewährung desniedrigen Priorität-Pfads nach N Anzahl der Anforderungen mit hoher Priorität eingeräumt sind. Der Wähler vergibt dann M Anzahl der Anforderungen mit niedriger Priorität aus dem Gewinner des niedrigen Priorität-Pfads vor dem Wechsel zurück zu der Gewährung von dem hohen Priorität-Pfad. In einer Ausführungsform werden die Werte für N und M die unter Verwendung von Konfigurationsregistern angegeben.
  • Unter Bezugnahme auf 4 ist ein Blockschaltbild weiterer Einzelheiten eines zugebenen Schiedsrichters in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 4 empfängt der Schiedsrichter 320 eingehende Anfragen vom anfordernden Agenten. In dieser Darstellung sind die ersuchenden Mittel 3150 und 3151 nicht taktsynchronen oder Best-Effort-Agenten, während Agenten 3152 und 3153 isochrone Mittel sind. Beachten Sie, dass die isochronen Mittel an Bestimmungslogik der Frist 318 umfassen oder gekoppelt warden können, die verwendet wird, um die erforderliche Wartezeit für Anfragen zu berechnen. In einer Ausführungsform, in der zumindest ein Teil der Mittel Dritten IP-Blöcken ist, kann diese Logik in Hülle oder Interface-Logik implementiert werden, die das Mittel auf den gemeinsamen Speicher Stoff koppelt.
  • In der gezeigten Ausführungsform umfasst der zugebene Schiedsrichter 320 einen erste altersgerechten Schiedsrichter 322 und einen zweite altersgerechten Schiedsrichter 324, die jeweils den altersgerechten Schiedsrichter mit niedriger und mit hoher Priorität entsprechen. So wie gesehen, sind die Anforderungen von allen Agenten 315 zum ersten Schiedsrichter 322 vorgesehen, während nur Anfragen von isochronen Agenten 3152 und 3153 auf den zweiten Schiedsrichter 324 vorgesehen sind. Um festzustellen, ob eine bestimmte Anfrage von einem der isochronen Mittel in einem dringenden Status ist, ist ein Paar von checker Frist-Logiken 3210 und 321η jeweils gekoppelt, um die Anforderungen aus einem entsprechenden dieser isochronen Mittel, sowie globale Timing-Informationen aus dem globalen Timer 350 zu empfangen. Basierend auf einem Vergleich der Frist-Informationen vorgesehen von dem Agenten und dem globalen Zeitinformation kann ein Hinweis auf eine dringende Status einer entsprechenden Anfrage an zweiten Schiedsrichter 324 bereitgestellt werden.
  • Im Betrieb werden die Schiedsrichter 322 und 324 arbeiten, um eine Schieds-Gewinner aus einer Menge von eingehenden Anfragen zu wählen. In der gezeigten Ausführungsform wird diese Bestimmung teilweise auf Informationen von einem Alterslagerung 326 basiert, die einen Alterswert für jeden der Agenten speichert. Die entsprechenden Träger aus jeder der Schiedsrichter kann an einen PrioritätsSchiedsrichter-Selektor gekoppelt warden, der nach Betriebsart einer entsprechenden Anfrage wählt, um den Scheduler-Schiedsrichter 330 (nicht zur Vereinfachung der Darstellung in 4 gezeigt). Zu diesem Zweck sind diese Mittel ferner konfiguriert ist zum globalen Zeitinformation von einem globalen Zeitgeber 350, die auch beide gekoppelt erhalten zugeben Arbiter 320 und ein Scheduler-Arbiter 330.
  • Das Alter-basierte Algorithmus umgesetzt durch den zugebenen Schiedsrichter ist so, dass der anfordernde Agent die höchste Prioritätsstufe gegeben wird, der seit dem letzten für den längsten gewährt von der Schiedsrichter gewartet hat. Sobald ein Agent die höchste Prioritätsstufe erhalten hat, wird die Prioritätsstufe für diesen Agenten nicht ändern, es sei denn, dass Mittel von der Schiedsrichter erteilt wurde. Auf diese Weise können Probleme mit Hunger gefunden häufig under Verwendung des Round-Robin-Schieds vermieden werden, indem sichergestellt wird, dass die Prioritätsstufe für eine anfordernden Agenten nur in Prioritätsstufe erhöhen kann, bis die anfragende Agent durch die Schiedsrichter erteilt wurde.
  • Der zugebene Schiedsrichter ermöglicht auch den Agenten-Gewichte, um an alle anfragenden Agenten zugeordnet zu werden. Gewichte werden verwendet, um einen Prozentsatz der Anfrage-Bandbreite für jeden anfordernden Agenten zuzuweisen. In einer Ausführungsform wird ein Gewichtswert für jeden Agenten über einen Wert gespeichert in einem Agenten Gewicht Konfigurationsregister angegeben. Der Prozentsatz der Anfrage-Bandbreite, die an einen Agenten zugeordnet ist, ist gleich mit dem Mittel-Gewichtswert geteilt durch die Summe der Gewichte für alle Agenten, in einer Ausführungsform.
  • Der zugebene Schiedsrichter gewichtet das Alter-basierten Algorithmus ist basiert auf der relativen Alter von, wenn ein anfordernden Agenten wurde zuletzt durch die Schiedsrichter nicht gegeben. Für jeden anfordernden Agenten, die mit dem zugebenen Schiedsrichter verbinden, gibt es eine Altersmarke instanziiert und ein Gewicht-Zähler instanziiert. Sowohl die Schiedswege mit der hohen Priorität und niedrigen Priorität in den zugeben Schiedsrichter haben gemeinsame Zähler von Alter und Gewicht für den zugebenen Schiedsrichter verbunden mit den Mittel. Die Aktualisierung von Register des Alters und Gewichts des ersuchenden Mittel wird durch die endgültige Wahl (nämlich Schiedsrichter-Wähler 325 mit der Priorität) nach der Wahl des endgültigen Schieds-Gewinner ermittelt.
  • Der Alter-Register (zB Alter von Speicher 326) für den anfordernden Teilnehmer ist zum ersten Mal auf den Empfang eines Reset-Eingang an den zugebenen Schiedsrichter initialisiert. Wenn der Rücksetz behauptet, wird die Alter-Register an eindeutige Werte in einem Bereich, beginnend bei 0 und endend bei einem Wert von N-1 initialisiert, wobei der Wert von N gleich der Anzahl von Anforderungsschnittstellen verbunden mit dem zugebenen Schiedsrichter ist.
  • Vor alle Anfragen, die von den anfordernden Agenten geltend gemacht werden, werden die Zähler des Agenten-Gewicht (zB des Gewichtsspeicher 328) von programmierten Werten in den Konfigurationsregistern des Mittel-Gewicht initialisiert. Sobald das Gewicht Zähler initialisiert wird, dekrementiert der Zähler für einen Agenten durch eine Anfrage gewährt für diesen Agenten. Sobald Gewicht-Zähler eines Agenten Null erreicht und wenn der Agent wieder durch den zugebenen Schiedsrichter gewährt wird, wird der Zähler mit dem im Konfigurationsregister für die Gewichts dieses Agenten programmierten Wert neu geladen.
  • In einer Ausführungsform verwendet das altersgerechte Schiedsverfahren durchgeführt in erster und zweiter Schiedsrichter 322 und 324 einen Anfrage Bit-Vektor (jeder Schiedsrichter mit seinen eigenen Vektor), um den Gewinner des Schieds zu bestimmen. Wenn eine Anforderung für einen Agenten aktiviert wird, verwendet der Schiedsrichter den Alterswert für den anfordernden Agenten als der Prioritätsstufe der Anforderung. Die Prioritätsstufen für den Schiedsrichter und damit die Reichweite der Bitvektor-Breite ist von 0 bis N-1. Das Alter-basierten Algorithmus gewährleistet, dass die Alterswerte für alle anfrageMittel immer einzigartig sind und deshalb gibt es immer nur einen Gewinner pro Schiedsverfahren.
  • Der Schiedsrichter aktualisiert die Alterregister für alle Agenten, wenn das Gewichtzähler für den Sieger des Antrag-Schieds Null erreicht hat. In einer Ausführungsform werden die Alterregister für alle Agenten nach den folgenden Regeln aktualisiert, die die Alterswerte für die Agenten immer als einen eindeutigen Wert garantieren.
  • Regel 1: wenn das Alter des Agenten dem Alter der Gewinner der Schiedsgerichtsbarkeit entspricht, wird der Alterregister für diesen Agenten auf Null gesetzt, um jüngste Anfrage des Alters oder der niedrigsten Priorität anzugeben.
  • Regel 2: wenn das Alter des Agenten weniger als der Sieger des Schieds ist, ist Alter Register des Agenten um 1 erhöht.
  • Regel 3: wenn das Alter des Agenten größer als der Sieger des Schieds ist, ändert das Alterregister des Agenten nicht.
  • Wie ferner in 4, nachdem eine bestimmte Anforderung in PrioritätsSchiedsrichter-Selektor 325 ausgewählt wird, wird es einem Konfliktdetektor 332 vorgesehen, der die Konflikterkennung auf verschiedenen eingehende Anfragen führt, um verschiedenen Quellen von Konflikten zu verhindern, wie Konflikte in einen Puffer und Adressenkonflikten, in dem die angeforderten Daten derzeit von einem anderen Anforderer zugegriffen werden. Noch weiter Konfliktdetektor 332 kann auch Snoop-Konfliktfälle behandeln, in dem eine Cache-Leitung, beispielsweise, innerhalb dem Datenpuffer 344 in dem Verfahren mit einem Snoop-Anforderung geführt an einen oder mehrere Cache-Speicher des SoC ist. Um solche Snoop Konfliktfällen leichter zu handhaben, kann Konfliktdetektor 332 ferner einen Snoop-Filter-Logik 334 , wie hierin beschrieben, umfassen. Im Allgemeinen kann Snoop-Filter-Logik 334, zumindest einige dieser Snoop-Konfliktfällen mit minimalem Aufwand und geringer Stromverbrauch durch Umwandlung oder Herabstufung eingehenden erschnüffelten Speicheranforderungen von Nicht-Caching Agenten bis den nicht erschnüffelten Speicheranforderungen verhindern, die ohne Verzögerung behandelt warden können und somit ohne Snoop-Konfliktlösung. Obwohl auf diesem hohen Niveau in der Ausführungsform der 4 gezeigt, ist das Verständnis des Umfangs der vorliegenden Erfindung nicht in dieser Hinsicht beschränkt.
  • Beachten Sie, dass, wenn ein Konflikt in Konfliktdetektor 332 erfasst wird, wird Feedback-Informationen Schiedsrichter 322 und 324 mitgeteilt. Auf diese Weise können diese Schiedsrichter die entsprechende anfordernden Agenten von der weiteren Schlichtungsrunden maskieren, bis der Konflikt gelöst ist. Als solche wirkt diese Rückkopplungssignal als eine Maske, wodurch die Anzahl der anfordernden Agenten verfügbar zur Durchführung von Schiedsverfahren in einem oder mehreren Schieds Runden veringgert. Beachten Sie, dass, wenn eine bestimmte Konflikt gelöst wurde, wird diese Maske-Signal entfernt, so dass der anfragende Agent in Schiedsrunden teilnimmt. Beachten Sie, dass in einigen Ausführungsformen solche Anfragen aufgrund eines Konflikts ins Stocken kann können in Schiedsrichter 322 und 324 mit einer höheren Priorität wieder eingeführt werden.
  • Unter Bezugnahme auf 5 ist ein Blockschaltbild mit weiteren Einzelheiten eines gemeinsamen Speicherstoff in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 ist Konflikterkennungslogik 332 konfiguriert, um einen geschlichteten Anforderung von einer einer Vielzahl von Anforderungsports (beispielsweise jeweils an eine anfordernde Teilnehmer eines SoC entspricht) zu erhalten. Genauer gesagt, kann eine eingehende Anforderung von dem Ausgang des Schiedsrichter-Selektors 325 mit der Priorität der 4 erhalten warden. Das heißt, wenn Prioritätsschiedsrichter Selektor 325 eine Anfrage stellt, die schließlich für die Ausgabe ausgewählt wurde, wird es auf eine entsprechende Leitung zugeordnet mit dem gegebenen anfordernden Agenten vorgesehen.
  • Wie in 5, umfasst das Konflikterkennungslogik 332 Snoop-Filter-Logik 334, die die Zahl der Konfliktfälle Snoop durch Umwandlung zumindest einiger eingehenden erschnüffelten Speicheranforderungen von Nicht-Caching Agenten bis nicht erschnüffelten Anfragen, durch Ermöglichung ihrer Annahme zur Ausgabe als nächste akzeptierte Anfrage statt Abwürgen der Anfrage und und wiederum potentiell Abwürgen der Vorwärtsbewegung des anfordernden Agenten selbst reduzieren kann. Beachten Sie, dass, wenn die Konflikterkennungslogik 332 einen Antrag auf einen Konflikt in einen Puffer nicht akzeptieren kann, dann kann der Auftraggeber blockiert werden, bis der Konflikt gelöst wird, und ein Datenpuffer zugeordnet werden kann. Ein weiteres Konfliktfall ist, dass die Linie derzeit noch zu einem Caching-Agent geschnüffelt ist. Ohne einer Ausführungsform der vorliegenden Erfindung würde eine Kohärenz-Protokoll erfordern, daß Eigentum an einer Cache-Zeile voll vor Snooping der gleichen Cache-Zeile wieder gelöst wird. Verwendung einer Ausführungsform der vorliegenden Erfindung, zumindest einige Snoop-Anforderungen kann in nicht erschnüffelten Anfragen umgewandelt werden und in die zusammenhängende Gewebe (weitere Teile des Systems Mittel) zeitlich früher erlaubt warden. Ausführungsformen können Snoop-Filterung mit niedrigem Stromverbrauch und minimalen SoC-Strukturen durchführen. Noch weiteren Ausführungsformen können die Leistung von mehreren erschnüffelten Speicheranforderungen auf den gleichen Cache-Zeile verbessern, weil gemeinsam aus Nicht-Caching Mitteln sein können.
  • Um die Erfassungsoperationen des Konflikts und Degradierung/Umwandlungen von Snoop Speicheranforderung gemäß einer Ausführungsform der vorliegenden Erfindung durchzuführen, ist Konflikterkennung Logik 332 gekoppelt, um bestimmte Informationen verbunden mit Datenpuffer 344 zu empfangen. Genauer gesagt, wird Konflikterkennungslogik 334 konfiguriert, um den Status zu empfangen und Informationen von einem Kennzeichenspeicher 343 zu kontrollieren. In verschiedenen Implementierungen kann die Tag-Speicher 343 ein Teil des Datenpuffers sein oder es kann ein separater Speicher-Array verbunden mit dem Datenpuffer (beispielsweise mit der gleichen Anzahl von Zeilen oder Einträge als Datenpuffer 344) sein. In einer Ausführungsform kann Datenpuffer 344 und jeden Tag-Speicher 343 64 Einträge enthalten. In einer solchen Ausführungsform sorgt Datenpuffer 344 für Speichern von 64B Breiten.
  • Noch mit Bezug auf 5, ist Tag-Speicher 343 dargestellt, eine Anzahl von Bestandteilen umzufassen. Tag-Speicher 343 umfasst eine hundertprozentige Indikator 343a. In einer Ausführungsform kann dieser Indikator ein einzelnes Bit sein, um anzuzeigen, dass der entsprechende Eintrag oder Zeile innerhalb Datenpuffer 344 durch das System-Mittel gehört wird. Obwohl beschrieben als „besitzt“, beachten Sie, dass was hier gemeint ist, ist, dass das System-Agent die entsprechende Cache-Zeile in jedem Cache des SoC zuvor für ungültig erklärt hat und somit dies besitzte Detektor von einem ersten Zustand (z.B. logisch hoch) zeigt, dass eine gültige Kopie der Daten des Cache-Zeile nicht in jedem Cache-Speicher der SoC vorhanden ist, so daß keine Notwendigkeit besteht, um einen Snoop-Anforderung durchzuführen (obwohl Kenntnis von den Daten in dem entsprechenden Eintrag des Daten-Puffer 344 vorhanden sein kann). Anders ausgedrückt, hat der Speichercontroller des Gewebes die Linie geschnüffelt und kein Caching-Agent hat die Linie beantragt, da die Snoop geführt was. Daher ist die Speichersteuerung gewährleistet, um die einzige Kopie der Zeile in dem System zu haben.
  • Weitere Steuer und Statusindikatoren innerhalb Tag-Speicher 343 umfassen eine untere Stück Statusanzeige 343b und eine obere Spannfutter-Statusanzeige 343c, von denen jede Indikationen umfasst, ob das gegebene Chunk gegenwärtig (lesen oder schreiben Zustand) zugegriffen ist und eine Referenzzählung, die mehrere Zugriffe auf das gleiche Futter der Cache-Zeile ermöglichen kann. Verwendung solcher Statusanzeigen, neue unabhängige Lese und Schreibzugriffe (aus der gleichen Anforderer) können auf die verschiedenen Stücke von einer einzigen Cache-Zeile erlaubt sein. Im Gegenzug kann eine Zeile-Statusanzeige 343d von einem ersten Zustand sein, um anzuzeigen, daß die Zeile modifizierte Daten enthält, dh auf Speicher gelöscht werden. Schließlich speichert Adressfeld 343e eine Adresse, beispielsweise in einer physikalischen Adresse (oder Adressen Abschnitt) des Systemspeichers zugeordnet mit dem entsprechenden Daten-Puffer-Eintrag. Obwohl gezeigt auf diesem hohen Niveau in der Ausführungsform der 5, Verständnis zusätzlicher und/oder unterschiedlicher Informationen in anderen Ausführungsformen vorhanden sein kann.
  • Beachten Sie, dass die Snoop-Filter-Logik zeitlich ist. Das heißt, anstelle der Bereitstellung für eine vollständige Verzeichnis oder einen Snoop-Filter, der inklusive mit Cache-Speicher des So Cist, stattdessen ist eine sehr begrenzte Snoop-Filter-Logik vorgesehen. In bestimmten Ausführungsformen kann Snoop-Filterung nur für Speicheranforderungen durchgeführt werden, die in dem Daten-Puffer des gemeinsamen Speicher-Stoffs treffen. So in einer Implementierung, in der dieser Datenpuffer 64 Einträge enthält, kann die Snoop-Filter-Logik entsprechende Snoop-Filter-Funktionen nur für diese 64 Einträge liefern. So wird der Snoop-Filter aktiviert unter Verwendung einer Ausführungsform der Erfindung in diesem zeitlichen Snoop Filterung nur für diese Einträge getan, wenn vorhanden. Wenn Daten von einem Eintrag wird geräumt, ist die Möglichkeit zur Durchführung Snoop-Filterung für die Daten zugeordneten Speicheranforderungen verloren.
  • Und mit Snoop-Filter-Logik 334 können mehrere Anforderungen an die gleiche Adresse für den Umgang innerhalb der gemeinsamen Speichergewebe ohne die Notwendigkeit von Stillstand oder Haltung der nachfolgenden Speicheranforderungen akzeptiert und zur Verfügung gestellt warden, wenn die Anzeige des Eigentums anzeigt, dass die entsprechenden Daten durch den Systemdienst gehören.
  • Beachten Sie, dass durch die Umwandlung eines erschnüffelten Speicheranforderung zu einer nicht erschnüffelten Speicheranforderung ist, dass Speicheranforderung danach als eine nicht erschnüffelten Speicheranforderung behandelt ist. Anders ausgedrückt, zu keiner Zeit während der Handhabung dieser Speicheranforderung ist jede Art von Snoop-Verarbeitung durchgeführt.
  • Unter Bezugnahme auf 6, ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 6, kann Verfahren 500 zumindest teilweise von Snoop-Filter-Logik einer Gewebe durchgeführt werden. In verschiedenen Implementierungen können Kombinationen von Hardware, Firmware und oder Software verwendet werden, um Operationen durchzuführen, um eingehende Speicheranforderungen von nicht-Cache-Mittel gekoppelt auf das Gewebe effizienter zu handhaben. In der Ausführungsform der 6 ist eine vereinfachte Handhabung durchgeführt, dass bestimmte erschnüffelte Speicheranforderungen herabgestuft werden, wenn eine vorherige erschnüffelte Speicheranforderung an die gleiche Adresse abgeschlossen ist und ein System Agent Inhaber der Adresse ist. Während diese einfache Implementierung in anderen Ausführungsformen, wie unten beschrieben, können sogar höhere Latenzsenkungen durch Erlaubung der aufeinander folgenden angenommen Anfragen realisiert warden, noch bevor das System-Agent wird Eigentümer.
  • Verfahren 500 beginnt mit der Aufnahme einer ersten erschnüffelten Speicheranforderung in einem System Mittel aus einem Nicht-Caching-Agent (Block 510). Dieses System Agent kann einen Stoff bilden, der Snoop-Filter Logik umfasst. Steuerung geht als nächstes zu Diamant 520, wo bestimmt wird, ob eine Eingabe eines Datenpuffers durch das System-Mittel gehört wird, das eine Adresse dieser erschnüffelten Speicheranforderung zugeordnet ist. In einer Ausführungsform kann diese Bestimmung auf eine Besitzindikator des entsprechenden Eintrags des Datenpuffers basieren. Wenn von einem Satz oder hochem Logikzustand, zeigt dies Indikato, dass der Eintrag vom System Mittel gehört. Anders ausgedrückt, zeigt dieser Satz Besitzindikator, dass kein Zwischenspeicherungswirkstoff eine gültige Kopie der Daten für den zugeordneten Eintrag (und die Adresse der Anforderung) umfasst.
  • Wenn der Eintrag vom System Mittel gehört, geht die Steuerung zum Block 530, wo die erschnüffelte Speicheranforderung zu einer nicht-erschnüffelten Speicheranforderung herabgestuft warden kann. In einer Ausführungsform wandelt die Logik dieses empfangenen erschnüffelten Speicheranforderung an einen nicht abgehört Speicheranforderung. Ferner, da es feststeht, dass keine gültige Kopie der Daten für den entsprechenden Eintrag in jedem Cache der SoC vorhanden ist, kann die Anforderung ohne die Anforderung zum Stillstand übernommen werden. Natürlich verstehen, dass in verschiedenen Ausführungsformen an dieser Stelle die Anfrage unter anderem solche Anfragen geschlichtet werden kann und nicht akzeptiert werden darf, bis eine oder mehrere Schiedsrunden übergeben wurde. Und kann alle nachfolgenden Speicheranforderungen von der gleichen Antragsteller zu diesem gleichen Eintrag auch unverzüglich angenommen werden (Block 540).
  • Nach Annahme des Antrags, wird es durch verschiedene Logik des Systems Mittel, wie ein gemeinsamer Speicher-Stoff behandelt. Zum Beispiel für eine nicht erschnüffelte Leseanforderung, wenn die Daten im Datenpuffer des Gewebes vorhanden ist, können die angeforderten Daten an den Anforderer zurückgegeben werden. Und wenn es nicht vorhanden ist, kann eine Speicheranforderung über eine Speichersteuerung an den Speicher einschließlich der Datenausgegeben werden. Stattdessen für eine Schreibanforderung können die Daten zugeordnet mit der Schreibanfrage zu dem entsprechenden Eintrag der Datenpuffer geschrieben werden. Dann zu einem späteren Zeitpunkt, beispielsweise in Reaktion auf eine Räumung aus dem Datenpuffer, können diese Daten zurück in den Speicher geschrieben werden.
  • Beachten Sie, dass bei einer Ausführung, für eine geschnüffele Leseanforderung, wo Eigentum angezeigt wird, um mit dem System Agent zu sein, kann Zusatzbehandlung durchgeführt werden. Genauer gesagt, wenn vor snoop Ungültigkeits vom gleichen anfordernden Port, wenn dies erschnüffelte Speicheranforderung anhängig ist, können Ergebnisse der erschnüffelten Leseanforderung (die eine nicht erschnüffelte Anfrage herabgestuft wird) den anstehenden Abschluss der vorherigen Snoop-Operationen aus der gleichen anfordernden Port gehalten warden. Das heißt, die aus dem Speicher in einem Datenpuffer des System-Mittels gelesen und gespeicherten Daten können dort gehalten werden, bis die Ergebnisse der vorherigen Snoop Ungültigkeits (zB Schreiben) abgeschlossen sind. Wenn alle vorherigen Snoop-Transaktionen von dem anfordernden Teilnehmer abgeschlossen sind, die für diese ermittelten Daten degradiert Snoop-Leseanforderung wird an den Anforderer zurückgegeben.
  • Noch mit Bezug auf 6, wenn stattdessen bei der Raute 520 bestimmt wird, dass der Eintrag des Datenpuffers durch das System-Mittel gehören wird, geht die Steuerung zum Diamanten 550, wo bestimmt wird, ob eine aktive Anforderung anhängig für den Eintrag ist. Wenn so, geht die Steuerung zum Block 555, in dem der Antrag blockiert ist, bis die aktive Anfrage abgeschlossen wurde und nicht mehr anhängig ist.
  • Ansonsten, wenn kein Antrag anhängig für den Eintrag ist, geht die Steuerung an Block 560, wenn der Antrag angenommen wird. Als Teil der Umgang mit diesem Antrag kann eine typische Snoop Fluss durchgeführt warden, so dass eine ungültige Snoop-Anforderung an eine oder mehrere Cache-Agenten gesendet wird, beispielsweise ein oder mehrere Kerne des SoC mit einem zugehörigen Cache-Speicher. Über diese ungültig Snoop-Anforderungen, kann eine letzte Kopie der Daten erhalten werden. Darüber hinaus können die Kopien der in den ein oder mehrere Cache-Speicher vorhandenen Daten ungültig gemacht werden.
  • Steuerung nächsten geht auf Diamant 570, wo sie bestimmt warden kann, ob die erschnüffelte Speicheranforderung abgeschlossen ist. In einer Ausführungsform wird die Bestimmung bei 570 Diamant auf der Grundlage, ob die Speicheranforderung in den Ruhestand getreten hat. Wenn ja, geht die Steuerung zu Block 580. Der Besitzindikator für den Eintrag kann eingestellt warden, um Eigentum mit dem System-Agent anzugeben. Mit anderen Worten, kann dieser Besitzindikator zu einem Satz oder logischem hohem Zustand aktualisiert werden. Durch diese Aktualisierung wird das Systemmittel angegeben, die der Eigentümer zu sein, da alle Kopien der Daten in allen Caches des SoC für ungültig erklärt worden. Als solches, wenn ankommende erschnüffelte Speicheranforderungen von nicht-Cache-Mittel für den entsprechenden Eintrag erhalt warden, können sie nicht erschnüffelte Speicheranforderungen umgesetzt warden und gemäß einer Anforderung nicht erschnüffelter Strom behandelt warden, da sichergestellt ist, dass keine gültigen Kopien der Daten in jedem Cache der SoC vorliegen. Somit, wie in 6, geht die Steuerung von Block 580 auf Block 540 wie oben beschrieben.
  • Darüber hinaus, um die Verarbeitung zu verbessern, sollten mehrere eingehende Speicheranforderungen für dieselbe Adresse aus der gleichen Anforderer empfangen werden, die Anträge können alle ohne Abwürgen, die Verbesserung der Leistung akzeptiert und verarbeitet warden. Obwohl auf diesem hohen Niveau in der Ausführungsform der 6 gezeigt, ist Verständnis des Schutzumfangs der vorliegenden Erfindung nicht in dieser Hinsicht beschränkt. Das heißt, in verschiedenen Ausführungsformen können weitere Ordnungsregeln und anderen Anforderungen in Bearbeitung eingehender Speicheranforderungen mit Snoop-Filter-Logik in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung einbezogen werden. Darüber hinaus für bestimmte Arten von Anfragen kannn noch weiter reduzierte Latenzzeit durch die Herabstufung und die Annahme von erschnüffelten Speicheranforderungen auch vor dem Eigentum an einem entsprechenden Cache-Zeile durch ein System Mittel realisiert warden.
  • Unter Bezugnahme auf 7, ist ein Flussdiagramm eines Verfahrens zur Handhabung von ankommenden Speicheranforderungen mit Snoop-Filter-Logik gemß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 7, kann Verfahren 600 durch eine Vielzahl von Hardware, Software und oder Firmware eines SoC durchgeführt werden. In einer Ausführungsform können zumindest Teile des Verfahrens in Konflikterkennungslogik 332 und Snoop-Filter-Logik 334 5 implementiert werden. Verfahren 600 beginnt am Reset oder wenn eine neue Adresse einer Cache-Zeile in der SoC-Datenpuffer zugewiesen (Block 605) wird. In Reaktion auf die Einleitung des Verfahrens kann der Besitzindikator zugeordnet mit dieser Cache-Zeile (Block 610) gelöscht werden. Durch das Löschen des Besitz-Anzeige, ist keine Garantie platziert, ob Daten dieser Zeile gehört werden oder auf andere Weise mit einem Caching-Agent des SOC (beispielsweise, ob die Daten in einer Cache-Zeile oder eines Caching-Agent des SoC vorhanden ist) verbunden sind.
  • Noch mit Bezug auf 7, weiter bestimmt werden kann, ob eine eingehende Speicheranforderung von einem Cache-Agenten (Raute 615) ist. Wenn ja, wird die Steuerung an Block 620, wo der Antrag akzeptiert warden kann, wenn kein Konflikt vorhanden ist. Genauer gesagt, in einer Ausführungsform, eine Anfrage an einen Cache-Zeile nur dann akzeptiert wird, wenn es keine aktiven Anforderungen an die Leitung gibt. Wenn der Antrag angenommen ist, wird der Besitzindikator für die Linie in einen zweiten Zustand versetzt, beispielsweise gelöscht. Nach diesen Antrag anzunehmen, ist keine andere Anforderung an den Cache-Zeile erlaubt, in das System Mittel akzeptiert zu warden, bis diese Anforderung abgelöst wurde. Beachten Sie, dass die Schreibanforderungen nicht den DRAM gespült warden müssen, und können stattdessen mit einem schmutzigen Zustand im Puffer markiert werden.
  • Weiter im Diamond 625 bestimmt warden kann, ob die eingehende Anfrage ein nicht erschnüffelten Lesen- oder Schreibenanfrage ist. Wenn ja, geht die Steuerung an Block 630, wo mehrere Anfragen vom gleichen Auftraggeber angenommen werden können. Genauer gesagt, in einer Ausführungsform warden mehrere Anforderungen erlaubt, in das System Mittel mit der gleichen Leitung akzeptiert zu warden, solange sie aus dem gleichen Anforderer empfangen werden und keine Lese Schreib-Konflikte für einen 32B Block kommt. Für diese nicht erschnüffelten Anfragen kann der Besitzindikator in seinem aktuellen Zustand beibehalten werden.
  • Noch mit Bezug auf 7, neben bei Diamant 635 bestimmt werden kann, ob die eingehende Anfrage eine erschnüffelte Leseanforderung ist und der Besitzindikator von einem zweiten, gelöschten Zustand ist. Wenn ja, geht die Steuerung zum Diamanten 640, bei dem bestimmt werden kann, ob der Agent initiiert die Anforderung Daten nur in Anfrage Ordnung akzeptiert wird. Wenn so, geht die Steuerung zum Block 645, wo das erschnüffelte Lese akzeptiert werden kann, wenn es keine Konflikte gibt. Darüber hinaus bei der erfolgreichen Ausscheiden von dieser erschnüffelten Leseanforderung kann der Besitzindikator in den ersten Zustand aktualisiert werden.
  • Wenn stattdessen bei der Raute 640 bestimmt wird, dass der Agent muss Lesedaten in Anfragebestellung nicht annehmen, geht die Steuerung zum Block 648. Die erschnüffelte Lese kann angenommen werden, wenn es keine Konflikte gibt. Darüber hinaus bei der erfolgreichen Ausscheiden von dieser erschnüffelten Leseanforderung kann der Besitzanzeige aktualisiert werden. Genauer gesagt, wird in einer Ausführungsform der Snoop-Leseanforderung nur dann akzeptiert, wenn es keine aktiven Anforderungen an die Leitung gibt. Der Besitzindikator kann im zweiten Zustand gehalten werden, bis die erste erschnüffelte Lese zurückgezogen werden. Während der Besitzindikator im zweiten Zustand ist und die erste erschnüffelte Lese noch aktiv ist, können die Lese und nicht erschnüffelte Leseanforderungen an die gleiche Leitung nur von der gleichen Antragsteller-Port akzeptiert werden. Nach der Übernahme der ersten erschnüffelten Leseanforderung werden alle aufeinanderfolgenden erschnüffelten Lesen zu nicht erschnüffelten Leseanforderungen herabgestuft. Beachten Sie, dass diese Anträge angenommen und vor Abschluss der Snoop-Verarbeitung für den ersten schnüffelten Leseanforderung herabgestuft werden können. Wenn der erste erschnüffelte Leseanforderung im Ruhestand ist, wird der Besitzindikator in den ersten Zustand gesetzt.
  • Noch mit Bezug auf 7, wenn der eingehende Speicheranforderung kein Snoop-Leseanforderung mit einem Besitzindikator des zweiten Zustand ist, geht die Steuerung zum Diamanten 650, um zu bestimmen, ob die eingehende Anforderung ein Snoop-Leseanforderung mit einem Besitzindikator im ersten Zustand ist. Wenn so, geht die Steuerung zum Block 655, in dem der Antrag zu einer nicht erschnüffelten Leseanforderung herabgestuft werden und entsprechend behandelt warden kann. In einer Ausführungsform beachten Sie, dass mehrere Anfragen bis zu der gleichen Linie akzeptiert warden dürfen, solange sie aus dem gleichen Anforderer empfangen werden und keine Lese Schreib-Konflikte für einen 32B Block kommt. Beachten Sie auch, dass der Besitzindikator in der ersten Zustand gehalten wird.
  • Ansonsten geht die Steuerung von Diamant zu Diamant 650 660, um festzustellen, ob eine eingehende Anforderung eine erschnüffelte Schreibanforderung ist und die Besitz-Anzeige der zweite Zustand ist. Wenn so, geht die Steuerung zum Block 665, wo die erschnüffelte Schreibanforderung kann angenommen werden, wenn es keine Konflikte gibt. Außerdem, wenn diese erschnüffelte Schreibanforderung ist im Ruhestand ist, kann der Besitzanzeige aktualisiert werden. Genauer gesagt, in einer Ausführungsform, wird die abgehörte Schreibanforderung nur dann akzeptiert, wenn es keine aktiven Anforderungen an die Cache-Zeile gibt. Der Besitzindikator für die Cache-Zeile wird in dem zweiten Zustand gehalten, bis der erste erschnüffelte Schreibanforderung in Ruhestand ist. Während der Besitzindikator der zweite Zustand ist und die erste erschnüffelte Schreibanforderung noch aktiv ist, werden mehrere erschnüffelte Schreibanforderungen und nicht erschnüffelte Schreibanforderungen auf den gleichen Cache-Zeile nur aus der gleichen Antragsteller akzeptiert. Wenn der erste erschnüffelte Schreibanforderung im Ruhestand ist, der Besitzindikator in den ersten Zustand gesetzt ist.
  • Noch mit Bezug auf 7, andernfalls geht die Steuerung von Diamant 660 zu Diamant 670, um zu bestimmen, ob das eingehende Anforderung ein erschnüffelter Schreib ist und und der Besitzindikator der erste Zustand ist. Wenn so, geht die Steuerung zum Block 675, in dem der Antrag zu einer nicht erschnüffelten Schreibanforderung herabgestuft werden und entsprechend behandelt warden kann. In einer Ausführungsform dürfen mehrere Anfragen bis zu der gleichen Cache-Zeile akzeptiert warden, solange sie aus dem gleichen Antragsteller empfangen werden und keine Lese Schreib-Konflikte für einen 32B Block kommt. der Besitzindikator kann in der ersten Zustand gehalten werden. Obwohl gezeigt auf diesem hohen Niveau in der Ausführungsform der 7, ist das Verständnis des Umfangs der vorliegenden Erfindung nicht in dieser Hinsicht beschränkt.
  • Unter Bezugnahme auf 8 ist ein Blockdiagramm eines SoC in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in 8 ist SoC 1000 ein einzelnes Halbleitervorrichtung mit mehreren IP-Blöcke zusammen mit einem gemeinsamen Speicher-Schiedsrichter, wie oben beschrieben. In der Ausführungsform der 8 ist eine Vielzahl von Kernen 10100-1010n vorgesehen, von denen jeder unabhängig Befehle ausführen kann. In einer Ausführungsform sind alle dieser Kerne ein einziger Design, wie ein In-Ordnung-Core-Design, zB aus einem Intel Architecture™ wie ein Atom™ basierender Kern. In anderen Ausführungsformen können die Kerne Aus-der-Ordnung-Prozessoren sein, wie Intel Architecture™ (IA) 32 Kern wie ein Intel Core™ basierender Design. In anderen Ausführungsformen kann eine Mischung von heterogenen Kerne bereitgestellt werden. Zusätzlich kann eine Vielzahl von Grafik-Engines, nämlich unabhängige Grafikeinheiten 10200-1020n jeweils vorgesehen werden, um unabhängig von Graphikoperationen durchzuführen. Wie man sieht, werden die mehrere Kerne zu einem gemeinsamen Cache-Speicher 1015, wie eine Ebene 2 (L2) Cache gekoppelt und in ähnlicher Weise werden die Grafik-Engines zu einem anderen gemeinsamen Cache-Speicher 1025 gekoppelt.
  • Ein System Agent 1030 ist zu diesen Kernen und Grafik-Engines über entsprechende in-die-Verbindungen 1028 und 1029 gekoppelt. Wie man sieht, umfasst Systemagenten 1030 einen Shared-Memory-Stoff 1035, der wie hier beschrieben konfiguriert werden kann. Natürlich verschiedene andere Logik, Controller und andere Geräte wie beispielsweise ein Energiemanagementeinheit können innerhalb des Systems Mittel 1030 vorhanden sein. Wie man sieht, kommuniziert die gemeinsam genutzte Speichergewebe 1035 mit einem Speicher-Controller 1040, der wiederum an einem Off-Chip-Speicher wie etwa ein Systemspeicher konfiguriert wie DRAM koppelt. Darüber hinaus ist das System Mittel 1030 über eine Reihe von Zwischenverbindungen 1044 bis eine oder mehrere interne Mittel 1050, wie verschiedenen Peripheriegeräten gekoppelt. In einer Ausführungsform kann Verbindung 1044 einen Prioritätskanal-Interconnect, einen Seitenband-Kanal-Interconnect, und einen Speicherkanal-Interconnect umfassen. Eine ähnlich konfigurierte Verbindung 1046 bietet für die Kommunikation zwischen Systemagent 1030 und einem oder mehreren Off-Chip-Agenten (nicht zur Vereinfachung der Darstellung in der Ausführungsform der 8 gezeigt.). Obwohl dargestellt auf diesem hohen Niveau in 8, ist Verständnis des Schutzumfangs der vorliegenden Erfindung nicht in dieser Hinsicht beschränkt.
  • Unter Bezugnahme auf 9, ist ein Blockdiagramm eines in einem Computersystem in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung enthaltenen Komponenten gezeigt. Wie in 9 kann System 1100 viele verschiedene Komponenten enthalten. In einer Ausführungsform ist das System 1100 ein Benutzergerät, berührungsempfindliche Vorrichtung, die ein SoC enthält, wie hierin beschrieben. Beachten Sie, dass die Komponenten des Systems 1100 als ICs, Teile davon, diskrete elektronische Geräte oder andere Baugruppen geeignet auf einer Leiterplatte wie eine Hauptplatine oder Erweiterungskarte des Computersystems oder als Komponenten anderweitig integriert in einem Gehäuse des Computersystems implementiert warden. Beachten Sie auch, dass das Blockschaltbild 9 soll eine hohe Aussicht auf viele Komponenten des Computersystems zeigen. Es ist jedoch zu verstehen, dass zusätzliche Komponenten in bestimmten Ausführungen vorhanden sein können und darüber hinaus kann die unterschiedliche gezeigte Anordnung bei anderen Implementierungen auftreten Komponenten erfolgen.
  • Wie in 9, kann ein Prozessor 1110, die eine Niedrig-Strom-Multicore-ProzessorSockel, wie ein Ultra-Low-Voltage-Prozessor sein kann, als ein Hauptverarbeitungseinheit und zentrale Drehscheibe für die Kommunikation mit den verschiedenen Komponenten des Systems handeln. Solche Prozessor kann als SoC wie hierin beschrieben implementiert werden. In einer Ausführungsform kann der Prozessor 1110 ein Intel® Architektur Kern™ basierende Prozessor wie einem i3, i5, i7 oder anderen solchen Prozessor vorhanden von Intel Corporation, Santa Clara, CA, wie einen Prozessor, der einen oder mehrere Core™ - basierten Kernen und einem oder mehreren Intel® Atom™-basierende Kerne zur Erkennung hoher Leistung und niedriger Stromkerne in einem einzigen SoC verbindet. Jedoch verstehen, dass andere Niedrig-Strom-Prozessoren wie von Advanced Micro Devices, Inc. (AMD), Sunnyvale, CA, einem ARM-basiertes Design von ARM Holdings, Ltd oder einem MIPS-Based Design von MIPS Technologies, Inc. Sunnyvale, CA, oder ihren Lizenznehmern oder Adopters stattdessen in anderen Ausführungsformen, wie einem Apple A5or A6 Prozessor vorhanden sein können.
  • Prozessor 1110 kann mit einem Systemspeicher 1115 kommunizieren, der in einer Ausführungsform über mehrere Speichervorrichtungen implementiert warden kann, um für eine gegebene Menge an Systemspeicher zu liefern. Um dauerhafte Speicherung von Informationen wie beispielsweise Daten, Anwendungen, einen oder mehrere Betriebssysteme und so weiter zu liefern, kann ein Massenspeicher 1120 auch zu Prozessor 1110 koppeln. Auch in 9 kann eine Blitzvorrichtung 1122 an den Prozessor 1110 beispielsweise über eine serielle periphere Schnittstelle (SPI) verbunden werden. Diese Flash-Vorrichtung kann zur nichtflüchtigen Speicherung von Systemsoftware, einschließlich einer Basis-Eingabe Ausgabe-Software (BIOS) sowie anderer Firmware des Systems bereitstellen.
  • Verschiedene Eingabe Ausgabe (lO)-Geräten können innerhalb System 1100 vorliegen. Speziell in der Ausführungsform der 9 ist eine Anzeige 1124 gezeigt, die eine hochauflösende LCD oder LED-Panel ausgebildet in einem Deckelteil des Gehäuses sein kann. Das Display kann auch für einen Touch-Screen 1125 bieten, zum Beispiel angepasst außen über die Anzeigetafel, so daß über die Interaktion eines Benutzers mit dem Berührungsbildschirm kann das Benutzereingaben in das System vorgesehen sein, um die gewünschten Operationen zu ermöglichen, beispielsweise im Hinblick auf die Anzeige von Informationen, den Zugriff auf Informationen und so weiter. In einer Ausführungsform kann die Anzeige 1124 mit Prozessor 1110 über eine Anzeigeverbindung gekoppelt werden, die als ein Hochleistungs-Grafikverbindungs umgesetzt wird. Touch-Screen-1125 kann mit dem Prozessor 1110 über eine andere Verbindung gekoppelt wird, die in einer Ausführungsform ein I2C Verbindungs sein kann. Wie ferner in 9, neben dem Touchscreen 1125 kann Benutzereingaben durch Berührung auch über ein Touch-Pad 1130 auftreten, der innerhalb des Gehäuses ausgebildet sein kann und auch mit dem gleichen Verbindungs I2C als Touchscreen 1125 gekoppelt sein kann.
  • Für Wahrnehmung-Computing und andere Zwecke, können verschiedene Sensoren in dem System vorhanden sein und können an den Prozessor 1110 auf verschiedenen Weisen verbunden werden. Bestimmte Trägheits und Umweltsensoren können mit Prozessor 1110 durch einen Sensor-Hub 1140 zB über einen I2C-Verbindung koppeln. In der Ausführungsform der 9, können diese Sensoren einen Beschleunigungsmesser 1141 einen Umgebungslichtsensor (ALS) 1142 einen Kompass 1143 und ein Gyroskop 1144 umfassen. Andere Umweltsensoren können eine oder mehrere Wärmesensoren 1146 enthalten, die mit Prozessor 1110 über einen System Management Bus (SMBus)-Bus in einem Ausführungsbeispiel koppeln kann.
  • Auch in 9 können verschiedene Peripheriegeräte mit Prozessor 1110 über einen Low Pin Count (LPC)-Verbindung koppeln. In der gezeigten Ausführungsform kann verschiedene Komponenten durch einen eingebetteten Controller 1135 gekoppelt sein. Solche Komponenten können eine Tastatur 1136 (zB über eine Schnittstelle PS2 gekoppelt), ein Gebläse 1137 und einen Wärmesensor 1139 beinhalten. In einigen Ausführungsformen kann Touchpad 1130 auch mit EG-1135 über eine PS2-Schnittstelle koppeln. Zusätzlich kann ein Sicherheitsprozessor, wie ein Trusted Platform Module (TPM) 1138 in Übereinstimmung mit der Trusted Computing Group (TCG) TPM-Spezifikation Version 1.2, vom 2. Oktober 2003, auch mit Prozessor 1110 über diese LPC-Interconnect koppeln.
  • System 1100 kann mit externen Geräten in einer Vielzahl von Arten, einschließlich drahtlos kommunizieren. In der Ausführungsform der 9 sind verschiedene Funkmodule, von denen jedes mit einem Funkgerät konfiguriert für einen bestimmten drahtlosen Kommunikationsprotokoll entsprechen kann, vorhanden. Eine Art und Weise für die drahtlose Kommunikation in einem kurzen Bereich, wie ein Nahfeld kann über eine Nahfeld-Kommunikation (NFC)-Einheit 1145 sein, die mit dem Prozessor 1110 über einen SMBus in einer Ausführungsform kommunizieren kann. Man beachte, dass über diese NFC-Einheit 1145 Geräte in der Nähe miteinander kommunizieren können. Zum Beispiel kann ein Benutzer System 1100 ermöglichen, mit einem anderen (beispielsweise) tragbarem Gerät wie ein Smartphone des Benutzers über Anpassung der beiden Vorrichtungen gemeinsam in enger Beziehung zu kommunizieren und Übertragung von Informationen wie beispielsweise Identifizierungsinformationen, Zahlungsinformationen, Daten wie beispielsweise Bilddaten oder dergleichen zu aktivieren. Drahtlose Energieübertragung kann auch unter Verwendung eines NFC-System durchgeführt werden.
  • Wie weiter in 9, zusätzliche drahtlose Geräte können andere drahtlose Nahbereichs Motoren einschließlich eines WLAN Einheit 1150 und einem Bluetooth-Gerät 1152 umfassen. Die Verwendung von WLAN-Einheit 1150, Wi-Fi ™-Kommunikation in Übereinstimmung mit einem bestimmten Institut of Electrical und Electronics Engineers (IEEE) 802.11-Standard kann realisiert werden, während über Bluetooth-Einheit 1152 Nahbereichskommunikation über eine Bluetooth-Protokoll auftreten können. Diese Einheiten können mit Prozessor 1110 über zB eine USB-Verbindung oder eine Universal Asynchronous Receiver Transmitter (UART) Link kommunizieren. Diese Einheiten können mit Prozessor 1110 über eine Zwischenverbindung über einen Peripheral Component Interconnect Express ™ (PCIe ™)-Protokoll in Übereinstimmung mit der PCI Express ™ Spezifikation Base Spezifikation Version 3.0 (veröffentlicht 17. Januar 2007), oder einem anderen eine solche Protokoll wie eine Serien Dateneingabe Ausgabe (SDIO) Standard koppeln. Natürlich kann die tatsächliche physikalische Verbindung zwischen diesen peripheren Vorrichtungen, die auf einem oder mehreren Add-in-Karten konfiguriert werden können, über die nächste Generation Form Factor (NGFF) Anschlüsse geeignet mit einer Hauptplatine sein.
  • Zusätzlich kann drahtlosen Weitbereichskommunikation, beispielsweise nach einer zellulären oder anderen drahtlosen Weitverkehrsprotokoll über ein WWAN Einheit 1156 auftreten, die wiederum mit einem Teilnehmeridentitätsmodul (SIM) 1157 koppeln kann. Darüber hinaus, um den Empfang und die Verwendung von Ortsinformationen zu ermöglichen, kann ein GPS-Modul 1155 enthalten sein. Beachten Sie, dass in der Ausführungsform der 9, können WWAN Einheit 1156 und eine integrierte Fangvorrichtung wie eine Kamera-Modul 1154 über einen gegebenen USB-Protokoll, wie einem USB 2.0 oder 3.0-Verbindung oder einer UART-oder I2C-Protokoll kommunizieren. Darüber hinaus, um den Empfang und die Verwendung von Ortsinformationen zu ermöglichen, kann ein GPS-Modul 1155 enthalten sein. Beachten Sie, dass in der Ausführungsform der 9 können WWAN Einheit 1156 und eine integrierte Fangvorrichtung wie eine Kamera-Modul 1154 kann über einen gegebenen USB-Protokoll, wie einen USB 2.0 oder 3.0-Verbindung oder einer UART-oder I2C-Protokoll kommunizieren. Wieder die tatsächliche physikalische Verbindung dieser Einheiten können über Anpassung eines NGFF Add-In-Karte zu einem NGFF Anschluss ausgebildet auf der Hauptplatine sein.
  • Um Audio-Eingänge und-Ausgänge zu liefern, kann ein Audioprozessor über einen digitalen Signalprozessor (DSP) 1160 implementiert warden, der mit dem Prozessor 1110 über einen High-Definition-Audio (HDA) Link koppeln kann. Ähnlich kann DSP 1160 mit einem integrierten Codierer Decodierer (CODEC) und Verstärker 1162 kommunizieren, der wiederum mit Ausgangslautsprecher 1163 koppeln kann, der innerhalb des Gehäuses ausgebildet sein kann. In ähnlicher Weise können Verstärker und CODEC 1162 mit Audio-Eingängen von einem Mikrofon 1165 gekoppelt warden, der in einer Ausführung über Dual-Array-Mikrofone implementiert werden kann, zur Verfügung für hochwertige Audio-Eingänge zur Ermöglichung der Sprachsteuerung von verschiedenen Operationen innerhalb des Systems zu zu stellen. Beachten Sie auch, dass die Audio-Ausgänge können vom Verstärker CODEC 1162 bis einen Kopfhöreranschluss1164 zur Verfügung gestellt werden. Obwohl gezeigt mit diesen speziellen Komponenten in der Ausführungsform der 9, ist Verständnis des Schutzumfangs der vorliegenden Erfindung nicht in dieser Hinsicht beschränkt.
  • Die folgenden Beispiele beziehen sich auf weitere Ausführungsformen.
  • In einem Beispiel ist die Entscheidungslogik eine oder mehrere nachfolgenden Speicheranforderungen verbunden mit den Daten der ersten Einreise akzeptiert bevor dem ersten erschnüffelten Speicheranforderung in den Ruhestand ist.
  • In einem Beispiel sind die eine oder mehrere nachfolgende Speicheranforderungen von der gleichen Anforderer als erste erschnüffelte Speicheranforderung.
  • In einem Beispiel ist die Entscheidungslogik zu einem oder mehreren nachfolgenden Speicheranforderungen von Snoop-Speicheranforderungen an nicht erschnüffelter Speicheranforderungen herabgestuft.
  • In einem Beispiel umfasst das erste Mittel einen Caching-Agent, und die Mehrzahl von Speicheranfragen werden von einem nicht-Caching-Agenten der Vielzahl von Agenten empfangen.
  • In einem Beispiel ist die Entscheidungslogik, um einen Snoop-Speicheranforderung von dem Nicht-Cache-Mittel auf eine nicht erschnüffelte Speicheranforderung herabgestuft und um Daten verbunden mit der Snoop-Speicheranforderung zu dem nicht-Caching-Agent ohne Ausgabe einer Snoop-Anforderung an Caching-Agenten der Vielzahl von Agenten zu kommunizieren.
  • In einem Beispiel umfasst das Verfahren weiterhin das Annehmen und die Herabstufung der erste erschnüffelte Speicheranforderung bevor Snoop Verarbeitung für die anstehenden erschnüffelten Speicheranforderung abgeschlossen ist.
  • In einem Beispiel, während die nicht erschnüffelte Speicheranforderung anhängig ist, sind eine oder mehrere nachfolgende Speicheranfragen an die Adresse von einer gleichen Anforderer des ersten erschnüffelten Speicheranforderung akzeptiert.
  • In einem Beispiel umfasst das Verfahren ferner, wenn eine aktive Speicheranforderung anhängig für den Eintrag ist, Abwürgen des ersten erschnüffelten Speicheranforderung.
  • In einem Beispiel umfasst das Verfahren ferner das Einstellen einer untergeordneten Anzeige für die Eingabe, um anzuzeigen, daß der kohärente Stoff die Eingabe anspricht um den ersten Abgang von Snoop Speicheranfrage besitzt und Löschen der Besitzindikator für die Eingabe anspricht um die Zuteilung eines Eintrags in der Daten Puffer.
  • In einem Beispiel umfasst das Verfahren ferner das Halten der Rückdaten zugeordnet mit dem nicht erschnüffelten Speicheranforderung im Datenpuffer, bis vorherige erschnüffelte Ungültigkeitserklärungen von einem Anforderer des ersten erschnüffelten Speicheranforderung abgeschlossen haben.
  • In einem Beispiel muss die zeitliche Snoop-Filter-Logik nach einem Basic Input Output System (BIOS), Firmware oder andere Software aktiviert werden.
  • In einem Beispiel muss die zeitliche Snoop-Filter die Vielzahl von erschnüffelten Speicheranforderungen zur Akzeptierung aktivieren, nachdem das Gewebe von Daten zugeordnet mit der ersten Adresse in dem ersten Cache-Speicher für ungültig erklärt hat.
  • In einem Beispiel muss die Anzeige anzeigen, dass das Gewebe Steuerung der ersten Adresse hat, nachdem die Daten zugeordnet mit der ersten Adresse für ungültig erklärt hat.
  • In einem Beispiel muss die zeitliche Snoop-Filter-Logik die Anzeige aktualisieren, wenn eine erste erschnüffelte Speicheranforderung zugeordnet mit der ersten Adresse zieht, und wobei die zeitliche Snoop-Filter-Logik ist es, eine oder mehrere nachfolgenden Speicheranforderungen zugeordnet mit der ersten Adresse, bevor die erste erschnüffelte Speicheranforderung in den Ruhestand ist.
  • In einem Beispiel muss die zeitliche Snoop-Filter-Logik eine oder mehrere nachfolgende Speicheranforderungen von erschnüffelten Speicheranforderungen an nicht erschnüffelten Speicheranforderungen herabstufen.
  • In einem anderen Beispiel, eine Konflikterkennungslogik umfaßt eine Vorrichtung, um eine Vielzahl von Speicheranforderungen von einem Schiedsrichter einer kohärenten Gewebe eines Systems auf einem Chip (SoC) zu empfangen, der Konflikt Erkennungslogik einschließlich Snoop-Filter-Logik, um eine erste erschnüffelte Speicheranforderung für eine erste Adresse in eine nicht erschnüffelte Speicheranforderung herabzustufen, wenn eine Anzeige zugeordnet mit der ersten Adresse zeigt, dass die zusammenhängenden Gewebe Steuerung der ersten Adresse hat.
  • In einem Beispiel ist das Snoop-Filter-Logik einschließlich in Bezug auf einen Puffer, der kohärenten Gewebe und ist nicht einschließlich in Bezug auf eine oder mehrere Cache-Speicher des SOC.
  • In einem Beispiel muss das Snoop-Filter-Logik eine Vielzahl von Speicheranforderungen zugeordneten mit der ersten Adresse aktivieren, um akzeptiert zu werden, nachdem das kohärente Material Daten in einer Mehrzahl von Cache-Speichern eines ersten Mittels des SoC für ungültig erklärt hat und bevor die nicht erschnüffelte Speicheranforderung ist ausgeschieden.
  • In einem Beispiel muss das Snoop-Filter-Logik die Anzeige aktualisieren, um anzuzeigen, dass die kohärente Gewebe Steuerung der ersten Adresse anspricht zum Ausscheiden eines erschnüffelten Speicheranforderung an die erste Adresse hat.
  • In einem Beispiel umfasst der Snoop-Filter-Logik eine zeitliche Snoop-Filter.
  • In einem Beispiel ist die zeitliche Snoop-Filter inklusive mit einem Datenpuffer des kohärenten Stoff und nicht-inklusive mit Bezug auf eine oder mehrere Cache-Speicher des SOC.
  • Ausführungsformen können in vielen verschiedenen Arten von Systemen verwendet werden. Zum Beispiel kann in einer Ausführungsform eine Kommunikationseinrichtung angeordnet werden, um die verschiedenen hier beschriebenen Methoden und Techniken auszuführen.
  • Natürlich ist der Schutzumfang der vorliegenden Erfindung nicht auf eine Kommunikationsvorrichtung beschränkt, sondern andere Ausführungsformen auf andere Typen von Vorrichtungen zur Verarbeitung von Anweisungen oder ein oder mehrere maschinenlesbare Medien, einschließlich Anweisungen geleitet warden können, die das Gerät für die Durchführung eines oder mehrere der hier beschriebenen Methoden und Techniken führen, in Reaktion darauf, dass es auf einer Rechenvorrichtung ausgeführt wird Ausführungsformen können in Code implementiert werden und auf einem nicht-transitorischen Speichermedium auf dem Befehle gespeichert sein, die verwendet werden können, um ein System zu programmieren, um die Anweisungen auszuführen. Das Speichermedium kann umfassen, ist aber nicht beschränkt auf, jede Art von Disk, einschließlich Disketten, optische Platten, Festkörperlaufwerke (SSDs), Compact Disk Nur-Lese-Speicher (CD-ROMs), Compact Disk Rewritables (CD-RWs) und magneto-optische Platten, Halbleitereinrichtungen wie nur-Lesespeicher (ROMs), Direktzugriffsspeicher (RAMs), wie etwa dynamische Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SRAMs), löschbare programmierbare nur-Lese-Speicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare nur-Lese-Speicher (EEPROMs), magnetische oder optische Karten oder jede andere Art von Medien, geeignet zum Speichern elektronischer Befehle.

Claims (19)

  1. System auf einem Chip (SoC) (200), umfassend: ein Gewebe (210; 300), eine Vielzahl von Agenten (220, 230, 240; 315) des SoC zu verbinden, das Gewebe (210; 300) umfassend: einen Datenpuffer (344) mit einer Vielzahl von Einträgen, jeweils zum Speichern von Daten, um zu und von der Viellzahl von Agenten (220, 230, 240; 315), und zu und von einem Speicher gekoppelt zu dem SoC übertragen zu werden; einen Besitzindikator (343) zugeordnet mit jeder der Vielzahl von Einträgen des Datenpuffers (344), wobei der Besitzindikator (343) in einem ersten Zustand ist, um anzuzeigen, dass entsprechende Daten der Einträge in Cache-Agenten (220) der Vielzahl von Agenten (220, 230, 240; 315) für ungültig erklärt wurden; und eine Entscheidungseinrichtung (320) zum Ermöglichen einer Mehrzahl von Speicheranforderungen zugeordnet mit Daten in einem der Vielzahl von Einträgen, um akzeptiert zu werden, nachdem das Gewebe (210; 300) die Daten in zumindest einem Cache-Speicher eines ersten Agenten aus der Mehrzahl von Agenten (220, 230, 240; 315) für ungültig erklärt hat, wobei die Entscheidungseinrichtung (320) den Besitzindikator (343) in den ersten Zustand aktualisieren muss, wenn eine erste erschnüffelte Speicheranforderung verbundenen mit Daten eines ersten Eintrags des Datenpuffers (344) in den Ruhestand geht, wobei die Entscheidungseinrichtung (320) einen temporalen Snoop-Filter (334) umfasst, wobei der temporale Snoop-Filter inklusive in Bezug auf den Datenpuffer (344) und nicht-inklusive in Bezug auf eine oder mehrere Cache-Speicher des SoC ist.
  2. Das SOC nach Anspruch 1, wobei die Entscheidungseinrichtung (320) einen oder mehrere nachfolgende Speicheranforderungen zugeordnet mit den Daten des ersten Eintrags akzeptieren muss, bevor die erste erschnüffelte Speicheranforderung in den Ruhestand geht.
  3. Das SOC nach Anspruch 2, wobei eine oder mehrere nachfolgende Speicheranforderungen von dem gleichen Anforderer als die erste erschnüffelte Speicheranforderung sind.
  4. Das SOC nach Anspruch 2, wobei die Entscheidungseinrichtung (320) eine oder mehrere nachfolgende Speicheranforderungen von erschnüffelten Speicheranforderungen zu nicht erschnüffelten Speicheranforderungen herabstufen muss.
  5. Das SOC nach Anspruch 1, wobei der erste Agent einen Caching-Agent (220) umfasst, und die Mehrzahl von Speicheranfragen von einem Nicht-Cache-Agenten (230, 240; 315) der Vielzahl von Agenten (220, 230, 240; 315) empfangen werden.
  6. Das SOC nach Anspruch 5, wobei die Entscheidungseinrichtung (320) eine erschnüffeltn Speicheranforderung von dem Nicht-Cache-Agenten (230, 240) auf eine nicht erschnüffelte Speicheranforderung herabstufen muss und Daten zugeordnet mit der erschnüffelten Speicheranforderung an den Nicht-Cache-Agenten (230, 240; 315) ohne Ausgabe einer erschnüffelten Anforderung an Agenten der Vielzahl von Agenten (220, 230, 240; 315) kommunizieren muss.
  7. Verfahren, umfassend: Empfangen einer ersten erschnüffelten Speicheranforderung für eine erste Adresse in einem kohänrenten Stoff (210; 300) eines Prozessors (100) von einem Nicht-Cache-Agenten (230, 240; 315) des Prozessors (100); Erfassen, ob ein Eintrag aus einem Datenpuffer (344) des kohärenten Stoffs (210; 300) zugeordnet mit der ersten Adresse im Besitz des kohärenten Stoffs (210; 300) ist; wenn ja, Herabstufen der ersten erschnüffelten Speicheranforderung zu einer nicht erschnüffelten Speicheranforderung; wenn der Eintrag nicht in dem Besitz des kohärenten Stoffs (210; 300) ist, Akzeptieren und Herabstufen der ersten erschnüffelten Speicheranforderung, wenn die erste erschnüffelte Speicheranforderung von einem gleichen Anforderer wie die ausstehende erschnüffelte Speicheranforderung für die erste Adresse ist; wenn der Eintrag des Datenpuffers (344) nicht im Besitzt des kohärenten Stoffs (210; 300) ist, Bestimmen, ob eine aktive Speicheranforderung ausstehend für den Eintrag ist, und wenn keine aktive Speicheranforderung ausstehend für den Eintrag ist, Annehmen der ersten erschnüffelten Speicheranforderung und Ausführen eines Snoop-Ungültigkeitsanfrage an einen oder mehrere Cache-Agenten (220, 230, 240; 315) des Prozessors (100); und Einstellen eines Besitzindikators (343) für den Eintrag, um anzuzeigen, daß der kohärente Stoff (210; 300) den Eintrag ansprechend auf das in den Ruhestand Gehen der erschnüffelten Speicheranforderung besitzt.
  8. Verfahren nach Anspruch 7, ferner umfassend Annehmen und Herabstufen der ersten erschnüffelten Speicheranforderung, bevor Snoop-Verarbeitung für die ausstehende erschnüffelte Speicheranforderung abgeschlossen ist.
  9. Verfahren nach Anspruch 7, ferner umfassend, während die nicht erschnüffelte Speicheranforderung ausstehend ist, Annehmen einer oder mehrerenr nachfolgenden Speicheranfragen an die erste Adresse von einem gleichen Anforderer der ersten erschnüffelten Speicheranforderung.
  10. Verfahren nach Anspruch 7, ferner umfassend, wenn eine aktive Speicheranforderung ausstehend für den Eintrag ist, Abwürgen der ersten erschnüffelten Speicheranforderung.
  11. Verfahren nach Anspruch 7, ferner umfassend Löschen des Besitzindikators (343) für den Eintrag ansprechend auf die Zuteilung eines Eintrags in dem Daten Puffer (344).
  12. Verfahren nach Anspruch 7, ferner umfassend Halten von Rückgabe-Daten zugeordnet zu der nicht erschnüffelten Speicheranforderung in dem Datenpuffer (344), bis vorherige erschnüffelte Ungültigkeitserklärungen von einem Anforderer der ersten erschnüffelten Speicheranforderung abgeschlossen sind.
  13. Mindestens ein maschinenlesbares Medium umfassend eine Vielzahl von Anweisungen, die, als Antwort darauf, auf einer Recheneinrichtung ausgeführt zu werden, die Recheneinrichtung zur Durchführung eines Verfahrens nach einem der Ansprüche 10-12 veranlassen.
  14. Ein System, umfassend: ein System auf einem Chip (SoC) (200), umfassend: einen ersten Kern (101) und einen ersten Cache-Speicher; mindestens einen Speicher-Controller (250; 370) zum Koppeln an einen dynamischen Direktzugriffsspeicher (DRAM); einen ersten nicht-Caching-Agent (230; 240; 315); ein Gewebe (210; 300), um den ersten Kern (101), den ersten nicht-Caching-Agenten (230, 240; 315) und mindestens einen Speicher-Controller (250; 370) zu koppeln, wobei das Gewebe (210; 300) einen Datenpuffer (344) und eine temporale Snoop-Filter-Logik (334) inklusive mit dem Datenpuffer (344) und nicht-inklusive mit dem ersten Cache-Speicher aufweist, die temporale Snoop-Filter-Logik (334), um eine Vielzahl von erschnüffelten Speicheranforderungen zu einer ersten Adresse von dem ersten nicht-Caching-Agent (230, 240; 315) zu aktivieren, um ohne einen Stall akzeptiert zu werden, wenn ein Indikator (343) zugeordnet zu der ersten Adresse anzeigt, daß der Stoff (210; 300) Kontrolle über die erste Adresse hat, wobei die temporale Snoop-Filter-Logik (334) den Indikator (343) aktualisieren muss, wenn eine erste erschnüffelte Speicheranforderung verbunden mit der ersten Adresse in den Ruhestand geht; und das DRAM gekoppelt auf die SoC (200).
  15. System nach Anspruch 14, wobei die temporale Snoop-Filter-Logik (334) nach einem Basic Input Output System (BIOS), Firmware oder andere Software aktiviert werden muss.
  16. System nach Anspruch 14, wobei der temporale Snoop-Filter die Vielzahl von erschnüffelten Speicheranforderungen ermöglichen muss, um akzeptiert zu werden, nachdem das Gewebe (210; 300) Daten zugeordnet mit der ersten Adresse in dem ersten Cache-Speicher für ungültig erklärt hat.
  17. System nach Anspruch 16, wobei der Indikator (343) anzeigen muss, dass das Gewebe (210; 300) Kontrolle über die erste Adresse hat, nachdem die Daten zugeordnet mit der ersten Adresse für ungültig erklärt worden sind.
  18. System nach Anspruch 14, temporalewobei die temporale Snoop-Filter-Logik (334) eine oder mehrere nachfolgenden Speicheranforderungen zugeordnet mit der ersten Adresse akzeptieren muss, bevor die erste erschnüffelte Speicheranforderung in den Ruhestand geht.
  19. System nach Anspruch 18, wobei die temporale Snoop-Filter-Logik (334) eine oder mehrere nachfolgende Speicheranforderungen von erschnüffelten Speicheranforderungen zu nicht erschnüffelten Speicheranforderungen herabstufen muss.
DE112013001361.4T 2013-03-15 2013-03-15 System auf einem Chip, Verfahren, maschinenlesbares Medium und System für die Bereitstellung einer Snoop-Filterung zugeordnet mit einem Datenpuffer Active DE112013001361B4 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/031838 WO2014142939A1 (en) 2013-03-15 2013-03-15 Providing snoop filtering associated with a data buffer

Publications (2)

Publication Number Publication Date
DE112013001361T5 DE112013001361T5 (de) 2014-11-27
DE112013001361B4 true DE112013001361B4 (de) 2023-06-15

Family

ID=51533859

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013001361.4T Active DE112013001361B4 (de) 2013-03-15 2013-03-15 System auf einem Chip, Verfahren, maschinenlesbares Medium und System für die Bereitstellung einer Snoop-Filterung zugeordnet mit einem Datenpuffer

Country Status (7)

Country Link
US (1) US9767026B2 (de)
EP (1) EP2972909A4 (de)
KR (1) KR101814412B1 (de)
CN (1) CN105009101B (de)
DE (1) DE112013001361B4 (de)
RU (1) RU2608000C2 (de)
WO (1) WO2014142939A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9563579B2 (en) 2013-02-28 2017-02-07 Intel Corporation Method, apparatus, system for representing, specifying and using deadlines
US9569362B2 (en) * 2014-11-13 2017-02-14 Cavium, Inc. Programmable ordering and prefetch
US10013385B2 (en) 2014-11-13 2018-07-03 Cavium, Inc. Programmable validation of transaction requests
US9971711B2 (en) * 2014-12-25 2018-05-15 Intel Corporation Tightly-coupled distributed uncore coherent fabric
US9606925B2 (en) * 2015-03-26 2017-03-28 Intel Corporation Method, apparatus and system for optimizing cache memory transaction handling in a processor
US9996487B2 (en) 2015-06-26 2018-06-12 Intel Corporation Coherent fabric interconnect for use in multiple topologies
US10157133B2 (en) * 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US9990292B2 (en) * 2016-06-29 2018-06-05 Arm Limited Progressive fine to coarse grain snoop filter
US20180165240A1 (en) * 2016-12-08 2018-06-14 Intel IP Corporation Interconnect network supporting multiple consistency mechanisms, multiple protocols, and multiple switching mechanisms
CN106656391B (zh) * 2016-12-12 2018-10-12 中国航空工业集团公司西安航空计算技术研究所 一种交换机芯片多路时钟同步原语冲突处理电路
US10042766B1 (en) 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment
US10303603B2 (en) 2017-06-13 2019-05-28 Microsoft Technology Licensing, Llc Low power multi-core coherency
US10282298B2 (en) 2017-06-13 2019-05-07 Microsoft Technology Licensing, Llc Store buffer supporting direct stores to a coherence point
RU2649943C1 (ru) * 2017-07-04 2018-04-05 федеральное государственное автономное образовательное учреждение высшего образования "Национальный исследовательский ядерный университет "МИФИ" (НИЯУ МИФИ) Многовыходной арбитр приоритетов
CN108334337B (zh) * 2018-01-30 2022-02-01 江苏华存电子科技有限公司 含自动管理功能的低延迟指令调度器及过滤猜测访问方法
US11275616B2 (en) * 2019-06-13 2022-03-15 Apple Inc. Resource access management
CN111984387A (zh) * 2020-08-26 2020-11-24 上海兆芯集成电路有限公司 用于调度发布队列中指令的方法及处理器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100005247A1 (en) 2003-06-23 2010-01-07 Mips Technologies, Inc. Method and Apparatus for Global Ordering to Insure Latency Independent Coherence
US20130007376A1 (en) 2011-07-01 2013-01-03 Sailesh Kottapalli Opportunistic snoop broadcast (osb) in directory enabled home snoopy systems

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951657A (en) * 1996-06-19 1999-09-14 Wisconsin Alumni Research Foundation Cacheable interface control registers for high speed data transfer
US6874039B2 (en) * 2000-09-08 2005-03-29 Intel Corporation Method and apparatus for distributed direct memory access for systems on chip
US6959364B2 (en) * 2002-06-28 2005-10-25 Intel Corporation Partially inclusive snoop filter
US7093079B2 (en) * 2002-12-17 2006-08-15 Intel Corporation Snoop filter bypass
US7130967B2 (en) 2003-12-10 2006-10-31 International Business Machines Corporation Method and system for supplier-based memory speculation in a memory subsystem of a data processing system
US7392351B2 (en) 2005-03-29 2008-06-24 International Business Machines Corporation Method and apparatus for filtering snoop requests using stream registers
US7373462B2 (en) * 2005-03-29 2008-05-13 International Business Machines Corporation Snoop filter for filtering snoop requests
US20080109624A1 (en) * 2006-11-03 2008-05-08 Gilbert Jeffrey D Multiprocessor system with private memory sections
US8631208B2 (en) 2009-01-27 2014-01-14 Intel Corporation Providing address range coherency capability to a device
US8650629B2 (en) * 2009-12-16 2014-02-11 Intel Corporation Interface logic for a multi-core system-on-a-chip (SoC)
US8522189B2 (en) * 2011-03-09 2013-08-27 Intel Corporation Functional fabric based test access mechanism for SoCs
US9043665B2 (en) * 2011-03-09 2015-05-26 Intel Corporation Functional fabric based test wrapper for circuit testing of IP blocks
US8745335B2 (en) * 2011-06-29 2014-06-03 Synopsys, Inc. Memory arbiter with latency guarantees for multiple ports
US9563579B2 (en) 2013-02-28 2017-02-07 Intel Corporation Method, apparatus, system for representing, specifying and using deadlines

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100005247A1 (en) 2003-06-23 2010-01-07 Mips Technologies, Inc. Method and Apparatus for Global Ordering to Insure Latency Independent Coherence
US20130007376A1 (en) 2011-07-01 2013-01-03 Sailesh Kottapalli Opportunistic snoop broadcast (osb) in directory enabled home snoopy systems

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
) TPM-Spezifikation Version 1.2, vom 2. Oktober 2003
3.0 (veröffentlicht 17. Januar 2007

Also Published As

Publication number Publication date
US20140281197A1 (en) 2014-09-18
RU2608000C2 (ru) 2017-01-11
WO2014142939A1 (en) 2014-09-18
EP2972909A1 (de) 2016-01-20
KR20150107831A (ko) 2015-09-23
EP2972909A4 (de) 2016-12-14
DE112013001361T5 (de) 2014-11-27
CN105009101A (zh) 2015-10-28
RU2014139597A (ru) 2016-04-20
KR101814412B1 (ko) 2018-01-03
CN105009101B (zh) 2018-03-13
US9767026B2 (en) 2017-09-19

Similar Documents

Publication Publication Date Title
DE112013001361B4 (de) System auf einem Chip, Verfahren, maschinenlesbares Medium und System für die Bereitstellung einer Snoop-Filterung zugeordnet mit einem Datenpuffer
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
US11334262B2 (en) On-chip atomic transaction engine
DE112012005210B4 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE112016007566T5 (de) Systeme, Verfahren und Vorrichtungen zur heterogenen Berechnung
DE112016004300T5 (de) Verfahren, gerät und system zum zuweisen von cache unter verwendung einer verkehrsklasse
EP3314445B1 (de) Kohärente gewebeverbindung zur verwendung in mehreren topologien
US9405687B2 (en) Method, apparatus and system for handling cache misses in a processor
US20090249105A1 (en) Hardware Controlled Power Management of Shared Memories
DE112012007115T5 (de) Wahlweise Logikprozessor-Zählung und Typauswahl für eine gegebene Arbeitsbelastung basierend auf Wärme- und Leistungsbudget-Einschränkungen der Plattform
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE102019132213A1 (de) Adressenübersetzung für skalierbare verlinkte Vorrichtungen
DE112017001148T5 (de) Abflachende portalbrücke .
DE102018001537A1 (de) System, vorrichtung und verfahren zum selektiven freigeben einer instruktionshandhabung auf lokalitäts-basis
EP3274860B1 (de) Verfahren, vorrichtung und system zur optimierung der cache-speichertransaktionshandhabung in einem prozessor
DE112016005863T5 (de) Minimierung von Snoop-Verkehr lokal und über Kerne auf einem Chip-Mehrkern-Fabric
DE112017001704T5 (de) Arbiterbasierte Serialisierung von Prozessor-System-Management-Interrupt-Ereignissen
DE102016006399A1 (de) Hardwarevorrichtungen und verfahren zum durchführen von transaktionaler energieverwaltung
DE102020101958A1 (de) Dynamisches spurzugriffswechseln zwischen pcie-wurzelräumen
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
DE102018005039A1 (de) System und verfahren für pro-agent-steuerung und - dienstqualität gemeinsam genutzter ressourcen in chip-mehrprozessor-plattformen
DE102013209643A1 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE202016009013U1 (de) Befehle und Logik für Vektorpermutation
DE112017003345T5 (de) Bit-prüfprozessoren, verfahren, systeme und anweisungen zum prüfen eines bits mit einem angegebenen prüfbitwert

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R081 Change of applicant/patentee

Owner name: TAHOE RESEARCH, LTD., IE

Free format text: FORMER OWNER: INTEL CORPORATION, SANTA CLARA, CALIF., US

R082 Change of representative

Representative=s name: VOSSIUS & PARTNER PATENTANWAELTE RECHTSANWAELT, DE

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 112013007860

Country of ref document: DE

R020 Patent grant now final