DE112006003081B4 - Leistungspriorisierung in Multithreadprozessoren - Google Patents

Leistungspriorisierung in Multithreadprozessoren Download PDF

Info

Publication number
DE112006003081B4
DE112006003081B4 DE112006003081.7T DE112006003081T DE112006003081B4 DE 112006003081 B4 DE112006003081 B4 DE 112006003081B4 DE 112006003081 T DE112006003081 T DE 112006003081T DE 112006003081 B4 DE112006003081 B4 DE 112006003081B4
Authority
DE
Germany
Prior art keywords
cache
subsystem
hardware
high priority
subset
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
DE112006003081.7T
Other languages
English (en)
Other versions
DE112006003081T5 (de
Inventor
Theodros Yigzaw
Geeyarpuram N. Santhanakrishnan
Martin T. Rowland
Ganapati N. Srinivasa
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112006003081T5 publication Critical patent/DE112006003081T5/de
Application granted granted Critical
Publication of DE112006003081B4 publication Critical patent/DE112006003081B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • CCHEMISTRY; METALLURGY
    • C01INORGANIC CHEMISTRY
    • C01GCOMPOUNDS CONTAINING METALS NOT COVERED BY SUBCLASSES C01D OR C01F
    • C01G3/00Compounds of copper
    • CCHEMISTRY; METALLURGY
    • C01INORGANIC CHEMISTRY
    • C01GCOMPOUNDS CONTAINING METALS NOT COVERED BY SUBCLASSES C01D OR C01F
    • C01G5/00Compounds of silver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements

Abstract

System mit: – einem Multithreadprozessorteilsystem, das wenigstens einen Prozessor aufweist mit wenigstens einem Mehrwege-Cache-Teilsystem (105) in Kommunikation mit dem Prozessor, wobei das Mehrwege-Cache-Teilsystem eine Mehrzahl von Cachewegen (251) zum Speichern von Daten von Hardwarethreads (11) umfasst; – einem Cachewegauswahllogikteilsystem (202) in Verbindung mit dem Mehrwege-Cache-Teilsystem (105) und zum Auswählen einer ersten Teilmenge aus einer Mehrzahl von Cachewegen (251) nur zum Speichern von Daten von Hardwarethreads (11), die als Hardwarethreads (11) hoher Priorität zum Verarbeiten durch den Prozessor identifiziert wurden; – einem Hardwarethreadzuordnungsteilsystem (200) in Kommunikation mit dem Cachewegeauswahllogikteilsystem und zum Zuordnen von Hardwarethreads (11) hoher Priorität zur ausgewählten ersten Teilmenge aus der Mehrzahl von Cachewegen (251); und – einem Cachenutzungsüberwachungsteilsystem in Kommunikation mit dem Mehrwege-Cache-Teilsystem (105) und zum Überwachen eines Hardwarethreads (11) hoher Priorität, der der ausgewählten ersten Teilmenge aus der Mehrzahl von Cachewegen (251) zugeordnet ist und zum Vergleichen der Cachenutzung des Hardwarethreads (11) hoher Priorität mit einem vorbestimmten Cachenutzungsschwellenwerts, und – dem Hardwarethreadzuordnungsteilsystem (200) zum Wiederzuordnen des zugeordneten Hardwarethreads (11) hoher Priorität zu irgendeinem Cacheweg der Mehrzahl von Cachewegen (251), wenn die Cachenutzung des Hardwarethreads (11) hoher Priorität den vorbestimmten Schwellenwert inaktiver Cachenutzung basierend auf dem Überwachen überschreitet.

Description

  • GEBIET
  • Ausgestaltungen der Erfindung betreffen einen Multithreadprozessor und insbesondere das Verarbeiten von Threads in Multithreadprozessoren.
  • HINTERGRUND
  • Ein Anwendungsprogramm kann in Threads aufgeteilt werden, die Abfolgen von Anweisungen, wie etwa ausführbare Einheiten, sind, die auf der Zentralverarbeitungseinheit (Central Processing Unit; CPU) eines Computers ausgeführt werden. Allgemein wird ein Programm zunächst in Softwarethreads durch das Betriebssystem unterteilt, dann wird jeder Softwarethread gemapped oder in einen korrespondierenden Hardwarethread in einer CPU eingereiht, die üblicherweise eine Menge von Registern in einer CPU sind. Um die Threads mit einer schnelleren Geschwindigkeit zu verarbeiten, können Multithreadprozessoren verwendet werden, die gleichzeitig mehrere Threads zu einer bestimmten Zeit empfangen und verarbeiten können.
  • Während der Softwarethreaderzeugung werden einige Threads eine mit diesen assoziierte höhere Priorität als andere zu haben angesehen. Das Betriebssystem priorisiert daher Softwarethreads basierend auf gewünschten Leistungseigenschaften. Ein Verfahren der Threadpriorisierung durch das Betriebssystem ist die Time-Slice Methode (Zeitintervallverfahren), das heute von Multiprozessorsystemen verwendet wird. Bei diesem Verfahren empfängt ein Softwarethread mit höherer Priorität häufiger Zeitintervalle als einer mit einer geringeren Priorität und wird vom Multiprozessorsystem mehr umsorgt, wodurch sich oftmals eine bessere Leistung ergibt.
  • Während der Verwendung mit Multiprozessorsystemen, ist die vorstehende Priorisierungsmethode in Multithreadumgebungen uneffektiv, bei denen Ressourcen gleichzeitig ausführenden Threads gleichmäßig beansprucht werden. Das Problem tritt auf, wenn die priorisierten Softwarethreads in Hardwarethreads zum Ausführen eines Multithreadprozessor gemapped werden. Derzeit behandeln Multithreadprozessoren jeden Hardwarethread gleich, ungeachtet deren zugeordneter Softwarelevelpriorität, wodurch die Effektivität der anfänglichen Betriebssystempriorisierung der Threads reduziert wird.
  • Ein Grund für diesen Mangel im Stand der Technik liegt am Cachesystem des Multithreadprozessors. Üblicherweise wurden Cacheerneuerungsalgorithmen, die für das Betreiben des Cachesystems verwendet werden, eingerichtet, um symmetrische Behandlung aller Threads bereitzustellen. In symmetrischen Multiprozessorsystemen jedoch beeinträchtigt die gleichzeitige Ausführung von verschiedenen Aufgaben von Hardwarethreads (i. e. ohne Priorisierung) die Leistung, speziell von Echtzeitthreads, denen oftmals von der Software höhere Priorität gegeben wird. Dieses kann ein Hindernis für Workstations und Kleinbüros sein, wenn viele Routinewartungsarbeiten, wie etwa Pestplattenfragmentierung und Virusscans, gleichzeitig mit Echtzeitaufgaben, wie etwa Multimediadecodierung ablaufen.
  • Aus dem Dokument US 5,787,490 A ist ein Multiprozessorsystem mit einen Cache, einer Cachezuweisungseinheit und einer Cachesteuereinheit bekannt, wobei die Cachezuweisungseinheit Prozessen eine Cachenutzungspriorität zuweist und die Cachesteuereinheit einen Zugriff der Prozesse auf den Cache entsprechend der zugewiesenen Priorität steuert. Hierbei kann die Cachenutzungspriorität auf statistischen Informationen bezüglich einer Hit/Missrate basieren.
  • Das Dokument US 6,604,174 B1 beschreibt, wie in einem Multiprozessorsystem Prozessen, welche eine hohe Missrate aufweisen, mehr Cachespeicher zugeteilt werden als Prozessen, welche eine niedrige Missrate aufweisen, wobei hier auch noch weitere Systemvariablen, beispielsweise die Gesamtleistung des Systems, bei der Cachezuordnung berücksichtigt werden können.
  • Die Aufgabe der vorliegenden Erfindung besteht somit darin, ein System zur Leistungspriorisierung von Multithread-Prozessoren bereitzustellen, das eine über eine Priorisierung von Software-Threads hinausgehende priorisierte Behandlung von Threads ermöglicht.
  • Die Aufgabe wird gelöst durch ein System mit den Merkmalen gemäß Anspruch 1 sowie ein Verfahren mit den Merkmalen gemäß Anspruch 7.
  • Vorteilhafte Ausführungsformen sind in den Unteransprüchen angegeben.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 stellt eine Multithreadprozessorumgebung dar, in der beispielhafte Ausgestaltungen der Erfindung ausgeführt sein können.
  • 2A–B stellt beispielhafte Ausgestaltung der Erfindung dar.
  • 3 ist ein Flussdiagramm, das ein Verfahren gemäß einer beispielhaften Ausgestaltung der Erfindung darstellt.
  • 4 ist ein Flussdiagramm, das weiter das in 3 beispielhaft dargestellte Verfahren darstellt.
  • 5 ist ein Kreisdiagramm der beispielhaften Ausgestaltungen der Erfindung, die in 2A–B gezeigt sind.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Ausführungsbeispiele der Erfindung betreffen allgemein ein System und ein Verfahren zur Leistungspriorisierung in Multithreadprozessoren. Hier sind Ausgestaltungen der Erfindung bei Multithreadprozessoren anwendbar, die in einer Vielzahl von Computervorrichtungen verwendet werden, die allgemein als stationäre oder mobile elektronische Vorrichtungen betrachtet werden. Beispiele von Computervorrichtungen schließen ein, sind aber nicht darauf begrenzt oder beschränkt: Computer, Workstations. Beispielsweise kann die Computervorrichtung allgemein als jede Art von stationärer oder mobiler elektronischer Vorrichtung angesehen werden, wie etwa einer Set-Top Box, drahtlosem Telefon, digitaler Videorecorder (DVR), Netzwerkgeräte (z. B. Router, Server, etc.) und ähnliches.
  • Bestimmte Details werden im Folgenden beschrieben, um ein vollständiges Verständnis der verschiedenen Ausgestaltungen der Erfindung zu ermöglichen, obgleich Ausgestaltungen der Erfindung mittels vieler anderer Ausführungsbeispiele als die dargestellten, ausgeführt werden können. Gut bekannte Logik und Abläufe werden nicht im Detail beschrieben, um unnötiges Verschleiern der Beschreibung zu vermeiden.
  • In der folgenden Beschreibung wird bestimmte Terminologie verwendet, um Merkmale der verschiedenen Ausgestaltungen der Erfindung zu beschreiben. Beispielsweise schließt der Begriff „Multithreadprozessor” jede Vorrichtung ein, die zwei oder mehr Datenthreads gleichzeitig verarbeitet. Der Ausdruck „Softwarethread” betrifft Abfolgen von Anweisungen, wie etwa ausführbaren Einheiten, die aus dem Aufteilen in derartige Anweisungsabfolgen durch ein Softwareprogramm resultieren und die dann auf einem Prozessor ausgeführt werden können, wie etwa einer Zentralverarbeitungseinheit (Central Processing Unit; CPU) einer Computervorrichtung. Der Ausdruck „Hardwarethread betrifft eine Menge von Registern oder andere Speichermedien in einem Prozessor, in den die Softwarethreads gemapped oder eingereiht werden.
  • Der Ausdruck „Software” bezeichnet allgemein ausführbaren Code, wie etwa ein Betriebssystem, eine Anwendung, ein Applet, eine Routine oder eine oder mehrere Anweisungen. Die Software kann in jeder Art von Speicher, nämlich einem geeigneten Speichermedium wie etwa einem programmierbaren elektronischen Schaltkreis, einer Halbleiterspeichervorrichtung, einem flüchtigen Speicher (z. B. Random Access Memory etc.), einem nicht-flüchtigen Speicher (z. B. Read-Only Memory, Flash Speicher, etc.), einer Floppydiskette, einer optischen Scheibe (z. B. Compact Disk oder Digital Versatile Disc „DVD”), einer Festplatte, Band oder jeder Art von Verbindung (wie unten definiert) gespeichert werden.
  • Mit Bezug auf 1 ist eine Multithreadprozessorumgebung 1 dargestellt, wie etwa diejenige eines Computers oder einer Workstation, in der beispielhafte Ausgestaltungen der Erfindung ausgeführt sein können. Wie in 1 gezeigt, weist die Multithreadprozessorumgebung 1 Software 101 und damit verbundene Hardware 102 auf. Die Software 101 weist ein oder mehrere Anwendungsprogramme 103 und ein Betriebssystem 104 auf. Die Hardware 102 weist ein Multithreadprozessorteilsystem 107 mit einem Cacheteil 105 auf, das in Kommunikation mit einem Prozessor 106, wie etwa einem Prozessorkern, ist. Wie oben beschrieben, unterteilt das Betriebssystem während der Ausführung des Anwendungsprogramms 103 die vom Anwendungsprogramm 103 auszuführenden Aufgaben in Softwarethreads 10, wie etwa ST_1 bis ST_N (N > 1), die Abfolgen von Anweisungen, wie etwa ausführbaren Einheiten, sind. Wie in 1 gezeigt, wird jeder Softwarethread 10 dann gemapped oder in einem korrespondierenden Hardwarethread 103 eingereiht, wie etwa HT_1 bis HT_N (N > 1), die üblicherweise Mengen von Registern sind, und dann verarbeitet, wie etwa gleichzeitig, von dem Prozessor 106. Wie in 1 gezeigt, ist die Interaktion zwischen dem Prozessor 106 und dem Cacheteilsystem 105 in Bezug auf das Verarbeiten der Hardwarethreads 11 vom Hardwarethreadzuordnungsteilsystem 200 und dem Cachenutzungsüberwachungsteilsystem 210 gesteuert, wie in größerem Detail in Zusammenhang mit den 2A–B im Folgenden beschrieben.
  • Die 2A–B zeigen beispielhafte Ausgestaltungen der Erfindung. Zur einfacheren Darstellung ist der Prozessor 106 ein Dual-Threadprozessor, obwohl andere Prozessoren, die fähig sind, jede Anzahl von Threads zu verarbeiten, auch als innerhalb des Umfangs der beispielhaften Ausgestaltungen der Erfindung angesehen werden. Wie in 2A gezeigt, ist das Cacheteilsystem 105 in Kommunikation mit dem Prozessor 106, etwa über das Signal 203 zum Lesen und Schreiben von Daten vom und in das Cacheteilsystem 105 und über die Signale 205, 206 und 201 zum Verarbeiten der Hardwarethreads 11. Das Cacheteilsystem 105 weist weiter eine Datenanordnung 250 einschließlich einer Mehrzahl von Cachewegen 251, wie etwa way_0 bis way_n (n > 1), zum Speichern von Daten von den Hardwarethreads 11 auf. Das Multithreadprozessorteilsystem 107 weist weiter ein Hardwarethreadzuordnungsteilsystem 200 auf, das ein Cachewegauswahllogikteilsystem (CSL) 202 benutzt, zum Auswählen einer Teilmenge von Cachewegen 250 zum Speichern von Daten von den Hardwarethreads 11, die als Hardwarethreads hoher Priorität 11 zum Verarbeiten durch den Prozessor 106 identifiziert wurden, wie in größerem Detail im Zusammenhang mit 5 beschrieben wird. Basierend auf der Auswahl des Cachewegauswahllogikteilsystems 202 ordnet das Hardwarethreadzuordnungsteilsystem 200 Hardwarethreads hoher Priorität 11 der Teilmenge von Cachewegen 251 zu, die zum Speichern von Hardwarethreads hoher Priorität 11 ausgewählt wurden.
  • Wie weiter in 2 gezeigt, weist das Multithreadprozessorteilsystem 107 weiter ein Cachenutzungsüberwachungsteilsystem 210 auf, das in Kommunikation mit dem Cacheteilsystem 105 ist und zum Überwachen eines Hardwarethreads hoher Priorität 11, wie etwa HT_1, der der Teilmenge von Cachewegen 251 zugeordnet ist, die zum Speichern von Hardwarethreads hoher Priorität 11 ausgewählt sind und zum Vergleichen der überwachten Nutzung des Hardwarethreads hoher Priorität HT_1 mit einem vorbestimmten Cachenutzungsschwellenwert, wie in größerem Detail in Zusammenhang mit 35 im Folgenden beschrieben wird. Das Hardwarethreadzuordnungsteilsystem 200 kann den zugeordneten Hardwarethread hoher Priorität HT_1 einem der Cachewege 251 erneut zuordnen, wenn die Cachenutzung des Hardwarethreads hoher Priorität HT_1 den vorbestimmten Cachenutzungsinaktivitätsschwellenwert überschreitet. Nach dieser erneuten Zuordnung ignoriert das Hardwarethreadzuordnungsteilsystem 200 die Auswahl der Teilmenge von Cachewegen 251 zum Speichern von Daten der Hardwarethreads hoher Priorität 11 und kann den Hardwarethread HT_1 an irgendeines der Cachewege 251 in der Datenanordnung 250 erneut zuordnen. Würde der Hardwarethread HT_1 die aktive Cachenutzung auf die erneute Zuordnung folgend wieder aufnehmen, würde die erneute Zuordnung aufgehoben und die oben genannte threadbasierte Auswahl würde automatisch reaktiviert werden.
  • 3 ist ein Flussdiagramm, das in Zusammenhang mit 2A–B ein Verfahren gemäß einer beispielhaften Ausgestaltung der Erfindung darstellt. Wie in 3 gezeigt, beginnt das Verfahren bei Block 300 und schreitet zum Entscheidungsblock 310 fort, in dem bestimmt wird, ob wenigstens einen Cacheweg einen Hardwarethread 11 nicht aufnimmt (z. B. hat es keine hier gespeicherten relevanten Daten). Wie in 2A gezeigt, weist das Cacheteilsystem 105 eine Statusanordnung 270 auf, die eine Menge von Werten 271, wie etwa value_0 bis value_n (n > 1) aufrechterhält, mit jedem Wert 271, der einen Cacheweg 251 in der Datenanordnung 250 entspricht. Jeder Wert 271, wie etwa value_0, zeigt an, ob ein korrespondierender Cacheweg 251, wie etwa way_0 einen Hardwarethread 11 aufnimmt. Geeigneterweise weist ein Wert 271 einen binären Wert mit einem Wert, wie etwa 1, auf, der anzeigt, dass ein korrespondierender Cacheweg 251 „gültig” ist (z. B., nimmt er einen Hardwarethread 11 auf) und ein anderer Wert, wie etwa Null, zeigt an, dass der Cacheweg 251 „ungültig” ist (z. B., nimmt er keinen Hardwarethread 11 auf).
  • Wird in Block 310 bestimmt, dass alle der Cachewege 251 einen Hardwarethread 11 aufnehmen, dann schreitet der Ablauf zu Block 320 fort, in dem eine Teilmenge von Cachewegen 251 zum Speichern von Hardwarethreads 11 ausgewählt wird, die als Hardwarethreads hoher Priorität 11 (wie etwa durch das Betriebssystem 104) zum Verarbeiten durch den Prozessor 106 identifiziert wurden.
  • Wie in 2A gezeigt, weist das Cacheteilsystem 105 eine Ersatzregelungsanordnung (Replacement Policy Array; RPA) 240 auf, die bestimmt, welchem Cacheweg 251 ein bestimmter Hardwarethread 11 zugeordnet werden kann. In einer beispielhaften Ausgestaltung der Erfindung wird eine Threadmaske hoher Priorität 230 verwendet, um die Auswahl der RPA 240 zu verändern, so dass eine Teilmenge der Cachewege 251 zurückgestellt wird, um für nur Hardwarethreads hoher Priorität 11 verwendet zu werden. Geeigneterweise ist die Anzahl von Cachewegen 251, die zurückgestellt wurden, um für Hardwarethreads nur hoher Priorität 11 verwendet zu werden, größer als die Hälfte der Gesamtanzahl von Cachewegen 251 in einer Statusanordnung 250. Geeigneterweise ist die Threadmaske 230 hoher Priorität eine Abfolge von Bits, die ein Signal 232 erzeugen, das wenn auf die Bits des Entscheidungssignals 241 der RPA 240 angewendet, die RPA 240 veranlasst, nur auf eine Teilmenge der Cachewege 251 zu verweisen. Geeigneterweise weist die Threadmaske hoher Priorität 230 ein oder mehrere Register (nicht gezeigt) zum Speichern der Maskierungsbits hoher Priorität auf.
  • 2B stellt ein Beispiel dieser Anwendung einer Threadmaske hoher Priorität 230 für ein Entscheidungssignal 241 der RPA 240. Zur einfachen Darstellung wird ein Pseudo-LRU Algorithmus (PLRU) von RPA 240 für einen Achtwegecache (way_0 bis way_7) verwendet, und auf den eine 7-Bit (B0 bis B7) Threadmaske hoher Priorität 230 angewendet wird. In diesem Beispiel werden jedes Mal, wenn die Threadmaske hoher Priorität 230 aktiviert ist und es eine Anfrage 206 (gezeigt in 2A) zum Füllen eines Cacheweges 250 durch einen Hardwarethread hoher Priorität 11 gibt, die Bits der Threadmaske hoher Priorität 230 auf die PLRU Bits angewendet, wie symbolisch durch den Entscheidungsbaum 2 dargestellt gezeigt. Das Anwenden einer vorbestimmten Threadmaske hoher Priorität 230 (basierend auf den im Stand der Technik gut bekannten Grundlagen) resultiert in einer Beeinflussung von bit1 der PLRU (gezeigt in Baum 2) auf 0 und welches letztendlich im Verfügbarmachen von ways_2 bis way_7 für Hardwarethreads nur hoher Priorität 11 resultiert. Daher wird durch Vorbestimmen der Bits der Threadmaske hoher Priorität 230 basierend auf den PLRU Bits zum Hervorbringen der oben genannten Ergebnisse eine Teilmenge 280 der Cachewege, die way_2 bis way_7 aufweist, zurückgestellt, um für Hardwarethreads nur hoher Priorität 11 verwendet zu werden. Der Vorgang an Block 320 in 3 erzeugt daher eine Anpassung in den Entscheidungen der RPA 240 zugunsten der Threads hoher Priorität 11, wodurch die Verfügbarkeit der Ressourcen des Cacheteilsystems 105 für die Hardwarethreads hoher Priorität 11 verbessert wird.
  • Eine Threadmaske geringer Priorität 220 kann ähnlich auf Threads geringer Priorität 11 angewendet werden wie in 2A–B dargestellt, so dass die Teilmenge von Cachewegen 251 zurückgestellt werden kann, um für Hardwarethreads nur geringer Priorität 11 verwendet zu werden. Geeigneterweise ist die Threadmaske geringer Priorität eine Abfolge von Bits, die ein Signal 220 erzeugt, die, wenn auf die Bits des Entscheidungssignals 241 der RPA 240 angewendet, die RPA 240 veranlassen, auf nur eine Teilmenge der Cachewege 251 zu weisen.
  • Geeigneterweise umfasst die Threadmaske geringer Priorität 230 ein oder mehrere (nicht gezeigte) Register zum Speichern der Maskierungsbits geringer Priorität. Das Anwenden einer vorbestimmten Threadmaske geringer Priorität 220 auf das Beispiel von 2B in der oben beschriebenen Weise resultiert darin, dass way_0 und way_1 nur für Hardwarethreads geringer Priorität 11 verfügbar gemacht werden. In dieser Weise wird eine Teilmenge 280 von Cachewegen umfassend way_0 und way_1 zurückgestellt, um nur für Hardwarethreads geringer Priorität 11 verwendet zu werden. Geeigneterweise werden sowohl eine Threadmaske 220 geringer Priorität als auch eine Threadmaske hoher Priorität 230 verwendet, so dass die Verwendung von zwei ausgewählten Teilmengen die Wahrscheinlichkeit verringert, dass Hardwarethreads geringer Priorität 11 gleichermaßen das Cacheteilsystem 105 mit Hardwarethreads hoher Priorität 11 nutzen, während zur selben Zeit sichergestellt wird, dass die Hardwarethreads geringer Priorität 11 nicht vollständig ausgeschlossen werden aufgrund der einen zuverlässigen Auswahl all der Cachewege 251 für Hardwarethreads hoher Priorität 11. Geeigneterweise ist entweder die Threadmaske geringer Priorität 220 oder die Threadmaske hoher Priorität 230 programmierbar, wie etwa über Anweisungen, die von einem menschlichen Benutzer empfangen wurden. Die Programmierung der Threadmasken geringer Priorität 220 und der Threadmaske hoher Priorität 230 ist abhängig vom besonderen Ersatzalgorithmus, der von der RPA 240 verwendet wird.
  • In einer anderen beispielhaften Ausgestaltung können die Threadmaske 220 geringer Priorität und die Threadmaske 230 hoher Priorität programmiert werden, so dass deren jeweiligen Teilmengen geringer Priorität und hoher Priorität wenigstens einen Cacheweg 251 gemeinsam nutzen, der genutzt werden kann, um sowohl Hardwarethreads 11 geringer Priorität als auch Hardwarethreads hoher Priorität 11 zu speichern. Beispielsweise ist es im Beispiel von 2B möglich, die Threadmaske geringer Priorität 220 und die Threadmaske hoher Priorität 230 in einer Weise zu programmieren, dass way_0 und way_1 sowohl von den Hardwarethreads geringer Priorität als auch hoher Priorität 11 genutzt werden, wobei way-2 und way-3 ausschließlich für die Hardwarethreads geringer Priorität 11 reserviert sind und way_4 bis way_7 ausschließlich für die Hardwarethreads hoher Priorität 11 reserviert sind. Geeigneterweise ist das Auswählen jeder Teilmenge geringer Priorität und hoher Priorität der Cachwege 251 programmierbar und wird auf der Basis pro Hardwarethread 11, basierend auf der empfangenen Thread ID 205, ausgeführt. Geeigneterweise ist eine Anzahl von Cachewegen 251, die für jede Teilmenge geringer Priorität und hoher Priorität ausgewählt wird, ebenso programmierbar.
  • Zurück zu 3 schreitet die Abfolge zu Block 330 fort, bei dem Hardwarethreads hoher Priorität 11 der Teilmenge von Cachewegen 251 zugeordnet wird, die in Block 320 ausgewählt wurden, um nur für Hardwarethreads hoher Priorität 11 verwendet zu werden. Als nächstes wird in Block 340 eine Cachenutzung eines Hardwarethreads hoher Priorität 11, wie etwa HT_1, der der Teilmenge von Cachewegen 251, die in Block 320 ausgewählt wurden, zugeordnet ist, überwacht, wie etwa durch ein Cachenutzungsüberwachungsteilsystem 210, das in 2A gezeigt ist, und in Zusammenhang mit 4 im Folgenden in größerem Detail beschrieben wird.
  • 4 ist ein beispielhaftes Flussdiagramm, das in Zusammenhang mit 2A weiter den in Block 340 aus 3 dargestellten Überwachungsprozess darstellt. In 4 gezeigt beginnt das Verfahren bei Block 400 und schreitet zum Entscheidungsblock 410 fort, in dem das Cachenutzungsüberwachungsteilsystem 210 bestimmt, ob der zugeordnete Hardwarethread hoher Prioriät HT_1 in einem Status inaktiver Cachenutzung ist. Geeigneterweise weist das Cachenutzungsüberwachungsteilsystem 210 ein Hardwarethreadaktivitätsstatusteilsystem 212 auf, das in 2A gezeigt ist, das die Aktivitäten der Hardwarethreads hoher Priorität 11 basierend auf der Thread-ID 205, die vom Prozessor 106 empfangen wurde, überwacht. Wenn bestimmt wird, dass der Hardwarethread hoher Priorität HT_1 nicht in einem inaktiven Status ist (Entscheidungsblock 410), wird der Ablauf zu Entscheidungsblock 410 zurückgeführt und setzt sich in der vorgenannten Art in einer Schleife fort, bis der Hardwarethread hoher Priorität HT_1 vom Prozessor 106 verarbeitet worden ist.
  • Wenn bei Entscheidungsblock 410 bestimmt wird, dass der Hardwarethread hoher Priorität HT_1 in einem inaktiven Status ist, schreitet der Vorgang zu Block 420 fort, in dem ein Statuszeitintervall inaktiver Cachenutzung gemessen wird, welches die Zeit ist währenddessen der Hardwarethread hoher Priorität HT_1 im Status inaktiver Cachenutzung verbleibt. Der Vorgang schreitet dann zu Block 430 weiter, in dem das gemessene Zeitintervall mit einem vorbestimmten Inaktivitätscachenutzungsschwellenwert verglichen wird. Als nächstes wenn bei Entscheidungsblock 440 bestimmt wird, dass das gemessene Zeitintervall den vorbestimmten Inaktivitätscachenutzungsschwellenwert nicht überschreitet, wird der Vorgang zu Entscheidungsblock 410 rückgeführt. Wenn bestimmt wird, dass das gemessene Zeitintervall den vorbestimmten Cachenutzungsschwellenwert überschreitet (Entscheidungsblock 440), wird der Vorgang zu Block 340 von 3 zurückgeführt. Geeigneterweise ist das Messen des Statuszeitintervalls inaktiver Cachenutzung in Block 420 durch das Hardwarethreadaktivitätslogikteilsystem 211, das in 2A gezeigt ist, basierend auf den Zyklen eines Taktgebers (nicht gezeigt) ausgeführt. Das Hardwarethreadaktivitätslogikteilsystem 211 weist einen Zähler 213 zum Erhöhen eines Zählers basierend auf den gemessenen Zyklen des Taktgebers auf, wobei der Zähler der Zeitspanne entspricht, währenddessen ein Hardwarethread hoher Priorität 11, wie etwa HT_1, den Status inaktiver Cachenutzung beibehält. Geeigneterweise umfasst das gemessene Zeitintervall den Zähler. Das Hardwarethreadaktivitätslogikteilsystem 211 vergleicht dann das gemessene Zeitintervall mit dem vorbestimmten Inaktivitätscachenutzungsschwellenwert und bestimmt, ob das gemessene Zeitintervall den vorbestimmten Inaktivitätscachenutzungsschwellenwert übersteigt. Geeigneterweise kann das Hardwarethreadaktivitätslogikteilsystem 211 in einer Vielzahl von Software oder Hardwareausführungen ausgeführt sein.
  • Zurück zu 3 schreitet der Ablauf bei Block 350 fort, indem der Hardwarethread hoher Priorität HT_1 wieder einem anderen Cacheweg 251 zugeordnet wird, wenn basierend auf dem Ergebnis des Entscheidungsblocks 440 aus 4 bestimmt wird, dass die Cachenutzung des Hardwarethreads hoher Priorität HT_1 den vorbestimmten Inaktivitätscachenutzungsschwellenwert basierend auf dem Überwachen überschritten hat (z. B. wird bestimmt, dass die Inaktivitätszeitspanne von HT_1 eine akzeptable Zeitspanne überschreitet). Das Wiederzuordnen des zugeordneten Hardwarethreads hoher Priorität HT_1 weist dann das Deaktivieren der Threadmaske geringer Priorität 220 und der Threadmaske hoher Priorität 230 auf, wie etwa über Verändern eines Werts in jeweils deren Aktivierungsbits 221 und 231, wie in 2A gezeigt. Das Deaktivieren ermöglicht das erneute Zuordnen von HT_1 an einen anderen Cacheweg 251 ohne Einschränkungen der Teilmengen, die der Anwendung von Threadmasken geringer und hoher Priorität 220 und 230 unterliegen. Wie in 2A gezeigt, wird der Cacheweg 250, wie etwa way_0 aufnehmen HT_1, vom Hardwarethreadzuordnungsteilsystem 200 als Opferweg ausgewählt und für einen anderen Hardwarethread 11 verfügbar gemacht. Geeigneterweise überträgt das Hardwarethreadzuordnungsteilsystem 200 ein Opferwegsignal 201 an die Datenanordnung 250 und die Kennzeichnungsanordnung 260, um way_0 für einen anderen Hardwarethread verfügbar zu machen. Geeigneterweise bewahrt die Kennzeichnungsanordnung 260 eine Menge von Indizes 261, etwa wie index_0 bis index_n (n > 1), wobei jeder Index 261 einem Cacheweg 251 in der Datenanordnung 250 entspricht. HT_1 wird dann einem Cacheweg 251 von dem Hardwarethreadzuordnungsteilsystem 200 zugeordnet. Der Vorgang schreitet dann zu Block 370, in dem der gesamte Vorgang endet.
  • Zurück zum Entscheidungsblock 310, wenn bestimmt wird, dass ein oder mehrere Cachewege 251 einen Hardwarethread 11 nicht aufnehmen, schreitet der Vorgang zu Block 360 fort, indem Hardwarethreads hoher Priorität 11 den Cachewegen 251 zugeordnet werden, die Hardwarethreads 11 nicht aufnehmen. Geeigneterweise informiert die Statusanordnung 270 im Entscheidungsblock 310 das Hardwarethreadzuordnungsteilsystem 200, etwa über ein Signal 272, das ein oder mehrere Cachewege 251 einen Hardwarethread 11 nicht aufnehmen, so dass der Vorgang zu Block 360 fortschreiten kann. Als nächstes stellt die Statusanordnung 270 bei Block 360 dem Hardwarethreadzuordnungsteilsystem 200, wie etwa über ein Signal 273, Information über die Cachewege 258 bereit, die Hardwarethreads 11 nicht aufnehmen, basierend darauf, welchen Cachewegen 251, die Hardwarethreads nicht aufnehmen 11, das Hardwarethreadzuordnungsteilsystem 200 Hardwarethreads hoher Priorität 11 zuordnen. Der Vorgang schreitet dann zu Block 370, in dem der gesamte Vorgang endet. Es ist zu beachten, dass die Ausführungen in den Blöcken 310 und 260 entweder aufeinander folgend oder vor denjenigen in den Blöcken 320 bis 350 ausgeführt werden können, abhängig von der gewünschten Software oder von Überlegungen zur Hardwareausführung. Geeigneterweise weist die Multithreadprozessorumgebung 1 ein Speichermedium (nicht gezeigt) auf, die Software bereitstellt, die, wenn von einem Multiprozessorteilsystem 107 ausgeführt, das Multiprozessorteilsystem 107 veranlassen wird, die oben genannten Schritte von 3 und 4 auszuführen. Geeigneterweise ist das Speichermedium innerhalb des Multiprozessorteilsystems 107 ausgeführt.
  • 5 ist ein Kreisdiagramm des Hardwarethreadzuordnungsteilsystems 200, das in 2 gezeigt ist. Die allgemeinen Arbeitsabläufe des Schaltkreises des Hardwarethreadzuordnungsteilsystems 200 werden nun in Bezug auf die oben genannten Arbeitsabläufe aus 3 und 4 beschrieben. Wie oben in Zusammenhang mit 2A und Block 320 von 3 beschrieben, weist ein Multithreadprozessorteilsystem 107 ein Cachewegauswahllogikteilsystem 202 zum Auswählen einer Teilmenge von Cachewegen 251 zum Speichern von Hardwarethreads 11, die als Hardwarethreads hoher Priorität 10 zum Verarbeiten durch einen Prozessor 106 identifiziert wurden, auf. Wie in 5 gezeigt, kann das Cachewegauswahllogikteilsystem 202 als Eingabe die Abfolge von Bits der Threadmaske hoher Priorität (HPM) 230, die ein Signal 232 erzeugt und die Abfolge von Bits der Threadmaske geringer Priorität (LPM) 220, die ein Signal 222 erzeugt, empfangen. Die Signale 222 und 232 werden dann im Multiplexer 500 empfangen, der Threadmasken hoher Priorität oder geringer Priorität 230 oder 220 auswählt. Geeigneterweise basiert die Auswahl durch den Multiplexer 500 auf dem empfangenen Thread ID Signal, das die Art geringer oder hoher Priorität der Anfrage von einem Hardwarethread 11 anzeigt. Das ausgewählte Signal wird dann über das UND-Gatter 510 auf die Bits des Entscheidungssignals 245 der RA 240 angewendet, wodurch die RPA 240 veranlasst wird, nur auf eine Teilmenge der Cachewege 251 zu verweisen.
  • Das resultierende Signal 511 wird dann vom Cachewegauswahllogikteilsystem 202 an den Multiplexer 520 ausgegeben, der dann die ursprüngliche Auswahl der Cachewege 251 durch die RPA 240, wie durch Signal 241 angezeigt, oder die angepasste Auswahl der Cachewege 251 durch Anwenden einer der Threadmasken hoher Priorität oder geringer Priorität 230 oder 220, wie durch Signal 511 angezeigt, auswählt. Die Auswahl wird basierend auf den empfangenen Aktivierungs (EN) Signal 521 durchgeführt, das anzeigt, ob entweder die Threadmaske hoher Priorität oder die Threadmaske geringer Priorität 230 oder 220 aktiviert wurde. Wie oben in Zusammenhang mit Block 350 aus 3 beschrieben, hängt die Entscheidung zum Deaktivieren der Threadmaske hoher Priorität oder geringer Priorität 230 oder 220 auf den Wiederzuordnungsbestimmungen zum zugeordneten Hardwarethread hoher Priorität 11, wie etwa HT_1 ab. Als nächstes wird die Ausgabe des Multiplexers 520 in einen Opferwegbestimmungslogikblock 530 eingegeben um zu bestimmen, welcher der Cachewege 251 verwendet werden kann, um einen eingehenden Hardwarethread aufzunehmen. Geeigneterweise kann der Opferwegbestimmungslogikblock 530 in einer Reihe von Software- oder Hardware-Ausgestaltungen ausgeführt sein. Die Cachewege 251 Bestimmungen hängen davon ab, ob die Auswahl basierend auf der ursprünglichen Auswahl der Cachewege 251 durch die RPA 240 oder die angepasste Auswahl der Cachewege 251, wie durch den Multiplexer 520 ausgewählt, basierend auf dem Aktivierungssignal 521, gemacht wurde. Die Ausgabe des Opferwegbestimmungslogikblocks 530 wird dann in den Multiplexer 540 eingegeben.
  • Der Multiplexer 540 wählt dann, in einer oben in Zusammenhang mit Entscheidungsblock 310 aus 3 beschriebenen Weise, zwischen einem Opferweg 530, der mittels des oben genannten Vorgangs bestimmt wurde, entsprechend den Blöcken 320 bis 350 von 3 oder einem Opferweg 273, der darauf basierend bestimmt wurde, ob ein Cacheweg 251 einen Hardwarethread 11 nicht aufnimmt. Das Auswahlsignal 272 von der Statusanordnung 270 bestimmt die von dem Multiplexer 540 vorgenommene Auswahl. Wie oben in Zusammenhang mit den Blöcken 310 und 360 aus 3 beschrieben, wenn ein Cacheweg 251 einen Hardwarethread 11 nicht aufnimmt, wird jeder Cacheweg 251 ausgewählt und daher wählt der Multiplexer 540 die Eingabe 273 von der Statusanordnung als seine Ausgabe. Ansonsten wird Eingabe 531 ausgewählt. Wie oben bemerkt, kann der Arbeitsablauf des Multiplexers 540 vor oder zu jedem Zeitpunkt auf diejenigen des Cachewegeauswahllogikteilsystems 550 ausgeführt werden, abhängig von der gewünschten Software oder von Überlegungen zur Hardwareausgestaltung.
  • Es sollte beachtet werden, dass verschiedene Merkmale der vorliegenden Ausgestaltungen lediglich zur Klarheit der Beschreibung separat diskutiert wurden und dass diese als Gesamtheit oder teilweise in einzelne Ausgestaltungen der Erfindung aufgenommen werden können, die alle oder einige dieser Merkmale haben.

Claims (17)

  1. System mit: – einem Multithreadprozessorteilsystem, das wenigstens einen Prozessor aufweist mit wenigstens einem Mehrwege-Cache-Teilsystem (105) in Kommunikation mit dem Prozessor, wobei das Mehrwege-Cache-Teilsystem eine Mehrzahl von Cachewegen (251) zum Speichern von Daten von Hardwarethreads (11) umfasst; – einem Cachewegauswahllogikteilsystem (202) in Verbindung mit dem Mehrwege-Cache-Teilsystem (105) und zum Auswählen einer ersten Teilmenge aus einer Mehrzahl von Cachewegen (251) nur zum Speichern von Daten von Hardwarethreads (11), die als Hardwarethreads (11) hoher Priorität zum Verarbeiten durch den Prozessor identifiziert wurden; – einem Hardwarethreadzuordnungsteilsystem (200) in Kommunikation mit dem Cachewegeauswahllogikteilsystem und zum Zuordnen von Hardwarethreads (11) hoher Priorität zur ausgewählten ersten Teilmenge aus der Mehrzahl von Cachewegen (251); und – einem Cachenutzungsüberwachungsteilsystem in Kommunikation mit dem Mehrwege-Cache-Teilsystem (105) und zum Überwachen eines Hardwarethreads (11) hoher Priorität, der der ausgewählten ersten Teilmenge aus der Mehrzahl von Cachewegen (251) zugeordnet ist und zum Vergleichen der Cachenutzung des Hardwarethreads (11) hoher Priorität mit einem vorbestimmten Cachenutzungsschwellenwerts, und – dem Hardwarethreadzuordnungsteilsystem (200) zum Wiederzuordnen des zugeordneten Hardwarethreads (11) hoher Priorität zu irgendeinem Cacheweg der Mehrzahl von Cachewegen (251), wenn die Cachenutzung des Hardwarethreads (11) hoher Priorität den vorbestimmten Schwellenwert inaktiver Cachenutzung basierend auf dem Überwachen überschreitet.
  2. System nach Anspruch 1, wobei das Cachenutzungsüberwachungsteilsystem weiter aufweist: – ein Hardwarethreadaktivitätsstatusteilsystem zum Bestimmen, ob der zugeordnete Hardwarethread (11) hoher Priorität in einem Status inaktiver Cachenutzung ist; und – ein Hardwarethreadaktivitätslogikteilsystem (211) zum Messen eines Statuszeitintervalls inaktiver Cachenutzung basierend auf Zyklen eines Taktgebers währenddessen der Hardwarethread (11) hoher Priorität im Status inaktiver Cachenutzung verbleibt, zum Vergleichen des gemessenen Zeitintervalls mit dem vorbestimmten Inaktivitätscachenutzungsschwellenwert und zum Bestimmen, ob das gemessene Zeitintervall den vorbestimmten Inaktivitätscachenutzungsschwellenwert überschreitet.
  3. System nach Anspruch 1, wobei das Hardwarethreadaktivitätslogikteilsystem (211) weiter ein Zählerteilsystem zum Erhöhen eines Zählers basierend auf den gemessenen Zyklen des Taktgebers aufweist, wobei der Zähler dem Zeitintervall entspricht währenddessen der Hardwarethread (11) hoher Priorität den Status inaktiver Cachenutzung beibehält, wobei das gemessene Zeitintervall den Zähler mit einschließt.
  4. System nach Anspruch 1, wobei das Cachewegauswahllogikteilsystem (202) zum Auswählen einer Anzahl von Cachewegen (251), die für die erste Teilmenge basierend auf empfangenen Anweisungen ausgewählt ist, eingerichtet ist.
  5. System nach Anspruch 1, wobei das Cachewegauswahllogikteilsystem (202) zum Auswählen einer zweiten Teilmenge aus der Mehrzahl von Cachewegen (251) zum Ausführen von Hardwarethreads (11), die als Hardwarethreads (11) geringer Priorität identifiziert sind, durch den Multithreadprozessor (106) in Kommunikation mit dem Cache (105), eingerichtet ist.
  6. System nach Anspruch 5, wobei die erste Teilmenge einer Mehrzahl von Cachewegen (251) ausgewählt ist, basierend auf einer ersten vorbestimmten Maske mit wenigstens einem ersten Maskenregister, und die zweite Teilmenge aus einer Mehrzahl von Cachewegen (251) ausgewählt ist, basierend auf einer zweiten vorbestimmten Maske mit wenigstens einem zweiten Maskenregister.
  7. Verfahren zur Durchführung mit einem System gemäß Anspruch 1, umfassend die Schritte: – Auswählen einer ersten Teilmenge einer Mehrzahl von Cachewegen (251) in einem Cache (105) nur zum Speichern von Daten von Hardwarethreads (11), die als Hardwarethreads (11) hoher Priorität zum Ausführen durch einen Multithreadprozessor (106), der in Kommunikation mit dem Cache (105) ist, identifiziert wurden; – Zuordnen von Hardwarethreads (11) hoher Priorität zur ausgewählten ersten Teilmenge; – Überwachen einer Cachenutzung durch einen Hardwarethread (11) hoher Priorität, der der ersten ausgewählten Teilmenge der Mehrzahl von Cachewegen (251) zugeordnet ist, und – Wiederzuordnen des zugeordneten Hardwarethreads (11) hoher Priorität zu irgendeinem anderen Cacheweg der Mehrzahl von Cachewegen (251), wenn die Cachenutzung des Hardwarethreads (11) hoher Priorität einen vorbestimmten Inaktivitätscachenutzungsschwellenwert basierend auf dem Überwachen überschreitet.
  8. Verfahren nach Anspruch 7, gekennzeichnet durch die weiteren Schritte: – Bestimmen, ob wenigstens ein Cacheweg der Mehrzahl von Cachewegen (251) einen Hardwarethread (11) nicht bedient; und – Zuordnen von Hardwarethreads (11) hoher Priorität zu dem wenigstens einen Cacheweg der Mehrzahl von Cachewegen (251), die den Hardwarethread (11) nicht bedienen.
  9. Verfahren nach Anspruch 7, wobei das Überwachen der Cachenutzung weiter aufweist: – Bestimmen, ob der zugeordnete Hardwarethread (11) hoher Priorität in einem Zustand inaktiver Cachenutzung ist; – Messen eines Statuszeitintervalls inaktiver Cachenutzung, währenddessen der Hardwarethread (11) hoher Priorität den Status inaktiver Cachenutzung beibehält; – Vergleichen des gemessenen Zeitintervalls mit dem vorbestimmten Schwellenwert inaktiver Cachenutzung; und – Bestimmen, ob das Zeitintervall den vorbestimmten Schwellenwert inaktiver Cachenutzung überschreitet.
  10. Verfahren nach Anspruch 9, wobei das Messen des Statuszeitintervalls inaktiver Cachenutzung weiter das Messen des Statuszeitintervalls inaktiver Cachenutzung, basierend auf Zyklen eines Taktgebers, aufweist.
  11. Verfahren nach Anspruch 7, wobei das Auswählen der ersten Teilmenge der Mehrzahl von Cachewegen (251) auf einer pro-Hardware-Thread-Basis durchgeführt wird.
  12. Verfahren nach Anspruch 7, wobei eine Anzahl von Cachewegen (251) in der ersten Teilmenge der Mehrzahl von Cachewegen (251) 50% der Cachewege (251) überschreitet, die die Mehrzahl von Cachewegen (251) bilden.
  13. Verfahren nach Anspruch 7, wobei eine Anzahl von Cachewegen (251), die für die erste Teilmenge ausgewählt ist, programmierbar ist.
  14. Verfahren nach Anspruch 7, weiter aufweisend: Auswählen einer zweiten Teilmenge aus der Mehrzahl von Cachewegen (251) zum Verarbeiten von Hardwarethreads (11), die als Hardwarethreads (11) geringerer Priorität identifiziert wurden, durch den Multithreadprozessor (106) in Kommunikation mit dem Cache (105).
  15. Verfahren nach Anspruch 14, wobei das Auswählen der ersten Teilmenge aus der Mehrzahl von Cachewegen (251) basierend auf einer ersten vorbestimmten Maske durchgeführt wird und das Auswählen der zweiten Teilmenge aus der Mehrzahl von Cachewegen (251) basierend auf einer zweiten vorbestimmten Maske durchgeführt wird.
  16. Verfahren nach Anspruch 15, wobei das Wiederzuordnen der zugeordneten Hardwarethreads (11) hoher Priorität das Deaktivieren der ersten und zweiten vorbestimmten Masken aufweist.
  17. Verfahren nach Anspruch 14, wobei die erste und die zweite Teilmenge sich wenigstens einen Cacheweg (251) teilen, der Hardwarethreads (11) geringer Priorität und Hardwarethreads (11) hoher Priorität speichern kann.
DE112006003081.7T 2005-12-22 2006-12-07 Leistungspriorisierung in Multithreadprozessoren Expired - Fee Related DE112006003081B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/316,560 2005-12-22
US11/316,560 US8275942B2 (en) 2005-12-22 2005-12-22 Performance prioritization in multi-threaded processors
PCT/US2006/046892 WO2007078587A1 (en) 2005-12-22 2006-12-07 Performance prioritization in multi-threaded processors

Publications (2)

Publication Number Publication Date
DE112006003081T5 DE112006003081T5 (de) 2008-09-18
DE112006003081B4 true DE112006003081B4 (de) 2018-02-15

Family

ID=38008377

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112006003081.7T Expired - Fee Related DE112006003081B4 (de) 2005-12-22 2006-12-07 Leistungspriorisierung in Multithreadprozessoren

Country Status (7)

Country Link
US (1) US8275942B2 (de)
JP (1) JP5073673B2 (de)
KR (1) KR100996750B1 (de)
CN (1) CN101313286B (de)
DE (1) DE112006003081B4 (de)
GB (1) GB2445909B (de)
WO (1) WO2007078587A1 (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316439B2 (en) * 2006-05-19 2012-11-20 Iyuko Services L.L.C. Anti-virus and firewall system
US20080022283A1 (en) * 2006-07-19 2008-01-24 International Business Machines Corporation Quality of service scheduling for simultaneous multi-threaded processors
US9128699B2 (en) * 2008-12-22 2015-09-08 Intel Corporation Method and system for queuing transfers of multiple non-contiguous address ranges with a single command
US9032411B2 (en) * 2009-12-25 2015-05-12 International Business Machines Corporation Logical extended map to demonstrate core activity including L2 and L3 cache hit and miss ratio
US8825988B2 (en) * 2010-11-12 2014-09-02 Advanced Micro Devices, Inc. Matrix algorithm for scheduling operations
CN102799414B (zh) * 2011-05-24 2015-11-25 中国科学技术大学 改进推测多线程的方法及装置
US20130124805A1 (en) * 2011-11-10 2013-05-16 Advanced Micro Devices, Inc. Apparatus and method for servicing latency-sensitive memory requests
US9298632B2 (en) * 2012-06-28 2016-03-29 Intel Corporation Hybrid cache state and filter tracking of memory operations during a transaction
US9116750B2 (en) * 2012-08-08 2015-08-25 International Business Machines Corporation Optimizing collective communications within a parallel computer
US9304932B2 (en) * 2012-12-20 2016-04-05 Qualcomm Incorporated Instruction cache having a multi-bit way prediction mask
US10095765B1 (en) * 2013-04-10 2018-10-09 Marvell International Ltd. Method and apparatus for a hardware-implemented AVL tree module
US9268609B2 (en) * 2013-04-30 2016-02-23 Hewlett Packard Enterprise Development Lp Application thread to cache assignment
GB2516083A (en) 2013-07-11 2015-01-14 Ibm Virtual Machine Backup
GB2516087A (en) 2013-07-11 2015-01-14 Ibm Virtual Machine Backup
JP6149595B2 (ja) 2013-08-13 2017-06-21 富士通株式会社 キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9619012B2 (en) * 2014-05-30 2017-04-11 Apple Inc. Power level control using power assertion requests
US9396089B2 (en) 2014-05-30 2016-07-19 Apple Inc. Activity tracing diagnostic systems and methods
US9436501B2 (en) 2014-08-26 2016-09-06 International Business Machines Corporation Thread-based cache content saving for task switching
GB2539958B (en) * 2015-07-03 2019-09-25 Advanced Risc Mach Ltd Data processing systems
US11068401B2 (en) 2015-09-25 2021-07-20 Intel Corporation Method and apparatus to improve shared memory efficiency
EP3258383A1 (de) * 2016-06-13 2017-12-20 Advanced Micro Devices, Inc. Dynamisch verstellbare inklusionsvorspannung für inklusive cachespeicher
CN110020290B (zh) * 2017-09-29 2022-12-13 腾讯科技(深圳)有限公司 网页资源缓存方法、装置、存储介质及电子装置
US10977075B2 (en) * 2019-04-10 2021-04-13 Mentor Graphics Corporation Performance profiling for a multithreaded processor
US11822476B2 (en) * 2019-07-30 2023-11-21 Nippon Telegraph And Telephone Corporation Cache usage index calculation device, cache usage index calculation method, and cache usage index calculation program
US11361400B1 (en) 2021-05-06 2022-06-14 Arm Limited Full tile primitives in tile-based graphics processing
US20230040310A1 (en) * 2021-08-03 2023-02-09 Apple Inc. Cpu cluster shared resource management
CN116126526B (zh) * 2022-12-29 2024-04-19 苏州华太电子技术股份有限公司 计算超越函数的方法、装置、电子设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5787490A (en) * 1995-10-06 1998-07-28 Fujitsu Limited Multiprocess execution system that designates cache use priority based on process priority
US6604174B1 (en) * 2000-11-10 2003-08-05 International Business Machines Corporation Performance based system and method for dynamic allocation of a unified multiport cache

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04100158A (ja) * 1990-08-18 1992-04-02 Pfu Ltd キャッシュ制御方式
CA2129284C (en) * 1993-11-24 1999-03-09 Kenneth J. Niehoff Controlling plunger drives for fluid injection in animals
EP0856797B1 (de) * 1997-01-30 2003-05-21 STMicroelectronics Limited Cachespeichersystem für gleichzeitig laufende Prozesse
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6542991B1 (en) 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
JP2002163121A (ja) * 2000-11-22 2002-06-07 Toshiba Corp 仮想マルチスレッドプロセッサ及びスレッド実行方法
JP2002342163A (ja) 2001-05-15 2002-11-29 Fujitsu Ltd マルチスレッドプロセッサ用キャッシュ制御方式
JP2004110240A (ja) * 2002-09-17 2004-04-08 Mitsubishi Electric Corp キャッシュメモリ装置
US7401208B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
JP2005071046A (ja) 2003-08-22 2005-03-17 Toyota Motor Corp キャッシュメモリの使用方法
JP3981070B2 (ja) 2003-12-26 2007-09-26 株式会社東芝 キャッシュリプレース装置及びキャッシュリプレース方法
JP3834323B2 (ja) 2004-04-30 2006-10-18 日本電気株式会社 キャッシュメモリおよびキャッシュ制御方法
US7386778B2 (en) * 2005-10-20 2008-06-10 Jon Udell Methods for distributing programs for generating test data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5787490A (en) * 1995-10-06 1998-07-28 Fujitsu Limited Multiprocess execution system that designates cache use priority based on process priority
US6604174B1 (en) * 2000-11-10 2003-08-05 International Business Machines Corporation Performance based system and method for dynamic allocation of a unified multiport cache

Also Published As

Publication number Publication date
GB2445909A (en) 2008-07-23
DE112006003081T5 (de) 2008-09-18
CN101313286B (zh) 2012-03-28
US8275942B2 (en) 2012-09-25
WO2007078587A1 (en) 2007-07-12
KR20080071189A (ko) 2008-08-01
KR100996750B1 (ko) 2010-11-25
CN101313286A (zh) 2008-11-26
US20070150657A1 (en) 2007-06-28
JP2009518754A (ja) 2009-05-07
GB0809458D0 (en) 2008-07-02
JP5073673B2 (ja) 2012-11-14
GB2445909B (en) 2011-04-27

Similar Documents

Publication Publication Date Title
DE112006003081B4 (de) Leistungspriorisierung in Multithreadprozessoren
DE112013000486B4 (de) Anweisungsausgleich durch Anweisungsunsicherheit für Prozessoren mit mehreren Threads
DE102005029852B4 (de) Steueranordnung zum Freigeben einer oder mehrerer virtueller Speicherseiten nach Beendigung eines Programms in einem Multiprozessorcomputersystem
DE112004001320B3 (de) Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren
DE19983793B4 (de) System mit einem Prozessor, auf dem mehrere, gleichzeitig aktive Ausführungsentitäten ausgeführt werden, und mit einem mehrere, den Ausführungsentitäten zugewiese Cache-Abschnitte aufweisenden Cache-Speicher
DE69821196T2 (de) Anordnung zum räumlichen und zeitlichen Abtasten in einem Rechnerspeichersystem
DE102007006190B4 (de) Techniken zur Verwendung von Speicher-Attributen
EP1831786B1 (de) Verfahren zur verteilung von rechenzeit in einem rechnersystem
DE102008016181A1 (de) Prioritätsbasiertes Drosseln für Leistungsaufnahme-Verarbeitungsleistung-Dienstgüte
DE102014000372A1 (de) Verbesserte steuerung des prefetch-traffics
DE112020004661T5 (de) Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex
DE102008058209A1 (de) Anordnung und Verfahren um zu verhindern, dass ein Anwenderbetriebssystem in einem VMM System eine Anordnung abschaltet, die von einem Servicebetriebssystem verwendet wird
DE102012224362B4 (de) Anpassung einer Testhäufigkeit für die Ressourcenauslastung
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE2414311A1 (de) Speicherschutzeinrichtung
DE102020112531A1 (de) Operationelle metrische Berechnung für Arbeitsbelastungstyp
DE102021127522A1 (de) Verwaltung der arbeitsbelastung anhand eines trainierten modells
DE102018119881A1 (de) Verwaltung einer DRAM-Bankaktivierung
DE112014000340T5 (de) Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern
DE102009056282A1 (de) Technik zum Steuern von Verarbeitungsressourcen
DE112017008158T5 (de) Dateienvorababrufeinplanung für cachespeicher zur verringerung von latenzen
DE102013022564B4 (de) Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler
DE60029270T2 (de) Dynamische Rekonfiguration des Cache-Speichers eines Mikrokontrollers
DE102009032071A1 (de) Technik für das Disponieren von Threads
DE112014001736T5 (de) Ein Primärspeichermodul mit Aufzeichnung des Nutzungsverlaufs und Anwendungsmöglichkeiten des Primärspeichermoduls bei einem Computersystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee