-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung betrifft allgemein Mehrkern-Chips mit einem übergeordneten Kern und einem Scout-Kern und insbesondere einen Vorablesezugriff für einen übergeordneten Kern in einem Mehrkern-Chip.
-
HINTERGRUND DER ERFINDUNG
-
Die Leistungssteigerung von Einzelthread-Prozessoren stößt aufgrund des Energieverbrauchs für den Einzelthread-Betrieb an ihre Grenzen. Eine Verdoppelung des Energieverbrauchs für einen Prozessor infolge höherer Frequenzen und/oder Funktionsmerkmale liefert nicht notwendigerweise eine Leistungssteigerung, die den höheren Energieverbrauch übertrifft oder diesem gleich kommt. Das liegt an einer deutlichen Verschlechterung des Verhältnisses von Leistungssteigerung zur Zunahme des Energieverbrauchs. Zur Leistungssteigerung von Chips können beträchtliche Anteile der zur Verfügung stehenden Energie für zusätzliche Kerne auf einem Chip verwendet werden. Durch gemeinsames Nutzen von Cachespeichern und des Hauptspeichers wird einerseits verhindert, dass die Leistungssteigerung gleich der relativen Zunahme der Anzahl von Kernen ist, jedoch kann andererseits die Leistungssteigerung durch Erhöhen der Anzahl von Kernen auf dem Chip eine stärkere Leistungssteigerung/Energieeinsparung bewirken als lediglich eine Leistungssteigerung eines Einzelkern-Prozessors.
-
Gemäß einem Ansatz zur Steigerung der Einzelthread-Leistung kann ein zweiter Kern auf demselben Chip wie ein primärer oder übergeordneter Kern als Scout-Kern verwendet werden. Genauer gesagt, der Scout-Kern kann zum Vorablesezugriff auf Daten von einem gemeinsam genutzten Cachespeicher in den privaten Cachespeicher eines übergeordneten Kerns verwendet werden. Dieser Ansatz ist besonders dann von Vorteil, wenn im übergeordneten Kern ein Cachespeicherfehltreffer auftritt. Zu einem Cachespeicherfehltreffer kommt es, wenn bei der Suche nach einer vorgegebenen Datenzeile ein Verzeichnis des übergeordneten Kerns durchsucht werden muss und die angeforderte Cachespeicherzeile nicht vorhanden ist. Ein typischer Ansatz zum Finden der fehlenden Cachespeicherzeile besteht darin, eine Abrufoperation auf einer höheren Ebene des Cachespeichers auszulösen. Der Scout-Kern stellt einen Mechanismus bereit, der zum Vorablesezugriff auf Daten verwendet wird, die vom übergeordneten Kern benötigt werden.
-
Es wird darauf hingewiesen, dass sich verschiedene Programme unterschiedlich verhalten, sodass ein Vorablesezugriffsalgorithmus oder -ansatz möglicherweise nicht immer die Latenzzeit für das Zugreifen auf den Cachespeicherinhalt verbessert. Gemäß einem Ansatz zum Vorablesezugriff auf Daten für den übergeordneten Kern kann ein relativ kleiner und einfacher Algorithmus bereitgestellt werden, bei dem es sich um eine Schrittzählroutine handelt, um auf der Grundlage einer zwischen aufeinander folgenden Cachespeicherfehltreffern beobachteten Schrittweite spekulativ vorab auf Daten zuzugreifen. Zum Erfassen komplexerer Muster wird zusätzliche Hardware benötigt, die komplexer und von den Abmaßen her größer sein und eine größere Leistungsaufnahme aufweisen kann. In Bezug auf die Kompromisse zwischen Datendurchsatz, Latenzzeit und Leistungsaufnahme für den Chip kann jedoch der Aufwand an speziell zugeschnittener Hardware zum Vorablesezugriff auf Daten auf den einzelnen Kern beschränkt werden. Außerdem kann der zum Überwachen und Erkennen von Cachespeicherfehltreffern benötigte Bereich und Speicherplatz zu groß sein, um hierfür ausschließlich Hardware zu verwenden.
-
KURZDARSTELLUNG
-
Aspekte der Erfindung beinhalten ein Verfahren, ein System und ein Computerprogrammprodukt zum Vorablesezugriff auf Daten auf einem Chip, der mindestens einen Scout-Kern, mindestens einen übergeordneten Kern und einen gemeinsam genutzten Cachespeicher aufweist, der gleichberechtigt zwischen dem mindestens einen Scout-Kern und dem mindestens einen übergeordneten Kern genutzt wird. Ein Vorablesezugriffscode wird zum Überwachen des übergeordneten Kerns durch den Scout-Kern ausgeführt. Der Vorablesezugriffscode wird unabhängig von dem übergeordneten Kern ausgeführt. Der Scout-Kern stellt auf der Grundlage der Überwachung des übergeordneten Kerns fest, dass in dem übergeordneten Kern ein vorgegebenes Datenmuster vorgekommen ist. Von dem Scout-Kern wird eine Vorablesezugriffsanforderung an den gemeinsam genutzten Cachespeicher gesendet. Die Vorablesezugriffsanforderung wird auf der Grundlage des mindestens einen durch den Scout-Kern erkannten vorgegebenen Musters gesendet. Ein durch die Vorablesezugriffsanforderung angezeigter Datensatz wird durch den Scout-Kern zu dem übergeordneten Kern gesendet.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Nunmehr werden Ausführungsformen der Erfindung lediglich beispielhaft unter Bezug auf die beiliegenden Zeichnungen beschrieben, wobei:
-
1 Mehrkern-Chips gemäß einer Ausführungsform darstellt;
-
2 den zentralen Verarbeitungs-(CP-)Chip gemäß einer Ausführungsform darstellt;
-
3 einen CP-Chip gemäß einer anderen Ausführungsform darstellt;
-
4 einen CP-Chip gemäß noch einer weiteren Ausführungsform darstellt;
-
5 einen Ablaufplan zum Veranschaulichen eines Verfahrens zum Vorablesezugriff auf Daten für einen übergeordneten Kern durch einen Scout-Kern gemäß einer Ausführungsform darstellt; und
-
6 ein Computerprogrammprodukt gemäß einer Ausführungsform veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG
-
Eine Ausführungsform zum Vorablesezugriff auf Daten für einen übergeordneten Kern durch einen Scout-Kern in einem Mehrkern-Chip wird offenbart. Gemäß einer beispielhaften Ausführungsform enthält der Mehrkern-Chip mindestens einen übergeordneten Kern, mindestens einen Scout-Kern und einen gemeinsam genutzten Cachespeicher. Der Scout-Kern überwacht die Aktivität des übergeordneten Kerns auf mindestens einen Typ durch den übergeordneten Kern erzeugter vorgegebener Muster hin und ermittelt, ob eine Vorablesezugriffsanforderung von dem Scout-Kern zu dem gemeinsam genutzten Cachespeicher gesendet werden soll. Nach dem Empfangen der Vorablesezugriffsanforderung von dem Scout-Kern werden die durch die Vorablesezugriffsanforderung angeforderten Daten zu dem übergeordneten Kern gesendet. Die durch die Vorablesezugriffsanforderung angeforderten Daten werden nicht durch den Scout-Kern, sondern nur durch den übergeordneten Kern akzeptiert. Der Scout-Kern überwacht den übergeordneten Kern auf verschiedene Typen vorgegebener Datenmuster hin, die in dem übergeordneten Kern vorkommen. Einige Typen speziell auf den Kern zugeschnittener Hardware-Vorablesezugriffseinheiten hingegen, die gegenwärtig verfügbar sind, sind nur in der Lage, den übergeordneten Knoten auf eine vorgegebene Teilmenge von Datenmustern hin zu überwachen. Ferner ist der Scout-Prozessor aufgrund des Umfangs der durch die Scout-Kern-Vorablesezugriffseinheit mehrfach verwendeten Hardware in der Lage, mehr Daten als eine typische Hardware-Vorablesezugriffseinheit zu analysieren.
-
1 veranschaulicht ein Beispiel eines Datenverarbeitungssystems 10 gemäß einer Ausführungsform. Das Datenverarbeitungssystem 10 enthält mindestens einen zentralen Verarbeitungs-(CP-)Chip 20. Bei der in 1 gezeigten beispielhaften Ausführungsform sind drei CP-Chips 20 dargestellt, jedoch sollte klar sein, dass ebenso auch eine beliebige Anzahl von CP-Chips 20 verwendet werden kann. Jeder CP-Chip 20 tauscht Daten mit einem gemeinsam genutzten Cachespeicher 22 und einem Systemspeicher 24 aus.
-
Gemäß den 1 bis 2 enthält jeder CP-Chip 20 mehrere Kerne 30 zum Lesen und Ausführen von Anweisungen. Bei der in 2 gezeigten beispielhaften Ausführungsform enthält beispielsweise jeder CP-Chip 20 einen übergeordneten Kern 32 und einen Scout-Kern 34, es ist jedoch klar, dass ebenso auch eine beliebige Anzahl von Kernen 30 verwendet werden kann, und in den 3 bis 4 sind alternative Ausführungsformen des CP-Chips veranschaulicht. Gemäß 2 enthält jeder Kern 30 auch einen entsprechenden I-Cachespeicher 40 und einen D-Cachespeicher 42. Gemäß der in 2 gezeigten beispielhaften Ausführungsform enthält jeder der Kerne 30 nur einen Ebene-1-(L1-)Cachespeicher, jedoch ist klar, dass die Kerne 30 bei verschiedenen Ausführungsformen desgleichen auch einen Ebene-2-(L2-)Cachespeicher enthalten können. Jeder Kern 30 ist funktionell mit einem gemeinsam genutzten Cachespeicher 50 verbunden. Bei der in 2 gezeigten Ausführungsform handelt es sich bei dem gemeinsam genutzten Cachespeicher 50 um einen L2-Cachespeicher, jedoch ist klar, dass es sich bei dem gemeinsam genutzten Cachespeicher 50 gleichermaßen auch um einen Ebene-3-(L3-)Cachespeicher handeln kann.
-
Ein Datenrückgabebus 60 ist zwischen dem übergeordneten Kern 32 und dem gemeinsam genutzten Cachespeicher 50 und ein Datenrückgabebus 62 zwischen dem Scout-Kern 34 und dem gemeinsam genutzten Cachespeicher 50 bereitgestellt. Der übergeordnete Kern 32 wird mit dem gemeinsam genutzten Cachespeicher 50 durch einen Abrufanforderungsbus 64 verbunden, über den Daten von dem übergeordneten Kern 32 zu dem gemeinsam genutzten Cachespeicher 50 gesendet werden. Der Scout-Kern 34 wird mit dem gemeinsam genutzten Cachespeicher 50 durch einen Abrufüberwachungsbus 66 verbunden, über den der Scout-Kern 34 den gemeinsam genutzten Cachespeicher 50 überwacht. Zwischen dem Scout-Kern 34 und dem gemeinsam genutzten Cachespeicher 50 ist ein Abrufanforderungsbus 68 angeordnet, um verschiedene Abrufanforderungen von dem Scout-Kern 34 zu dem gemeinsam genutzten Cachespeicher 50 zu senden. Der Abrufanforderungsbus 68 kann auch für typische Abrufoperationen verwendet werden wie der Abrufanforderungsbus 64. Ein solches Abrufen ist zum Laden eines Vorablesezugriffscodes in den Scout-Kern 34 möglicherweise erforderlich, falls zum Analysieren weitere Daten geladen werden müssen, wenn die zu analysierenden Daten nicht komplett in den lokalen Daten-Cachespeicher 42 passen und/oder der Vorablesezugriffscode nicht komplett in den lokalen Anweisungsspeicher 40 passt.
-
Bei der in 2 gezeigten Ausführungsform dient der gemeinsam genutzte Cachespeicher 50 als Knotenpunkt oder Verbindungsglied, sodass der Scout-Kern 34 den übergeordneten Kern 32 überwachen kann. Der Scout-Kern 34 überwacht den übergeordneten Kern 32 auf mindestens ein vorgegebenes Datenmuster hin, das in dem übergeordneten Kern 32 vorkommt. Genauer gesagt, der Scout-Kern 34 führt den Vorablesezugriffscode aus, der zum Überwachen des übergeordneten Kerns 32 verwendet wird. Durch den Vorablesezugriffscode wird ermittelt, ob in dem übergeordneten Kern 32 ein oder mehrere vorgegebene Datenmuster vorgekommen sind, und auf der Grundlage des ermittelten Datenmusters eine Abrufanforderung an den gemeinsam genutzten Cachespeicher 50 gesendet. Außerdem wird der Vorablesezugriffscode unabhängig von allen durch den übergeordneten Kern 32 ausgeführten Codes ausgeführt. Der Scout-Kern 34 speichert generell den Vorablesezugriffscode auf dem im Scout-Kern 34 befindlichen L1-I-Cachespeicher 40.
-
Bei dem vorgegebenen Datenmuster kann es sich um eine Inhaltsanforderung handeln, die den übergeordneten Kern 32 verlässt (z. B. eine Anforderung nach einer vorgegebenen Cachespeicherzeile, die in dem I-Cachespeicher 40 und einem D-Cachespeicher 42 des übergeordneten Kerns 32 nicht vorliegt), oder alternativ um eine Prüfpunktadresse des übergeordneten Kerns 32. Zum Beispiel kann der übergeordnete Kern 32 eine Speicheradresse entweder vom I-Cachespeicher 40 oder vom D-Cachespeicher 42 abrufen. Wenn der I-Cachespeicher 40 oder der D-Cachespeicher 42 eine vom übergeordneten Kern 32 angeforderte vorgegebene Cachespeicherzeile nicht enthält, hat sich ein Cachespeicherfehltreffer ereignet. Der Scout-Kern 34 erkennt den Cachespeicherfehltreffer, indem er den übergeordneten Kern 32 durch den gemeinsam genutzten Cachespeicher 50 über den Abrufüberwachungsbus 66 überwacht. Gemäß einer Ausführungsform ermittelt der Scout-Kern 34, ob sich der Cachespeicherfehltreffer im I-Cachespeicher 40 oder im D-Cachespeicher 42 (oder in einem beliebigen anderen Typ von Cachespeicher im übergeordneten Kern 32, in dem ein Cachespeicherfehltreffer auftritt) ereignet hat. Nach einem Erkennen eines Cachespeicherfehltreffers kann ein Vorablesezugriff auf eine zukünftig fehlende Cachespeicherzeile durch den Scout-Kern 34 über den Abrufanforderungsbus 68 an den gemeinsam genutzten Cachespeicher 50 gesendet werden. Gemäß einem Ansatz kann der Scout-Kern 34 eine Prüfung durchführen, um zu ermitteln, ob die betreffende Cachespeicherzeile in dem Cachespeicher des übergeordneten Kerns 32 (z. B. im I-Cachespeicher 40 oder im D-Cachespeicher 42) gespeichert ist. Wenn die betreffende Cachespeicherzeile in dem übergeordneten Kern 32 vorliegt, braucht auf die Daten, die sich bereits in dem Cachespeicher des übergeordneten Kerns 32 befinden, nicht mehr vorab zugegriffen zu werden.
-
Gemäß einem anderen Ansatz kann die Prüfpunktadresse des übergeordneten Kerns 32 zwischen dem übergeordneten Kern 32 und dem Scout-Kern 34 über den gemeinsam genutzten Cachespeicher 50 übermittelt werden. Bestimmte Prüfpunktadressen können für vorgegebene Ereignisse repräsentativ sein. Bei dem vorgegebenen Ereignis kann es sich zum Beispiel um eine Aufräumfunktion oder einen Kontextwechsel handeln. Gemäß einer beispielhaften Ausführungsform kann die Prüfpunktadresse einer vorgegebenen Cachespeicherzeile entweder im I-Cachespeicher 40 oder im D-Cachespeicher 42 des übergeordneten Kerns 32 zugehörig sein, jedoch sollte klar sein, dass die Prüfpunktadresse nicht unbedingt einer vorgegebenen Vorabrufadresse zugehörig sein muss. Der Scout-Kern 34 überwacht den übergeordneten Kern 32, und nach Beenden des vorgegebenen Ereignisses sendet der Scout-Kern 34 eine Vorablesezugriffsanforderung an den gemeinsam genutzten Cachespeicher 50, um eine dem vorgegebenen Ereignis zugehörige Cachespeicherzeile zu übernehmen.
-
Nach dem Empfangen der Vorablesezugriffsanforderung von dem Scout-Kern 34 sendet der gemeinsam genutzte Cachespeicher 50 die durch die Vorablesezugriffsanforderung angeforderten Daten über den Datenrückgabebus 60 zu dem übergeordneten Kern 32. Der gemeinsam genutzte Cachespeicher 50 sendet die durch die Vorablesezugriffsanforderung angeforderten Daten als Funktion der Vorablesezugriffsanforderung an den übergeordneten Kern 32. Die durch die Vorablesezugriffsanforderung angeforderten Daten werden nicht durch den Scout-Kern 34, sondern nur durch den übergeordneten Kern 32 akzeptiert.
-
Gemäß einem Ansatz teilt der Scout-Kern 34 dem übergeordneten Kern 32 mit, dass im Auftrag des übergeordneten Kerns 32 ein Vorablesezugriff getätigt wurde. Alternativ teilt der gemeinsam genutzte Cachespeicher 50 gemäß einem anderen Ansatz nach dem Senden der durch die Vorablesezugriffsanforderung angeforderten Daten ebenfalls dem übergeordneten Kern 32 mit, dass im Auftrag des übergeordneten Kerns 32 ein Vorabruf getätigt wurde. Somit teilt der Scout-Kern 34 dem gemeinsam genutzten Cachespeicher 50 mit, wie die durch die Vorablesezugriffsanforderung angeforderten Daten weitergeleitet und auf dem übergeordneten Kern 32 gespeichert werden sollen, so als hätte der übergeordnete Kern 32 die Vorablesezugriffsanforderung selbst ausgelöst (obwohl nicht der übergeordnete Kern 32 selbst, sondern der Scout-Kern 34 die Vorablesezugriffsanforderung getätigt hatte). Somit werden die durch die Vorablesezugriffsanforderung angeforderten Daten in dem I-Cachespeicher 40 oder in dem D-Cachespeicher 42 des übergeordneten Kerns 32 gespeichert.
-
3 ist eine alternative Darstellung eines CP-Chips 124 mit einem einzigen Scout-Kern 134, jedoch mindestens zwei übergeordneten Kernen 132. Zu beachten ist, dass in 3 zwar zwei übergeordnete Kerne 132 dargestellt sind, jedoch gleichermaßen auch eine beliebige Anzahl mehrerer übergeordneter Kerne 132 verwendet werden kann. Bei der in 3 gezeigten Ausführungsform sind zwischen den übergeordneten Kernen 132 und dem gemeinsam genutzten Cachespeicher 150 ein Datenrückgabebus 160 und zwischen dem Scout-Kern 134 und dem gemeinsam genutzten Cachespeicher 150 ein Datenrückgabebus 162 bereitgestellt. Für jeden der übergeordneten Kerne 132 ist ein Abrufanforderungsbus 164 bereitgestellt, wobei der Abrufanforderungsbus 164 die übergeordneten Kerne 132 mit dem gemeinsam genutzten Cachespeicher 150 verbindet. Ein Abrufüberwachungsbus 166 verbindet den Scout-Kern 134 mit dem gemeinsam genutzten Cachespeicher 150. Zwischen dem Scout-Kern 134 und dem gemeinsam genutzten Cachespeicher 150 ist ein Abrufanforderungsbus 168 angeordnet, um von dem Scout-Kern 134 verschiedene Vorablesezugriffsanforderungen zu dem gemeinsam genutzten Cachespeicher 150 zu senden.
-
4 ist eine alternative Darstellung eines CP-Chips 224 mit mindestens zwei Scout-Kernen 234 und einem übergeordneten Kern 232. Zu beachten ist, dass in 4 zwar zwei Scout-Kerne 234 dargestellt sind, jedoch gleichermaßen auch mehrere (z. B. mehr als zwei) Scout-Kerne 232 verwendet werden können. Bei der in 4 gezeigten Ausführungsform ist zwischen dem übergeordneten Kern 232 und dem gemeinsam genutzten Cachespeicher 250 ein Datenrückgabebus 260 bereitgestellt. Für jeden der Scout-Kerne 234 ist ein Datenrückgabebus 262 bereitgestellt, der zum Verbinden eines der Scout-Kerne 234 mit dem gemeinsam genutzten Cachespeicher 250 dient. Ein Abrufanforderungsbus 264 verbindet den übergeordneten Kern 232 mit dem gemeinsam genutzten Cachespeicher 250. Für jeden der Scout-Kerne 234 ist ein Abrufüberwachungsbus 266 bereitgestellt, der zum Verbinden eines der Scout-Kerne 234 mit dem gemeinsam genutzten Cachespeicher 250 dient. Für jeden der Scout-Kerne 234 ist ein Abrufanforderungsbus 268 bereitgestellt, der zum Verbinden eines der Scout-Kerne 234 mit dem gemeinsam genutzten Cachespeicher 250 dient.
-
Gemäß der in 4 gezeigten Ausführungsform kann jeder der Scout-Kerne 234 den übergeordneten Kern 232 auf ein anderes vorgegebenes Datenmuster hin überwachen. Gemäß einem Ansatz kann zum Beispiel einer der Scout-Kerne 234 das Verhalten eines L1-I-Cachespeichers 240 des übergeordneten Kerns 232 überwachen und analysieren, während der andere Scout-Kern 234 das Verhalten eines L1-D-Cachespeichers 242 des übergeordneten Kerns 232 überwachen und analysieren kann. Somit können innerhalb eines bestimmten Zeitraums zusätzliche Daten überwacht und analysiert werden.
-
5 ist ein Ablaufplan eines Verfahrens 300 zum Vorablesezugriff auf Daten für den übergeordneten Kern 32 durch den Scout-Kern 34, das im Folgenden erörtert wird. Bezug nehmend auf die 1 bis 5 startet das Verfahren 300 in Block 302, wo der Scout-Kern 34 den übergeordneten Kern 32 über den gemeinsam genutzten Cachespeicher 50 überwacht. Dann kann das Verfahren mit Block 304 fortfahren.
-
In Block 304 überwacht der Scout-Kern 34 den übergeordneten Kern 32 auf das vorgegebene Datenmuster hin, das in dem übergeordneten Kern 32 vorkommt. Gemäß der obigen Erörterung kann es sich bei dem vorgegebenen Datenmuster entweder um eine Inhaltsanforderung, die den übergeordneten Kern 32 verlässt (z. B. eine Anforderung nach einer vorgegebenen Cachespeicherzeile, die entweder im I-Cachespeicher 40 oder im D-Cachespeicher 42 des übergeordneten Kerns 32 nicht vorliegt), oder alternativ um eine Prüfpunktadresse handeln. Wenn das vorgegebene Datenmuster nicht erkannt wird, kann das Verfahren 300 zu Block 302 zurückkehren. Wenn das vorgegebene Datenmuster erkannt wird, kann das Verfahren mit Block 306 fortfahren.
-
In Block 306 sendet der Scout-Kern 34 die Vorablesezugriffsanforderung an den gemeinsam genutzten Cachespeicher 50. Gemäß der obigen Erörterung kann es sich bei der Vorablesezugriffsanforderung zum Beispiel um einen Vorablesezugriff auf die fehlende Cachespeicherzeile handeln, die durch den Scout-Kern 34 an den gemeinsam genutzten Cachespeicher 50 gesendet wurde. Dann kann das Verfahren 300 mit Block 308 fortfahren.
-
In Block 308 wird dem übergeordneten Kern 32 mitgeteilt, dass im Auftrag des übergeordneten Kerns 32 ein Vorablesezugriff getätigt wurde. Dann kann das Verfahren 300 mit Block 310 fortfahren.
-
In Block 310 sendet der gemeinsam genutzte Cachespeicher 50 die durch die Vorablesezugriffsanforderung angeforderten Daten über den Datenrückgabebus 60 zu dem übergeordneten Kern 32. Der gemeinsam genutzte Cachespeicher 50 sendet die durch die Vorablesezugriffsanforderung angeforderten Daten als Funktion der Vorablesezugriffsanforderung zu dem übergeordneten Kern 32. Gemäß einer Ausführungsform werden die Blöcke 308 und 310 gleichzeitig ausgeführt. Dann kann das Verfahren 300 beendet werden.
-
Dem Fachmann ist einsichtig, das ein oder mehrere Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt umgesetzt werden können. Demzufolge können ein oder mehrere Aspekte der vorliegenden Erfindung die Form einer kompletten Hardwareausführungsform, einer kompletten Softwareausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte in sich vereint, die hierin sämtlich allgemein als „Schaltkreis”, „Modul” oder „System” bezeichnet werden können. Außerdem können ein oder mehrere Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darauf gespeicherten computerlesbaren Programmcode verkörpert ist.
-
Es kann eine beliebige Kombination eines oder mehrerer computerlesbarer Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich, ohne darauf beschränkt zu sein, um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine entsprechende Vorrichtung oder Einheit oder eine beliebige geeignete Kombination derselben handeln. Als einzelne Beispiele (eine nicht erschöpfende Aufzählung) für das computerlesbare Speichermedium kommen infrage eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination derselben. In Verbindung mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges materielles Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen enthalten oder speichern kann.
-
Gemäß einem in 6 gezeigten Beispiel enthält ein Computerprogrammprodukt 600 zum Beispiel ein oder mehrere Speichermedien 602, wobei die Medien materiell und/oder nichtflüchtig sein können, zum Speichern eines computerlesbaren Programmcodemittels oder einer Programmcodelogik 604 auf denselben, um einen oder mehrere Aspekte von hierin beschriebenen Ausführungsformen bereitzustellen oder zu ermöglichen.
-
Ein Programmcode, der erzeugt und auf einem materiellen Medium (darunter, ohne darauf beschränkt zu sein, elektronische Speichermodule (RAM), Flash-Speicher, Compact Discs (CDs), DVDs, Magnetbänder und dergleichen) gespeichert wird, wird oft als „Computerprogrammprodukt” bezeichnet. Das Medium des Computerprogrammprodukts ist üblicherweise durch einen Verarbeitungsschaltkreis lesbar, das vorzugsweise in einem Computersystem zum Ausführen des Computerprogrammprodukts durch den Verarbeitungsschaltkreis dient. Ein solcher Programmcode zum Beispiel kann unter Verwendung eines Compilers oder Assemblers erzeugt werden, um Anweisungen zusammenzustellen, die bei Ausführung Aspekte der Erfindung realisieren.
-
Zu den oben beschriebenen technischen Auswirkungen und Vorteilen des Datenverarbeitungssystems 10 gehört das Entwickeln eines Programms, das durch den L1-I-Cachespeicher 40 des Scout-Kerns 34 ausgeführt werden kann. Der Scout-Kern 34 kann den übergeordneten Kern 32 auf verschiedene Typen vorgegebener Datenmuster überwachen, die in dem übergeordneten Kern 32 vorkommen. Bestimmte Typen von gegenwärtig verfügbaren Hardware-Vorablesezugriffseinheiten hingegen können den übergeordneten Kern 34 nur auf ein vorgegebenes Muster hin überwachen. Außerdem kann die Anzahl der Datenmuster, die durch den Scout-Prozessor 34 überwacht und analysiert werden können, relativ größer sein als die einer gegenwärtig verfügbaren Hardware-Vorablesezugriffseinheit, da der gesamte L1-D-Cachespeicher 42 des Scout-Prozessors 34 zum Speichern der zu analysierenden Daten verwendet werden kann.
-
Die hierin verwendeten Begriffe dienen zum Beschreiben einzelner Ausführungsformen und nicht zur Einschränkung auf die Ausführungsformen. Die hierin verwendeten Einzahlformen „ein”, „eine” und „der, die, das” sollen gleichermaßen auch die Mehrzahlformen beinhalten sofern nicht aus dem Zusammenhang anderes hervorgeht. Ferner ist klar, dass die Begriffe „weist auf” und/oder „aufweisend” bei Verwendung in dieser Beschreibung das Vorhandensein angegebener Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten bezeichnen, jedoch nicht das Vorhandensein oder Hinzukommen eines oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Operationen, Elemente, Komponenten und/oder deren Gruppen ausschließen.
-
Die jeweiligen Strukturen, Materialien, Aktionen und Entsprechungen aller Mittel oder Schritte zuzüglich Funktionselemente in den folgenden Ansprüchen sollen alle Strukturen, Materialien oder Aktionen zum Ausführen der Funktion in Kombination mit anderen ausdrücklich beanspruchten Elementen beinhalten. Die Beschreibung der Ausführungsformen ist zur Veranschaulichung und Beschreibung vorgelegt worden, erhebt jedoch nicht den Anspruch auf Vollständigkeit oder Einschränkung auf die Ausführungsformen in der offenbarten Form. Dem Fachmann sind viele Modifikationen und Varianten offensichtlich, ohne vom Schutzumfang oder Wesensgehalt der Ausführungsformen abzuweichen. Die Ausführungsformen wurden gewählt und beschrieben, um die Grundgedanken und die praktische Anwendung bestmöglich zu erläutern und anderen Fachleuten das Verständnis der Ausführungsformen mit verschiedenen Modifikationen zu ermöglichen, die jeweils für den vorgesehenen Verwendungszweck geeignet sind.
-
Ein Computerprogrammcode zum Ausführen von Operationen für Aspekte der Ausführungsformen kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C” oder ähnliche Programmiersprachen. Der Programmcode kann komplett auf dem Computer eines Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder komplett auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Fall kann der ferne Computer durch einen beliebigen Typ von Netzwerk, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), mit dem Computer des Benutzers verbunden sein, oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
-
Aspekte von Ausführungsformen werden oben unter Bezugnahme auf Ablaufpläne und/oder schematische Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß den Ausführungsformen beschrieben. Es ist klar, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Anweisungen eines Computerprogramms umgesetzt werden können. Diese Anweisungen eines Computerprogramms kann einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zugeführt werden, um eine Maschine derart zu erzeugen, dass die durch den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zum Umsetzen der in dem Block oder den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktionen/Aktionen erzeugen.
-
Diese Anweisungen des Computerprogramms können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten veranlassen kann, in einer bestimmten Weise derart zu funktionieren, dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, der Anweisungen zum Umsetzen der in dem Block oder den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktionen/Aktionen enthält.
-
Die Anweisungen des Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Folge auf dem Computer, einer anderen programmierbaren Vorrichtung oder anderen Einheiten auszuführender Arbeitsschritte zu veranlassen, um einen computergestützten Prozess derart zu erzeugen, dass die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführten Anweisungen Prozesse zum Umsetzen der in dem Block oder den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktionen/Aktionen bereitstellen.
-
Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und die Funktionsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen. Demgemäß kann jeder Block in dem Ablaufplan oder den Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt repräsentieren, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. Dabei ist zu beachten, dass bei einigen alternativen Implementierungen die in dem Block angegebenen Funktionen in einer von den Figuren abweichenden Reihenfolge auftreten können. Zum Beispiel können zwei nacheinander gezeigte Blöcke je nach vorgesehener Funktionalität in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können mitunter in der umgekehrten Reihenfolge ausgeführt werden. Zu beachten ist auch, dass jeder Block der Blockschaubilder und/oder des Ablaufplans oder Kombinationen von Blöcken in den Blockschaubildern und/oder dem Ablaufplan durch spezielle Hardwaresysteme, die die angegebenen Funktionen oder Aktionen ausführen, oder durch Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden können.