DE102012224265A1 - Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher - Google Patents

Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher Download PDF

Info

Publication number
DE102012224265A1
DE102012224265A1 DE102012224265A DE102012224265A DE102012224265A1 DE 102012224265 A1 DE102012224265 A1 DE 102012224265A1 DE 102012224265 A DE102012224265 A DE 102012224265A DE 102012224265 A DE102012224265 A DE 102012224265A DE 102012224265 A1 DE102012224265 A1 DE 102012224265A1
Authority
DE
Germany
Prior art keywords
processor
cache
data
directory
request
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.)
Pending
Application number
DE102012224265A
Other languages
English (en)
Inventor
Miguel Comparan
Robert A. Shearer
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102012224265A1 publication Critical patent/DE102012224265A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0817Cache consistency protocols using directory methods
    • 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/0893Caches characterised by their organisation or structure
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

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

Paralleldatenverarbeitungsumgebungen, in denen Threads, die in benachbarten Prozessoren ausgeführt werden, auf denselben Datensatz zugreifen können, können so entworfen und konfiguriert werden, dass sie eine oder mehrere Ebenen von Cachespeichern gemeinsam nutzen. Bevor ein Prozessor eine Anforderung nach Daten nach einem Cachespeicher-Fehltreffer an eine höhere Eben des Cachespeichers weiterleitet, kann der Prozessor ermitteln, ob die Daten in einem lokalen Cachespeicher eines benachbarten Prozessors gespeichert sind. Wenn dies der Fall ist, kann der Prozessor die Anforderung an den benachbarten Prozessor weiterleiten, um die Daten abzurufen. Da der Zugriff auf die Cachespeicher für die beiden Prozessoren gemeinsam erfolgt, erhöht sich die effektive Speichergröße. Dadurch kann die Anzahl der Cachespeicher-Fehltreffer für jede Ebene des gemeinsam genutzten Cachespeichers vorteilhaft verringert werden, ohne die Größe der einzelnen Cachespeicher auf dem Prozessor-Chip zu vergrößern.

