DE112014000340T5 - Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern - Google Patents

Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern Download PDF

Info

Publication number
DE112014000340T5
DE112014000340T5 DE112014000340.9T DE112014000340T DE112014000340T5 DE 112014000340 T5 DE112014000340 T5 DE 112014000340T5 DE 112014000340 T DE112014000340 T DE 112014000340T DE 112014000340 T5 DE112014000340 T5 DE 112014000340T5
Authority
DE
Germany
Prior art keywords
core
scout
parent
prefetch code
prefetch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112014000340.9T
Other languages
English (en)
Inventor
Fadi Yusuf Busaba
Steven R. Carlough
Brian Robert Prasky
Christopher Anthony Krygowski
Chung-Lung Kevin Shum
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112014000340T5 publication Critical patent/DE112014000340T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/622State-only directory, i.e. not recording identity of sharing or owning nodes

Abstract

Ein Verfahren zum Vorablesezugriff auf Daten auf einem Chip mit mindestens einem Scout-Kern und einem übergeordneten Kern beinhaltet ein Speichern der Startadresse eines Vorablesezugriffscodes durch den übergeordneten Kern. Die Startadresse des Vorablesezugriffscodes zeigt an, wo ein Vorablesezugriffscode gespeichert ist. Der Vorablesezugriffscode ist speziell zum Überwachen des übergeordneten Kerns auf der Grundlage einer durch den übergeordneten Kern ausgeführten vorgegebenen Anwendung konfiguriert. Das Verfahren beinhaltet ein Senden eines Rundsende-Interruptsignals durch den übergeordneten Kern zu dem mindestens einen Scout-Kern. Das Rundsende-Interruptsignal wird auf der Grundlage der gespeicherten Startadresse des Vorablesezugriffscodes gesendet. Das Verfahren beinhaltet ein Überwachen des übergeordneten Kerns durch den Vorablesezugriffscode, der durch mindestens einen Scout-Kern ausgeführt wird. Der Scout-Kern führt den Vorablesezugriffscode auf der Grundlage des Empfangens des Rundsende-Interruptsignals aus.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft allgemein Mehrkern-Chips mit einem übergeordneten Kern und einem Scout-Kern und insbesondere spezielle Vorablesezugriffsalgorithmen für einen übergeordneten Kern in einem Mehrkern-Chip.
  • HINTERGRUND DER ERFINDUNG
  • Auf einem einzigen Chip können mehrere Kerne angeordnet sein. Gemäß einem Ansatz kann auf demselben Chip wie der übergeordnete Kern ein zweiter Kern als Scout-Kern bereitgestellt sein. Um den vorhandenen Scout-Kern gemäß einem Ansatz einzusetzen oder zu nutzen, wird der Scout-Kern zum Vorablesezugriff auf Daten von einem gemeinsam genutzten Cachespeicher in den privaten Cachespeicher des übergeordneten Kerns verwendet. Dieser Ansatz ist besonders dann von Vorteil, wenn in dem übergeordneten Kern ein Cachespeicherfehltreffer auftritt. Zu einem Cachespeicherfehltreffer kommt es, wenn bei der Suche nach einer bestimmten 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 Anwendungen unterschiedlich verhalten, sodass ein Vorablesezugriffsalgorithmus oder -ansatz möglicherweise nicht immer die Latenzzeit für ein Zugreifen auf den Cachespeicherinnhalt verbessert. Insbesondere, wenn der übergeordnete Kern zum Beispiel mehrere verschiedene Anwendungen ausführt, kann der zum Überwachen der verschiedenen Anwendungen verwendete Vorablesezugriffsalgorithmus je nach der einzelnen gerade ausgeführten Anwendung verschiedene Latenzzeiten für das Zugrufen auf den Cachespeicherinhalt bereitstellen. Zum Beispiel kann sich eine Anwendung zum Durchsuchen einer schwach belegten Datenbank anders verhalten (z. B. kann der Vorablesezugriffalgorithmus eine längere oder kürzere Latenzzeit für das Zugrufen auf den Cachespeicherinhalt bereitstellen) als eine Anwendung für die Farbkorrektur von Bildern.
  • KURZDARSTELLUNG
  • Aspekte der vorliegenden Erfindung betreffen ein Verfahren, ein System und ein Computerprogrammprodukt zum Vorablesezugriff auf Daten auf einem Chip mit mindestens einem Scout-Kern und einem übergeordneten Kern. Das Verfahren beinhaltet ein Speichern der Startadresse eines Vorablesezugriffscodes durch den übergeordneten Kern. Die Startadresse des Vorablesezugriffscodes zeigt an, wo der Vorablesezugriffscode gespeichert ist. Der Vorablesezugriffscode ist speziell zum Überwachen des übergeordneten Kerns auf der Grundlage einer durch den übergeordneten Kern ausgeführten vorgegebenen Anwendung konfiguriert. Das Verfahren beinhaltet ein Senden eines Rundsende-Interruptsignals durch den übergeordneten Kern zu dem mindestens einen Scout-Kern. Das Rundsende-Interruptsignal wird auf der Grundlage der gespeicherten Startadresse des Vorablesezugriffscodes gesendet. Das Verfahren beinhaltet ein Überwachen des übergeordneten Kerns durch den Vorablesezugriffscode, der durch den mindestens einen Cachespeicher ausgeführt wird. Der Scout-Kern führt den Vorablesezugriffscode auf der Grundlage des Empfangs des Rundsende-Interruptsignal aus.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Nunmehr werden Ausführungsformen der Erfindung lediglich beispielhaft unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben, wobei:
  • 1 Mehrkern-Chips gemäß einer Ausführungsform darstellt;
  • 2A einen zentralen Verarbeitungs-(CP-)Chip gemäß einer Ausführungsform darstellt;
  • 2B einen CP-Chip gemäß einer alternativen Ausführungsform darstellt;
  • 3 eine architekturdefinierte Vorabladeanweisung des Scout-Kerns darstellt;
  • 4 einen Ablaufplan zum Veranschaulichen eines beispielhaften Verfahrens zum Laden eines Vorablesezugriffscodes von einem übergeordneten Kern zu einem Scout-Kern darstellt;
  • 5 einen Ablaufplan zum Veranschaulichen eines beispielhaften Verfahrens zum Laden eines Vorablesezugriffscodes während eines Taskwechsels darstellt, von dem ein Betriebssystem des übergeordneten Kerns betroffen ist;
  • 6 einen Ablaufplan zum Veranschaulichen eines beispielhaften Verfahrens zum Laden eines Vorablesezugriffscodes durch eine in dem übergeordneten Kern ausgeführte vorgegebene Anwendung darstellt; und
  • 7 ein Computerprogrammprodukt gemäß einer Ausführungsform veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Es wird eine Ausführungsform zum Vorablesezugriff auf Daten durch einen Scout-Kern in einem Mehrkern-Chip mit effizienterem Vorablesezugriff offenbart. Gemäß einer beispielhaften Ausführungsform enthält der Mehrkern-Chip einen übergeordneten Chip und mindestens einen Scout-Kern. Im übergeordneten Chip ist eine Startadresse eines Vorablesezugriffscodes gespeichert. Die Startadresse des Vorablesezugriffscodes zeigt an, wo ein bestimmter Vorablesezugriffscode gespeichert ist. Der Vorablesezugriffscode ist speziell zum Überwachen des übergeordneten Kerns auf der Grundlage einer durch den übergeordneten Kern ausgeführten vorgegebenen Anwendung konfiguriert. Der Scout-Kern überwacht den übergeordneten Kern durch Ausführen des vorgegebenen Vorablesezugriffscodes.
  • Der vorgegebene Vorablesezugriffscode kann einer vorgegebenen Anwendung entsprechen, die selektiv durch den übergeordneten Kern ausgeführt wird (z. B. wenn eine Anwendung keinen vorgegebenen, ihr zugehörigen Vorablesezugriffscode aufweist, kann der Scout-Kern stattdessen einen De-facto- oder Standard-Vorablesezugriffscode ausführen). Zu beachten ist, dass sich verschiedene durch den übergeordneten Kern ausgeführte Anwendungen unterschiedlich verhalten und somit ein allgemeiner Vorablesezugriffsalgorithmus (z. B. ein nicht auf eine bestimmte Anwendung zugeschnittener Vorablesezugriffsalgorithmus) je nach der durch den übergeordneten Kern ausgeführten vorgegebenen Anwendung möglicherweise nicht immer die Latenzzeit verbessert. Der in beispielhaften Ausführungsformen offenbarte Ansatz ermöglicht dem Scout-Kern, den übergeordneten Kern unter Verwendung des vorgegebenen Vorablesezugriffscodes zu überwachen, der genau auf das Überwachen einer durch den übergeordneten Kern ausgeführten vorgegebenen Anwendung zugeschnitten ist. Der übergeordnete Kern kann ein Rundsende-Interruptsignal zu dem Scout-Kern senden, um den Vorablesezugriffscode auf der Grundlage der durch den übergeordneten Kern ausgeführten vorgegebenen Anwendung zu wechseln.
  • 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 ist klar, dass gleichfalls eine beliebige Anzahl von CP-Chip 20 verwendet werden kann. Gemäß einem Ansatz kann das Datenverarbeitungssystem 10 zum Beispiel acht CP-Chips 20 enthalten. Gemäß einem anderen Ansatz kann das Datenverarbeitungssystem 10 bis zu zwölf oder sechzehn CP-Chips 20 enthalten. Jeder CP-Chip 20 tauscht Daten mit einem gemeinsam genutzten Cachespeicher 22 und einem Systemspeicher 24 aus.
  • Gemäß den 1 bis 2A enthält jeder CP-Chip 20 mehrere Kerne 30 zum Lesen und Ausführen von Anweisungen. Bei der in 2A gezeigten beispielhaften Ausführungsform enthält zum Beispiel jeder CP-Chip 20 einen übergeordneten Kern 32 und einen Scout-Kern 34, jedoch ist klar, dass auf dem CP-Chip 20 mehrere übergeordnete Kerne 32 und Scout-Kerne 34 untergebracht werden können. Gemäß einem Ansatz kann der CP-Chip 20 zum Beispiel vier übergeordnete Kerne 32 enthalten, die Daten mit jeweils einem Scout-Kern 34 (d. h. insgesamt acht Kernen) austauschen Gemäß einer in 2B gezeigten alternativen Ausführungsform, die einen CP-Chip 120 veranschaulicht, kann ein übergeordneter Kern 132 Daten mit mehreren Scout-Kernen 134 austauschen. Gemäß einem Ansatz kann der CP-Chip 120 zum Beispiel mit zwei übergeordneten Kernen 132 ausgestattet sein, die Daten mit jeweils drei Scout-Kernen 134 (d. h. insgesamt acht Kernen) austauschen.
  • Jeder Kern 30 in 2A enthält auch einen entsprechenden Anweisungs-I-Cachespeicher 40 und einen Daten-D-Cachespeicher 42. Bei der in 2A gezeigten beispielhaften Ausführungsform enthalten die Kerne 30 jeweils nur einen Ebene-1-(L1-)Cachespeicher, jedoch ist klar, dass gemäß verschiedenen Ausführungsformen die Kerne 30 ebenso auch einen Ebene-2-(L2-)Cachespeicher enthalten können. Jeder Kern 30 ist funktionell mit einem gemeinsam genutzten Cachespeicher 50 verbunden. Bei der in 2A gezeigten Ausführungsform handelt es sich bei dem gemeinsam genutzten Cachespeicher um einen L2-Cachespeicher, jedoch ist klar, dass es sich bei dem gemeinsam genutzten Cachespeicher 50 ebenso 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. Ein Abrufanforderungsbus 64 verbindet den übergeordneten Kern 32 mit dem gemeinsam genutzten Cachespeicher 50 und dem Scout-Kern 34, wobei Daten von dem übergeordneten Kern 32 zu dem gemeinsam genutzten Cachespeicher 50 und dem Scout-Kern 34 gesendet werden. Ein Abrufanforderungsbus 66 verbindet den Scout-Kern 34 mit dem gemeinsam genutzten Cachespeicher 50, wobei der Scout-Kern 34 den gemeinsam genutzten Cachespeicher 50 über den Abrufanforderungsbus 66 überwacht Der Abrufanforderungsbus 66 kann auch zum Abrufen für den Scout-Kern 34 verwendet werden. Dieses Verhalten ähnelt dem Abrufanforderungsbus 64, der für den übergeordneten Kern 32 abruft. Ein solches Abrufen kann zum Laden eines oder mehrerer Vorablesezugriffsalgorithmen in den Scout-Kern 34 und möglicherweise zum Laden weiterer zu analysierender Daten erforderlich sein, falls die zu analysierenden Daten nicht komplett in den lokalen D-Cachespeicher 40 passen. Ein Ladevorablesezugriffsbus 68 ist zwischen dem übergeordneten Kern 32 und dem Scout-Kern 34 angeordnet. Der übergeordnete Kern 32 teilt dem Scout-Kern 32 über den Ladevorablesezugriffsbus 68 mit, dass er einen Vorablesezugriffscode und eine vorgegebene Startadresse des Vorablesezugriffscodes laden soll, die anzeigt, wo der Vorablesezugriffscode gespeichert ist. Der Vorablesezugriffscode kann auf einer Vielfalt verschiedener Speicherorte in dem Datenverarbeitungssystem 10 gespeichert sein, auf die über die Speicheradresse zugegriffen werden kann, beispielsweise auf dem L1-I-Cachespeicher 40 des Scout-Kerns, dem gemeinsam genutzten Cachespeicher 50, dem gemeinsam genutzten Cachespeicher 22 (1) oder dem Systemspeicher 24 (1).
  • Gemäß 2B sind ein Datenrückgabebus 160 zwischen dem übergeordneten Kern 132 und einem gemeinsam genutzten Cachespeicher 150 und ein Datenrückgabebus 162 zwischen den Scout-Kernen 134 und dem gemeinsam genutzten Cachespeicher 150 angeordnet. Ein Abrufanforderungsbus 164 verbindet den übergeordneten Kern 132 mit dem gemeinsam genutzten Cachespeicher 150, wobei Daten von dem übergeordneten Kern 132 zu dem gemeinsam genutzten Cachespeicher 150 gesendet werden. Für jeden Scout-Kern 134 ist ein Abrufanforderungsbus 166 bereitgestellt, der den Scout-Kern 134 mit dem gemeinsam genutzten Cachespeicher 150 verbindet. Die über die Abrufanforderungsbusse 166 übertragenen Daten sind für jeden der Scout-Kerne 134 verschieden. Mit jedem Scout-Kern 134 ist ein Ladevorablesezugriffsbus 168 verbunden, der zwischen dem übergeordneten Kern 132 und jedem Scout-Kern 134 angeordnet ist. Für jeden Scout-Kern 134 ist ein Abrufüberwachungsbus 170 bereitgestellt, der zwischen dem gemeinsam genutzten Cachespeicher 150 und einem der Scout-Kerne 134 angeordnet ist. Im Gegensatz zum Abrufanforderungsbus 166 sind die über die Abrufüberwachungsbusse 170 übertragenen Daten nicht unbedingt für jeden der Scout-Kerne 134 verschieden.
  • Gemäß 2A dient der gemeinsam genutzte Cachespeicher 50 als Knoten oder Verbindungsglied, sodass der Scout-Kern 34 den übergeordneten Kern 32 überwachen kann. Der Scout-Kern 34 überwacht den übergeordneten Kern 32 auf ein vorgegebenes Datenmuster hin, das in dem übergeordneten Kern 32 vorkommt. Insbesondere führt der Scout-Kern 34 einen Vorablesezugriffscode aus, der zum Überwachen des übergeordneten Kerns 32 verwendet wird. Der Vorablesezugriffscode ermittelt, ob in dem übergeordneten Kern 32 ein oder mehrere vorgegebene Datenmuster vorgekommen sind und sendet auf der Grundlage des vorgegebenen Datenmuster eine Abrufanforderung zu dem gemeinsam genutzten Cachespeicher 50. Der Scout-Kern 34 speichert den Vorablesezugriffscode im Allgemeinen in dem I-Cachespeicher 40, der sich auf dem Scout-Kern 34 befindet.
  • Bei dem vorgegebenen Datenmuster kann es sich entweder um eine Inhaltsanforderung, die den übergeordneten Kern 32 verlässt (z. B. eine Anforderung nach einer bestimmten Cachespeicherzeile, die sich nicht in dem I-Cachespeicher 40 oder einem D-Cachespeicher 42 des übergeordneten Kerns 32 befindet), oder um eine Prüfpunktadresse des übergeordneten Kerns 32 handeln. Wenn es sich bei dem vorgegebenen Datenmuster zum Beispiel um einen Cachespeicherfehltreffer handelt (z. B. um eine fehlende Cachespeicherzeile in dem I-Cachespeicher 40 oder dem D-Cachespeicher 42 des übergeordneten Kerns 32), kann durch den Scout-Kern 34 eine Vorablesezugriffsanforderung nach einer gesuchten fehlenden Cachespeicherzeile über den Abrufanforderungsbus 66 zu dem gemeinsam genutzten Cachespeicher 50 gesendet werden. Wenn es sich bei dem vorgegebenen Datenmuster um die Prüfpunktadresse des übergeordneten Kerns 32 handelt, überwacht der Scout-Kern 34 den übergeordneten Kern 32 und sendet nach Beenden eines vorgegebenen Ereignisses (z. B. einer Aufräumfunktion oder eines Kontextwechsels) eine Vorablesezugriffsanforderung zu dem gemeinsam genutzten Cachespeicher, um eine dem vorgegebenen Ereignis zugehörige Cachespeicherzeile zu übernehmen.
  • Der Scout-Kern 34 ist so konfiguriert, dass er selektiv einen vorgegebenen Vorablesezugriffscode auf der Grundlage der durch den übergeordneten Kern 32 ausgeführten vorgegebenen Anwendung ausführt. Wenn zum Beispiel der übergeordnete Kern 32 eine Anwendung „A”, eine Anwendung „B” und eine Anwendung „C” nacheinander ausführt (z. B. führt der übergeordnete Kern 32 zuerst die Anwendung „A”, dann die Anwendung „B” und dann die Anwendung „C” aus), kann der Scout-Kern 34 einen Vorablesezugriffscode „A” zum Überwachen der Anwendung „A”, einen Vorablesezugriffscode „B” zum Überwachen der Anwendung „B” und einen Vorablesezugriffscode „C” zum Überwachen der Anwendung „C” ausführen. Das heißt, der vorgegebene Vorablesezugriffscode ist insbesondere so konfiguriert, dass er den übergeordneten Kern 32 überwacht, während dieser eine entsprechende Anwendung ausführt (z. B. überwacht der Vorablesezugriffscode „A” die Anwendung „A”). Das liegt daran, dass sich vorgegebene Vorablesezugriffscodes je nach der durch den übergeordneten Kern 32 ausgeführten vorgegebenen Anwendung unterschiedlich verhalten können. Zum Beispiel kann sich eine zum Durchsuchen einer schwach belegten Datenbank ausgelegte Anwendung anders verhalten (z. B. kann der Vorablesezugriffsalgorithmus eine längere oder kürzere Latenzzeit für das Zugreifen auf den Cachespeicherinhalt bereitstellen) als eine Anwendung für die Farbkorrektur von Bildern. Dabei ist zu beachten, dass der Scout-Kern 34, wenn einer Anwendung kein vorgegebener Vorablesezugriffscode zugehörig ist, stattdessen einen De-facto- oder Standard-Vorablesezugriffscode ausführen kann. Ein architekturdefinierter Status innerhalb des Scout-Kerns 34 stellt den Speicherort bereit, auf dem der Standard-Vorablesezugriffscode für den Scout-Kern 34 gespeichert ist.
  • Der übergeordnete Kern 32 führt im Allgemeinen verschiedene Anwendungen nacheinander aus (d. h. jeweils eine Anwendung zu einem bestimmten Zeitpunkt) und wechselt mit relativ hoher Geschwindigkeit (z. B. bis einer Geschwindigkeit von einigen hundert Mal pro Sekunde) von einer Anwendung zu einer anderen Anwendung, was als Multitasking bezeichnet wird. Genauer gesagt, der übergeordnete Kern 32 kann eine Anzahl von Anwendungen ausführen. Wenn eine vorgegebene Anwendung die Steuerung durch den übergeordneten Kern 32 an eine andere Anwendung übergibt, wird dies als Taskswap (Taskwechsel) bezeichnet. Während ein Betriebssystem des übergeordneten Kerns 32 von einem Taskwechsel betroffen ist, speichert der übergeordnete Kern 32 eine (in 2B mit 148 bezeichnete) Vorablesezugriffsadresse 48 innerhalb des übergeordneten Kerns 32, die der aktuell ausgeführten Anwendung zugehörig ist. Die Vorablesezugriffsadresse 48 zeigt an, wo die Startadresse des Vorablesezugriffscodes gespeichert worden ist, der der aktuell ausgeführten Anwendung zugehörig ist. Dann kann der übergeordnete Kern 32 eine neue Anwendung laden und die Vorablesezugriffsadresse 48 durch eine Startadresse des Vorablesezugriffscodes aktualisieren, die der neuen Anwendung zugehörig ist. Dann kann der übergeordnete Kern 32 ein Rundsende-Interruptsignal über den Ladevorablesezugriffsbus 68 zu dem Scout-Kern 34 senden. Das Rundsende-Interruptsignal stellt die Startadresse des Vorablesezugriffscodes und eine Interruptmitteilung bereit. Falls der durch den übergeordneten Kern 32 geladenen neuen Anwendung kein vorgegebener Vorablesezugriffscode zugehörig ist, sendet der übergeordnete Kern 32 das Rundsende-Interruptsignal zu dem Scout-Kern 34 und zeigt damit an, das durch den Scout-Kern 34 der Standard-Vorablesezugriffscode geladen werden soll.
  • Abgesehen von dem Taskwechsel durch den übergeordneten Kern 32 kann das Rundsende-Interruptsignal auch durch die in dem übergeordneten Kern 32 ausgeführte vorgegebene Anwendung ausgelöst werden. Das heißt, die in dem übergeordneten Kern 32 ausgeführte vorgegebene Anwendung kann eine Anweisung ausgeben, die anzeigt, dass der Scout-Kern 34 einen vorgegebenen Vorablesezugriffscode laden soll. Gemäß 3 kann eine architekturdefinierte Scout-Vorabladeanweisung 70 durch die in dem übergeordneten Kern 32 ausgeführte vorgegebene Anwendung ausgegeben werden. Die architekturdefinierte Scout-Vorabladeanweisung 70 zeigt die Startadresse des Vorablesezugriffscodes an, die der in dem übergeordneten Kern 32 ausgeführten vorgegebenen Anwendung zugehörig ist. Wenn der übergeordnete Kern 32 zum Beispiel eine Anwendung „A” ausführt, zeigt die durch die Anwendung „A” ausgegebene architekturdefinierte Scout-Vorabladeanweisung an, wo der der Anwendung „A” entsprechende vorgegebene Vorablesezugriffscode gespeichert worden ist.
  • Die architekturdefinierte Scout-Vorabladeanweisung 70 enthält einen Operationscode 72 zum Angeben der auszuführenden Operation sowie ein Basisregister 74, ein Indexregister 76 und eine relative Adresse 78 zum Angeben eines Speicherortes einer Startadresse, auf der der vorgegebene Vorablesezugriffscode gespeichert worden ist. Die architekturdefinierte Scout-Vorabladeanweisung 70 zeigt auch die Nummer 80 des vorgegebenen Scout-Kerns, in den der Vorablesezugriffscode geladen werden soll (zum Beispiel kann die Nummer 80 des vorgegebenen Scout-Kerns gemäß 2B entweder den Scout-Kern 1, den Scout-Kern 2 oder den Scout-Kern 3 anzeigen). Bei jedem Feld (z. B. dem Operationscode 7072, dem Basisregister 74, dem Indexregister 76, der relativen Adresse und der Nummer 80 des Scout-Kerns kann es sich um ein Mehrbitfeld handeln. Die Anzahl der Bits kann für jedes Feld verschieden sein. Der übergeordnete Kern 32 gemäß den 2A und 3 führt die architekturdefinierte Scout-Vorabladeanweisung 70 aus. Dann speichert der übergeordnete Kern 32 die Vorablesezugriffsadresse 48 mit der Startadresse des Vorablesezugriffscodes, die durch die architekturdefinierte Scout-Vorabladeanweisung 70 angezeigt wird.
  • Gemäß 2A wird nach Empfang des Rundsende-Interruptsignals eine Anweisungspipeline des Scout-Kerns 34 geleert. Dann kann der Scout-Kern 34 den durch die Startadresse des Vorablesezugriffscodes angezeigten Vorablesezugriffscode ausführen, die vom übergeordneten Kern 32 über den Ladevorablesezugriffsbus 68 gesendet wurde, um erneut eine Folge von Anweisungen zu starten.
  • 4 zeigt nunmehr einen Ablaufplan, der ein beispielhaftes Verfahren 200 zum Laden eines Vorablesezugriffscodes von dem übergeordneten Kern 32 zu dem Scout-Kern 34 veranschaulicht. Gemäß den 2A bis 4 beginnt das Verfahren 200 generell mit Block 202, wo das Rundsende-Interruptsignal von dem übergeordneten Kern 32 über den Ladevorablesezugriffsbus 68 (oder den Ladevorablesezugriffsbus 168, falls die Scout-Kerne 134 mit dem übergeordneten Kern 132 verbunden sind) zu dem Scout-Kern 34 gesendet wird. Das Rundsende-Interruptsignal stellt den Speicherplatz der Startadresse des Vorablesezugriffscodes und die Interruptmitteilung bereit. Dann kann das Verfahren 200 mit Block 203 fortfahren.
  • In Block 204 empfängt der Scout-Kern 32 über den Ladevorablesezugriffsbus 68 das Rundsende-Interruptsignal, das die Interruptmitteilung anzeigt. Dann kann das Verfahren 200 mit Block 206 fortfahren.
  • In Block 206 wird die Anweisungspipeline des Scout-Kerns 34 geleert, und der Scout-Kern 34 führt den Vorablesezugriffscode aus, der durch die Startadresse des Vorablesezugriffscodes angezeigt wird, die von dem übergeordneten Kern 32 über den Ladevorablesezugriffsbus 68 gesendet wurde. Dann kann das Verfahren 200 beendet werden.
  • 5 zeigt ein beispielhaftes Verfahren 300, das ein Auslösen des Rundsende-Interruptsignals durch einen Taskwechsel veranschaulicht, von dem ein Betriebssystem des übergeordneten Kerns 32 betroffen ist. Gemäß den 2A bis 2B und 5 beginnt das Verfahren 300 generell mit Block 302, wo ermittelt wird, ob der übergeordnete Kern 32 von einem Taskwechsel betroffen ist. Falls der übergeordnete Kern 32 von einem Taskwechsel betroffen ist, kann das Verfahren 300 mit Block 304 fortfahren.
  • In Block 304 speichert der übergeordnete Kern 32 die der aktuell ausgeführten Anwendung zugehörige Vorablesezugriffsadresse 48. Dann kann das Verfahren 300 mit Block 306 fortfahren.
  • In Block 306 lädt der übergeordnete Kern 32 eine neue Anwendung und aktualisiert die Vorablesezugriffsadresse 48 durch eine der neuen Anwendung zugehörige Startadresse des Vorablesezugriffscodes. Dann kann das Verfahren 300 mit Block 308 fortfahren.
  • In Block 308 sendet der übergeordnete Kern 32 das Rundsende-Interruptsignal über den Ladevorablesezugriffsbus 68 zu dem Scout-Kern 34. Das Rundsende-Interruptsignal stellt den Speicherplatz der Startadresse des Vorablesezugriffscodes und die Interruptmitteilung bereit. Dann kann das Verfahren 300 beendet werden.
  • 6 zeigt ein beispielhaftes Verfahren 400, welches ein Auslösen des Rundsende-Interruptsignals durch die in dem übergeordneten Kern 32 ausgeführte vorgegebene Anwendung veranschaulicht. Gemäß den 2A bis 2B, 3 und 6 beginnt das Verfahren generell mit Block 402, wo der übergeordnete Kern 32 eine vorgegebene Anwendung ausführt, welche die architekturdefinierte Scout-Vorabladeanweisung 70 ausgibt. (3). Dann kann das Verfahren mit Block 404 fortfahren.
  • In Block 404 führt der übergeordnete Kern 32 die architekturdefinierte Scout-Vorabladeanweisung 70 aus. Dann kann das Verfahren mit Block 406 fortfahren.
  • In Block 406 speichert der übergeordnete Kern 32 dann die Vorablesezugriffsadresse 48 mit der durch die architekturdefinierte Scout-Vorabladeanweisung 70 angegebenen Startadresse des Vorablesezugriffscodes. Dann kann das Verfahren 400 mit Block 408 fortfahren.
  • In Block 408 sendet der übergeordnete Kern 32 das Rundsende-Interruptsignal und die Startadresse des Vorablesezugriffscodes über den Ladevorablesezugriffsbus 68 zu dem Scout-Kern 34. Dann kann das Verfahren 400 beendet werden.
  • Dem Fachmann ist einsichtig, dass ein oder mehrere Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt umgesetzt werden können. Demgemäß 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 Einhut 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 7 gezeigten Beispiel enthält ein Computerprogrammprodukt 700 zum Beispiel ein oder mehrere Speichermedien 702, wobei die Medien materiell und/oder nichtflüchtig sein können, zum Speichern eines computerlesbaren Programmcodemittels oder einer Programmcodelogik 704 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 gespeichert wird (darunter, ohne darauf beschränkt zu sein, elektronische Speichermodule (RAM), Flash-Speicher, Compact Discs (CDs), DVDs, Magnetbänder und dergleichen), 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.
  • Ausführungsformen betreffen ein Verfahren, ein System und ein Computerprogrammprodukt zum Vorablesezugriff auf Daten auf einem Chip mit mindestens einem Scout-Kern und einem übergeordneten Kern. Das Verfahren beinhaltet ein Speichern einer Startadresse des Vorablesezugriffscodes durch den übergeordneten Kern. Die Startadresse des Vorablesezugriffscodes zeigt an, wo ein Vorablesezugriffscode gespeichert ist. Der Vorablesezugriffscode ist speziell so konfiguriert, dass er den übergeordneten Kern auf der Grundlage einer vorgegebenen durch den übergeordneten Kern ausgeführten Anwendung überwacht. Das Verfahren beinhaltet ein Senden eines Rundsende-Interruptsignals durch den übergeordneten Kern zu dem mindestens einen Scout-Kern. Das auf der Grundlage der Startadresse des Vorablesezugriffscodes gesendete Rundsende-Interruptsignal wird gespeichert. Das Verfahren beinhaltet ein Überwachen des übergeordneten Kerns durch den Vorablesezugriffscode, der durch den mindestens Scout-Kern ausgeführt wird. Der Scout-Kern führt den Vorablesezugriffscode auf der Grundlage des Empfangs des Rundsende-Interruptsignals aus.
  • Gemäß einer Ausführungsform beinhaltet das Verfahren ferner ein Speichern der Startadresse des Vorablesezugriffscodes durch den übergeordneten Kern auf der Grundlage eines Taskwechsels, der sich innerhalb des übergeordneten Kerns ereignet.
  • Gemäß einer Ausführungsform beinhaltet das Verfahren ferner ein Speichern der Startadresse des Vorablesezugriffscodes durch den übergeordneten Kern auf der Grundlage der vorgegebenen Anwendung, die eine Anweisung ausgibt.
  • Gemäß einer Ausführungsform beinhaltet das Verfahren ferner ein Anzeigen durch das Rundsende-Interruptsignal, dass durch den mindestens einen Scout-Kern ein Standard-Vorablesezugriffscode geladen werden soll. Ein innerhalb des Scout-Kerns befindlicher architekturdefinierter Status stellt einen Speicherort des Standard-Vorablesezugriffscodes bereit.
  • Gemäß einer Ausführungsform beinhaltet das Verfahren ferner ein Bereitstellen eines Speicherorts der Startadresse des Vorablesezugriffscodes und eines Interruptsignals durch das Rundsende-Interruptsignal.
  • Gemäß einer Ausführungsform beinhaltet das Verfahren ferner einen Ladevorablesezugriffsbus, der zwischen dem übergeordneten Kern und dem mindestens einen Scout-Kern angeordnet ist. Das Rundsende-Interruptsignal wird über den Ladevorablesezugriffsbus gesendet.
  • Gemäß einer Ausführungsform beinhaltet das Verfahren ferner einen gemeinsam genutzten Cachespeicher, der den übergeordneten Kern mit dem mindestens einen Scout-Kern verbindet. Ein Abrufanforderungsbus wird bereitgestellt, um den übergeordneten Kern sowohl mit dem gemeinsam genutzten Cachespeicher als auch mit dem mindestens einen Scout-Kern zu verbinden.
  • Zu technischen Auswirkungen und Vorteilen gehört, dass der Scout-Kern 34 den übergeordneten Kern 32 unter Verwendung eines Vorablesezugriffscodes überwachen kann, der speziell auf das Überwachen einer durch den übergeordneten Kern 32 ausgeführten vorgegebenen Anwendung zugeschnitten ist. Der übergeordnete Kern 32 sendet das Rundsende-Interruptsignal über den Ladevorablesezugriffsbus 68 zu dem Scout-Kern 34, um den vorgegebenen Vorablesezugriffscode auf der Grundlage der durch den übergeordneten Kern 32 ausgeführten Anwendung zu wechseln. Somit wird durch den oben erörterten Ansatz die Effizienz des Datenverarbeitungssystems 10 erhöht.
  • Die hierin verwendeten Begriffe dienen nur zum Beschreiben einzelner Ausführungsformen und sollen die Ausführungsformen nicht einschränken. Die hierin verwendeten Einzahlformen „ein”, „eine” und „der, die, das” sollen gleichermaßen auch die Mehrzahlformen beinhalten, sofern aus dem Zusammenhang nichts anderes hervorgeht. Ferner ist klar, dass die Begriffe „weist auf” 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 und 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.

Claims (20)

  1. Computersystem zum Vorablesezugriff auf Daten auf einem Chip, wobei das System aufweist: einen auf dem Chip angeordneten übergeordneten Kern, wobei der übergeordnete Kern so konfiguriert ist, dass er selektiv eine Mehrzahl von Anwendungen ausführt, wobei es sich bei einer aus der Mehrzahl von Anwendungen um eine vorgegebene Anwendung handelt; und mindestens einen auf dem Chip angeordneten Scout-Kern, wobei das System zum Ausführen eines Verfahrens konfiguriert ist, das aufweist: Speichern einer Startadresse eines Vorablesezugriffscodes durch den übergeordneten Kern, wobei die Startadresse des Vorablesezugriffscodes anzeigt, wo der Vorablesezugriffscode gespeichert ist, und wobei der Vorablesezugriffscode speziell so konfiguriert ist, dass er den übergeordneten Kern auf der Grundlage der ausgeführten vorgegebenen Anwendung überwacht; Senden eines Rundsende-Interruptsignals durch den übergeordneten Kern zu dem mindestens einen Scout-Kern, wobei das Rundsende-Interruptsignal auf der Grundlage dessen gesendet wird, dass die Startadresse des Vorablesezugriffscodes gespeichert wurde; und Überwachen des übergeordneten Kerns durch den mindestens Scout-Kern, wobei der mindestens eine Scout-Kern den Vorablesezugriffscode ausführt, um den übergeordneten Kern zu überwachen, wobei das Ausführen des Vorablesezugriffscodes auf dem Empfangen des Rundsende-Interruptsignals beruht.
  2. Computersystem nach Anspruch 1, wobei der übergeordnete Kern die Startadresse des Vorablesezugriffscodes auf der Grundlage eines Taskwechsels speichert, der sich innerhalb des übergeordneten Kerns ereignet.
  3. Computersystem nach Anspruch 1, wobei der übergeordnete Kern die Startadresse des Vorablesezugriffscodes auf der Grundlage dessen speichert, dass die vorgegebene Anwendung eine Anweisung ausgibt.
  4. Computersystem nach einem der vorhergehenden Ansprüche, wobei das Rundsende-Interruptsignal anzeigt, dass ein Standard-Vorablesezugriffscode durch den mindestens einen Scout-Kern geladen werden soll, wobei ein innerhalb des mindestens einen Scout-Kerns befindlicher architekturdefinierter Status einen Speicherort des Standard-Vorablesezugriffscodes bereitstellt.
  5. Computersystem nach einem der vorhergehenden Ansprüche, wobei das Rundsende-Interruptsignal einen Speicherort der Startadresse des Vorablesezugriffscodes und ein Interruptsignal bereitstellt.
  6. Computersystem nach einem der vorhergehenden Ansprüche, wobei ein Ladevorablesezugriffsbus zwischen dem übergeordneten Kern und dem mindestens einen Scout-Kern angeordnet ist und wobei das Rundsende-Interruptsignal über den Ladevorablesezugriffsbus gesendet wird.
  7. Computersystem nach einem der vorhergehenden Ansprüche, das ferner einen gemeinsam genutzten Cachespeicher aufweist, der den übergeordneten Kern mit dem mindestens einen Scout-Kern verbindet, wobei ein Abrufanforderungsbus bereitgestellt ist, um den übergeordneten Kern sowohl mit dem gemeinsam genutzten Cachespeicher als auch dem mindestens einen Scout-Kern zu verbinden.
  8. Computerprogrammprodukt zum Vorablesezugriff auf Daten auf einem Chip mit mindestens einem Scout-Kern und einem übergeordneten Kern, wobei das Computerprogrammprodukt aufweist: ein materielles Speichermedium, das durch einen Verarbeitungsschaltkreis lesbar ist und in dem Anweisungen zum Ausführen durch den Verarbeitungsschaltkreis gespeichert sind, um ein Verfahren auszuführen, das aufweist: Speichern einer Startadresse des Vorablesezugriffscodes durch den übergeordneten Kern, wobei die Startadresse des Vorablesezugriffscodes anzeigt, wo ein Vorablesezugriffscode gespeichert ist, und wobei der Vorablesezugriffscode speziell so konfiguriert ist, dass er den übergeordneten Kern auf der Grundlage einer durch den übergeordneten Kern ausgeführten vorgegebenen Anwendung überwacht; Senden eines Rundsende-Interruptsignals durch den übergeordneten Kern zu dem mindestens einen Scout-Kern, wobei das Rundsende-Interruptsignal auf der Grundlage dessen gesendet wird, dass die Startadresse des Vorablesezugriffscodes gespeichert wurde; und Überwachen des übergeordneten Kerns durch den mindestens einen Scout-Kern, wobei der mindestens eine Scout-Kern den Vorablesezugriffscode ausführt, um den übergeordneten Kern zu überwachen, und wobei das Ausführen des Vorablesezugriffscodes auf dem Empfangen des Rundsende-Interruptsignal beruht.
  9. Computerprogrammprodukt nach Anspruch 8, wobei der übergeordnete Kern die Startadresse des Vorablesezugriffscodes auf der Grundlage eines Taskwechsels speichert, der sich innerhalb des übergeordneten Kerns ereignet.
  10. Computerprogrammprodukt nach Anspruch 8, wobei der übergeordnete Kern die Startadresse des Vorablesezugriffscodes auf der Grundlage der vorgegebenen Anwendung speichert, die eine Anweisung ausgibt.
  11. Computerprogrammprodukt nach einem der Ansprüche 8 bis 10, wobei das Rundsende-Interruptsignal anzeigt, dass durch den mindestens einen Scout-Kern ein Standard-Vorablesezugriffscode geladen werden soll, wobei ein innerhalb des mindestens einen Scout-Kerns befindlicher architekturdefinierter Status einen Speicherort des Standard-Vorablesezugriffscodes bereitstellt.
  12. Computerprogrammprodukt nach einem der Ansprüche 8 bis 11, wobei das Rundsende-Interruptsignal einen Speicherort der Startadresse des Vorablesezugriffscodes und ein Interruptsignal bereitstellt.
  13. Computerprogrammprodukt nach einem der Ansprüche 8 bis 12, wobei ein Ladevorablesezugriffsbus zwischen dem übergeordneten Kern und dem mindestens einen Scout-Kern angeordnet ist und wobei das Rundsende-Interruptsignal über den Ladevorablesezugriffsbus gesendet wird.
  14. Computergestütztes Verfahren zum Vorablesezugriff auf Daten auf einem Chip mit mindestens einem Scout-Kern und einem übergeordneten Kern, wobei das Verfahren aufweist: Speichern einer Adresse eines Vorablesezugriffscodes durch den übergeordneten Kern, wobei die Startadresse des Vorablesezugriffscodes anzeigt, wo ein Vorablesezugriffscode gespeichert ist, und wobei der Vorablesezugriffscode speziell so konfiguriert ist, dass er den übergeordneten Kern auf der Grundlage einer durch den übergeordneten Kern ausgeführten vorgegebenen Anwendung überwacht; Senden eines Rundsende-Interruptsignals durch den übergeordneten Kern zu dem mindestens einen Scout-Kern, wobei das Rundsende-Interruptsignal auf der Grundlage dessen gesendet wird, dass die Startadresse des Vorablesezugriffscodes gespeichert ist; und Überwachen des übergeordneten Kerns durch den mindestens einen Scout-Kern, wobei der mindestens eine Scout-Kern den Vorablesezugriffscode ausführt, um den übergeordneten Kern zu überwachen, und wobei das Ausführen des Vorablesezugriffscodes auf dem Empfangen des Rundsende-Interruptsignals beruht.
  15. Verfahren nach Anspruch 14, wobei der übergeordnete Kern die Startadresse des Vorablesezugriffscodes auf der Grundlage eines Taskwechsels speichert, der sich innerhalb des übergeordneten Kerns ereignet.
  16. Verfahren nach Anspruch 14, wobei der übergeordnete Kern die Startadresse des Vorablesezugriffscodes auf der Grundlage dessen speichert, dass die vorgegebene Anwendung eine Anweisung ausgibt.
  17. Verfahren nach einem der Ansprüche 14 bis 16, wobei das Rundsende-Interruptsignal anzeigt, dass durch den mindestens einen Scout-Kern ein Standard-Vorablesezugriffscode geladen werden soll, wobei ein innerhalb des mindestens einen Scout-Kerns befindlicher architekturdefinierter Status einen Speicherort des Standard-Vorablesezugriffscodes bereitstellt.
  18. Verfahren nach einem der Ansprüche 14 bis 17, wobei das Rundsende-Interruptsignal einen Speicherort der Startadresse des Vorablesezugriffscodes und ein Interruptsignal bereitstellt.
  19. Verfahren nach einem der Ansprüche 14 bis 18, wobei ein Ladevorablesezugriffsbus zwischen dem übergeordneten Kern und dem mindestens einen Scout-Kern angeordnet ist und wobei das Rundsende-Interruptsignal über den Ladevorablesezugriffsbus gesendet wird.
  20. Verfahren nach einem der Ansprüche 14 bis 19, das einen gemeinsam genutzten Cachespeicher aufweist, der den übergeordneten Kern mit dem mindestens einen Scout-Kern verbindet, wobei ein Abrufanforderungsbus bereitgestellt ist, um den übergeordneten Kern sowohl mit dem gemeinsam genutzten Kern als auch dem mindestens einen Scout-Kern zu verbinden.
DE112014000340.9T 2013-03-05 2014-02-12 Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern Pending DE112014000340T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/785,369 US9141550B2 (en) 2013-03-05 2013-03-05 Specific prefetch algorithm for a chip having a parent core and a scout core
USUS-13/785,369 2013-03-05
PCT/IB2014/058939 WO2014136002A1 (en) 2013-03-05 2014-02-12 Data prefetch for a chip having a parent core and a scout core

Publications (1)

Publication Number Publication Date
DE112014000340T5 true DE112014000340T5 (de) 2015-09-17

Family

ID=51489349

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014000340.9T Pending DE112014000340T5 (de) 2013-03-05 2014-02-12 Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern

Country Status (5)

Country Link
US (2) US9141550B2 (de)
JP (1) JP6234484B2 (de)
CN (1) CN104981787B (de)
DE (1) DE112014000340T5 (de)
WO (1) WO2014136002A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2544474B (en) * 2015-11-16 2020-02-26 Advanced Risc Mach Ltd Event triggered programmable prefetcher
US10423418B2 (en) 2015-11-30 2019-09-24 International Business Machines Corporation Method for maintaining a branch prediction history table
US9966152B2 (en) * 2016-03-31 2018-05-08 Samsung Electronics Co., Ltd. Dedupe DRAM system algorithm architecture
US10248569B2 (en) * 2016-08-11 2019-04-02 Futurewei Technologies, Inc. Pattern based preload engine
CN107783911B (zh) * 2016-08-31 2021-06-08 华为技术有限公司 一种数据过滤方法及终端设备
US10489296B2 (en) * 2016-09-22 2019-11-26 International Business Machines Corporation Quality of cache management in a computer
CN107577625B (zh) * 2017-09-22 2023-06-13 北京算能科技有限公司 数据处理芯片和系统、数据存储转发处理方法
US10614007B2 (en) * 2018-04-20 2020-04-07 Qualcomm Incorporated Providing interrupt service routine (ISR) prefetching in multicore processor-based systems

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470427B1 (en) 1999-11-09 2002-10-22 International Business Machines Corporation Programmable agent and method for managing prefetch queues
US8095920B2 (en) * 2002-09-17 2012-01-10 Intel Corporation Post-pass binary adaptation for software-based speculative precomputation
US7502910B2 (en) 2003-01-28 2009-03-10 Sun Microsystems, Inc. Sideband scout thread processor for reducing latency associated with a main processor
US7844801B2 (en) * 2003-07-31 2010-11-30 Intel Corporation Method and apparatus for affinity-guided speculative helper threads in chip multiprocessors
US8230422B2 (en) 2005-01-13 2012-07-24 International Business Machines Corporation Assist thread for injecting cache memory in a microprocessor
US7950012B2 (en) 2005-03-16 2011-05-24 Oracle America, Inc. Facilitating communication and synchronization between main and scout threads
US7590805B2 (en) 2005-12-29 2009-09-15 Intel Corporation Monitor implementation in a multicore processor with inclusive LLC
US7730263B2 (en) 2006-01-20 2010-06-01 Cornell Research Foundation, Inc. Future execution prefetching technique and architecture
US7509481B2 (en) 2006-03-03 2009-03-24 Sun Microsystems, Inc. Patchable and/or programmable pre-decode
JP2008015668A (ja) * 2006-07-04 2008-01-24 Toyota Infotechnology Center Co Ltd タスク管理装置
JP4945200B2 (ja) * 2006-08-29 2012-06-06 株式会社日立製作所 計算機システム及びプロセッサの制御方法
US20080141268A1 (en) 2006-12-12 2008-06-12 Tirumalai Partha P Utility function execution using scout threads
US7975107B2 (en) 2007-06-22 2011-07-05 Microsoft Corporation Processor cache management with software input via an intermediary
US7962314B2 (en) 2007-12-18 2011-06-14 Global Foundries Inc. Mechanism for profiling program software running on a processor
US8707016B2 (en) 2008-02-01 2014-04-22 International Business Machines Corporation Thread partitioning in a multi-core environment
US8775778B2 (en) 2008-02-01 2014-07-08 International Business Machines Corporation Use of a helper thread to asynchronously compute incoming data
JP2009258984A (ja) * 2008-04-16 2009-11-05 Toshiba Corp 情報処理装置およびロード制御方法
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
JP2010217992A (ja) 2009-03-13 2010-09-30 Mitsubishi Electric Corp キャッシュ制御装置及びキャッシュ制御方法及びキャッシュ制御プログラム
US8195888B2 (en) 2009-03-20 2012-06-05 Empire Technology Development Llc Multiprocessor cache prefetch with off-chip bandwidth allocation
US8407707B2 (en) 2009-05-18 2013-03-26 Lsi Corporation Task queuing in a network communications processor architecture
US8176349B2 (en) 2009-04-30 2012-05-08 Hewlett-Packard Development Company, L.P. Look-ahead processor for signaling suitable non-idle performance state for main processor
CN101561766B (zh) * 2009-05-26 2011-06-15 北京理工大学 一种支持多核帮助线程的低开销的块同步方法
US8752008B2 (en) 2009-09-02 2014-06-10 Advanced Micro Devices, Inc. Lightweight service based dynamic binary rewriter framework
US8443151B2 (en) 2009-11-09 2013-05-14 Intel Corporation Prefetch optimization in shared resource multi-core systems
US8904114B2 (en) 2009-11-24 2014-12-02 Empire Technology Development Llc Shared upper level cache architecture
US8341357B2 (en) 2010-03-16 2012-12-25 Oracle America, Inc. Pre-fetching for a sibling cache
US8453161B2 (en) * 2010-05-25 2013-05-28 International Business Machines Corporation Method and apparatus for efficient helper thread state initialization using inter-thread register copy
CN102023846B (zh) * 2011-01-06 2014-06-04 中国人民解放军国防科学技术大学 基于单片多处理器系统的共享前端流水线结构
CN102207916B (zh) * 2011-05-30 2013-10-30 西安电子科技大学 一种基于指令预取的多核共享存储器控制设备

Also Published As

Publication number Publication date
WO2014136002A1 (en) 2014-09-12
CN104981787A (zh) 2015-10-14
JP2016513829A (ja) 2016-05-16
US20140258629A1 (en) 2014-09-11
CN104981787B (zh) 2017-11-17
US9141551B2 (en) 2015-09-22
JP6234484B2 (ja) 2017-11-22
US20150019821A1 (en) 2015-01-15
US9141550B2 (en) 2015-09-22

Similar Documents

Publication Publication Date Title
DE112014000340T5 (de) Vorablesezugriff auf Daten für einen Chip mit einem übergeordneten Kern und einem Scout-Kern
DE102007006190B4 (de) Techniken zur Verwendung von Speicher-Attributen
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE102006009617B4 (de) Informationssystem und Verfahren zum Steuern von mehreren Hot Plug Vorgängen
DE112014000336T5 (de) Vorablesezugriff für einen übergeordneten Kern in einem Mehrkern-Chip
DE102009061252B3 (de) Vorrichtung, Verfahren und System zur Verarbeitung einer Transaktion auf einem PCI-Bus mittels eines Root-Komplexes
DE102006048115A1 (de) System und Verfahren zum Aufzeichnen von behebbaren Fehlern
DE112006002237T5 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE102008058209A1 (de) Anordnung und Verfahren um zu verhindern, dass ein Anwenderbetriebssystem in einem VMM System eine Anordnung abschaltet, die von einem Servicebetriebssystem verwendet wird
DE102012216022A1 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE102014000372A1 (de) Verbesserte steuerung des prefetch-traffics
DE112013007300T5 (de) Speichersysteme mit adaptiver Löschcode-Generierung
DE112013003873T5 (de) Verfahren und Vorrichtung zum Patchen
DE112013000330T5 (de) In-Situ-Neubewertung von Prozessoren
DE102007046947A1 (de) System und Verfahren zum Verwalten von Systemmanagement-Interrupts in einem Mehrprozessor-Computersystem
DE112006003504T5 (de) Detektion von Cachespeicher-Disassoziierung
DE102013205059A1 (de) Durchführen von vordecodierzeitoptimierten Anweisungen zusammen mit Sequence Caching von vordecodierzeitoptimierten Anweisungen
DE112013004788T5 (de) Pinning von Boot-Daten zum schnelleren Booten
DE102009004726A1 (de) Systeme und Verfahren zum Verfolgen von Befehlszeigern und Datenzugriffen
DE102006026474A1 (de) System und Verfahren für das automatische Optimieren von erhältlichen virtuellem Speicher
DE112011100854B4 (de) Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren
DE112013007299T5 (de) Teilen eingebetteter Hardwareressourcen
DE4227784A1 (de) Rechnersystem und verfahren zum beheben eines seitenfehlers
DE602004012108T2 (de) Fernkonfigurationsmanagement eines Datanverarbeitungssystems
EP3705993B1 (de) System und verfahren zum auffinden und identifizieren von rechenknoten in einem netzwerk

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence