Movatterモバイル変換


[0]ホーム

URL:


DE112011103433B4 - Method, system and program for controlling cache coherency - Google Patents

Method, system and program for controlling cache coherency
Download PDF

Info

Publication number
DE112011103433B4
DE112011103433B4DE112011103433.4TDE112011103433TDE112011103433B4DE 112011103433 B4DE112011103433 B4DE 112011103433B4DE 112011103433 TDE112011103433 TDE 112011103433TDE 112011103433 B4DE112011103433 B4DE 112011103433B4
Authority
DE
Germany
Prior art keywords
tlb
memory
access
processor
interrupt
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE112011103433.4T
Other languages
German (de)
Other versions
DE112011103433T5 (en
Inventor
Makoto Ueda
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 CorpfiledCriticalInternational Business Machines Corp
Publication of DE112011103433T5publicationCriticalpatent/DE112011103433T5/en
Application grantedgrantedCritical
Publication of DE112011103433B4publicationCriticalpatent/DE112011103433B4/en
Expired - Fee Relatedlegal-statusCriticalCurrent
Anticipated expirationlegal-statusCritical

Links

Images

Classifications

Landscapes

Abstract

Translated fromGerman

Verfahren (400) zum Steuern von Cache-Kohärenz eines Multiprozessorsystems (100), in dem eine Vielzahl von Prozessoren (101) gemeinsam einen Systemspeicher (103) und einen TLB-Verzeichnisspeicher (121) nutzen, wobei jeder der Vielzahl von Prozessoren einen Cachespeicher und einen TLB (Adressumsetzpuffer) (107) aufweist, wobei die Einträge in dem TLB-Verzeichnisspeicher anhand entsprechender Einträge in den TLBs der Vielzahl von Prozessoren dupliziert werden, wobei das Verfahren aufweist:wenn ein Prozessor der Vielzahl von Prozessoren ermittelt, dass eine TLB-Unterbrechung, bei der es sich nicht um einen Seitenfehler handelt (406), in einer TLB-Suche des TLB-Verzeichnisspeichers auftritt,Durchführen, durch den Prozessor, eines Schrittes (407) zur TLB-Fehltrefferausnahmebehandlung, mit dem die TLB-Unterbrechung als TLB-Fehltrefferunterbrechung (TLB miss interrupt) behandelt wird, wenn die TLB-Unterbrechung eine TLB-Fehltrefferunterbrechung ist, die auftritt, wenn keine Registrierungsdaten mit einer übereinstimmenden Adresse in dem TLB vorhanden sind, und eines Schrittes (407) zur Speicherausnahmebehandlung, mit dem die TLB-Unterbrechung als Speicherunterbrechung behandelt wird, wenn die TLB-Unterbrechung eine Speicherunterbrechung ist, die auftritt, wenn Registrierungsdaten mit einer übereinstimmenden Adresse in dem TLB vorhanden sind, das Zugriffsrecht jedoch ungültig ist.A method (400) for controlling cache coherency of a multiprocessor system (100) in which a plurality of processors (101) share a system memory (103) and a TLB directory memory (121), each of the plurality of processors providing a cache memory and a TLB (address translation buffer) (107), wherein the entries in the TLB directory memory are duplicated based on corresponding entries in the TLBs of the plurality of processors, the method comprising: when a processor of the plurality of processors determines that a TLB interrupt , which is not a page fault (406), occurs in a TLB directory store TLB search, performing, by the processor, a TLB miss exception handler step (407) that terminates the TLB interrupt as TLB TLB miss interrupt is handled when the TLB interrupt is a TLB miss interrupt that occurs when there is no registration data having a matching address exists in the TLB, and a memory exception handling step (407) that treats the TLB interrupt as a memory interrupt if the TLB interrupt is a memory interrupt occurring when registration data having a matching address in TLB exists, but the access right is invalid.

Description

Translated fromGerman

Technisches GebietTechnical area

Die vorliegende Erfindung betrifft das Steuern von Cache-Kohärenz, und insbesondere ein Verfahren, System und Programm zum Steuern von Cache-Kohärenz eines Shared-Memory-Multiprocessor (Multiprozessor mit gemeinsam genutztem Arbeitsspeicher).The present invention relates to controlling cache coherency, and more particularly to a method, system, and program for controlling cache coherency of a shared memory multiprocessor (shared memory multiprocessor).

Stand der TechnikState of the art

Ein Multiprozessorsystem führt eine Vielzahl von Aufgaben (tasks) oder Prozessen (im Folgenden als „Prozesse“ bezeichnet) gleichzeitig durch. Jeder der Vielzahl von Prozessen hat normalerweise einen virtuellen Adressraum und nutzt diesen beim Ausführen des Prozesses. Ein Bereich in so einem virtuellen Adressraum enthält eine Adresse, die auf einer physischen Adresse in einem Systemspeicher abgebildet (mapped) wird. Es ist nichts Ungewöhnliches, dass ein einzelner Bereich in einem Systemspeicher auf einer Vielzahl von virtuellen Adressen in einem Multiprozessor abgebildet wird. Verwendet jeder einzelne einer Vielzahl von Prozessen eine virtuelle Adresse, werden diese Adressen in physische Adressen in einem Systemspeicher übersetzt und, falls keine geeignete Anweisung oder Daten in einem Cachespeicher in einem Prozessor zum Durchführen jeder dieser Prozesse vorliegen, werden sie aus dem Systemspeicher extrahiert und in dem Cachespeicher gespeichert.A multiprocessor system performs a plurality of tasks or processes (hereinafter referred to as "processes") simultaneously. Each of the multiplicity of processes usually has a virtual address space and uses it when executing the process. An area in such a virtual address space contains an address that is mapped to a physical address in system memory. It is not uncommon for a single area in a system memory to be mapped to a plurality of virtual addresses in a multiprocessor. When each one of a plurality of processes uses a virtual address, these addresses are translated into physical addresses in system memory and, if there is no appropriate instruction or data in a cache in a processor to perform each of these processes, they are extracted from the system memory and written to saved to the cache memory.

Um virtuelle Adressen in einem Multiprozessorsystem schnell in physische Adressen in einem Systemspeicher zu übersetzen und um eine geeignete Anweisung oder Daten zu erhalten, wird ein sogenannter Adressumsetzpuffer (Translation Look-aside Buffer) (nachfolgend als TLB bezeichnet) für einen Cachespeicher verwendet. Bei einem TLB handelt es sich um einen Puffer (Zwischenspeicher), der eine Übersetzungsbeziehung zwischen einer virtuellen Adresse und einer physischen Adresse, die unter Verwendung eines Übersetzungsalgorithmus erzeugt wird, enthält. Durch Verwendung des TLB können Adressen sehr effizient übersetzt werden; durch den Einsatz eines solchen Puffers in einem Symmetric Multiprocessing System („symmetrisches Mehrfachverarbeitungssystem“) (nachfolgend als „SMP“ bezeichnet) entsteht jedoch das Problem der Inkohärenz. Bei einem Datenverarbeitungssystem, in dem eine Vielzahl von Prozessoren Daten von einem gemeinsam genutzten Speichersystem lesen und darauf schreiben können, muss genauestens darauf geachtet werden, dass das Speichersystem kohärent arbeitet. Das heißt, Inkohärenz des Speichersystems, die aus dem Ausführen von Prozessen durch die Vielzahl von Prozessoren resultiert, muss vermieden werden. In solch einem Multiprozessorsystem enthält jeder der Prozessoren normalerweise einen TLB zur Verwendung bei der Adressübersetzung für einen Cachespeicher. Um in einem solchen System Kohärenz zu gewährleisten, muss eine Änderung an einem TLB eines einzelnen Prozessors in dem Multiprozessor von einem gemeinsam genutzten Speichermodus genau und ohne Inkonsistenz zu verursachen auf den TLBs der anderen Prozessoren abgebildet werden.To quickly translate virtual addresses in a multiprocessor system into physical addresses in system memory and to obtain an appropriate instruction or data, a so-called translation look-aside buffer (hereinafter referred to as TLB) is used for a cache. A TLB is a buffer containing a translation relationship between a virtual address and a physical address generated using a translation algorithm. By using the TLB, addresses can be translated very efficiently; however, the use of such a buffer in a Symmetric Multiprocessing System (hereinafter referred to as "SMP") creates the problem of incoherence. In a data processing system in which a plurality of processors can read and write data from a shared memory system, care must be taken to ensure that the memory system operates coherently. That is, inconsistency of the memory system resulting from executing processes by the plurality of processors must be avoided. In such a multiprocessor system, each of the processors typically includes a TLB for use in cache address translation. To ensure coherence in such a system, a change to a TLB of a single processor in the multiprocessor from a shared memory mode must be mapped accurately and without inconsistency on the TLBs of the other processors.

In einem Multiprozessor kann Kohärenz von TLBs beispielsweise durch Verwenden eines Inter-Prozessor-Interrupts sowie durch Synchronisieren von Software für Änderungen an allen TLBs gewährleistet werden. Mit dieser Vorgehensweise kann Speicherkohärenz innerhalb des gesamten Multiprozessorsystems sichergestellt werden. In einem typischen Seitenspeichersystem gibt der Inhalt eines einzelnen TLB in einem Multiprozessorsystem einen Abschnitt eines im Cachespeicher gespeicherten Inhaltes einer Seitentabelle wieder, die in dem Systemspeicher geführt wird. Bei einer Seitentabelle handelt es sich im Allgemeinen um eine Speicher-Abbildtabelle (memory map table), die virtuelle Adressen oder Segmente davon sowie dazugehörige physische Adressen enthält. Solch eine Tabelle enthält des Weiteren andere verschiedene Typen von Verwaltungsdaten (management data), unter anderem ein „page protection“-Bit, ein „valid entry“-Bit und verschiedene Arten von Zugriffsbits („access bits“). So kann beispielsweise ein Bit, das die Notwendigkeit von Kohärenz explizit anzeigt (Attribut Speicherkohärenz-erforderlich) als Verwaltungsdaten zum statischen Konfigurieren dahingehend definiert werden, ob die Seite wirklich Kohärenz benötigt. Dieses Verfahren zum statischen Konfigurieren mit Hilfe von Bits kommt tatsächlich jedoch nur in einigen speziellen Programmen, die zum softwarebasierten Steuern eines Cachespeichers umgeschrieben werden dürfen, zum wirkungsvollen Einsatz, da nicht nur das vorstehend beschriebene Bit sondern zusätzlich dazu solch ein Bit auch in dem gesamten Systemspeicher statisch konfiguriert werden muss.In a multiprocessor, coherence of TLBs can be ensured, for example, by using an inter-processor interrupt as well as by synchronizing software for changes to all TLBs. This approach can ensure memory coherency throughout the multiprocessor system. In a typical page storage system, the content of a single TLB in a multiprocessor system reflects a portion of a cached content of a page table maintained in system memory. A page table is generally a memory map table containing virtual addresses or segments thereof and associated physical addresses. Such a table also contains other different types of management data, including a page protection bit, a valid entry bit, and various types of access bits. For example, a bit that explicitly indicates the need for coherency (memory coherence required attribute) can be defined as administrative data for static configuration as to whether the page really needs coherency. In fact, this bitmap static configuration method is effectively used only in some special programs that may be rewritten for software-based control of a cache because not only the bit described above but in addition such a bit also in the total system memory statically must be configured.

In den letzten Jahren kamen Desktop Personal Computer (PC) mit einer Vielzahl von zentralen Verarbeitungseinheiten (CPUs) sowie Linux SMP (Linux ist eine Handelsmarke von Linus Torvalds in den Vereinigten Staaten und anderen Ländern) verstärkt zum Einsatz, und viele Anwendungsprogramme unterstützen mittlerweile SMP (Shared-Memory-Multiprocessor)-Systeme, d.h. Systeme, bei denen mehrere Prozessoren auf einen gemeinsamen Arbeitsspeicher zugreifen. Demnach wird durch eine höhere Anzahl von Prozessoren in einem System eine Durchsatzleistung eines Anwendungsprogramms verbessert, ohne dass Software umgeschrieben werden muss. Ein Universal-Betriebssystem (BS), das eine Weiterentwicklung beim Unterstützen von SMP darstellt, beispielsweise SMP-Linux, wurde einer Kapazitätsverbesserung unterzogen und ist mittlerweile zum Steuern von mindestens 1024 Prozessoren in der Lage. Die Fähigkeit zum Verbessern der Durchsatzleistung durch ein Erhöhen der Anzahl von Prozessoren, ohne dass Software umgeschrieben werden muss, ist ein Vorteil, den ein Multiprozessorsystem, das keinen gemeinsamen Speicher nutzt, wie beispielsweise ein Cluster, das Message Passing Programming verwendet, normalerweise nicht bietet. Somit handelt es sich bei SMP (Shared-Memory-Multiprocessor) um ein Multiprozessorsystem, das zum Schutz von Lizenzen (Software Assets) geeignet ist.In recent years, desktop personal computers (PC) with a large number of central processing units (CPUs) and Linux SMP (Linux is a trademark of Linus Torvalds in the United States and other countries) have increasingly been used, and many application programs now support SMP ( Shared memory multiprocessor) systems, ie systems where multiple processors to access a shared memory. Thus, increasing the number of processors in a system improves throughput of an application program without the need to rewrite software. A Universal Operating System (OS), which is a further development in supporting SMP, such as SMP Linux, has undergone capacity improvement and is now capable of controlling at least 1024 processors. The ability to improve throughput by increasing the number of processors without having to rewrite software is an advantage that a multiprocessor system that does not use shared memory, such as a cluster that uses message passing programming, typically does not offer. Thus, SMP (Shared Memory Multiprocessor) is a multiprocessor system that is suitable for the protection of licenses (software assets).

Aufgrund des Message Passing-Verfahrens ist die Skalierbarkeit eines SMP-Systems jedoch niedriger als die eines Clusters. Dies kommt daher, dass mit einem Erhöhen der Anzahl an Prozessoren eines SMP-Systems zur Verbesserung der Skalierbarkeit die Kosten für die Cache-Kohärenz unterstützende Hardware dramatisch ansteigen. Zu Beispielen von Hardware, die Cache-Kohärenz eines SMP-Systems unterstützt, können das Snoop-basierte MESI- (modified, exclusive, shared, invalid) Protokoll, das in einem gemeinsam genutzten Bus (shared bus) eines Desktop-PC verwendet und mit kostengünstiger Hardware umgesetzt wird, sowie ein Directory-basiertes (verzeichnisbasiertes) Protokoll gehören, das mit einem Cache-kohärenten, nicht-einheitlichen Speicherzugriff (non-uniform memory access) (nachfolgend als „CC-NUMA“ bezeichnet) in einem großen Distributed-Shared Memory- (DSM) System verwendet und mit kostengünstiger Hardware umgesetzt wird, die eine spezielle Verbindung zwischen Knoten beispielsweise mit einem Protokollprozessor (protocol processor) und einem Verzeichnisspeicher (directory memory) integriert. Ein Erhöhen der Anzahl an Prozessoren, die CC-NUMA verwenden, führt zu höheren Hardware-Kosten und demzufolge zu einer Erhöhung der Kosten eines Multiprozessors. Das bedeutet demzufolge eine geringe wirtschaftliche Skalierbarkeit von CC-NUMA. Im Gegensatz dazu sind die Hardware-Kosten pro Prozessor für ein Cluster, welches aus Standardkomponenten gebildet werden kann, weniger kostenintensiv als die für den CC-NUMA, der ganz eigene Komponenten benötigt. Insbesondere kann ein Cluster, der mit konstanten Hardware-Kosten pro Prozessor einhergeht, Parallelverarbeitung massiv durchführen, wenn er ein sehr einfach zu parallelisierendes Anwendungsprogramm mit einer hohen Parallelität unter Verwendung einer Schnittstelle für Message Passing umschreibt.However, due to the message passing method, the scalability of an SMP system is lower than that of a cluster. This is because increasing the number of processors of an SMP system to improve scalability dramatically increases the cost of cache coherency supporting hardware. Examples of hardware that supports cache coherency of an SMP system may include the snoop-based MESI (modified, exclusive, shared, invalid) protocol used in a shared bus of a desktop PC, and with low-cost hardware, as well as a directory-based (directory-based) protocol that includes a cache-coherent, non-uniform memory access (hereinafter referred to as "CC-NUMA") in a large distributed shared Memory (DSM) system is used and implemented with low-cost hardware that integrates a special connection between nodes, for example, with a protocol processor (protocol processor) and a directory memory (directory memory). Increasing the number of processors using CC-NUMA results in higher hardware costs and, consequently, an increase in the cost of a multiprocessor. This means low economic scalability of CC-NUMA. In contrast, the hardware cost per processor for a cluster that can be built from standard components is less expensive than that for CC-NUMA, which requires very unique components. In particular, a cluster associated with constant hardware cost per processor can massively perform parallel processing when rewriting a very easy-to-parallelize application program with high parallelism using a message passing interface.

Die Nichtpatentliteratur 1 beschreibt ein auf einem virtuellen Speicher (VM, virtual memory) beruhendes Shared-Memory-Verfahren, das Hardware in einer Speicherverwaltungseinheit (Memory Management Unit) (nachfolgend als „MMU“ bezeichnet) verwendet, die in einem Prozessor zu einer verbesserten Skalierbarkeit und Kostenentwicklung eines SMP-Systems enthalten ist. Dieses Verfahren wurde auf einen nicht Cache-kohärenten NUMA (nachfolgend als „NCC-NUMA“ bezeichnet) angewendet, der in der Nichtpatentliteratur 2 beschrieben ist, der Hardware genauso kostengünstig wie bei einem Cluster verwenden kann. Das VM-basierte Shared-Memory-Verfahren behandelt Cache-Kohärenz in ein und demselben Prozess, kann Cache-Kohärenz jedoch nicht zwischen verschiedenen Prozessen behandeln. Insbesondere aufgrund der Tatsache, dass ein Universal-BS normalerweise eine virtuelle Adresse unterstützt und Speicherverwaltung unter Verwendung des „Copy-on-Write“-Verfahrens zum Abbilden derselben physischen Seite auf einer Vielzahl von Prozessen betreibt, sind die Daten, auf die das VM-basierte Shared-Memory-Verfahren angewendet werden könnte, auf solche Daten begrenzt, mit denen sichergestellt ist, dass ein Anwendungsprogramm nicht von verschiedenen Prozessen gemeinsam genutzt wird, und dementsprechend kann für ein Anwendungsprogramm transparente Cache-Kohärenz nicht implementiert werden. Mit anderen Worten müssen demzufolge Daten desselben virtuellen Adressraumes, der von einer Vielzahl von Prozessoren genutzt wird, explizit angezeigt werden, und um das Verfahren auf bereits verfügbare Software anzuwenden, muss ein Anwendungsprogramm umgeschrieben werden, was zu zusätzlichen, mit dem Anwendungsprogramm verbundenen Software-Kosten führt. Folglich kann das VM-basierte Shared-Memory-Verfahren nicht auf einen Universalcomputer angewendet werden, und die Anwendbarkeit dieses Verfahrens ist auf eine spezielle Nutzung und wissenschaftliche Datenberechnung begrenzt, mit der eine Neuentwicklung des Programms möglich ist.Nonpatent Literature 1 describes a virtual memory (VM) -based shared memory method that uses hardware in a memory management unit (hereafter referred to as "MMU") in a processor for improved scalability and cost development of an SMP system. This method has been applied to a non-cache coherent NUMA (hereinafter referred to as "NCC NUMA") described in Non-Patent Literature 2, which can use hardware as inexpensively as a cluster. The VM-based shared-memory method treats cache coherency in one and the same process, but can not handle cache coherency between different processes. In particular, due to the fact that a general-purpose OS normally supports a virtual address and operates memory management using the "copy-on-write" method of mapping the same physical page on a variety of processes, the data to which the VM based on data limited to ensure that an application program is not shared by different processes, and accordingly, transparent cache coherency can not be implemented for an application program. In other words, therefore, data of the same virtual address space used by a plurality of processors must be explicitly displayed, and to apply the method to already available software, an application program must be rewritten, resulting in additional software costs associated with the application program leads. Consequently, the VM-based shared memory method can not be applied to a general-purpose computer, and the applicability of this method is limited to a special use and scientific data computation with which a new development of the program is possible.

Patentliteratur 1 beschreibt einen Multiprozessor mit einem gemeinsam genutzten Arbeitsspeicher (main memory shared type multiprocessor), bei dem durch Hinzufügen von wenig Hardware über ein Bereitstellen einer Abbildtabelle für physische Seiten (physical page map table) die Notwendigkeit des Sendens einer TLB-Löschungs-Transaktion zum Steuern von TLB-Konsistenz beim Umschreiben der Seitentabelle beseitigt oder erheblich verringert werden kann. Darüber hinaus kann damit auch der mit der TLB-Löschung einhergehende Bus-Verkehr in einem Netzwerk und in Knoten sowie ein zeitweises Blockieren (pipeline stall) eines Prozessors erheblich verringert werden.Patent Literature 1 describes a multiprocessor with a main memory shared type multiprocessor in which, by adding little hardware via providing a physical page map table, the need to send a TLB delete transaction to the Control of TLB consistency when rewriting the page table can be eliminated or significantly reduced. In addition, it can also significantly reduce the bus traffic in a network and nodes associated with the TLB deletion as well as a temporary stalling of a processor.

Patentliteratur 2 beschreibt beispielsweise, wie eine Zugriffsoperation auf einen inhaltsadressierbaren Speicher wie zum Beispiel einen Cachespeicher (CACHE-M) oder einen Adressumsetzpuffer (TLB, address translation buffer) in Reaktion auf eine Anweisung zur Datenübertragung wie eine MOV-Anweisung ermöglicht und ein Eintrag invalidiert werden kann. Patent Literature 2, for example, describes how to allow access to a content-addressable memory such as a cache memory (CACHE-M) or an address translation buffer (TLB) in response to a data transfer instruction such as an MOV instruction and to invalidate an entry can.

Patentliteratur 3 beschreibt die Einführung eines Paares an Softwareanweisungen zum Ermöglichen eines direkten Einfügens von Übersetzungsdaten durch Software, wie beispielsweise eines Adressübersetzungspaares, einer Seitenfehlerroutine, die die Übersetzungsdaten sowohl in das Seitenverzeichnis als auch in den TLB einfügen kann und sicherstellt, dass nach Abschluss der Ausführung einer Routine durch einen Seitenfehler-Handler, das nächste Mal wenn dieselbe virtuelle Adresse bereitgestellt wird, kein TLB-Fehltreffer (TLB miss) sondern ein TLB-Treffer (TLB hit) auftritt.Patent Literature 3 describes the introduction of a pair of software instructions for enabling direct insertion of translation data by software, such as an address translation pair, a page fault routine, which can insert the translation data into both the page directory and the TLB and ensure that upon completion of execution Routine by a page fault handler, the next time the same virtual address is provided, no TLB miss (TLB miss) but a TLB hit (TLB hit) occurs.

Liste der LiteraturstellenList of references

Patentliteraturpatent literature

  • Japanische ungeprüfte PatentanmeldungsveröffentlichungJP 2000-67009 AJapanese Unexamined Patent Application Publication JP 2000-67009 A
  • Japanische ungeprüfte PatentanmeldungsveröffentlichungJP H08-320829 AJapanese Unexamined Patent Application Publication JP H08-320829 A
  • Japanische ungeprüfte PatentanmeldungsveröffentlichungJP S62-3357 AJapanese Unexamined Patent Application Publication JP S62-3357 A

NichtpatentliteraturNon-patent literature

Karin Petersen und Kai Li, „Cache Coherence for Shared Memory Multiprocessors Based on Virtual Memory Support“, in den Konferenzunterlagen des Seventh International Parallel Processing Symposium, Newport Beach, CA, April 1993, Seiten 1-18Karin Petersen and Kai Li, "Cache Coherence for Shared Memory Multiprocessors Based on Virtual Memory Support," in the conference papers of the Seventh International Parallel Processing Symposium, Newport Beach, CA, April 1993, pages 1-18

Leonidas Kontothanassis, et al., „Shared Memory Computing on Clusters with Symmetric Multiprocessors and System Area Networks“, ACM Transactions on Computer Systems (TOCS) Bd. 23, Nr. 3, August 2005, Seiten 301-335Leonidas Kontothanassis, et al., "Shared Memory Computing on Clusters with Symmetric Multiprocessors and System Area Networks", ACM Transactions on Computer Systems (TOCS) Vol. 23, No. 3, August 2005, pages 301-335

Zusammenfassung der ErfindungSummary of the invention

Technisches ProblemTechnical problem

Somit ist es eine Aufgabe der vorliegenden Erfindung, Steuerung von Cache-Kohärenz zu erzielen, womit eine erhöhte Skalierbarkeit eines Shared-Memory-Multiprocessor-Systems und eine verbesserte Kostenentwicklung bei gleichzeitiger Geringhaltung der Hardware- und Softwarekosten erreicht werden. Die Aufgabe der vorliegenden Erfindung umfasst Bereitstellen eines Verfahrens, eines Systems und eines Programmproduktes zum Erzielen einer solchen Steuerung der Cache-Kohärenz. Die Aufgabe der vorliegenden Erfindung umfasst des Weiteren Erzielen einer solchen Steuerung der Cache-Kohärenz durch Software unter Verwendung einer kostengünstigen Hardware-Konfiguration. Die Aufgabe der Erfindung umfasst des Weiteren Erzielen einer solchen Steuerung von Cache-Kohärenz mit einer für die Anwendung transparenten Software, das heißt, ohne Umschreiben eines Anwendungsprogramms.Thus, it is an object of the present invention to achieve control of cache coherency, thereby achieving increased scalability of a shared memory multiprocessor system and improved cost performance while minimizing hardware and software costs. The object of the present invention includes providing a method, a system, and a program product for achieving such cache coherency control. The object of the present invention further comprises achieving such control of cache coherency by software using a low cost hardware configuration. The object of the invention further comprises achieving such control of cache coherency with software transparent to the application, that is without rewriting an application program.

Lösung des Problemsthe solution of the problem

Die der Erfindung zugrunde liegenden Aufgaben werden mit den Merkmalen der unabhängigen Patentansprüche gelöst. Ausführungsformen der Erfindung sind in den abhängigen Ansprüchen angegeben.The objects underlying the invention are achieved by the features of the independent claims. Embodiments of the invention are indicated in the dependent claims.

Ein Verfahren zum Steuern von Cache-Kohärenz gemäß einer Ausführungsform der vorliegenden Erfindung steuert Cache-Kohärenz eines Multiprozessorsystems, in dem eine Vielzahl von Prozessoren gemeinsam einen Systemspeicher und einen TLB-Verzeichnisspeicher nutzten, wobei jeder der Vielzahl von Prozessoren einen Cachespeicher und einen TLB (Adressumsetzpuffer, translation look-aside buffer) aufweist, wobei die Einträge in dem TLB-Verzeichnisspeicher anhand entsprechender Einträge in den TLBs der Vielzahl von Prozessoren dupliziert werden. Ermittelt ein Prozessor der Vielzahl von Prozessoren, dass eine TLB-Unterbrechung, bei der es sich nicht um einen Seitenfehler handelt, in einer TLB-Suche des TLB-Verzeichnisspeichers auftritt, weist das Verfahren Durchführen, durch den Prozessor, eines Schrittes zur TLB-Fehltrefferausnahmebehandlung, mit dem die TLB-Unterbrechung als TLB-Fehltreffer behandelt wird, wenn die TLB-Unterbrechung eine TLB-Fehltrefferunterbrechung ist, die auftritt, wenn keine Registrierungsdaten mit einer übereinstimmenden Adresse in dem TLB vorhanden sind, und einen Schritt zur Speicherausnahmebehandlung auf, mit dem die TLB-Unterbrechung als Speicherunterbrechung behandelt wird, wenn die TLB-Unterbrechung eine Speicherunterbrechung ist, die auftritt, wenn Registrierungsdaten mit einer übereinstimmenden Adresse in dem TLB vorhanden sind, das Zugriffsrecht jedoch ungültig (invalid) ist. Der Schritt zur TLB-Fehltrefferausnahmebehandlung kann den Schritt des Entleerens (flushing) einer Daten-Cachezeile (data cache line) aufweisen, die zu einer physischen Seite gehört, auf die sich ein Auswahl-TLB-Eintrag (victim TLB entry) bezieht, der beim Durchführen von TLB-Ersetzen (TLB replacement) bereinigt und gelöscht wird. Der Schritt zur TLB-Fehltrefferausnahmebehandlung oder der Schritt zur Speicherausnahmebehandlung können die Schritte des Ermittelns, ob es sich bei dem Speicherzugriff, der die TLB-Fehltrefferunterbrechung oder die Speicherunterbrechung verursacht hat, um einen Zugriff auf Daten (data access) oder einen Zugriff auf Anweisungen handelt (instruction access), und, wenn ermittelt wird, dass es sich bei dem Speicherzugriff um den Zugriff auf Daten handelt, des Bereitstellens eines Schreib-, Lese- und Ausführungsrechtes auf eine physische Seite, auf die sich ein TLB-Eintrag bezieht, der im Zusammenhang mit dem Zugriff mit der ausschließlichen Beschränkung, dass es sich dabei um ein exklusives Zugriffsrecht auf die physische Seite in dem TLB eines weiteren Prozessors handelt, ersetzt oder aktualisiert wird, aufweisen.A method of controlling cache coherency in accordance with an embodiment of the present invention controls cache coherency of a multiprocessor system in which a plurality of processors share system memory and a TLB directory store, each of the plurality of processors including a cache and a TLB (address translation buffer translation look-aside buffer), wherein the entries in the TLB directory memory are duplicated by corresponding entries in the TLBs of the plurality of processors. If a processor of the plurality of processors determines that a TLB interrupt that is not a page fault occurs in a TLB search of the TLB directory store, the method comprises performing, by the processor, a step of TLB miss exception handling with which the TLB interrupt is treated as a TLB miss if the TLB interrupt is a TLB miss interrupt that occurs when no registration data is with one matching address in the TLB, and a memory exception handling step that treats the TLB interrupt as a memory interrupt if the TLB interrupt is a memory interrupt that occurs when there is registration data with a matching address in the TLB; however, the access right is invalid. The TLB miss match exception step may comprise the step of flushing a data cache line associated with a physical page to which a victim TLB entry related to the TLB entry belongs Performing TLB replacement is cleaned up and cleared. The TLB miss exception handling step or the memory exception handling step may be the steps of determining whether the memory access causing the TLB miss interrupt or the memory interrupt is data access or accessing instructions (instruction access), and if it is determined that the memory access is data access, providing a write, read and execute right to a physical page to which a TLB entry referenced in the Access is restricted to the exclusive limitation that it is an exclusive right to access the physical page in the TLB of another processor, is replaced or updated.

Vorzugsweise kann der Schritt des Bereitstellens des Schreib-, Lese- und Ausführungsrechtes mit der exklusiven Beschränkung einen Verarbeitungsschritt des Bereitstellens des Schreib-, Lese- und Ausführungsrechtes zusammen mit einer „invalidate-on-write“-Beschränkung aufweisen. Der Schritt des Bereitstellens des Schreib-, Lese- und Ausführungsrechtes zusammen mit der „invalidate-on-write“-Beschränkung kann einen MESI-Emulationsverarbeitungsschritt zum Bereitstellen des Schreib-, Lese- und Ausführungsrechtes zusammen mit einer Beschränkung des MESI-Protokolls aufweisen.Preferably, the exclusive constraint providing step of providing the read, write, and execute right may include a processing step of providing the read, write, and execute right together with an invalidate-on-write constraint. The step of providing the write, read, and execute right along with the invalidate-on-write restriction may include an MESI emulation processing step of providing the read, write, and execute right along with a restriction of the MESI protocol.

Vorzugsweise kann der MESI-Emulationsverarbeitungsschritt die Schritte aufweisen des: Ermittelns, ob es sich bei dem Speicherzugriff um ein Schreiben oder Lesen von Daten handelt, wenn ermittelt wird, dass es sich bei dem Speicherzugriff um das Lesen von Daten handelt, des Einstellens eines Leseattributes auf die physische Seite des Zugriffs in dem TLB des Prozessors und des TLB-Verzeichnisspeichers, der Registrierungsdaten für die TLBs der Vielzahl von Prozessoren enthält, des Durchsuchens des TLB-Verzeichnisspeichers nach der physischen Seite des Zugriffs und des Ermittelns, ob der TLB des anderen Prozessors das Recht zum Schreiben auf die physische Seite des Zugriffs hat, wenn ermittelt wird, dass der andere Prozessor das Recht zum Schreiben hat, des Übermittelns eines Clean Commands an den anderen Prozessor durch einen Inter-Prozessor-Interrupt und des Veranlassens des anderen Prozessors zum Freigeben des Rechtes auf Schreiben an die physische Seite des Zugriffs und des Freigebens eines Schreibattributes an die physische Seite des Zugriffs für den TLB des anderen Prozessors in dem TLB-Verzeichnisspeicher. Der Schritt des Veranlassens des anderen Prozessors zum Freigeben des Rechtes zum Schreiben auf die physische Seite des Zugriffs kann den Schritt des Veranlassens des anderen Prozessors zum Zurückkopieren des Daten-Cachespeichers und zum Deaktivieren des Schreibattributes auf die physische Seite des Zugriffs in dem TLB des anderen Prozessors aufweisen.Preferably, the MESI emulation processing step may comprise the steps of: determining whether the memory access is a data write or read, when the memory access is determined to be reading data, setting a read attribute the physical page of access in the TLB of the processor and the TLB directory store containing registration data for the TLBs of the plurality of processors, searching the TLB directory store for the physical page of the access and determining whether the TLB of the other processor is the Right to write to the physical side of the access, if it is determined that the other processor has the right to write, has a clean command passed to the other processor through an inter-processor interrupt and the other processor to release the one Right to Write to the Physical Page of Access and Sharing ns a write attribute to the physical page of access for the TLB of the other processor in the TLB directory store. The step of causing the other processor to release the right to write to the physical side of the access may include the step of causing the other processor to copy back the data cache and disable the write attribute to the physical side of access in the TLB of the other processor exhibit.

Vorzugsweise kann die MESI-Emulationsverarbeitung die Schritte aufweisen des, wenn ermittelt wird, dass es sich bei dem Speicherzugriff um das Schreiben von Daten handelt, Einstellens des Schreibattributes auf die physische Seite des Zugriffs in dem TLB des Prozessors und des TLB-Verzeichnisspeichers, des Durchsuchens des TLB-Verzeichnisspeichers der physischen Seite des Zugriffs und des Ermittelns, ob der TLB des anderen Prozessors das Recht zum Lesen, Schreiben oder Ausführen auf die physische Seite des Zugriffs hat, wenn ermittelt wird, dass der andere Prozessor das Recht zum Schreiben, Lesen oder Ausführen auf die physische Seite hat, des Übermittelns eines Flush Command (Entleerungsbefehl) an den anderen Prozessor über einen Inter-Prozessor-Interrupt und des Veranlassens des anderen Prozessors zum Freigeben des Rechtes zum Lesen, Schreiben oder Ausführen auf die physische Seite des Zugriffs, und des Freigebens der Lese-, Schreib- und Ausführungsattribute an die physische Seite des Zugriffs für den TLB des anderen Prozessors in dem TLB-Verzeichnisspeicher. Der Schritt des Veranlassens des anderen Prozessors zum Freigeben des Rechtes zum Lesen, Schreiben und Ausführen auf die physische Seite des Zugriffs kann den Schritt des Veranlassens des anderen Prozessors zum Zurückkopieren und Invalidieren des Daten-Cachespeichers und zum Deaktivieren der Lese-, Schreib- und Ausführungsattribute an der physischen Seite des Zugriffs in dem TLB des anderen Prozessors aufweisen.Preferably, the MESI emulation processing may include the steps of, if it is determined that the memory access is data writing, setting the write attribute to the physical side of the access in the TLB of the processor and the TLB directory memory, the browsing the TLB directory store the physical side of the access and determine whether the TLB of the other processor has the right to read, write or execute on the physical side of the access if it is determined that the other processor has the right to write, read or Performing on the physical side, transmitting a Flush Command to the other processor via an inter-processor interrupt and causing the other processor to release the right to read, write, or execute on the physical side of the access, and releasing the read, write, and execute attributes to the physical page te the access for the TLB of the other processor in the TLB directory memory. The step of causing the other processor to release the right to read, write and execute on the physical side of the access may include the step of causing the other processor to copy back and invalidate the data cache and disable the read, write and execute attributes on the physical side of the access in the TLB of the other processor.

Vorzugsweise kann der Schritt zur TLB-Fehltrefferausnahmebehandlung oder der Schritt zur Speicherausnahmebehandlung die Schritte aufweisen des Ermittelns, ob es sich bei dem Speicherzugriff, der die TLB-Fehltrefferunterbrechung oder die Speicherunterbrechung verursacht hat, um einen Zugriff auf Daten oder einen Zugriff auf Anweisungen handelt, wenn ermittelt wird, dass es sich bei dem Speicherzugriff um den Zugriff auf Anweisungen handelt, des Ermittelns, ob ein Eintrag in einer Seitentabelle in dem Systemspeicher ein Recht zur Benutzerschreiberlaubnis auf die physische Seite aufweist, auf der die TLB-Fehltrefferunterbrechung aus einem Anweisungsabruf resultiert hat, wenn ermittelt wird, dass der Eintrag in der Seitentabelle das Recht zur Benutzerschreiberlaubnis aufweist, des Ermittelns, ob der TLB des anderen Prozessors ein Recht zur Benutzerschreiberlaubnis auf die physische Seite hat und, wenn ermittelt wird, dass der TLB den anderen Prozessors das Recht zur Benutzerschreiberlaubnis hat, des Übermittelns eines Clean Command an den anderen Prozessor über einen Inter-Prozessor-Interrupt und des Veranlassens des anderen Prozessors zum Freigeben des Rechtes zur Benutzerschreiberlaubnis. Wenn ermittelt wird, dass der TLB des anderen Prozessors das Recht zur Benutzerschreiberlaubnis nicht hat oder nach dem Schritt des Veranlassens des anderen Prozessors zum Freigeben des Rechtes zur Benutzerschreiberlaubnis können der Schritt zur TLB-Fehltrefferausnahmebehandlung oder der Schritt zur Speicherausnahmebehandlung den Schritt des Invalidierens eines Anweisungs-Cachespeichers des Prozessors, der den Zugriff vorgenommen hat, aufweisen. Wenn ermittelt wird, dass der Eintrag in der Seitentabelle das Recht zur Benutzerschreiberlaubnis nicht aufweist oder nach dem Schritt des Invalidierens des Anweisungs-Cachespeichers des Prozessors, der den Zugriff vorgenommen hat, kann der Schritt zur TLB-Fehltrefferausnahmebehandlung oder der Schritt zur Speicherausnahmebehandlung den Schritt des Einstellens des Ausführungsattributes auf die physische Seite aufweisen, auf der der TLB-Fehltreffer aus dem Anweisungsabruf in dem TLB des Prozessors, der den Zugriff vorgenommen hat, und dem TLB-Verzeichnisspeicher, der Registrierungsdaten für die TLBs der Vielzahl von Prozessoren enthält, resultiert.Preferably, the TLB miss exception handling step or the memory exception handling step may comprise the steps of determining whether the memory access causing the TLB miss interrupt or the memory interrupt is access to data or access to instructions when it is determined that the memory access is the access to instructions, determining if an entry in a page table is in the system memory has a right to user write permission to the physical page on which the TLB miss interrupt resulted from an instruction fetch, if it is determined that the entry in the page table has the right to user write permission, determining whether the TLB of the other processor has a right to Has user write permission to the physical page and, if it is determined that the TLB has the other processor the right to user write permission, to submit a clean command to the other processor via an inter-processor interrupt and to cause the other processor to release the right to the user writer permission. If it is determined that the TLB of the other processor does not have the right to user write permission or after the step of causing the other processor to release the right to user write permission, the TLB miss exception handling step or the memory exception handling step may invalidate the step of invalidating an instruction write permission. Cache of the processor that has made the access. If it is determined that the entry in the page table does not have the right to user-write permission or after the step of invalidating the instruction cache of the processor that made the access, the TLB miss-exception handling step or the memory-exception handling step may perform the step of Setting the execution attribute to the physical page where the TLB miss results from the instruction fetch in the TLB of the processor that made the access and the TLB directory memory that holds registration data for the TLBs of the plurality of processors.

Vorzugsweise kann der MESI-Emulationsverarbeitungsschritt des Weiteren den Schritt des Durchführens von sequenziellem Zugriff unter Verwendung eines Semaphors beim Durchsuchen des TLB-Verzeichnisspeichers nach der physischen Seite des Zugriffs aufweisen.Preferably, the MESI emulation processing step may further comprise the step of performing sequential access using a semaphore when searching the TLB directory store for the physical side of the access.

Mit einer Ausführungsform der vorliegenden Erfindung wird ein Computerprogrammprodukt zum Steuern von Cache-Kohärenz bereitgestellt, wobei das Computerprogrammprodukt einen Prozessor zum Ausführen eines jeden der vorstehend beschriebenen Schritte veranlasst.One embodiment of the present invention provides a computer program product for controlling cache coherency, wherein the computer program product causes a processor to perform each of the steps described above.

Ein System zum Steuern von Cache-Kohärenz gemäß einer weiteren Ausführungsform der vorliegenden Erfindung steuert Cache-Kohärenz eines Multiprozessorsystems, in dem eine Vielzahl von Prozessoren, die jeweils einen Cachespeicher und einen TLB aufweisen, gemeinsam einen Systemspeicher und einen TLB-Verzeichnisspeicher nutzen, wobei die Einträge in dem TLB-Verzeichnisspeicher anhand entsprechender Einträge in den TLBs der Vielzahl von Prozessoren dupliziert werden. Jeder der Prozessoren weist des Weiteren einen TLB-Controller, aufweisend eine TLB-Sucheinheit, die eine TLB-Suche durchführt, und einen Kohärenz-Handler auf, der eine TLB-Registrierungsdaten-Verarbeitung durchführt, wenn bei der TLB-Suche kein Treffer (no hit) sondern eine TLB-Unterbrechung auftritt. Der Kohärenz-Handler weist einen TLB-Replacement-Handler (TLB-Ersetzen-Handler), eine TLB-Fehltrefferausnahmebehandlungs-Einheit und eine Speicherausnahmebehandlungs-Einheit auf. Der TLB-Replacement-Handler durchsucht eine Seitentabelle in dem Systemspeicher und führt ein Ersetzen an TLB-Registrierungsdaten durch. Wenn es sich bei der TLB-Unterbrechung nicht um einen Seitenfehler handelt, behandelt die TLB-Fehltrefferausnahmebehandlungs-Einheit die TLB-Unterbrechung als TLB-Fehltrefferunterbrechung, wenn die TLB-Unterbrechung eine TLB-Fehltrefferunterbrechung ist, die auftritt, wenn keine Registrierungsdaten mit einer übereinstimmenden Adresse in dem TLB vorhanden sind, und die Speicherausnahmebehandlungs-Einheit behandelt die TLB-Unterbrechung als Speicherunterbrechung, wenn die TLB-Unterbrechung eine Speicherunterbrechung ist, die auftritt, wenn Registrierungsdaten mit einer übereinstimmenden Adresse im TLB vorhanden sind, das Zugriffsrecht jedoch ungültig ist. Die TLB-Fehltrefferausnahmebehandlungs-Einheit kann eine Daten-Cachezeile eines Cachespeichers entleeren, der zu einer physischen Seite gehört, auf die sich ein Auswahl-TLB-Eintrag bezieht, der beim Durchführen des TLB-Ersetzens bereinigt und gelöscht wird. Sowohl die TLB-Fehltrefferausnahmebehandlungs-Einheit als auch die Speicherausnahmebehandlungs-Einheit können ermitteln, ob es sich bei dem Speicherzugriff, der den TLB-Fehltreffer oder die Speicherunterbrechung verursacht hat, um einen Zugriff auf Daten oder einen Zugriff auf Anweisungen handelt, und, wenn ermittelt wird, dass es sich bei dem Speicherzugriff um den Zugriff auf Daten handelt, ein Recht zum Schreiben, Lesen und Ausführen auf eine physische Seite bereitstellen, auf die sich ein TLB-Eintrag bezieht, der im Zusammenhang mit dem Zugriff ersetzt oder aktualisiert wird, zusammen mit der exklusiven Beschränkung, dass es sich dabei um ein exklusives Zugriffsrecht auf die physische Seite in dem TLB eines anderen Prozessors handelt.A system for controlling cache coherency according to another embodiment of the present invention controls cache coherency of a multiprocessor system in which a plurality of processors, each having a cache and a TLB, share system memory and a TLB directory store, the Entries in the TLB directory memory are duplicated by means of corresponding entries in the TLBs of the plurality of processors. Each of the processors further includes a TLB controller comprising a TLB search unit that performs a TLB search and a coherency handler that performs TLB registration data processing when no hit is detected in the TLB search (no hit) but a TLB interruption occurs. The coherency handler includes a TLB replacement handler, a TLB miss exception handler, and a memory exception handler. The TLB replacement handler searches a page table in the system memory and performs a replace to TLB registration data. If the TLB interrupt is not a page fault, the TLB miss exception handler treats the TLB interrupt as a TLB miss interrupt if the TLB interrupt is a TLB miss interrupt that occurs if no registration data matches a matching one Address in the TLB, and the memory exception handler treats the TLB interrupt as a memory interrupt if the TLB interrupt is a memory interrupt that occurs when there is registration data with a matching address in the TLB, but the access right is invalid. The TLB miss exception handler may flush a data cache line of a cache associated with a physical page to which a select TLB entry pertains and clears upon performing TLB replacement. Both the TLB miss exception handler and the memory exception handler may determine whether the memory access that caused the TLB miss or memory interrupt is accessing data or accessing instructions, and if detected in that the memory access is data access, providing a right to write, read and execute on a physical page to which a TLB entry related to the access is replaced or updated with the exclusive limitation that it is an exclusive right to access the physical page in another processor's TLB.

Sowohl die TLB-Fehltrefferausnahmebehandlungs-Einheit als auch die Speicherausnahmebehandlungs-Einheit können ermitteln, ob es sich bei dem Speicherzugriff, der den TLB-Fehltreffer oder die Speicherunterbrechung verursacht hat, um einen Zugriff auf Daten oder einen Zugriff auf Anweisungen handelt, wenn ermittelt wird, dass es sich bei dem Speicherzugriff um den Zugriff auf Anweisungen handelt, können sie ermitteln, ob ein Eintrag in einer Seitentabelle in dem Systemspeicher ein Recht zur Benutzerschreiberlaubnis auf die physische Seite aufweist, auf der die TLB-Fehltrefferunterbrechung aus einem Anweisungsabruf resultiert, wenn ermittelt wird, dass der Eintrag in der Seitentabelle das Recht zur Benutzerschreiberlaubnis hat, kann ermittelt werden, ob der TLB des anderen Prozessors ein Recht zur Benutzerschreiberlaubnis auf die physische Seite hat, und wenn ermittelt wird, dass der TLB des anderen Prozessors das Recht zur Benutzerschreiberlaubnis hat, können sie ein Clean Command an den anderen Prozessor über einen Inter-Prozessor-Interrupt übermitteln und den anderen Prozessor zum Freigeben des Rechtes zur Benutzerschreiberlaubnis veranlassen.Both the TLB miss exception handler and the memory exception handler may determine whether the memory access that caused the TLB miss or memory interrupt is accessing data or accessing instructions when it is detected. That the memory access is access to instructions, they can determine whether an entry in a page table in system memory has a right to user write permission on the physical side, where the TLB miss interrupt results from an instruction fetch, if it is determined that the entry in the page table has the right to user write permission, then it can be determined whether the TLB of the other processor has a right to user write permission to the physical Page, and if it is determined that the other processor's TLB has the right to user-write permission, they may submit a clean command to the other processor via an inter-processor interrupt and cause the other processor to release the user-write permission.

Das System zum Steuern von Cache-Kohärenz kann des Weiteren einen TLB-Verzeichnisspeicher (directory memory) aufweisen, der Registrierungsdaten für die TLBs der Vielzahl von Prozessoren enthält und der von der Vielzahl von Prozessoren nach einer physischen Seite durchsucht wird.The system for controlling cache coherency may further comprise a TLB directory memory containing registration data for the TLBs of the plurality of processors and which is searched by the plurality of processors for a physical page.

Vorzugsweise kann das Multiprozessorsystem eine Vielzahl von Knoten aufweisen, wobei jeder der Vielzahl von Knoten die Vielzahl von Prozessoren aufweisen kann, der Systemspeicher über einen kohärenten gemeinsam genutzten Bus („shared Bus“) mit der Vielzahl von Prozessoren und dem TLB-Verzeichnisspeicher und einem Semaphor-Handler verbunden ist, der für den sequenziellen Zugriff auf den TLB-Verzeichnisspeicher durch die Vielzahl von Prozessoren unter Verwendung eines Semaphors verwendet wird, wobei der TLB-Verzeichnisspeicher und der Semaphor-Handler mit dem kohärenten gemeinsam genutzten Bus über einen Bridge-Mechanismus verbunden sind. Die Vielzahl von Knoten kann untereinander durch einen NCC-NUMA-Mechanismus verbunden sein.Preferably, the multiprocessor system may include a plurality of nodes, wherein each of the plurality of nodes may include the plurality of processors, the system memory via a shared bus with the plurality of processors and the TLB directory memory, and a semaphore Handler used for the sequential access to the TLB directory memory by the plurality of processors using a semaphore, the TLB directory memory and the semaphore handler being connected to the coherent shared bus via a bridge mechanism , The plurality of nodes may be interconnected by an NCC NUMA mechanism.

Vorteilhafte Auswirkungen der ErfindungAdvantageous effects of the invention

Mit der vorliegenden Erfindung kann eine Cache-Kohärenz-Steuerung erzielt werden, die eine erhöhte Skalierbarkeit eines Shared-Memory-Multiprocessor-Systems und eine verbesserte Kostenentwicklung bei gleichzeitiger Geringhaltung der Kosten von Hardware und Software ermöglicht. Insbesondere werden ein Verfahren, ein System und ein Programmprodukt zum Erzielen einer solchen Cache-Kohärenz-Steuerung bereitgestellt, wobei die Steuerung der Cache-Kohärenz durch Software unter Verwendung von kostengünstiger Hardware und darüber hinaus ohne ein Umschreiben eines Anwendungsprogramms erzielt werden kann.With the present invention, a cache coherence control can be achieved which allows increased scalability of a shared memory multiprocessor system and improved cost performance while minimizing the cost of hardware and software. In particular, there is provided a method, system, and program product for achieving such cache coherency control, wherein control of cache coherency by software can be achieved using inexpensive hardware and, moreover, without rewriting an application program.

Figurenlistelist of figures

  • 1 ist ein Blockschaubild, das ein Multiprozessorsystem schematisch veranschaulicht, das beim Erzielen des Steuerns von Cache-Kohärenz gemäß der vorliegenden Erfindung verwendet werden kann. 1 Figure 12 is a block diagram that schematically illustrates a multiprocessing system that may be used in achieving control of cache coherency in accordance with the present invention.
  • 2 ist ein Blockschaubild, das schematisch ein System zum Steuern von Cache-Kohärenz gemäß einer Ausführungsform der vorliegenden Erfindung veranschau licht. 2 FIG. 12 is a block diagram schematically illustrating a system for controlling cache coherency in accordance with an embodiment of the present invention. FIG.
  • 3 veranschaulicht eine schematische Konfiguration eines TLB-Verzeichnisspeichers. 3 illustrates a schematic configuration of a TLB directory store.
  • 4 ist ein Ablaufplan, der ein Verfahren zum Steuern von Cache-Kohärenz gemäß einer Ausführungsform der vorliegenden Erfindung schematisch veranschaulicht. 4 FIG. 10 is a flowchart schematically illustrating a method of controlling cache coherency according to an embodiment of the present invention.
  • 5 ist ein Ablaufplan, der eine Bereinigungsverarbeitung (eviction processing) an einem Auswahl-TLB-Eintrag (victim TLB entry) in einer Subroutine von sowohl der TLB-Fehltrefferausnahmebehandlung als auch der Speicherausnahmebehandlung durch einen Kohärenz-Handler veranschaulicht. 5 FIG. 10 is a flowchart illustrating eviction processing on a victim TLB entry in a subroutine of both the TLB miss exception handler and a memory handler exception handling.
  • 6 ist ein Ablaufplan, der eine MESI-Emulationsverarbeitung in einer Subroutine von sowohl der TLB-Fehltrefferausnahmebehandlung als auch der Speicherausnahmebehandlung durch einen Kohärenz-Handler veranschaulicht. 6 FIG. 13 is a flowchart illustrating MESI emulation processing in a subroutine of both the TLB miss handling and the memory handover by a coherency handler.
  • 7 ist ein Ablaufplan, der Anweisungs-Cache-Kohärenz-Verarbeitung in einer Subroutine von sowohl der TLB-Fehltrefferausnahmebehandlung als auch der Speicherausnahmebehandlung durch einen Kohärenz-Handler veranschaulicht. 7 Figure 12 is a flowchart illustrating instruction cache coherency processing in a subroutine of both the TLB miss exception handler and a memory handler exception handling.
  • 8 stellt Abläufe dar, die veranschaulichen, wie ein Semaphor für einen Eingang (entrance) und einen Ausgang (exit) in einen Kohärenz-Handler verwendet wird. 8th Figure 3 illustrates procedures that illustrate how to use a semaphore for an input and an exit in a coherency handler.
  • 9 veranschaulicht eine schematische Konfiguration eines kohärenten Shared-Memory-Multiprocessor-Systems, das zu einem hybriden System aus SMP und NCC-NUMA erweitert wird. 9 Figure 12 illustrates a schematic configuration of a coherent shared memory multiprocessor system extended to a hybrid system of SMP and NCC NUMA.
  • 10 veranschaulicht eine schematische Konfiguration eines lokalen TLB-Verzeichnisspeichers für einen LSM. 10 illustrates a schematic configuration of a local TLB directory store for an LSM.

Beschreibung der Ausführungsformen Description of the embodiments

Im Folgenden wird unter Bezugnahme auf die Zeichnungen die am besten geeignete Praktik zum Umsetzen der vorliegenden Erfindung beschrieben. Die nachstehend beschriebenen Ausführungsformen beabsichtigen keine Beschränkung des Umfangs der Ansprüche der Erfindung, und zum Lösen des Problems sind auch nicht alle der Kombinationen und Leistungsmerkmale erforderlich, die in den Ausführungsformen beschrieben werden. Die vorliegende Erfindung kann in vielen unterschiedlichen Formen ausgeführt sein und sollte nicht im auf die Inhalte der hierin beschriebenen Ausführungsformen beschränkenden Sinne erachtet werden. Im Verlauf dieser Beschreibung sind dieselben Abschnitte und Elemente mit den denselben Referenzzahlen versehen.In the following, the most suitable practice for practicing the present invention will be described with reference to the drawings. The embodiments described below are not intended to limit the scope of the claims of the invention, and to solve the problem, not all of the combinations and features described in the embodiments are required. The present invention may be embodied in many different forms and should not be construed as limiting the contents of the embodiments described herein. In the course of this description the same sections and elements are given the same reference numerals.

1 ist ein Blockschaubild, das ein Multiprozessorsystem100 schematisch darstellt, das beim Erzielen von Steuerung von Cache-Kohärenz gemäß der vorliegenden Erfindung verwendet werden kann. Das Multiprozessorsystem100 weist eine Vielzahl von Prozessoren101, einen Speicherbus102 und einen Systemspeicher103 auf. Die Prozessoren101 sind über den Speicherbus102 mit dem Systemspeicher103 verbunden. Jeder der Prozessoren101 weist eine CPU104, eine MMU (Speicherverwaltungseinheit, memory management unit)105 und einen Cachespeicher106 auf. Die MMU105 weist einen TLB (Adressumsetzpuffer, Translation Lookaside Buffer)107 auf. Der Cachespeicher106 in dem Prozessor speichert einen Teil des Inhaltes des Systemspeichers103. In einem SMP-System wie beispielsweise dem Multiprozessorsystem100 können die Prozessoren101 Daten von dem Systemspeicher103 lesen und in ihn schreiben, darüber hinaus muss für Daten und Anweisungen in dem Systemspeicher103 und in den Cachespeichern106 Kohärenz hergestellt werden. Vorzugsweise kann der Systemspeicher103 mit einer Seitentabelle108 darin bereitgestellt werden. Durch die Verwendung einer Vielzahl von Einträgen, das heißt einzelnen Registrierungsdaten in der Seitentabelle108 können virtuelle Adressen auf effiziente Weise auf physischen Adressen in dem Systemspeicher103 abgebildet (mapped) werden. Der Systemspeicher103 weist einen Speicher-Controller109 auf und tauscht speicherrelevante Daten mit einer an ihn angeschlossenen externen Speichereinheit120 aus, das heißt, er liest und schreibt Daten auf und von der externen Speichereinheit120. Jeder der Prozessoren101 kann eine in einer Anweisung oder in Daten enthaltene virtuelle Adresse in eine physische Adresse in dem Systemspeicher103 durch Duplizieren von in jedem einzelnen Eintrag in der MMU105 enthaltenen Daten unter Verwendung des TLB107 übersetzen. Da der TLB107 Adressdaten in einem Speicherbereich bereitstellt, ist es zum Sicherstellen einer korrekten Funktionsweise des TLB107 wichtig, Kohärenz zwischen den TLBs107 in dem Multiprozessorsystem100 aufrechtzuerhalten. 1 is a block diagram showing amultiprocessor system 100 which may be used in achieving control of cache coherency in accordance with the present invention. Themultiprocessor system 100 has a variety ofprocessors 101 , amemory bus 102 and asystem memory 103 on. Theprocessors 101 are over thememory bus 102 with thesystem memory 103 connected. Each of theprocessors 101 has aCPU 104 , an MMU (memory management unit) 105 and acache 106 on. TheMMU 105 has a TLB (Translation Lookaside Buffer) 107 on. Thecache 106 in the processor stores a portion of the contents of thesystem memory 103 , In an SMP system such as themultiprocessor system 100 can theprocessors 101 Data from thesystem memory 103 In addition to reading and writing to him, there must be data and instructions in thesystem memory 103 and in thecache memories 106 Coherence can be produced. Preferably, thesystem memory 103 with a page table 108 be provided therein. By using a variety of entries, that is, individual registration data in the page table 108 Virtual addresses can be efficiently dispatched to physical addresses insystem memory 103 be mapped. Thesystem memory 103 has amemory controller 109 and exchanges memory-relevant data with an external storage unit connected to it 120 that is, it reads and writes data to and from theexternal storage device 120 , Each of theprocessors 101 may include a virtual address contained in an instruction or data in a physical address in thesystem memory 103 by duplicating in each individual entry in theMMU 105 contained data using theTLB 107 translate. Because of theTLB 107 To provide address data in a memory area, it is to ensure correct operation of theTLB 107 important, coherence between theTLBs 107 in themultiprocessor system 100 maintain.

2 ist ein Blockschaubild, das den Prozessor101 mit einem System zum Steuern von Cache-Kohärenz gemäß einer Ausführungsform der vorliegenden Erfindung schematisch darstellt. Der Cachespeicher106 des Prozessors101 weist einen Anweisungs-Cachespeicher106' und einen Daten-Cachespeicher106" auf. Der Prozessor101 ist mit einem TLB-Verzeichnisspeicher121 verbunden, auf den alle Prozessoren101 zusätzlich zu dem Speicherbus102 zugreifen können. Bei dem TLB-Verzeichnisspeicher121 handelt es sich um einen Speicher, in dem Daten wie beispielsweise eine Nummer einer physischen Seite, ein Lese/Schreib/Ausführungszugriffsrecht und ein Gültigkeits-Status (valid status), die in den TLBs107 sämtlicher Prozessoren101 gehalten werden, dupliziert werden und die duplizierten Daten werden auf globalen Adressen abgebildet (mapped), auf die sich die CPUs104 sämtlicher Prozessoren101 beziehen können, so dass ein lokaler Prozessor101 den Inhalt des TLB107 eines fernen Prozessors101 mit Hilfe eines Inter-Prozessor-Interrupts überprüfen kann, so dass der ferne Prozessor101 nicht unterbrochen werden muss. Jede der CPUs104 besitzt einen Betriebsmodus (operational mode), in dem eine Anwendungsprogramm- (AP) Verarbeitung122 ausgeführt wird (Benutzermodus, user mode), einen Betriebsmodus, in dem eine BS-Kernel-Verarbeitung124 ausgeführt wird (Supervisor-Modus) und einen Betriebsmodus, in dem eine Interrupt-Routine (interrupt handler) ausgeführt wird. Eine Kohärenz-Handler-Routine126 wird in dem dritten Modus ausgeführt. Ein TLB-Controller123 enthält eine TLB-Sucheinheit125 zum Durchführen einer TLB-Suche zu dem Zeitpunkt, zu dem die AP-Verarbeitung122 auf den Cachespeicher106 zugreift oder zu dem Zeitpunkt, zu dem die BS-Kernel-Verarbeitung124 auf den Cachespeicher106 und den Kohärenz-Handler126 zum Ausführen der Registrierungsdatenverarbeitung des TLB107 zugreift, wenn in der TLB-Suche kein Treffer (no hit) vorliegt, sondern eine TLB-Unterbrechung (TLB interrupt) auftritt. Der Kohärenz-Handler126 ist außerhalb der BS-Kernel-Verarbeitung124 zum Behandeln eines Seitenfehlers angeordnet, wie dies in2 veranschaulicht ist. 2 is a block diagram showing theprocessor 101 with a system for controlling cache coherency according to an embodiment of the present invention. Thecache 106 of theprocessor 101 has an instruction cache 106 ' and a data cache 106 ' on. Theprocessor 101 is with aTLB directory store 121 connected to the allprocessors 101 in addition to thememory bus 102 can access. In theTLB directory store 121 it is a memory in which data such as a physical page number, a read / write / execute access right, and a valid status, contained in theTLBs 107 allprocessors 101 are kept, duplicated, and the duplicated data is mapped to global addresses pointed to by theCPUs 104 allprocessors 101 can refer, so alocal processor 101 the content of the TLB 107 aremote processor 101 can check with the help of an inter-processor interrupt, leaving theremote processor 101 does not have to be interrupted. Each of theCPUs 104 has an operational mode in which application program (AP)processing 122 is executed (user mode, user mode), an operating mode in which aBS kernel processing 124 is executed (supervisor mode) and an operating mode in which an interrupt routine (interrupt handler) is executed. Acoherence handler routine 126 is executed in the third mode. ATLB controller 123 contains aTLB search unit 125 for performing a TLB search at the time the AP processing 122 to thecache 106 accesses or at the time theOS kernel processing 124 to thecache 106 and thecoherence handler 126 for performing registration data processing of theTLB 107 accesses if there is no hit in the TLB search, but a TLB interrupt (TLB interrupt) occurs. Thecoherence handler 126 is outside of theBS kernel processing 124 arranged to handle a page fault, as shown in FIG 2 is illustrated.

Die TLB-Sucheinheit125 weist eine Cachespeicher-Tag-Sucheinheit127 zum Suchen nach Cachespeicher-Tags auf, wenn ein Treffer (hit) in der TLB-Suche auftritt. Liegt ein Treffer in einer Cachespeicher-Tag-Suche vor, weist die Cachespeicher-Tag-Sucheinheit127 die AP-Verarbeitung122 an, auf den Cachespeicher106 zuzugreifen. Liegt kein Treffer in einer Cachespeicher-Tag-Suche sondern ein Cachespeicher-Tag-Fehltreffer (miss) vor, weist die Cachespeicher-Tag-Sucheinheit127 die AP-Verarbeitung122 an, nicht auf den Cachespeicher106 sondern den Systemspeicher103 zuzugreifen.TheTLB search engine 125 has a cachetag search unit 127 to search for cache tags when a hit occurs in the TLB search. If there is a hit in a cache tag search, the cache tag search unit points 127 the AP processing 122 on, on thecache 106 access. Is not a hit in a cache tag search but a cache memory Tag miss (miss) assigns the cachetag search unit 127 the AP processing 122 on, not on thecache 106 but thesystem memory 103 access.

Der Kohärenz-Handler126 weist einen TLB-Replacement-Handler128, eine TLB-Fehltrefferbehandlungs-Einheit129 und eine Speicherausnahmebehandlungs-Einheit130 auf. Der TLB-Replacement-Handler128 weist eine Seitentabellen-Sucheinheit131 und eine Seitenfehler-Ermittlungseinheit132 auf. Die Seitentabellen-Sucheinheit131 führt eine Suche auf der Seitentabelle108 in dem Systemspeicher103 in dem Fall durch, in dem eine TLB-Unterbrechung von der TLB-Sucheinheit125 gefunden wurde. Die Seitenfehler-Ermittlungseinheit132 ermittelt anhand der von der Seitentabellen-Sucheinheit131 durchgeführten Suche, ob ein Seitenfehler aufgetreten ist. Wenn die Seitenfehler-Ermittlungseinheit132 anhand der von der Seitentabellen-Sucheinheit131 durchgeführten Suche ermittelt, dass kein Seitenfehler aufgetreten ist, das heißt, dass eine Seite mit TLB-Einträgen (TLB entry page) in der Seitentabelle108 vorhanden ist, führt die TLB-Fehltrefferbehandlungs-Einheit129 oder die Speicherausnahmebehandlungs-Einheit130 Kohärenz-Steuerung durch. Von den Fällen, in denen, obgleich eine Seite mit TLB-Einträgen (TLB entry page) in der Seitentabelle108 vorhanden ist und kein Seitenfehler auftritt, kein Treffer in einer TLB-Suche gefunden wird und eine TLB-Unterbrechung auftritt, wird der Fall, in dem ein mit der Adresse übereinstimmender Eintrag, das heißt, Registrierungsdaten, nicht in dem TLB vorhanden ist, als „TLB-Fehltrefferunterbrechung“ („TLB-miss interrupt“) bezeichnet, und ein Fall, in dem ein mit der Adresse übereinstimmender Eintrag, das heißt, Registrierungsdaten, in dem TLB vorhanden ist, jedoch das Zugriffsrecht ungültig (invalid) ist, wird als „Speicherunterbrechung“ („storage interrupt“) bezeichnet. Die TLB-Fehltrefferbehandlungs-Einheit129 behandelt eine TLB-Fehltrefferunterbrechung, wohingegen die Speicherausnahmebehandlungs-Einheit130 eine Speicherunterbrechung behandelt. Da der Kohärenz-Handler126 Kohärenz-Steuerung ausführt, wenn kein Seitenfehler auftritt, unterscheidet sich dieses Verfahren von dem VM-basierten „shared memory“-Verfahren, bei dem Kohärenz-Steuerung dann ausgeführt wird, wenn ein Seitenfehler auftritt.Thecoherence handler 126 has aTLB replacement handler 128 , a TLBmiss response unit 129 and a memoryexception handling unit 130 on. TheTLB Replacement Handler 128 has a pagetable search unit 131 and a pagefault determination unit 132 on. The pagetable search unit 131 performs a search on the page table 108 in thesystem memory 103 in the case where a TLB interrupt from theTLB search unit 125 was found. The pagefault determination unit 132 determined from the pagetable search unit 131 performed search if a page fault occurred. If the pagefault determination unit 132 from the pagetable search engine 131 Search determines that no page fault has occurred, that is, a page with TLB entries (TLB entry page) in the page table 108 exists, performs the TLB miss-hitunit 129 or the memoryexception handling unit 130 Coherence control through. Of the cases where, although a page with TLB entries (TLB entry page) in the page table 108 is present and no page fault occurs, no hit is found in a TLB search, and a TLB interrupt occurs, the case where an entry matching the address, that is, registration data is not present in the TLB, becomes " TLB miss interrupt ", and a case in which an entry matching the address, that is, registration data in which TLB exists but the access right is invalid, is referred to as" TLB miss interrupt ". Memory interrupt ". The TLB miss-hitunit 129 handles a TLB miss interrupt, whereas the memoryexception handling unit 130 handled a memory interruption. As thecoherence handler 126 Performs coherency control when no page fault occurs, this method differs from the VM-based "shared memory" method in which coherency control is performed when a page fault occurs.

Die BS-Kernel-Verarbeitung124 weist eine Speicherverwaltungseinheit133 auf. Wenn die Seitenfehler-Ermittlungseinheit132 anhand der durch die Seitentabellen-Sucheinheit131 durchgeführten Suche ermittelt, dass ein Seitenfehler aufgetreten ist, erzeugt der TLB-Replacement-Handler128 eine Seitenfehlerunterbrechung, und die Speicherverwaltungseinheit133 der BS-Kernel-Verarbeitung124 behandelt einen Seitenfehler.TheBS kernel processing 124 has amemory management unit 133 on. If the pagefault determination unit 132 by the pagetable search unit 131 If the search found that a page fault occurred, the TLB Replacement Handler generates 128 a page fault interrupt, and thememory management unit 133BS kernel processing 124 handles a page fault.

Die TLB-Fehltrefferbehandlungs-Einheit129 und die Speicherausnahmebehandlungs-Einheit130 des Kohärenz-Handler126 führen Kohärenz-Steuerung so durch, dass nur eine physische Adresse, die in dem TLB107 in einem lokalen Prozessor101 registriert ist, in dem Cachespeicher106 gehalten wird. Deshalb wird, wenn der Kohärenz-Handler126 TLB-Ersetzen (replacement) durchführt, eine physische Seite, auf die sich ein TLB-Eintrag, das heißt Registrierungsdaten bezieht oder beziehen, die als Auswahl (victim) zu bereinigen sind, entleert (flushed), das heißt von dem Cachespeicher zurückkopiert und invalidiert. Darüber hinaus unterliegt das Lese-/Schreib-/Ausführungsrecht auf eine physische Seite, auf die sich ein hinzugefügter TLB-Eintrag, das heißt Registrierungsdaten bezieht oder beziehen, der exklusiven Beschränkung im Sinne eines exklusiven Zugriffsrechtes auf diese physische Seite in dem TLB107 eines fernen Prozessors101. Zu Beispielen einer exklusiven Beschränkung gehört die „invalidate-on-write“-Beschränkung, insbesondere die Beschränkung des MESI-Protokolls. Bei dem MESI-Protokoll handelt es sich um ein Kohärenz-Protokoll, das als „write-invalidate“-Typ klassifiziert ist. Es gibt auch einen „write-update“-Typ. Beide Typen können verwendet werden. Die Beschränkung des MESI-Protokolls wird nachstehend beschrieben. Wird eine solche Beschränkung hinzugefügt, kann Kohärenz vernachlässigt werden, es sei denn, es liegt ein TLB-Fehltreffer (TLB miss) vor. Da das VM-basierte „shared memory“-Verfahren (mit gemeinsam genutztem Speicher) ausschließlich eine in einer Seitentabelle gehaltene logische Seite im Cachespeicher zwischenspeichert, kann in dem Fall, in dem dieselbe physische Seite auf unterschiedlichen logischen Seiten abgebildet wird, keine Kohärenz durch das Verfahren hergestellt werden.The TLB miss-hitunit 129 and the memoryexception handling unit 130 of thecoherence handler 126 Carry out coherence control so that only one physical address in theTLB 107 in alocal processor 101 is registered in thecache 106 is held. Therefore, if thecoherence handler 126 TLB replacement, a physical page to which a TLB entry, that is, to refer or derive registration data to be cleaned up as victim, is flushed, that is, copied back from the cache and invalidated , In addition, the read / write / execute right to a physical page to which an added TLB entry, that is, to refer or derive registration data, is subject to the exclusive exclusive access right of that physical page in the TLB 107 aremote processor 101 , Examples of an exclusive constraint include the invalidate-on-write restriction, in particular the limitation of the MESI protocol. The MESI protocol is a coherence protocol classified as a "write-invalidate" type. There is also a write-update type. Both types can be used. The limitation of the MESI protocol will be described below. If such a constraint is added, coherence can be neglected unless there is a TLB miss. Since the shared-memory VM-based method exclusively caches a logical page held in a page table, in the case where the same physical page is mapped to different logical pages, coherency can not be achieved by the Process are produced.

Wird oder werden ein TLB-Eintrag, das heißt Registrierungsdaten ersetzt, das heißt ausgetauscht oder für eine TLB-Fehltrefferunterbrechung und eine Speicherunterbrechung aktualisiert, wird das Lese/Schreib/Ausführungsrecht bereitgestellt, das der Beschränkung des MESI-Protokolls entspricht. In einem Prozessor, in dem eine Tabellensuche von Hardware gestützt wird, erfüllt der TLB gerade mal die Funktion, dass ein Teil der Seitentabelle im Cachespeicher zwischengespeichert wird, wohingegen für die Steuerung der Cache-Kohärenz, die in2 veranschaulicht wird, unter Verwendung eines von Software gesteuerten TLB in dem TLB107 nur ein Zugriffsrecht von in der Seitentabelle aufgezeichneten Zugriffsrechten eingestellt wird, welches der exklusiven Beschränkung des MESI-Protokolls entspricht. Dementsprechend handelt es sich bei dem in dem TLB107 aufgezeichneten Zugriffsrecht um dasselbe Zugriffsrecht, das in der Seitentabelle108 des Systemspeichers103 aufgezeichnet ist oder um eins, dem die Beschränkung hinzugefügt wird.When a TLB entry, that is, registration data is replaced, that is, exchanged, or updated for a TLB miss interrupt and a memory interrupt, the read / write / execute right corresponding to the restriction of the MESI protocol is provided. In a processor supporting a hardware table lookup, the TLB just performs the function of caching a portion of the page table in the cache, whereas for cache coherency control, the 2 using a software controlled TLB in theTLB 107 only an access right of access rights recorded in the page table is set, which corresponds to the exclusive restriction of the MESI protocol. Accordingly, the one in theTLB 107 recorded access right to the same access right in the page table 108 thesystem memory 103 is recorded or at one to which the restriction is added.

Bei einer TLB-Fehltrefferunterbrechung oder einer Speicherunterbrechung sucht ein lokaler Prozessor101 durch Bezugnahme auf den TLB-Verzeichnisspeicher121 nach einem TLB-Eintrag, das heißt, nach Registrierungsdaten für einen fernen Prozessor101, der aktualisiert werden muss, um der exklusiven Beschränkung des MESI- Protokolls zu entsprechen. Um zu verhindern, dass eine Vielzahl von Prozessoren101 gleichzeitig den TLB-Verzeichnisspeicher121 aktualisiert, kann für den Zugriff auf den TLB-Verzeichnisspeicher121 vorzugsweise ein sequenzieller Zugriff unter Verwendung eines Semaphors angewendet werden. Der TLB-Verzeichnisspeicher121 kann vorzugsweise mit einem inhaltsadressierbaren Speicher (content addressable memory, CAM) implementiert werden. Bei einem CAM enthält ein Suchwort eine Nummer einer physischen Seite und ein Lese/Schreib/Ausführungserlaubnis-Bit, und bei einem, in dem eine Prozessor-ID und eine TLB-Eintragsnummer gemeinsam erscheinen, handelt es sich um eine Adresseingabe des CAM. Ein für den Zugriff auf den CAM verwendeter Bus kann vorzugsweise ein von einem Speicherbus unabhängiger Bus und eigens für eine CPU vorgesehen sein. Zu Beispielen für einen solchen Bus gehört ein DRC- (device control register) Bus. In the event of a TLB miss interruption or a memory interrupt, a local processor searches 101 by referring to theTLB directory store 121 after a TLB entry, that is, registration data for aremote processor 101 which must be updated to comply with the exclusive limitation of the MESI protocol. To prevent a variety ofprocessors 101 at the same time theTLB directory memory 121 updated, can be used to access theTLB directory store 121 preferably a sequential access using a semaphore be applied. TheTLB directory store 121 may preferably be implemented with a content addressable memory (CAM). In a CAM, a search word includes a physical page number and a read / write / execute permission bit, and one in which a processor ID and a TLB entry number appear in common is an address input of the CAM. A bus used to access the CAM may preferably be a bus independent of a memory bus and dedicated to a CPU. Examples of such a bus include a DRC (device control register) bus.

3 veranschaulicht schematisch eine Konfiguration des TLB-Verzeichnisspeichers121. Der TLB-Verzeichnisspeicher121 hält Einträge, das heißt Registrierungsdaten in den TLBs107 der Prozessoren101 und ermöglicht so, dass jeder der Prozessoren101 einen Eintrag, das heißt Registrierungsdaten für die TLBs107 der anderen Prozessoren101 ohne einen Inter-Prozessor-Interrupt verfolgen kann. Cache-Steuerung wird so durchgeführt, dass nur je eine Seite eines Eintrages, das heißt von in dem TLB107 eines jeden der Prozessoren101 registrierten Registrierungsdaten in einem Cachespeicher zwischengespeichert werden dürfen, womit ein Benutzungsstatus einer Seite in jedem Cachespeicher durch Durchsuchen der TLBs107 ermittelt werden kann. Der TLB-Verzeichnisspeicher121 wird auf einem globalen Adressraum abgebildet, so dass Prozessoren101 darauf zugreifen können. Jeder Eintrag in dem TLB-Verzeichnisspeicher121 beinhaltet Daten zum Gültigkeits-Status (valid status information)300, die als VS (valid status) angezeigt werden, Daten zur Nummer der physischen Seite301, angezeigt als PPN (physical page number) und Daten zum Schutz des Lese/Schreib/Ausführungsrechtes302, angezeigt als R/W/E P (read/write/execute protection). Dabei handelt es sich um Daten, die anhand entsprechender, in den TLBs107 aller Prozessoren101 gehaltener Daten dupliziert wurden. Auf der linken Seite wird die Adresse des TLB-Verzeichnisspeichers121, die sich aus der Kombination einer Prozessor-ID und einer TLB-Eintragsnummer zusammensetzt, angezeigt; auf der rechten Seite werden Gruppen von Einträgen, die Prozessor0 bis Prozessor N entsprechen, angezeigt. Unter Verwendung des TLB-Verzeichnisspeichers121 werden die Nummern der physischen Seiten in den TLBs107 der Prozessoren101 gesucht, womit eine Kohärenz zwischen verschiedenen Prozessen hergestellt wird. Vorzugsweise kann der TLB-Verzeichnisspeicher121 schneller sein, indem er als CAM implementiert wird, um die nächsten zwei Suchoperationen umzusetzen: die eine ist eine Suche nach einer Seite, die mit einer Nummer einer physischen Seite übereinstimmt und eine Schreiberlaubnis aufweist, und die andere ist eine Suche nach einer Seite, die mit einer Nummer einer physischen Seite übereinstimmt und eine Lese/Schreib oder Ausführungserlaubnis aufweist. Bei einer Suche enthält eine Suchworteingabe des CAM eine Nummer einer physischen Seite und die Erlaubnis zum Zugriff auf eine Seite, und eine Suchworteingabe, bei der eine Prozessor-ID und eine TLB-Eintragsnummer zusammengefasst werden, wird in eine Adresseingabe des CAM eingegeben. Ein von einem Prozessor genutzter Bus, wie beispielsweise der DCR-Bus ist als Bus zur Verwendung beim CAM-Zugriff geeignet. 3 schematically illustrates a configuration of theTLB directory memory 121 , TheTLB directory store 121 holds entries, that is registration data in theTLBs 107 theprocessors 101 and so allows each of theprocessors 101 an entry, that is registration data for theTLBs 107 theother processors 101 without being able to track an inter-processor interrupt. Cache control is done so that only one page of an entry, that is, one in theTLB 107 of each of theprocessors 101 registered registry data is allowed to be cached in a cache memory, thus allowing a usage state of a page in each cache by searching theTLBs 107 can be determined. TheTLB directory store 121 is mapped to a global address space, allowingprocessors 101 can access it. Each entry in theTLB directory store 121 Contains valid status information 300 that are displayed as VS (valid status), data about thephysical page number 301 , displayed as PPN (physical page number) and data for protection of read / write / execute right 302 , displayed as R / W / EP (read / write / execute protection). These are data that are based on corresponding, in theTLBs 107 allprocessors 101 held data was duplicated. On the left is the address of theTLB directory store 121 displayed, which consists of the combination of a processor ID and a TLB entry number; on the right are groups of entries, theprocessor 0 to processor N, displayed. Using theTLB directory store 121 become the numbers of the physical pages in theTLBs 107 theprocessors 101 which creates coherence between different processes. Preferably, theTLB directory store 121 be faster by implementing it as CAM to implement the next two search operations: one is a search for a page that matches a physical page number and has a write permission, and the other is a page search that matches a physical page number and has a read / write or execute permission. In a search, a search word input of the CAM includes a number of a physical page and the permission to access a page, and a search word input in which a processor ID and a TLB entry number are merged is input to an address input of the CAM. A bus used by a processor, such as the DCR bus, is suitable as a bus for use in CAM access.

4 ist ein Ablaufplan (400), der schematisch ein Verfahren zum Steuern von Cache-Kohärenz gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. Dieses Verfahren kann durch den Prozessor101 umgesetzt werden, dessen TLB von Software gesteuert wird, wie dies in2 dargestellt ist. Der Prozess startet, wenn ein Anwendungsprogramm auf den Cachespeicher zugreift (Schritt401) und der Prozessor eine TLB-Suche durchführt (Schritt402). Liegt in der TLB-Suche ein Treffer vor, sucht der Prozessor101 nach dem Cachespeicher-Tag des Treffer erzielenden TLB-Eintrages (Schritt403). Liegt ein Treffer in der Cachespeicher-Tag-Suche vor, weist der Prozessor101 einen Zugriff auf den Cachespeicher an und nimmt den Zugriff auf den Cachespeicher vor (Schritt404). Kommt es zu einem Fehltreffer (miss) bei der Cachespeicher-Tag-Suche, weist der Prozessor101 einen Zugriff auf den Systemspeicher an und nimmt den Zugriff auf den Systemspeicher vor (Schritt405). Liegt bei der TLB-Suche kein Treffer sondern eine TLB-Unterbrechung (TLB interrupt) vor (Schritt402), ermittelt der Prozessor101, ob es sich bei der TLB-Unterbrechung um einen Seitenfehler handelt (Schritt406). Wenn ermittelt wird, dass es sich bei der TLB-Unterbrechung nicht um einen Seitenfehler handelt, das heißt, eine Seite des TLB-Eintrages, das heißt der Registrierungsdaten ist in der Seitentabelle vorhanden (NEIN in Schritt406), führt der Prozessor101 eine Subroutine der TLB-Fehltrefferbehandlung oder der Speicherausnahmebehandlung unter Verwendung des Kohärenz-Handler durch (Schritt407). Wenn ermittelt wird, dass es sich bei der TLB-Unterbrechung um einen Seitenfehler handelt (JA in Schritt406), erzeugt der Prozessor101 eine Seitenfehlerunterbrechung (page fault interrupt) und führt eine Subroutine der Seitenfehlerbehandlung unter Verwendung der Speicherverwaltungseinheit der BS-Kernel-Verarbeitung durch (Schritt408). 4 is a flowchart ( 400 ), which schematically illustrates a method for controlling cache coherency according to an embodiment of the present invention. This procedure can be done by theprocessor 101 whose TLB is controlled by software, as in 2 is shown. The process starts when an application program accesses the cache (step 401 ) and the processor performs a TLB search (step 402 ). If there is a hit in the TLB search, the processor looks for 101 after the cache tag of the hit achieving TLB entry (step 403 ). If there is a hit in the cache tag search, the processor points 101 accesses the cache and accesses the cache (step 404 ). If there is a miss in the cache tag search, the processor rejects 101 accesses system memory and accesses system memory (step 405 ). If there are no hits in the TLB search but a TLB interrupt (TLB interrupt) (step 402 ), the processor determines 101 whether the TLB interrupt is a page fault (step 406 ). If it is determined that the TLB interrupt is not a page fault, that is, one page of the TLB entry, that is, the registration data is present in the page table (NO in step 406 ), the processor performs 101 a subroutine of the TLB miss treatment or the memory exception handling using the coherency handler (step 407 ). If it is determined that the TLB interrupt is a page fault (YES in step 406 ), the processor generates 101 a page fault interrupt and performs a Subroutine of the page error handling using the memory management unit of the BS kernel processing by (step 408 ).

5 ist ein Ablaufplan (500), der Bereinigungsverarbeitung (eviction processing) an einem Auswahl-TLB-Eintrag, das heißt, an Registrierungsdaten in einer Subroutine der TLB-Fehltrefferausnahmebehandlung und der Speicherausnahmebehandlung durch den Kohärenz-Handler (siehe Schritt407 in4) veranschaulicht. Die Subroutine der TLB-Fehltrefferausnahmebehandlung durch den Kohärenz-Handler startet am Eingang in die TLB-Fehltrefferausnahmebehandlung (Schritt501), und die Subroutine der Speicherausnahmebehandlung durch den Kohärenz-Handler startet am Eingang in die Speicherausnahmebehandlung (Schritt502). Bei der TLB-Fehltrefferausnahmebehandlung führt der Prozessor, da kein Eintrag, das heißt keine Registrierungsdaten, die mit der Adresse übereinstimmen, in dem TLB107 vorhanden ist oder sind, TLB-Ersetzen (TLB replacement) durch Importierens eines übereinstimmenden Eintrags, das heißt, von Registrierungsdaten aus der Seitentabelle108 in den TLB107 durch (Schritt503). Zu diesem Zeitpunkt aktualisiert der TLB-Verzeichnisspeicher121 den Eintrag, das heißt die Registrierungsdaten. Beim Ausführen des TLB-Ersetzens entleert (flushes) der Prozessor101 eine lokale Daten-Cachezeile (kopiert sie zurück und invalidiert sie), die zu einer physischen Seite gehört, auf die sich ein Auswahl-TLB-Eintrag, das heißt Registrierungsdaten, welche bereinigt und gelöscht werden müssen, bezieht oder beziehen (Schritt504). Dadurch wird ermöglicht, dass nur der Eintrag, das heißt, die in dem TLB registrierten Registrierungsdaten, zuverlässig in einem lokalen Prozessor in einem Cachespeicher zwischengespeichert wird oder werden, und demzufolge kann auf einfache Weise durch Prüfen des TLB eines fernen Prozessors im Falle einer TLB-Fehltrefferunterbrechung oder einer Speicherunterbrechung überprüft werden, ob Kohärenz-Steuerung erforderlich ist. Nach Schritt504 ermittelt der Prozessor101, ob es sich bei dem Speicherzugriff, der die TLB-Unterbrechung oder die Speicherunterbrechung verursacht hat, um einen Zugriff auf Daten oder einen Zugriff auf Anweisungen handelt (Schritt505). Der Prozessor101 geht in die Subroutine506 der MESI-Emulationsverarbeitung über, wenn ermittelt wird, dass es sich um einen Zugriff auf Daten handelt („DATEN“ in Schritt505), und er geht in die Subroutine507 der Anweisungs-Cachespeicher-Kohärenzverarbeitung über, wenn ermittelt wird, dass es sich um einen Zugriff auf Anweisungen handelt („ANWEISUNG“ in Schritt505). 5 is a flowchart ( 500 ), the eviction processing at a select TLB entry, that is, registration data in a TLB miss match exception subroutine, and memory exception handling by the coherency handler (seestep 407 in 4 ). The subroutine of the TLB miss response by the coherency handler starts at the input into the TLB miss exception handler (step 501 ), and the coherency handler memory exception handler subroutine starts the memory exception handling at the input (step 502 ). In the TLB miss exception handler, since there is no entry, that is, registration data that matches the address, the processor performs in theTLB 107 exists, or TLB replacement, by importing a matching entry, that is, registration data from the page table 108 in theTLB 107 through (step 503 ). At this point, the TLB directory store updates 121 the entry, that is the registration data. When executing TLB replacement, the processor flushes 101 a local data cache line (it copies back and invalidates it) that belongs to a physical page to which a select TLB entry, that is, registration data that needs to be cleaned up and deleted, refers or derives (step 504 ). This allows only the entry, that is, the registration data registered in the TLB, to be cached reliably in a local processor in a cache, and thus can be easily checked by checking the TLB of a remote processor in the case of a TLB. Check for a misfire interrupt or a memory interrupt if coherency control is required. Afterstep 504 determines theprocessor 101 whether the memory access causing the TLB interrupt or the memory interrupt is accessing data or accessing instructions (step 505 ). Theprocessor 101 goes to thesubroutine 506 MESI emulation processing if it determines that it is accessing data ("DATA" in step 505 ), and he goes to thesubroutine 507 the instruction cache coherency processing if it is determined that it is an access to instructions ("INSTRUCTION" in step 505 ).

Wie dies kurz vorstehend erwähnt wurde, wird sowohl bei einer TLB-Fehltrefferunterbrechung als auch bei einer Speicherunterbrechung beim Ersetzen oder Aktualisieren eines TLB-Eintrages, das heißt der Registrierungsdaten, das Lese/Schreib/Ausführungsrecht, das dem nachstehend beschriebenen MESI-Protokoll für die exklusive Beschränkung (exclusive constraint) entspricht, beispielsweise die „invalidate-on-write“-Beschränkung, zwischen einem lokalen und einem fernen TLB eingestellt.As mentioned briefly above, in both a TLB miss and a memory break, when replacing or updating a TLB entry, that is, the registration data, the read / write / execute right becomes the exclusive MESI protocol described below Exclusive constraint, for example, the invalidate-on-write constraint, is set between a local and a remote TLB.

Gemeinsatzes Nutzen von „Nur-Lese-Daten“ (read-only data)Common use of "read-only data" (read-only data)

Das Recht zum Lesen und Ausführen auf derselben physischen Seite kann von einer Vielzahl von Prozessoren gemeinsam genutzt werden. Kommt es zu einer TLB-Unterbrechung in einem Datenlesevorgang (data read) oder einem Anweisungsabruf (instruction fetch) und ein ferner Prozessor hat das Recht zum Schreiben auf diese physische Seite, wird diesem fernen Prozessor über einen IPI (Inter Processor Interrupt) ein Clean Command übermittelt, und dieser Prozessor wird dazu veranlasst, das Recht zum Schreiben auf diese physische Seite freizugeben.The right to read and execute on the same physical page can be shared by a variety of processors. If there is a TLB interrupt in a data read or instruction fetch and a remote processor has the right to write to that physical page, that remote processor becomes a Clean Command via an IPI (Inter Processor Interrupt) and this processor is prompted to release the right to write to this physical page.

Exklusive Steuerung/Kontrolle von SchreibdatenExclusive control / control of write data

Hat ein Prozessor das Recht zum Schreiben auf eine physische Seite, haben die anderen Prozessoren keinerlei Zugriffsrecht auf diese Seite. Mit anderen Worten bedeutet dies, dass ein ferner TLB keinerlei Art von Zugriffsrecht auf eine physische Seite hat, für die ein lokaler TLB Schreibrecht hat. Wenn dementsprechend ein Schreibzugriff (access for writing) eine TLB-Fehltrefferunterbrechung oder eine Speicherunterbrechung verursacht, wird ein ferner TLB überprüft, um zu ermitteln, ob ein ferner Prozessor Zugriffsrecht auf die physische Seite hat; wenn er solch ein Zugriffsrecht hat, wird der ferne Prozessor zum Entleeren der Daten dieser physischen Seiten aus dem fernen Cachespeicher veranlasst.If a processor has the right to write to a physical page, the other processors have no access to that page. In other words, this means that a remote TLB has no type of access to a physical page for which a local TLB has write permission. Accordingly, if an access for writing causes a TLB miss interrupt or a memory interrupt, a remote TLB is checked to determine if a remote processor has access to the physical page; if it has such an access right, the remote processor is caused to empty the data of these physical pages from the remote cache.

6 ist ein Ablaufplan (600) für die MESI-Emulationsverarbeitung als Beispiel dafür, wie durch Softwaresteuerung eine MESI-Protokollbeschränkung auferlegt wird. Wenn in5 (in Schritt505) ermittelt wird, dass es sich bei dem Speicherzugriff um einen Zugriff auf Daten handelt, geht der Prozessor101 in die Subroutine506 der MESI-Emulationsverarbeitung über und startet diese Verarbeitung (Schritt601). Zuerst ermittelt der Prozessor101, ob es sich bei dem Fehlerzugriff, der die TLB-Unterbrechung verursacht hat, um einen Datenschreib- oder einen Datenlesevorgang handelt (Schritt602). Wenn ermittelt wird, dass es sich um einen Datenlesevorgang handelt, maskiert der Prozessor101 das Lese- (R) Attribut des Eintrages, das heißt, der Registrierungsdaten, entsprechend der physischen Seite des Fehlerzugriffs in dem lokalen TLB107 und in dem lokalen TLB-Verzeichnisspeicher121 durch „user read only“- (UR) und „supervisor read only-(SR) Bits des Seitentabelleneintrages (page table entry, PTE) in der Seitentabelle108 und stellt es ein (Schritt603). Anschließend durchsucht der Prozessor101 den TLB-Verzeichnisspeicher121 bis zu der physischen Seite des Fehlerzugriffes und ermittelt, ob ein ferner TLB Recht zum Schreiben (W) auf diese physische Seite hat (Schritt604). Wenn ermittelt wird, dass er kein Recht zum Schreiben (W) hat (NEIN in Schritt604), endet die Verarbeitung (Schritt605). Wenn ermittelt wird, dass er das Recht zum Schreiben (W) hat (JA in Schritt604), übermittelt der Prozessor101 dem fernen Prozessor einen Clean Command über einen IPI (Inter Processor Interrupt) und veranlasst den fernen Prozessor zum Freigeben des Rechtes zum Schreiben auf diese physische Seite. Das heißt, der ferne Prozessor kopiert den Daten-Cachespeicher zurück und deaktiviert das Schreib- (W) Attribut des Eintrages, das heißt der Registrierungsdaten, entsprechend dieser physischen Seite in dem fernen TLB (Schritt606). Die Übersetzung aus der logischen in die physische Adresse verbleibt in diesem Eintrag in dem fernen TLB. Anschließend löscht der Prozessor101 das W-Attribut aus dem Eintrag, das heißt, aus den dieser physischen Seite entsprechenden Registrierungsdaten für den fernen TLB in dem TLB-Verzeichnisspeicher121 (Schritt607), und die Verarbeitung endet (Schritt608). 6 is a flowchart ( 600 ) for MESI emulation processing as an example of how software control imposes an MESI protocol constraint. When in 5 (in step 505 ) determines that the memory access is an access to data, the processor goes 101 into thesubroutine 506 MESI emulation processing and starts this processing (step 601 ). First, the processor determines 101 whether the error access that caused the TLB interrupt is a data write or a data read (step 602 ). If it is determined to be a data read, the processor will mask 101 the read (R) attribute of the entry, that is, the Registration data corresponding to the physical side of the error access in thelocal TLB 107 and in the localTLB directory store 121 by "user read only" (UR) and "supervisor read only" (SR) bits of the page table entry (PTE) in the page table 108 and set it (step 603 ). Then the processor searches 101 theTLB directory store 121 to the physical side of the error access and determines if a remote TLB has right to write (W) to this physical page (step 604 ). If it is determined that he has no right to write (W) (NO in step 604 ), the processing ends (step 605 ). If it is determined that he has the right to write (W) (YES in step 604 ), the processor transmits 101 It causes the remote processor to clean command over an IPI (Inter Processor Interrupt) and causes the remote processor to release the right to write to that physical page. That is, the remote processor copies back the data cache and disables the write (W) attribute of the entry, that is the registration data, corresponding to that physical page in the remote TLB (step 606 ). The translation from the logical to the physical address remains in this entry in the remote TLB. Then the processor clears 101 the W attribute from the entry, that is, the remote TLB registration data corresponding to that physical page in the TLB directory store 121 (Step 607 ), and the processing ends (step 608 ).

Wenn (in Schritt602) ermittelt wird, dass der Fehlerzugriff beim Schreiben aufgetreten ist, maskiert der Prozessor101 das W-Attribut des Eintrages, das heißt, der Registrierungsdaten, die der physischen Seite des Fehlerzugriffs in dem lokalen TLB107 und dem TLB-Verzeichnisspeicher121 entsprechen, durch „user write“-(UW) und „supervisor write“- (SW) Bits des Seitentabelleneintrages (page table entry, PTE) in der Seitentabelle108 und stellt es ein (Schritt609). Anschließend durchsucht der Prozessor101 den TLB-Verzeichnisspeicher121 nach der physischen Seite des Fehlerzugriffes und ermittelt, ob ein ferner TLB Recht zum Lesen (R), Schreiben (W) oder Ausführen (X) auf diese physische Seite hat (Schritt610). Wenn ermittelt wird, dass dieser kein Recht zum R, W oder X hat (NEIN in Schritt610), endet die Verarbeitung (Schritt605). Wenn ermittelt wird, dass er das Recht zum R, W oder X hat, (JA in Schritt610), übermittelt der Prozessor101 dem fernen Prozessor einen Flush Command (Entleerungs-Befehl) über einen IPI (Inter Processor Interrupt) und veranlasst den fernen Prozessor zum Entleeren (flush) der Daten dieser physischen Seite aus dem fernen Cachespeicher, ohne dem fernen Prozessor das Zugriffsrecht auf diese physische Seite bereitzustellen. Das heißt, der ferne Prozessor kopiert den Daten-Cachespeicher zurück, und invalidiert ihn und deaktiviert die R-, W- und X-Attribute des Eintrages, das heißt der Registrierungsdaten, entsprechend dieser physischen Seite in dem fernen TLB (Schritt611). Die Übersetzung aus der logischen in die physische Adresse verbleibt in diesem Eintrag in dem fernen TLB. Anschließend löscht der Prozessor101 das R-, W- und X-Attribut aus dem Eintrag, das heißt, den dieser physischen Seite entsprechenden Registrierungsdaten für den fernen TLB in dem TLB-Verzeichnisspeicher121 (Schritt612), und die Verarbeitung endet (Schritt608).If (in step 602 ) determines that the error access occurred while writing, the processor masks 101 the W attribute of the entry, that is, the registration data that is the physical side of the error access in thelocal TLB 107 and theTLB directory store 121 by "user write" (UW) and "supervisor write" (SW) bits of the page table entry (PTE) in the page table 108 and set it (step 609 ). Then the processor searches 101 theTLB directory store 121 after the physical page of the error access and determines whether a remote TLB has right to read (R), write (W) or execute (X) on this physical page (step 610 ). If it is determined that it has no right to R, W or X (NO in step 610 ), the processing ends (step 605 ). If it is determined that he has the right to R, W or X, (YES in step 610 ), the processor transmits 101 It issues a flush command to the remote processor via an Interprocessor Interrupt (IPI) and causes the remote processor to flush that physical page's data from the remote cache without giving the remote processor access to that physical page , That is, the remote processor copies back and invalidates the data cache, and disables the R, W, and X attributes of the entry, that is, the registration data, corresponding to that physical page in the remote TLB (step 611 ). The translation from the logical to the physical address remains in this entry in the remote TLB. Then the processor clears 101 the R, W, and X attributes from the entry, that is, the remote TLB registration data corresponding to that physical page in the TLB directory store 121 (Step 612 ), and the processing ends (step 608 ).

Auf diese Weise wird Snoop-Filtern, das heißt, Snoop Deletion unter Verwendung des TLB zum Einstellen des Lese/Schreib/Ausführungsrechtes gemäß der MESI-Protokoll-Beschränkung durchgeführt. Es wird ein Ermittlungsschritt zum Beschränken der Fälle eines Sendens einer Snoop-Anforderung auf den Fall eines beim Implementieren des MESI-Protokolls durch Hardware auftretenden Problems beschränkt, in dem die physische Seite, die diese Daten abdeckt, ebenfalls in einem fernen TLB registriert sind. Dementsprechend kann mit der MESI-Emulationsverarbeitung, bei der die MESI-Protokoll-Beschränkung durch Softwaresteuerung auferlegt wird, eine höhere Skalierbarkeit verglichen mit der Implementierung des MESI-Protokolls durch Hardware erzielt werden.In this way, snoop filtering, that is, snoop deletion, is performed using the TLB for setting the read / write / execute right according to the MESI protocol limitation. A determination step is restricted to restricting the cases of sending a snoop request to the case of a hardware-related problem in implementing the MESI protocol, in which the physical page covering that data is also registered in a remote TLB. Accordingly, with MESI emulation processing, where the MESI protocol limitation is imposed by software control, higher scalability can be achieved as compared to implementation of the MESI protocol by hardware.

Mit dem Kohärenz-Handler zum Steuern von Cache-Kohärenz gemäß einer Ausführungsform der vorliegenden Erfindung kann Kohärenz sowohl zwischen Daten-Cachespeichern als auch Kohärenz zwischen einem Anweisungs-Cachespeicher und einem Daten-Cachespeicher gesteuert werden. Dies wird durch Invalidieren der Anweisungs-Cachezeile dann, wenn eine TLB-Fehltrefferunterbrechung von einem Anweisungsabruf (instruction fetch) auf einer beschreibbaren Seite mit einem Schreiberlaubnisrecht resultiert, erreicht. Wie bei Linux muss zum Unterstützen einer dynamischen Link-Bibliothek (dynamic link library) beispielsweise ein Anweisungs-Cachespeicher zu einem Daten-Cachespeicher kohärent sein. Bei Linux muss nur dann ein Anweisungs-Cachespeicher invalidiert werden, wenn eine beschreibbare Seite in einem Benutzerraum (user space) abgerufen wird.With the coherency handler for controlling cache coherency in accordance with an embodiment of the present invention, coherency between both data caches and coherency between an instruction cache and a data cache may be controlled. This is achieved by invalidating the instruction cache line when a TLB miss interrupt results from an instruction fetch on a writable page with a write permission. As with Linux, for example, to support a dynamic link library, an instruction cache must be coherent to a data cache. In Linux, an instruction cache only needs to be invalidated when a writable page in a user space is retrieved.

7 ist ein Ablaufplan (700), der eine Cache-Kohärenz-Verarbeitung für Anweisungen durch Software-Steuerung veranschaulicht. Wenn (in Schritt505) in5 ermittelt wird, dass es sich bei dem Speicherzugriff um einen Zugriff auf Anweisungen handelt, geht der Prozessor101 in die Subroutine507 der Cache-Kohärenz-Verarbeitung für Anweisungen über und startet diese Verarbeitung (Schritt701). Zuerst ermittelt der Prozessor101, ob der Seitentabelleneintrag (PTE) der Seitentabelle108 ein Recht zur Benutzerschreiberlaubnis auf die physische Seite hat, auf der die TLB-Fehltrefferunterbrechung aus dem Anweisungsabruf resultiert hat (Schritt702). Wenn ermittelt wird, dass der Seitentabelleneintrag (PTE) das Recht zur Benutzerschreiberlaubnis hat (JA in Schritt702), ermittelt der Prozessor101, ob ein ferner TLB das Recht auf Benutzerschreiberlaubnis auf die physische Seite hat (Schritt703). Wenn ermittelt wird, dass der ferne TLB das Recht zur Benutzerschreiberlaubnis hat (JA in Schritt703), übermittelt der Prozessor101 einen Clean Command an den fernen Prozessor über einen IPI und veranlasst den fernen Prozessor zum Freigeben des Rechtes zur Benutzerschreiberlaubnis. Das heißt, der ferne Prozessor stellt dem Daten-Cachespeicher eine Anweisung zum Speichern eines Blockes in einem Cachespeicher (data cache block store (dcbst)) bereit, speichert die Daten-Cachezeile und deaktiviert das W-Attribut in dem fernen TLB (Schritt704). Die Übersetzung aus der logischen in die physische Adresse verbleibt in diesem Eintrag in dem fernen TLB. Anschließend invalidiert der Prozessor101, wie in dem Fall, in dem in Schritt703 ermittelt wird, dass der TLB nicht das Recht zur Benutzerschreiberlaubnis hat (NEIN in Schritt703), den lokalen Anweisungs-Cachespeicher mittels iccci („instruction cache congruence dass invalidate“) (Schritt705). Anschließend maskiert der Prozessor101, wie in dem Fall, in dem in Schritt702 ermittelt wird, dass der PTE nicht das Recht zur Benutzerschreiberlaubnis hat (NEIN in Schritt702), das Ausführungs-(X) Attribut des Eintrages, das heißt der Registrierungsdaten, entsprechend der physischen Seite, auf der die TLB-Fehltrefferunterbrechung aus dem Anweisungsabruf in dem lokalen TLB107 und dem TLB-Verzeichnisspeicher121 resultiert, mittels „user execute“- (UX) und „supervisor execute“- (SX) Bits des Seitentabelleneintrages (PTE) und stellt es ein (Schritt706). Anschließend endet die Verarbeitung (Schritt707). 7 is a flowchart ( 700 ) illustrating cache coherency processing for instructions by software control. If (in step 505 ) in 5 determining that the memory access is an access to instructions, the processor goes 101 into thesubroutine 507 cache coherency processing for instructions and starts this processing (step 701 ). First, the processor determines 101 Whether the page table entry (PTE) of the page table 108 has a right to user write permission to the physical page on which the TLB miss interrupt results from the instruction fetch has (step 702 ). If it is determined that the page table entry (PTE) has the right to user write permission (YES in step 702 ), the processor determines 101 whether a remote TLB has the right to user write permission to the physical page (step 703 ). When it is determined that the remote TLB has the right to user-write permission (YES in step 703 ), the processor transmits 101 a clean command to the remote processor over an IPI and causes the remote processor to release the right to user write permission. That is, the remote processor provides the data cache with an instruction to store a block in a data cache block store (dcbst), stores the data cache line, and disables the W attribute in the remote TLB (step 704 ). The translation from the logical to the physical address remains in this entry in the remote TLB. Subsequently, the processor invalidates 101 as in the case where instep 703 it is determined that the TLB does not have the right to user write permission (NO in step 703 ), the local instruction cache by means of iccci ("instruction cache congruence that invalidate") (step 705 ). Then the processor masks 101 as in the case where instep 702 it is determined that the PTE does not have the right to user write permission (NO in step 702 ), the execution (X) attribute of the entry, i.e. the registration data, corresponding to the physical page on which the TLB miss interrupt from the instruction fetch in thelocal TLB 107 and theTLB directory store 121 results, by means of "user execute" (UX) and "supervisor execute" (SX) bits of the page table entry (PTE) and sets it (step 706 ). Then the processing ends (step 707 ).

Auf den TLB-Verzeichnisspeicher121 wird sequenziell unter Verwendung von Semaphoren zugegriffen. Dadurch wird der TLB-Verzeichnisspeicher121 vor einem gleichzeitigen Aktualisieren durch die Vielzahl von Prozessoren101 geschützt.8 stellt Prozessabläufe (800) dar, die veranschaulichen, wie ein Semaphor für einen Eingang in und einen Ausgang aus dem Kohärenz-Handler verwendet wird. Für den Eingang in den Kohärenz-Handler startet die Verarbeitung (Schritt801), es wird ein Semaphor erworben (Schritt802) und die Verarbeitung endet (Schritt803). Für den Ausgang aus dem Kohärenz-Handler startet die Verarbeitung (Schritt804), die Benachrichtigung zu dem Semaphor wird bereitgestellt (Schritt805), und die Verarbeitung endet (Schritt806). Obgleich durch einen einzelnen Semaphor exklusiv auf den gesamten TLB-Verzeichnisspeicher121 zugegriffen werden kann, wird es bevorzugt, dass, zum Verbessern der Skalierbarkeit eines jeden der Vielzahl von Prozessoren und um ihnen einen gleichzeitigen Zugriff auf den TLB-Verzeichnisspeicher121 zu ermöglichen, zum Bilden von Semaphoren ein Semaphor unterteilt wird, und die Semaphoren werden den jeweiligen Gruppen zugewiesen, in die eine physische Seite unterteilt wird. So wird beispielsweise das Rest-System, wenn die Nummer der physischen Seite durch S unterteilt wird, eine Semaphor-ID, es werden S Semaphoren gebildet, und die unterteilte physische Seite wird für jede Gruppe unabhängig geschützt. Dabei wird die folgende Gleichung erfüllt:
Semaphor-ID = mod(physical page number, S)
wobei mod(a, b) den Rest darstellt, wenn a durch b geteilt wird.
To theTLB directory store 121 is accessed sequentially using semaphores. This will make theTLB directory store 121 before a simultaneous update by the multiplicity ofprocessors 101 protected. 8th provides process flows ( 800 ) illustrating how a semaphore is used for input to and output from the coherency handler. The input to the coherency handler starts processing (step 801 ), a semaphore is acquired (step 802 ) and processing ends (step 803 ). The output from the coherency handler starts processing (step 804 ), the notification of the semaphore is provided (step 805 ), and the processing ends (step 806 ). Although by a single semaphore exclusive to the entireTLB directory store 121 It is preferred that, to improve the scalability of each of the plurality of processors and to give them concurrent access to theTLB directory memory 121 semaphore is divided to form semaphores, and the semaphores are assigned to the respective groups into which a physical page is divided. For example, if the physical page number is subdivided by S, the remainder system becomes a semaphore ID, S semaphores are formed, and the subdivided physical page is independently protected for each group. The following equation is fulfilled:
Semaphore ID = mod (physical page number, S)
where mod (a, b) represents the remainder when a is divided by b.

Wird dieses Konzept auf NUMA angewendet, bei dem es sich um ein Distributed-Shared-Memory-System handelt, können unterschiedliche Semaphoren für jeweilige NUMA-Knoten zugewiesen werden. Nur wenn ein Fernzugriff durchgeführt wird, kann auf den fernen TLB-Verzeichnisspeicher verwiesen und ein Semaphor erworben werden; anderenfalls kann auf einen lokalen TLB-Verzeichnisspeicher verwiesen und ein Semaphor erworben werden.When this concept is applied to NUMA, which is a distributed shared memory system, different semaphores can be assigned for respective NUMA nodes. Only when a remote access is performed can the remote TLB directory store be referenced and a semaphore acquired; otherwise, a local TLB directory store can be referenced and a semaphore acquired.

Bei einem NUMA-System wird das Zuweisen einer Aufgabe einem Prozessor oder einem physischen Speicher so optimiert, dass die Häufigkeit des Zugriffs auf den lokalen Systemspeicher höher als der auf den fernen Systemspeicher ist. Für eine Anwendung auf solch ein NUMA-System werden vorzugsweise sowohl der TLB-Verzeichnisspeicher als auch Semaphoren an NUMA-Knoten verteilt. Der verteilte TLB-Verzeichnisspeicher zeichnet eine Nummer einer physischen Seite eines lokalen Systemspeichers und die ID eines Prozessors, der sie in einem Cachespeicher zwischenspeichert, auf, und die verteilten Semaphoren schützen den entsprechenden verteilten TLB-Verzeichnisspeicher. Als Ergebnis wird auf den TLB-Verzeichnisspeicher und den fernen Semaphor nur dann verwiesen, wenn ein Fernzugriff (remote access) ausgeführt wird. Ein anderer lokaler Zugriff kann unter Verwendung von lediglich des lokalen TLB-Verzeichnisspeichers und des lokalen Semaphors verarbeitet werden.In a NUMA system, the assignment of a task to a processor or physical memory is optimized so that the frequency of access to the local system memory is higher than that to the remote system memory. For an application to such a NUMA system, preferably both the TLB directory store and semaphores are distributed to NUMA nodes. The distributed TLB directory store records a number of a physical page of a local system memory and the ID of a processor caching it in a cache, and the distributed semaphores protect the corresponding distributed TLB directory store. As a result, the TLB directory store and the remote semaphore are referenced only when a remote access is performed. Another local access can be processed using only the TLB local directory store and the local semaphore.

Die Kosten der durch Hardware gestützten Kohärenz sind für den Zugriff auf den lokalen Systemspeicher gering, für den Zugriff auf einen fernen Systemspeicher jedoch hoch. Um dieses Problem zu behandeln, wird ein erweitertes hybrides System aus SMP und NCC-NUMA verwendet, in dem ein kostengünstiger Snoop-Bus zum Zugriff auf den lokalen Systemspeicher und Steuerung von Cache-Kohärenz gemäß der vorliegenden Erfindung für den Zugriff auf den fernen Systemspeicher angewendet werden kann. Mit anderen Worten bedeutet dies, dass ein Shared-Memory-Multiprocessor-System, das insgesamt kohärent ist, in dem Kohärenz durch Hardware für den Zugriff auf den lokalen Systemspeicher und Steuerung von Cache-Kohärenz gemäß der vorliegenden Erfindung gewährleistet wird, konfiguriert werden kann.9 veranschaulicht ein kohärentes Shared-Memory-Multiprocessor-System900 als ein beispielhaftes erweitertes hybrides System aus SMP und NCC-NUMA. Jeder Knoten weist eine Vielzahl von Prozessoren901, einen Systemspeicher903, der durch einen kohärenten gemeinsam genutzten Bus, das heißt einen gemeinsam genutzten kohärenten SMP-Bus902, mit den Prozessoren901 verbunden ist und einen TLB-Verzeichnisspeicher905 sowie einen Semaphor-Handler906 auf, von denen beide mittels eines Bridge-Mechanismus904 mit dem gemeinsam genutzten kohärenten SMP-Bus902 verbunden sind. Der Semaphor-Handler906 wird bereitgestellt, so dass eine Vielzahl von Prozessoren901 sequenziell auf den TLB-Verzeichnisspeicher905 durch einen Semaphor zugreifen kann. Die Knoten sind über einen NCC-NUMA-Mechanismus907 miteinander verbunden. Da die Knoten miteinander über den kostengünstigen NCC-NUMA-Mechanismus907 verbunden sind, kann das Shared-Memory-Multiprocessor-System900 die Anzahl an Knoten erhöhen, das heißt, die Skalierbarkeit verbessern, während die Kosten der Hardware gering gehalten werden.The cost of hardware-based coherence is low for accessing local system memory, but high for accessing remote system memory. To address this problem, an advanced hybrid system of SMP and NCC NUMA is used in which a low-cost snoop bus for accessing the local system memory and controlling cache coherency according to the present invention is applied for accessing the remote system memory can be. In other words, this means that a shared memory multiprocessor system that is coherent overall is in coherence can be configured by hardware for accessing the local system memory and controlling cache coherency according to the present invention. 9 illustrates a coherent sharedmemory multiprocessor system 900 as an exemplary extended hybrid system of SMP and NCC NUMA. Each node has a plurality ofprocessors 901 , asystem memory 903 passing through a coherent shared bus, that is a sharedcoherent SMP bus 902 , with theprocessors 901 is connected and aTLB directory store 905 as well as asemaphore handler 906 on, both of which by means of abridge mechanism 904 with the sharedcoherent SMP bus 902 are connected. Thesemaphore handler 906 is provided so that a variety ofprocessors 901 sequentially to theTLB directory store 905 can access through a semaphore. The nodes are via anNCC NUMA mechanism 907 connected with each other. Because the nodes communicate with each other via the inexpensiveNCC NUMA mechanism 907 may be the sharedmemory multiprocessor system 900 increase the number of nodes, that is, improve scalability while keeping hardware costs low.

Ist die Anzahl an Einträgen in dem TLB-Verzeichnisspeicher nicht begrenzt, und können sowohl der lokale Systemspeicher als auch der ferne Systemspeicher frei zugeordnet werden, nimmt die Größe des TLB-Verzeichnisspeichers im Verhältnis zu der Anzahl der Prozessoren zu. Wenn beispielsweise jeder der 1024 Prozessoren einen TLB aus 1024 Einträgen hat und ein Eintrag über 4 Bytes verfügt, beträgt die Größe des TLB-Verzeichnisspeichers anhand der folgenden Berechnung 4 MB:(1024 Prozessoren)*(1024 Einträge)*(4 Bytes)=4 MB

Figure DE112011103433B4_0001
If the number of entries in the TLB directory store is not limited and both the local system memory and the remote system memory can be freely allocated, the size of the TLB directory store increases in proportion to the number of processors. For example, if each of the 1024 processors has a TLB of 1024 entries and an entry has 4 bytes, the size of the TLB directory store is 4 MB based on the following calculation: ( 1024 processors ) * ( 1024 Posts ) * ( 4 bytes ) = 4 MB
Figure DE112011103433B4_0001

Zum Verringern der Größe des TLB-Verzeichnisspeichers, wenn beispielsweise das System auf ein NUMA-System angewendet wird, wie dies in10 dargestellt ist, wird die Anzahl von TLB-Einträgen1002 für den fernen Systemspeicher (RSM, remote system memory), die dem fernen Systemspeicher (RSM) von jedem Prozessor1001 zugewiesen wird, beschränkt, und die verbleibenden (Einträge) werden als TLB-Einträge1003 für LSM (lokale Systemspeicher), die dem lokalen Systemspeicher (LSM) zugewiesen sind, verwendet. Ein lokaler TLB-Verzeichnisspeicher1000 für LSM beinhaltet Einträge, die von TLB-Verzeichnissen für einen fernen Prozessor (RP, remote processor) dupliziert wurden, wobei die Anzahl von TLB-Einträgen begrenzt ist, sowie Einträge, die von TLB-Verzeichnissen dupliziert wurden, für einen lokalen Prozessor (LP), dem die verbleibenden TLB-Einträge zugewiesen werden, und die Größe davon kann reduziert werden. Insbesondere in den Fällen, in denen die Anzahl von NUMA-Knoten N beträgt, beträgt die Anzahl von TLB-Einträgen pro CPU E, und die Anzahl von Einträgen, die dem fernen Systemspeicher von den TLB-Einträgen zugewiesen wird, beträgt R, die Anzahl von TLB-Einträgen, die dem lokalen Systemspeicher zugewiesen wird, beträgt E-R, und dementsprechend wird die Anzahl von Einträgen des TLB-Verzeichnisspeichers pro Knoten reduziert von E*N auf (N-1)*R + 1*(E-R). Wenn für das vorstehende Beispiel 1024 Prozessoren auf 256 NUMA-Knoten verteilt werden, und in jedem Knoten eine 4-Wege-SMP-Anordnung verwendet wird, beträgt die Größe des TLB-Verzeichnisspeichers anhand der folgenden Berechnung, wenn die Anzahl von TLB-Einträgen, die jedem fernen TLB zugewiesen wird, auf 16 beschränkt wird, 81,4 KB:(1020 Prozessoren)*(16 Einträge)*(4 Bytes)+(4 Prozessoren)*(1008 Einträge)*(4Bytes)=81,4 KB

Figure DE112011103433B4_0002
To reduce the size of the TLB directory store when, for example, the system is applied to a NUMA system, as in 10 is shown, the number of TLB entries 1002 for remote system memory (RSM), which is the remote system memory (RSM) of eachprocessor 1001 is assigned, restricted, and the remaining (entries) are consideredTLB entries 1003 for LSM (local system memory) assigned to the local system memory (LSM). A localTLB directory store 1000 for LSM includes entries duplicated by TLB directories for a remote processor (RP), the number of TLB entries being limited, and entries duplicated from TLB directories for a local processor (LP ) to which the remaining TLB entries are assigned, and the size thereof can be reduced. Specifically, in cases where the number of NUMA nodes is N, the number of TLB entries per CPU is E, and the number of entries allocated to the remote system memory from the TLB entries is R, the number TLB entries allocated to the local system memory is ER, and accordingly, the number of TLB directory store entries per node is reduced from E * N to (N-1) * R + 1 * (ER). In the above example, when 1024 processors are distributed to 256 NUMA nodes, and a 4-way SMP arrangement is used in each node, the size of the TLB directory memory is calculated from the following calculation when the number of TLB entries, which is assigned to each remote TLB is limited to 16, 81.4 KB: ( 1020 processors ) * ( 16 Posts ) * ( 4 bytes ) + ( 4 processors ) * ( 1008 Posts ) * ( 4 bytes ) = 81.4 KB
Figure DE112011103433B4_0002

Wird das TLB-Verzeichnis auf einem CAM implementiert, beträgt in dem Fall einer 45-nm-Halbleitertechnologie, die Fläche einer Region, die für das TLB-Verzeichnis erforderlich ist, lediglich 1 mm2.When the TLB directory is implemented on a CAM, in the case of 45nm semiconductor technology, the area of a region required for the TLB directory is only 1 mm2 .

Wenn, wie dies vorstehend beschrieben wurde, Steuerung der Cache-Kohärenz gemäß der vorliegenden Erfindung durch Software durchgeführt wird, können die Hardware-Kosten auf ein den Kosten für ein Cluster entsprechendes Maß verringert und die Skalierbarkeit verbessert werden, da ein Shared-Memory-Multiprocessor-System aus einer kostengünstigen Komponente wie beispielsweise einer Universalkomponente gebildet werden kann. Durch das Durchsuchen eines kleinen TLB-Verzeichnisspeichers, der nur TLB-Daten für jeden Prozessor für eine physische Seite verwaltet, können nicht nur eine Vielzahl von Prozessen behandelt werden, es entfällt auch die Notwendigkeit des Änderns des Anwendungsprogramms, womit die Skalierbarkeit ohne zusätzliche Software-Kosten verbessert wird.As described above, if control of cache coherency according to the present invention is performed by software, the hardware cost can be reduced to a cost corresponding to a cluster and the scalability can be improved as a shared memory multiprocessor System can be formed from a low-cost component such as a universal component. By searching a small TLB directory store, which manages only TLB data for each physical page processor, not only a multitude of processes can be handled, it also eliminates the need to modify the application program, thus increasing scalability without the need for additional software. Cost is improved.

Claims (19)

Translated fromGerman
Verfahren (400) zum Steuern von Cache-Kohärenz eines Multiprozessorsystems (100), in dem eine Vielzahl von Prozessoren (101) gemeinsam einen Systemspeicher (103) und einen TLB-Verzeichnisspeicher (121) nutzen, wobei jeder der Vielzahl von Prozessoren einen Cachespeicher und einen TLB (Adressumsetzpuffer) (107) aufweist, wobei die Einträge in dem TLB-Verzeichnisspeicher anhand entsprechender Einträge in den TLBs der Vielzahl von Prozessoren dupliziert werden, wobei das Verfahren aufweist:wenn ein Prozessor der Vielzahl von Prozessoren ermittelt, dass eine TLB-Unterbrechung, bei der es sich nicht um einen Seitenfehler handelt (406), in einer TLB-Suche des TLB-Verzeichnisspeichers auftritt,Durchführen, durch den Prozessor, eines Schrittes (407) zur TLB-Fehltrefferausnahmebehandlung, mit dem die TLB-Unterbrechung als TLB-Fehltrefferunterbrechung (TLB miss interrupt) behandelt wird, wenn die TLB-Unterbrechung eine TLB-Fehltrefferunterbrechung ist, die auftritt, wenn keine Registrierungsdaten mit einer übereinstimmenden Adresse in dem TLB vorhanden sind, und eines Schrittes (407) zur Speicherausnahmebehandlung, mit dem die TLB-Unterbrechung als Speicherunterbrechung behandelt wird, wenn die TLB-Unterbrechung eine Speicherunterbrechung ist, die auftritt, wenn Registrierungsdaten mit einer übereinstimmenden Adresse in dem TLB vorhanden sind, das Zugriffsrecht jedoch ungültig ist.A method (400) for controlling cache coherency of a multiprocessor system (100) in which a plurality of processors (101) share a system memory (103) and a TLB directory memory (121), each of the plurality of processors providing a cache memory and a TLB (address translation buffer) (107), wherein the entries in the TLB directory memory are duplicated based on corresponding entries in the TLBs of the plurality of processors, the method comprising:when a processor of the plurality of processors determines that a TLB interrupt that is not a page fault (406) occurs in a TLB search of the TLB directory store,Performing, by the processor, a TLB miss exception handler step (407) that treats the TLB interrupt as a TLB miss interrupt if the TLB interrupt is a TLB miss interrupt that occurs if none Registration data having a matching address exists in the TLB, and a memory exception handling step (407) that treats the TLB interrupt as a memory interrupt if the TLB interrupt is a memory interruption occurring when registration data having a matching address in TLB exists, but the access right is invalid.Verfahren nachAnspruch 1, wobei der Schritt zur TLB-Fehltrefferausnahmebehandlung den Schritt (504) des Entleerens einer Daten-Cachezeile eines Cachespeichers aufweist, der zu einer physischen Seite gehört, auf die sich einen Auswahl-TLB-Eintrag bezieht, der beim Durchführen eines TLB-Ersetzen (503) bereinigt und verworfen wird.Method according to Claim 1 wherein the TLB miss match exception step comprises the step (504) of flushing a data cache line of a cache associated with a physical page to which a select TLB entry related to performing a TLB replacement (503 ) is cleaned up and discarded.Verfahren nachAnspruch 2, wobei der Schritt zur TLB-Fehltrefferausnahmebehandlung oder der Schritt zur Speicherausnahmenbehandlung die Schritte aufweist: des Ermittelns (505), ob es sich bei dem Speicherzugriff, der die TLB-Fehltrefferunterbrechung oder die Speicherunterbrechung verursacht hat, um einen Zugriff auf Daten (data access) oder einen Zugriff auf Anweisungen (instruction access) handelt; undwenn ermittelt wird, dass es sich bei dem Speicherzugriff um einen Zugriff auf Daten handelt, des Bereitstellens eines Schreib-, Lese- und Ausführungsrechtes für eine physische Seite, auf die sich ein TLB-Eintrag bezieht, der im Zusammenhang mit dem Zugriff ersetzt oder aktualisiert wird, mit der exklusiven Beschränkung, dass es sich dabei um ein exklusives Zugriffsrecht für die physische Seite in dem TLB eines weiteren Prozessors handelt.Method according to Claim 2 wherein the TLB miss exception handling step or the step exception handling step comprises the steps of: determining (505) whether the memory access causing the TLB miss interruption or the memory interrupt is for accessing data (data access) or access to instructions (instruction access); and when it is determined that the memory access is an access to data, providing a physical page read, write, and execute right, to which a TLB entry relating to the access replaces, or is updated, with the exclusive restriction that this is an exclusive physical page privilege in the TLB of another processor.Verfahren nachAnspruch 3, wobei der Schritt des Bereitstellens des Schreib-, Lese- und Ausführungsrechtes zusammen mit der ausschließlichen Beschränkung einen Verarbeitungsschritt zum Bereitstellen des Schreib-, Lese- und Ausführungsrechtes zusammen mit einer „invalidate-on-write“-Beschränkung aufweist.Method according to Claim 3 wherein the step of providing the right to write, read and execute, together with the exclusive restriction, comprises a processing step of providing the read, write and execute right together with an invalidate-on-write restriction.Verfahren nachAnspruch 4, wobei der Schritt des Bereitstellens des Schreib-, Lese- und Ausführungsrechtes zusammen mit der „invalidate-on-write“-Beschränkung einen MESI-Emulationsverarbeitungsschritt zum Bereitstellen des Schreib-, Lese- und Ausführungsrechtes zusammen mit einer Beschränkung des MESI-Protokolls aufweist.Method according to Claim 4 wherein the step of providing the write, read and execute right together with the invalidate-on-write restriction comprises a MESI emulation processing step for providing the read, write and execute right along with a restriction of the MESI protocol.Verfahren nachAnspruch 5, wobei der MESI-Emulationsverarbeitungsschritt die Schritte aufweist:des Ermittelns (602), ob es sich bei dem Speicherzugriff um ein Schreiben oder Lesen von Daten handelt;wenn ermittelt wird, dass es sich bei dem Speicherzugriff um das Lesen von Daten handelt, des Einstellens (603) eines Leseattributes auf die physische Seite des Zugriffs in dem TLB des Prozessors und des TLB-Verzeichnisspeichers, der Registrierungsdaten für die TLBs der Vielzahl von Prozessoren enthält;des Durchsuchens des TLB-Verzeichnisspeichers nach der physischen Seite des Zugriffs und des Ermittelns (604), ob der TLB des anderen Prozessors das Recht zum Schreiben auf die physische Seite des Zugriffs hat;wenn ermittelt wird, dass der andere Prozessor das Recht zum Schreiben hat, Übermitteln (606) eines Clean Command an den anderen Prozessor über einen Inter-Prozessor-Interrupt und Veranlassen des anderen Prozessors zum Freigeben des Rechtes auf Schreiben auf die physische Seite des Zugriffs; unddes Freigebens (607) eines Schreibattributes an die physische Seite des Zugriffs für den TLB des anderen Prozessors in dem TLB-Verzeichnisspeicher.Method according to Claim 5 wherein the MESI emulation processing step comprises the steps of: determining (602) whether the memory access is a write or a read data; when it is determined that the memory access is data reading, setting (603) a read attribute to the physical side of the access in the TLB of the processor and the TLB directory memory, the registration data for the TLBs of the plurality of processors contains; searching the TLB directory store for the physical side of the access and determining (604) whether the TLB of the other processor has the right to write to the physical side of the access; if it is determined that the other processor has the right to write, transferring (606) a clean command to the other processor via an inter-processor interrupt and causing the other processor to release the right to write to the physical side of the access; and releasing (607) a write attribute to the physical page of access for the TLB of the other processor in the TLB directory store.Verfahren nachAnspruch 6, wobei der Schritt des Veranlassens des anderen Prozessors zum Freigeben des Rechtes zum Schreiben auf die physische Seite des Zugriffs den Schritt des Veranlassens des anderen Prozessors zum Zurückkopieren des Daten-Cachespeichers und zum Deaktivieren des Schreibattributes an der physischen Seite des Zugriffs in dem TLB des anderen Prozessors aufweist.Method according to Claim 6 wherein the step of causing the other processor to release the right to write to the physical side of the access comprises the step of causing the other processor to copy back the data cache and disable the write attribute on the physical side of the access in the TLB of the other Processor has.Verfahren nachAnspruch 6 oder7, wobei die MESI-Emulationsverarbeitung die Schritte aufweist des:wenn ermittelt wird, dass es sich bei dem Speicherzugriff um das Schreiben von Daten handelt, Einstellens (609) des Schreibattributes auf die physische Seite des Zugriffs in dem TLB des Prozessors und des TLB-Verzeichnisspeichers;Durchsuchens des TLB-Verzeichnisspeichers nach der physischen Seite des Zugriffs und des Ermittelns (610), ob der TLB des anderen Prozessors das Recht zum Lesen, Schreiben oder Ausführen auf die physische Seite des Zugriffs hat;wenn ermittelt wird, dass der andere Prozessor das Schreib-, Lese- oder Ausführungsrecht auf die physische Seite hat, des Übermittelns (611) eines Flush Commands (Befehls zum Entleeren) an den anderen Prozessor über einen Inter-Prozessor-Interrupt und des Veranlassens des anderen Prozessors zum Freigeben des Lese-, Schreib- oder Ausführungsrechtes auf die physische Seite des Zugriffs; unddes Freigebens (612) der Lese-, Schreib- und Ausführungsattribute an die physische Seite des Zugriffs für den TLB des anderen Prozessors in dem TLB-Verzeichnisspeicher. Method according to Claim 6 or 7 wherein the MESI emulation processing comprises the steps of: when it is determined that the memory access is data writing, setting (609) the write attribute to the physical side of the access in the TLB of the processor, and the TLB directory memory ; Searching the TLB directory store for the physical side of the access and determining (610) whether the TLB of the other processor has the right to read, write or execute on the physical side of the access; if it is determined that the other processor has write, read or execute right to the physical side, transmitting (611) a flush command to the other processor via an inter-processor interrupt and causing the another processor for releasing the read, write or execute right to the physical side of the access; and releasing (612) the read, write, and execute attributes to the physical page of access for the TLB of the other processor in the TLB directory store.Verfahren nachAnspruch 8, wobei der Schritt des Veranlassens des anderen Prozessors zum Freigeben des Lese-, Schreib- oder Ausführungsrechtes auf die physische Seite des Zugriffs den Schritt des Veranlassens des anderen Prozessors zum Zurückkopieren und Invalidieren des Daten-Cachespeichers und zum Deaktivieren der Lese, Schreib- und Ausführungsattribute an die physische Seite des Zugriffs in dem TLB des anderen Prozessors aufweist.Method according to Claim 8 wherein the step of causing the other processor to release the read, write or execute right to the physical side of the access comprises the step of causing the other processor to copy back and invalidate the data cache and disable the read, write and execute attributes on the physical side of the access in the TLB of the other processor.Verfahren nachAnspruch 2, wobei der Schritt zur TLB-Fehltrefferausnahmebehandlung oder der Schritt zur Speicherausnahmebehandlung die Schritte aufweist, des:Ermittelns (505), ob es sich bei dem Speicherzugriff, der die TLB-Fehltrefferunterbrechung oder die Speicherunterbrechung verursacht hat, um einen Zugriff auf Daten oder einen Zugriff auf Anweisungen handelt;wenn ermittelt wird, dass es sich bei dem Speicherzugriff um den Zugriff auf Anweisungen handelt, des Ermittelns (702), ob ein Eintrag in einer Seitentabelle in dem Systemspeicher ein Recht zur Benutzerschreiberlaubnis auf die physische Seite aufweist, auf der die TLB-Fehltrefferunterbrechung aus einem Anweisungsabruf resultiert; wenn ermittelt wird, dass der Eintrag in der Seitentabelle das Recht zur Benutzerschreiberlaubnis hat, des Ermittelns (703), ob der TLB des anderen Prozessors ein Recht zur Benutzerschreiberlaubnis auf die physische Seite hat und;wenn ermittelt wird, dass der TLB des anderen Prozessors das Recht zur Benutzerschreiberlaubnis hat, des Übermittels (704) eines Clean Commands an den anderen Prozessor über einen Inter-Prozessor-Interrupt und des Veranlassens (704) des anderen Prozessors zum Freigeben des Rechtes zur Benutzerschreiberlaubnis.Method according to Claim 2 wherein the TLB mismatch exception handling step or the memory exception handling step comprises the steps of: determining (505) whether the memory access that caused the TLB miss interrupt or the memory interrupt is accessing data or access acting on instructions; if the memory access is determined to be access to instructions, determining (702) whether an entry in a page table in the system memory has a user write permission to the physical page on which the TLB miss interrupt is from Instruction retrieval results; if it is determined that the entry in the page table has the right to user write permission, determining (703) whether the TLB of the other processor has a right to user write permission to the physical page, and; if it is determined that the TLB of the other processor has the right to user write permission, transferring (704) a clean command to the other processor via an inter-processor interrupt, and causing the other processor to release the user-write permission (704) ,Verfahren nachAnspruch 10, wobei, wenn ermittelt wird, dass der TLB des anderen Prozessors das Recht zur Benutzerschreiberlaubnis nicht hat (704) oder nach dem Schritt des Veranlassens (704) des anderen Prozessors zum Freigeben des Rechtes zur Benutzerschreiberlaubnis, der Schritt (407) zur TLB-Fehltrefferausnahmebehandlung oder der Schritt (407) zur Speicherausnahmebehandlung den Schritt (705) des Invalidierens eines Anweisungs-Cachespeichers des Prozessors, der den Zugriff vorgenommen hat, aufweist.Method according to Claim 10 and if it is determined that the other processor's TLB does not have the right to user write permission (704) or after the step of causing the other processor to release the right to user write permission (704), the TLB miss exception exception step (407) or the memory exception handling step (407) comprises the step (705) of invalidating an instruction cache of the processor that made the access.Verfahren nachAnspruch 10 oder11, wobei, wenn ermittelt wird, dass der Eintrag in der Seitentabelle nicht das Recht zur Benutzerschreiberlaubnis aufweist (702) oder nach dem Schritt (705) des Invalidierens des Anweisungs-Cachespeichers des Prozessors, der den Zugriff vorgenommen hat, der Schritt (407) zur TLB-Fehltrefferausnahmebehandlung oder der Schritt (407) zur Speicherausnahmebehandlung den Schritt (706) des Einstellen des Ausführungsattributes auf die physische Seite aufweist, auf der die TLB-Fehltrefferunterbrechung von dem Anweisungsabruf in dem TLB des Prozessors, der den Zugriff vorgenommen hat und dem TLB-Verzeichnisspeicher resultiert, der Registrierungsdaten für die TLBs der Vielzahl von Prozessoren enthält.Method according to Claim 10 or 11 wherein, if it is determined that the entry in the page table does not have the right to user write permission (702) or after the step (705) of invalidating the instruction cache of the processor that made the access, step (407) TLB miss exception handling or the memory exception handling step (407) comprises the step (706) of setting the execution attribute to the physical side on which the TLB miss interruption from the instruction fetch in the TLB of the processor that made the access and the TLB Directory memory containing registration data for the TLBs of the plurality of processors.Verfahren nachAnspruch 6 oder8, wobei der MESI-Emulationsverarbeitungsschritt des Weiteren den Schritt (802, 805) des Durchführens von sequenziellem Zugriff unter Verwendung eines Semaphors beim Durchsuchen des TLB-Verzeichnisspeichers für die physische Seite des Zugriffs aufweist.Method according to Claim 6 or 8th wherein the MESI emulation processing step further comprises the step (802, 805) of performing sequential access using a semaphore when searching the TLB physical page directory access memory.Computerprogrammprodukt, das einen Prozessor zum Ausführen eines jeden der Schritte nach einem beliebigen derAnsprüche 1 bis13 veranlasst.Computer program product comprising a processor for performing each of the steps according to any one of Claims 1 to 13 causes.System zum Steuern von Cache-Kohärenz eines Multiprozessorsystems (100), in dem eine Vielzahl von Prozessoren (101) jeweils einen Cachespeicher (106) und einen TLB (107) aufweisen und gemeinsam einen Systemspeicher (103) und einen TLB-Verzeichnisspeicher (121) nutzen, wobei die Einträge in dem TLB-Verzeichnisspeicher anhand entsprechender Einträge in den TLBs der Vielzahl von Prozessoren dupliziert werden,wobei jeder der Prozessoren des Weiteren einen TLB-Controller (123) aufweist, der eine TLB-Sucheinheit (125), die eine TLB-Suche durchführt und einen Kohärenz-Handler (126) aufweist, der eine TLB-Registrierungsdatenverarbeitung durchführt, wenn bei der TLB-Suche kein Treffer (no hit) sondern eine TLB-Unterbrechung auftritt,wobei der Kohärenz-Handler einen TLB-Replacement-Handler (TLB-replacement handler) (128), eine TLB-Fehltrefferausnahmebehandlungs-Einheit (129), und eine Speicherausnahmebehandlungs-Einheit (130) aufweist,der TLB-Replacement-Handler eine Seitentabelle in dem Systemspeicher sucht und ein Ersetzen an den TLB-Registrierungsdaten durchführt,wenn es sich bei der TLB-Unterbrechung nicht um einen Seitenfehler handelt (406), die TLB-Fehltrefferausnahmebehandlungs-Einheit die TLB-Unterbrechung als TLB-Fehltrefferunterbrechung behandelt (407), wenn die TLB-Unterbrechung eine TLB-Fehltrefferunterbrechung ist, die auftritt, wenn keine Registrierungsdaten mit einer passenden Adresse in dem TLB vorhanden sind und die Speicherausnahmebehandlungs-Einheit die TLB-Unterbrechung als Speicherunterbrechung behandelt (407), wenn die TLB-Unterbrechung eine Speicherunterbrechung ist, die auftritt, wenn Registrierungsdaten mit einer passenden Adresse im TLB vorhanden sind, das Zugriffsrecht jedoch ungültig ist.A cache coherency control system of a multiprocessor system (100), wherein a plurality of processors (101) each comprise a cache memory (106) and a TLB (107) and share a system memory (103) and a TLB directory memory (121). use the entries in the TLB Directory stores are duplicated by corresponding entries in the TLBs of the plurality of processors, each of the processors further comprising a TLB controller (123) having a TLB search unit (125) performing a TLB search and a coherency handler ( 126) that performs TLB registration data processing when no hit occurs in the TLB search but a TLB interrupt occurs, wherein the coherency handler uses a TLB Replacement Handler (128). , a TLB miss exception handler (129), and a memory exception handler (130), the TLB replacement handler searches a page table in the system memory and performs a replace to the TLB registration data when the TLB replacement Interrupt is not a page fault (406), the TLB miss exception handler treats the TLB interrupt as a TLB miss interrupt (407) if the TLB Un break is a TLB miss interrupt that occurs when there is no registration data with a matching address in the TLB and the memory exception handler treats the TLB interrupt as a memory interrupt (407) if the TLB interrupt is a memory interrupt that occurs, if registration data with a matching address exists in the TLB, but the access right is invalid.System nachAnspruch 15, wobei die TLB-Fehltrefferausnahmebehandlungs-Einheit eine Daten-Cachezeile eines Cachespeichers (106) entleert, der zu einer physischen Seite gehört, auf die sich ein Auswahl-TLB-Eintrag bezieht, der bei Durchführen von TLB-Ersetzen bereinigt und gelöscht wird.System after Claim 15 wherein the TLB miss exception handler empties a data cache line of a cache memory (106) associated with a physical page to which a select TLB entry pertains and clears upon performing TLB replacement.System nachAnspruch 16, wobei sowohl die TLB-Fehltrefferausnahmebehandlungs-Einheit als auch die Speicherausnahmebehandlungs-Einheit ermitteln (505), ob es sich bei dem Speicherzugriff, der die TLB-Fehltrefferunterbrechung oder die Speicherunterbrechung verursacht hat, um einen Zugriff auf Daten oder einen Zugriff auf Anweisungen handelt, und wenn ermittelt wird, dass es sich bei dem Speicherzugriff um den Zugriff auf Daten handelt, ein Recht zum Schreiben, Lesen und Ausführen auf eine physische Seite bereitstellen, auf die sich ein TLB-Eintrag bezieht, der im Zusammenhang mit dem Zugriff ersetzt oder aktualisiert wird, zusammen mit der exklusiven Beschränkung, dass es sich dabei um ein exklusives Zugriffsrecht auf die physische Seite in dem TLB eines anderen Prozessors handelt.System after Claim 16 wherein both the TLB miss exception handler and the memory exception handler determine (505) whether the memory access that caused the TLB miss interrupt or the memory break is an access to data or access to instructions; and when it is determined that the memory access is data access, providing a right to write, read, and execute on a physical page to which a TLB entry relating to the access replaces or updates will, together with the exclusive restriction, be an exclusive right of access to the physical page in another processor's TLB.System nachAnspruch 16, wobei sowohl die TLB-Fehltrefferausnahmebehandlungs-Einheit als auch die Speicherausnahmebehandlungs-Einheit ermitteln (505), ob es sich bei dem Speicherzugriff, der die TLB-Fehltrefferunterbrechung oder die Speicherunterbrechung verursacht hat, um einen Zugriff auf Daten oder einen Zugriff auf Anweisungen handelt, wenn ermittelt wird, dass es sich bei dem Speicherzugriff um den Zugriff auf Anweisungen handelt, ermitteln (702), ob ein Eintrag in einer Seitentabelle in dem Systemspeicher ein Recht zur Benutzerschreiberlaubnis auf die physische Seite aufweist, auf der die TLB-Fehltrefferunterbrechung aus einem Anweisungsabruf (instruction fetch) resultiert hat,wenn ermittelt wird, dass der Eintrag in der Seitentabelle das Recht zur Benutzerschreiberlaubnis aufweist, ermitteln (703), ob der TLB des anderen Prozessors ein Recht zur Benutzerschreiberlaubnis auf die physische Seite hat, undwenn ermittelt wird, dass der TLB des anderen Prozessors das Recht zur Benutzerschreiberlaubnis hat, dem anderen Prozessor einen Clean Command über einen Inter-Prozessor-Interrupt übermitteln (704) und den anderen Prozessor zum Freigeben des Rechtes zur Benutzerschreiberlaubnis veranlassen (704).System after Claim 16 wherein both the TLB miss exception handler and the memory exception handler determine (505) whether the memory access that caused the TLB miss interrupt or the memory break is an access to data or access to instructions; if it is determined that the memory access is access to instructions, determine (702) whether an entry in a page table in the system memory has a user write permission to the physical page on which the TLB miss is from an instruction fetch (instruction fetch) has resulted, if it is determined that the entry in the page table has the right to user write permission, determine (703) whether the TLB of the other processor has a right to user write permission to the physical page and if it is determined that the TLB of the other processor has the right to user write permission communicate a clean command to the other processor via an inter-processor interrupt (704) and cause the other processor to release the right to user-write permission (704).System nachAnspruch 15, wobei das Multiprozessorsystem eine Vielzahl von Knoten aufweist,wobei jeder der Vielzahl von Knoten die Vielzahl von Prozessoren (901) aufweist, der Systemspeicher (903) über einen kohärenten „shared bus“ (gemeinsam genutzten Bus) (902) mit der Vielzahl von Prozessoren und dem TLB-Verzeichnisspeicher (905) und einem Semaphor-Handler (906) verbunden ist, der bei dem sequenziellen Zugriff auf den TLB-Verzeichnisspeicher durch die Vielzahl von Prozessoren unter Verwendung eines Semaphors verwendet wird, wobei der TLB-Verzeichnisspeicher und der Semaphor-Handler mit dem kohärenten gemeinsam genutzten Bus über einen Bridge-Mechanismus (904) verbunden sind, unddie Vielzahl von Knoten untereinander durch einen NCC-NUMA-Mechanismus (907) verbunden ist.System after Claim 15 wherein the multiprocessor system comprises a plurality of nodes, each of the plurality of nodes having the plurality of processors (901), the system memory (903) via a coherent shared bus (902) having the plurality of processors and the TLB directory store (905) and a semaphore handler (906) used in the sequential access to the TLB directory store by the plurality of processors using a semaphore, the TLB directory store and the semaphore store Handlers are connected to the coherent shared bus via a bridge mechanism (904), and the plurality of nodes are interconnected by an NCC NUMA mechanism (907).
DE112011103433.4T2010-11-262011-09-05 Method, system and program for controlling cache coherencyExpired - Fee RelatedDE112011103433B4 (en)

Applications Claiming Priority (4)

Application NumberPriority DateFiling DateTitle
JP20102637142010-11-26
JPJP-2010-2637142010-11-26
JP2010-2637142010-11-26
PCT/JP2011/070116WO2012070291A1 (en)2010-11-262011-09-05Method, system, and program for cache coherency control

Publications (2)

Publication NumberPublication Date
DE112011103433T5 DE112011103433T5 (en)2013-07-25
DE112011103433B4true DE112011103433B4 (en)2019-10-31

Family

ID=46145651

Family Applications (1)

Application NumberTitlePriority DateFiling Date
DE112011103433.4TExpired - Fee RelatedDE112011103433B4 (en)2010-11-262011-09-05 Method, system and program for controlling cache coherency

Country Status (6)

CountryLink
JP (1)JP5414912B2 (en)
CN (1)CN103229152B (en)
DE (1)DE112011103433B4 (en)
GB (1)GB2499168B (en)
TW (1)TW201234180A (en)
WO (1)WO2012070291A1 (en)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
JP6303632B2 (en)*2014-03-102018-04-04富士通株式会社 Arithmetic processing device and control method of arithmetic processing device
US9785554B2 (en)*2014-05-302017-10-10International Business Machines CorporationSynchronizing updates of page table status indicators in a multiprocessing environment
US9514058B2 (en)*2014-12-222016-12-06Texas Instruments IncorporatedLocal page translation and permissions storage for the page window in program memory controller
CN104750561B (en)*2015-04-152019-09-10苏州中晟宏芯信息科技有限公司Dynamic release method, system and a kind of processor of register file cache resources
GB2539383B (en)*2015-06-012017-08-16Advanced Risc Mach LtdCache coherency
CN106326146B (en)*2015-06-292019-05-14上海华虹集成电路有限责任公司Check the method whether cache hits
US10262721B2 (en)*2016-03-102019-04-16Micron Technology, Inc.Apparatuses and methods for cache invalidate
US10503641B2 (en)*2016-05-312019-12-10Advanced Micro Devices, Inc.Cache coherence for processing in memory
JP6235088B2 (en)*2016-08-242017-11-22ルネサスエレクトロニクス株式会社 Information processing device
CN108536473B (en)*2017-03-032021-02-23华为技术有限公司 Method and apparatus for reading data
TWI622881B (en)*2017-04-252018-05-01Chunghwa Telecom Co Ltd Cache replacement system and method thereof for memory computing cluster
KR20190009580A (en)*2017-07-192019-01-29에스케이하이닉스 주식회사Controller and operation method thereof
GB2570474B (en)*2018-01-262020-04-15Advanced Risc Mach LtdRegion fusing
CN112612726B (en)*2020-12-082022-09-27海光信息技术股份有限公司 Data storage method, device, processing chip and server based on cache coherence
CN113779649B (en)*2021-09-082023-07-14中国科学院上海高等研究院 A Defense Method Against Speculative Execution Attacks
KR102571197B1 (en)2022-12-072023-08-30성균관대학교산학협력단Method for maintaining cache coherency of cluster file system
TWI853567B (en)*2023-05-112024-08-21台達電子工業股份有限公司Distributed data backup, restore and synchronization method for multiple devices, electronic device, and data management system

Citations (3)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
JPS623357A (en)*1985-06-281987-01-09Yokogawa Hewlett Packard LtdTlb control system
JPH08320829A (en)*1994-09-091996-12-03Hitachi LtdData processor
JP2000067009A (en)*1998-08-202000-03-03Hitachi Ltd Shared memory multiprocessor

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
JPH0736170B2 (en)*1991-04-031995-04-19工業技術院長 Multiprocessor system
US5437017A (en)*1992-10-091995-07-25International Business Machines CorporationMethod and system for maintaining translation lookaside buffer coherency in a multiprocessor data processing system
CA2107056C (en)*1993-01-081998-06-23James Allan KahleMethod and system for increased system memory concurrency in a multiprocessor computer system
US6553460B1 (en)*1999-10-012003-04-22Hitachi, Ltd.Microprocessor having improved memory management unit and cache memory
US6829683B1 (en)*2000-07-202004-12-07Silicon Graphics, Inc.System and method for transferring ownership of data in a distributed shared memory system
US6633967B1 (en)*2000-08-312003-10-14Hewlett-Packard Development Company, L.P.Coherent translation look-aside buffer
US6854046B1 (en)*2001-08-032005-02-08Tensilica, Inc.Configurable memory management unit
US7082500B2 (en)*2003-02-182006-07-25Cray, Inc.Optimized high bandwidth cache coherence mechanism
US7073043B2 (en)*2003-04-282006-07-04International Business Machines CorporationMultiprocessor system supporting multiple outstanding TLBI operations per partition
US20080191920A1 (en)*2007-02-122008-08-14Sangbeom ParkLow-voltage drop reference generation circuit for A/D converter
US7809922B2 (en)*2007-10-212010-10-05International Business Machines CorporationTranslation lookaside buffer snooping within memory coherent system
US20100325374A1 (en)*2009-06-172010-12-23Sun Microsystems, Inc.Dynamically configuring memory interleaving for locality and performance isolation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
JPS623357A (en)*1985-06-281987-01-09Yokogawa Hewlett Packard LtdTlb control system
JPH08320829A (en)*1994-09-091996-12-03Hitachi LtdData processor
JP2000067009A (en)*1998-08-202000-03-03Hitachi Ltd Shared memory multiprocessor

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
K. Petersen and K. Li: Cache coherence for shared memory multiprocessors based on virtual memory support . In: Proceedings Seventh International Parallel Processing Symposium, Newport, CA, USA, 1993, 49-55.*
Kontothanassis et Al: Shared Memory Computing on Clusters. In: ACM Transactions on Computer Systems, Vol. 23, No. 3, August 2005, 2005, 301–335.*

Also Published As

Publication numberPublication date
WO2012070291A1 (en)2012-05-31
JP5414912B2 (en)2014-02-12
CN103229152A (en)2013-07-31
GB2499168B (en)2014-04-16
JPWO2012070291A1 (en)2014-05-19
TW201234180A (en)2012-08-16
GB201310002D0 (en)2013-07-17
DE112011103433T5 (en)2013-07-25
CN103229152B (en)2016-10-19
GB2499168A (en)2013-08-07

Similar Documents

PublicationPublication DateTitle
DE112011103433B4 (en) Method, system and program for controlling cache coherency
DE102007030116B4 (en) Snoop filter with exclusive ownership
DE112005001798B4 (en) Managing processor resources during architectural events
DE10262164B4 (en) Computer system with a hierarchical cache arrangement
US20120137079A1 (en)Cache coherency control method, system, and program
DE3856552T2 (en) Multiprocessor digital data processing system and method for operating this system
DE10296989B4 (en) Multi-thread processor with the capability of an implicit multi-thread execution of a one-thread program
DE102007048507B4 (en) A cache memory system and method for providing a transaction store
DE102019105879A1 (en) Management of coherent links and multi-level memory
DE112007001171T5 (en) Virtualized Transaction Memory Procedure for Global Overflow
DE112011104596T5 (en) Systems, apparatus, and methods for a hardware and software system for automatically breaking a program into multiple parallel threads
DE202017104840U1 (en) Hybrid data storage management
DE112010004971T5 (en) A system, method, and apparatus for a cache flush of a page area and TLB invalidation of a range of entries
DE10393727T5 (en) Processor cache memory as RAM for executing boot code
DE112016005919T5 (en) Method and apparatus for sub-page write protection
DE102016222041B4 (en) INVALIDATION OF AN IMPLEMENTATION ENTRY IN A MULTITHREAD DATA PROCESSING SYSTEM
DE102020108666B4 (en) CACHE COHERENCE MANAGEMENT FOR MULTI-CATEGORY REMINDERS
DE102019111219A1 (en) Providing dead-block prediction for determining whether data is to be cached in cache devices.
DE102021116489A1 (en) Management of prefetch requests based on stream information for previously recognized streams
DE112023001775T5 (en) Shadow Pointer Directory in an inclusive hierarchical cache
DE102021108478B4 (en) Device and control for cache directory CAM error detection and correction
DE102021127104B4 (en) Applying a cache coherence protocol for a standard shared state
DE69033601T2 (en) Multiprocessor system and method
DE112021006970T5 (en) ARCHITECTURAL EXTENSIONS FOR ON-DEMAND MEMORY MIRRORIZING AT PAGE GRANULARITY
DE102013022169A1 (en) ERROR BUFFER TO TRACK SIDE ERRORS IN A UNIFORM VIRTUAL STORAGE SYSTEM

Legal Events

DateCodeTitleDescription
R012Request for examination validly filed
R016Response to examination communication
R016Response to examination communication
R018Grant decision by examination section/examining division
R084Declaration of willingness to licence
R020Patent grant now final
R119Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

[8]ページ先頭

©2009-2025 Movatter.jp