Description

  • HINTERGRUND
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein Daten-Cachespeicher für Prozessoren und insbesondere die gemeinsame Nutzung der Daten-Cachespeicher durch Prozessoren.
  • Beschreibung der zugrunde liegenden Technik
  • Die Größe der verschiedenen Cachespeicher-Ebenen in einer Cachespeicher-Hierarchie – d. h. Ebene-1-Cachespeicher (L1), Ebene-2-Cachespeicher (L2) usw. – ist weiterhin ein wichtiges Aufbaumerkmal moderner Datenverarbeitungssysteme. Mit zunehmender Größe des Cachespeichers kann das Computersystem mehr Daten in dem Cachespeicher speichern, jedoch verlängert sich damit die Zeit, die der Prozessor zum Auffinden der Daten innerhalb des Cachespeichers braucht – d. h. die Latenzzeit. Somit weisen größere Cachespeicher größere Trefferraten, jedoch auch eine längere Latenzzeit auf. Da Cachespeicher außerdem jedoch üblicherweise in der Nähe der Prozessoren angeordnet sind, die die Daten anfordern – z. B. auf demselben Halbleiterchip, wo die Fläche begrenzt ist – ist die Vergrößerung des Cachespeichers zum Speichern größerer Datenmengen unter Umständen nicht möglich. Diese Überlegungen müssen gegeneinander abgewogen werden, wenn über die Größe der Cachespeicher entschieden wird.
  • KURZDARSTELLUNG
  • Ausführungsformen der Erfindung stellen ein Verfahren, ein System und ein Computerprogrammprodukt zum Zugreifen auf Daten-Cachespeicher bereit, die mehreren Prozessoren zugehörig sind. Das Verfahren und das Computerprogrammprodukt weisen ein Durchsuchen eines ersten Verzeichnisses auf, um zu ermitteln, ob ein erster Cachespeicher, der einem ersten Prozessor zugehörig ist, Daten enthält, die zum Ausführen einer Anweisung erforderlich sind, die durch den ersten Prozessor ausgeführt wird, wobei das erste Verzeichnis einen Index der in dem ersten Cachespeicher gespeicherten Daten aufweist. Das Verfahren und das Computerprogrammprodukt weisen ein Durchsuchen eines zweiten Verzeichnisses auf, um zu ermitteln, ob ein zweiter Cachespeicher, der einem zweiten Prozessor zugehörig ist, die erforderlichen Daten enthält, wobei das zweite Verzeichnis einen Index der in dem zweiten Cachespeicher gespeicherten Daten aufweist. Nach einem Feststellen, dass sich die Daten in dem zweiten Cachespeicher befinden, weisen das Verfahren und das Computerprogrammprodukt auch ein Übertragen einer Anforderung an den zweiten Prozessor zum Abrufen der Daten von dem zweiten Cachespeicher auf. Nach einem Feststellen, dass sich die Daten weder in dem ersten noch in dem zweiten Cachespeicher befinden, weisen das Verfahren und das Computerprogrammprodukt auch ein Übertragen einer Anforderung an einen anderen Speicher auf, der dem ersten Prozessor zugehörig ist, um die Daten abzurufen.
  • Das System weist einen ersten Prozessor und einen zweiten Prozessor auf. Das System weist auch einen ersten Cachespeicher in dem ersten Prozessor und einen zweiten Cachespeicher in dem zweiten Prozessor auf. Das System beinhaltet ein erstes Verzeichnis in dem ersten Prozessor, das einen Index der in dem ersten Cachespeicher gespeicherten Daten aufweist, wobei ein Durchsuchen des Indexes des ersten Verzeichnisses anzeigt, ob der erste Cachespeicher Daten enthält, die zum Ausführen einer Anweisung erforderlich sind, die durch den ersten Prozessor ausgeführt wird. Das System weist auch ein zweites Verzeichnis in dem ersten Prozessor auf, das einen Index der in einem zweiten Cachespeicher des zweiten Prozessors gespeicherten Daten aufweist, wobei ein Durchsuchen des Indexes des zweiten Verzeichnisses anzeigt, ob der zweite Cachespeicher die erforderlichen Daten enthält. Nach einem Feststellen, dass sich die Daten in dem zweiten Cachespeicher befinden, sendet das System eine Anforderung an den zweiten Prozessor, um die Daten von dem zweiten Cachespeicher abzurufen. Nach einem Feststellen, dass sich die Daten weder in dem ersten noch in dem zweiten Cachespeicher befinden, sendet das System eine Anforderung an einen anderen Speicher, der dem ersten Prozessor zugehörig ist, um die Daten abzurufen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Zum Verwirklichen und vollständigen Verständnis der oben aufgeführten Aspekte kann auf ausführliche Beschreibung von Ausführungsformen der Erfindung, die oben kurz zusammengefasst wurde, in Verbindung mit den beiliegenden Zeichnungen Bezug genommen werden.
  • Zu beachten ist jedoch, dass die beiliegenden Zeichnungen nur typische Ausführungsformen dieser Erfindung veranschaulichen und daher nicht als Einschränkung deren Schutzumfangs anzusehen sind, da die Erfindung weitere gleich wirksame Ausführungsformen zulassen kann.
  • 1 ist ein Chip mit mehreren Prozessoren gemäß einer Ausführungsform der Erfindung.
  • 2 ist ein Ablaufplan für das Zugreifen auf einen L1-Cachespeicher in einem benachbarten Prozessor gemäß einer Ausführungsform der Erfindung.
  • 3 ist eine Ansicht der Systemarchitektur einer Vielzahl von Prozessoren gemäß einer Ausführungsform der Erfindung, die einen L1-Cachespeicher gemeinsam nutzen.
  • 4 ist ein Ablaufplan zum Ermitteln, wann eine Anforderung zum Abrufen von Daten von einem L1-Cachespeicher eines benachbarten Prozessors gemäß einer Ausführungsform der Erfindung eingefügt werden muss.
  • 5A bis 5B sind Blockschaubilder, die ein vernetztes System zum Ausführen der von Clients übergebenen Jobs auf einem System mit mehreren Knoten gemäß Ausführungsformen der Erfindung veranschaulichen.
  • 6 ist ein Schaubild, das ein Job-System mit mehreren Knoten gemäß Ausführungsformen der Erfindung veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Die L1-Cachespeicher für eine Vielzahl von Computerprozessoren können gemeinsam genutzt werden, um praktisch einen einzigen (d. h. virtuellen) L1-Cachespeicher zu erzeugen. Auf diese Weise braucht die physische Größe des L1-Cachespeichers nicht vergrößert zu werden, jedoch kann die Wahrscheinlichkeit eines Cachespeicher-Treffers erhöht werden – d. h., mindestens einer der gemeinsam genutzten L1-Cachespeicher enthält die angeforderten Daten. Der Vorteil besteht darin, dass der Zugriff auf einen L1-Cachespeicher eines benachbarten Prozessors weniger Taktzyklen und somit eine kürzere Latenzzeit erfordert als der Zugriff auf den L2-Cachespeicher des Prozessors oder einen anderen Speicher außerhalb des Chips.
  • Bei vielen Hochleistungscomputern, bei denen hunderte einzelner Prozessoren einander eng benachbart sein können – z. B. auf ein und demselben Halbleiter-Chip oder Halbleitersubstrat – können die Prozessoren Threads ausführen, die ständig dieselben Daten laden, verarbeiten und speichern. Zum Beispiel können die Prozessoren in einem Parallelcomputersystem innerhalb des vom Benutzer übergebenen Jobs verschiedene Tasks ausführen. Wenn diese Tasks in einer Beziehung zueinander stehen, rufen die Prozessoren wahrscheinlich Kopien derselben Daten vom Hauptspeicher ab und speichern diese Daten zum schnelleren Zugriff jeweils in ihren eigenen Cachespeichern. Demgemäß wird durch Bereitstellen des Zugriffs für benachbarte Prozessoren die Größe des Cachespeichers des Prozessors praktisch erhöht, um Daten vom L1-Cachespeicher eines Prozessors abzurufen, ohne die durch die Cachespeicher auf dem Chip in Anspruch genommene Grundfläche zu vergrößern.
  • Wenn ein Prozessor nach Daten zum Ausführen einer Anweisung in seiner Pipeline sucht, kann er prüfen, ob die Daten in seinem eigenen L1-Cachespeicher gespeichert sind. Der Prozessor kann auch prüfen, ob sich die Daten im L1-Cachespeicher eines benachbarten Prozessors befinden. Wenn sich die Daten nicht in seinem eigenen Cachespeicher, sondern im L1-Cachespeicher seines Nachbars befinden, kann er eine Anforderung nach den Daten an den ihm benachbarten Prozessor senden. Die Anforderung kann dann in die Pipeline des benachbarten Prozessors eingefügt werden, sodass die Daten vom L1-Cachespeicher des Nachbars an den anfordernden Prozessor weitergeleitet werden. Das heißt, der benachbarte Prozessor behandelt die Anforderung so, als stamme diese ursprünglich aus seiner eigenen Pipeline. Nach dem Abrufen der Daten werden diese jedoch nicht durch die Pipeline des benachbarten Prozessors verwendet, sondern an den anfordernden Prozessor zurück weitergeleitet.
  • Darüber hinaus kann der Prozessor eine Auswahllogik enthalten, die festlegt, wann eine Anforderung nach Daten in die Pipeline des benachbarten Prozessors eingefügt werden soll. Zum Beispiel kann die Logik warten, bis der benachbarte Prozessor nicht beschäftigt ist oder einen leeren Platz in seiner Pipeline aufweist, bevor die Anforderung eingefügt wird, um sicherzustellen, dass die Anforderung die Pipeline des Nachbars nicht unterbricht. Oder die Auswahllogik kann den Prozessoren Prioritäten derart zuweisen, dass beim Empfangen einer Anforderung von einem Prozessor mit höherer Priorität die Pipeline des Prozessors mit der geringeren Priorität unterbrochen wird, um die Anforderung einzufügen. Wenn die Logik jedoch feststellt, dass die Anforderung warten muss, kann der Prozessor eine Warteschlange zum Speichern der Anforderungen nutzen, bis diese eingefügt werden können.
  • Wenn die durch den Prozessor angeforderten Daten weder im lokalen L1-Cachespeicher noch im L1-Cachespeicher des benachbarten Prozessor gefunden werden, kann die Anforderung an eine andere Cachespeicher-Ebene in einer Cachespeicher-Hierarchie oder an den außerhalb des Chips befindlichen RAM weitergeleitet werden.
  • Im Folgenden wird auf Ausführungsformen der Erfindung Bezug genommen. Es sollte jedoch klar sein, dass die Erfindung nicht auf einzelne beschriebene Ausführungsformen beschränkt ist. Vielmehr ist beabsichtigt, dass die Erfindung durch jede Kombination der folgenden Merkmale und Elemente unabhängig von deren Bezug auf verschiedene Ausführungsformen die Erfindung umgesetzt und praktisch realisiert wird. Obwohl Ausführungsformen der Erfindung Vorteile gegenüber anderen möglichen Lösungen und/oder gegenüber dem Stand der Technik erreichen können, stellt es keine Einschränkung der Erfindung dar, ob ein einzelner Vorteil durch eine bestimmte Ausführungsform erreicht wird oder nicht. Somit dienen die folgenden Aspekte, Merkmale, Ausführungsformen und Vorteile lediglich der Veranschaulichung und sind nicht als Elemente oder Einschränkungen der beiliegenden Ansprüche anzusehen, es sei denn, sie werden in dem/den Anspruch/Ansprüchen ausdrücklich erwähnt. Desgleichen ist die Bezugnahme auf den Begriff „die Erfindung” nicht als Verallgemeinerung irgendeines hierin offenbarten erfindungsgemäßen Gegenstands zu verstehen und nicht als Element oder Einschränkung der beiliegenden Ansprüche anzusehen, es sei denn, dies wird in einem/mehreren Anspruch/Ansprüchen ausdrücklich erwähnt.
  • Dem Fachmann ist geläufig, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt realisiert werden können. Demgemäß können Aspekte der vorliegenden Erfindung die Form einer vollständigen Hardwareausführungsform, einer vollständigen Softwareausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die in sich Software- und Hardwareaspekte vereint und die hierin sämtlich allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Darüber hinaus können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darauf gespeicherten computerlesbaren Programmcode verkörpert ist.
  • Es kann eine beliebige Kombination eines oder mehrerer computerlesbarer Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder um ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne darauf beschränkt zu sein, um ein elektronisches, magnetisches, optisches, elektromagnetische, Infrarot- oder Halbleitersystem, eine entsprechende Vorrichtung oder Einheit oder eine beliebige geeignete Kombination derselben handeln. Zu spezielleren Beispielen (eine nicht erschöpfende Aufzählung) des computerlesbaren Speichermedium können folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination derselben. In Verbindung mit diesem Dokument kann es sich bei dem computerlesbaren Speichermedium um ein beliebiges materielles Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Anweisungen enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann ein ausgebreitetes Datensignal mit einem darin verkörperten Programmcode beinhalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches ausgebreitetes Signal kann eine Vielfalt an Formen annehmen, darunter, aber nicht darauf beschränkt, elektromagnetisch, optisch oder eine beliebige geeignete Kombination derselben. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zum Ausführen von Anweisungen übertragen, ausbreiten oder transportieren kann.
  • Der auf einem computerlesbaren Medium gespeicherte Programmcode kann unter Verwendung eines beliebigen geeigneten Medium übertragen werden, darunter, aber nicht darauf beschränkt, drahtlos, leitungsgebunden, Lichtwellenleiter, HF usw. oder eine beliebige geeignete Kombination derselben.
  • Der Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben werden, darunter eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder Ähnliche und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer eines Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. Beim letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers über eine beliebige Art von Netz verbunden werden, darunter ein lokales Netz (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internetdienstleisters).
  • Im Folgenden werden Aspekte der vorliegenden Erfindung unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Anweisungen eines Computerprogramms umgesetzt werden können. Diese Anweisungen des Computerprogramms können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zugeführt werden, um eine Maschine derart zu erzeugen, dass die durch den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zum Umsetzen der in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubildes angegebenen Funktionen/Aktionen erzeugen.
  • Diese Anweisungen des Computerprogramms können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten veranlassen kann, in einer bestimmten Weise derart wirksam zu werden, dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel erzeugen, der Anweisungen beinhaltet, die die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubildes angegebene Funktion/Aktion umsetzen.
  • Die Anweisungen des Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe auf dem Computer, der anderen programmierbaren Vorrichtung oder anderen Einheiten auszuführender Arbeitsschritte derart zu veranlassen, dass die auf dem Computer oder der anderen programmierbaren Vorrichtung auszuführenden Anweisungen Prozesse zum Umsetzen der in dem Block oder den Blöcken in dem Ablaufplan und/oder Blockschaubild angegebenen Funktionen/Aktionen bereitstellen.
  • 1 ist ein Chip mit mehreren Prozessoren gemäß einer Ausführungsform der Erfindung. Auf Halbleiter-Wafern hergestellte Computerprozessoren können hunderte oder sogar tausende einzelne Prozessoren enthalten. Im vorliegenden Gebrauch beinhaltet ein „Prozessor” eine oder mehrere Ausführungseinheiten mit mindestens einem Cachespeicher. Somit kann bei einem Prozessor mit mehreren Prozessorkernen jeder Prozessorkern als Einzelprozessor angesehen werden, wenn er mindestens eine unabhängige Ausführungseinheit und mindestens eine eigene Cachespeicher-Ebene enthält. Der Chip 100 enthält vier Einzelprozessoren 110A bis 110D. Bei diesen kann es sich um separate Prozessoren oder Kerne für einen einzelnen Mehrkernprozessor handeln. Jeder Prozessor 110A bis 110D weist eine oder mehrere Pipelines auf, die üblicherweise aus zwei oder mehr Ausführungsstufen bestehen. Im Allgemeinen werden die Pipelines zum Ausführen eines oder mehrerer Threads 120A bis 120D verwendet. Zum Beispiel kann ein Multithread-Prozessor eine einzige Pipeline zum gleichzeitigen Ausführen mehrerer Threads verwenden, damit, wenn ein Thread zum Beispiel wegen eines fehlgeschlagenen Cachespeicher-Zugriffs blockiert wird, ein anderer Thread in der Pipeline ausgeführt werden kann, während der Thread darauf wartet, dass Daten vom Speicher abgerufen werden. Gemäß einer Ausführungsform greifen die Threads 120 auf denselben in dem Hauptspeicher oder einem anderen Speicher gespeicherten Datensatz zu.
  • Die Cachespeicher 125A bis 125D können eine einzelne Ebene des Cachespeichers oder einer Cachespeicher-Hierarchie darstellen – z. B. einen L1-Cachespeicher, L2-Cachespeicher, L3-Cachespeicher usw. Gemäß einer Ausführungsform befindet sich mindestens einer der Cachespeicher 125 in einem Bereich des Chips 100, der für den Prozessor reserviert ist – z. B. befindet sich der L1-Cachespeicher innerhalb der geometrischen Grenzen des Prozessors 110 auf dem Chip 100 – während sich andere Cachespeicher 125 anderswo auf dem Chip 100 befinden können.
  • Gemäß einer Ausführungsform kann auf mindestens eine Ebene des Cachespeichers 125 nur durch einen Prozessor 110 geschrieben werden, während auf andere Ebenen von Cachespeichern 125 durch mehrere Prozessoren 110 geschrieben werden kann. Zum Beispiel kann im Chip 100 jeder Prozessor 110A bis 110D eigene L1-Cachespeicher aufweisen, auf die nur der Prozessor schreiben kann, mit dem er verbunden ist, jedoch können zwei oder mehr Prozessoren 110 auf die L2-Cachespeicher schreiben und von diesen lesen. Darüber hinaus können die Prozessoren 110A und 110B gleichermaßen Zugriff auf ein und denselben kohärenten L2-Cachespeicher haben, während sämtliche Prozessoren 110A bis 110D gleichermaßen Zugriff auf ein und denselben L3-Cachespeicher haben. Für Prozessoren, die Threads ausführen, die auf denselben Datensatz zugreifen, kann das gemeinsame Nutzen von Ebenen eines kohärenten Cachespeichers von Vorteil sein, da ohne Nachteil für die Latenzzeit des Systems Chip-Fläche eingespart werden kann.
  • 2 ist ein Ablaufplan für das Zugreifen auf einen L1-Cachespeicher in einem benachbarten Prozessor gemäß einer Ausführungsform der Erfindung. Obwohl der L1-Cachespeicher (oder jeder andere Cachespeicher) jedem Prozessor ausschließlich vorbehalten sein kann, sodass andere Prozessoren keine Daten in den Cachespeicher schreiben können, kann der Chip 100 einen Datenpfad (d. h. eine oder mehrere abgeschiedene Leitungsbahnen) für einen benachbarten Prozessor bereitstellen, um Daten von dem L1-Cachespeicher eines benachbarten Prozessors zu lesen.
  • 3 ist die Ansicht einer Systemarchitektur einer Vielzahl von Prozessoren gemäß einer Ausführungsform der Erfindung, die gleichermaßen Zugriff auf einen L1-Cachespeicher haben. Ein Verfahren 200 zum Zugreifen auf den L1-Cachespeicher eines benachbarten Prozessors wird in 2 gezeigt.
  • Gemäß einer Ausführungsform wurde der Prozessor 301 so hergestellt, dass er sich auf demselben Halbleiter-Chip 100 wie der Prozessor 350 befindet. Die gestrichelte Linie zeigt die Trennung zwischen den Hardwareelementen, die sich innerhalb der beiden getrennten Prozessoren 301, 350 befinden. Jeder Prozessor 301, 350 beinhaltet eine Pipeline, die aus einer Vielzahl von Ausführungsstufen 306A bis 306F und 356A bis 356F besteht. Jede Ausführungsstufe 306, 356 kann ein Abrufen, ein Decodieren, ein Ausführen, einen Speicherzugriff, ein Zurückschreiben usw. einer Anweisung darstellen und eine beliebige Anzahl von Stufen beinhalten. Bei den Pipelines kann es sich um eine beliebige Art von Pipeline handeln, zum Beispiel um eine Festkomma-, eine Gleitkomma- oder eine Lade/Speicher-Pipeline handeln. Außerdem können die Prozessoren 301, 350 eine beliebige Anzahl von Pipelines beinhalten, die unterschiedlicher Art sein können. Die gezeigten Pipelines stellen vereinfachte Versionen einer einzelnen Pipeline dar, jedoch sind die Ausführungsformen der Erfindung nicht darauf beschränkt.
  • In Schritt 205 von Verfahren 200 erfordert die aktuelle Anweisung, die gerade in der Pipeline des Prozessors 301 ausgeführt wird, ein Abrufen von Daten vom Speicher, um die mit der Anweisung verbundene Operation auszuführen. Im vorliegenden Zusammenhang sind unter dem Begriff „Speicher” sowohl der auf dem Prozessor-Chip angeordnete Hauptspeicher (z. B. der RAM) als auch der Cachespeicher zu verstehen, der sich auf dem oder außerhalb des Prozessor-Chips befinden kann. Zum Beispiel kann es sich bei der Anweisung um eine Ladeanweisung handeln, die verlangt, dass die einer bestimmten Speicheradresse entsprechenden Daten in eines der Register 302 geladen werden. Auf diese Anweisung kann eine Additionsanweisung folgen, die dann die in zwei der Register 302 gespeicherten Daten miteinander addiert. Somit ermittelt die Pipeline in den Ausführungsstufen 306C bis 306F, ob die Daten in dem L1-Cachespeicher gespeichert sind, der dem Prozessor 301 zugehörig ist. Wenn dies der Fall ist, werden die Daten dann von dem L1-Cachespeicher abgerufen, auf den Umgehungsbus 336 gegeben und in der Ausführungsstufe 306A in die Pipeline eingefügt. Die Umgehungssteuereinheit 304 und die Umgehung und die Operanden-Multiplexeinheit 308 ermöglichen dem Prozessor 301 ein direktes Einfügen der abgerufenen Daten in die Pipeline, wo die Daten benötigt werden, ohne die Daten zuerst in den Registern 302 zu speichern. Die Operanden-Ausführungseinheit 310 (z. B. eine ALU oder eine Multiplizier/Dividier-Einheit) kann dann die von dem L1-Cachespeicher abgerufenen Daten mit den in dem anderen Register 302 gespeicherten Daten addieren.
  • In Schritt 210 ermittelt der Prozessor 301, ob die angeforderten Daten in dem L1-Cachespeicher gespeichert sind. Gemäß einer Ausführungsform beinhaltet jeder Prozessor 301, 350 ein lokales Cachespeicher-Verzeichnis 314, 364, das einen (nicht gezeigten) Index der in dem L1-Cachespeicher gespeicherten Daten enthält. Insbesondere beinhaltet das lokale Cachespeicher-Verzeichnis 314, 364 die Adressen der verschiedenen in dem L1-Cachespeicher gespeicherten Speicherseiten. Da der L1-Cachespeicher gemäß der Ersetzungsvorschrift Speicherseiten entfernt und ersetzt, aktualisieren die Prozessoren 301, 350 die lokalen Cachespeicher-Verzeichnisse 314, 364. Die hierin offenbarten Ausführungsformen sind auf keine bestimmte Ersetzungsvorschrift beschränkt. Wenn Änderungen an den in dem L1-Cachespeicher gespeicherten Daten vorgenommen werden, die in den Hauptspeicher geschrieben werden müssen, ist die hierin offenbarte Ausführungsform ebenso auf keine bestimmte Schreibvorschrift beschränkt, z. B. Durchschreiben, Zurückschreiben oder Zurückkopieren.
  • Unter Verwendung der Adresse der angeforderten Daten kann der Prozessor 301 das lokale Cachespeicher-Verzeichnis 314 durchsuchen, um zu ermitteln, ob sich die entsprechende(n) Seite oder Seiten gerade in dem L1-Cachespeicher befinden. Wenn dies der Fall ist, liegt ein Cachespeicher-Treffer vor. Wenn dies nicht der Fall ist, liegt ein Cachespeicher-Fehltreffer vor, und der Prozessor 301 muss anderswo nach den Daten suchen.
  • Gemäß einer weiteren Ausführungsform kann die Pipeline der Prozessoren 301, 350 möglicherweise keine separate Hardwareeinheit beinhalten, die als lokales Cachespeicher-Verzeichnis 314, 364 dient, sondern stattdessen den Index direkt in den L1-Cachespeicher einfügen, um dort nach den Daten zu suchen.
  • Nicht gezeigt ist, dass typische Pipelines auch Adressumsetzungseinheiten zum Umsetzen von virtuellen Speicheradressen in physische Speicheradressen und umgekehrt beinhalten. Diese Umsetzung kann vor oder gleichzeitig mit dem Indexeintrag in das lokale Cachespeicher-Verzeichnis 314 erfolgen. Diese Funktion wird jedoch zur besseren Verdeutlichung nicht gezeigt.
  • Wenn das Durchsuchen des Index im lokalen Cachespeicher-Verzeichnis 314 zu einem Cachespeicher-Treffer führt, verwendet der Prozessor in Schritt 215 die Cachespeicher-Ladeeinheit 318, um die Daten von dem L1-Cachespeicher abzurufen. In der Ausführungsstufe 306E werden die abgerufenen Daten durch die Abrufeinheit 322 zu einem erwarteten Format oder einer Ausrichtung verarbeitet und dann in den Umgehungsbus 336 gegeben, um sie wie oben erörtert an eine frühere Ausführungsstufe in der Pipeline zu senden.
  • Wenn die Daten in Schritt 220 nicht in dem L1-Cachespeicher gefunden werden, kann der Prozessor 301 das benachbarte Cachespeicher-Verzeichnis 316 durchsuchen, um zu ermitteln, ob der L1-Cachespeicher eines benachbarten Prozessors – d. h. des Prozessors 350 – die Daten enthält. Bei einem typischen Prozessor führt ein Cachespeicher-Fehltreffer für den L1-Cachespeicher dazu, dass sich der Prozessor durch den Cachespeicher (und zuletzt durch den Hauptspeicher oder die Datenspeicher) nach oben durcharbeitet, um die Daten zu finden. In Datenverarbeitungsumgebungen, bei denen erwartet wird, dass benachbarte Prozessoren Threads aufweisen, die auf denselben Datensatz zugreifen, kann diese Tatsache jedoch dazu genutzt werden, um die Größe des L1-Cachespeichers für die Prozessoren zu vergrößern. Insbesondere kann eine benachbarte Cachespeicher-Verzeichnis-Hardwareeinheit 316 einem oder beiden Prozessoren 301, 350 zugeordnet werden. Da das Verzeichnis 316 lediglich einen Index dessen bereitzustellen braucht, was im Augenblick in dem L1-Cachespeicher des benachbarten Prozessors gespeichert ist, kann dieses physisch wesentlich kleiner sein als zur Vergrößerung des L1-Cachespeichers erforderlich wäre.
  • Der hierin gebrauchte Begriff „benachbart” betrifft zwei Prozessoren, die sich zumindest auf demselben Halbleiter-Chip 100 befinden. Darüber hinaus kann es sich bei den beiden Prozessoren um zwei Kerne ein und desselben Mehrkernprozessors handeln. Außerdem können die benachbarten Prozessoren so hergestellt worden sein, dass sie zueinander spiegelbildlich sind. Das heißt, dass der Aufbau des Prozessors 301 zu dem Aufbau des Prozessors 350 spiegelbildlich ist. Dadurch werden diverse Hardwareeinheiten in nächster Nähe des benachbarten Prozessors angeordnet, um den Zugriff auf die Funktionseinheiten des benachbarten Prozessors zu erleichtern. Insbesondere werden die Auswahleinheiten 334 und 384 sowie die benachbarten Warteschlangen 332, 382 (deren Funktionen im Folgenden erörtert werden) in der Nähe der betreffenden Prozessoren angeordnet. Dabei ist jedoch zu beachten, dass, obwohl die Lage der Funktionseinheiten der beiden Prozessoren 301, 350 im Wesentlichen spiegelbildlich zueinander sein kann, die Daten-Busse/Pfade sich an unterschiedlichen Stellen befinden können, um das Übertragen der Daten zwischen den beiden Prozessoren 301, 350 zu erleichtern.
  • Gemäß einer Ausführungsform kann das benachbarte Cachespeicher-Verzeichnis 316 durch den Prozessor 350 aktualisiert werden. Das heißt, der Prozessor 350 kann unter Verwendung eines (nicht gezeigten) Datenpfades das benachbarte Cachespeicher-Verzeichnis 316 so aktualisieren, dass es dem lokalen Cachespeicher-Verzeichnis 364 gleicht. Genauer gesagt, der Prozessor 350 kann während jeder Aktualisierung seines eigenen lokalen Cachespeicher-Verzeichnisses 364 Aktualisierungsdaten durch eine Push-Operation übertragen. Auf diese Weise stellt das benachbarte Cachespeicher-Verzeichnis 316 einen Nur-Lese-Speicher für den Prozessor 301 dar, der mit dem Prozessor 350 zusammenwirkt, um sicherzustellen, dass die innerhalb des Verzeichnisses 316 gespeicherten Daten darstellen, was gerade in dem L1-Cachespeicher gespeichert ist, der dem Prozessor 350 zugehörig ist. Alternativ kann der Prozessor 301 zum Beispiel den Index des lokalen Cachespeicher-Verzeichnisses 364 des Prozessors 350 von Zeit zu Zeit in das benachbarte Cachespeicher-Verzeichnis 316 kopieren.
  • Gemäß einer Ausführungsform kann während der Ausführungsstufe 306D gleichzeitig auf das lokale Cachespeicher-Verzeichnis 314 und das benachbarte Cachespeicher-Verzeichnis 316 zugegriffen werden. Das heißt, der Prozessor 301 kann die Speicheradresse der angeforderten Daten zum gleichzeitigen Durchsuchen beider Verzeichnisse 314, 316 verwenden. Während der Ausführungsstufe 106E werden die sich ergebenden Kennungen (d. h. dafür, womit die Speicheradresse innerhalb der Verzeichnisse 314, 316 verglichen wurde) an die Kennungsvergleichseinheit 320 gesendet, um zu ermitteln, ob es zu einem Cachespeicher-Treffer oder ein Cachespeicher-Fehltreffer gekommen ist. Wenn die Speicheradresse in beiden Verzeichnissen 314, 316 gefunden wird (d. h. ein Cachespeicher-Treffer für beide Verzeichnisse), werden gemäß einer Ausführungsform die Daten von dem lokalen L1-Cachespeicher abgerufen. Wenn die angeforderten Daten sowohl im lokalen als auch im benachbarten L1-Cachespeicher gespeichert sind, können die Daten gemäß weiteren Ausführungsformen jedoch auch vom benachbarten L1-Cachespeicher abgerufen werden, wenn der lokale L1-Cachespeicher zum Beispiel gestört oder aktuell nicht verfügbar ist.
  • Zu beachten ist, dass 3 das gleichzeitige Zugreifen auf den Cachespeicher, unter Verwendung der Cachespeicher-Ladeeinheit 318, als auch auf das lokale Cachespeicher-Verzeichnis 314 veranschaulicht. Je nachdem, ob das lokale Cachespeicher-Verzeichnis 314 einen Cachespeicher-Treffer oder einen Cachespeicher-Fehltreffer zurückgibt, wird ermittelt, ob die unter Verwendung der Cachespeicher-Ladeeinheit 318 von dem Cachespeicher abgerufenen Daten weitergeleitet oder gelöscht werden. Bei anderen Pipelineanordnungen kann die Pipeline zwei weitere Zyklen lang warten, um unter Verwendung der Cachespeicher-Ladeeinheit 318 auf den Cachespeicher zuzugreifen, nachdem über das lokale Cachespeicher-Verzeichnis 314 festgestellt wurde, dass die Daten sich in dem L1-Cachespeicher befinden. Die erstere Technik kann das Leistungsvermögen steigern, die letztere hingegen Energie sparen. Ungeachtet dessen sind die hierin offenbarten Ausführungsformen nicht auf eine dieser Techniken beschränkt.
  • Gemäß einer Ausführungsform kann auf das benachbarte Cachespeicher-Verzeichnis 316 nur zugegriffen werden, wenn die Kennungsvergleichseinheit 320 einen Cachespeicher-Fehltreffer in dem lokalen Cachespeicher-Verzeichnis 314 mitteilt. Zum Beispiel kann ein Systemadministrator die Prozessoren 301, 350 so konfigurieren, dass sie in einen Energiesparmodus wechseln, in dem sie nicht gleichzeitig auf die Verzeichnisse 314, 316 zugreifen. Durch diesen Kompromiss kann zwar Strom gespart werden, jedoch wird die Latenzzeit verlängert. Zum Beispiel muss der Prozessor 301 bis zur Ausführungsstufe 106F möglicherweise warten, bevor er einen Cachespeicher-Fehltreffer in dem lokalen L1-Cachespeicher feststellt. Somit kann die Suche in dem benachbarten Cachespeicher-Verzeichnis 316 um ungefähr drei Taktzyklen verzögert werden. Außerdem kann der gemeinsame Zugriff auf die L1-Cachespeicher so konfiguriert werden, dass ein Benutzer-Administrator die Fähigkeit der Prozessoren 301, 350 zum Zugreifen auf den jeweils anderen L1-Cachespeicher vollständig deaktivieren kann.
  • Wenn die Kennungsvergleichseinheit 320 feststellt, dass keiner der beiden L1-Cachespeicher die Daten enthält, leitet in Schritt 225 die Cachespeicher-Fehltrefferlogikeinheit 324 die Anforderung an eine Warteschlange 330 des L2-Cachespeichers weiter. Diese Warteschlange 330 verwaltet den Zugriff auf einen L2-Cachespeicher. Der L2-Cachespeicher kann kohärent für eine Vielzahl von Prozessoren gehalten werden oder nur der Prozessor 301 kann darauf zugreifen. Wenn sich die der Speicheradresse der angeforderten Daten entsprechende Speicherseite nicht in dem L2-Cachespeicher befindet, kann die Anforderung zu höheren Ebenen in der Cachespeicher-Hierarchie oder zum Hauptspeicher des Computersystems übergehen. Wenn die angeforderten Daten jedoch in dem L2-Cachespeicher gefunden werden, können die Daten auf den Umgehungsbus 336 gegeben und zur Verarbeitung an die zutreffende Ausführungsstufe weitergeleitet werden.
  • Wenn das benachbarte Cacheverzeichnis 316 einen Cachespeicher-Treffer liefert, das lokale Cachespeicherverzeichnis 314 jedoch einen Cachespeicher-Fehltreffer angibt, kann der Prozessor in Schritt 230 eine Anforderung in eine Pipeline des benachbarten Prozessors 350 einfügen, um die Daten aus dessen L1-Cachespeicher abzurufen. 3 zeigt, dass die benachbarte Cachespeicher-Treffereinheit 326 die Anforderung an die Auswahleinheit 334 weiterleitet. Die Auswahleinheit 334 kann festlegen, dass die Anforderung nicht sofort in die Pipeline des Prozessors 350 eingefügt werden soll. Wenn dies der Fall ist, kann die Anforderung zum späteren Eingeben in der benachbarten Warteschlange 332 gespeichert werden. Eine ausführlichere Beschreibung der Auswahleinheiten 334, 384 ist der Erörterung der folgenden 4 vorbehalten.
  • Die Auswahleinheit 334 kann den Multiplexer 362 dazu verwenden, die Anforderung in die Pipeline des Prozessors 350 einzufügen. Der Multiplexer 362 enthält zwei Eingänge: einen zum Empfangen von Anforderungen vom Prozessor 301, um Daten von dem L1-Cachespeicher abzurufen, und einen weiteren Eingang zum Empfangen von Anforderungen von seiner eigenen Pipeline. Die Auswahleinheit 334 kann die Auswahlleitung des Multiplexers 362 steuern, um zu ermitteln, ob eine Anforderung vom Prozessor 301 eingefügt werden soll. Nicht gezeigt ist, dass die Auswahleinheit 334 eine weitere Logik innerhalb der Ausführungsstufen 356A bis 356F steuern kann, um sicherzustellen, dass die eingefügte Anforderung die aktuell in der Pipeline befindlichen Anweisungen und Daten nicht beschädigt. Zum Beispiel kann zum Einfügen der Anforderung das Einfügen einer Nulloperationsanweisung (NOP) oder das Anhalten der oberen Ausführungsstufen 356A bis 356C erforderlich sein, damit die Daten nicht verloren gehen.
  • Anstatt die Anforderung in die Pipeline des benachbarten Prozessors einzufügen, kann gemäß einer Ausführungsform der Prozessor 301 die erforderliche Hardware und Datenpfade zum direkten Abrufen der Daten vom L1-Cachespeicher des Prozessors 350 beinhalten. Durch das Einfügen der Anforderung in die Pipeline des benachbarten Prozessors anstelle des direkten Abrufens der Daten von dem benachbarten L1-Cachespeicher kann jedoch Platz auf dem Chip 100 eingespart werden, da gemäß der ersteren Lösung keine zusätzlichen redundanten Hardwareeinheiten für den Prozessor 301 benötigt werden, deren Funktionen bereits durch die im Prozessor 350 befindlichen Hardwareeinheiten ausgeführt werden können. Somit ist der Prozessor 301 durch das Hinzufügen des benachbarten Cachespeicher-Verzeichnisses 316 und der Auswahleinheit 334 zum Prozessor 301 und des Multiplexers 362 (und der zugehörigen Datenpfade) zum Prozessor 350 in der Lage, mit nur wenigen zusätzlichen Hardwareeinheiten auf einen benachbarten L1-Cachespeicher zuzugreifen, indem viele der bereits dem Prozessor 350 zugehörigen Einheiten genutzt werden.
  • Sobald die Auswahleinheit 334 die Daten in die Pipeline des Prozessors 350 über den Multiplexer 362 einfügt, wird in Schritt 235 die Speicheradresse in der Anforderung an die Cachespeicher-Ladeeinheit 368 gesendet, die das Abrufen der entsprechenden Speicherseiten von dem L1-Cachespeicher des Prozessors 350 veranlasst. Die Abrufeinheit 372 verarbeitet die Daten zu dem erwarteten Format oder der erwarteten Ausrichtung, und der Prozessor 350 leitet die Daten dann zu dem Umgehungsbus 336 des Prozessors 301 weiter. Anschließend fügt der Bus dann die Daten in die eigene Pipeline des Prozessors 301 ein, als wären die Daten von dem im Prozessor 301 befindlichen L1-Cachespeicher abgerufen worden.
  • Dasselbe Verfahren 200 kann für den Prozessor 350 durchgeführt werden, um unter Verwendung der in 2 gezeigten spiegelbildlichen Funktionseinheiten und Datenpfade auf die in dem L1-Cachespeicher des Prozessors 301 zuzugreifen.
  • Für ein Abrufen von Daten von einem lokalen L1-Cachespeicher sind üblicherweise ungefähr vier Taktzyklen erforderlich. Ein Abrufen von Daten von einem lokalen L2-Cachespeicher hingegen erfordert 20 bis 50 Taktzyklen. Wenn gleichzeitig auf das lokale Cachespeicher-Verzeichnis 314 und das benachbarte Cachespeicher-Verzeichnis 316 zugegriffen wird, können die Daten innerhalb von ungefähr acht Taktzyklen vom L1-Cachespeicher eines benachbarten Prozessors abgerufen werden. Für das sequenzielle Abrufen der Verzeichnisse können ungefähr 12 bis 15 Taktzyklen benötigt werden. Das zeigt, dass durch Bereitstellen des Zugriffs auf den L1-Cachespeicher eines Nachbars die Größe der L1-Cachespeicher praktisch verdoppelt wird und die Latenzzeit kürzer wird als beim Zugreifen auf einen L2-Cachespeicher, ohne den Prozessoren mehr als drei oder vier weitere Funktionseinheiten hinzuzufügen.
  • Gemäß einer Ausführungsform können die Prozessoren 301, 350 nur vom L1-Cachespeicher eines benachbarten Prozessors lesen, sodass die von einem benachbarten Prozessor empfangenen Anforderungen keinen Einfluss darauf haben, welche Daten entfernt und dann in dem lokalen L1-Cachespeicher gespeichert werden. Zum Beispiel handelt es sich bei dem L1-Cachespeicher des Prozessors 350 um einen Nur-Lese-Speicher für den Prozessor 301, sodass dieser Daten weder direkt noch indirekt in dem L1-Cachespeicher speichern kann. Das heißt, eine Ersetzungsvorschrift für den L1-Cachespeicher des Prozessors 350 kann Anforderungen nach Daten nur von Threads berücksichtigen, die auf der lokalen Pipeline ausgeführt werden, wenn festgelegt wird, ob Daten in dem lokalen L1-Cachespeicher ungültig gemacht und entfernt werden sollen. Zum Beispiel berücksichtigen viele Ersetzungsvorschriften, welche Daten am längsten nicht verwendet wurden (least recently used, LRU), wenn festgelegt wird, welche Daten nach einem Cachespeicher-Fehltreffer durch neue Daten ersetzt werden sollen. Das Berücksichtigen von Daten, auf die der benachbarte Prozessor zuletzt zugegriffen hat, kann für die Threads ohne Bedeutung sein, die in der lokalen Pipeline ausgeführt werden. Somit kann beim Ermitteln der LRU das Berücksichtigen der Zugriffe durch den benachbarten Prozessor dazu führen, dass Daten entfernt werden, auf die möglicherweise Threads zugreifen, die in der lokalen Pipeline ausgeführt werden. Somit können bei dieser Ausführungsform die Zugriffe von dem benachbarten Prozessor (z. B. dem Prozessor 301) außer Acht gelassen und dadurch der Prozessor 301 daran gehindert werden, Daten indirekt in den L1-Cachespeicher zu schreiben.
  • Wenn zum Beispiel der L1-Cachespeicher des Prozessors 350 Speicherseiten enthält, auf die der Prozessor 301 häufig zugreift, die auf dem Prozessor 350 ausgeführten Threads hingegen selten zugreifen, kann die Ersetzungsvorschrift für den Cachespeicher durch Ignorieren der Zugriffe durch den Prozessor 301 diese Speicherseiten entfernen. Das kann tatsächlich zu höherer Leistungsfähigkeit führen, da der Prozessor 301 nunmehr diese Speicherseiten in seinen lokalen L1-Cachespeicher aufnehmen kann, auf die er noch schneller zugreifen kann als auf den L1-Cachespeicher des Prozessors 350.
  • Natürlich kann der Systemadministrator das System so konfigurieren, dass die Ersetzungsvorschrift beim Ermitteln der LRU-Daten die Zugriffe durch benachbarte Prozessoren nicht berücksichtigt. Dem Administrator kann zum Beispiel bekannt sein, dass die auf beiden Prozessoren ausgeführten Threads dieselben Daten nutzen und somit die L1-Cachespeicher möglicherweise gemeinsam nutzen wollen, um (1) Cachespeicher-Fehltreffer zu verhindern und (2) das ständige Austauschen von Speicherseiten in dem L1-Cachespeicher gegen Speicherseiten, die in der Cachespeicher-Hierarchie gespeichert sind, zu vermeiden.
  • Gemäß einer Ausführungsform können mehr als zwei Prozessoren über Datenleitungen miteinander verbunden sein, um die Größe der L1-Cachespeicher wirksam zu erhöhen. Zum Beispiel kann der Prozessor 301 ein zweites benachbartes Cachespeicherverzeichnis beinhalten, das einen Index für einen L1-Cachespeicher enthält, der sich auf einem dritten Prozessor befindet. Der dritte Prozessor kann unterhalb des Prozessors 301 angeordnet sein und ein Spiegelbild in Bezug auf eine horizontale Linie darstellen, die die beiden Prozessoren voneinander trennt. Darüber hinaus kann die Auswahleinheit 334 oder die benachbarte Cachespeicher-Treffereinheit 326 so konfiguriert sein, dass sie ermittelt, welcher der benachbarten Prozessoren die Daten aufweist, und die Anforderung an den zutreffenden Prozessor weiterleitet.
  • 4 ist ein Ablaufplan gemäß einer Ausführungsform der Erfindung zum Ermitteln, wann eine Anforderung zum Abrufen von Daten von einem L1-Cachespeicher eines benachbarten Prozessors eingefügt werden soll. Insbesondere veranschaulicht 4 ein Verfahren 400 zum Einfügen einer Anforderung nach Daten in die Pipeline eines benachbarten Prozessors – d. h. Schritt 230 von 2. Wie oben erwähnt kann die Auswahleinheit 334 eine Rolle spielen, wenn eine Anforderung in die Pipeline des Prozessors 350 eingefügt werden soll. Vorzugsweise erfolgt dies in der Weise, dass die dem Prozessor 350 zugehörigen Anweisungen und Datenanforderungen nicht unterbrochen werden, obwohl das Warten auf eine Periode ohne Unterbrechung der Pipeline in einigen Fällen möglicherweise nicht wünschenswert ist.
  • In Schritt 405 verwendet die Auswahleinheit 334 vordefinierte Kriterien zum Festlegen, wann eine Anforderung in die Pipeline des Prozessors 350 eingefügt werden soll. Zu diesen Kriterien können das Warten auf den Leerlauf oder eine Unterbrechung der Pipeline, das Festlegen einer Priorität zwischen den Prozessoren oder das Einhalten eines vorgegebenen Verhältnisses gehören.
  • Die Auswahleinheit 334 gewährleistet, dass durch das Einfügen der Anforderung keine Anweisungen und Anforderungen beeinträchtigt werden, die bereits in den Ausführungsstufen 356A bis 356F ausgeführt werden. Während der Prozessor mit der Ausführung beschäftigt ist, kann seine Pipeline eine Lücke aufweisen, während der in der Ausführungsstufe gerade keine Daten verschoben oder bearbeitet werden (d. h. während einer NOP oder einer Unterbrechung). Durch das Ersetzen einer Lücke in der Pipeline durch eine Anforderung zum Abrufen von Daten von dem L1-Cachespeicher werden die anderen Stufen in der Pipeline nicht betroffen – z. B. braucht die Auswahleinheit 334 keine früheren Stufen zu unterbrechen, um sicherzustellen, dass keine Daten verloren gegangen sind. Somit kann die Auswahleinheit 334 gemäß einer Ausführungsform warten, bis eine Lücke in der Pipeline des benachbarten Prozessors die Ausführungsstufen 356C erreicht, bevor eine Anforderung von der benachbarten Warteschlange 332 eingefügt wird.
  • Zusätzlich oder alternativ können den Prozessoren 301, 350 auf der Grundlage der durch sie ausgeführten Threads Prioritäten zugewiesen werden. Wenn der Systemadministrator zum Beispiel den Prozessor 301 zum Ausführen der zeitkritischsten Threads ausgewählt hat, kann dem Prozessor 301 eine höhere Priorität zugewiesen werden als dem Prozessor 350. Diese Priorität kann den Auswahleinheiten 334, 384 bekanntgegeben werden. Wenn die Auswahleinheit 334 Anforderungen zum Abrufen von Daten von dem L1-Cachespeicher des Prozessors 350 empfängt, kann sie die betreffende Anforderung sogar dann sofort in die Pipeline einfügen, wenn diese das Unterbrechen einer oder mehrerer der vorhergehenden Stufen 356A bis 356B erfordert. Dadurch wird sichergestellt, dass der Prozessor 301 die Daten mit der kürzestmöglichen Latenzzeit von dem benachbarten L1-Cachespeicher empfängt. Andererseits kann die Auswahleinheit 384 eine Anforderung nur dann in die Pipeline des Prozessors 301 einfügen, wenn sie eine Lücke in der Pipeline findet. Dadurch wird sichergestellt, dass der Prozessor 301 vom Prozessor 350 unbeeinflusst bleibt.
  • Gemäß einer weiteren Ausführungsform kann die Auswahleinheit 334 ein Verhältnis (ratio) zum Festlegen verwenden, wann eine Anforderung in die benachbarte Pipeline eingefügt werden soll. Dieses Verhältnis kann auf der Priorität der Prozessoren beruhen, der Auswahleinheit 334 durch den Systemadministrator bekanntgegeben oder in einem Parameter eines Jobs definiert werden, der dem Computersystem übergeben wurde. Das Verhältnis kann zum Beispiel eine höchstmögliche Anzahl benachbarter Anforderungen, die auf der Grundlage von Taktzyklen eingefügt werden können – d. h. eine eingefügte Anforderung nach jeweils vier Taktzyklen – oder eine höchstmögliche Anzahl benachbarter Anforderungen definieren, die auf jeden Satz eigener Anforderungen eingefügt werden können – d. h. eine Anforderung vom Prozessor 301 nach jeweils fünf eigenen Anforderungen vom Prozessor 350. Das letztere Beispiel ignoriert Lücken oder Unterbrechungen innerhalb der Pipeline. Die Auswahleinheit 334 legt unter Verwendung des Verhältnisses fest, wann sie eine Anforderung in die Pipeline des Prozessors 350 einfügen soll.
  • Außerdem können in manchen Datenverarbeitungssystemen mit mehreren Prozessoren auf einem Chip ein oder mehrere Prozessoren in der Weise außer Betrieb genommen werden, dass eine oder mehrere Ausführungsstufen der Pipeline deaktiviert werden. Selbst wenn ein Teil der Pipeline des Prozessors 350 deaktiviert ist, kann der Prozessor 301 den gezeigten Teil (d. h. die Ausführungsstufen 356C bis 356F) nutzen, um Daten vom L1-Cachespeicher des Prozessors 350 abzurufen.
  • In Schritt 410 ermittelt die Auswahleinheit 334, ob das oder die Kriterien erfüllt sind. Bei den Kriterien kann es sich um eines der oben erörterten Kriterien oder eine Kombination derselben handeln. Darüber hinaus ist diese Erfindung nicht allein auf die oben erörterten Kriterien beschränkt.
  • Die benachbarte Warteschlange 332 kann nach dem FIFO-Prinzip (First-in/First-out) organisiert sein, wobei die Auswahleinheit 334 die Kriterien während jedes Taktzyklus anwendet, um zu ermitteln, ob die Anforderung am Anfang der Warteschlange 332 eingefügt werden soll.
  • Nachdem festgestellt wurde, dass die Kriterien erfüllt sind, kann die Auswahleinheit 334 in Schritt 415 die Auswahlleitung des Multiplexers 362 (sowie alle anderen erforderlichen Leitungen) ansteuern, um die Anforderung in die Pipeline des Prozessors 350 einzufügen. Dann wird die Anforderung wie oben erörtert wie eine eigene Anforderung behandelt, die von einer im Prozessor 350 ausgeführten Anweisung stammt.
  • Sind die Kriterien jedoch nicht erfüllt, fährt die Auswahleinheit 334 in Schritt 420 fort, die Anforderung in der benachbarten Warteschlange 332 zu speichern. Die Auswahleinheit 334 kann die Kriterien während jedes Taktzyklus neu bewerten oder eine vorgegebene Anzahl von Zyklen abwarten, bevor sie erneut prüft, ob die Kriterien erfüllt sind.
  • Gemäß einer Ausführungsform kann die benachbarte Warteschlange 332 einen Taktzykluszähler beinhalten, um aufzuzeichnen, wie lange jede Anforderung in der Warteschlange 332 gespeichert worden ist. Die Auswahleinheit 334 kann den Taktzykluszähler dazu verwenden zu ermitteln, ob sie die Anforderung weiterhin in der benachbarten Warteschlange 332 speichern oder die Anforderung an die L2-Warteschlange 330 weiterleiten soll. Gemäß einer Ausführungsform kann der Prozessor 301 einen (nicht gezeigten) Datenpfad beinhalten, der die Auswahleinheit 334 mit der L2-Warteschlange 330 verbindet. Wenn eine Anforderung für eine vordefinierte Anzahl von Taktzyklen in der benachbarten Warteschlange 332 gespeichert wird, kann die Auswahleinheit 334 die Anforderung an die L2-Warteschlange 330 weiterleiten, anstatt darauf zu warten, bis die Kriterien erfüllt sind, sodass die Anforderung in die Pipeline des Prozessors 350 eingefügt werden kann. Zum Beispiel kann jede Anforderung, die als zehn Taktzyklen lang in der benachbarten Warteschlange 332 gespeichert ist, an die L2-Warteschlange weitergeleitet werden, um die Daten von höheren Ebenen der Cachespeicher-Hierarchie abzurufen.
  • Außerdem kann die Auswahleinheit 334 je nach der Speicherposition der Anforderungen innerhalb der benachbarten Warteschlange 332 einen unterschiedlichen Schwellenwert für die Taktzyklen verwenden. Zum Beispiel kann der Schwellenwert für eine Anforderung am Anfang der Warteschlange 332 höher, für die Anforderungen an unteren Positionen innerhalb der Warteschlange 332 hingegen niedriger sein. Dadurch kann verhindert werden, dass in einer Warteschlange 332 zum Stau kommt, insbesondere wenn die Auswahleinheit 334 so konfiguriert ist, dass sie eine Anforderung nur dann einfügen kann, wenn sich in der Pipeline des benachbarten Prozessors eine Lücke befindet.
  • Weiterhin kann die Auswahleinheit 334 eine höchstzulässige Anzahl von Anforderungen in der Warteschlange 332 festlegen, um einen Stau zu verhindern. Sobald die maximale Anzahl erreicht wird, kann die Auswahleinheit 334 empfangene Anforderungen automatisch an die L22-Warteschlange 330 weiterleiten.
  • Natürlich können die Kriterien zum Einfügen der Anforderungen wahlweise angewendet werden. Gemäß einer Ausführungsform können die Auswahleinheiten 334, 384 die Anforderung sofort in eine benachbarte Pipeline einfügen, nachdem sie empfangen wurde.
  • Ein beispielhaftes Datenverarbeitungssystem
  • Die 5A bis 5B sind Blockschaubilder, die ein vernetztes System gemäß Ausführungsformen der Erfindung zum Ausführen von Jobs veranschaulichen, die von einem Client in einem Mehrknotensystem übergeben wurden. 5A zeigt ein Blockschaubild, das ein vernetztes System zum Ausführen von Jobs veranschaulicht, die von einem Client in einem Mehrknotensystem übergeben wurden. Bei der dargestellten Ausführungsform beinhaltet das System 500 ein Client-System 520 und ein Mehrknotensystem 570, die durch ein Netzwerk 550 miteinander verbunden sind. Allgemein übergibt das Client-System 520 Jobs über das Netzwerk 550 an ein Dateisystem, das auf dem Mehrknotensystem 570 ausgeführt wird. Ungeachtet dessen kann jede anfordernde Einheit Jobs an das Mehrknotensystem 570 senden. Zum Beispiel können Jobs durch Softwareanwendungen (beispielsweise eine auf dem Client-System 520 ausgeführte Anweisung), Betriebssysteme, Teilsysteme, andere Mehrknotensysteme 570 und, auf der obersten Ebene, durch den Benutzer übergeben werden. Der Begriff „Job” bezeichnet einen Satz von Befehlen zum Anfordern von Ressourcen von dem Mehrknotensystem 570 und zum Nutzen dieser Ressourcen. Es kann jede beliebige objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder Ähnliche eingesetzt werden, um den Satz von Befehlen zu formatieren. Außerdem kann ein Mehrknotensystem 570 eine spezielle Programmiersprache einsetzen oder eine bestimmte Vorlage bereitstellen. Diese Jobs können vordefiniert (d. h. als Teil einer Anweisung fest codiert) sein oder als Reaktion auf eine Eingabe (z. B. eine Benutzereingabe) erzeugt werden. Nach einem Empfangen des Jobs führt das Mehrknotensystem 570 die Anforderung aus und gibt dann das Ergebnis zurück.
  • 5B ist ein Blockschaubild eines vernetzten Datenverarbeitungssystems gemäß einer Ausführungsform der Erfindung, das zum Ausführen von Jobs konfiguriert ist, die von einem Client in einem Mehrknotensystem übergeben wurden. Es zeigt, dass das System 500 ein Client-System 520 und ein Mehrknotensystem 570 enthält. Das Client-System 520 enthält einen Computerprozessor 522, Speichermedien 524, Speicher 528 und eine Netzschnittstelle 538. Bei dem Computerprozessor 522 kann es sich um einen beliebigen Prozessor handeln, der in der Lage ist, die hierin beschriebenen Funktionen auszuführen. Das Client-System 520 kann unter Verwendung der Netzschnittstelle 538 eine Verbindung zu dem Netzwerk 550 herstellen. Außerdem ist dem Fachmann klar, dass jedes Computersystem verwendet werden kann, das in der Lage ist, die hierin beschriebenen Funktionen auszuführen.
  • In der dargestellten Ausführungsform enthält der Speicher 528 ein Betriebssystem 530 und eine Client-Anweisung 532. Obwohl der Speicher 528 als einzelne Einheit gezeigt wird, kann der Speicher 528 eine oder mehrere Speichereinheiten beinhalten, die Speicherblöcke mit zugehörigen physischen Adressen aufweisen, beispielsweise einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen Flash-Speicher oder andere Arten flüchtiger und/oder permanenter Speicher. Die Client-Anweisung 532 ist im Allgemeinen in der Lage, Jobanforderungen zu erzeugen. Sobald die Client-Anweisung 532 einen Job erzeugt, kann dieser über das Netzwerk 550 zum Ausführen an das Dateisystem 572 übergeben werden. Bei dem Betriebssystem 530 kann es sich um ein beliebiges Betriebssystem handeln, das in der Lage ist, die hierin beschriebenen Funktionen auszuführen.
  • Das Mehrknotensystem 570 enthält ein Dateisystem 572 und mindestens einen Knoten 590. Jede Jobdatei 574 enthält notwendige Daten für die Knoten 590, um einen übergebenen Job fertigzustellen. Die Aktualisierungseinheit 582 führt ein Protokoll über die anstehenden, d. h. die durch einen Knoten 590 gerade ausgeführten Jobdateien. Die Netzschnittstelle 584 stellt eine Verbindung zu dem Netzwerk 550 her und empfängt die von dem Client-System 520 gesendeten Jobdateien 574. Außerdem ist dem Fachmann klar, dass ein beliebiges Computersystem verwendet werden kann, das in der Lage ist, die hierin beschriebenen Funktionen auszuführen.
  • Die Knoten 590 enthalten einen Computerprozessor 592 und einen Speicher 594. Bei dem Computerprozessor 522 kann es sich um einen beliebigen Prozessor handeln, der in der Lage ist, die hierin beschriebenen Funktionen auszuführen. Insbesondere kann es sich bei dem Computerprozessor 522 um eine Vielzahl von Prozessoren handeln, wie sie in 1 veranschaulicht sind. Alternativ kann es sich bei dem Computerprozessor 522 um einen Mehrkernprozessor mit einer Vielzahl von Prozessorkernen mit der Struktur handeln, die in den Prozessoren 110 von 1 gezeigt wird. Der Speicher 594 enthält ein Betriebssystem 598. Bei dem Betriebssystem 598 kann es sich um ein beliebiges Betriebssystem handeln, das in der Lage ist, die hierin beschriebenen Funktionen auszuführen. Der Speicher 594 kann sowohl den innerhalb des Prozessors 592 befindlichen Cachespeicher als auch eine oder mehrere Speichereinheiten beinhalten, die Speicherblöcke mit zugehörigen physischen Adressen aufweisen, beispielsweise einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen Flash-Speicher oder andere Arten von flüchtigen und/oder permanente Speichern.
  • 6 veranschaulicht einen 4×4×4-Ring (Torus) 601 von Datenverarbeitungsknoten 590, bei dem die inneren Knoten zur Verdeutlichung weggelassen wurden. Obwohl 6 einen 4×4×4-Ring mit 64 Knoten zeigt, ist klar, dass die tatsächliche Anzahl von Datenverarbeitungsknoten in einem Paralleldatenverarbeitungssystem üblicherweise wesentlich größer ist, zum Beispiel enthält ein Blue Gene/L-System 65.536 Datenverarbeitungsknoten. Jeder Datenverarbeitungsknoten in dem Kreisring 601 beinhaltet einen Satz von sechs Datenübertragungsverbindungen 605A bis 605F zwischen den Knoten, damit jeder Datenverarbeitungsknoten in dem Ring 601 Daten mit seinen sechs unmittelbar benachbarten Knoten, je zwei Knoten in den Koordinatendimensionen x, y und z, austauschen kann. Gemäß einer Ausführungsform kann das Paralleldatenverarbeitungssystem 570 ein für jeden in dem System 570 ausgeführten Job ein separates Ringnetzwerk einrichten. Alternativ können alle Datenverarbeitungsknoten zu einem Ring miteinander verbunden werden.
  • Der hierin gebrauchte Begriff „Ring” beinhaltet jedes regelmäßige Muster von Knoten und Datenübertragungspfaden zwischen den Knoten in mehr als einer Dimension, sodass jeder Knoten eine definierte Gruppe benachbarter Knoten aufweist und es für jeden einzelnen Knoten möglich ist, die Gruppe benachbarter Knoten dieses Knotens zu ermitteln. Unter einem „benachbarten Knoten” eines bestimmten Knotens ist jeder Knoten zu verstehen, der durch einen direkten Datenübertragungspfad zwischen den Knoten – d. h. einen Pfad, der durch keinen anderen Knoten verlaufen muss – mit dem bestimmten Knoten verbunden ist. Die Datenverarbeitungsknoten können in einem dreidimensionalen Ring 601 gemäß 6 miteinander verbunden sein, jedoch auch mit mehr oder weniger Dimensionen konfiguriert werden. Ferner ist es nicht erforderlich, dass die benachbarten Knoten für einen bestimmten Knoten die physisch nächsten Knoten des bestimmten Knotens sind, obwohl es im Allgemeinen wünschenswert ist, die Knoten soweit möglich auf diese Weise anzuordnen.
  • Gemäß einer Ausführungsform bilden die Datenverarbeitungsknoten in einer beliebigen Dimension x, y oder z einen Ring in dieser Dimension, da die Punkt-zu-Punkt-Datenübertragungsverbindungen logisch umlaufend angeordnet sind. Das wird zum Beispiel in 6 durch die Verbindungen 605D, 605E und 605F dargestellt, die von einem letzten Knoten in den Dimensionen x, y und z zu einem ersten Knoten umlaufen. Obwohl der Knoten 610 wie eine „Ecke” des Rings aussieht, verbinden somit die Knoten-zu-Knoten-Verbindungen 605A bis 605F den Knoten 610 mit den Knoten 611, 612 und 613 in den Dimensionen x, y und z des Rings 601.
  • Schussfolgerung
  • Paralleldatenverarbeitungsumgebungen, bei denen Threads, die in benachbarten Prozessoren ausgeführt werden, auf denselben Datensatz zugreifen können, können so entworfen und konfiguriert werden, dass sie eine oder mehrere Ebenen eines Cachespeichers gemeinsam nutzen. Bevor ein Prozessor eine Anforderung nach Daten nach einem Cachespeicher-Fehltreffer an eine höhere Ebene des Cachespeichers weiterleitet, kann der Prozessor ermitteln, ob die Daten in einem lokalen Cachespeicher eines benachbarten Prozessors gespeichert sind. Wenn dies der Fall ist, kann der Prozessor die Anforderung an den benachbarten Prozessor weiterleiten, um die Daten abzurufen. Da der Zugriff auf die Cachespeicher für die beiden Prozessoren gemeinsam erfolgt, nimmt die effektive Größe des Speichers zu. Das kann von insofern von Vorteil sein, als die Anzahl der Cachespeicher-Fehltreffer für jede Ebene des gemeinsam genutzten Cachespeichers verringert wird, ohne jeden einzelnen Cachespeicher auf dem Prozessor-Chip zu vergrößern.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und die Arbeitsweise möglicher Ausführungsarten des Systems, der Verfahren und Computerprogrammprodukte gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Demgemäß kann jeder Block in dem Ablaufplan oder den Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. Zu beachten ist auch, dass die in dem Block angegebenen Funktionen bei einigen alternativen Ausführungsformen in einer von den Figuren abweichenden Reihenfolge auftreten können. Zum Beispiel können zwei nacheinander gezeigte Blöcke je nach beabsichtigter Funktionalität in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können mitunter in der umgekehrten Reihenfolge ausgeführt werden. Ferner wird darauf hingewiesen, dass jeder Block in den Blockschaubildern und/oder dem Ablaufplan und Kombinationen von Blöcken in den Blockschaubildern und/oder dem Ablaufplan durch speziell zugeschnittene Hardwaresysteme, die die angegebenen Funktionen oder Aktionen ausführen, oder durch Kombinationen von speziell zugeschnittener Hardware und Computeranweisungen umgesetzt werden können.
  • Während die obigen Ausführungen Ausführungsformen der vorliegenden Erfindung betreffen, können andere und weitere Ausführungsformen der Erfindung angegeben werden, ohne von deren grundlegendem Schutzumfang abzuweichen, wobei deren Schutzumfang durch die folgenden Ansprüche bestimmt wird.

