-
Hintergrund
-
Diese Anmeldung bezieht sich auf Techniken zum Modifizieren einer Prozessorleistungsfähigkeit.
-
Moderne Computer-Prozessoren enthalten typischerweise mehrere unabhängige Prozessorkerne. Aktuelle Berechnungssysteme sind zum effizienten Handhaben von Ereignissen optimiert worden, die mehrere Millisekunden (über betriebssystemunterstützte Mehrfachprogrammierungsmechanismen wie z. B. Prozesskontextschalter) oder einige zehn Nanosekunden (durch Hardware-Prozessormerkmale wie z. B. Prefetching, Out-of-Order-Ausführung, Vorhersagen usw.) dauern.
-
Es bleibt eine Herausforderung, Ereignisse effizient zu unterstützen, die mehrere Mikrosekunden dauern, insbesondere wenn Reaktionszeiten mit geringer Latenz erforderlich sind. Solche Ereignisse mit Mikrosekundengranularität werden häufiger mit Vernetzungsstrukturen von hoher Leistungsfähigkeit, neuen nichtflüchtigen Speichertechnologien wie z. B. Flash- und Phasenwechsel-Speicher oder Datenaustausch mit Berechnungsbeschleunigern wie z. B. graphischen Verarbeitungseinheiten (GPUs). Ereignisse auf Mikrosekundenebene sind zu kurz, um sich den Overhead von Kontextschaltern und Betriebssystem-Interrupts zu leisten, und sind zu lang, um in heutigen Mikroprozessoren einfach durch Hardware-Architekturmerkmale von Prozessoren adressiert zu werden.
-
Das Dedizieren von Prozessorkernen, um spezifische Operationen mit geringer Latenz zu handhaben, was manchmal als "Spinning" bezeichnet wird, ist eine mögliche Lösung zum Erreichen von niedriger Latenz in Operationen mit einer Granularität von Mikrosekunden. Das Dedizieren eines Prozessors für spezifische I/O-Operationen kann jedoch eine wesentliche Rechenleistung aus einem Mehrkernprozessor abziehen.
-
Zusammenfassung
-
Im Allgemeinen kann ein innovativer Aspekt des Gegenstands, der in dieser Anmeldung beschriebenen ist, in Verfahren verwirklicht sein, die die Aktionen enthalten, die in einem Mehrkernprozessor implementiert sind, der n Kerne aufweist, und die Auswählen von k Kernen aus den n Kernen des Mehrkernprozessors enthalten, um dedizierte Operationen mit geringer Latenz für den n-Kern-Prozessor auszuführen, wobei k kleiner als n ist, m Kerne nicht ausgewählt sind und jeder Kern des Mehrkernprozessors eine einem Nennwert entsprechende Kernkapazität aufweist. Die Verfahren betreiben die auswählten k Kerne mit weniger als der dem Nennwert entsprechenden Kernkapazität, so dass k Kerne gemeinsam um eine nicht vollständig ausgenutzt Kapazität nicht vollständig ausgenutzt sind, und betreiben einen oder mehrere aus den m Kernen mit einer Kapazität, die die dem Nennwert entsprechende Kapazität übersteigt, so dass die m Kerne mit einer gemeinsamen Kapazität arbeiten, die eine gemeinsame Kapazität der dem Nennwert entsprechenden Kapazitäten der m Kerne übersteigt.
-
Andere Ausführungsformen dieses Aspekts enthalten entsprechende Systeme, Einrichtungen und Computerprogramme, die konfiguriert sind, die Aktionen der Verfahren, die auf Computerspeichervorrichtungen codiert sind, auszuführen.
-
Spezielle Ausführungsformen des in dieser Anmeldung beschriebenen Gegenstands können so implementiert sein, dass sie einen oder mehrere aus den folgenden Vorteilen realisieren. Die vorliegenden Systeme und Verfahren ermöglichen, dass eine spezielle Anzahl unabhängiger Prozessorkerne eines Mehrkernprozessors dediziert werden, um einzig Eingabe/Ausgabe-Operationen (I/O-Operationen) auszuführen, jedoch mit einer reduzierten Betriebskapazität, was wiederum zusätzliche Betriebskapazität für die verbleibenden Kerne des Mehrkernprozessors bereitstellt. Das Dedizieren von Prozessorkernen für Operationen mit geringer Latenz kann konsistente geringe Latenz für den Mehrkernprozessor erreichen, während es die negativen Effekte des Dedizierens von Kernen mit voller Kapazität für Operationen mit geringer Latenz reduziert. Durch Dedizieren von Prozessorkernen für Operationen mit geringer Latenz mit den reduzierten Kapazitäten kann Energie, die aus den nicht vollständig ausgenutzten dedizierten Prozessorkernen verfügbar ist, verwendet werden, um die Leistungsfähigkeit der verbleibenden Kerne in dem Mehrkernprozessor zu erhöhen.
-
Die Einzelheiten einer oder mehrerer Ausführungsformen des in dieser Anmeldung beschriebenen Gegenstands sind in den begleitenden Zeichnungen und der nachstehenden Beschreibung dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen offensichtlich.
-
Kurzbeschreibung der Zeichnungen
-
1 ist ein Blockdiagramm einer Umgebung, in der eine spezielle Anzahl von Prozessorkernen für Operationen mit geringer Latenz dediziert sein kann, wobei jeder dedizierte Prozessorkern nicht vollständig ausgenutzt ist.
-
2 ist ein Ablaufdiagramm eines Beispielprozesses zum Erhöhen der Leistungsfähigkeit von Prozessorkernen für allgemeinen Betrieb durch Verwenden von überschüssiger Energie aus nicht vollständig ausgenutzten Prozessorkernen.
-
Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen geben gleiche Elemente an.
-
Ausführliche Beschreibung
-
Die Systeme und Verfahren, die nachstehend beschrieben sind, beziehen sich auf das Dedizieren unabhängiger Prozessorkerne innerhalb einer Mehrkern-CPU (z. B. Mehrkernprozessor), um geringe Latenz zu erreichen und die gesamte Prozessorkernleistungsfähigkeit im allgemeinen Betrieb zu erhöhen. In einigen Implementierungen ist eine erste Menge von Prozessorkernen eines Mehrkernprozessors zum Ausführen von Operationen mit geringer Latenz dediziert. Beispielsweise können Operationen mit geringer Latenz Eingabe/Ausgabe-Operationen (I/O-Operationen), Zugreifen auf Daten innerhalb des Speichers (z. B. Festkörperlaufwerken, einer Flash-Vorrichtung usw.), Kommunizieren mit anderen Prozessorkernen, nichtflüchtige Speichertechnologie wie z. B. eine Netzstruktur der Superberechnungsart zum Austauschen sehr schneller Nachrichten (z. B. 1 µS–100 µS) und andere Operationen mit geringer Latenz enthalten. Eine zweite Menge von Prozessorkernen in dem Mehrkernprozessor sind Prozessorkerne, die nicht darauf beschränkt sind, nur Operationen mit geringer Latenz auszuführen, z. B. kann die zweite Menge von Prozessorkernen eine Vielzahl unterschiedlicher Operationen, die von dem Prozessor gefordert sind, ausführen. Typischerweise werden für einen n-Kern-Prozessor k Kerne für die dedizierten Operationen mit geringer Latenz ausgewählt, und die verbleibenden Prozessoren werden zum Ausführen der verbleibenden Operationen ausgewählt. Die zweite Menge von Kernen muss jedoch nicht notwendigerweise die verbleibenden Kerne enthalten, z. B. für kann für den n-Kern-Prozessor, wobei n – k = m ist, die zweite Menge von Kernen eine Kardinalität von m oder eine Kardinalität, die kleiner als m ist, aufweisen.
-
Typischerweise nutzen Mehrkernprozessoren mit Prozessorkernen, die für Operationen mit geringer Latenz dediziert sind, die dedizierten Prozessorkerne mit geringer Latenz nicht vollständig aus, was einen ungenutzten Betrag verfügbarer Energie übrig lässt. Der Mehrkernprozessor kann den Betrag der Leistung (z. B. Spannung/Frequenz) reduzieren, der durch die Prozessorkerne mit geringer Latenz genutzt wird. Die überschüssige Leistungskapazität, die durch Reduzieren der Leistungsaufnahme der Prozessorkerne mit geringer Latenz erzeugt wird, kann zu der gesamten Leistungskapazität hinzugefügt werden, die für die verbleibenden Allzweck-Prozessorkerne verfügbar ist. Das Nutzen der zusätzlichen verfügbaren Leistungskapazität durch die Allzweck-Prozessorkerne erhöht die Leistungsfähigkeit der verbleibenden Allzweck-Prozessorkerne, was einiges aus der gestrandeten Berechnungskapazität eliminiert.
-
Die Merkmale und andere Merkmale sind nachstehend genauer beschrieben.
-
1 ist ein Blockdiagramm einer Umgebung 100, in der eine spezielle Anzahl von Prozessorkernen für Operationen mit geringer Latenz dediziert sein kann, wobei jeder dedizierte Prozessorkern nicht vollständig ausgenutzt ist. Wie gezeigt enthält die Umgebung 100 einen Mehrkernprozessor 102, der mit einem Bus 108 verbunden ist. Der Bus 108 koppelt den Prozessor kommunikationstechnisch mit einer Menge externer Betriebsmittel, die einen Flash-Speicher 110, einen Direktzugriffsspeicher (RAM) 112 und eine Graphikverarbeitungseinheit (GPU) 114 enthält. Der Mehrkernprozessor 102 enthält die Prozessorkerne 104-1–104-n (n Kerne), die arbeiten, um Anweisungen auszuführen. Die Mehrkernprozessor 102 weist außerdem eine erste Menge von k Prozessorkernen 106 auf, die den Prozessorkern 104-1 und den Prozessorkern 104-2 enthält. Obwohl in dem Beispiel von 1 der Wert von k gleich 2 ist, können andere Werte von k benutzt werden.
-
Der Mehrkernprozessor 102 kann ein einzelner Chip mit einer zentralen Verarbeitungseinheit (CPU) sein, der mehrere Prozessorkerne, Speicherbetriebsmittel und andere Komponenten enthält. Der Mehrkernprozessor 102 kann auch Firmware oder Mikrocode-Anweisungen enthalten, die in dem chipinternen Speicher gespeichert sind und arbeiten, um die hier beschriebenen Techniken zu implementieren. In einigen Implementierungen können die Anweisungen, die notwendig sind, um die hier beschriebenen Techniken zu implementiert, in Silizium implementiert sein. Der Mehrkernprozessor 102 kann außerdem mehrere Prozessoren enthalten, wobei jeder Prozessor seine eigenen Prozessorkerne, Speicherbetriebsmittel und/oder anderen Komponenten enthält.
-
Der Mehrkernprozessor 102 ist mit dem Datenbus 108 verbunden. In einigen Implementierungen kann der Datenbus 108 ein Hochgeschwindigkeitsdatenübertragungsmechanismus sein, der verwendet wird, um Daten zwischen Komponenten innerhalb des Gehäuses der Rechenvorrichtung zu übertragen. Der Datenbus 108 kann irgendein Typ eines Busses sein, der zum Ausführen solcher Datenübertragungen fähig ist.
-
Mehrere Betriebsmittel, die einen Flash-Speicher 110, einen RAM 110 und eine GPU 114 enthalten, sind mit dem Datenbus 108 verbunden. In einigen Implementierungen können zusätzliche Betriebsmittel mit dem Datenbus 108 verbunden sein, die Direktspeicherzugriffs-Steuereinheiten (DMA-Steuereinheiten), Graphikkarten, Netzkarten, RAID-Steuereinheiten und/oder andere Betriebsmittel enthalten, jedoch nicht darauf beschränkt sind.
-
Wie gezeigt enthält der Mehrkernprozessor 102 die Prozessorkerne 104-1–104-n. Die Prozessorkerne 104-1–104-n können getrennte Komponenten sein, die durch einen Datenbus oder eine Brücke mit den anderen Komponenten des Mehrkernprozessors 102 verbunden sind. Der Mehrkernprozessor enthält die Prozessorkerne 104-1–104-n, wobei n irgendeine geeignete Anzahl von Prozessorkernen ist, um gewöhnliche Funktionen eines Mehrkernprozessors 102 durchzuführen.
-
Jeder Prozessorkern 104 in dem Mehrkernprozessor 102 weist eine einem Nennwert entsprechende Kapazität auf. Die dem Nennwert entsprechende Kapazität kann ein Maß die für maximale Kapazität der Leistungsfähigkeit sein (z. B. ein höchstes Spannung/Frequenz-Verhältnis, das ein Prozessorkern erreichen kann, ohne Schaden an dem Prozessorkern zu verursachen, um den korrekten Betrieb des Prozessorkerns aufrechtzuerhalten), was beschreibt, wie viel Leistung jeder Prozessorkern 104 aufnehmen kann, ohne den Prozessorkern zu beschädigen. Die Kapazität kann auf eine Vielzahl von Arten gemessen werden, wie z. B. durch die Leistungsaufnahme, die maximale Frequenz, die maximale Frequenz für eine gegebene Spannung, den maximalen Strom, die maximale Betriebstemperatur, oder durch irgendeine andere Messung, die die Leistungsaufnahme durch den Kern angibt.
-
In einigen Implementierungen können die Prozessorkerne 104 andere integrierte Komponenten enthalten, wie beispielsweise einen dedizierten Cache-Speicher wie z. B. einen L1-Cache, Hardware-Kontextspeicher, Firmware-Speicher, Mikrocode-Speicher und/oder andere integrierte Komponenten.
-
Den Prozessorkernen 10-1 können Threads zugewiesen sein. In einigen Implementierungen können die Threads Mengen von Anweisungen sein, die auf den Prozessorkernen 104 ausgeführt werden sollen. Beispielsweise kann ein Thread eine Software-Anwendung sein, die auf dem Mehrkernprozessor 102 abläuft. Der Thread kann auch einer von vielen Threads innerhalb einer einzigen Software-Anwendung sein, die auf dem Mehrkernprozessor 102 ablaufen.
-
Die k Prozessorkerne 106 können eine spezielle Anzahl von Verarbeitungskernen sein, die einzig für Operationen mit geringer Latenz dediziert sind. Wenn sie einzig für I/O-Operationen dediziert sind, sind die k Prozessorkerne 106 für den Betriebssystem-Scheduler für die Zuweisung von Allzweck-Verarbeitungsaufgaben nicht verfügbar und führen nur Anweisungen aus, die zu I/O gehören (z. B. Abrufen/Senden von Daten aus dem Flash-Speicher 110, Abrufen/Senden von Daten aus dem RAM 112, Abrufen/Senden von Daten aus der GPU 114 usw.). In einigen Implementierungen sind die Operationen mit geringer Latenz Mikrosekunden-Operationen mit geringer Latenz, was ein Maß für die Geschwindigkeit jeder Operation ist. In anderen Implementierungen können die durch die dedizierten Kerne ausgeführten Operationen mit geringer Latenz Nanosekunden- und Mikrosekunden-Operationen enthalten. Wie in 1 gezeigt ist, enthalten die k Prozessorkerne 106 zwei Prozessorkerne 106-1 und 106-2. In einigen Implementierungen können die k Prozessorkerne 106 irgendeine geeignete Anzahl von Prozessorkernen enthalten, jedoch weniger als die Gesamtzahl von Prozessorkernen, um korrekte Operationen des Prozessors 102 sicherzustellen, d. h. k < n.
-
Die k Prozessorkerne 106 reduzieren die Latenz für den Prozessor 102 durch Reduzieren der Reaktionszeit des Mehrkernprozessors 102 für Operationen mit geringer Latenz. Die Reaktionszeit für den Mehrkernprozessor 102 ist reduziert durch Ablaufen der Operationen mit geringer Latenz in den k Kernen, was die Notwendigkeit eliminiert, die anderen Threads in den verbleibenden m Kernen zu pausieren, so dass Operationen mit geringer Latenz durch die anderen Kerne ausgeführt werden können.
-
Die k Prozessorkerne 106 werden nicht bis zur vollen Kapazität genutzt aufgrund dessen, dass hohe Nutzung zu einem temporären Aufbauen von Verarbeitungswarteschlangen führt, was die Latenz für den Prozessor 102 erhöhen wird. Die verbleibenden Prozessorkerne 104-1–104-n (z. B. die m Kerne) sind für Allzweck-Verarbeitungsaufgaben dediziert. Typischerweise ist die Anzahl m der verbleibenden Prozessorkerne 104-1–104-n gleich der Gesamtzahl von Verarbeitungskernen minus den k Prozessorkernen 106. Beispielsweise sind in einem n-Kern-Prozessor die n Kerne gleich m Kerne plus k Kerne.
-
Um den Verschleiß der Verarbeitungskerne zu reduzieren, kann der Prozessor 102 die Auswahl der k Kerne (z. B. dedizierte Prozessorkerne mit geringer Latenz) in dem Mehrkernprozessor periodisch zyklisch vertauschen. Das zyklische Vertauschen der k Kerne stellt sicher, dass über eine Zeitspanne jeder Kern für die gleiche Zeitspanne wie andere Kerne nicht vollständig ausgenutzt wird, was gleichmäßigen Verschleiß unter den Verarbeitungskernen fördert.
-
Wie früher beschrieben ist jeder aus den k Prozessorkernen 106, die als dedizierte Prozessorkerne mit geringer Latenz dienen, nicht vollständig ausgenutzt. Jeder Kern in dem Mehrkernprozessor weist eine einem Nennwert entsprechende Kapazität auf. Typischerweise ist die dem Nennwert entsprechende Kapazität für jeden Kern gleich.
-
Jede aus den Leistungsaufnahmen der k Prozessorkerne ist kleiner als die vollständige dem Nennwert entsprechende Kapazität des Kerns. Die verbleibende überschüssige Leistungskapazität aus den k Prozessorkernen 106 wird durch die m Kerne verwendet, um die Leistungsfähigkeit der m Kerne zu erhöhen. Unsere Lösung beruht auf der Tatsache, dass moderne Mehrkern-CPUs so gebaut sind, dass nicht alle Kerne gleichzeitig mit ihrer maximalen Leistungsfähigkeit laufen können (siehe den früheren Bezug auf dunkles Silizium), da das mehr Energie erfordern würde, als das CPU-Chipgehäuse als Wärme ableiten kann, während es in dem Bereich der Betriebstemperatur bleibt. Deshalb kann die CPU eine Teilmenge ihrer Kerne mit ihrer maximalen Leistungsfähigkeit (höchste Frequenz/Spannung-Einstellungen) nur dann laufen lassen, wenn die verbleibenden CPUs weniger aktiv sind und deshalb weniger Wärme erzeugen und möglicherweise mit niedrigeren Frequenz/Spannung-Einstellungen laufen.
-
Die nicht vollständige Ausnutzung der k Kerne kann die Menge von Silizium berücksichtigen, die bei der Betriebsnennspannung für eine gegebene Beschränkung der maximalen thermischen Verlustleistung (TDP) eingeschaltet werden kann. Die resultierende proportionale Reduktion der Allzweck-Berechnungsfähigkeit ist kleiner als k/n, was die negativen Effekte dedizierter Kerne für Operationen mit geringer Latenz reduziert, um eine relativ geringe Latenz für I/O-Operationen auf Mikrosekunden-Ebene zu erreichen.
-
2 ist ein Ablaufdiagramm eines Beispielprozesses zum Erhöhen der Leistungsfähigkeit von Prozessorkernen für allgemeinen Betrieb unter Verwendung von überschüssiger Energie als ein Ergebnis nicht vollständig ausgenutzter Prozessorkerne.
-
Der Prozess kann in einem Mehrkernprozessor, der n Kerne aufweist, implementiert sein. Der Mehrkernprozessor 102 weist eine/n Energie-Nennwert/Kapazität von n·E auf, wobei n die Anzahl von Kernen ist und E die dem Nennwert entsprechende Kernkapazität pro Kern ist.
-
Der Prozess wählt k Kerne aus den n Kernen des Mehrkernprozessors 102 aus, um dedizierte Eingabe/Ausgabe-Operationen für den n-Kern-Prozessor 102 auszuführen, wobei k kleiner als n ist und m Kerne nicht ausgewählt sind und wobei jeder Kern des Mehrkernprozessors eine dem Nennwert entsprechende Kernkapazität aufweist (202). Die dem Nennwert entsprechende Kapazität ist eine technische Begrenzung (z. B. der maximalen thermischen Verlustleistung, der Taktgeschwindigkeit, der Leistungsaufnahme usw.), innerhalb der die Verarbeitungskerne 104 arbeiten, ohne Schaden zu nehmen. Beispielsweise kann die dem Nennwert entsprechende Kapazität eine dem Nennwert entsprechende Kernbetriebsfrequenz, eine dem Nennwert entsprechender Kernleistungsaufnahme, eine dem Nennwert entsprechende Kernbetriebstemperatur oder ein Verhältnis aus dem Betrag der Spannung, die der Verarbeitungskern pro Taktgeschwindigkeit (d. h. Frequenz) nutzt.
-
In einigen Implementierungen ist die dem Nennwert entsprechende Kernkapazität gleich dem maximalen Leistungsfähigkeitsniveau (z. B. einem höchsten Spannung/Frequenz-Verhältnis, die ein Prozessorkern erreichen kann, ohne Beschädigung an dem Prozessorkern zu verursachen, um den korrekten Betrieb des Prozessorkerns aufrechtzuerhalten) der Verarbeitungskerne 104. Es wird darauf hingewiesen, dass ein Kern über seine dem Nennwert entsprechende Kapazität hinaus für eine spezielle Zeitspanne arbeiten kann, ohne Schaden zu nehmen.
-
Darüber hinaus kann ein n-Kern-Prozessor eine dem Nennwert entsprechende Prozessorkapazität aufweisen. Die dem Nennwert entsprechende Kapazität des Prozessors kann gleich der Summe der dem Nennwert entsprechenden Kernkapazitäten sein, z. B. n·E. Für einige Prozessoren kann jedoch die dem Nennwert entsprechende Kapazität kleiner sein als die Summe der dem Nennwert entsprechenden Kapazitäten. Das liegt an dem Effekt des dunklen Siliziums, der eine Menge von Silizium definiert, die mit der Betriebsnennspannung für eine gegebene Beschränkung der maximalen thermischen Verlustleistung (TDP) nicht eingeschaltet werden kann.
-
Der Prozess betreibt die ausgewählten k Kerne mit weniger als der dem Nennwert entsprechenden Kapazität, so dass die k Kerne gemeinsam um eine nicht vollständig ausgenutzte Kapazität nicht vollständig ausgenutzt werden (204). Wie vorstehend beschrieben arbeiten die k Kerne mit der z-Kapazität, und die nicht vollständig ausgenutzte Kapazität (u) kann gemäß der nachstehenden Gleichung (1) berechnet werden: u = (100%-Kapazität – z-Kapazität) (1)
-
Die nicht vollständig ausgenutzte Kapazität stellt zusätzliche Leistungsverfügbarkeit für den Mehrkernprozessor 102 bereit. Aus den vorstehend dargelegten Gründen kann nicht die gesamte nicht vollständig ausgenutzte Kapazität für den Prozessor verfügbar sein.
-
Der Prozess arbeitet auf einem oder mehreren aus den m Kernen mit einer Kapazität, die die dem Nennwert entsprechende Kapazität übersteigt, so dass die m Kerne mit einer gemeinsamen Kapazität arbeiten, die die gemeinsamen dem Nennwert entsprechenden Kernkapazitäten der m Kerne übersteigt (206). In einigen Implementierungen kann der Prozessor 102 weniger als alle der verbleibenden Kerne auswählen, um mit einer Kapazität zu arbeiten, die die dem Nennwert entsprechende Kernkapazität übersteigt, die jedoch immer noch mit einer Kapazität arbeiten, die höher ist als die Summe aller verbleibenden Prozessorkerne. Der eine oder die mehreren aus den m Kernen kann mit dem/der oder bis zu einem/r Energie-Nennwert/Kapazität arbeiten, beschrieben durch die nachstehende Gleichung (2): m-Kernleistungsnutzung = [(n – k) + (u)·k]·E (2)
-
In einigen Implementierungen enthält das Betreiben eines oder mehrerer aus den m Kernen mit einer Kapazität, die die dem Nennwert entsprechende Kernkapazität übersteigt, Betreiben eines oder mehrerer aus den m Kernen mit einer Kapazität, die eine Summe von m dem Nennwert entsprechenden Kernkapazitäten und der nicht vollständig ausgenutzten Kapazität temporär übersteigt. Der eine oder die mehreren Prozessorkerne können die dem Nennwert entsprechende Kernkapazität individuell oder gemeinsam temporär überschreiten.
-
In anderen Implementierungen enthält das Betreiben eines oder mehrerer aus den m Kernen mit einer Kapazität, die die dem Nennwert entsprechende Kernkapazität übersteigt, Betreiben eines oder mehrerer aus den m Kernen mit einer Kapazität, die eine Summe von m dem Nennwert entsprechenden Kernkapazitäten und der nicht vollständig ausgenutzten Kapazität nicht übersteigt. Die m den Nennwert entsprechenden Kerne können mit einer Kapazität betrieben werden, die nur die nicht vollständig ausgenutzte Kapazität der k Kerne übersteigt, was weniger als die oder gleich der dem Nennwert entsprechenden Prozessorkapazität sein kann. Beispielsweise enthält das Betreiben eines oder mehrere aus den m Kernen mit einer Kapazität, die die dem Nennwert entsprechende Kapazität übersteigt, Betreiben des einen oder der mehreren aus den m Kernen mit Kapazitäten, so dass die Summe der Kapazitäten, mit denen die m Kerne arbeiten, und die Summe der Kapazitäten, mit denen die k Kerne arbeiten, die dem Nennwert entsprechende Prozessorkapazität nicht übersteigt.
-
Ähnlich der dem Nennwert entsprechenden Kernkapazität kann die dem Nennwert entsprechende Prozessorkapazität als technische Begrenzung beschrieben werden, innerhalb der die Prozessor arbeitet, ohne Schaden zu nehmen, jedoch an einem optimalen Leistungsfähigkeitsniveau arbeitet (z. B. dem Spannung/Frequenz-Verhältnis, das die schnelle Leistungsfähigkeit ergibt, ohne zu viel Leistung aufzunehmen). Die dem Nennwert entsprechende Prozessorkapazität kann als weniger als die Summe der dem Nennwert entsprechenden Kernkapazitäten der n Kerne definiert sein.
-
In Situationen, in denen die hier diskutierten Systeme persönliche Informationen über Anwender sammeln oder persönliche Informationen verwenden, kann für die Anwender eine Gelegenheit bereitgestellt werden, zu kontrollieren, ob Anwendungen oder Merkmale Anwenderinformationen sammeln (z. B. Informationen über ein soziales Netz eines Anwenders, soziale Aktionen oder Aktivitäten, Beruf, die Vorlieben eines Anwenders oder einen aktuellen Aufenthaltsort des Anwenders), oder um zu kontrollieren, ob und/oder wie Inhalt empfangen wird, der für den Anwender relevanter sein kann. Zusätzlich können spezielle Daten auf eine oder mehrere Arten behandelt werden, bevor sie gespeichert oder verwendet werden, so dass persönlich identifizierbare Informationen entfernt werden. Beispielsweise kann die Identität eines Anwenders so behandelt werden, dass keine persönlich identifizierbaren Informationen für den Anwender bestimmt werden können, oder ein geographischer Aufenthaltsort des Anwenders kann verallgemeinert werden, wenn Informationen über den Aufenthaltsort erhalten werden (wie z. B. auf eine Stadt, eine Postleitzahl oder auf Staatenebene), so dass ein spezieller Aufenthaltsort eines Anwenders nicht bestimmt werden kann. Somit kann der Anwender die Kontrolle darüber haben, wie Informationen über den Anwender gesammelt und durch einen Inhaltsserver verwendet werden.
-
Ausführungsformen des Gegenstands und der Operationen, die in dieser Anmeldung beschrieben sind, können in einer digitalen elektronischen Schaltungsanordnung oder in Computer-Software, Firmware oder Hardware, die die Strukturen, die in dieser Anmeldung offenbart sind, und ihre strukturellen Äquivalente enthalten, oder in Kombinationen aus einem oder mehreren daraus implementiert sein. Ausführungsformen des Gegenstands, der in dieser Anmeldung beschrieben ist, können als ein oder mehrere Computerprogramme implementiert sein, d. h. ein oder mehrere Module aus Computerprogrammanweisungen, die auf einem Computerspeichermedium codiert sind zur Ausführung durch eine oder zur Steuerung des Betriebs einer Datenverarbeitungsvorrichtung.
-
Ein Computerspeichermedium kann eine computerlesbare Speichervorrichtung, ein computerlesbares Speichersubstrat, ein Speicherarray oder eine Speichervorrichtung für Direktzugriff oder seriellen Zugriff oder eine Kombination aus einem oder mehreren daraus sein oder darin enthalten sein. Außerdem kann, während ein Computerspeichermedium kein verbreitetes Signal ist, ein Computerspeichermedium eine Quelle oder ein Ziel für Computerprogrammanweisungen sein, die in einem künstlich erzeugten verbreiteten Signal codiert sind. Das Computerspeichermedium kann außerdem eine oder mehrere getrennte physikalische Komponenten oder Medien (z. B. mehrere CDs, Platten oder andere Speichervorrichtungen) sein oder darin enthalten sein.
-
Die in dieser Anmeldung beschriebenen Operationen können als Operationen implementiert sein, die durch eine Datenverarbeitungseinrichtung auf Daten, die in einer oder mehreren computerlesbaren Speichervorrichtungen gespeichert oder von anderen Quellen empfangen werden, ausgeführt werden.
-
Der Begriff "Datenverarbeitungseinrichtung" umfasst alle Arten von Einrichtungen, Vorrichtungen und Maschinen zum Verarbeiten von Daten, die als Beispiel einen programmierbaren Prozessor, einen Computer, ein System auf einem Chip, mehrere oder Kombinationen des Vorstehenden enthalten. Die Einrichtung kann eine Spezial-Logikschaltungsanordnung, z. B. ein FGPA (feldprogrammierbares Gatterfeld) oder eine ASIC (anwendungsspezifische integrierte Schaltung), enthalten. Die Einrichtung kann außerdem zusätzlich zu Hardware Code enthalten, der eine Ausführungsumgebung für das fragliche Computerprogramm erzeugt, z. B. Code, der Prozessor-Firmware, einen Protokollstack, ein Datenbankmanagementsystem, ein Betriebssystem, eine plattformübergreifende Laufzeitumgebung, eine virtuelle Maschine oder eine Kombination aus einem oder mehreren davon bildet. Die Einrichtung und die Ausführungsumgebung können verschiedene unterschiedliche Berechnungsmodell-Infrastrukturen wie z. B. Web-Dienste, verteilte Berechnungs- und Grid-Berechnungs-Infrastrukturen realisieren.
-
Ein Computerprogramm (auch als ein Programm, Software, Softwareanwendung, Skript oder Code bezeichnet) kann in irgendeiner Form einer Programmiersprache geschrieben sein, die kompilierte oder interpretierte Sprachen, deklarative oder prozedurale Sprachen enthalten, und es kann in irgendeiner Form verteilt werden, die als ein eigenständiges Programm oder als ein Modul, eine Komponente, eine Subroutine, ein Objekt oder irgendeine Einheit, die zum Gebrauch in einer Berechnungs-Umgebung geeignet sind, enthält. Ein Computerprogramm kann, muss jedoch nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Abschnitt einer Datei, die andere Programme oder Daten enthält (z. B. ein oder mehrere Skripte, die in einem Auszeichnungssprachen-Dokument gespeichert sind), in einer einzelnen Datei, die für das fragliche Programm dediziert ist, oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Code-Abschnitte speichern) gespeichert sein. Ein Computerprogramm kann verteilt werden, um auf einem Computer oder auf mehreren Computern, die sich an einem Standort oder verteilt über mehrere Standorte befinden und durch ein Kommunikationsnetz miteinander verbunden sind, ausgeführt zu werden.
-
Die Prozesse und Logikabläufe, die in dieser Anmeldung beschrieben sind, können durch einen oder mehrere programmierbare Prozessoren ausgeführt werden, die ein oder mehrere Computerprogramme ablaufen lassen, um durch Arbeiten auf Eingabedaten und Erzeugen von Ausgaben Aktionen auszuführen. Die Prozesse und Logikabläufe können auch durch eine Spezial-Logikschaltungsanordnung, z. B. ein FGPA (feldprogrammierbares Gatterfeld) oder eine ASIC (anwendungsspezifische integrierte Schaltung) ausgeführt werden, und die Einrichtung kann dadurch implementiert sein.
-
Prozessoren, die für die Ausführung eines Computerprogramms geeignet sind, enthalten als Beispiel sowohl Allzweck- als auch Spezial-Mikroprozessoren und irgendeinen oder mehrere Prozessoren irgendeiner Art von digitalem Computer. Allgemein wird ein Prozessor Anweisungen und Daten von einem Festwertspeicher oder einem Direktzugriffsspeicher oder beiden empfangen. Die wesentlichen Elemente eines Computers sind ein Prozessor zum Ausführen von Aktionen in Übereinstimmung mit Anweisungen und eine oder mehrere Speichervorrichtungen zum Speichern von Anweisungen und Daten. Allgemein wird ein Computer auch eine oder mehrere Massenspeichervorrichtungen zum Speichern von Daten, z. B. magnetische, magneto-optische Platten oder optische Platten, enthalten oder betriebstechnisch damit gekoppelt sein, um Daten von ihnen zu empfangen, zu ihnen zu übertragen oder beides. Ein Computer muss jedoch solche Vorrichtungen nicht aufweisen. Außerdem kann ein Computer in eine weitere Vorrichtung eingebettet sein, z. B. in ein Mobiltelefon, einen persönlichen digitalen Assistenten (PDA), ein mobiles Audio- oder Videoabspielgerät, eine Spielkonsole, einen Empfänger des globalen Positionierungssystems (GPS-Empfänger) oder eine tragbare Speichervorrichtung (z. B. ein Flashlaufwerk über den universellen seriellen Bus (USB-Flashlaufwerk), um nur einige wenige zu nennen. Vorrichtungen, die zum Speichern von Computerprogrammanweisungen und Daten geeignet sind, enthalten alle Formen von nichtflüchtigem Speicher, Medien und Speichervorrichtungen, die als Beispiel Halbleiterspeichervorrichtungen, z. B. EPROM, EEPROM und Flash-Speichervorrichtungen enthalten; Magnetplatten, z. B. interne Festplatten oder herausnehmbare Platten; magnetooptische Platten; und CD ROM und DVD-ROM-Platten. Der Prozessor und der Speicher können durch eine Spezial-Logikschaltungsanordnung ergänzt oder darin integriert sein.
-
Um die Interaktion mit einem Anwender bereitzustellen, können Ausführungsformen des in dieser Anmeldung beschriebenen Gegenstands auf einem Computer implementiert sein, der eine Anzeigevorrichtung, z. B. einen CRT-(Kathodenstrahlröhren-) oder LCD-Monitor (Flüssigkristallanzeige-Monitor) zum Anzeigen von Informationen für den Anwender und eine Tastatur und eine Zeigevorrichtung, z. B. eine Maus oder einen Trackball, durch die der Anwender Eingaben für den Computer bereitstellen kann, aufweist. Andere Arten von Vorrichtungen können verwendet werden, um ebenfalls Interaktion mit einem Anwender bereitzustellen; beispielsweise kann eine für den Anwender bereitgestellte Rückmeldung irgendeine Form sensorischer Rückmeldung sein, z. B. visuelle Rückmeldung, hörbare Rückmeldung oder tastbare Rückmeldung; und eine Eingabe von dem Anwender kann in irgendeiner Form empfangen werden, die akustische, Sprach- oder tastbare Eingabe enthält. Zusätzlich kann ein Computer mit einem Anwender interagieren durch Senden von Dokumenten zu einer Vorrichtung und Empfangen von Dokumenten von einer Vorrichtung, die durch den Anwender verwendet wird; beispielsweise durch Senden von Web-Seiten zu einem Web-Browser auf einer Anwendervorrichtung eines Anwenders in Reaktion auf Anforderungen, die von dem Web-Browser empfangen werden.
-
Ausführungsformen des in dieser Anmeldung beschriebenen Gegenstands können in einem Berechnungssystem implementiert sein, das eine Backend-Komponente, z. B. als ein Daten-Server, enthält oder das eine Middleware-Komponente, z. B. einen Anwendungsserver, enthält, oder der eine Frontend-Komponente, z. B. einen Anwender-Computer, enthält, der eine graphische Anwenderschnittstelle oder einen Web-Browser aufweist, durch den ein Anwender mit einer Implementierung des in dieser Anmeldung beschriebenen Gegenstands interagieren kann, oder irgendeine Kombination eines oder mehrerer solcher Backend-, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch irgendeine Form oder irgendein Medium zur digitalen Datenkommunikation, z. B. ein Kommunikationsnetz, miteinander verbunden sein. Beispiele für Kommunikationsnetze enthalten ein lokales Netz ("LAN") und ein Weitbereichsnetz ("WAN"), ein Inter-Netz (z. B. das Internet) und Peer-to-Peer-Netze (z. B. ad hoc-Peer-to-Peer-Netze).
-
Das Berechnungssystem kann Anwender und Server enthalten. Ein Anwender und ein Server sind im Allgemeinen voneinander entfernt und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung von Anwender und Server entsteht aufgrund der Computerprogramme, die auf den jeweiligen Computern laufen und eine Anwender-Server-Beziehung miteinander aufweisen. In einigen Ausführungsformen sendet ein Server Daten (z. B. eine HTML-Seite) zu einer Anwendervorrichtung (z. B. zum Zweck der Anzeige der Daten für einen Anwender und Empfangen von Anwendereingabe von einem Anwender, der mit der Anwendervorrichtung interagiert). Daten, die in der Anwendervorrichtung erzeugt werden (z. B. ein Ergebnis einer Anwenderinteraktion) können von der Anwendervorrichtung in dem Server empfangen werden.
-
Obwohl diese Anmeldung viele spezifische Implementierungseinzelheiten beinhaltet, sollten diese nicht als Einschränkungen für den Schutzbereich irgendwelcher Merkmale oder dessen, das beansprucht sein kann, gedeutet werden, sondern vielmehr als Beschreibungen der Merkmale, die für spezielle Ausführungsformen spezifisch sind. Spezielle Merkmale, die in dieser Anmeldung im Kontext getrennter Ausführungsformen beschrieben sind, können auch in Kombination in einer einzigen Ausführungsform implementiert sein. Umgekehrt können verschiedene Merkmale, die im Kontext einer einzigen Ausführungsform beschrieben sind, auch in mehreren Ausführungsformen getrennt oder in irgendeiner geeigneten Unterkombination implementiert sein. Außerdem können, obwohl Merkmale vorstehend als in speziellen Kombinationen arbeitend beschrieben und anfangs sogar als solche beansprucht sind, ein oder mehrere Merkmale aus einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgenommen sein, und die beanspruchte Kombination kann sich auf eine Unterkombination oder eine Variation einer Unterkombination richten.
-
Ähnlich sollte, obwohl Operationen in den Zeichnungen in einer speziellen Reihenfolge abgebildet sind, das nicht so verstanden werden, dass es erforderlich ist, dass solche Operationen in der speziellen gezeigten Reihenfolge oder in sequentieller Reihenfolge ausgeführt werden oder dass alle dargestellten Operationen ausgeführt werden, um wünschenswerte Ergebnisse zu erreichen. Unter speziellen Umständen können Multitasking und Parallelverarbeitung vorteilhaft sein. Außerdem sollte die Trennung verschiedener Systemkomponenten in den vorstehend beschriebenen Ausführungsformen nicht so verstanden werden, dass eine solche Trennung in allen Ausführungsformen erforderlich ist, und es sollte verstanden werden, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in einem einzigen Software-Produkt oder in mehrere Software-Produkte paketiert integriert sein können.
-
Somit sind spezielle Ausführungsformen des Gegenstands beschrieben worden. Andere Ausführungsformen sind innerhalb des Schutzbereichs der folgenden Ansprüche. In einigen Fällen können die Aktionen, die in den Ansprüchen vorgetragen sind, in einer anderen Reihenfolge ausgeführt werden und immer noch wünschenswerte Ergebnisse erreichen. Zusätzlich erfordern die in den begleitenden Figuren abgebildeten Prozesse nicht notwendigerweise die spezielle gezeigte Reihenfolge oder sequentielle Reihenfolge, um wünschenswerte Ergebnisse zu erreichen. In speziellen Implementierungen können Multitasking und Parallelverarbeitung vorteilhaft sein.