Claims (12)

  1. Verfahren, das aufweist: Durchsuchen eines ersten Verzeichnisses, das sich innerhalb eines ersten Prozessors befindet, um zu ermitteln, ob ein dem ersten Prozessor zugehöriger erster Cachespeicher Daten enthält, die zum Ausführen einer durch den ersten Prozessor ausgeführten Anweisung erforderlich sind, wobei das erste Verzeichnis einen Index der in dem ersten Cachespeicher gespeicherten Daten aufweist; Durchsuchen eines zweiten Verzeichnisses, das sich innerhalb des ersten Prozessors befindet, um zu ermitteln, ob ein einem zweiten Prozessor zugehöriger zweiter Cachespeicher die erforderlichen Daten enthält, wobei das zweite Verzeichnis einen Index der in dem zweiten Cachespeicher gespeicherten Daten aufweist; Senden einer Anforderung von dem ersten Prozessor an den zweiten Prozessor, nachdem festgestellt wurde, dass sich die Daten in dem zweiten Cachespeicher befinden, um die Daten von dem zweiten Cachespeicher abzurufen; und Senden einer Anforderung an einen anderen dem ersten Prozessor zugehörigen Speicher, nachdem festgestellt wurde, dass sich die Daten weder in dem zweiten noch in dem zweiten Cachespeicher befinden, um die Daten abzurufen.
  2. Verfahren nach Anspruch 1, wobei es sich bei dem ersten Cachespeicher um einen L1-Cachespeicher des ersten Prozessors und bei dem zweiten Cachespeicher um einen L1-Cachespeicher des zweiten Prozessors handelt und wobei der andere Speicher ein L2-Cachespeicher des ersten Prozessors oder des Hauptspeichers ist.
  3. Verfahren nach Anspruch 1, wobei der erste Prozessor nicht in der Lage ist, Daten in den zweiten Cachespeicher zu schreiben.
  4. Verfahren nach Anspruch 1, wobei sich der erste und der zweite Prozessor auf ein und demselben Halbleiter-Chip befinden.
  5. Verfahren nach Anspruch 4, das ferner ein Senden von Aktualisierungsdaten aufweist, um das zweite Verzeichnis in Bezug auf ein dem zweiten Prozessor zugehöriges lokales zweites Verzeichnis kohärent zu halten, sodass das zweite Verzeichnis dieselben Indexdaten wie das lokale Verzeichnis enthält, wobei der zweite Prozessor die Aktualisierungsdaten an den ersten Prozessor sendet, nachdem festgestellt wurde, dass das lokale Verzeichnis aktualisiert werden muss.
  6. Verfahren nach Anspruch 1, wobei die Schritte des Durchsuchens des ersten Verzeichnisses und des Durchsuchens des zweiten Verzeichnisses gleichzeitig erfolgen.
  7. Verfahren nach Anspruch 1, das ferner ein Ermitteln aufweist, ob die Anforderung zum Abrufen der Daten von dem zweiten Cachespeicher auf der Grundlage von Einfügungskriterien in eine Ausführungseinheit des zweiten Prozessors eingefügt werden soll.
  8. Verfahren nach Anspruch 7, das ferner aufweist: Speichern der Anforderung in einer Warteschlange, nachdem festgestellt wurde, dass die Anforderung nicht in die Ausführungseinheit eingefügt werden soll; und Einfügen der Anforderung in die Ausführungseinheit des zweiten Prozessors, nachdem ermittelt wurde, dass die Anforderung in die Ausführungseinheit eingefügt werden soll, sodass die Daten von dem zweiten Cachespeicher abgerufen und an eine Ausführungseinheit des ersten Prozessors gesendet werden.
  9. Computerprogrammprodukt, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium mit einem darauf gespeicherten computerlesbaren Programmcode, wobei der computerlesbare Programmcode einen computerlesbaren Programmcode aufweist, der konfiguriert ist zum: Durchsuchen eines ersten Verzeichnisses, das sich innerhalb eines ersten Prozessors befindet, um zu ermitteln, ob ein dem ersten Prozessor zugehöriger erster Cachespeicher Daten enthält, die zum Ausführen einer durch den ersten Prozessor ausgeführten Anweisung erforderlich sind, wobei das erste Verzeichnis einen Index der in dem ersten Cachespeicher gespeicherten Daten aufweist; Durchsuchen eines zweiten Verzeichnisses, das sich innerhalb des ersten Prozessors befindet, um zu ermitteln, ob ein einem zweiten Prozessor zugehöriger zweiter Cachespeicher die erforderlichen Daten enthält, wobei das zweite Verzeichnis einen Index der in dem zweiten Cachespeicher gespeicherten Daten aufweist; Senden einer Anforderung von dem ersten Prozessor an den zweiten Prozessor, nachdem festgestellt wurde, dass sich die Daten in dem zweiten Cachespeicher befinden, um die Daten von dem zweiten Cachespeicher abzurufen; und Senden einer Anforderung an einen anderen dem ersten Prozessor zugehörigen Speicher, nachdem festgestellt wurde, dass sich die Daten weder in dem zweiten noch in dem zweiten Cachespeicher befinden, um die Daten abzurufen.
  10. System, das einen ersten Prozessor und einen zweiten Prozessor aufweist, das aufweist: einen dem ersten Prozessor zugehörigen ersten Cachespeicher; einen dem zweiten Prozessor zugehörigen zweiten Cachespeicher; ein erstes Verzeichnis in dem ersten Prozessor, das einen Index der in dem ersten Cachespeicher gespeicherten Daten aufweist, wobei das Durchsuchen des Indexes des ersten Verzeichnisses anzeigt, ob der erste Cachespeicher Daten enthält, die zum Ausführen einer durch den ersten Prozessor ausgeführten Anweisung erforderlich sind; und ein zweites Verzeichnis in dem ersten Prozessor, das einen Index der in einem zweiten Cachespeicher des zweiten Prozessors gespeicherten Daten aufweist, wobei das Durchsuchen des Indexes des zweiten Verzeichnisses anzeigt, ob der zweite Cachespeicher die erforderlichen Daten enthält, wobei der erste Prozessor so konfiguriert ist, dass er eine Anforderung an den zweiten Prozessor sendet, nachdem festgestellt wurde, dass sich die Daten in dem zweiten Cachespeicher befinden, um die Daten von dem zweiten Cachespeicher abzurufen; und wobei der erste Prozessor so konfiguriert ist, dass er eine Anforderung an einen anderen dem ersten Prozessor zugehörigen Speicher sendet, nachdem festgestellt wurde, dass sich die Daten weder in dem ersten noch in dem zweiten Cachespeicher befinden, um die Daten abzurufen.
  11. System nach Anspruch 10, wobei sich der erste und der zweite Prozessor auf ein und demselben Halbleiter-Chip befinden.
  12. System nach Anspruch 11, wobei sich das zweite Verzeichnis auf demselben Halbleiter-Chip wie der erste Prozessor befindet und das System ferner das Senden von Aktualisierungsdaten aufweist, um das zweite Verzeichnis in Bezug auf ein dem zweiten Prozessor zugehöriges lokales Verzeichnis kohärent zu halten, sodass das zweite Verzeichnis dieselben Indexdaten wie das lokale Verzeichnis enthält, wobei der zweite Prozessor die Aktualisierungsdaten an den ersten Prozessor sendet, nachdem festgestellt wurde, dass das lokale Verzeichnis aktualisiert werden muss.
DE102012224265A 2012-01-04 2012-12-21 Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher Pending DE102012224265A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/343,236 US8719507B2 (en) 2012-01-04 2012-01-04 Near neighbor data cache sharing
US13/343,236 2012-01-04

Publications (1)

Publication Number Publication Date
DE102012224265A1 true DE102012224265A1 (de) 2013-07-04

Family

ID=47602294

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012224265A Pending DE102012224265A1 (de) 2012-01-04 2012-12-21 Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher

Country Status (4)

Country Link
US (2) US8719507B2 (de)
CN (1) CN103198025B (de)
DE (1) DE102012224265A1 (de)
GB (1) GB2499697B (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2422220A2 (de) 2009-04-22 2012-02-29 Koninklijke Philips Electronics N.V. Bildgebungsmesssystem mit gedruckter organischer fotodiodenanordnung
EP2476016B1 (de) 2009-09-08 2017-06-14 Koninklijke Philips N.V. Bildgebungsmesssystem mit gedruckter fotodetektoranordnung
US9448940B2 (en) * 2011-10-28 2016-09-20 The Regents Of The University Of California Multiple core computer processor with globally-accessible local memories
US9135177B2 (en) * 2013-02-26 2015-09-15 Apple Inc. Scheme to escalate requests with address conflicts
US9467525B2 (en) 2013-03-07 2016-10-11 Sap Se Shared client caching
CN103345451B (zh) * 2013-07-18 2015-05-13 四川九成信息技术有限公司 一种在多核处理器中缓冲数据的方法
CN104426926B (zh) * 2013-08-21 2019-03-29 腾讯科技(深圳)有限公司 定时发布数据的处理方法及装置
US9252131B2 (en) * 2013-10-10 2016-02-02 Globalfoundries Inc. Chip stack cache extension with coherency
US9280471B2 (en) 2013-11-15 2016-03-08 Apple Inc. Mechanism for sharing private caches in a SoC
CN103685516A (zh) * 2013-12-13 2014-03-26 龙芯中科技术有限公司 应用请求的处理方法、装置及多路服务器
US9396032B2 (en) * 2014-03-27 2016-07-19 Intel Corporation Priority based context preemption
CN104077144B (zh) * 2014-07-07 2015-06-03 西安交通大学 基于多线程程序约束构建的数据竞争检测与证据生成方法
US20170046278A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Method and apparatus for updating replacement policy information for a fully associative buffer cache
US9817760B2 (en) * 2016-03-07 2017-11-14 Qualcomm Incorporated Self-healing coarse-grained snoop filter
US10037283B2 (en) * 2016-08-12 2018-07-31 Advanced Micro Devices, Inc. Updating least-recently-used data for greater persistence of higher generality cache entries
CN108228481A (zh) * 2016-12-21 2018-06-29 伊姆西Ip控股有限责任公司 用于保证数据一致性的方法和设备
US9977656B1 (en) 2017-03-13 2018-05-22 Wipro Limited Systems and methods for providing software components for developing software applications
US10372353B2 (en) 2017-05-31 2019-08-06 Micron Technology, Inc. Apparatuses and methods to control memory operations on buffers
US10789175B2 (en) * 2017-06-01 2020-09-29 Mellanox Technologies Ltd. Caching policy in a multicore system on a chip (SOC)
CN107743101B (zh) * 2017-09-26 2020-10-09 杭州迪普科技股份有限公司 一种数据的转发方法及装置
JP7298624B2 (ja) * 2018-12-11 2023-06-27 サンケン電気株式会社 プロセッサ及びパイプライン処理方法
WO2020132838A1 (zh) * 2018-12-24 2020-07-02 华为技术有限公司 一种网络处理器及报文处理方法
CN111866069A (zh) * 2020-06-04 2020-10-30 西安万像电子科技有限公司 数据处理方法及装置
CN114579269A (zh) * 2022-02-08 2022-06-03 阿里巴巴(中国)有限公司 任务调度方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4827401A (en) * 1984-10-24 1989-05-02 International Business Machines Corporation Method and apparatus for synchronizing clocks prior to the execution of a flush operation
US6338123B2 (en) 1999-03-31 2002-01-08 International Business Machines Corporation Complete and concise remote (CCR) directory
US6820174B2 (en) 2002-01-18 2004-11-16 International Business Machines Corporation Multi-processor computer system using partition group directories to maintain cache coherence
US7536692B2 (en) 2003-11-06 2009-05-19 Intel Corporation Thread-based engine cache partitioning
US7805577B1 (en) 2006-04-14 2010-09-28 Tilera Corporation Managing memory access in a parallel processing environment
US7882307B1 (en) 2006-04-14 2011-02-01 Tilera Corporation Managing cache memory in a parallel processing environment
US7853752B1 (en) 2006-09-29 2010-12-14 Tilera Corporation Caching in multicore and multiprocessor architectures

Also Published As

Publication number Publication date
US20130173861A1 (en) 2013-07-04
US8719507B2 (en) 2014-05-06
CN103198025B (zh) 2016-01-20
US8719508B2 (en) 2014-05-06
CN103198025A (zh) 2013-07-10
GB2499697B (en) 2014-04-02
GB2499697A (en) 2013-08-28
US20130173860A1 (en) 2013-07-04
GB201222151D0 (en) 2013-01-23

Similar Documents

Publication Publication Date Title
DE102012224265A1 (de) Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher
DE3751399T2 (de) Parallelrechner mit verteilten, gemeinsam genutzten Speichern und verteilten, aufgabenaktivierenden Schaltungen.
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE112010003492B4 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE112010003594B4 (de) Vorrichtung, Verfahren und Computerprogramm zum Betreiben eines verteilten Gruppenspeichernetzes für Schreibvorgänge
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE112013000654T5 (de) Verzweigungsvorhersagelogik
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
DE102013016871A1 (de) Technik zur Steigerung der Effizienz in mehrsträngigen Verarbeitungseinrichtngen
DE112012001808B4 (de) Cache-Management von Spuren in einem ersten Cachespeicher und einem zweiten Cachespeicher für einen Speicher
DE102013114072A1 (de) System und Verfahren zum Hardware-Scheduling von indexierten Barrieren
DE112011101321T5 (de) Abfragen von Leistungsdaten auf einem parallelenComputersystem, das Rechenknoten aufweist
DE102010055267A1 (de) Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU
DE102013206336A1 (de) Cache-Steuerung zur Reduktion von Transaktions-Rollback
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE102013200508A1 (de) Ersetzungsreihenfolge von Cache-Sets auf der Grundlage von zeitbezogener Set-Aufzeichnung
DE102013206423A1 (de) Multithread-transaktionale-Speicherkohärenz
DE102018001537A1 (de) System, vorrichtung und verfahren zum selektiven freigeben einer instruktionshandhabung auf lokalitäts-basis
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE112006002908T5 (de) Technik für die Kommunikation und Synchronisation von Threads
DE102014017744A1 (de) Weiche partitionierung eines registerspeicher-caches

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication