DE112013005131T5 - Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen - Google Patents

Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen Download PDF

Info

Publication number
DE112013005131T5
DE112013005131T5 DE112013005131.1T DE112013005131T DE112013005131T5 DE 112013005131 T5 DE112013005131 T5 DE 112013005131T5 DE 112013005131 T DE112013005131 T DE 112013005131T DE 112013005131 T5 DE112013005131 T5 DE 112013005131T5
Authority
DE
Germany
Prior art keywords
processor
instruction
metric
code region
ipc
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.)
Withdrawn
Application number
DE112013005131.1T
Other languages
English (en)
Inventor
Ruchira Sasanka
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112013005131T5 publication Critical patent/DE112013005131T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

Hier werden Mechanismen zur kontinuierlichen automatischen Abstimmung von Coderegionen für optimale Hardware-Auslegungen für die Coderegionen beschrieben. Ein Mechanismus stimmt automatisch die abstimmbaren Parameter für eine demarkierte Coderegion durch ein Berechnen von Metriken ab, während die Coderegion mit verschiedenen Sätzen abstimmbarer Parameter ausgeführt wird, und durch ein Auswählen eines der verschiedenen Sätze auf der Basis der berechneten Metriken.

Description

  • GEBIET
  • Die vorliegende Offenbarung bezieht sich auf das Gebiet der Verarbeitungslogik, Mikroprozessoren und assoziierten Instruktionssatzarchitektur, die, wenn sie von dem Prozessor oder anderer Verarbeitungslogik ausgeführt werden, logische, mathematische oder andere funktionelle Operationen vornehmen.
  • HINTERGRUND
  • Prozessoren weisen viele abstimmbare Parameter auf, die entweder bei der Herstellung, zur Zeit des Hochfahrens des Systems, wie durch das Basic Input-Output System (BIOS), oder während der Laufzeit, wie durch das Betriebssystem (Operating System, OS) eingestellt werden können. Einige dieser abstimmbaren Parameter umfassen: (1) Hardware-(HW-)Vorabrufereinstellungen, die das Ein- oder Ausschalten einiger HW-Vorabrufer umfassen; (2) Software-(SW-)Vorabrufinstruktionseinstellungen, die das Ignorieren oder Honorieren von SW-Vorabrufinstruktionen umfassen; (3) Cache-Räumungs/Ersatzhinweise, die das Ignorieren oder Honorieren von Cache-Räumungs/Ersatzhinweisen umfassen; (4) Cache-Größen, die das dynamische Auslegen der Cache-Größen umfassen; (5) Kanäle eines dynamischen Speichers mit wahlfreiem Zugriff (Dynamic Random Access Memory, DRAM), die das Auslegen von DRAM-Seitenöffnungsstrategien und Puffergrößen umfassen; und (6) HW-Puffergrößen, die das Auslegen verschiedener HW-Puffergrößen oder HW-Strukturgrößen umfassen.
  • Derartige Parameter werden allgemein permanent (z. B. im BIOS) eingestellt, um mit verschiedensten Anwendungen kompatibel zu sein. Als solche können diese Einstellungen für eine gegebene Anwendung nicht optimal sein. Beispielsweise kann eine gegebene Vorabrufereinstellung für Anwendung A vorteilhaft sein, wohingegen dieselbe Einstellung die Leistung von Anwendung B reduzieren kann. Da die Vorabrufereinstellung für verschiedenste Anwendungen festgelegt ist, wird diese Einstellung zusätzlich nicht für eine Optimierung der Ausführung von Anwendung B abgestimmt.
  • Abstimmbare Parameter können grobkörniger sein – beispielsweise in einem heterogenen Kernprozessor liegen Kerne mit verschiedenen Fähigkeiten vor (z. B. Atom- und Xeon-Kerne). Hier wird anstelle der Wahl einer Vorabrufereinstellung ein gesamter Kern gewählt, um ein Codestück laufen zu lassen. Ein Atom-Kern könnte für das Laufenlassen eines Codestücks adäquat sein, wohingegen ein anderes Codestück von einem Xeon-Kern stark profitieren kann.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1a ist ein Blockbild eines Systems gemäß einer Ausführungsform.
  • 1b ist ein Blockbild eines Systems gemäß einer Ausführungsform.
  • 1c ist ein Blockbild eines Systems gemäß einer Ausführungsform.
  • 2 ist ein Blockbild eines Prozessors gemäß einer Ausführungsform.
  • 3A veranschaulicht gepackte Datentypen gemäß einer Ausführungsform.
  • 3B veranschaulicht gepackte Datentypen gemäß einer Ausführungsform.
  • 3C veranschaulicht gepackte Datentypen gemäß einer Ausführungsform.
  • 3D veranschaulicht eine Instruktionscodierung gemäß einer Ausführungsform.
  • 3E veranschaulicht eine Instruktionscodierung gemäß einer Ausführungsform.
  • 3F veranschaulicht eine Instruktionscodierung gemäß einer Ausführungsform.
  • 4A veranschaulicht Elemente einer Prozessormikroarchitektur gemäß einer Ausführungsform.
  • 4B veranschaulicht Elemente einer Prozessormikroarchitektur gemäß einer Ausführungsform.
  • 5 ist ein Blockbild eines Prozessors gemäß einer Ausführungsform.
  • 6 ist ein Blockbild eines Computersystems gemäß einer Ausführungsform.
  • 7 ist ein Blockbild eines Computersystems gemäß einer Ausführungsform.
  • 8 ist ein Blockbild eines Computersystems gemäß einer Ausführungsform.
  • 9 ist ein Blockbild eines System-on-a-Chip gemäß einer Ausführungsform.
  • 10 ist ein Blockbild eines Prozessors gemäß einer Ausführungsform.
  • 11 ist ein Blockbild eines IP-Kernentwicklungssystems gemäß einer Ausführungsform.
  • 12 veranschaulicht ein Architekturemulationssystem gemäß einer Ausführungsform.
  • 13 veranschaulicht ein System zur Übersetzung von Instruktionen gemäß einer Ausführungsform.
  • 14 veranschaulicht eine weitere Ausführungsform eines Blockbilds für ein Rechnersystem, das einen Mehrkernprozessor umfasst.
  • 15 veranschaulicht eine Ausführungsform eines Blockbilds für einen Prozessor.
  • 16 veranschaulicht eine weitere Ausführungsform eines Blockbilds für ein Rechnersystem.
  • 17 veranschaulicht eine weitere Ausführungsform eines Blockbilds für ein Rechnersystem.
  • 18 ist ein Blockbild eines Prozessors für ein kontinuierliches automatisches Abstimmen von Coderegionen gemäß einer Ausführungsform.
  • 19 ist ein Flussdiagramm eines Verfahrens zum kontinuierlichen automatischen Abstimmen von Coderegionen gemäß einer Ausführungsform.
  • 20 ist ein Flussdiagramm des Verfahrens zum kontinuierlichen automatischen Abstimmen von Coderegionen von 19 gemäß einer Ausführungsform.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Details angegeben, wie Beispiele spezifischer Typen von Prozessoren und Systemauslegungen, spezifische Hardware-Strukturen, spezifische Architektur- und Mikroarchitekturdetails, spezifische Registerauslegungen, spezifische Instruktionstypen, spezifische Systemkomponenten, spezifische Messungen/Höhen, spezifische Prozessor-Pipeline-Stufen und Betriebe, etc., um ein umfassendes Verständnis der vorliegenden Erfindung zu bieten. Für Fachleute ist jedoch klar, dass diese spezifischen Details nicht eingesetzt werden müssen, um die vorliegende Erfindung zu praktizieren. In anderen Fällen werden wohlbekannte Komponenten oder Verfahren nicht detailliert beschrieben, wie spezifische und alternative Prozessorarchitekturen, spezifische Logikschaltungen/codes für beschriebene Algorithmen, spezifische Firmware-Codes, spezifische-Zwischenverbindungsbetriebe, spezifische Logikauslegungen, spezifische Herstellungstechniken und Materialien, spezifische Kompiliererimplementierungen, spezifische Ausdrücke von Algorithmen in Code, spezifische Herunterfahr- und Gating-Techniken/Logik und andere spezifische operationale Details eines Computersystems, um zu vermeiden, dass die vorliegende Erfindung unnötig unklar wird.
  • Obwohl die folgenden Ausführungsformen mit Bezugnahme auf eine Energieersparnis und Energieeffizienz in spezifischen Integrationsschaltungen, wie in Rechnerplattformen oder Mikroprozessoren, beschrieben werden können, sind andere Ausführungsformen auf andere Typen von Integrationsschaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren hier beschriebener Ausführungsformen können bei anderen Typen von Schaltungen oder Halbleitervorrichtungen angewendet werden, die auch von einer besseren Energieeffizienz und Energieersparnis profitieren können. Beispielsweise sind die geoffenbarten Ausführungsformen nicht auf Desktop-Computersysteme oder tragbare Computer beschränkt, wie die Intel® UltrabooksTM-Computer, und können auch in anderen Vorrichtungen verwendet werden, wie Hand-Vorrichtungen, Tablets oder dünnen Notebooks, System-on-a-Chip-(SOC-)Vorrichtungen und eingebetteten Anwendungen. Einige Beispiele von Hand-Vorrichtungen umfassen Zellulartelefone, Internet-Protokollvorrichtungen, Digitalkameras, Personal Digital Assistants (PDAs) und Hand-PCs. Eingebettete Anwendungen umfassen typischerweise eine Mikrosteuereinheit, einen digitalen Signalprozessor (DSP), System-on-a-Chip, Netzcomputer (NetPC), Set-top-Boxen, Netzknoten, Wide Area Network-(WAN-)Schalter oder ein beliebiges anderes System, das die nachstehend gelehrten Funktionen und Operationen vornehmen kann. Außerdem sind die hier beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physische Rechnervorrichtungen beschränkt, sondern können sich auch auf Software-Optimierungen zur Energieersparnis und -effizienz beziehen. Wie aus der nachstehenden Beschreibung leicht hervorgeht, sind die hier beschriebenen Ausführungsformen von Verfahren, Vorrichtungen und Systemen (egal ob mit Bezugnahme auf Hardware, Firmware, Software oder eine Kombination davon) für die Zukunft einer ,grünen Technologie' im Abgleich mit Leistungsüberlegungen essentiell.
  • Obwohl die vorliegenden Ausführungsformen mit Bezugnahme auf einen Prozessor beschrieben werden, sind andere Ausführungsformen auf andere Typen von Integrationsschaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen der vorliegenden Erfindung können bei anderen Typen von Schaltungen oder Halbleitervorrichtungen angewendet werden, die von einem höheren Pipeline-Durchsatz und einer verbesserten Leistung profitieren können. Die Lehren von Ausführungsformen der vorliegenden Erfindung sind auf einen beliebigen Prozessor oder eine Maschine anwendbar, der oder die Datenmanipulationen vornimmt. Die vorliegende Erfindung ist jedoch nicht auf Prozessoren oder Maschinen beschränkt, die 512 Bit-, 256 Bit-, 128 Bit-, 64 Bit- 32-Bit oder 16 Bit-Datenoperationen vornehmen, und kann bei einem beliebigen Prozessor und einer Maschine angewendet werden, in denen eine Datenmanipulation oder -verwaltung vorgenommen wird. Zusätzlich liefert die folgende Beschreibung Beispiele, und die beigeschlossenen Zeichnungen zeigen verschiedene Beispiele für Zwecke der Veranschaulichung. Diese Beispiele sind jedoch nicht im einschränkenden Sinn auszulegen, da sie nur Beispiele von Ausführungsformen der vorliegenden Erfindung liefern sollen, anstatt eine erschöpfende Liste aller möglichen Implementierungen von Ausführungsformen der vorliegenden Erfindung vorzusehen.
  • Obwohl die nachstehenden Beispiele eine Instruktionshandhabung und -verteilung im Kontext von Ausführungseinheiten und Logikschaltungen beschreiben, können andere Ausführungsformen der vorliegenden Erfindung durch Daten oder Instruktionen erzielt werden, die auf einem maschinenlesbaren, greifbaren Medium gespeichert sind, und die, wenn sie von einer Maschine vorgenommen werden, die Maschine veranlassen, Funktionen vorzunehmen, die mit wenigstens einer Ausführungsform der Erfindung konsistent sind. In einer Ausführungsform sind mit Ausführungsformen der vorliegenden Erfindung assoziierte Funktionen in maschinenlesbaren Instruktionen verkörpert. Die Instruktionen können verwendet werden, um einen Universal- oder Spezialprozessor zu veranlassen, der mit den Instruktionen programmiert ist, die Schritte der vorliegenden Erfindung vorzunehmen. Ausführungsformen der vorliegenden Erfindung können als Computerprogrammprodukt oder Software vorgesehen werden, das oder die ein maschinen- oder computerlesbares Medium mit darauf gespeicherten Instruktionen umfasst, die verwendet werden können, um einen Computer (oder andere elektronische Vorrichtungen) zu programmieren, eine oder mehrere Operationen gemäß Ausführungsformen der vorliegenden Erfindung vorzunehmen. Alternativ dazu könnten Operationen von Ausführungsformen der vorliegenden Erfindung durch spezifische Hardware-Komponenten vorgenommen werden, die Festfunktionslogik zur Vornahme der Operationen enthalten, oder durch eine beliebige Kombination programmierter Computerkomponenten und Festfunktions-Hardware-Komponenten.
  • Instruktionen, die verwendet werden, um Logik zu programmieren, Ausführungsformen der Erfindung vorzunehmen, können innerhalb eines Speichers im System gespeichert werden, wie eines DRAM, Cache, Flash-Speichers oder anderen Speichers. Ferner können die Instruktionen über ein Netz oder mittels anderer computerlesbarer Medien verteilt werden. So kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Senden von Informationen in einer Form umfassen, die von einer Maschine (z. B. einem Computer) gelesen werden kann, ist jedoch nicht beschränkt auf: Disketten, optische Platten, Compact Disc-Nurlesespeicher (CD-ROMs) und magnetooptische Platten, Nurlesespeicher (ROMs), Speicher mit wahlfreiem Zugriff (RAM), löschbare programmierbare Nurlesespeicher (EPROM), elektrisch löschbare programmierbare Nurlesespeicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen greifbaren, maschinenlesbaren Speicher, der bei der Transmission von Informationen über das Internet über elektrische, optische, akustische oder andere Formen ausgebreiteter Signale (z. B. Trägerwellen, Infrarot-Signale, Digitalsignale) verwendet wird. Demgemäß umfasst das computerlesbare Medium einen beliebigen Typ eines greifbaren maschinenlesbaren Mediums, das zum Speichern oder Senden elektronischer Instruktionen oder Informationen in einer Form geeignet ist, die von einer Maschine (z. B. einem Computer) gelesen werden kann.
  • Eine Ausbildung kann durch verschiedene Stufen gehen, von der Erzeugung zur Simulation zur Herstellung. Eine Ausbildung repräsentierende Daten können die Ausbildung in verschiedener Weise repräsentieren. Zuerst, wie es bei Simulationen nützlich ist, kann die Hardware unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionellen Beschreibungssprache repräsentiert werden. Zusätzlich kann ein Modell auf Schaltungsebene mit Logik und/oder Transistorgates in einigen Stufen des Ausbildungsprozesses erzeugt werden. Ferner erreichen die meisten Ausbildungen in irgendeiner Stufe eine Ebene von Daten, welche die physikalische Platzierung verschiedener Vorrichtungen in das Hardware-Modell repräsentieren. In dem Fall, wo herkömmliche Halbleiter-Herstellungstechniken verwendet werden, können die das Hardware-Modell repräsentierenden Daten jene Daten sein, welche das Vorliegen oder Fehlen verschiedener Merkmale auf verschiedenen Maskenschichten für Masken spezifizieren, die zur Erzeugung der Integrationsschaltung verwendet werden. In einer beliebigen Repräsentation der Ausbildung können die Daten in einer beliebigen Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder ein magnetischer oder optischer Speicher, wie eine Platte, kann das maschinenlesbare Medium sein, um Informationen zu speichern, die über optische oder elektrische Wellen gesendet werden, welche moduliert oder auf andere Weise generiert werden, um solche Informationen zu senden. Wenn eine elektrische Trägerwelle gesendet wird, die den Code oder die Ausbildung anzeigt oder trägt, in dem Ausmaß, dass ein Kopieren, Puffer oder eine erneute Übertragung des elektrischen Signals vorgenommen wird, wird eine neue Kopie gemacht. So kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem greifbaren, maschinenlesbaren Medium, zumindest temporär, einen Artikel speichern, wie in einer Trägerwelle codierte Informationen, die Techniken von Ausführungsformen der vorliegenden Erfindung verkörpern.
  • In modernen Prozessoren wird eine Reihe verschiedener Ausführungseinheiten verwendet, um verschiedenste Codes und Instruktionen zu verarbeiten und auszuführen. Nicht alle Instruktionen werden gleich erzeugt, da einige schneller vollendet werden können, wohingegen andere eine Anzahl von Taktzyklen benötigen können, um vollendet zu werden. Je schneller der Durchsatz von Instruktionen, desto besser die Gesamtleistung des Prozessors. So wäre es vorteilhaft, dass so viele Instruktionen wie möglich so schnell wie möglich ausgeführt werden. Es gibt jedoch bestimmte Instruktionen, die eine größere Komplexität aufweisen und mehr bezogen auf die Ausführungszeit und Prozessorressourcen erfordern. Beispielsweise gibt es Gleitkommainstruktionen, Lade/Speicheroperationen, Datenbewegungen, etc.
  • Mit der zunehmenden Verwendung von Computersystemen im Internet, bei Texten und in Multimedia-Anwendungen wurde mit der Zeit zusätzliche Prozessorunterstützung eingebracht. In einer Ausführungsform kann ein Instruktionssatz mit einer oder mehreren Computerarchitekturen assoziiert sein, die Datentypen, Instruktionen, Registerarchitektur, Adressierungsmodi, Speicherarchitektur, Unterbrechungs- und Ausnahmebehandlung und externen Eingang und Ausgang (I/O) umfassen.
  • In einer Ausführungsform kann die Instruktionssatzarchitektur (ISA) durch eine oder mehrere Mikroarchitekturen implementiert werden, die Prozessorlogik und Schaltungen umfassen, welche zur Implementierung eines oder mehrerer Instruktionssätze verwendet werden. Demgemäß können Prozessoren mit unterschiedlichen Mikroarchitekturen wenigstens einen Teil eines gemeinsamen Instruktionssatzes gemeinsam nützen. Beispielsweise implementieren Intel® Pentium 4-Prozessoren, Intel® CoreTM-Prozessoren und Prozessoren von Advanced Micro Devices, Inc., of Sunnyvale, CA, nahezu identische Versionen des x86-Instruktionssatzes (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden), haben jedoch unterschiedliche interne Ausbildungen. Ähnlich können Prozessoren, die von anderen Prozessorentwicklungsfirmen ausgebildet werden, wie ARM Holdings, Ltd., MIPS oder ihren Lizenzträgern oder -nehmern, wenigstens einen Teil eines gemeinsamen Instruktionssatzes gemeinsam nützen, können aber unterschiedliche Prozessorausbildungen umfassen. Beispielsweise kann dieselbe Registerarchitektur der ISA in verschiedener Weise in verschiedenen Mikroarchitekturen unter Verwendung neuer oder wohlbekannter Techniken implementiert werden, die dedizierte physische Register umfassen, ein oder mehrere dynamisch zugeordnete physische Register unter Verwendung eines Registerumbenennungsmechanismus, z. B. unter Verwendung einer Register-Alias-Tabelle (RAT), eines Umordnungspuffers (Reorder Buffer, ROB) und einer Rückordnungsregisterdatei. In einer Ausführungsform können Register ein oder mehrere Register, Registerarchitekturen, Registerdateien oder andere Registersätze umfassen, die von einem Software-Programmierer adressierbar sein können oder nicht.
  • In einer Ausführungsform kann eine Instruktion ein oder mehrere Instruktionsformate umfassen. In einer Ausführungsform kann ein Instruktionsformat verschiedene Felder (Anzahl von Bits, Ort von Bits) anzeigen, um, unter anderem, die vorzunehmende Operation und den oder die Operanden zu spezifizieren, an denen diese Operation vorzunehmen ist. Einige Instruktionsformate können, definiert durch Instruktionsschablonen (oder Subformate), weiter unterteilt werden. Beispielsweise können die Instruktionsschablonen eines gegebenen Instruktionsformats definiert werden, verschiedene Subsätze der Instruktionsformatfelder aufzuweisen, und/oder definiert werden, ein gegebenes Feld aufzuweisen, das anders interpretiert wird. In einer Ausführungsform wird eine Instruktion unter Verwendung eines Instruktionsformats ausgedrückt (und, falls definiert, in einer gegebenen einen der Instruktionsschablonen dieses Instruktionsformats) und spezifiziert die Operation und die Operanden oder zeigt diese an, an denen die Operation operieren wird.
  • Wissenschaftliche, finanzielle, auto-vektorisierte Universal-, RMS-(Recognition, Mining & Synthesis-) und visuelle und Multimedia-Anwendungen (z. B. 2D/3D-Grafik, Bildverarbeitung, Videokompression/dekompression, Spracherkennungsalgorithmen und Audio-Manipulation) können erfordern, dass dieselbe Operation an einer großen Anzahl von Datenitems vorzunehmen ist. In einer Ausführungsform bezieht sich Single Instruktion Multiple Data (SIMD) auf einen Instruktionstyp, der einen Prozessor veranlasst, eine Operation an mehreren Datenelementen vorzunehmen. Die SIMD-Technologie kann in Prozessoren verwendet werden, welche die Bits in einem Register in eine Anzahl von Datenelementen mit fester Größe oder variabler Größe logisch teilen können, wobei jedes davon einen getrennten Wert repräsentiert. Beispielsweise können in einer Ausführungsform die Bits in einem 64 Bit-Register als Quelloperand organisiert werden, der vier getrennte 16 Bit-Datenelemente enthält, wobei jedes davon einen getrennten 16 Bit-Wert repräsentiert. Dieser Datentyp kann als „gepackter” Datentyp oder „Vektor” datentyp bezeichnet werden, und Operanden dieses Datentyps werden als gepackte Datenoperanden oder Vektoroperanden bezeichnet. In einer Ausführungsform kann ein gepacktes Datenitem oder ein Vektor eine Sequenz gepackter Datenelemente sein, die innerhalb eines einzelnen Registers gespeichert sind, und ein gepackter Datenoperand oder ein Vektoroperand kann ein Quell- oder Zieloperand einer SIMD-Instruktion (oder „gepackten Dateninstruktion” oder einer „Vektorinstruktion”) sein. In einer Ausführungsform spezifiziert eine SIMD-Instruktion eine einzelne Vektoroperation, die an zwei Quellvektoroperanden vorzunehmen ist, um einen Zielvektoroperanden (der auch als Ergebnisvektoroperand bezeichnet wird) mit derselben oder einer anderen Größe, mit derselben oder einer anderen Anzahl von Datenelementen und in derselben oder einer anderen Datenelementordnung zu generieren.
  • Die SIMD-Technologie, wie jene, die verwendet wird von Intel® CoreTM-Prozessoren mit einem Instruktionssatz mit x86, MMXTM, Streaming SIMD Extensions (SSE), SSE2-, SSE3-, SSE4.1- und SSE4.2-Instruktionen, ARM-Prozessoren, wie der ARM Cortex®-Prozessorfamilie mit einem Instruktionssatz mit Vektor Floating Point-(VFP-) und/oder NEON-Instruktionen, und MIPS-Prozessoren, wie der Loongson-Prozessorfamilie, die vom Institute of Computing Technology (ICT) der chinesischen Akademie der Wissenschaften entwickelt wurde, ermöglichte eine signifikante Verbesserung der Anwendungsleistung (CoreTM und MMXTM sind eingetragene Warenzeichen oder Warenzeichen der Intel Corporation of Santa Clara, Kalifornien).
  • In einer Ausführungsform sind Ziel- und Quellregister/daten generische Ausdrücke, um die Quelle und das Ziel der entsprechenden Daten oder Operation zu repräsentieren. In einigen Ausführungsformen können sie durch Register, Speicher oder andere Speicherbereiche mit anderen Namen oder Funktionen als den gezeigten implementiert werden. Beispielsweise kann in einer Ausführungsform „DEST1” ein temporäres Speicherregister oder ein anderer Speicherbereich sein, wohingegen „SRC1” und „SRC2” ein erstes und zweites Quellspeicherregister oder ein anderer Speicherbereich sein können, usw. In anderen Ausführungsformen können zwei oder mehrere der SRC- und DEST-Speicherbereiche verschiedenen Datenspeicherelementen innerhalb desselben Speicherbereichs (z. B. eines SIMD-Registers) entsprechen. In einer Ausführungsform kann eines der Quellregister auch als Zielregister wirken, indem beispielsweise das Ergebnis einer an den ersten und zweiten Quelldaten vorgenommenen Operation in eines der beiden Quellregister zurückgeschrieben wird, das als Zielregister dient.
  • Mit Bezugnahme auf 1A ist ein Blockbild eines beispielhaften Computersystems veranschaulicht, das mit einem Prozessor gebildet ist, der Ausführungseinheiten umfasst, um eine Instruktion auszuführen, wobei eine oder mehrere der Zwischenverbindungen eines oder mehrere Merkmale gemäß einer Ausführungsform der vorliegenden Erfindung implementiert oder implementieren. Das System 100 umfasst eine Komponente, wie einen Prozessor 102, um Ausführungseinheiten zu verwenden, die Logik umfassen, um Algorithmen zur Verarbeitung von Daten vorzunehmen, gemäß der hier beschriebenen Ausführungsform. Das System 100 ist für Verarbeitungssysteme auf der Basis von PENTIUMTM III-, PENTIUMTM 4-, XeonTM-, ItaniumTM-, XScaleTM- und/oder StrongARMTM-Prozessoren repräsentativ, die von Intel Corporation of Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme verwendet werden können (umfassend PCs mit anderen Mikroprozessoren, technischen Arbeitsstationen, Set-top-Boxen und dgl.). In einer Ausführungsform führt das beispielhafte System 100 eine Version des WINDOWSTM-Betriebssystems aus, das von Microsoft Corporation of Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (beispielsweise UNIX und LINUX), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können. So sind Ausführungsformen der vorliegenden Erfindung nicht auf irgendeine spezifische Kombination von Hardware-Schaltungen und Software beschränkt.
  • Ausführungsformen sind nicht auf Computersysteme beschränkt. Alternative Ausführungsformen der vorliegenden Erfindung können in anderen Vorrichtungen verwendet werden, wie Hand-Vorrichtungen und eingebetteten Anwendungen. Einige Beispiele von Hand-Vorrichtungen umfassen Zellulartelefone, Internet-Protokollvorrichtungen, Digitalkameras, Personal Digital Assistants (PDAs) und Hand-PCs. Eingebettete Anwendungen können eine Mikrosteuereinheit, einen digitalen Signalprozessor (DSP), System-on-a-Chip, Netzcomputer (NetPC), Settop-Boxen, Netzknoten, Wide Area Network-(WAN-)Schalter oder ein beliebiges anderes System umfassen, das eine oder mehrere Instruktionen gemäß wenigstens einer Ausführungsform vornehmen kann.
  • In dieser veranschaulichten Ausführungsform umfasst der Prozessor 102 eine oder mehrere Ausführungseinheiten 108, um einen Algorithmus zu implementieren, der wenigstens eine Instruktion auszuführen hat. Eine Ausführungsform kann im Kontext eines Einzelprozessor-Desktop- oder -Serversystems beschrieben werden, aber alternative Ausführungsformen können in einem Mehrprozessorsystem eingeschlossen sein. Das System 100 ist ein Beispiel einer „Knoten”-Systemarchitektur. Das Computersystem 100 umfasst einen Prozessor 102, um Datensignale zu verarbeiten. Der Prozessor 102, wie ein veranschaulichtes Beispiel, kann ein Computermikroprozessor mit komplexem Instruktionssatz (Complex Instruction Set Computer, CISC), ein Computermikroprozessor mit reduziertem Instruktionssatz (RISC), ein Very Long Instruction Word-(VLIW-)Mikroprozessor, ein Prozessor, der eine Kombination von Instruktionssätzen implementiert, oder eine beliebige andere Prozessorvorrichtung sein, wie beispielsweise ein digitaler Signalprozessor. Der Prozessor 102 ist mit einem Prozessorbus 110 gekoppelt, der Datensignale zwischen dem Prozessor 102 und anderen Komponenten im System 100 senden kann. Die Elemente des Systems 100 (z. B. Grafikbeschleuniger 112, Speicher-Steuereinheitknoten 116, Speicher 120, I/O-Steuereinheit 124, drahtloser Sender/Empfänger 126, Flash-BIOS 128, Netzsteuereinheit 134, Audio-Steuereinheit 136, serieller Erweiterungsport 138, I/O-Steuereinheit 140, etc.) nehmen ihre herkömmlichen Funktionen vor, die Fachleuten wohlbekannt sind.
  • In einer Ausführungsform umfasst der Prozessor 102 einen Level 1-(L1-)internen Cache-Speicher 104. In Abhängigkeit von der Architektur kann der Prozessor 102 einen einzelnen internen Cache oder mehrere Level interner Caches aufweisen. Andere Ausführungsformen können auch eine Kombination sowohl interner als auch externer Caches in Abhängigkeit von der bestimmten Implementierung und den Erfordernissen umfassen. Eine Registerdatei 106 hat verschiedene Datentypen in verschiedenen Registern zu speichern, die ganzzahlige Register, Gleitkommaregister, Vektorregister, Bankregister, Checkpoint-Register, Statusregister und Instruktionszeigerregister umfassen.
  • Die Ausführungseinheit 108 mit Logik zur Vornahme der ganzzahligen und Gleitkommaoperationen residiert auch im Prozessor 102. Der Prozessor 102 umfasst auch einen Mikrocode-(Ucode-)ROM, um einen Mikrocode zu speichern, der Algorithmen für bestimmte Makroinstruktionen vorzunehmen oder komplexe Szenarien handzuhaben hat. Hier ist der Mikrocode potentiell aktualisierbar, um Logikfehler/fehlerbehebungen für den Prozessor 102 handzuhaben. Für eine Ausführungsform umfasst die Ausführungseinheit 108 Logik, um einen gepackten Instruktionssatz 109 handzuhaben. Durch den Einschluss des gepackten Instruktionssatzes 109 im Instruktionssatz eines Universalprozessors 102, zusammen mit assoziierten Schaltungen, um die Instruktionen auszuführen, können die von vielen Multimedia-Anwendungen verwendeten Operationen unter Verwendung gepackter Daten in einem Universal-Prozessor 102 vorgenommen werden. So können viele Multimedia-Anwendungen durch die Verwendung der vollen Breite eines Datenbusses eines Prozessors zur Vornahme von Operationen an gepackten Daten beschleunigt und effizienter ausgeführt werden. Dadurch kann potentiell die Notwendigkeit entfallen, kleinere Einheiten von Daten quer über den Datenbus des Prozessors transferieren zu müssen, um eine oder mehrere Operationen mit jeweils einem Datenelement zu einer Zeit vorzunehmen.
  • Alternative Ausführungsformen einer Ausführungseinheit 108 können auch in Mikrosteuereinheiten, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Typen von Logikschaltungen verwendet werden. Das System 100 umfasst einen Speicher 120. Der Speicher 120 kann eine dynamische Speichervorrichtung mit wahlfreiem Zugriff (DRAM), eine statische Speichervorrichtung mit wahlfreiem Zugriff (SRAM), eine Flash-Speichervorrichtung oder eine andere Speichervorrichtung sein. Der Speicher 120 speichert Instruktionen und/oder Daten, welche durch Datensignale repräsentiert werden, die vom Prozessor 102 auszuführen sind.
  • Ein Systemlogikchip 116 ist mit dem Prozessorbus 110 und dem Speicher 120 gekoppelt. Der Systemlogikchip 116 ist in der veranschaulichten Ausführungsform ein Speicher-Steuereinheitknoten (Memory Controller Hub, MCH). Der Prozessor 102 kann mit dem MCH 116 über einen Prozessorbus 110 kommunizieren. Der MCH 116 liefert einen Speicherweg 118 mit hoher Bandbreite zum Speicher 120 zum Speichern von Instruktionen und Daten und zum Speichern von GrafikInstruktionen, Daten und Texturen. Der MCH 116 hat Datensignale zwischen dem Prozessor 102, Speicher 120 und anderen Komponenten im System 100 zu leiten und die Datensignale zwischen dem Prozessorbus 110, dem Speicher 120 und dem System-I/O 122 zu überbrücken. In einigen Ausführungsformen kann der Systemlogikchip 116 einen Grafikport zur Kopplung mit einer Grafiksteuereinheit 112 vorsehen. Der MCH 116 ist mit dem Speicher 120 durch eine Speicherschnittstelle 118 gekoppelt. Die Grafikkarte 112 ist mit dem MCH 116 durch eine beschleunigte Grafikport-(Accelerated Graphics Port-, AGP-)Zwischenverbindung 114 gekoppelt.
  • Das System 100 verwendet einen eigenen Knotenschnittstellenbus 122, um den MCH 116 mit dem I/O-Steuereinheitknoten (ICH) 130 zu verbinden. Der ICH 130 sieht direkte Verbindungen mit einigen I/O-Vorrichtungen über einen lokalen I/O-Bus vor. Der lokale I/O-Bus ist ein Hochgeschwindigkeits-I/O-Bus zum Verbinden von Peripheriegeräten mit dem Speicher 120, Chipsatz und Prozessor 102. Einige Beispiele sind die Audio-Steuereinheit, der Firmware-Knoten (Flash-BIOS) 128, der drahtlose Sender/Empfänger 126, der Datenspeicher 124, die Legacy-I/O-Steuereinheit, die Benutzereingabe- und Tastaturschnittstellen enthält, ein serieller Erweiterungsport, wie Universal Serial Bus (USB), und eine Netzsteuereinheit 134. Die Datenspeichervorrichtung 124 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, eine Flash-Speichervorrichtung oder eine andere Massenspeichervorrichtung umfassen.
  • Für eine weitere Ausführungsform eines Systems kann eine Instruktion gemäß einer Ausführungsform mit einem System-on-a-Chip verwendet werden. Eine Ausführungsform von einem System-on-a-Chip umfasst einen Prozessor und einen Speicher. Der Speicher für ein solches System ist ein Flash-Speicher. Der Flash-Speicher kann auf demselben Chip wie der Prozessor und andere Systemkomponenten angeordnet sein. Zusätzlich können auch andere Logikblöcke, wie eine Speichersteuereinheit oder Grafiksteuereinheit, auf einem System-on-a-Chip angeordnet sein.
  • 1B veranschaulicht ein Datenverarbeitungssystem 140, das die Prinzipien einer Ausführungsform der vorliegenden Erfindung implementiert. Für Fachleute ist es klar, dass die hier beschriebenen Ausführungsformen mit alternativen Verarbeitungssystemen verwendet werden können, ohne vom Umfang der Ausführungsformen der Erfindung abzuweichen.
  • Das Computersystem 140 umfasst einen Verarbeitungskern 159, der wenigstens eine Instruktion gemäß einer Ausführungsform vornehmen kann. Für eine Ausführungsform repräsentiert der Verarbeitungskern 159 eine Verarbeitungseinheit eines beliebigen Architekturtyps, einschließlich, jedoch nicht beschränkt auf einen CISC-, einen RISC- oder einen VLIW-Architekturtyp. Der Verarbeitungskern 159 kann auch zur Herstellung in einer oder mehreren Prozesstechnologien geeignet sein und kann, indem er auf einem maschinenlesbaren Medium ausreichend detailliert repräsentiert wird, geeignet sein, die genannte Herstellung zu vereinfachen.
  • Der Verarbeitungskern 159 umfasst eine Ausführungseinheit 142, einen Satz einer (von) Registerdatei(en) 145 und einen Decoder 144. Der Verarbeitungskern 159 umfasst auch zusätzliche Schaltungen (nicht gezeigt), die für das Verständnis von Ausführungsformen der vorliegenden Erfindung nicht nötig sind. Die Ausführungseinheit 142 wird zur Ausführung von Instruktionen verwendet, die vom Verarbeitungskern 159 empfangen werden. Zusätzlich zur Vornahme typischer Prozessorinstruktionen kann die Ausführungseinheit 142 Instruktionen in einem gepackten Instruktionssatz 143 zur Vornahme von Operationen an gepackten Datenformaten vornehmen. Der gepackte Instruktionssatz 143 umfasst Instruktionen zur Vornahme von Ausführungsformen der Erfindung und andere gepackte Instruktionen. Die Ausführungseinheit 142 ist mit der Registerdatei 145 durch einen internen Bus gekoppelt. Die Registerdatei 145 repräsentiert einen Speicherbereich am Verarbeitungskern 159 zum Speicher von Informationen, die Daten umfassen. Wie vorstehend angegeben, ist es klar, dass der Speicherbereich, der zum Speichern der gepackten Daten verwendet wird, nicht kritisch ist. Die Ausführungseinheit 142 ist mit dem Decoder 144 gekoppelt. Der Decoder 144 wird zur Decodierung von Instruktionen, die vom Verarbeitungskern 159 empfangen werden, in Steuersignale und/oder Mikrocode-Eintrittspunkte verwendet. Ansprechend auf diese Steuersignale und/oder Mikrocode-Eintrittspunkte nimmt die Ausführungseinheit 142 die geeigneten Operationen vor. In einer Ausführungsform wird der Decoder verwendet, um den Operationscode der Instruktion zu interpretieren, der anzeigen wird, welche Operation an den entsprechenden Daten vorgenommen werden soll, die innerhalb der Instruktion angezeigt wird.
  • Der Verarbeitungskern 159 ist mit einem Bus 141 zum Kommunizieren mit verschiedenen anderen Systemvorrichtungen gekoppelt, die umfassen können, jedoch nicht beschränkt sind beispielsweise auf eine synchrone dynamische Speichersteuerung 146 mit wahlfreiem Zugriff (SDRAM), eine statische Speichersteuerung 147 mit wahlfreiem Zugriff (SRAM), eine Burst-Flash-Speicherschnittstelle 148, eine Personal Computer Memory Card International Association(PCMCIA)/Compact Flash-(CF)-Kartensteuerung 149, eine Flüssigkristallanzeige-(LCD-)Steuerung 150, eine Steuereinheit 151 mit direktem Speicherzugriff (DMA) und eine alternative Bus-Master-Schnittstelle 152. In einer Ausführungsform kann das Datenverarbeitungssystem 140 auch eine I/O-Brücke 154 zum Kommunizieren mit verschiedenen I/O-Vorrichtungen über einen I/O-Bus 153 umfassen. Solche I/O-Vorrichtungen können umfassen, sind jedoch nicht beschränkt beispielsweise auf einen Universal Asynchronous Receiver/Transmitter (UART) 155, einen Universal Serial Bus (USB) 156, einen Bluetooth-Drahtlos-UART 157 und eine I/O-Erweiterungsschnittstelle 158.
  • Eine Ausführungsform des Datenverarbeitungssystems 140 liefert mobile, Netz- und/oder drahtlose Kommunikationen und einen Verarbeitungskern 159, der SIMD-Operationen vornehmen kann, die eine Textfolgen-Vergleichsoperation umfassen. Der Verarbeitungskern 159 kann mit verschiedenen Audio-, Video-, Abbildungs- und Kommunikationsalgorithmen programmiert werden, die diskrete Transformationen, wie eine Walsh-Hadamard-Transformation, eine schnelle Fourier-Transformation (FFT), eine diskrete Kosinustransformation (DCT) und ihre jeweiligen inversen Transformationen; Kompressions/Dekompressionstechniken, wie Farbraumtransformation, Videocodierungs-Bewegungsschätzung oder Videodecodierungs-Bewegungsschätzung; und Modulations/Demodulations-(MODEM-)Funktionen, wie impulscodierte Modulation (PCM), umfassen.
  • 1C veranschaulicht noch weitere alternative Ausführungsformen eines Datenverarbeitungssystems, das SIMD-Textfolgen-Vergleichsoperationen vornehmen kann. Gemäß einer alternativen Ausführungsform kann das Datenverarbeitungssystem 160 einen Hauptprozessor 166, einen SIMD-Coprozessor 161, einen Cache-Speicher 167 und ein Eingabe/Ausgabesystem 168 umfassen. Das Eingabe/Ausgabesystem 168 kann gegebenenfalls mit einer drahtlosen Schnittstelle 169 gekoppelt sein. Der SIMD-Coprozessor 161 kann Operationen vornehmen, die Instruktionen gemäß einer Ausführungsform umfassen. Ein Verarbeitungskern 170 kann zur Herstellung in einer oder mehreren Prozesstechnologien geeignet sein, und kann, indem er auf einem maschinenlesbaren Medium ausreichend detailliert repräsentiert wird, geeignet sein, die Herstellung des gesamten oder eines Teils des Datenverarbeitungssystems 160 zu vereinfachen, das den Verarbeitungskern 170 umfasst.
  • Für eine Ausführungsform umfasst der SIMD-Coprozessor 161 eine Ausführungseinheit 162 und einen Satz einer (von) Registerdatei(en) 164. Eine Ausführungsform des Hauptprozessors 165 umfasst einen Decoder 165, um Instruktionen des Instruktionssatzes 163, die Instruktionen gemäß einer Ausführungsform umfassen, zur Ausführung durch die Ausführungseinheit 162 zu erkennen. Für alternative Ausführungsformen umfasst der SIMD-Coprozessor 161 auch wenigstens einen Teil des Decoders 165B, um Instruktionen des Instruktionssatzes 163 zu decodieren. Der Verarbeitungskern 170 umfasst auch zusätzliche Schaltungen (nicht gezeigt), die für das Verständnis von Ausführungsformen der vorliegenden Erfindung nicht nötig sind.
  • Im Betrieb führt der Hauptprozessor 166 einen Strom von Datenverarbeitungsinstruktionen aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern, welche Interaktionen mit dem Cache-Speicher 167 und dem Eingabe/Ausgabe-System 168 umfassen. Innerhalb des Stroms von Datenverarbeitungsinstruktionen sind SIMD-Coprozessorinstruktionen eingebettet. Der Decoder 165 des Hauptprozessors 166 erkennt, dass diese SIMD-Coprozessorinstruktionen einen Typ aufweisen, der von einem angeschlossenen SIMD-Coprozessor 161 ausgeführt werden sollte. Demgemäß gibt der Hauptprozessor 166 diese SIMD-Coprozessorinstruktionen (oder Steuersignale, die SIMD-Coprozessorinstruktionen repräsentieren) auf dem Coprozessorbus 166 aus, von wo sie durch beliebige angeschlossene SIMD-Coprozessoren empfangen werden. In diesem Fall wird der SIMD-Coprozessor 161 beliebige empfangene SIMD-Coprozessorinstruktionen akzeptieren und ausführen, die für ihn bestimmt sind.
  • Daten können über eine drahtlose Schnittstelle 169 zur Verarbeitung durch die SIMD-Coprozessorinstruktionen empfangen werden. Für ein Beispiel kann eine Sprachkommunikation in der Form eines Digitalsignals empfangen werden, das von den SIMD-Coprozessorinstruktionen verarbeitet werden kann, um digitale Audio-Abtastwerte zu regenerieren, die für die Sprachkommunikationen repräsentativ sind. Für ein anderes Beispiel kann komprimiertes Audio und/oder Video in der Form eines digitalen Bitstroms empfangen werden, der von den SIMD-Coprozessorinstruktionen verarbeitet werden kann, um digitale Audio-Abtastwerte und/oder Bewegungsvideorahmen zu regenerieren. Für eine Ausführungsform des Verarbeitungskerns 170 sind der Hauptprozessor 166 und ein SIMD-Coprozessor 161 in einen einzelnen Verarbeitungskern 170 integriert, der eine Ausführungseinheit 162, einen Satz einer (von) Registerdatei(en) 164 und einen Decoder 165 umfasst, um Instruktionen des Instruktionssatzes 163 zu erkennen, die Instruktionen gemäß einer Ausführungsform umfassen.
  • 2 ist ein Blockbild der Mikroarchitektur für einen Prozessor 200, der Logikschaltungen umfasst, um Instruktionen gemäß einer Ausführungsform der vorliegenden Erfindung vorzunehmen. In einigen Ausführungsformen kann eine Instruktion gemäß einer Ausführungsform implementiert werden, um an Datenelementen mit Größen eines Bytes, Wortes, Doppelwortes, Quadwortes, etc., zu operieren, sowie Datentypen, wie ganzzahligen Einzel- und Doppelpräzisions- und Gleitkommadatentypen. In einer Ausführungsform ist das In-Order-Front-End 201 der Teil des Prozessors 200, der Instruktion abruft, die auszuführen sind, und diese darauf vorbereitet, später in der Prozess-Pipeline verwendet zu werden. Das Front-End 201 kann einige Einheiten umfassen. In einer Ausführungsform ruft der Vorabrufer 226 Instruktionen aus dem Speicher ab und führt sie einem Instruktionsdecoder 228 zu, der sie seinerseits decodiert oder interpretiert. Beispielsweise decodiert in einer Ausführungsform der Decoder eine empfangene Instruktion in eine oder mehrere Operationen, welche „Mikroinstruktionen” oder „Mikrooperationen” genannt werden (auch als Mikro-Ops oder Uops bezeichnet), und welche die Maschine ausführen kann. In anderen Ausführungsformen analysiert der Decoder die Instruktion syntaktisch in einen Operationscode und entsprechende Daten und Steuerfelder, die von der Mikroarchitektur verwendet werden, um Operationen gemäß einer Ausführungsform vorzunehmen. In einer Ausführungsform nimmt der Trace-Cache 230 decodierte Uops und assembliert sie in programmgeordnete Sequenzen oder Spuren in der Uop-Warteschlange 234 zur Ausführung. Wenn der Trace-Cache 230 auf eine komplexe Instruktion trifft, liefert der Mikrocode-ROM 232 die Uops, die zur Vollendung der Operation notwendig sind.
  • Einige Instruktionen werden in eine einzelne Mikro-Op konvertiert, wohingegen andere einige Mikro-Ops benötigen, um die volle Operation zu vollenden. Falls in einer Ausführungsform mehr als vier Mikro-Ops notwendig sind, um eine Instruktion zu vollenden, greift der Decoder 228 auf den Mikrocode-ROM 232 zu, um die Instruktion auszuführen. Für eine Ausführungsform kann eine Instruktion in eine geringe Anzahl von Mikro-Ops zur Verarbeitung am Instruktionsdecoder 228 decodiert werden. In einer anderen Ausführungsform kann eine Instruktion innerhalb des Mikrocode-ROM 232 gespeichert werden, sollte eine Anzahl von Mikro-Ops notwendig sein, um die Operation zu vollenden. Der Trace-Cache 230 bezieht sich auf eine Eintrittspunkt-programmierbare Logikanordnung (PLA), um einen korrekten Mikroinstruktionszeiger zum Lesen der Mikrocodesequenzen zu bestimmen, um eine oder mehrere Instruktionen gemäß einer Ausführungsform aus dem Mikrocode-ROM 232 zu vollenden. Nachdem der Mikrocode-ROM 232 die Sequenzierung von Mikro-Ops für eine Instruktion beendet hat, nimmt das Front-End 201 der Maschine den Abruf von Mikro-Ops aus dem Trace-Cache 230 wieder auf.
  • Die Out-of-Order-Ausführungsmaschine 203 ist, wo die Instruktionen zur Ausführung vorbereitet werden. Die Out-of-Order-Ausführungslogik hat eine Reihe von Puffer, um den Fluss von Instruktionen zur Optimierung der Leistung zu glätten und umzuordnen, während sie in der Pipeline abgearbeitet werden und zur Ausführung geplant werden. Die Zuordnungslogik ordnet die Maschinenpuffer und Ressourcen zu, die jede Uop benötigt, um ausgeführt zu werden. Die Registerumbenennungslogik benennt Logikregister auf Einträge in einer Registerdatei um. Der Zuordner ordnet auch einen Eintrag für jede Uop in einer der beiden Uop-Warteschlangen zu, eine für Speicheroperationen und eine für Nicht-Speicheroperationen, vor den Instruktions-Schedulern: Speicher-Scheduler, schneller Scheduler 202, langsamer/allgemeiner Gleitkomma-Scheduler 204 und einfacher Gleitkomma-Scheduler 206. Die Uop-Scheduler 202, 204, 206 bestimmen, wann eine Uop bereit zur Ausführung ist, auf der Basis der Bereitschaft ihrer abhängigen Eingaberegister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die Uops benötigen, um ihre Operation zu vollenden. Der schnelle Scheduler 202 einer Ausführungsform kann bei jeder Hälfte des Haupttaktzyklus planen, wohingen die anderen Scheduler nur einmal pro Hauptprozessor-Taktzyklus planen können. Die Scheduler entscheiden für die Abwicklungsports, um Upos zur Ausführung zu planen.
  • Registerdateien 208, 210 sitzen zwischen den Schedulern 202, 204, 206 und den Ausführungseinheiten 212, 214, 216, 218, 220, 222, 224 im Ausführungsblock 211. Es gibt eine getrennte Registerdatei 208, 210 für ganzzahlige bzw. Gleitkommaoperationen. Jede Registerdatei 208, 210 einer Ausführungsform umfasst auch ein Umgehungsnetz, das gerade vollendete Ergebnisse, die noch nicht die die Registerdatei geschrieben wurden, umgehen oder zu neuen abhängigen Uops weiterleiten kann. Die ganzzahlige Registerdatei 208 und die Gleitkommaregisterdatei 210 können auch Daten mit der anderen kommunizieren. Für eine Ausführungsform ist die ganzzahlige Registerdatei 208 in zwei getrennte Registerdateien getrennt, eine Registerdatei für die 32 Datenbits niedriger Ordnung und eine zweite Registerdatei für die 32 Datenbits hoher Ordnung. Die Gleitkommaregisterdatei 210 einer Ausführungsform hat 128 Bit breite Einträge, da die Gleitkommainstruktionen typischerweise Operanden mit einer Breite von 64 bis 128 Bits aufweisen.
  • Der Ausführungsblock 211 enthält die Ausführungseinheiten 212, 214, 216, 218, 220, 222, 224, wo die Instruktionen tatsächlich ausgeführt werden. Diese Sektion umfasst die Registerdateien 208, 210, welche die ganzzahligen und Gleitkomma-Datenoperandenwerte speichern, die die Mikroinstruktionen ausführen müssen. Der Prozessor 200 einer Ausführungsform besteht aus einer Anzahl von Ausführungseinheiten: der Adressengenerierungseinheit (AGU) 212, AGU 214, schnellen ALU 216, schnellen ALU 218, langsamen ALU 220, Gleitkomma-ALU 222, Gleitkommabewegungseinheit 224. Für eine Ausführungsform führen die Gleitkommaausführungsblöcke 222, 224 Gleitkomma-, MMX-, SIMD- und SSE- oder andere Operationen aus. Die Gleitkomma-ALU 222 einer Ausführungsform umfasst einen 64 Bit mal 64 Bit Gleitkommateiler, um Teilungs-, Quadratwurzel- und Rest-Mikrooperationen auszuführen. Für Ausführungsformen der vorliegenden Erfindung können Instruktionen, die einen Gleitkommawert involvieren, mit der Gleitkomma-Hardware handgehabt werden. In einer Ausführungsform gehen die ALU-Operationen zur den Hochgeschwindigkeits-ALU-Ausführungseinheiten 216, 218. Die schnellen ALUs 216, 218 einer Ausführungsform können schnelle Operationen mit einer effektiven Latenz eines halben Taktzyklus ausführen. Für eine Ausführungsform gehen die komplexesten ganzzahligen Operationen zur langsamen ALU 220, da die langsame ALU 220 ganzzahlige Ausführungs-Hardware für Operationen eines langen Latenztyps umfasst, wie einen Vervielfacher, Verschiebungen, eine Steuerzeichenlogik und Sprungverarbeitung. Memory-Lade/Speicheroperationen werden von den AGUs 212, 214 ausgeführt. Für eine Ausführungsform werden die ganzzahligen ALUs 216, 218, 220 im Kontext der Vornahme ganzzahliger Operationen an 64 Bit Datenoperanden beschrieben. In alternativen Ausführungsformen können die ALUs 216, 218, 220 implementiert werden, um verschiedenste Datenbits zu unterstützen, die 16, 32, 128, 256, etc., umfassen. Ähnlich können die Gleitkommaeinheiten 222, 224 implementiert werden, um einen Bereich von Operanden mit Bits unterschiedlicher Breite zu unterstützen. Für eine Ausführungsform können die Gleitkommaeinheiten 222, 224 an 128 Bit breiten gepackten Datenoperanden in Verbindung mit SIMD- und Multimedia-Instruktionen operieren.
  • In einer Ausführungsform können die Uops-Scheduler 202, 204, 206 abhängige Operationen abfertigen, bevor das übergeordnete Laden die Ausführung beendet hat. Da Uops spekulativ geplant und im Prozessor 200 ausgeführt werden, umfasst der Prozessor 200 auch Logik zur Behandlung von Speicherfehlschlägen. Falls ein Datenladen im Daten-Cache fehlschlägt, kann es abhängige Operationen im Flug in der Pipeline geben, die den Scheduler mit temporär inkorrekten Daten verlassen haben. Ein Wiederholungsmechanismus verfolgt Instruktionen, die inkorrekte Daten verwenden, und führt diese erneut aus. Nur die abhängigen Operationen müssen wiederholt werden, und den unabhängigen wird gestattet zu vollenden. Die Scheduler und der Wiederholungsmechanismus einer Ausführungsform eines Prozessors sind auch ausgebildet, Instruktionssequenzen für Textfolgen-Vergleichsoperationen abzufangen.
  • Der Ausdruck „Register” kann sich auf die On-board-Prozessorspeicherorte beziehen, die als Teil von Instruktionen zur Identifikation von Operanden verwendet werden. Mit anderen Worten können Register jene sein, die von der Außenseite des Prozessors (aus der Perspektive eines Programmierers) verwendbar sind. Die Register einer Ausführungsform sollten jedoch nicht in ihrer Bedeutung auf einen bestimmten Schaltungstyp beschränkt werden. Stattdessen kann ein Register einer Ausführungsform Daten speichern und liefern, und die hier beschriebenen Funktionen vornehmen. Die hier beschriebenen Register können durch Schaltungen innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl verschiedener Techniken implementiert werden, wie dedizierte physische Register, dynamisch zugeordnete physische Register unter Verwendung einer Registerumbenennung, Kombinationen dedizierter und dynamisch zugeordneter physischer Register, etc. In einer Ausführungsform speichern ganzzahlige Register 32 Bit-ganzzahlige Daten. Eine Registerdatei einer Ausführungsform enthält auch 8 Multimedia-SIMD-Register für gepackte Daten. Für die nachstehenden Diskussionen werden die Register als Datenregister verstanden, die ausgebildet sind, gepackte Daten zu halten, wie 64 Bit breite MMXTM-Register (die in einigen Fällen auch als „mm”-Register bezeichnet werden) in Mikroprozessoren, die mit der MMX-Technologie von Intel Corporation of Santa Clara, Kalifornien, ausgestattet sind. Diese MMX-Register, die sowohl in ganzzahliger als auch in Gleitkomma-Form verfügbar sind, können mit gepackten Datenelementen operieren, die SIMD- und SSE-Instruktionen begleiten. Ähnlich können auch 128 Bit breite XMM-Register in Bezug auf die SSE2-, SSE3- und SSE4- oder eine höhere Technologie (die generisch als „SSEx” bezeichnet wird) verwendet werden, um solche gepackten Datenoperanden zu halten. In einer Ausführungsform müssen die Register beim Speichern gepackter Daten und ganzzahliger Daten nicht zwischen den beiden Datentypen differenzieren. In einer Ausführungsform sind ganze Zahlen und Gleitkomma entweder in derselben Registerdatei oder verschiedenen Registerdateien enthalten. Ferner können in einer Ausführungsform Gleitkomma- und ganzzahlige Daten in verschiedenen Registern oder denselben Registern gespeichert werden.
  • In den Beispielen der folgenden Figuren wird eine Reihe von Operanden beschrieben. 3A veranschaulicht verschiedene gepackte Datentyprepräsentationen in Multimedia-Registern gemäß einer Ausführungsform der vorliegenden Erfindung. 3A veranschaulicht Datentypen für ein gepacktes Byte 310, ein gepacktes Wort 320 und ein gepacktes Doppelwort (dword) 330 für 128 Bits breite Operanden. Das gepackte Byteformat 310 dieses Beispiels ist 128 Bits lang und enthält sechzehn gepackte Bytedatenelemente. Ein Byte ist hier als 8 Datenbits definiert. Informationen für jedes Bytedatenelement werden in Bit 7 bis Bit 0 für das Byte 0, Bit 15 bis Bit 8 für das Byte 1, Bit 23 bis Bit 16 für das Byte 2 und schließlich Bit 120 bis Bit 127 für das Byte 15 gespeichert. So werden alle verfügbaren Bits in dem Register verwendet. Diese Speicheranordnung erhöht die Speichereffizienz des Prozessors. Auch kann mit sechzehn Datenelementen, auf die zugegriffen wird, eine Operation nun an sechzehn Datenelementen parallel vorgenommen werden.
  • Allgemein ist ein Datenelement ein einzelnes Datenstück, das in einem einzelnen Register oder Speicherort mit anderen Datenelementen derselben Länge gespeichert wird. In gepackten Datensequenzen in Bezug auf die SSEx-Technologie ist die Anzahl von in einem XMM-Register gespeicherten Datenelementen 128 Bits, geteilt durch die Länge in Bits eines einzelnen Datenelements. Ähnlich ist in gepackten Datensequenzen in Bezug auf die MMX- und SSE-Technologie die Anzahl von in einem MMX-Register gespeicherten Datenelementen 64 Bits, geteilt durch die Länge in Bits eines einzelnen Datenelements. Obwohl die in 3A veranschaulichten Datenteypen 128 Bits lang sind, können Ausführungsformen der vorliegenden Erfindung auch mit 64 Bit-breiten oder anders bemessenen Operanden operieren. Das gepackte Wortformat 320 dieses Beispiels ist 128 Bits lang und enthält acht gepackte Wortdatenelemente. Jedes gepackte Wort enthält sechzehn Bits an Informationen. Das gepackte Doppelwortformat 330 von 3A ist 128 Bits lang und enthält vier gepackte Doppelwort-Datenelemente. Jedes gepackte Doppelwort-Datenelement enthält zweiunddreißig Bits an Informationen. Ein gepacktes Quadwort ist 128 Bits lang und enthält zwei gepackte Quadwort-Datenelemente.
  • 3B veranschaulicht alternative In-Register-Datenspeicherformate. Jeder gepackte Datenwert kann mehr als ein unabhängiges Datenelement umfassen. Drei gepackte Datenformate sind veranschaulicht; gepackte Hälfte 341, gepacktes Einzel 342 und gepacktes Doppel 343. Eine Ausführungsform der gepackten Hälfte 341, des gepackten Einzels 342 und des gepackten Doppels 343 enthält Festkomma-Datenelemente. Für eine alternative Ausführungsform kann eines von gepackter Hälfte 341, gepacktem Einzel 342 und gepacktem Doppel 343 Gleitkomma-Datenelemente enthalten. Eine alternative Ausführungsform der gepackten Hälfte 341 ist einhundertachtundzwanzig Bits lang und enthält acht 16-Bit-Datenelemente. Eine alternative Ausführungsform des gepackten Einzels 342 ist einhundertachtundzwanzig Bits lang und enthält vier 32-Bit-Datenelemente. Eine Ausführungsform des gepackten Doppels 343 ist einhundertachtundzwanzig Bits lang und enthält zwei 64-Bit-Datenelemente. Es ist klar, dass solche gepackten Datenformate weiter auf andere Registerlängen, beispielsweise auf 96 Bits, 160 Bits, 192 Bits, 224 Bits, 256 Bits oder mehr, erweitert werden können.
  • 3C veranschaulicht verschiedene vorzeichenbehaftete und nicht vorzeichenbehaftete Repräsentationen von gepackten Datentypen in Multimedia-Register gemäß einer Ausführungsform der vorliegenden Erfindung. Die nicht vorzeichenbehaftete gepackte Byte-Repräsentation 344 veranschaulicht die Speicherung eines nicht vorzeichenbehafteten gepackten Bytes in einem SIMD-Register. Informationen für jedes Byte-Datenelement werden in Bit sieben bis Bit Null für das Byte Null, Bit fünfzehn bis Bit acht für das Byte eins, Bit dreiundzwanzig bis Bit sechzehn für das Byte zwei, etc., und schließlich Bit einhundertzwanzig bis Bit einhundertsiebenundzwanzig für das Byte fünfzehn gespeichert. Somit werden alle verfügbaren Bits in dem Register verwendet. Diese Speicheranordnung kann die Speichereffizienz des Prozessors erhöhen. Auch kann bei sechzehn Datenelementen, auf die zugegriffen wird, eine Operation nun an sechzehn Datenelementen in einer parallelen Weise durchgeführt werden. Die vorzeichenbehaftete gepackte Byte-Repräsentation 345 veranschaulicht die Speicherung eines vorzeichenbehafteten gepackten Bytes. Es ist zu beachten, dass das achte Bit jedes Byte-Datenelements der Vorzeichenindikator ist. Die nicht vorzeichenbehaftete gepackte Wortrepräsentation 346 veranschaulicht, wie Wort sieben bis Wort null in einem SIMD-Register gespeichert werden. Die vorzeichenbehaftete gepackte Wortrepräsentation 347 ist der nicht vorzeichenbehafteten gepackten Wort-In-Register-Repräsentation 346 ähnlich. Es ist zu beachten, dass das sechzehnte Bit jedes Wortdatenelements der Vorzeichenindikator ist. Die nicht vorzeichenbehaftete gepackte Doppelwortrepräsentation 348 zeigt, wie Doppelwort-Datenelemente gespeichert werden. Die vorzeichenbehaftete gepackte Doppelwortrepräsentation 349 ist der nicht vorzeichenbehafteten gepackten Doppelwort-In-Register-Repräsentation 348 ähnlich. Es ist zu beachten, dass das notwendige Vorzeichenbit das zweiunddreißigste Bit jedes Doppelwort-Datenelements ist.
  • 3D ist eine Darstellung einer Ausführungsform eines Operation Encoding-(Opcode)-Formats 360 mit zweiunddreißig oder mehr Bits und Register/Speicher-Operandenadressierungsmodi, die einem Typ eines Opcode-Formats entsprechen, welches in „IA-32 Intel Architecture Software Developer's Manual Volume 2: Instruction Set Reference” beschrieben ist, das von Intel Corporation, Santa Clara, Californien, im World-Wide-Web (www) bei intel.com/design/litcentr erhältlich ist. Bei einer Ausführungsform kann ein Instruktion durch ein oder mehrere der Felder 361 und 362 codiert sein. Bis zu zwei Operandenorte pro Instruktion können identifiziert werden, einschließlich bis zu zwei Quelloperandenkennungen 364 und 365. Für eine Ausführungsform ist die Zieloperandenkennung 366 dieselbe wie die Quelloperandenkennung 364, während sie sich in anderen Ausführungsformen unterscheiden. Für eine alternative Ausführungsform ist die Zieloperandenkennung 366 dieselbe wie die Quelloperandenkennung 365, während sie in anderen Ausführungsformen unterschiedlich sind. In einer Ausführungsform wird einer der Quelloperanden, der durch die Quelloperandenkennungen 364 und 365 identifiziert ist, durch die Ergebnisse der Textfolgen-Vergleichsoperationen überschrieben, während in anderen Ausführungsformen die Kennung 364 einem Quellregisterelement entspricht und die Kennung 365 einem Zielregisterelement entspricht. Für eine Ausführungsform können die Operandenkennungen 364 und 365 verwendet werden, um 32-Bit- oder 64-Bit-Quell- und -Zieloperanden zu identifizieren.
  • 3E ist eine Darstellung eines weiteren alternativen Operation Encoding-(Opcode-)Formats 370 mit vierzig oder mehr Bits. Das Opcode-Format 370 entspricht dem Opcode-Format 360 und umfasst ein optionales Präfixbyte 378. Eine Instruktion gemäß einer Ausführungsform kann durch ein oder mehrere Felder 378, 371 und 372 kodiert werden. Bis zu zwei Operandenorte pro Instruktion können durch Quelloperandenidentifikatoren 374 und 375 und durch das Präfixbyte 378 identifiziert werden. Für eine Ausführungsform kann das Präfixbyte 378 verwendet werden, um 32-Bit- oder 64-Bit-Quell- und -Zieloperanden zu identifizieren. Für eine Ausführungsform ist der Zieloperandenidentifikator 376 gleich wie der Quelloperandenidentifikator 374, während sie sich in anderen Ausführungsformen unterscheiden. Für eine alternative Ausführungsform ist der Zieloperandenidentifikator 376 gleich wie der Quelloperandenidentifikator 375, während sie sich in anderen Ausführungsformen unterscheiden. In einer Ausführungsform operiert eine Instruktion an einem oder mehreren der Operanden, die durch die Operandenidentifikatoren 374 und 375 identifiziert werden, und ein oder mehrere Operanden, die durch die Operandenidentifikatoren 374 und 375 identifiziert werden, wird oder werden durch die Ergebnisse der Instruktion überschrieben, während in anderen Ausführungsformen die durch die Identifikatoren 374 und 375 identifizierten Operanden in ein anderes Datenelement in einem anderen Register geschrieben werden. Opcode-Formate 360 und 370 ermöglichen eine Register-zu-Register-, Speicher-zu-Register-, Register-durch-Speicher-, Register-durch-Register-, Register-durch-Sofortige-, Register-zu-Speicher-Adressierung, die zum Teil durch MOD-Felder 363 und 373 und durch optionale Scale-Index-Basis- und Verschiebungsbytes spezifiziert werden.
  • Mit Bezugnahme als Nächstes auf 3F können in einigen alternativen Ausführungsformen 64-Bit-Single Instruktion Multiple Data-(SIMD-)Arithmetikoperationen durch eine Coprozessor-Datenverarbeitungs-(Coprocessor Data Processing, CDP)-Instruktion durchgeführt werden. Das Operation Encoding-(Opcode-)Format 380 stellt eine solche CDP-Instruktion mit CDP-Opcode-Feldern 382 und 389 dar. Für den Typ der CDP-Instruktion können für alternative Ausführungsformen Operationen durch eines oder mehrere der Felder 383, 384, 387 und 388 codiert werden. Bis zu drei Operandenorte pro Instruktion können identifiziert werden, einschließlich bis zu zwei Quelloperandenidentifikatoren 385 und 390 und eines Zieloperandenidentifikators 386. Eine Ausführungsform des Coprozessors kann an 8-, 16-, 32- und 64-Bit-Werten operieren. Für eine Ausführungsform wird eine Instruktion an ganzzahligen Datenelementen durchgeführt. In einigen Ausführungsformen kann eine Instruktion bedingt unter Verwendung eines Bedingungsfelds 381 ausgeführt werden. Für einige Ausführungsformen können Quelldatengrößen durch ein Feld 383 codiert werden. Für einige Ausführungsformen kann eine Null (Zero (Z))-, Negative (N)-, Übertragen (Carry(C))- und Überlauf(Overflow(V))-Detektion an SIMD-Feldern durchgeführt werden. Für einige Instruktionen kann der Sättigungstyp durch ein Feld 384 codiert werden.
  • 4A ist ein Blockbild, das eine In-Order-Pipeline und eine Registerumbenennungsstufe, Out-of-Order-Ausgabe-/Ausführungs-Pipeline gemäß wenigstens einer Ausführungsform der Erfindung darstellt. 4B ist ein Blockbild, das einen In-Order-Architekturkern und eine Registerumbenennungslogik, Out-of-Order-Ausgabe-/Ausführungslogik zur Aufnahme in einem Prozessor gemäß wenigstens einer Ausführungsform der Erfindung veranschaulicht. Die Kästchen mit durchgehenden Linien in 4A veranschaulichen die In-Order-Pipeline, während die Kästchen mit gestrichelten Linien die Registerumbenennungs-, Out-of-Order-Ausgabe-/Ausführungs-Pipeline veranschaulichen. In ähnlicher Weise veranschaulichen die Kästchen mit durchgehenden Linien in 4B die In-Order-Architekturlogik, während die Kästchen mit gestrichelten Linien die Registerumbenennungslogik und Out-of-Order-Ausgabe-/Ausführungslogik veranschaulichen.
  • In 4A enthält eine Prozessor-Pipeline 400 eine Abrufstufe 402, eine Längendecodierstufe 404, eine Decodierstufe 406 und eine Zuordnungsstufe 408, eine Umbenennungsstufe 410, eine Scheduling-(auch bekannt als Sende- oder Ausgabe-)Stufe 412, eine Registerlese/Speicherlesestufe 414, eine Ausführungsstufe 416, eine Rückschreib-/Speicherschreibstufe 418, eine Ausnahmebehandlungsstufe 422 und eine Festlegungsstufe 424.
  • In 4B kennzeichnen Pfeile eine Kopplung zwischen zwei oder mehr Einheiten und die Richtung des Pfeils zeigt eine Richtung des Datenflusses zwischen diesen Einheiten an. 4B zeigt den Prozessorkern 490, der eine Front-End-Einheit 430 umfasst, die mit einer Ausführungsmaschineneinheit 450 gekoppelt ist, und beide sind mit einer Speichereinheit 470 gekoppelt.
  • Der Kern 490 kann ein Reduced Instruction Set Computing-(RISC-)Kern, ein Complex Instruction Set Computing-(CISC-)Kern, ein Very Long Instruction Word-(VLIW-)Kern oder ein hybrider oder alternativer Kerntyp sein. Als noch weitere Option kann der Kern 490 ein Spezialkern, wie beispielsweise ein Netz- oder Kommunikationskern, eine Kompressionsmaschine, ein Grafikkern oder dgl. sein.
  • Die Front-End-Einheit 430 umfasst eine Verzweigungsvorhersageeinheit 432, welche mit einer Instruktions-Cache-Einheit 434 gekoppelt ist, die mit einem Instruktionsübersetzungspuffer (Instruction Translation Lookaside Buffer, TLB) 436 gekoppelt ist, der mit einer Instruktionsabrufeinheit 438 gekoppelt ist, die mit einer Decodiereinheit 440 gekoppelt ist. Die Decodiereinheit oder der Decodierer kann Instruktionen decodieren und als Ausgabe eine oder mehrere Mikrooperationen, Mikrocode-Eintrittspunkte, Mikroinstruktionen, andere Instruktionen oder andere Steuersignale generieren, die aus den ursprünglichen Instruktionen decodiert werden oder diese auf andere Weise reflektieren oder davon abgeleitet sind. Der Decodierer kann unter Verwendung zahlreicher unterschiedlicher Mechanismen implementiert werden. Beispiele geeigneter Mechanismen umfassen, sind jedoch nicht beschränkt auf Nachschlagetabellen, Hardware-Implementierungen, programmierbare Logikanordnungen (PLAs), Mikrocode-Nurlesespeicher (ROMs) etc. Die Instruktions-Cache-Einheit 434 ist ferner mit einer Level 2(L2)-Cache-Einheit 476 in der Speichereinheit 470 gekoppelt. Die Decodiereinheit 440 ist mit einer Umbenennungs/Zuordnereinheit 452 in der Ausführungsmaschineneinheit 450 gekoppelt.
  • Die Ausführungsmaschineneinheit 450 umfasst die Umbenennungs-/Zuordnereinheit 452, die mit einer Rückordnungseinheit 454 gekoppelt ist, und einen Satz von einer oder mehreren Scheduler-Einheit(en) 456. Die Scheduler-Einheit(en) 456 repräsentiert/repräsentieren eine beliebige Anzahl verschiedener Scheduler, einschließlich Reservierungsstationen, zentrales Instruktionsfenster etc. Die Scheduler-Einheit(en) 456 ist/sind mit den physischen Registerdatei(en)einheit(en) 458 gekoppelt. Jede der physischen Registerdateieinheiten 458 repräsentiert ein oder mehrere physische Registerdateien, wobei unterschiedliche davon einen oder mehrerer unterschiedliche Datentypen speichern, wie zum Beispiel skalare Ganzzahl, skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma, etc., Status (z. B. einen Instruktionszeiger, der die Adresse des nächsten auszuführenden Instruktions ist), etc. Die physische(n) Registerdatei(en)einheit(en) 458 wird/werden von der Rückordnungsseinheit 154 überlappt, um verschiedene Wege zu veranschaulichen, in denen die Registerumbenennung und Out-of-Order-Ausführung implementiert werden können (z. B. unter Verwendung eines Umordnungspuffers bzw. von Umordnungspuffern und einer Rückordnungsregisterdatei bzw. von Rückordnungsregisterdateien, unter Verwendung einer zukünftigen Datei bzw. von zukünftigen Dateien, eines Verlaufspuffers bzw. von Verlaufspuffern und einer Rückordnungsregisterdatei bzw. von Rückordnungsregisterdateien; unter Verwendung einer Registerabbildung bzw. von Registerabbildungen und eines Pools von Registern; etc.). Allgemein sind die Architekturregister von außerhalb des Prozessors oder aus der Sicht eines Programmierers sichtbar. Die Register sind nicht auf irgendwelche bekannten bestimmten Schaltungstypen beschränkt. Zahlreiche unterschiedliche Typen von Registern sind geeignet, solange sie in der Lage sind, Daten, wie hier beschrieben, zu speichern und bereitzustellen. Beispiele geeigneter Register umfassen, sind jedoch nicht beschränkt auf dedizierte physische Register, dynamisch zugeordnete physische Register unter Verwendung einer Registerumbenennung, Kombinationen dedizierter und dynamisch zugeordneter physischer Register, etc. Die Rückordnungseinheit 454 und die physische(n) Registerdateieinheit(en) 458 sind mit dem Ausführungscluster bzw. den Ausführungsclustern 460 gekoppelt. Der Ausführungscluster bzw. die Ausführungscluster 460 enthält/enthalten einen Satz einer oder mehrerer Ausführungseinheiten 462 und einen Satz einer oder mehrerer Speicherzugriffseinheiten 464. Die Ausführungseinheiten 462 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an zahlreichen Typen von Daten (z. B. skalares Gleitkomma, gepackte Ganzzahl, gepackte Gleitkommazahl, Vektorganzzahl, Vektorgleitkomma) vornehmen. Während einige Ausführungsformen eine Anzahl von Ausführungseinheiten umfassen können, die speziellen Funktionen oder Sätzen von Funktionen gewidmet sind, können andere Ausführungsformen eine Ausführungseinheit oder mehrere Ausführungseinheiten umfassen, die alle Funktionen ausführen. Die Scheduler-Einheiten) 456, physischen Registerdatei(en)einheit(en) 458 und Ausführungscluster 460 sind so gezeigt, dass sie möglicherweise mehrfach vorhanden sind, weil bestimmte Ausführungsformen separate Pipelines für bestimmte Typen von Daten/Operationen erzeugen (z. B. eine skalare Ganzzahl-Pipeline, eine skalare Gleitkomma/gepackte Ganzzahl/gepackte Gleitkommavektor/Vektorganzzahl/Vektorgleitkomma-Pipeline und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre eigene Scheduler-Einheit, physische Registerdateieinheit(en) und/oder Ausführungscluster aufweisen – und im Fall einer separaten Speicherzugriffs-Pipeline werden bestimmte Ausführungsformen implementiert, bei denen nur der Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 464 aufweist. Es ist auch klar, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines Out-of-Order-Ausgabe/Ausführungs- und der Rest In-Order-Pipelines) ist bzw. sind.
  • Der Satz von Speicherzugriffseinheiten 464 ist mit der Speichereinheit 470 gekoppelt, welche eine Daten-TLB-Einheit 472 umfasst, die mit einer Daten-Cache-Einheit 474 gekoppelt ist, welche mit einer Level 2(L2)-Cache-Einheit 476 gekoppelt ist. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 464 eine Ladeeinheit, eine Speicheradresseneinheit und eine Speicherdateneinheit umfassen, von denen jede mit der Daten-TLB-Einheit 472 in der Speichereinheit 470 gekoppelt ist. Die L2-Cache-Einheit 476 ist mit einer oder mehreren anderen Cache-Ebenen und schließlich mit einem Hauptspeicher gekoppelt.
  • Beispielsweise kann die beispielhafte Registerumbenennung-, Out-of-Order-Ausgabe/Ausführungs-Kernarchitektur die Pipeline 400 wie folgt implementieren: 1) der Instruktionsabrufer 438 nimmt die Abruf- und Längendecodierstufen 402 und 404 vor; 2) die Decodiereinheit nimmt die Decodierstufe 406 vor; 3) die Umbenennungs/Zuordnungseinheit 452 nimmt die Zuordnungsstufe 408 und Umbenennungsstufe 410 vor; 4) die Scheduler-Einheit(en) 456 führt/führen die Schedule-Stufe 412 durch; 5) die physische Registerdateieinheit(en) 458 und die Speichereinheit 470 nehmen die Registerlese/Speicherlesestufe 414 vor; der Ausführungscluster 460 nimmt die Ausführungsstufe 416 vor; 6) die Speichereinheit 470 und die physische(n) Registerdatei(en)einheit(en) 458 nehmen die Rückschreib/Speicherschreibstufe 418 vor; 7) verschiedene Einheiten können in der Ausnahmebehandlungsstufe 422 involviert sein; und 8) die Rückordnungseinheit 454 und die physische(n) Registerdateieinheit(en) 458 nehmen die Festlegungsstufe 424 vor.
  • Der Kern 490 kann einen oder mehrere Instruktionssätze (z. B. den x86-Instruktionssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden)); den MIPS-Instruktionssatz von MIPS Technologies, Sunnyvale, CA; den ARM-Instruktionssatz (mit zusätzlichen Erweiterungen, wie NEON) von ARM Holdings, Sunnyvale, CA) unterstützen.
  • Es ist klar, dass der Kern ein Multithreading (Ausführung von zwei oder mehreren parallelen Sätzen von Operationen oder Teilprozessen) unterstützen kann und dieses in einer Vielzahl von Arten, die Time Sliced-Multithreading, simultanes Multithreading (wo ein einziger physischer Kern einen logischen Kern für jeden der Teilprozesse bereitstellt, wobei der physische Kern simultan ein Multithreading ausführt), oder eine Kombination davon (z. B. Time Sliced-Abrufen und Decodieren und simultanes Multithreading danach, wie in der Intel®-Hyperthreading-Technologie) umfassen.
  • Obwohl die Registerumbenennung im Kontext der Out-of-Order-Ausführung beschrieben wird, ist es klar, dass die Registerumbenennung in einer In-Order-Architektur verwendet werden kann. Obwohl die veranschaulichte Ausführungsform des Prozessors auch eine separate Instruktions- und Daten-Cache-Einheit(en) 434/474 und eine gemeinsam genutzte L2-Cache-Einheit 476 umfasst, können alternative Ausführungsformen einen einzigen internen Cache sowohl für Instruktionen als auch Daten, wie beispielsweise einen internen Level 1(L1)-Cache oder mehrere Ebenen eines internen Caches, aufweisen. In einigen Ausführungsformen kann das System eine Kombination eines internen Caches und eines externem Caches, der sich außerhalb des Kerns und/oder des Prozessors befindet, umfassen. Alternativ dazu können sich alle Caches außerhalb des Kerns und/oder des Prozessors befinden.
  • 5 ist ein Blockbild eines Einzelkernprozessors und eines Mehrkernprozessors 500 mit integrierter Speichersteuereinheit und Grafik gemäß Ausführungsformen der Erfindung. Die Kästchen mit durchgehenden Linien in 5 veranschaulichen einen Prozessor 500 mit einem einzelnen Kern 502A, einem Systemagenten 510, einem Satz von einer oder mehreren Bussteuereinheiten 516, während die Hinzufügung der Kästchen mit gestrichelten Linien einen alternativen Prozessor 500 mit mehreren Kernen 502A–N, einem Satz von einer oder mehreren integrierten Speichersteuereinheit(en) 514 in der Systemagenteneinheit 510 und einer integrierten Grafiklogik 508 veranschaulicht.
  • Die Speicherhierarchie enthält eine oder mehrere Ebenen von Cache innerhalb der Kerne, einen Satz von einer oder mehreren gemeinsam genutzte Cache-Einheiten 506 und einen externen Speicher (nicht gezeigt), der mit dem Satz integrierter Speichersteuereinheiten 514 gekoppelt ist. Der Satz gemeinsam genutzter Cache-Einheiten 506 kann einen oder mehrere Mid-Level-Caches, wie zum Beispiel Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Ebenen von Cache, einen Last-Level-Cache (LLC) und/oder Kombinationen davon, umfassen. Während in einer Ausführungsform eine ringbasierte Zwischenverbindungseinheit 512 die integrierte Grafiklogik 508, den Satz gemeinsam genutzter Cache-Einheiten 506 und die Systemagenteneinheit 510 miteinander verbindet, können alternative Ausführungsformen eine beliebige Anzahl wohlbekannter Techniken zur Verbindung derartiger Einheiten mtieinander verwenden.
  • Bei einigen Ausführungsformen ist oder sind ein oder mehrere der Kerne 502A–N Multithreading-fähig.
  • Der Systemagent 510 umfasst solche Komponenten koordinierende und betreibende Kerne 502A–N. Die Systemagenteneinheit 510 kann beispielsweise eine Leistungssteuereinheit (Power Control Unit, PCU) und eine Anzeigeeinheit enthalten. Die PCU kann Logik und Komponenten, die zum Regeln des Leistungszustands der Kerne 502A–N und der integrierten Grafiklogik 508 notwendig sind, sein oder umfassen. Die Anzeigeeinheit dient zur Ansteuerung einer oder mehrerer extern verbundener Anzeigen.
  • Die Kerne 502A–N können hinsichtlich Architektur und/oder Instruktionssatz homogen oder heterogen sein. Zum Beispiel können einige der Kerne 502A–N in-order sein, während andere out-of-order sind. Als weiteres Beispiel können zwei oder mehrere der Kerne 502A–N in der Lage sein, denselben Instruktionssatz auszuführen, während andere in der Lage sein können, nur einen Subsatz des Instruktionssatzes oder einen anderen Instruktionssatz auszuführen.
  • Der Prozessor kann ein Universalprozessor wie zum Beispiel ein CoreTM i3-, i5-, i7-, 2 Duo- und Quad-, XeonTM-, ItaniumTM-, XScaleTM- oder StrongARMTM-Prozessor sein, die von Intel Corporation, Santa Clara, Kalifornien, erhältlich sind. Alternativ dazu kann der Prozessor von einer anderen Firma wie zum Beispiel ARM Holdings, Ltd., MIPS, etc. stammen. Der Prozessor kann ein Spezialprozessor wie zum Beispiel ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, Coprozessor, eingebetteter Prozessor oder dgl. sein. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 500 kann ein Teil von einem oder mehreren Substraten unter Verwendung einer beliebigen Anzahl von Verfahrenstechniken, wie zum Beispiel BiCMOS, CMOS oder NMOS, sein und/oder darauf implementiert sein.
  • Die 6 bis 8 zeigen beispielhafte Systeme, die geeignet sind, den Prozessor 500 zu umfassen, während 9 ein beispielhaftes System-on-a-Chip (SoC) zeigt, das einen oder mehrere der Kerne 502 umfassen kann. Andere Systemausbildungen und -auslegungen, die für Laptops, Desktops, Hand-PCs, Personal Digital Assistants, Engineering-Workstations, Server, Netzvorrichtungen, Netzknoten, Schalter, eingebettete Prozessoren, digitale Signalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-top-Boxen, Mikrosteuereinheiten, Mobiltelefone, tragbare Medienabspielgeräte, Hand-Vorrichtungen und verschiedene andere elektronische Vorrichtungen bekannt sind, sind auch geeignet. Im Allgemeinen ist eine große Vielzahl von Systemen oder elektronischen Vorrichtungen, die in der Lage sind, einen Prozessor und/oder andere Ausführungslogik, wie hier offenbart, aufzunehmen, allgemein geeignet.
  • Unter Bezugnahme auf 6 wird nun ein Blockbild eines Systems 600 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 600 kann einen oder mehrere Prozessoren 610, 615 enthalten, die mit einem Graphics Memory Controller Hub (GMCH) 620 gekoppelt sind. Die Art zusätzlicher Prozessoren 615 ist in 6 mit gestrichelten Linien gekennzeichnet.
  • Jeder Prozessor 610, 615 kann irgendeine Version des Prozessors 500 sein. Es ist jedoch zu beachten, dass es unwahrscheinlich ist, dass integrierte Grafiklogik und integrierte Speichersteuereinheiten in den Prozessoren 610, 615 vorhanden wären. 6 veranschaulicht, dass der GMCH 620 mit einem Speicher 640 gekoppelt sein kann, der zum Beispiel ein dynamischer Speicher mit wahlfreiem Zugriff (DRAM) sein kann. Der DRAM kann für wenigstens eine Ausführungsform mit einem nicht flüchtigen Cache assoziiert sein.
  • Der GMCH 620 kann ein Chipsatz oder ein Teil eines Chipsatzes sein. Der GMCH 620 kann mit dem Prozessor/den Prozessoren 610, 615 kommunizieren und die Interaktion zwischen den Prozessoren 610, 615 und dem Speicher 640 steuern. Der GMCH 620 kann auch als beschleunigte Busschnittstelle zwischen den Prozessoren 610, 615 und anderen Elementen des Systems 600 wirken. Für wenigstens eine Ausführungsform kommuniziert der GMCH 620 mit dem Prozessor/den Prozessoren 610, 615 über einen Multi-Drop-Bus, wie zum Beispiel einen Frontside Bus (FSB) 695.
  • Ferner ist der GMCH 620 mit einer Anzeige 645 (wie zum Beispiel einem Flachbildschirm) gekoppelt. Der GMCH 620 kann einen integrierten Grafikbeschleuniger umfassen. Der GMCH 620 ist ferner mit einem Eingabe/Ausgabe-(I/O-)Steuereinheitknoten (ICH) 650 gekoppelt, der verwendet werden kann, um verschiedene Peripherievorrichtungen mit dem System 600 zu koppeln. Zum Beispiel ist in der Ausführungsform von 6 eine externe Grafikvorrichtung 660 gezeigt, welche eine diskrete Grafikvorrichtung, die mit dem ICH 650 gekoppelt ist, zusammen mit einer anderen Peripherievorrichtung 670 sein kann.
  • Alternativ dazu können zusätzliche oder andere Prozessoren auch in dem System 600 vorhanden sein. Zum Beispiel kann/können ein zusätzlicher Prozessor/zusätzliche Prozessoren 615 einen zusätzlichen Prozessor/zusätzliche Prozessoren, der/die derselbe/dieselben wie Prozessor 610 ist/sind, einen zusätzlichen Prozessor/zusätzliche Prozessoren, der/die heterogen oder asymmetrisch zum Prozessor 610 ist/sind, Beschleuniger (wie z. B. Grafikbeschleuniger oder digitale Signalverarbeitungs-(DSP-)Einheiten), feldprogrammierbare Gateanordnungen oder jeden anderen Prozessor umfassen. Es kann eine Vielzahl von Unterschieden zwischen den physischen Ressourcen 610, 615 hinsichtlich eines Spektrums von Metriken von Leistung, einschließlich Architektur-, Mikroarchitektur-, Wärme-, Stromverbrauchscharakteristiken und dgl., geben. Diese Unterschiede können sich selbst als Asymmetrie und Heterogenität unter den Prozessoren 610, 615 manifestieren. Für wenigstens eine Ausführungsform können sich die verschiedenen Prozessoren 610, 615 in demselben Chipgehäuse befinden.
  • Mit nunmehriger Bezugnahme auf 7 ist ein Blockbild eines zweiten Systems 700 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 7 gezeigt ist, ist das Multiprozessorsystem 700 ein Punkt-zu-Punkt-Zwischenverbindungssystem und umfasst einen ersten Prozessor 770 und einen zweiten Prozessor 780, die über eine Punkt-zu-Punkt-Verbindung 750 gekoppelt sind. Jeder der Prozessoren 770 und 780 kann irgendeine Version des Prozessors 500 wie ein oder mehrere der Prozessoren 610, 615 sein.
  • Obwohl nur zwei Prozessoren 770, 780 gezeigt sind, ist es klar, dass der Schutzbereich der vorliegenden Offenbarung nicht so beschränkt ist. In anderen Ausführungsformen kann/können ein oder mehrere zusätzliche(r) Prozessor(en) in einem gegebenen Prozessor vorhanden sein.
  • Die Prozessoren 770 und 780 sind so gezeigt, dass sie integrierte Speichersteuereinheiten 772 bzw. 782 umfassen. Der Prozessor 770 umfasst auch als Teil seiner Bussteuereinheiten Punkt-zu-Punkt-(P-P-)Schnittstellen 776 und 778; in ähnlicher Weise umfasst der zweite Prozessor 780 P-P-Schnittstellen 786 und 788. Die Prozessoren 770, 780 können Informationen über eine Punkt-zu-Punkt-(P-P-)Schnittstelle 750 unter Verwendung von P-P-Schnittstellenschaltungen 778, 788 austauschen. Wie in 7 gezeigt ist, koppeln die IMCs 772 und 782 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 732 und einem Speicher 734, die Teile des Hauptspeichers sein können, der an den jeweiligen Prozessoren lokal angebracht ist.
  • Die Prozessoren 770, 780 können jeweils Informationen mit einem Chipsatz 790 über individuelle P-P-Schnittstellen 752, 754 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 776, 794, 786, 798 austauschen. Der Chipsatz 790 kann auch Information mit einer Hochleistungsgrafikschaltung 738 über eine Hochleistungsgrafikschnittstelle 739 austauschen.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann in jedem Prozessor oder außerhalb beider Prozessoren enthalten sein, aber mit den Prozessoren über eine P-P-Zwischenverbindung verbunden sein, so dass lokale Cache-Informationen von entweder einem oder beiden Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Energiesparmodus gebracht wird.
  • Der Chipsatz 790 kann mit einem ersten Bus 716 über eine Schnittstelle 796 gekoppelt sein. In einer Ausführungsform kann der erste Bus 716 ein Peripheral Component Interconnect-(PCI-)Bus oder ein Bus, wie zum Beispiel ein PCI Express-Bus oder ein anderer I/O-Interconnect-Bus der dritten Generation sein, obwohl der Schutzbereich der vorliegenden Offenbarung nicht darauf beschränkt ist.
  • Wie in 7 gezeigt ist, können verschiedene I/O-Einrichtungen 714 mit dem ersten Bus 716 gemeinsam mit einer Busbrücke 718 gekoppelt sein, die den ersten Bus 716 mit einem zweiten Bus 720 koppelt. In einer Ausführungsform kann der zweite Bus 720 ein Low Pin Count-(LPC-)Bus sein. Verschiedene Vorrichtungen, einschließlich zum Beispiel einer Tastatur und/oder Maus 722, Kommunikationsvorrichtungen 727 und einer Speichereinheit 728, wie zum Beispiel ein Festplattenlaufwerk oder eine andere Massenspeichervorrichtung, die Instruktionen/Code und Daten 730 umfassen kann, können in einer Ausführungsform mit dem zweiten Bus 720 gekoppelt sein. Ferner kann eine Audio-I/O 724 mit dem zweiten Bus 720 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Zum Beispiel kann anstelle der Punkt-zu-Punkt-Architektur von 7 ein System einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
  • Mit nunmehriger Bezugnahme auf 8 ist ein Blockbild eines dritten Systems 800 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in 7 und 8 tragen gleiche Bezugszahlen, und bestimmte Aspekte von 7 sind in 8 weggelassen worden, um zu vermeiden, dass andere Aspekte von 8 unklar werden.
  • 8 veranschaulicht, dass die Prozessoren 870, 880 einen integrierten Speicher und I/O-Steuerlogik („CL”) 872 bzw. 882 enthalten können. Für wenigstens eine Ausführungsform kann die CL 872, 882 integrierte Speichersteuereinheiten, wie zum Beispiel die in Verbindung mit 5 und 7 beschriebenen, umfassen. Zusätzlich kann die CL 872, 882 auch I/O-Steuerlogik umfassen. 8 veranschaulicht, dass die Speicher 832, 834 mit der CL 872, 882 gekoppelt sind, und dass die I/O-Vorrichtungen 814 auch mit der Steuerlogik 872, 882 gekoppelt sind. Legacy-I/O-Einrichtungen 815 sind mit dem Chipsatz 890 gekoppelt.
  • Mit nunmehriger Bezugnahme auf 9 ist ein Blockbild eines SoC 900 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in 5 tragen gleiche Bezugszahlen. Außerdem sind Kästchen mit gestrichelten Linien Merkmale an weiterentwickelten SoCs. In 9 ist/sind (eine) Zwischenverbindungseinheit(en) 902 gekoppelt mit: einem Anwendungsprozessor 910, der einen Satz von einem oder mehreren Kern(en) 502A–N und (eine) gemeinsam genutzte Cache-Einheiten) 506 umfasst; einer Systemagenteneinheit 510; (einer) Buscontrollereinheit(en) 516; einer integrierten Speichersteuereinheit(en) 514; einem Satz von einem oder mehreren Medienprozessoren 920, der/die integrierte Grafiklogik 508, einen Bildprozessor 924 zum Liefern von Stand- und/oder Bewegtbild-Kamerafunktionalität, einen Audioprozessor 926 zum Liefern von Hardwarea-Audiobeschleunigung und einen Videoprozessor 928 zum Liefern von Videocodier-/decodierbeschleunigung, umfassen kann; einer statischen Speichereinheit 930 mit wahlfreiem Zugriff (SRAM); einer Speichereinheit 932 mit Direktzugriff (DMA) und einer Anzeigeeinheit 940 zur Kopplung mit einer oder mehreren externen Anzeigen.
  • 10 veranschaulicht einen Prozessor, der eine Zentralverarbeitungseinheit (CPU) und eine Grafikverarbeitungseinheit (GPU) enthält, die wenigstens eine Instruktion gemäß einer Ausführungsform ausführen können. In einer Ausführungsform könnte eine Instruktion zur Durchführung von Operationen gemäß wenigstens einer Ausführungsform von der CPU vorgenommen werden. In einer anderen Ausführungsform könnte die Instruktion von der GPU vorgenommen werden. In noch einer weiteren Ausführungsform könnte die Instruktion durch eine Kombination von Operationen, die von der GPU und der CPU vorgenommen werden, ausgeführt werden. Zum Beispiel kann in einer Ausführungsform eine Instruktion gemäß einer Ausführungsform in der GPU empfangen und zur Ausführung decodiert werden. Jedoch kann/können ein oder mehrere Operationen in der decodierten Instruktion von einer CPU vorgenommen und das Ergebnis zur GPU zur finalen Rückordnung der Instruktion zurückgeführt werden. Umgekehrt kann in einigen Ausführungsformen die CPU als primärer Prozessor agieren und die GPU als Coprozessor.
  • In einigen Ausführungsformen können Instruktionen, die von hochparallelen Durchsatzprozessoren profitieren, von der GPU ausgeführt werden, während Instruktionen, welche von der Leistung von Prozessoren profitieren, die von tiefen Pipeline-Architekturen profitieren, von der CPU ausgeführt werden können. Zum Beispiel können Grafiken, wissenschaftliche Anwendungen, Finanzanwendungen und andere parallele Arbeitsbelastungen von der Leistung der GPU profitieren und dementsprechend ausgeführt werden, während sequenziellere Anwendungen, wie zum Beispiel Betriebssystem-Kernel oder Anwendungscode, für die CPU besser geeignet sein können.
  • In 10 umfasst ein Prozessor 1000 eine CPU 1005, GPU 1010, einen Bildprozessor 1015, einen Videoprozessor 1020, eine USB-Steuereinheit 1025, eine UART-Steuereinheit 1030, eine SPI/SDIO-Steuereinheit 1035, eine Anzeigeeinrichtung 1040, eine High-Definition Multimedia Interface-(HDMI-)Steuereinheit 1045, eine MIPI-Steuereinheit 1050, eine Flash-Speichersteuereinheit 1055, eine Dual Data Rate-(DDR-)Steuereinheit 1060, eine Sicherheitsmaschine 1065 und eine I2S/I2C-Steuereinheit 1070. Andere Logik und Schaltungen können in dem Prozessor von 10 enthalten sein, einschließlich mehrerer CPUs oder GPUs und anderer Peripherie-Schnittstellensteuereinheiten.
  • Ein oder mehrere Aspekte wenigstens einer Ausführungsform kann oder können durch repräsentative Daten implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die beim Lesen durch eine Maschine bewirkt, dass die Maschine Logik zur Durchführung der hierin beschriebenen Techniken erzeugt. Solche Repräsentationen, als „IP-Cores” bekannt, können auf einem greifbaren, maschinenlesbaren Medium („Band”) gespeichert sein und an zahlreiche Kunden oder Fertigungseinrichtungen zum Laden in die Fertigungsmaschinen, die tatsächlich die Logik oder den Prozessor herstellen, geliefert werden. Zum Beispiel können IP-Cores, wie zum Beispiel die CortexTM-Familie von Prozessoren, die von ARM Holdings, Ltd., entwickelt sind, und Loongson IP-Cores, die vom Institute of Computing Technology (ICT) der chinesischen Akademie der Wissenschaften entwickelt sind, an zahlreiche Kunden oder Lizenznehmer, wie zum Beispiel Texas Instruments, Qualcomm, Apple oder Samsung, lizenziert oder verkauft werden und in von diesen Kunden oder Lizenznehmern hergestellten Prozessoren implementiert werden.
  • 11 zeigt ein Blockbild, das die Entwicklung von IP-Cores gemäß einer Ausführungsform veranschaulicht. Ein Speicher 1130 umfasst Simulations-Software 1120 und/oder ein Hardware- oder Software-Modell 1110. In einer Ausführungsform können die Daten, die das IP-Core-Design repräsentieren, dem Speicher 1130 über einen Speicher 1140 (z. B. Festplatte), drahtgebundene Verbindung (z. B. Internet) 1150 oder drahtlose Verbindung 1160 zur Verfügung gestellt werden. Die von dem Simulationswerkzeug und -modell erzeugten IP-Core-Informationen können dann zu einer Fertigungseinrichtung übertragen werden, wo sie von einem Dritten hergestellt werden können, um wenigstens eine Instruktion gemäß wenigstens einer Ausführungsform auszuführen.
  • In einigen Ausführungsformen kann/können ein oder mehrere Instruktionen einem ersten Typ oder einer Architektur (z. B. x86) entsprechen und auf einen Prozessor eines anderen Typs oder einer Architektur (z. B. ARM) übersetzt oder emuliert werden. Eine Instruktion kann somit gemäß einer Ausführungsform auf irgendeinem Prozessor oder Prozessortyp, einschließlich ARM, x86, MIPS, einer GPU, oder einem anderen Prozessortyp oder einer Architektur durchgeführt werden.
  • 12 veranschaulicht, wie eine Instruktion eines ersten Typs von einem Prozessor eines anderen Typs gemäß einer Ausführungsform emuliert wird. In 12 enthält ein Programm 1205 einige Instruktionen, die dieselbe oder im Wesentlichen dieselbe Funktion wie eine Instruktion gemäß einer Ausführungsform ausführen können. Jedoch können die Instruktionen des Programms 1205 von einem Typ und/oder Format sein, der/das unterschiedlich ist/sind oder mit dem Prozessor 1215 inkompatibel ist/sind, was bedeutet, dass die Instruktionen des Typs im Programm 1205 von dem Prozessor 1215 nicht nativ ausgeführt werden können. Jedoch mit Hilfe von Emulationslogik 1210 werden die Instruktionen des Programms 1205 in Instruktionen übersetzt, die nativ in der Lage sind, von dem Prozessor 1215 ausgeführt zu werden. In einer Ausführungsform ist die Emulationslogik in Hardware verkörpert. In einer anderen Ausführungsform ist die Emulationslogik in einem greifbaren, maschinenlesbaren Medium ausgeführt, das Software zum Übersetzen von Instruktionen des Typs in dem Programm 1205 in den von dem Prozessor 1215 nativ ausführbaren Typ enthält. In anderen Ausführungsformen ist die Emulationslogik eine Kombination von Hardware mit festem Funktionsumfang oder programmierbarer Hardware und einem auf einem greifbaren, maschinenlesbaren Medium gespeicherten Programm. In einer Ausführungsform enthält der Prozessor die Emulationslogik, während in anderen Ausführungsformen die Emulationslogik außerhalb des Prozessors vorhanden ist und von einem Dritten bereitgestellt wird. In einer Ausführungsform ist der Prozessor in der Lage, die Emulationslogik, die in einem körperlichen, maschinenlesbaren Medium verkörpert ist, das Software enthält, durch die Ausführung von Mikrocode oder Firmware, die in dem Prozessor enthalten oder diesem zugeordnet ist, zu laden.
  • 13 ist ein Blockbild, das die Verwendung eines Software-Instruktionsumwandlers zum Umwandeln von binären Instruktionen in einen Quellinstruktionssatz in binäre Instruktionen in einem Zielinstruktionssatz gemäß Ausführungsformen der Erfindung vergleichend gegenüberstellt. In der veranschaulichten Ausführungsform ist der Instruktionsumwandler ein Software-Instruktionsumwandler, obwohl alternativ dazu der Instruktionsumwandler in Software, Firmware, Hardware oder zahlreichen Kombinationen derselben implementiert sein kann. 13 zeigt ein Programm in einer Hochsprache 1302, die unter Verwendung eines x86-Kompilierers 1304 kompiliert werden kann, um einen x86-Binärcode 1306 zu erzeugen, der von einem Prozessor mit wenigstens einem x86-Instruktionssatzkern 1316 nativ ausgeführt werden kann. Der Prozessor mit zumindest einem x86-Instruktionssatzkern 1316 repräsentiert jeden Prozessor, der im Wesentlichen dieselben Funktionen wie ein Intel-Prozessor mit mindestens einem x86-Instruktionssatzkern durch kompatible Ausführung oder anderenfalls Verarbeitung (1) eines wesentlichen Teils des Instruktionssatzes des Intel-x86-Instruktionssatzkerns oder (2) von Objektcodeversionen von Anwendungen oder anderer Software durchführen kann, die zum Laufen auf einem Intel-Prozessor mit wenigstens einem x86-Instruktionssatzkern vorgesehen ist, um im Wesentlichen dasselbe Ergebnis wie ein Intel-Prozessor mit wenigstens einem x86-Instruktionssatzkern zu erzielen. Der x86-Kompilierer 1304 repräsentiert einen Kompilierer, der betreibbar ist, einen x86-Binärcode 1306 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verknüpfungsverarbeitung auf dem Prozessor mit wenigstens einem x86-Instruktionssatzkern 1316 ausgeführt werden kann. Ähnlich zeigt 13, dass das Programm in der Hochsprache 1302 unter Verwendung eines alternativen Instruktionssatzkompilierers 1308 kompiliert werden kann, um einen alternativen Instruktionssatzbinärcode 1310 zu erzeugen, der von einem Prozessor ohne wenigstens einem x86-Instruktionssatzkern 1314 (z. B. einem Prozessor mit Kernen, der den MIPS-Instruktionssatz von MIPS Technologies, Sunnyvale, Kalifornien, ausführt und/oder der den ARM-Instruktionssatz von ARM Holdings, Sunnyvale, Kalifornien ausführt) nativ ausgeführt werden kann. Der Instruktionsumwandler 1312 wird zum Umwandeln des x86-Binärcodes 1306 in Code, der von dem Prozessor ohne einen x86-Instruktionssatzkern 1314 nativ ausgeführt werden kann, verwendet. Dieser umgewandelte Code ist wahrscheinlich nicht derselbe wie der alternative Instruktionssatzbinärcode 1310, da ein Instruktionsumwandler, der dies kann, schwierig herzustellen ist; jedoch wird der konvertierte Code die allgemeine Operation bewerkstelligen und aus Instruktionen aus dem alternativen Instruktionssatz gebildet werden. Somit repräsentiert der Instruktionsumwandler 1312 Software, Firmware, Hardware oder eine Kombination derselben, die durch Emulation, Simulation oder irgendeinen anderen Prozess einem Prozessor oder einer anderen elektronischen Vorrichtung, die keinen x86-Instruktionssatzprozessor oder -kern aufweist, ermöglicht, den x86-Binärcode 1306 auszuführen.
  • Mit Bezugnahme auf 14 ist ein Blockbild einer Ausführungsform eines Mehrkernprozessors gezeigt. Wie in der Ausführungsform von 14 gezeigt, umfasst ein Prozessor 1400 mehrere Domänen. Spezifisch umfasst eine Kerndomäne 1430 eine Vielzahl von Kernen 1430A bis 1430N, eine Grafikdomäne 1460 umfasst eine oder mehrere Grafikmaschinen mit einer Medienmaschine 1465, und eine Systemagentendomäne 1410.
  • In verschiedenen Ausführungsformen behandelt die Systemagentendomäne 1410 Leistungssteuerereignisse und eine Leistungsverwaltung, so dass individuelle Einheiten der Domänen 1430 und 1460 (z. B. Kerne und/oder Grafikmaschinen) unabhängig steuerbar sind, um in einem geeigneten Leistungsmodus/level (z. B. aktiv, turbo, schlafen, Ruhezustand, Tiefschlaf oder einem anderen Advanced Configuration Power Interface-ähnlichen Zustand) im Lichte der Aktivität (oder Inaktivität) zu arbeiten, die in der gegebenen Einheit auftritt. Jede der Domänen 1430 und 1460 kann bei einer anderen Spannung und/oder Leistung arbeiten, und ferner arbeiten die individuellen Einheiten innerhalb der Domänen jeweils potentiell bei einer unabhängigen Frequenz und Spannung. Es ist zu beachten, dass, obwohl drei Domänen gezeigt sind, der Schutzbereich der vorliegenden Offenbarung in dieser Hinsicht nicht eingeschränkt ist und zusätzliche Domänen in anderen Ausführungsformen vorhanden sein können.
  • Wie gezeigt, umfasst jeder Kern 1430 ferner Low Level-Caches zusätzlich zu verschiedenen Ausführungseinheiten und zusätzliche Verarbeitungselemente. Hier sind die verschiedenen Kerne miteinander und mit einem gemeinsam genutzten Cache-Speicher gekoppelt, der aus einer Mehrzahl von Einheiten oder Slices eines Last Level-Caches (LLC) 1440A bis 1440N gebildet ist; diese LLCs umfassen oft eine Speicher- und Cache-Steuereinheitfunktionalität und werden unter den Kernen gemeinsam genutzt, sowie potentiell auch unter der Grafikmaschine.
  • Wie ersichtlich ist, koppelt eine Ringzwischenverbindung 1450 die Kerne miteinander und liefert eine Zwischenverbindung zwischen der Kerndomäne 1430, Grafikdomäne 1460 und den Systemagentenschaltungen 1410 über eine Mehrzahl von Ringstopps 1452A bis 1452N, jeweils an einer Kopplung zwischen einem Kern und einem LLC-Slice. Wie in 14 ersichtlich ist, wird eine Zwischenverbindung 1450 verwendet, um verschiedene Informationen zu tragen, die Adresseninformationen, Dateninformationen, Quittungsinformationen und Snoop/Ungültig-Informationen umfassen. Obwohl eine Ringzwischenverbindung veranschaulicht ist, kann eine beliebige bekannte On-Die-Zwischenverbindung oder ein Gewebe verwendet werden. Als veranschaulichendes Beispiel können einige der oben diskutierten Gewebe (z. B. eine weitere On-Die-Zwischenverbindung, Intel On-chip System Fabric (IOSF), eine Advanced Microcontroller Bus Architecture-(AMBA-)Zwischenverbindung, ein mehrdimensionales Netzgewebe oder eine andere bekannte Zwischenverbindungsarchitektur) in ähnlicher Weise verwendet werden.
  • Wie weiter dargestellt, umfasst eine Systemagentendomäne 1410 eine Anzeigemaschine 1412, die eine Steuerung von und eine Schnittstelle zu einer assoziierten Anzeige vorzusehen hat. Die Systemagentendomäne 1410 kann andere Einheiten umfassen, wie: eine integrierte Speichersteuereinheit 1420, die eine Schnittstelle zu einem Systemspeicher vorsieht (z. B. DRAM, implementiert mit mehrfachen DIMMs; Kohärenzlogik 1422, um Speicherkohärenzoperationen vorzusehen). Mehrere Schnittstellen können vorhanden sein, um eine Zwischenverbindung zwischen dem Prozessor und anderen Schaltungen zu ermöglichen. Beispielsweise sind in einer Ausführungsform wenigstens eine direkte Medienschnittstelle (DMI) 1416 vorgesehen sowie eine oder mehrere PCIeTM-Schnittstellen 1414. Die Anzeigemaschine und diese Schnittstellen liefern Kommunikationen zwischen anderen Agenten, wie zusätzlichen Prozessoren oder anderen Schaltungen, es können eine oder mehrere andere Schnittstellen (z. B. Intel® Quick Path Interconnect (QPI) Fabric) vorgesehen sein.
  • Mit Bezugnahme auf 15 ist nun ein Blockbild eines repräsentativen Kerns gezeigt; spezifischer Logikblöcke eines Back End eines Kerns, wie des Kerns 1430 von 14. Im Allgemeinen umfasst die in 15 gezeigte Struktur einen Out-of-Order-Prozessor, der eine Front End-Einheit 1570 aufweist, die zum Abrufen ankommender Instruktionen, Vornehmen verschiedener Verarbeitung (z. B. Cachen, Decodieren, Verzweigungsvorhersage, etc.) und Weiterleiten von Instruktionen/Operationen entlang einer Out-of-Order-(OOO-)Maschine 1580 verwendet wird. Die OOO-Einheit 1580 nimmt eine Weiterverarbeitung an decodierten Instruktionen vor.
  • Spezifisch umfasst in der Ausführungsform von 15 die Out-of-Order-Maschine 1580 eine Zuordnungseinheit 1582, um decodierte Instruktionen, die in der Form einer oder mehrerer Mikroinstruktionen oder Uops sein können, von der Front End-Einheit 1570 zu empfangen und diese geeigneten Ressourcen zuzuordnen, wie Registern, usw. Als Nächstes werden die Instruktionen an die Reservierungsstation 1584 geliefert, die Ressourcen reserviert und sie für eine Ausführung an einer der Mehrzahl von Ausführungseinheiten 1586A bis 1586N plant. Verschiedene Typen von Ausführungseinheiten können vorhanden sein, umfassend beispielsweise arithmetische Logikeinheiten (ALUs), Lade- und Speichereinheiten, Vektorverarbeitungseinheiten (VPUs), Gleitkommaausführungseinheiten, u. a. Ergebnisse aus diesen verschiedenen Ausführungseinheiten werden einem Umordnungspuffer (ROB) 1588 zugeführt, der ungeordnete Ergebnisse aufnimmt und sie in eine korrekte Programmreihenfolge zurückführt.
  • Mit weiterer Bezugnahme auf 15 ist zu beachten, dass sowohl die Front End-Einheit 1570 als auch die Out-of-Order-Maschine 1580 mit unterschiedlichen Ebenen einer Speicherhierarchie gekoppelt sind. Spezifisch ist ein Instruktionsebenen-Cache 1572 gezeigt, welcher seinerseits mit einem Mid Level-Cache 1576 gekoppelt ist, der seinerseits mit einem Last Level-Cache 1595 gekoppelt ist. In einer Ausführungsform ist der Last Level-Cache 1595 in einer On-Chip-(manchmal bezeichnet als Uncore-)Einheit 1590 implementiert. Als Beispiel ist die Einheit 1590 einem Systemagenten 1410 von 14 ähnlich. Wie oben diskutiert, kommuniziert der UnCore 1590 mit dem Systemspeicher 1599, der in der veranschaulichten Ausführungsform über einen ED RAM implementiert ist. Es ist auch zu beachten, dass die verschiedenen Ausführungseinheiten 1586 innerhalb der Out-of-Order-Maschine 1580 mit einem First Level-Cache 1574 kommunizieren, der auch mit dem Mid Level-Cache 1576 kommuniziert. Es ist auch zu beachten, dass zusätzliche Kerne 1530N-2 bis 1530N mit der LLC 1595 gekoppelt sein können. Obwohl sie in der Ausführungsform von 15 auf dieser hohen Ebene gezeigt sind, ist es klar, dass verschiedene Änderungen und zusätzliche Komponenten vorliegen können.
  • Mit nunmehriger Bezugnahme auf 16 ist ein Blockbild von Komponenten veranschaulicht, die in einem Computersystem gemäß einer Ausführungsform der vorliegenden Erfindung vorhanden sind. Wie in 16 gezeigt, umfasst das System 1600 eine beliebige Kombination von Komponenten. Diese Komponenten können als ICs, Teile davon, diskrete elektronische Vorrichtungen, oder andere Module, Logik, Hardware, Software, Firmware, oder eine Kombination davon, angepasst in einem Computersystem, oder als Komponenten, die ansonsten innerhalb eines Gehäuses des Computersystems eingebaut sind, implementiert werden. Es ist auch zu beachten, dass das Blockbild von 16 eine Ansicht vieler Komponenten des Computersystems auf einer hohen Ebene zeigen soll. Es ist jedoch klar, dass einige der gezeigten Komponenten weggelassen werden können, zusätzliche Komponenten vorhanden sein können und eine andere Anordnung der Komponenten in anderen Implementierungen auftreten kann. Als Ergebnis können oben beschriebene Ausführungsformen der Erfindung in einem beliebigen Teil einer oder mehrerer Zwischenverbindungen implementiert sein, die nachstehend veranschaulicht oder beschrieben werden.
  • Wie in 16 ersichtlich ist, umfasst ein Prozessor 1610 in einer Ausführungsform einen Mikroprozessor, Mehrkernprozessor, Multithreaded-Prozessor, einen Prozessor mit ultraniedriger Spannung, einen eingebetteten Prozessor oder ein anderes bekanntes Verarbeitungselement. In der veranschaulichten Implementierung wirkt der Prozessor 1610 als Hauptverarbeitungseinheit und zentraler Knoten zur Kommunikation mit vielen der verschiedenen Komponenten des Systems 1600. Als Beispiel ist der Prozessor 1610 als System-on-a-Chip (SoC) implementiert. Als spezifisches veranschaulichendes Beispiel umfasst der Prozessor 1610 einen Prozessor mit dem Intel® Architecture CoreTM, wie einen i3-, i5-, i7- oder anderen derartigen Prozessor, der von Intel Corporation, Santa Clara, CA, verfügbar ist. Es ist jedoch klar, dass andere Energiespar-Prozessoren, wie jene, die von Advanced Micro Devices, Inc (AMD) of Sunnyvale, CA, eine MIPS-basierte Ausbildung von MIPS Technologies, Inc., of Sunnyvale, CA, eine ARM-basierte Ausbildung lizensiert von ARM Holdings, Ltd., oder einem Kunden davon oder ihren Lizenzträgern oder -nehmern, stattdessen in anderen Ausführungsformen vorhanden sein können, wie in Apple A5/A6-Prozessor, ein Qualcomm Snapdragon-Prozessor oder TI OMAP-Prozessor. Es ist zu beachten, dass viele der Kundenversionen solcher Prozessoren modifiziert und variiert sind; sie können jedoch einen spezifischen Instruktionssatz unterstützen oder erkennen, der definierte Algorithmen vornimmt, wie vom Prozessorlizenzgeber vorgegeben. Hier kann die Mikroarchtitekturimplementierung variieren, aber die Architekturfunktion des Prozessors ist üblicherweise konsistent. Bestimmte Details hinsichtlich der Architektur und des Betriebs des Prozessors 1610 in einer Implementierung werden weiter unten diskutiert, um ein veranschaulichendes Beispiel zu geben.
  • In einer Ausführungsform kommuniziert der Prozessor 1610 mit einem Systemspeicher 1615. Als veranschaulichendes Beispiel, das in einer Ausführungsform über mehrere Speichervorrichtungen implementiert werden kann, um einen gegebenen Betrag an Systemspeicher zu liefern. Als Beispiele kann der Speicher einer Joint Electron Devices Engineering Council (JEDEC) Energiespar-Doppeldatenrate(LPDDR)-basierten Ausbildung entsprechen, wie dem aktuellen LPDDR2-Sandard gemäß JEDEC JESD 209-2E (veröffentlicht im April 2009), oder einem LPDDR2-Standard der nächstes Generation, der als LPDDR3 oder LPDDR4 zu bezeichnen ist, und der Erweiterungen auf LPDDR2 bietet, um die Bandbreite zu erhöhen. In verschiedenen Implementierungen können die individuellen Speichervorrichtungen von unterschiedlichen Pakettypen sein, wie Single Die Package (SDP), Dual Die Package (DDP) oder Quad Die Package (1P). Diese Vorrichtungen sind in einigen Ausführungsformen direkt auf ein Motherboard gelötet, um eine Lösung mit niedrigerem Profil vorzusehen, während in andere Ausführungsformen die Vorrichtungen als ein oder mehrere Speichermodule ausgelegt sind, die ihrerseits mit dem Motherboard durch einen gegebenen Verbinder gekoppelt sind. Und natürlich sind andere Speicherimplementierungen möglich, wie andere Typen von Speichermodulen, z. B. Dual Inline-Speichermodule (DIMMs) verschiedener Art, die umfassen, jedoch nicht beschränkt sind auf MikroDIMMs, MiniDIMMs. In einer besonderen veranschaulichenden Ausführungsform ist der Speicher zwischen 2 GB und 16 GB groß und kann als DDR3LM-Paket oder LPDDR2- oder LPDDR3-Speicher ausgelegt sein, der auf ein Motherboard über eine Kugelgitteranordung (Ball Grid Array, BGA) gelötet ist.
  • Um eine anhaltende Speicherung von Informationen zu ermöglichen, wie Daten, Anwendungen, einem oder mehreren Betriebssystemen, usw., kann auch ein Massenspeicher 1620 mit dem Prozessor 1610 gekoppelt sein. In verschiedenen Ausführungsformen kann dieser Massenspeicher, um eine dünnere und leichtere Systemausbildung zu ermöglichen sowie das Systemansprechverhalten zu verbessern, über ein SSD implementiert werden. In anderen Ausführungsformen kann dieser Massenspeicher jedoch primär unter Verwendung eines Festplattenlaufwerks (HDD) mit einem geringeren Betrag an SSD-Speicher implementiert sein, um als SSD-Cache zu wirken, um die nicht-flüchtige Speicherung von Kontextzustand und anderen Informationen während Herunterfahr-Ereignissen zu ermöglichen, so dass ein rasches Hochfahren bei der Reinitiation von Systemaktivitäten auftreten kann. Wie auch in 16 gezeigt, kann eine Flash-Vorrichtung 1622 mit dem Prozessor 1610, z. B. über eine serielle periphere Schnittstelle (SPI), gekoppelt sein. Diese Flash-Vorrichtung kann die nicht-flüchtige Speicherung von System-Software, einschließlich Basic Input/Output-Software (BIOS) sowie anderer Firmware des Systems, vorsehen.
  • In verschiedenen Ausführungsformen ist der Massenspeicher des Systems durch ein SSD allein oder als Platte, optisches oder anderes Laufwerk mit einem SSD-Cache implementiert. In einigen Ausführungsformen ist der Massenspeicher als SSD oder HDD zusammen mit einem Restore(RST)-Cachemodul implementiert. In verschiedenen Implementierungen bietet das HDD eine Speicherung zwischen 320 GB-4 Terabytes (TB) und darüber, während der RST-Cache mit einem SSD mit einer Kapazität von 24 GB bis 256 GB implementiert ist. Es ist zu beachten, dass ein solcher SSD-Cache als Single Level-Cache-(SLC-) oder Multi-Level-Cache-(MLC-)Option ausgelegt sein kann, um ein geeignetes Niveau an Ansprechverhalten vorzusehen. In einer nur-SSD-Option kann das Modul an verschiedenen Orten aufgenommen werden, wie in einem mSATA oder NGFF Slot. Als Beispiel hat ein SSD eine Kapazität im Bereich von 120 GB bis 1 TB.
  • Verschiedene Eingabe/Ausgabe-(I/O-)Vorrichtungen können innerhalb des Systems 1600 vorhanden sein. Spezifisch ist in der Ausführungsform von 16 eine Anzeige 1624 gezeigt, die ein High Definition-LCD- oder LED-Feld sein kann, das mit einem Deckelteil des Gehäuses ausgelegt ist. Diese Anzeige kann auch einen Berührungsbildschirm 1625 vorsehen, der z. B. extern über das Anzeigefeld so angepasst ist, dass über die Interaktion eines Benutzers mit diesem Berührungsbildschirm Benutzereingaben an das System geliefert werden können, um gewünschte Operationen zu ermöglichen, z. B. hinsichtlich der Anzeige von Informationen, des Zugriffs auf Informationen, usw. In einer Ausführungsform kann die Anzeige 1624 mit dem Prozessor 1610 über eine Anzeigezwischenverbindung gekoppelt sein, die als Hochleistungs-Grafikzwischenverbindung implementiert sein kann. Der Berührungsbildschirm 1625 kann mit dem Prozessor 1610 über eine andere Zwischenverbindung gekoppelt sein, die in einer Ausführungsform eine I2C-Zwischenverbindung sein kann. Wie weiter in 16 gezeigt ist, kann zusätzlich zum Berührungsbildschirm 1625 eine Benutzereingabe über eine Berührung auch über ein Berührungsfeld 1630 erfolgen, das innerhalb des Gehäuses ausgelegt sein kann und auch mit derselben I2C-Zwischenverbindung gekoppelt sein kann wie der Berührungsbildschirm 1625.
  • Das Anzeigefeld kann in mehreren Modi arbeiten. In einem ersten Modus kann das Anzeigefeld in einem transparenten Zustand eingerichtet sein, in dem das Anzeigefeld für sichtbares Licht transparent ist. In verschiedenen Ausführungsformen kann der Großteil des Anzeigefelds eine Anzeige sein, ausgenommen ein Rahmen rund um die Peripherie. Wenn das System in einem Notebook-Modus betrieben wird und das Anzeigefeld in einem transparenten Zustand betrieben wird, kann ein Benutzer Informationen sehen, die auf dem Anzeigefeld präsentiert werden, während er auch Objekte hinter der Anzeige sehen kann. Zusätzlich können auf dem Anzeigefeld angezeigte Informationen von einem Benutzer gesehen werden, der hinter der Anzeige positioniert ist. Oder der Betriebszustand des Anzeigefelds kann ein opaker Zustand sein, in dem sichtbares Licht nicht durch das Anzeigefeld gesendet wird.
  • In einem Tablet-Modus ist das System zusammengefaltet, so dass die hintere Anzeigefläche des Anzeigefelds in einer Position ruht, in der sie nach außen zu einem Benutzer zeigt, wenn die Bodenfläche des Basisfelds auf einer Fläche ruht oder vom Benutzer gehalten wird. Im Tablet-Betriebsmodus nimmt die hintere Anzeigefläche die Rolle einer Anzeige und Benutzerschnittstelle vor, da diese Fläche eine Berührungsbildschirmfunktionalität aufweisen kann und andere bekannte Funktionen einer herkömmlichen Berührunsbildschirmvorrichtung, wie einer Tablet-Vorrichtung, vornehmen kann. Zu diesem Zweck kann das Anzeigefeld eine Transparenzanpassungsschicht umfassen, die zwischen einer Berührunsbildschirmschicht und einer vorderen Anzeigefläche angeordnet ist. In einigen Ausführungsformen kann die Transparenzanpassungsschicht eine elektrochromatische Schicht (EC), eine LCD-Schicht oder eine Kombination einer EC- und LCD-Schicht sein.
  • In verschiedenen Ausführungsformen kann die Anzeige verschiedene Größen haben, z. B. ein 11,6'' oder ein 13,3'' Bildschirm, und kann ein 16:9 Seitenverhältnis und wenigstens 300 Nits Helligkeit aufweisen. Die Anzeige kann auch eine Full High Definition-(HD-)Auflösung (wenigstens 1920×1080 p) haben, mit einem eingebetteten Anzeigeport (Embedded Display Port, eDP) kompatibel sein und ein Energiesparfeld mit Panel Self Refresh sein.
  • Hinsichtlich der Berühungsbildschirmfähigkeiten kann das System ein Anzeige-Multitouch-Feld vorsehen, das eine Multitouch-Kapazität aufweist und wenigstens 5 Finger-fähig ist. Und in einigen Ausführungsformen kann die Anzeige 10 Finger-fähig sein. In einer Ausführungsform ist der Berühungsbildschirm innerhalb eines schadens- und kratzbeständigen Glases und einer Beschichtung aufgenommen (z. B. Gorilla GlassTM und Beschichtung oder Gorilla Glass 2TM und Beschichtung) für eine niedrige Reibung, um ein „Einbrennen eines Fingers” und „Überspringen eines Fingers” zu reduzieren. Um ein verstärktes Berührungsgefühl und Ansprechverhalten vorzusehen, hat das Berührungsfeld in einigen Implementierungen eine Multitouch-Funktionalität, wie weniger als 2 Rahmen (30 Hz) pro statischer Ansicht während des Ziehens mit dem 2-Finger-Zoom, und eine Einzelberührungsfunktionalität von weniger als 1 cm pro Rahmen (30 Hz) mit 200 ms (Verzögerung Finger zu Zeiger). In einigen Implementierungen unterstützt die Anzeige ein Rand-zu-Rand-Glas mit einem minimalen Bildschirmrahmen, der auch mit der Feldfläche bündig ist, und begrenzter IO-Interferenz bei der Verwendung von Multitouch.
  • Für ein Perceptual Computing und andere Zwecke können verschiedene Sensoren innerhalb des Systems vorliegen und können mit dem Prozessor 1610 in unterschiedlicher Weise gekoppelt sein. Bestimmte Inertial- und Umgebungssensoren können mit dem Prozessor 1610 durch einen Sensorknoten 1640, z. B. über eine I2C-Zwischenverbindung, gekoppelt sein. In der in 16 gezeigten Ausführungsform können diese Sensoren ein Akzelerometer 1641, einen Umgebungslichtsensor (Ambient Light Sensor, ALS) 1642, einen Kompass 1643 und ein Gyroskop 1646 umfassen, die in einigen Ausführungsformen mit dem Prozessor 1610 über einen Systemverwaltungsbus (SMBus) gekoppelt sind.
  • Unter Verwendung der verschiedenen Inertial- und Umgebungssensoren, die in einer Plattform vorliegen, können viele verschiedene Anwendungsfälle realisiert werden. Diese Anwendungsfälle ermöglichen hochentwickelte Rechenoperationen, einschließlich Perceptual Computing, und gestatten auch Verstärkungen hinsichtlich der Energieverwaltung/Batterielebensdauer, Sicherheit und des Systemansprechverhaltens.
  • Beispielsweise werden in Bezug auf Themen der Energieverwaltung/Batterielebensdauer, wenigstens teilweise auf der Basis von Informationen vom Umgebungslichtsensor, die Umgebungslichtbedingungen an einem Ort der Plattform bestimmt und die Intensität der Anzeige wird dementsprechend gesteuert. So wird beim Betrieb der Anzeige verbrauchter Strom unter bestimmten Lichtbedingungen reduziert.
  • Hinsichtlich Sicherheitsoperationen kann auf der Basis von Kontextinformationen, die von den Sensoren erhalten werden können, wie Ortsinformationen, bestimmt werden, ob ein Benutzer berechtigt ist, auf bestimmte sichere Dokumente zuzugreifen. Beispielsweise kann einem Benutzer gestattet werden, auf ein derartiges Dokument an einem Arbeitsplatz oder zu Hause zuzugreifen. Der Benutzer wird jedoch daran gehindert, auf solche Dokumente zuzugreifen, wenn die Plattform an einem öffentlichen Ort vorliegt. Diese Bestimmung basiert in einer Ausführungsform auf Ortsinformationen, die z. B. über einen GPS-Sensor oder eine Kameraerkennung von Landmarken bestimmt werden. Andere Sicherheitsoperationen können das Vorsehen einer Paarung von Vorrichtungen innerhalb eines engen Bereichs zueinander umfassen, z. B. eine tragbare Plattform, wie hier beschrieben, und ein Desktop-Computer eines Benutzers, Mobiltelefon, usw. Eine bestimmte gemeinsame Nutzung wird in einigen Implementierungen über eine Nahfeldkommunikation realisiert, wenn diese Vorrichtungen so gepaart sind. Wenn die Vorrichtungen jedoch einen bestimmten Bereich überschreiten, kann eine solche gemeinsame Nutzung gesperrt werden. Wenn eine Plattform und ein Smartphone gepaart werden, wie hier beschrieben, kann ferner ausgelegt werden, dass ein Alarm ausgelöst wird, wenn sich die Vorrichtungen um mehr als eine vorherbestimmte Distanz voneinander an einem öffentlichen bewegen. Wenn diese gepaarten Vorrichtungen im Gegensatz dazu an einem sicheren Ort sind, z. B. einem Arbeitsplatz oder zu Hause, können die Vorrichtungen diese vorherbestimmte Grenze überschreiten, ohne dass ein solcher Alarm ausgelöst wird.
  • Auch das Ansprechverhalten kann unter Verwendung der Sensorinformationen verstärkt werden. Auch wenn eine Plattform in einem Energiesparzustand ist, kann es beispielsweise weiterhin ermöglicht werden, dass die Sensoren bei einer relativ niedrigen Frequenz laufen. Demgemäß werden jegliche Änderungen eines Orts der Plattform bestimmt, z. B. wie durch Inertialsensoren, GPS-Sensoren, usw., bestimmt. Wenn keine solchen Änderungen registriert wurden, tritt eine schnellere Verbindung mit einem vorherigen drahtlosen Knoten, wie einem Wi-FiTM-Zugriffspunkt oder einem ähnlichen Enabler, auf, da in diesem Fall keine Notwendigkeit besteht, nach verfügbaren Drahtlosnetzressourcen zu scannen. So wird ein höheres Niveau eines Ansprechverahltens beim Aufwachen aus einem Energiesparzustand erzielt.
  • Es ist klar, dass viele andere Anwendungsfälle unter Verwendung von Sensorinformationen ermöglicht werden können, die über die integrierten Sensoren innerhalb einer Plattform erhalten werden können, wie hier beschrieben, ein Perceptual Computing System kann das Hinzufügen alternativer Eingabemodalitäten, einschließlicher einer Gestenerkennung, gestatten und dem System ermöglichen, Benutzeroperationen und -absichten abszufühlen.
  • In einigen Ausführungsformen kann ein oder können oder mehrere Infrarot- oder andere Wärmeabfühlelemente oder ein beliebiges anderes Element zum Abfühlen der Präsenz oder Bewegung eines Benutzers vorliegen. Solche Abfühlelemente können mehrere verschiedene Elemente umfassen, die zusammenarbeiten, in Sequenz arbeiten oder beides. Beispielsweise umfassen Abfühlelemente Elemente, die ein initiales Abfühlen, wie Licht oder Tonprojektion, gefolgt vom Abfühlen zur Gestendetektion beispielsweise durch eine Ultraschall-Flugzeit-Kamera oder eine Muster-Lichtkamera vorsehen.
  • In einigen Ausführungsformen umfasst das System auch einen Lichtgenerator, um eine beleuchtete Linie zu erzeugen. In einigen Ausführungsformen liefert diese Linie einen visuelle Hinweis bezüglich einer virtuellen Grenze, nämlich eines imaginären oder virtuellen Orts im Raum, wo eine Aktion des Benutzers, die virtuelle Grenze oder Ebene zu überschreiten oder zu durchbrechen, als Absicht interpretiert wird, das Rechnersystem zu benutzen. In einigen Ausführungsformen kann die beleuchtete Linie die Farbe verändern, während das Rechnersystem in verschiedene Zustände in Bezug auf den Benutzer übergeht. Die beleuchtete Linie kann verwendet werden, um dem Benutzer einen visuellen Hinweis einer virtuellen Grenze im Raum geben und kann vom System verwendet werden, um Übergänge im Zustand des Computers in Bezug auf den Benutzer zu bestimmen, einschließlich der Bestimmung, wenn der Benutzer wünscht, den Computer zu benutzen.
  • In einigen Ausführungsformen fühlt der Computer die Benutzerposition ab und arbeitet, um die Bewegung einer Hand des Benutzers durch die virtuelle Grenze als Geste zu interpretieren, die eine Absicht des Benutzers anzeigt, den Computer zu benutzen. In einigen Ausführungsformen kann sich, wenn der Benutzer die virtuelle Linie oder Ebene überschreitet, das vom Lichtgenerator generierte Licht ändern, wodurch ein visuelles Feedback gegeben wird, dass der Benutzer in einen Bereich zum Vorsehen von Gesten eingetreten ist, um eine Eingabe in den Computer vorzunehmen.
  • Anzeigebildschirme können visuelle Anzeigen von Zustandsübergängen des Rechnersystems in Bezug auf einen Benutzer liefern. In einigen Ausführungsformen ist ein erster Bildschirm in einem ersten Zustand vorgesehen, in dem die Präsenz eines Benutzers vom System abgefühlt wird, wie durch die Verwendung eines oder mehrerer der Abfühlelemente.
  • In einigen Implementierungen arbeitet das System, um die Benutzeridentität abzufühlen, wie durch eine Gesichtserkennung. Hier kann der Übergang zu einem zweiten Bildschirm in einem zweiten Zustand vorgesehen werden, in dem das Rechnersystem die Benutzeridentität erkannt hat, wobei dieser zweite Bildschirm ein visuelles Feedback für den Benutzer vorsieht, dass der Benutzer in einen neuen Zustand übergegangen ist. Der Übergang zu einem dritten Bildschirm kann in einem dritten Zustand auftreten, in dem der Benutzer die Erkennung des Benutzers bestätigt hat.
  • In einigen Ausführungsformen kann das Rechnersystem einen Übergangsmechanismus verwenden, um einen Ort einer virtuellen Grenze für einen Benutzer zu bestimmen, wobei der Ort der virtuellen Grenze mit dem Benutzer und Kontext variieren kann. Das Rechnersystem kann ein Licht generieren, wie eine beleuchtete Linie, um die virtuelle Grenze zur Benutzung des Systems anzuzeigen. In einigen Ausführungsformen kann das Rechnersystem in einem Wartezustand sein, und das Licht kann in einer ersten Farbe erzeugt werden. Das Rechnersystem kann detektieren, ob der Benutzer die virtuelle Grenze überschritten hat, wie durch das Abfühlen der Präsenz und Bewegung des Benutzers unter Verwendung von Abfühlelementen.
  • Falls detektiert wurde, dass der Benutzer die virtuelle Grenz überschritten hat (wie dass die Hände des Benutzers näher beim Rechnersystem sind als die virtuelle Grenzlinie), kann in einigen Ausführungsformen das Rechnersystem in einen Zustand zum Empfangen von Gesteneingaben vom Benutzer übergehen, wobei ein Mechanismus zum Anzeigen des Übergangs das Licht umfassen kann, das die virtuelle Grenze zeigt, indem sie sich zu einer zweiten Farbe ändert.
  • In einigen Ausführungsformen kann das Rechnersystem bestimmen, ob die Gestenbewegung detektiert wird. Wenn die Gestenbewegung detektiert wird, kann das Rechnersystem mit einem Gestenerkennungsprozess fortfahren, der die Verwendung von Daten aus einer Gestendatenbibliothek umfassen kann, die im Speicher der Rechnervorrichtung residieren kann oder auf die auf andere Weise von der Rechnervorrichtung zugegriffen werden kann.
  • Falls eine Geste des Benutzers erkannt wird, kann das Rechnersystem eine Funktion ansprechend auf die Eingabe vornehmen und zurückspringen, um zusätzliche Gesten zu empfangen, falls der Benutzer innerhalb der virtuellen Grenze ist. Falls die Geste nicht erkannt wird, kann in einigen Ausführungsformen das Rechnersystem in einen Fehlerzustand übergehen, wobei ein Mechanismus zum Anzeigen des Fehlerzustands das Licht umfassen kann, das die virtuelle Grenze zeigt, indem sie sich zu einer dritten Farbe ändert, wobei das System zurückspringt, um zusätzliche Gesten zu empfangen, falls der Benutzer innerhalb der virtuellen Grenze ist, um das Computersystem zu benutzen.
  • Wie oben angegeben, kann das System in anderen Ausführungsformen als konvertibles Tablet-System ausgelegt sein, das in wenigstens zwei verschiedenen Modi verwendet werden kann, einem Tablet-Modus und einem Notebook-Modus. Das konvertible System kann zwei Felder aufweisen, nämlich ein Anzeigefeld und ein Basisfeld, so dass im Tablet-Modus die beiden Felder in einem Stapel eines über dem anderen angeordnet sind. Im Tablet-Modus ist das Anzeigefeld nach außen gewandt und kann eine Berührungsbildschirmfunktionalität vorsehen, wie sie bei herkömmlichen Tablets zu finden ist. Im Notebook-Modus können die beiden Felder in einer offenen Muschelschalenauslegung angeordnet sein.
  • In verschiedenen Ausführungsformen kann das Akzelerometer ein 3-Achsen-Akzelerometer mit Datenraten von wenigstens 50 Hz sein. Ein Gyroskop kann auch enthalten sein, das ein 3-Achsen-Gyroskop sein kann. Zusätzlich kann ein e-Kompass/Magnetometer vorhanden sein. Es kann oder können auch ein oder mehrere Annäherungssensoren vorgesehen sein (z. B. für den offenen Deckel, um abzufühlen, wenn eine Person in der Nähe des Systems ist (oder nicht), und um den Strom/die Leistung anzupassen, um die Batterielebensdauer zu erhöhen). Für einige OS kann eine Sensorfusionsfähigkeit, die das Akzelerometer, das Gyroskop und den Kompass umfasst, verstärkte Merkmale liefern. Zusätzlich kann über einen Sensorknoten mit einem Echtzeittakt (Real-Time Clock, RTC) ein Aufwachen aus dem Sensormechanismus realisiert werden, um einen Sensoreingang zu empfangen, wenn ein Rest des Systems in einem Energiesparzustand ist.
  • In einigen Ausführungsformen kann ein interner Deckel/Anzeige-Offen-Schalter oder -Sensor anzeigen, wenn der Deckel geschlossen/offen ist, und kann verwendet werden, um das System in einen Connected Standby-Zustand zu versetzen oder um automatisch aus dem Connected Standby-Zustand aufzuwachen. Andere Systemsensoren können ACPI-Sensoren für einen internen Prozessor, Speicher und zur Hauttemperaturüberwachung umfassen, um Änderungen an Prozessor- und Systembetriebszuständen auf der Basis abgefühlter Parameter zu ermöglichen.
  • In einer Ausführungsform kann das OS das Microsoft® Windows® 8 OS sein, das Connected Standby implementiert (hier auch als Win8 CS bezeichnet). Windows 8 Connected Standby oder ein anderes OS mit einem ähnlichen Zustand kann über eine Plattform, wie hier beschrieben, einen sehr niedrigen Leerlaufstrom vorsehen, um zu ermöglichen, dass Anwendungen angeschlossen bleiben, z. B. zu einem Ort auf Cloud-Basis, bei sehr niedrigem Stromverbrauch. Die Plattform kann 3 Stromzustände unterstützen, nämlich Bildschirm ein (normal), Connected Standby (als Vorgabe-„aus”-Zustand) und Abschalten (Null Watt Energieverbrauch). So im Connected Standby-Zustand die Plattform logisch ein (bei minimalen Strompegeln), auch wenn der Bildschirm aus ist. In einer derartigen Plattform kann die Stromverwaltung für Anwendungen transparent gemacht werden und eine konstante Konnektivität aufrechterhalten, teilweise aufgrund der Entlastungstechnologi8e, um zu ermöglichen, dass die mit dem wenigsten Strom versorgte Komponente eine Operation durchführt.
  • In 16 sind auch verschiedene periphere Vorrichtungen ersichtlich, die mit dem Prozessor 1610 über eine Low Pin Count-(LPC-)Zwischenverbindung gekoppelt sein können. In der gezeigten Ausführungsform können verschiedene Komponenten durch eine eingebettete Steuereinheit 1635 gekoppelt sein. Solche Komponenten können eine Tastatur 1636 (z. B. gekoppelt über eine PS2-Schnittstelle), einen Ventilator 1637 und einen Wärmesensor 1639 umfassen. In einigen Ausführungsformen kann ein Beführungsfeld 1630 auch mit einer EC 1635 über eine PS2-Schnittstelle gekoppelt sein. Zusätzlich kann auch ein Sicherheitsprozessor wie ein Trusted Platform-Modul (TP'M) 1638 gemäß der Trusted Computing Group (TCG) TPM-Spezifikation Version 1.2, datiert 2. Okt. 2003, über diese LPC-Zwischenverbindung mit dem Prozessor 1610 gekoppelt sein. Es ist jedoch klar, dass der Schutzbereich der vorliegenden Offenbarung in dieser Hinsicht nicht eingeschränkt ist und eine sichere Verarbeitung und Speicherung von Informationen an einem anderen geschützten Ort sein können, wie in einem statischen Speicher mit wahlfreiem Zugriff (SRAM) in einem Sicherheitscoprozessor oder als verschlüsselte Datenblobs, die entschlüsselt werden, wenn sie von einem Secure Enclave-(SE-)Prozessormodus geschützt werden.
  • In einer bestimmten Implementierung können periphere Ports einen High Definition Media Interface-(HDMI-)Verbinder umfassen (der verschiedene Formfaktoren haben kann, wie Full Size, Mini oder Mikro); einen oder mehrere USB-Ports, wie externe Full-Size-Ports gemäß der Universal Serial Bus Revision 3.0-Spezifikation (November 2008), wobei wenigstens einer mit Strom versorgt wird, um die USB-Vorrichtungen (wie Smartphones) zu laden, wenn das System im Connected Standby-Zustand ist und in einen WS-Wandstromanschluss eingesteckt wird. Zusätzlich kann ein oder können mehrere ThunderboltTM-Ports vorgesehen sein. Andere Ports können einen extern zugänglichen Kartenleser umfassen, wie einen Full Size SD-XC-Kartenleser und/oder einen SIM-Kartenleser für WWAN (z. B. einen 8-Pin-Kartenleser). Für Audio kann eine 3,5 mm Buchse mit Stereoton und Mikrofonfähigkeit (z. B. Kombinationsfunktionalität) mit einer Unterstützung für eine Buchsendetektion vorhanden sein (z. B. nur-Kopfhörer-Unterstützung unter Verwendung des Mikrofons im Deckel oder Kopfhörer mit Mikrofon im Kabel). In einigen Ausführungsformen kann diese Buchse zwischen Stereokopfhörer- und Stereomikrofoneingang retaskable sein. Es kann auch ein Stromanschluss zur Kopplung mit einem WS-Adapter vorgesehen sein.
  • Das System 1600 kann mit externen Vorrichtungen in verschiedenster Weise kommunizieren, einschließlich drahtlos. In der in 16 gezeigten Ausführungsform liegen verschiedene drahtlose Module vor, von denen jedes einem Funk entsprechen kann, der für ein bestimmtes drahtloses Protokoll ausgelegt ist. Eine Weise zur drahtlosen Kommunikation in einem kurzen Bereich wie einem Nahfeld kann über eine Nahfeld-Kommunikations-(NFC-)Einheit 1645 erfolgen, die in einer Ausführungsform mit dem Prozessor 1610 über einen SMBus kommunizieren kann. Es ist zu beachten, dass über diese NFC-Einheit 1645 Vorrichtungen in enger Nähe zueinander kommunizieren können. Beispielsweise kann ein Benutzer dem System 1600 ermöglichen, mit einer anderen (z. B.) tragbaren Vorrichtung, wie einem Smartphone des Benutzers, zu kommunizieren, indem die beiden Vorrichtungen in enger Beziehung gemeinsam angepasst werden und ein Transfer von Informationen wie Identifikationsinformationen, Zahlungsinformationen, Daten, wie Bilddaten, usw. freigegeben wird. Unter Verwendung eines NFC-Systems kann auch ein drahtloser Leistungstransfer vorgenommen werden.
  • Unter Verwendung des hier beschriebenen NFC-Systems können Benutzer Vorrichtungen Seite-an-Seite anordnen und Vorrichtungen Seite-an-Seite platzieren für Nahfeld-Kopplungsfunktionen (wie Nahfeldkommunikation und drahtlose Leistungsübertragung (Wireless Power Transfer, WPT) durch das Nutzen der Kopplung zwischen spulen einer oder mehrerer derartiger Vorrichtungen. Spezifischer sehen Ausführungsformen Vorrichtungen mit strategisch geformten und platzierten Ferritmaterialien vor, um eine bessere Kopplung der Spulen zu ergeben. Jede Spule hat eine mit ihr assoziierte Konduktanz, die in Verbindung mit resistiven, kapazitiven und anderen Merkmalen des Systems gewählt werden kann, um eine gemeinsame Resonanzfrequenz für das System zu ermöglichen.
  • Wie weiter in 16 ersichtlich ist, können zusätzliche drahtlose Einheiten andere drahtlose Maschinen mit kurzer Reichweite umfassen, die eine WLAN-Einheit 1650 und eine Bluetooth-Einheit 1652 umfassen. Unter Verwendung der WLAN-Einheit 1650 können WiFiTM-Kommunikationen gemäß einem gegebenen Institute of Electrical and Electronics Engineers-(IEEE-)Standard realisiert werden, wobei über die Bluetooth-Einheit 1652 Kommunikationen mit kurzer Reichweite über ein Bluetooth-Protokoll auftreten können. Diese Einheiten können mit dem Prozessor 1610 z. B. über eine USB-Verbindung oder eine Universal Asynchronous Receiver Transmitter(UART)-Verbindung kommunizieren. Oder diese Einheiten können mit dem Prozessor 1610 über eine Zwischenverbindung gemäß dem Peripheral Component Interconnect ExpressTM(PCIeTM-)Protokoll, z. B. in Übereinstimmung mit der PCI ExpressTM Specification Base Specification Version 3.0 (veröffentlicht am 17. Januar 2007) oder einem anderen derartigen Protokoll, wie einem seriellen Dateneingabe/ausgabe-(SDI-)Standard, gekoppelt sein. Natürlich kann die tatsächliche physische Verbindung zwischen diesen peripheren Vorrichtungen, die auf einer oder mehreren Add-in-Karten ausgelegt sein können, mittels der NGFF-Verbinder erfolgen, die an ein Motherboard angepasst sind.
  • Zusätzlich können drahtlose Wide Area-Kommunikationen, z. B. gemäß einem zellulären oder anderen drahtlosen Wide Area-Protokoll, über eine WWAN-Einheit 1656 auftreten, die ihrerseits mit einem Subscriber Identity Module (SIM) 1657 gekoppelt sein kann. Zusätzlich kann, um einen Empfang und eine Verwendung von Ortsinformatinen zu ermöglichen, auch ein GPS-Modul 1655 vorliegen. Es ist zu beachten, dass in der in 16 gezeigten Ausführungsform die WWAN-Einheit 1656 und eine integrierte Abfangvorrichtung, wie ein Kameramodul 1654, über ein gegebenes USB-Protokoll, wie eine USB 2.0- oder -3.0-Verbindung, oder einen UART oder ein I2C-Protokoll kommunizieren können. Wieder kann die tatsächliche physische Verbindung dieser Einheiten über eine Anpassung einer NGFF-Add-in-Karte an einen NGFF-Verbinder erfolgen, der auf dem Motherboard ausgelegt ist.
  • In einer besonderen Ausführungsform kann die drahtlose Funktionalität modular vorgesehen werden, z. B. mit der WiFiTM 802.11ac-Lösung (z. B. Add-in-Karte, die mit IEEE 802.11abgn rückwärts kompatibel ist) mit Unterstützung für Windows® 8 CS. Diese Karte kann in einem internen Slot (z. B. über einen NGFF-Adapter) ausgelegt sein. Ein zusätzliches Modul kann eine Bluetooth-Fähigkeit vorsehen (z. B. Bluetooth 4.0 mit Rückwärtskompatibilität) sowie Intel® Wireless Display-Funktionalität. Zusätzlich kann eine NFC-Unterstützung über eine getrennte Vorrichtung oder Multifunktionsvorrichtung vorgesehen werden und kann als Beispiel in einem Front End-Teil des Gehäuses für einen einfachen Zugriff positioniert werden. Noch ein zusätzliches Modul kann eine WWAN-Vorrichtung sein, die eine Unterstützung für 3G/4G/LTE und GPS liefern kann. Dieses Modul kann in einem internen (z. B. NGFF-) Slot implementiert werden. Eine integrierte Antennenunterstützung kann für die Wi-FiTM-Technologie vorgesehen werden gemäß den 802.11x Standards, der Bluetooth®-Technologie, WWAN, NFC und GPS, was einen problemlosen Übergang vom Wi-FiTM-Netzfunk zum WWAN-Funk ermöglicht, Wireless Gigabit (WiGigTM) gemäß der Wireless Gigabit Specification (Juli 2010) und umgekehrt.
  • Wie oben beschrieben, kann eine integrierte Kamera in dem Deckel eingebaut sein. Als Beispiel kann diese Kamera eine hochauflösende Kamera sein, z. B. mit einer Auflösung von wenigstens 2,0 Megapixel (MP), die sich auf 6,0 MP und darüber hinaus erstreckt.
  • Um Audio-Eingänge und -Ausgänge vorzusehen, kann ein Audio-Prozessor über einen digitalen Signalprozessor (DSP) 1660 implementiert werden, der an den Prozessor 1610 über eine High Definition Audio-(HDA-)Verbindung gekoppelt sein kann. Ähnlich kann der DSP 1660 mit einem integrierten Codierer/Decodierer (CODEC) und Verstärker 1662 kommunizieren, die ihrerseits mit Ausgabelautsprechern 1663 gekoppelt sein können, welche innerhalb des Gehäuses implementiert sein können. Ähnlich können der Verstärker und CODEC 1662 gekoppelt sein, um Audio-Eingänge von einem Mikrofon 1665 zu empfangen, das in einer Ausführungsform über Dual Array-Mikrofone (wie eine digitale Mikrofonanordnung) implementiert werden kann, um Audio-Eingänge mit hoher Qualität vorzusehen, um eine sprachaktivierte Steuerung verschiedener Operationen innerhalb des Systems zu ermöglichen. Es ist auch zu beachten, dass Audio-Ausgänge vom Verstärker/CODEC 1662 über eine Kopfhörerbuchse 1664 vorgesehen werden können. Obwohl mit diesen bestimmten Komponenten in der Ausführungsform von 16 gezeigt, ist es klar, dass der Schutzbereich der vorliegenden Offenbarung in dieser Hinsicht nicht eingeschränkt ist.
  • In einer besonderen Ausführungsform können der digitale Audio-CODEC und Verstärker die Stereokopfhörerbuchse, Stereomikrofonbuchse, eine interne Mikrofonanordnung und Stereolautsprecher treiben. In verschiedenen Implementierungen kann der CODEC in einen Audio-DSP integriert oder über einen HD-Audio-Weg mit einem peripheren Steuereinheitknoten (PCH) gekoppelt sein. In einigen Implementierungen kann oder können, zusätzlich zu integrierten Stereolautsprechern, einer oder mehrere Basslautsprecher vorgesehen sein, und die Lautsprecherlösung kann DTS-Audio unterstützen.
  • In einigen Ausführungsformen kann der Prozessor 1610 durch einen externen Spannungsregler (VR) und mehrere interne Spannungsregler mit Energie versorgt werden, die innerhalb des Prozessorchips integriert sind und so als vollintegrierte Spannungsregler (FIVRs) bezeichnet werden. Die Verwendung mehrerer FIVRs im Prozessor ermöglicht die Gruppierung von Komponenten in getrennte Leistungsebenen, so dass Energie geregelt und vom FIVR diesen Komponenten in der Gruppe zugeführt wird. Während der Leistungsverwaltung kann eine gegebene Leistungsebene eines FIVR heruntergefahren oder abgeschaltet werden, wenn der Prozessor in einen bestimmten Energiesparzustand versetzt wird, während eine andere Leistungsebene eines anderen FIVR aktiv oder vollständig mit Energie versorgt bleibt.
  • In einer Ausführungsform kann eine Halteleistungsebene während einiger Tiefschlafzustände verwendet werden, um die I/O-Pins für einige I/O-Signale mit Energie zu versorgen, wie die Schnittstelle zwischen dem Prozessor und einem PCH, die Schnittstelle mit dem externen VR und die Schnittstelle mit EC 1635. Diese Halteleistungsebene versorgt auch einen chipeigenen Spannungsregler, der den On-board-SRAM oder einen anderen Cache-Speicher unterstützt, in dem der Prozessorkontext während des Schlafzustands gespeichert ist. Die Halteleistungsebene wird auch verwendet, um die Aufwachlogik des Prozessors mit Energie zu versorgen, welche die verschiedenen Aufwach-Quellsignale überwacht und verarbeitet.
  • Obwohl während der Energieverwaltung andere Leistungsebenen heruntergefahren oder abgeschaltet werden, wenn der Prozessor in bestimmte Tiefschlafzustände eintritt, bleibt die Halteenergieebene mit Energie versorgt, um die oben bezeichneten Komponenten zu unterstützen. Dies kann jedoch zu einem unnötigen Stromverbrauch oder einer Verteilung führen, wenn diese Komponenten nicht benötigt werden. Für diesen Zweck können Ausführungsformen einen Connected Standby-Schlafzustand vorsehen, um den Prozessorkontext unter Verwendung einer dedizierten Leistungsebene aufrechtzuerhalten. In einer Ausführungsform erleichtert der Connected Standby-Schlafzustand ein Aufwachen des Prozessors unter Verwendung von Ressourcen eines PCH, der selbst in einer Packung mit dem Prozessor vorliegen kann. In einer Ausführungsform erleichtert der Connected Standby-Schlafzustand das Aufrechterhalten der Prozessorarchitekturfunktionen im PCH bis zum Aufwachen des Prozessors, wobei dies das Ausschalten aller unnötigen Prozessorkomponenten ermöglicht, die vorher während Tiefschlafzuständen mit Energie versorgt geblieben sind, einschließlich des Ausschaltens aller Takte. In einer Ausführungsform enthält der PCH einen Zeitstempelzähler (Time Stamp Counter, TSC) und angeschlossene Standby-Logik zum Steuern des Systems während des Connected Standby-Zustands. Der integrierte Spannungsregler für die Halteleistungsebene kann auch am PCH residieren.
  • In einer Ausführungsform kann während des Connected Standby-Zustands ein integrierter Spannungsregler als dedizierte Leistungsebene funktionieren, die mit Energie versorgt bleibt, um den dedizierten Cache-Speicher zu unterstützen, in dem der Prozessorkontext gespeichert wird, wie kritische Zustandsvariablen, wenn der Prozessor in die Tiefschlafzustände und den Connected Standby-Zustand eintritt. Dieser kritische Zustand kann Zustandsvarialben umfassen, die mit dem Architektur-, Mikroarchitektur-, Fehlerbeseitigungszustand und/oder ähnlichen Zustandsvariablen assoziiert sind, welche mit dem Prozessor assoziiert sind.
  • Die Aufwach-Quellsignale vom EC 1635 können an den PCH anstatt an den Prozessor während des Connected Standby-Zustands gesendet werden, so dass der PCH die Aufwachverarbeitung anstelle des Prozessors verwalten kann. Zusätzlich wird der TSC im PCH gehalten, um das halten der Prozessorarchitekturfunktionen zu erleichtern. Obwohl mit diesen besondere Komponenten in der Ausführungsform von 16 gezeigt, ist es klar, dass der Schutzbereich der vorliegenden Offenbarung in dieser Hinsicht nicht eingeschränkt ist.
  • Eine Leistungssteuerung im Prozessor kann zu verstärkten Energieeinsparungen führen. Beispielsweise kann Leistung dynamisch zwischen Kernen zugeteilt werden, individuelle Kerne können die Frequenz/Spannung ändern, und mehrere tiefe Energiesparzustände können vorgesehen werden, um einen sehr niedrigen Energieverbrauch zu ermöglichen. Zusätzlich kann eine dynamische Steuerung der Kerne oder unabhängigen Kernteile einen reduzierten Energieverbrauch vorsehen, indem Komponenten abgeschaltet werden, wenn sie nicht verwendet werden.
  • Einige Implementierungen können eine spezifische Leistungsverwaltungs-IC (PMIC) zur Steuerung der Plattformleistung vorsehen. Unter Verwendung dieser Lösung kann ein System eine sehr geringe (z. B. weniger als 5%) Batterieverschlechterung über eine erweiterte Dauer (z. B. 16 Stunden) erfahren, wenn es in einem gegebenen Standby-Zustand ist, wie in einem Win8 Connected Standby-Zustand. In einem Win8 Ruhezustand kann eine Batterielebensdauer von mehr als z. B. 9 Stunden realisiert werden (z. B. bei 150 Nits). Hinsichtlich einer Video-Wiedergabe kann eine lange Batterielebensdauer realisiert werden, z. B. kann eine voll-HD Video-Wiedergabe für mindestens 6 Stunden auftreten. Eine Plattform kann in einer Implementierung eine Energiekapazität von z. B. 35 Wattstunden (Wh) für ein Win8 CS unter Verwendung eines SSD und (z. B.) 40 bis 44 Wh für ein Win8 CS unter Verwendung eines HDD mit einer RST-Cache-Auslegung aufweisen.
  • Eine besondere Implementierung kann eine Unterstützung für 15 W nominelle CPU Thermal Design Power (TDP) liefern, mit einer auslegbaren CPU TDP von bis zu ungefähr 25 W TDP Design Point. Zusätzlich ist die Plattform kissenfreundlich (darin, dass keine heiße Luft auf den Benutzer bläst). Verschiedene maximale Temperaturpunkte können in Abhängigkeit von den oben beschriebenen Wärmemerkmalen realisiert werden. In einer Implementierung eines Kunststoffgehäuses (mit wenigstens einem Deckel oder Basisteil aus Kunststoff) kann die maximale Betriebstemperatur 52 Grad Celsius (C) sein. Und für eine Implementierung eines Metallgehäuses kann die maximale Betriebstemperatur 46°C sein.
  • In verschiedenen Implementierungen kann ein Sicherheitsmodul wie ein TPM in einen Prozessor integriert werden oder kann eine diskrete Vorrichtung sein, wie eine TPM 2.0-Vorrichtung. Mit einem integrierten Sicherheitsmodul, das auch als Platform Trust Technology (PTT) bezeichnet wird, kann ermöglicht werden, dass BIOS/Firmware bestimmte Hardware-Merkmale für bestimmte Sicherheitsmerkmale zeigt, einschließlich sicherer Instruktionen, sicheren Boots, Intel® Anti-Theft Technology, Intel® Identity Protection Technology, Intel® Trusted Execution Technology (TXT) und Intel® Manageability Engine Technology zusammen mit sicheren Benutzerschnittstellen, wie einer sicheren Tastatur und Anzeige.
  • Mit Bezugnahme als Nächstes auf 17 ist eine Ausführungsform einer System-on-Chip-(SOC-)Ausbildung gemäß Ausführungsformen der Erfindung gezeigt. Als veranschaulichendes Beispiel ist ein SOC 1700 in einem Benutzer-Equipment (UE) enthalten. In einer Ausführungsform bezieht sich, UE auf eine beliebige Vorrichtung, die von einem Endverbraucher zur Kommunikation zu verwenden ist, wie ein Hand-Telefon, Smartphone, Tablet, ultradünnes Notebook, Notebook mit Breitbandadapter, oder eine beliebige andere ähnliche Kommunikationsvorrichtung. Ein UE kann mit einer Basisstation oder einem Knoten verbunden sein, die oder der in der Natur einer Mobilstation (MS) in einem GMS-Netz entsprechen kann.
  • Hier umfasst das SOC 1700 2 Kerne – 1706 und 1707. Ähnlich der obigen Diskussion können die Kerne 1706 und 1707 mit einer Instruktionssatzarchitektur konform sein, wie ein Prozessor mit Intel® Architecture CoreTM, Advanced Micro Devices, Inc. (AMD)-Prozessor, MIPS-basierter Prozessor, ARM-basierte Prozessorausbildung oder ein Kunde davon sowie ihre Lizenzträger oder -nehmer. Die Kerne 1706 und 1707 sind mit der Cache-Steuerung 1708 gekoppelt, die mit einer Busschnittstelleneinheit 1709 und einem L2-Cache 1710 gekoppelt ist, um mit anderen Teilen des Systems 1700 zu kommunizieren. Die Zwischenverbindung 1711 umfasst eine chipeigene Zwischenverbindung, wie IOSF, AMBA oder andere oben diskutierte Zwischenverbindungen, die einen oder mehrere Aspekte der beschriebenen Offenbarung implementieren können.
  • Die Zwischenverbindung 1711 liefert Kommunikationskanäle für die anderen Komponenten, wie ein Subscriber Identity Module (SIM) 1730, um eine Schnittstelle zu einer SIM-Karte vorzusehen, ein Boot-ROM 1735, um einen Boot-Code zur Ausführung durch die Kerne 1706 und 1707 zur Initialisierung zu halten, und ein Boot-SOC 1700, eine SDRAM-Steuereinheit 1740, um eine Schnittstelle zu einem externen Speicher (z. B. DRAM 1760) zu bilden, eine Flash-Steuereinheit 1745, um eine Schnittstelle zu einem nicht-flüchtigen Speicher (z. B. Flash 1765) zu bilden, eine periphere Steuerung 1750 (z. B. Serial Peripheral Interface), um eine Schnittstelle zu Peripherievorrichtungen zu bilden, Video-CODECs 1720 und eine Video-Schnittstelle 1725, um einen Eingang anzuzeigen und zu empfangen (z. B. durch Berührung freigegebene Eingabe), GPU 1715, um grafikbezogene Berechnungen vorzunehmen, etc. Eine beliebige dieser Schnittstellen kann Aspekte der hier beschriebenen Ausführungsformen enthalten.
  • Zusätzlich veranschaulicht das System Peripherievorrichtungen zur Kommunikation, wie ein Bluetooth-Modul 1770, 3G Modem 1775, GPS 1780 und WiFi 1785. Es ist zu beachten, wie oben angegeben, dass ein UE Funk zur Kommunikation umfasst. Als Ergebnis können diese peripheren Kommunikationsmodule nicht alle enthalten sein. In einem UE sollte jedoch irgendeine Form eines Funks zur externen Kommunikation eingeschlossen sein.
  • Die nachstehend beschriebenen Ausführungsformen sind auf einen Mechanismus zur kontinuierlichen automatischen Abstimmung von Coderegionen gerichtet. Der Mechanismus kann für eine Coderegion verwendet werden, um eine optimale Hardware-(HW-)Auslegung für die Coderegion zu identifizieren und zu verwenden. Wie oben beschrieben, können Prozessorparameter bei der Herstellung, zur System-Hochfahrzeit oder während der Laufzeit eingestellt werden, und können permanent eingestellt werden, um mit verschiedensten Anwendungen kompatibel zu sein.
  • Die nachstehend beschriebenen Ausführungsformen implementieren zwei neue Instruktionen, die verwendet werden können, um: 1) eine Coderegion zur Messung zu demarkieren (z. B. Instruktionen-pro-Zyklus(IPC)-Berechnung, Stromverbrauchsmetrik oder dgl.); und/oder 2) automatisch die abstimmbaren Parameter für die demarkierte Region durch das Berechnen der Messung (z. B. IPC) der Coderegion für verschiedene Sätze abstimmbarer Parameter und Auswählen eines Satzes abstimmbarer Parameter mit der höchsten Messung (z. B. höchsten ,IPC) oder in einigen Fällen mit den niedrigen Messungen (z. B. niedrigster Energieverbrauch oder niedrigster Stromverbrauch) einzustellen. Automatisches Einstellen und automatisches Abstimmen, wie hier verwendet, zeigen an, dass die abstimmbaren Parameter für die demarkierte Region ohne Benutzerintervention, diese Anpassungen vorzunehmen, eingestellt werden können.
  • 18 ist ein Blockbild eines Prozessors 1800 zur kontinuierlichen automatischen Abstimmung von Coderegion gemäß einer Ausführungsform. Der Prozessor 1800 umfasst einen Mikrocode 1802, einen Prozessorkern 1806 und einen Programmspeicher 1804. Der Mikrocode 1802 kann im Mikrocode-ROM gespeichert werden, wie hier beschrieben, und kann Verarbeitungslogik umfassen, um einen automatischen Hardware-basierten Abstimmungsalgorithmus 1814 auszuführen, und eine interne Hardware-Tabelle 1818, die abstimmbare Prozessorparameter 1816 speichert. Der Programmspeicher 1804 speichert Instruktionen 1808, umfassend eine demarkierte Coderegion 1810, und eine Abstimmungsdatenstruktur 1812. Der Prozessorkern 1806 ist ausgelegt, den Mikrocode 1802 und die Instruktionen 1808 auszuführen, wie nachstehend detaillierter beschrieben wird. Eine demarkierte Coderegion 1810 kann ein Codestück mit einer beliebigen Größe sein. Die demarkierte Coderegion 1810 kann Teil eines Hauptprogramms sein oder kann außerhalb einer Schleife oder an anderen Orten im Code eingestellt werden.
  • Während des Betriebs führt der Prozessorkern 1806 die Instruktionen 1808 aus und identifiziert die demarkierte Coderegion 1810, wie nachstehend detaillierter beschrieben wird. Die Coderegion 1810 kann durch eine erste Instruktion demarkiert werden, die einen Beginn der Coderegion 1810 demarkiert, und eine zweite Instruktion, die ein Ende der Coderegion 1810 demarkiert. Der Prozessorkern 1806 führt auch den Mikrocode 1802 aus, um Metriken zu berechnen, die mit der Ausführung der demarkierten Coderegion 1810 zur automatische Abstimmung abstimmbarer Prozessorparameter 1816 zu berechnen, wie nachstehend detaillierter beschrieben wird. Der automatische Hardware-basierte Abstimmungsalgorithmus 1814 des Mikrocodes 1802 kann eine Abstimmungsdatenstruktur 1812 verwenden, um die abstimmbaren Prozessorparameter 1816 für die demarkierte Coderegion 1810 automatisch abzustimmen. Der automatische Hardware-basierte Abstimmungsalgorithmus 1814 nimmt eine automatische Hardware-basierte Abstimmung zu einer Anwendungslaufzeit vor. In einer Ausführungsform werden die abstimmbaren Prozessorparameter 1816 in einer internen Hardware-Tabelle 1818 gespeichert. Die interne Hardware-Tabelle 1818 kann Auslegungs-Bitmuster speichern, wobei jedes Bit des Auslegungs-Bitmusters eines der auslegbaren Merkmale freigibt oder sperrt, wie ein L1 IP-Vorabrufmerkmal. Alternativ dazu können die abstimmbaren Prozessorparameter 1816 an anderen Orten oder unter Verwendung anderer Techniken als einer internen Hardware-Tabelle 1818 gespeichert werden. In einer Ausführungsform können die erste Instruktion und die zweite Instruktion von einem Programmierer verwendet werden, um die Coderegion 1810 innerhalb der Instruktionen 1808 (z. B. innerhalb der Programmdatei) zu demarkieren, die abzustimmen sind (z. B. demarkierte Coderegion 1810). Beispielsweise ist das folgende ein Beispiel der demarkierten Coderegion 1810:
    Figure DE112013005131T5_0002
  • Die erste Instruktion und die zweite Instruktion der demarkierten Coderegionen 1810 rufen die Abstimmungsdatenstruktur 1812 auf (tune_data_structure). Die Abstimmungsdatenstruktur 1812 ist eine Datenstruktur (z. B. eine Datei), die im Programmspeicher 1804 organisiert ist. Das folgende ist ein Beispiel der Abstimmungsdatenstruktur 1812.
  • Figure DE112013005131T5_0003
  • Die interne Hardware-Tabelle 1818 kann eine begrenzte Anzahl von Auslegungs-Bitmustern, wie 4 bis 8, enthalten. Die Auslegungs-Bitmuster können in ein Auslegungs-Bitfeld (z. B. configuration_bits) geladen werden, und ein Bit in dem Auslegungs-Bitfeld zeigt an, ob ein gegebener abstimmbarer Parameter freigegeben oder gesperrt ist. Wie oben beschrieben, können einige der Prozessorparameter umfassen: (1) Hardware-(HW-)Vorabrufereinstellungen, die das Ein- oder Ausschalten einiger HW-Vorabrufer umfassen; (2) Software-(SW-)Vorabrufinstruktionseinstellungen, die das Ignorieren oder Honorieren von SW-Vorabrufinstruktionen umfassen; (3) Cache-Räumungs/Ersatzhinweise, die das Ignorieren oder Honorieren von Cache-Räumungs/Ersatzhinweisen umfassen; (4) Cache-Größen, die das dynamische Auslegen der Cache-Größen umfassen; (5) Kanäle eines dynamischen Speichers mit wahlfreiem Zugriff (DRAM), die das Auslegen von DRAM-Seitenöffnungsstrategien und Puffergrößen umfassen; und (6) HW-Puffergrößen, die das Auslegen verschiedener HW-Puffergrößen oder HW-Strukturgrößen umfassen. Die Auslegungs-Bitmuster können verwendet werden, um verschiedene Kombinationen abstimmbarer Parameter des Prozessors freizugeben oder zu sperren. Das Auslegungs-Bitmuster kann beispielsweise anzeigen, dass ein Merkmal, wie ein L1 IP-Vorabrufen, freigegeben oder gesperrt ist. Es ist zu beachten, dass die Felder der obigen Datenstruktur 1812 auf Null initialisiert werden können.
  • In einer Ausführungsform werden die beiden Instruktionen, TUNABLE_REGION_BEGIN und TUNABLE_REGION_END, als Mikrocodeflüsse implementiert, die auf den Speicher mehr als einmal zugreifen können. In einer Ausführungsform lädt die TUNABLE_REGION_BEGIN-Instruktion das ,configuration_bits' Feld unter Verwendung eines Operanden 1 (der auf tune_data_structure zeigt). Der Mikrocode des Prozessors verwendet diese Bits, um die Prozessorparameter auszulegen (z. B. um den L1-Vorabrufer freizugeben/zu sperren). Diese Instruktion kann auch den Prozessor 1800 veranlassen, den aktuellen Wert des INSTR_RETIRED Leistungszählers in das ,start icount' Feld und den CORE_CYCLES Leistungszähler in das ,start_cycle_count' Feld von tune_data_structure zu speichern. In einer weiteren Ausführungsform berechnet die TUNABLE_REGION_END Instruktion den IPC-Wert für die zwischen TUNABLE_REGION_BEGIN und TUNABLE_REGION_END demarkierte Region unter Verwendung der folgenden Formel: IPC = (INSTR_RETIRED – start_icount)/(CORE_CYCLES – start_cycle_count)
  • Falls die berechneten IPC größer sind als 'best configuration_IPC', können die berechneten IPC in das 'best_configuration_IPC' Feld geschreiben werden und die ,configuration_bits' können in das ,best_configuration_bits' Feld geschrieben werden. Es ist zu beachten, dass „beste/r/s”, wie bei der Benennung der verschiedenen Felder verwendet, verwendet werden kann, um die höchste Metrik zu bezeichnen, wie die höchsten IPC oder andere Leistungsmetrik, aber auch verwendet werden kann, um Werte für die niedrige Metrik, wie die niedrige Energieverbrauchsmetrik oder die niedrige Stromverbrauchsmetrik, zu speichern. Alternativ dazu können andere Zählerwerte verwendet werden, um andere Messungen für andere Typen metrischer Berechnungen zu verfolgen.
  • Falls das ,done training' Bit falsch ist, wählt in einer weiteren Ausführungsform diese Instruktion die nächsten Auslegungs-Bitmuster (aus der internen HW-Tabelle 1818) und schreibt das in das ,configuration_bits' Feld. Falls es kein nächstes Auslegungs-Bitmuster gibt (alle Auslegungs-Bitmuster wurden untersucht), wird das done_training Feld eingestellt (geschrieben 1), und das ,best_configuration_bits' Feld wird auf ,configuration_bits' Feld kopiert, das von der nächsten TUNABLE_REGION_BEGIN Instruktion gelesen werden kann. Dies beendet den Trainingsprozess, der die beste Auslegung findet. Wie hier beschrieben, können Bezugnahmen auf die beste Auslegung, wie durch das ,best_configuration_bits' Feld bezeichnet, der Satz von Auslegungsparametern sein, der zur höchsten Metrik führt (z. B. IPC), wie im aktuellen Beispiel beschrieben, es könnte jedoch auch die Auslegung sein, die zur niedrigsten Metrik führt, wie zur niedrigsten Energieverbrauchsmetrik.
  • Falls das ,done_training' Bit bereits eingestellt ist, vergleicht in einer weiteren Ausführungsform diese Instruktion den aktuellen IPC-Wert mit ,best_configuration_IPC', die bereits im Trainingsprozess gefunden wurde. Falls der aktuelle IPC-Wert um einen spezifizierten Betrag größer ist als ,best_configuration_IPC' (z. B. 1,10 × best_configuration_IPC), wird der Trainingsprozess neu gestartet, indem das ,done_training' Bit falsch gestellt wird und das erste Auslegungs-Bitmuster (gelesen aus der internen HW-Tabelle 1818) in das ,configuration_bits' Feld geschrieben wird. Der spezifizierte Betrag für den Neustart des Trainingsprozesses kann von einem Programmierer, einem Benutzer, einem Hersteller oder dgl. eingestellt werden. Der spezifizierte Betrag kann eine erneute Trainingsschwelle sein. Beispielsweise kann ein erneutes Training auftreten, wenn die Differenz zwischen dem aktuellen IPC-Wert und dem höchsten IPC-Wert größer ist als die erneute Trainingsschwelle. Ein erneutes Training kann beispielsweise nützlich sein, falls Änderungen in der Betriebsumgebung zu einer anderen besten Auslegung führen.
  • Wie hier beschrieben, ist der aktuelle Ansatz für einen Entwickler des Prozessors, eine Hardware-Auslegung für den Prozessor zur Zeit der Herstellung zur Verwendung in einer großen Anzahl von Anwendungen zu wählen. Für einige aktuelle Lösungen kann der Kunde die Vorgabe-Hardware-Auslegung einstellen. Beispielsweise sperren Kunden von Hochleistungsrechnern (HPC) oft alle HW-Vorabrufer im BIOS, auch wenn einige Anwendungen davon profitieren können. Die hier beschriebenen Ausführungsformen ermöglichen, dass mehrere Hardware-Auslegungen zur Laufzeit für jede Anwendung getestet werden. Beispielsweise kann, anstatt dass HPC-Kunden alle Vorabrufer im BIOS sperren, dieser Mechanismus verwendet werden, um dynamisch eine anwendbare Vorabrufereinstellung für jede Anwendung zu wählen. Obwohl aktuelle Hardware auf gemessene IPC ausgelegt werden kann, interagieren diese Hardware-Implementierungen nicht mit Instruktionen einer Anwendung, wodurch es für die Hardware schwierig wird, einige IPC-Messungen für dieselbe Coderegion vorzunehmen. Dies ist darauf zurückzuführen, dass es für die Hardware schwierig ist, den Start- und Endpunkt derselben Coderegion zu kennen. Daher ermöglichen diese Ausführungsformen präzisere IPC-Messungen zur Abstimmung für spezifizierte Coderegionen verglichen mit einer Hardware-Implementierung.
  • In einer weiteren Ausführungsform wird jeder Anwendung ihre eigene HW-Auslegung (z. B. Vorabrufereinstellung) gelassen, die für diese Anwendung spezifisch zugeschnitten ist, wie zur Optimierung der Leistung oder Optimierung des Energie- oder Stromverbrauchs. Wenn die Coderegion 1810 ein gereihter Code ist, ist in einigen Ausführungsformen die Abstimmungsdatenstruktur 1812 (z. B. ,tune_data_structure') für den Teilprozess privat (oder auf sie sollte von einem Teilprozess zugegriffen werden). In anderen Ausführungsformen sind die demarkierten Coderegionen geschachtelt, und jede abstimmbare Coderegion hat ihre eigene Abstimmungsdatenstruktur 1812. Wann immer eine Unterbrechung oder Ausnahme erfolgt, kann in anderen Ausführungsformen der Prozessor 1800 den Wert des CORE_CYCLES Leistungszählers zur Zeit der Unterbrechung oder Ausnahme in einen speziellen Hardware-Register speichern. Falls dieser Registerwert größer ist als das ,start_cycle_count' Feld einer gegebenen abstimmbaren Region, kann die TUNABLE_REGION_END Instruktion die IPC für diese Region nicht berechnen, da die Instruktionszählung und Zykluszählung wegen der Unterbrechung oder Ausnahme nicht präzise sein können. In anderen Ausführungsformen kann der Prozessor 1800 ein einzelnes gültiges Bit (in einem internen Statusregister) setzen, wenn er in eine abstimmbare Region eintritt, und wann immer eine Unterbrechung oder Ausnahme vorliegt, kann der Prozessor 1800 dieses gültige Bit löschen. Falls diese gültige Bit am Ende der abstimmbaren Region gelöscht ist, kann die TUNABLE_REGION_END Instruktion die IPC für diese Region nicht berechnen, da die Instruktionszählung und Zykluszählung wegen der Unterbrechung oder Ausnahme nicht präzise sein können.
  • Falls bestimmt wird, dass eine demarkierte Coderegion instabil ist, da sie eine konstante Abstimmung benötigt, kann in einer weiteren Ausführungsform die automatische Abstimmung der Coderegion gesperrt werden. In dieser Ausführungsform umfasst die Abstimmungsdatenstruktur 1812 ein zusätzliches ,disabled' Feld. In einer weiteren Ausführungsform kann die automatische Abstimmung vorgenommen werden, wenn die Coderegion ausreichend groß ist, dass eine Messung gemacht werden kann. Falls die Region beispielsweise zu klein ist (z. B. weniger als 100.000 Instruktionen), kann die Coderegion ignoriert werden. In einer weiteren Ausführungsform kann die automatische Abstimmung für Änderungen in den Prozessorzuständen empfindlich sein. Beispielsweise kann der automatische Abstimmungsalgorithmus Änderungen der Frequenz des Prozessors oder Ändrungen in den Prozessorzuständen (P-Zustanden) verfolgen und kann die Messungen neu starten, wenn sich die Frequenz ändert oder sich der P-Zustand ändert, da diese Änderungen die Messungen beeinträchtigen können. Es ist zu beachten, dass die neuen Instruktionen in No-Ops in Architekturen umgewandelt werden können, die diese Instruktion nicht unterstützen, um zu vermeiden, dass diese Instruktionen in der Zukunft eine Legacy-Belastung werden.
  • In einer weiteren Ausführungsform umfasst der Prozessor 1800 einen Speicher, um einen Satz von Instruktionen und Mikrocode 1802 zu speichern, und einen Prozessorkern 1806, der mit dem Speicher gekoppelt ist, um den Satz von Instruktionen und den Mikrocode 1802 auszufahren und um eine automatische Abstimmung von Prozessorparametern des Prozessors vorzunehmen. Der Prozessor 1800 ist ausgelegt, eine Coderegion des Satzes von Instruktionen zu identifizieren, die für eine automatische Abstimmung abstimmbarer Parameter des Prozessors 1800 demarkiert ist. Der Prozessor 1800 führt die Coderegion unter Verwendung eines ersten Satzes abstimmbarer Parameter aus und berechnet durch den Mikrocode 1802 eine erste Metrik der Coderegion, die den ersten Satz verwendet. Der Prozessor 1800 führt die Coderegion unter Verwendung eines zweiten Satzes abstimmbarer Parameter aus und berechnet unter Verwendung des Mikrocodes 1802 eine zweite Metrik der Coderegion, die den zweiten Satz verwendet. Der Prozessor 1800 wählt unter Verwendung des Mikrocodes 1802 einen dritten Satz abstimmbarer Parameter für die Coderegion aus dem ersten Satz und dem zweiten Satz auf der Basis der ersten Metrik und der zweiten Metrik aus. In einer Ausführungsform wählt der Prozessor 1800 eines von dem ersten Satz und dem zweiten Satz aus. Der ausgewählte dritte Satz kann eine beste Auslegung repräsentieren, wie einen Satz von Auslegungsparametern, der zu höchsten Leistung für die Coderegion führt, oder einen Satz von Auslegungsparametern, der zu niedrigsten Metrik für die Coderegion führt, wie für eine Strom- oder Energiemetrik. In einer weiteren Ausführungsform wählt der Prozessor 1800 Teile des ersten Satzes und des zweiten Satzes aus. Ansprechend auf diese Auswahl wendet der Prozessor 1800 den dritten Satz abstimmbarer Parameter an, um eine Systemauslegung des Prozessors 1800 für eine anschließende Ausführung der Coderegion zu ändern.
  • In einigen Ausführungsformen sind die erste Metrik, die zweite Metrik und anschließende Metriken Leistungsmetriken, welche die Leistung des Prozessors 1800 repräsentieren. In einer Ausführungsform sind IPC-Berechnungen die Leistungsmetrik. In einer weiteren Ausführungsform ist die Leistungsmetrik die Anzahl von Zyklen für die Coderegion. Beispielsweise ist der Prozessor 1800 in einer weiteren Ausführungsform ausgelegt, den Mikrocode 1802 auszufahren, um eine erste Instruktion zu identifizieren, die einen Beginn der Coderegion demarkiert, und verfolgt Zählerwerte für die Zykluszählung und Instruktionszählung, während die Coderegion ausgeführt wird. Der Mikrocode 1802 identifiziert eine anschließende Instruktion, die ein Ende der Coderegion demarkiert. Der Mikrocode 1802 berechnet eine Leistungsmetrik aus den Zählerwerten nach der Identifikation der anschließenden Instruktion. Der Mikrocode 1802 bestimmt, ob die Leistungsmetrik eine höchste Leistungsmetrik überschreitet, die für die aktuell getestete Coderegion gespeichert ist (nach der Identifikation der anschließenden Instruktion) und ordnet die Leistungsmetrik als höchste Leistungsmetrik zu, wenn die Leistungsmetrik die höchste Leistungsmetrik überschreitet. Es ist zu beachten, dass die höchste Leistungsmetrik anfänglich auf Null initialisiert werden kann. Die höchste Leistungsmetrik kann auch die höchste Leistungsmetrik aus den Sätzen von Auslegungsparametern sein (z. B. Auslegungs-Bitmuster), die bisher für die Coderegion getestet wurden. In anderen Ausführungsformen sind die Metriken Strommetriken, die eine Leistungseffizienz des Prozessors 1800 repräsentieren, wie Stromverbrauchsmetriken. In anderen Worten sind die Metriken Energiemetriken, die eine Energieeffizienz des Prozessors 1800 repräsentieren, wie Energieverbrauchsmetriken.
  • Es ist zu beachten, dass diese Ausführungsformen auch auf die automatische Abstimmung für eine Leistungseffizienz angewendet werden können. Dieselbe Methodologie kann angewendet werden; statt der Messung von Leistungsmetriken, wie IPC, kann jedoch der automatische Hardware-basierte Abstimmungsalgorithmus den Stromverbrauch messen und den gemessenen Stromverbrauch verwenden, um die niedrigste Stromauslegung für die Coderegion zu wählen.
  • 19 und 20 sind Flussdiagramme eines Verfahrens 1900 zur kontinuierlichen automatischen Abstimmung von Coderegion gemäß einer Ausführungsform. Das Verfahren 1900 kann durch Verarbeitungslogik vorgenommen werden, die Hardware (Schaltungen, dedizierte Logik, etc.), Software (wie sie auf einem Universalrechnersystem oder einer dedizierten Maschine läuft), Firmware (eingebettete Software) oder eine beliebige Kombination davon umfasst. In einer Ausführungsform nimmt der Prozessor 1800 von 18 das Verfahren 1900 vor. Alternativ dazu nehmen andere Komponenten der hier beschriebenen Prozessoren einige oder alle Operationen des Verfahrens 1900 vor.
  • Mit Bezugnahme auf 19 beginnt das Verfahren 1900 mit Verarbeitungslogik, welche die nächste Instruktion ausführt (Block 1902) (z. B. eine willkürliche Instruktion eines Programms, das ausgeführt wird). Die Verarbeitungslogik bestimmt, ob die nächste Instruktion die TUNABLE_REGION_BEGIN Instruktion ist (Block 1904). Wenn ja, zeichnet die Verarbeitungslogik Startzählerwerte für die Metrikberechnung auf (z. B. Zykuszählung, Instruktionszählung, kumulative Energie) (Block 1906) und geht zu Block 1908 weiter. Falls die Bestimmung in Block 1904 negativ ist, geht die Verarbeitungslogik zum nachstehend beschriebenen Block 1912 weiter. Bei Block 1908 bestimmt die Verarbeitungslogik, ob noch in der Trainingsphase (Trainingsfeld wird auf falsch gesetzt). Wenn ja, verwendet die Verarbeitungslogik das „Auslegungs-Bitmuster”, um die Systemauslegung (oder Prozessorauslegung) zu ändern, wie den Vorabrufer zu sperren (Block 1910), und kehrt zu Block 1902 für die nächste Instruktion zurück. Falls die Bestimmung in Block 1908 negativ ist, kehrt die Verarbeitungslogik zu Block 1902 zurück und führt den Block 1910 nicht aus.
  • Bei Block 1912 bestimmt die Verarbeitungslogik, ob die Instruktion die TUNABLE_REGION_END Instruktionen sind. Wenn nicht, kehrt die Verarbeitung zu Block 1902 zurück; ansonsten zeichnet die Verarbeitungslogik die Endzählerwerte auf (z. B. Zykluszählung, Instruktionszählung, kumulative Energie) und berechnet einen Metrikwert (V) (z. B. IPC, Stromverbrauchsrate oder dgl.) (Block 1914). Bei Block 1916 bestimmt die Verarbeitungslogik, ob noch in der Trainingsphase (nicht fertig mit allen Trainingsmustern). Wenn ja, bestimmt die Verarbeitungslogik, ob alle Trainingsmuster (auch als „Auslegungs-Bitmuster” bezeichnet), die in der internen Hardware-Tabelle gespeichert sind, getestet wurden (Block 1928). Wenn ja, verlässt die Verarbeitungslogik die Trainingsphase (Block 1920) und kehrt zu Block 1902 zur nächsten Instruktion zurück. Wenn nicht alle Trainingsmuster in Block 1918 beendet sind, schreibt die Verarbeitungslogik das nächste Trainingsmuster in das „configuration_bits” Feld (Block 2026 von 20) und kehrt zu Block 1912 (19) zurück. Falls bei Block 1916 die Verarbeitungslogik bestimmt, dass sie mit dem Training fertig ist, bestimmt die Verarbeitungslogik, ob der Metrikwert (V) einen aktuellen Wert der besten Auslegung (z. B. Satz von Parametern mit den höchsten IPC für die Coderegion) um einen spezifizierten Wert (z. B. X% besser) überschreitet, der in der Trainingsphase aufgezeichnet wird (Block 2024 von 20). Wenn ja, tritt die Verarbeitungslogik wieder in die Trainingsphase ein (Block 2026 von 20), wie durch das Setzen eines Bits, um ein Training zu ermöglichen, schreibt das nächste Auslegungs-Bitmuster in das „configuration_bits” Feld bei Block 2022 (20) und kehrt zu Block 1920 (19) zurück. Falls die Bestimmung bei Block 2024 negativ ist, kehrt die Verarbeitungslogik zu Block 1902 zurück, wobei sie die Blöcke 2026 und 2022 überspringt. Das Verfahren 1900 endet, wenn es keine Instruktionen mehr gibt.
  • In einer weiteren Ausführungsform des Verfahrens identifiziert die Verarbeitungslogik eine Coderegion, die für eine automatische Abstimmung von Prozessorparametern durch einen auf einem Prozessor ausgeführten Mikrocode demarkiert ist. Der Mikrocode stimmt automatisch die Prozessorparameter ohne Benutzerintervention ab und kann die Prozessorparameter automatisch zur Laufzeit einer Anwendung abstimmen. Ähnlich kann der Mikrocode automatisch verschiedene Prozessorparameter für verschiedene Anwendungen abstimmen. In einer Ausführungsform stimmt der Mikrocode automatisch die Prozessorparameter durch das Ausführen der Coderegion unter Verwendung verschiedener Kombinationen der Prozessorparameter ab, und berechnet eine Metrik der Ausführung der Coderegion für jede der verschiedenen Kombinationen der Prozessorparameter. Der Mikrocode wählt einen Satz von Prozessorparametern auf der Basis der Metriken aus.
  • In einer weiteren Ausführungsform, während einer Trainingsphase, identifiziert die Verarbeitungslogik eine erste Instruktion, die einen Beginn der Coderegion demarkiert, und verfolgt Zählerwerte für eine Zykuszählung und Instruktionszählung, während die Coderegion ausgeführt wird. Die Verarbeitungslogik identifiziert eine anschließende Instruktion, die ein Ende der Coderegion demarkiert. Ansprechend auf die anschließende Instruktion berechnet die Verarbeitungslogik eine Leistungsmetrik aus den Zählerwerten für die Metrik, bestimmt, ob die Leistungsmetrik besser ist als eine höchste Leistungsmetrik (z. B. höchte IPC für die getestete Coderegion) und ordnet die Leistungsmetrik als höchste Leistungsmetrik zu, wenn die Leistungsmetrik die höchste Leistungsmetrik überschreitet. In einer Ausführungsform ist die Metrik eine Leistungsmetrik, wie IPC, Instruktionszählung oder dgl. Wenn die IPC verwendet werden, berechnet die Verarbeitungslogik eine Anzahl von Instruktionen für die ausgeführte Coderegion, berechnet eine Anzahl von Zyklen für die ausgeführte Coderegion und teilt die Anzahl von Instruktionen durch die Anzahl von Zyklen. In einer weiteren Ausführungsform, nach der Trainingsphase, bestimmt die Verarbeitungslogik, ob die Leistungsmetrik um einen spezifizierten Betrag größer ist als der aktuelle Wert der höchsten Leistungsmetrik. Die Verarbeitungslogik tritt erneut in die Trainingsphase ein, wenn die Leistungsmetrik um den spezifizierten Betrag größer ist als der aktuelle Wert der höchsten Leistungsmetrik.
  • In einer weiteren Ausführungsform werden die abstimmbaren Parameter als Auslegungs-Bitmuster in einer internen Hardware-Tabelle im Mikrocode gespeichert, wobei jedes der Auslegungs-Bits des Auslegungs-Bitmusters anzeigt, ob ein gegebener abstimmbarer Parameter freigegeben oder gesperrt ist. In dieser Ausführungsform lädt die Verarbeitungslogik ein Auslegungs-Bitmuster aus der internen Hardware-Tabelle unter Verwendung eines ersten Operanden, der auf eine Datenstruktur zeigt, speichert einen aktuellen Wert eines rückgeordneten Instruktionsleistungszählers in einem Startzählfled der Datenstruktur und speichert einen aktuellen Wert eines Kernzyklusleistungszählers in einem Startzykluszählfeld der Datenstruktur. In einer Ausführungsform identifiziert die Verarbeitungslogik die anschließende Instruktion, berechnete eine IPC-Berechnung für die Coderegion zwischen der ersten Instruktion und der anschließenden Instruktion. Die Verarbeitungslogik schreibt die IPC-Berechnung in ein „best IPC” Feld der Datenstruktur (z. B. höchste IPC), wenn die IPC-Berechnung größer ist als ein aktueller Wert des „best IPC” Felds, und kopiert die Auslegungs-Bits des Auslegungs-Bitfelds in ein „best configurationbits” Feld (z. B. Auslegungs-Bits für das Auslegungs-Bitmuster, das den höchsten IPC-Wert ergibt) der Datenstruktur, wenn die IPC-Berechnung größer ist als der aktuelle Wert des „best IPC” Felds (z. B. höchster IPC-Wert). Das „best IPC” Feld repräsentiert den höchsten IPC-Wert, der für die Coderegion gemessen wird, und das „best configuraton-bits” Feld repräsentiert die Auslegungs-Bits, die in diesem Beispiel zum höchsten gemessenen IPC-Wert führen. In einer weiteren Ausführungsform bestimmt die Verarbeitungslogik, ob eine Trainingsphase für die Auslegungs-Bitmuster beendet ist, die in der internen Hardware-Tabelle gespeichert sind, und wählt ein nächste Auslegungs-Bitmuster aus der internen Hardware-Tabelle aus, wenn die Trainingsphase nicht beendet ist, wobei das nächste Auslegungs-Bitmuster in das „configurationbits” Feld geschrieben wird. In einer weiteren Ausführungsform bestimmt die Verarbeitungslogik, ob die IPC-Berechnung um einen spezifizierten Betrag größer ist als der aktuelle Wert des „best IPC” Felds, wenn die Trainingsphase beendet ist, und tritt erneut in die Trainingsphase ein, wenn die IPC-Berechnung um den spezifizierten Betrag größer ist als der aktuelle Wert des „best IPC” Felds.
  • Die Metrik können andere Metriken sein, wie eine Strommetrik oder Energiemetrik. Beispielsweise kann die Verarbeitungslogik einen maximalen Stromverbrauch einer Coderegion oder einen kumulativen Energieverbrauch einer Coderegion messen. Strom ist eine momentane Größe, während Energie der kumulative Stromverbrauch ist, z. B. kann Energie ein Stromverbrauch sein, der sich mit der Zeit ansammelt. Beispielsweise ist in einer Ausführungsform die Metrik eine Strom-(oder Energie-)metrik, wie der Strom-(Energie-)verbrauch oder dgl. Beispielsweise identifiziert die Verarbeitungslogik während einer Trainingsphase sowohl die erste Instruktion als auch die anschließende Instruktion, wie oben, aber verfolgt Strom-(Energie-)messungen der Ausführung der Coderegion. Ansprechend auf die anschließende Instruktion berechnet die Verarbeitungslogik eine Stromverbrauchs-(Energieverbrauchs-)metrik für die Coderegion, die ausgeführt wird, auf der Basis der verfolgten Strommessungen. Die Verarbeitungslogik bestimmt, ob die Stromverbrauchs-(oder Energieverbrauchs-)metrik eine niedrigste Stromverbrauchs-(oder Energieverbrauchs-)metrik überschreitet, und ordnet die Stromverbrauchsmetrik als niedrigste Stromverbrauchs-(oder Energieverbrauchs-)metrik zu, wenn die Stromverbrauchs-(oder Energieverbrauchs-)metrik die niedrigste Stromverbrauchsmetrik überschreitet.
  • Die hier beschriebenen Ausführungsformen ermöglichen, dass Prozessoren eine höhere Leistung liefern, indem es dem Prozessor gestattet wird, die HW-Auslegung auszuwählen, die zur höchsten Leistung führt, um eine gegebene Coderegion laufen zu lassen (z. B. ein Codestück), ohne Benutzerintervention. Beispielsweise sind Situationen, in denen Software-Vorabrufinstruktionen für ein Programm vorteilhaft sind, schwer zu bestimmen, da Software-Vorabrufinstruktionen mit einem Cache, Speichersubsystem und einem Hardware-Vorabruf positiv oder negativ interagieren können. Diese Ausführungsformen können verwendet werden, um SW-Vorabrufinstruktionen für das Durchführen eines Vorabrufs freizugeben, wenn dies in einem gegebenen System tatsächlich vorteilhaft ist. Das Gleiche gilt zur Räumung von Instruktionen, die in Many Integrated Core-(MIC-)Architekturen zu finden sind. Zusätzlich können diese Ausführungsformen ermögllichen, dass ein Prozessor mit kleineren Vorgabe-Strukturgrößen versandt wird (aus Energieeffizienzgründen), bieten aber einem Programm die Möglichkeit, nach größeren Strukturgrößen zu fragen, wenn ein Programm von größeren Strukturen wirklich profitieren kann. Insbesondere könnten diese Ausführungsformen einem Programm gestatten anzufordern, auf einem Prozessor mit höherer Leistung in einer heterogenen Umgebung zu laufen. Beispielsweise kann in einem System, wo es große Kerne und Atom-Kerne gibt, dieser Mechanismus verwendet werden, um ein demarkierter Codestück zu einem großen Kern von einem Atom-Kern zu bewegen, falls dieses Codestück davon profitiert, auf dem großen Kern zu laufen. Ferner können diese Ausführungsformen Just-in-Time-(JIT-)Kompilierer und Laufzeiten vorsehen, um einen abstimmbaren Code zu erzeugen, der automatisch von Hardware abgestimmt wird.
  • Obwohl die vorliegende Erfindung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, sind für Fachleute zahlreiche Modifikationen und Variationen davon ersichtlich. Die beigeschlossenen Ansprüche sollen alle derartigen Modifikationen und Variationen abdecken, die in den Grundgedanken und Umfang der vorliegenden Erfindung fallen.
  • Eine Ausbildung kann durch verschiedene Stufen gehen, von der Erzeugung zur Simulation zur Herstellung. Eine Ausbildung repräsentierende Daten können die Ausbildung in verschiedener Weise repräsentieren. Zuerst, wie es bei Simulationen nützlich ist, kann die Hardware unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionellen Beschreibungssprache repräsentiert werden. Zusätzlich kann ein Modell auf Schaltungsebene mit Logik und/oder Transistorgates in einigen Stufen des Ausbildungsprozesses erzeugt werden. Ferner erreichen die meisten Ausbildungen in irgendeiner Stufe eine Ebene von Daten, welche die physikalische Platzierung verschiedener Vorrichtungen in das Hardware-Modell repräsentieren. In dem Fall, wo herkömmliche Halbleiter-Herstellungstechniken verwendet werden, können die das Hardware-Modell repräsentierenden Daten jene Daten sein, welche das Vorliegen oder Fehlen verschiedener Merkmale auf verschiedenen Maskenschichten für Masken spezifizieren, die zur Erzeugung der Integrationsschaltung verwendet werden. In einer beliebigen Repräsentation der Ausbildung können die Daten in einer beliebigen Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder ein magnetischer oder optischer Speicher, wie eine Platte, kann das maschinenlesbare Medium sein, um Informationen zu speichern, die über optische oder elektrische Wellen gesendet werden, welche moduliert oder auf andere Weise generiert werden, um solche Informationen zu senden. Wenn eine elektrische Trägerwelle gesendet wird, die den Code oder die Ausbildung anzeigt oder trägt, in dem Ausmaß, dass ein Kopieren, Puffer oder eine erneute Übertragung des elektrischen Signals vorgenommen wird, wird eine neue Kopie gemacht. So kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem greifbaren, maschinenlesbaren Medium, zumindest temporär, einen Artikel speichern, wie in einer Trägerwelle codierte Informationen, die Techniken von Ausführungsformen der vorliegenden Erfindung verkörpern.
  • Ein Modul, wie hier verwendet, bezieht sich auf eine beliebige Kombination von Hardware, Software und/oder Firmware. Als Beispiel umfasst ein Modul Hardware, wie eine Mikrosteuereinheit, assoziiert mit einem nicht-transitorischen Medium, um einen Code zu speichern, der angepasst ist, von der Mikrosteuereinheit ausgeführt zu werden. Daher bezieht sich eine Bezugnahme auf ein Modul in einer Ausführungsform auf die Hardware, die spezifisch ausgelegt ist, den Code, der auf einem nicht-transitorischen Medium zu halten ist, zu erkennen und/oder auszuführen. Ferner bezieht sich in einer weiteren Ausführungsform die Verwendung eines Moduls auf das nicht-transitorische Medium, das den Code umfasst, der spezifisch angepasst ist, von der Mikrosteuereinheit ausgeführt zu werden, um vorherbestimmte Operationen vorzunehmen. Wie abgeleitet werden kann, kann sich in noch einer weiteren Ausführungsform der Ausdruck Modul (in diesem Beispiel) auf die Kombination der Mikrosteuereinheit und des nicht-transitorischen Mediums beziehen. Oft können Modulgrenzen, die als getrennt veranschaulicht werden, üblicherweise variieren und einander potentiell überlappen. Beispielsweise können ein erstes und ein zweites Modul Hardware, Software, Firmware oder Kombinationen davon gemeinsam nutzen, wobei bestimmte unabhängige Hardware, Software oder Firmware potentiell beibehalten wird. In einer Ausführungsform umfasst die Verwendung des Ausdrucks Logik Hardware wie Transistoren, Register oder andere Hardware, wie programmierbare Logikvorrichtungen.
  • Die Verwendung des Ausdrucks „ausgelegt, um” bezieht sich in einer Ausführungsform auf das Anordnen, Zusammensetzen, Herstellen, Anbieten zum Verkauf, Einführen und/oder Ausbilden einer Vorrichtung, Hardware, Logik oder eines Elements, um eine bezeichnete oder bestimmte Aufgabe vorzunehmen. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, die bzw. das nicht arbeitet, weiterhin „ausgelegt”, eine bezeichnete Aufgabe vorzunehmen, wenn sie bzw. es bezeichnet, gekoppelt und/oder gegenseitig verbunden ist, um die genannte bezeichnete Aufgabe vorzunehmen. Als rein illustratives Beispiel kann ein Logikgate eine 0 oder eine 1 während des Betriebs liefern. Aber ein Logikgate, das „ausgelegt” ist, ein Freigabesignal für einen Takt zu liefern, umfasst nicht jedes potentielle Logikgate, das eine 1 oder 0 liefern kann. Stattdessen ist das Logikgate eines, das in irgendeiner Weise gekoppelt ist, damit während des Betriebs der Ausgang 1 oder 0 den Takt freizugeben hat. Es ist wiederum anzumerken, dass die Verwendung des Ausdrucks „ausgelegt” keinen Betrieb erfordert, sondern stattdessen das Augenmerk auf dem latenten Zustand einer Vorrichtung, Hardware und/oder eines Elements liegt, wobei in dem latenten Zustand die Vorrichtung, Hardware und/oder das Element ausgebildet ist, eine bestimmte Aufgabe vorzunehmen, wenn die Vorrichtung, Hardware und/oder das Element in Betrieb sind.
  • Ferner bezieht sich die Verwendung der Ausdrücke „fähig zu” und/oder „betreibbar, um” in einer Ausführungsform auf irgendeine Vorrichtung, Logik, Hardware und/oder ein Element, die so ausgebildet sind, dass sie die Verwendung der Vorrichtung, Logik, Hardware und/oder des Elements in einer spezifischen Weise ermöglichen. Es wie oben zu beachten, dass sich in einer Ausführungsform die Verwendung von „fähig zu” und „betreibbar, um” auf den latenten Zustand einer Vorrichtung, Logik, Hardware und/oder eines Elements bezieht, wobei die Vorrichtung, Logik, Hardware und/oder das Element nicht arbeitet, aber so ausgebildet ist, dass die Verwendung einer Vorrichtung in einer spezifizierten Weise ermöglicht wird.
  • Ein Wert umfasst, wie hier verwendet, eine beliebige bekannte Darstellung einer Zahl, eines Zustands, eines Logiszustands oder eines binären Logikzustands. Oft wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1 und 0 bezeichnet, was einfach binäre Logikzustände repräsentiert. Beispielsweise bezieht sich 1 auf einen hohen Logikpegel und 0 bezieht sich auf einen niederen Logikpegel. In einer Ausführungsform kann eine Speicherzelle, wie ein Transistor oder eine Flash-Zelle, fähig sein, einen einzelnen Logikwert oder mehrere Logikwerte zu halten. Es wurden jedoch andere Darstellungen von Werten in Computersystemen verwendet. Beispielsweise kann die Dezimalzahl Zehn auch als binärer Wert von 1010 und ein hexadezimaler Buchstabe A repräsentiert werden. Daher umfasst ein Wert eine beliebige Darstellung von Informationen, die in einem Computersystem gehalten werden können.
  • Außerdem können Zustände durch Werte oder Teile von Werten repräsentiert werden. Als Beispiel kann ein erster Wert, wie eine logische Eins, einen Vorgabe- oder Initialzustand repräsentieren, während ein zweiter Wert, wie eine logische Null, einen Nicht-Vorgabezustand repräsentieren kann. Zusätzlich beziehen sich die Ausdrücke Rücksetzen und Setzen in einer Ausführungsform jeweils auf einen Vorgabe- und einen aktualisierten Wert oder Zustand. Beispielsweise umfasst ein Vorgabewert potentiell einen hohen Logikzustand, d. h. Rücksetzen, während ein aktualisierter Wert potentiell einen niedrigen Logikwert umfasst, d. h. Setzen. Es ist zu beachten, dass eine beliebige Kombination von Werten verwendet werden kann, um eine beliebige Anzahl von Zuständen zu repräsentieren.
  • Die oben angegebenen Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Codes können über Instruktionen oder Codes implementiert werden, die auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeichert sind, welche durch ein Verarbeitungselement ausgeführt werden können. Ein nicht-transitorisches maschinenzugängliches/lesbares Medium umfasst einen beliebigen Mechanismus, der Informationen in einer Form liefert (d. h. speichert und/oder sendet), die von einer Maschine, wie einem Computer oder elektronischen System, gelesen werden kann. Beispielsweise umfasst ein nicht-transitorisches maschinenzugängliches Medium einen Speicher mit wahlfreiem Zugriff (RAM), wie einen statischen RAM (SRAM) oder dynamischen RAM (DRAM), ROM, ein magnetisches oder optisches Speichermedium, Flash-Speichervorrichtungen, elektrische Speichervorrichtungen, optische Speichervorrichtungen, akustische Speichervorrichtungen oder eine andere Form von Speichervorrichtungen zum Halten von Informationen, die von transitorischen (ausgebreiteten) Signalen empfangen werden (z. B. Trägerwellen, Infrarot-Signalen, Digitalsignalen), etc., die von den nicht-transitorischen Medien zu unterscheiden sind, welche Informationen davon empfangen können.
  • Instruktionen, die zur Programmierung von Logik zur Vornahme von Ausführungsformen der Erfindung verwendet werden, können innerhalb eines Speichers im System gespeichert werden, wie eines DRAM, Cache, Flash-Speichers oder eines anderen Speichers. Ferner können die Instruktionen über ein Netz oder mittels anderer computerlesbarer Medien verbreitet werden. So kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Senden von Informationen in einer Form umfassen, die von einer Maschine (z. B. einem Computer) gelesen werden kann, ist jedoch nicht beschränkt auf: Disketten, optische Platten, Compact Disc-Nurlesespeicher (CD-ROMs) und magnetooptische Platten, Nurlesespeicher (ROMs), Speicher mit wahlfreiem Zugriff (RAM), löschbare programmierbare Nurlesespeicher (EPROM), elektrisch löschbare programmierbare Nurlesespeicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen greifbaren, maschinenlesbaren Speicher, der bei der Transmission von Informationen über das Internet über elektrische, optische, akustische oder andere Formen ausgebreiteter Signale (z. B. Trägerwellen, Infrarot-Signale, Digitalsignale) verwendet wird. Demgemäß umfasst das computerlesbare Medium einen beliebigen Typ eines greifbaren maschinenlesbaren Mediums, das zum Speichern oder Senden elektronischer Instruktionen oder Informationen in einer Form geeignet ist, die von einer Maschine (z. B. einem Computer) gelesen werden kann.
  • Eine Bezugnahme in dieser gesamten Beschreibung auf „eine Ausführungsform” bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder Charakteristik, die in Verbindung mit der Ausführungsform beschrieben werden, in wenigstens einer Ausführungsform der vorliegenden Erfindung umfasst ist. So beziehen sich Nennungen der Ausdrücke „in einer Ausführungsform” an verschiedenen Stellen in dieser gesamten Beschreibung nicht unbedingt alle auf dieselbe Ausführungsform. Ferner können die bestimmten Merkmale, Strukturen oder Charakteristiken in einer beliebigen geeigneten Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • In der obigen Beschreibung erfolgte eine detaillierte Beschreibung mit Bezugnahme auf spezifische beispielhafte Ausführungsformen. Es ist jedoch klar, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom Grundgedanken und Umfang der Erfindung abzuweichen, wie in den beigeschlossenen Ansprüchen ausgeführt. Die Beschreibung und die Zeichnungen sind demgemäß in einem illustrativen Sinn anstatt eines einschränkenden Sinns anzusehen. Ferner bezieht sich die obige Verwendung von Ausführungsform und anderer beispielhafter Sprache nicht unbedingt auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf verschiedene und bestimmte Ausführungsformen sowie potentiell dieselbe Ausführungsform beziehen.

Claims (24)

  1. Prozessor, umfassend: einen Speicher, um einen Satz von Instruktionen zu speichern; und einen Prozessorkern, der mit dem Speicher gekoppelt ist, um den Satz von Instruktionen auszuführen, wobei der Prozessorkern: eine Coderegion des Satzes von Instruktionen zu identifizieren hat, die für eine automatische Abstimmung abstimmbarer Parameter des Prozessors demarkiert ist; die Coderegion unter Verwendung eines ersten Satzes abstimmbarer Parameter auszuführen hat; eine erste Metrik der Coderegion zu berechnen hat, die den ersten Satz verwendet; die Coderegion unter Verwendung eines zweiten Satzes abstimmbarer Parameter auszuführen hat; eine zweite Metrik der Coderegion zu berechnen hat, die den zweiten Satz verwendet; einen dritten Satz abstimmbarer Parameter für die Coderegion aus dem ersten Satz und dem zweiten Satz auf der Basis der ersten Metrik und der zweiten Metrik auszuwählen hat; und ansprechend auf die Auswahl, den dritten Satz abstimmbarer Parameter anzuwenden hat, um eine Systemauslegung des Prozessors für die anschließende Ausführung der Coderegion zu ändern.
  2. Prozessor nach Anspruch 1, wobei die erste Metrik und die zweite Metrik Leistungsmetriken sind, welche die Leistung des Prozessors repräsentieren.
  3. Prozessor nach Anspruch 1, wobei die erste Metrik und die zweite Metrik Instruktionenpro-Zyklus(IPC)-Berechnungen sind.
  4. Prozessor nach Anspruch 1, wobei die erste Metrik und die zweite Metrik wenigstens eines von Stromverbrauchsmetriken oder Energieverbrauchsmetriken sind, welche die Stromeffizienz oder Energieeffizienz des Prozessors repräsentieren.
  5. Prozessor nach Anspruch 1, wobei der Prozessor ferner ausgelegt ist, einen Mikrocode auszuführen, um: eine erste Instruktion zu identifizieren, die einen Beginn der Coderegion demarkiert; Zählerwerte für eine Zykluszählung und Instruktionszählung zu verfolgen, während die Coderegion ausgeführt wird; eine anschließende Instruktion zu identifizieren, die ein Ende der Coderegion demarkiert; eine Leistungsmetrik aus den Zählerwerten nach der Identifikation der anschließenden Instruktion zu berechnen; zu bestimmen, ob die Leistungsmetrik eine höchste Leistungsmetrik nach der Identifikation der anschließenden Instruktion überschreitet; und die Leistungsmetrik als höchste Leistungsmetrik zuzuordnen, wenn die Leistungsmetrik die höchste Leistungsmetrik überschreitet.
  6. Prozessor nach Anspruch 5, wobei die erste Instruktion und die anschließende Instruktion als Mikrocodeflüsse implementiert sind.
  7. Prozessor nach Anspruch 1, wobei die abstimmbaren Parameter als Auslegungs-Bitmuster in einer internen Hardware-Tabelle in einem Mikrocode gespeichert werden, wobei jedes Auslegungs-Bit jedes der Auslegungs-Bitmuster anzeigt, ob ein gegebener abstimmbarer Parameter freigegeben oder gesperrt ist.
  8. Prozessor nach Anspruch 7, wobei der Prozessor ausgelegt ist, eine erste Instruktion zu identifizieren, die einen Beginn der Coderegion demarkiert, und wobei die erste Instruktion ausgelegt ist: ein Auslegungs-Bitmuster aus der internen Hardware-Tabelle unter Verwendung eines ersten Operanden zu laden, der auf eine Datenstruktur zeigt; einen aktuellen Wert eines rückgeordneten Instruktionsleistungszählers in einem Startzählfeld der Datenstruktur zu speichern; und einen aktuellen Wert eines Kernzyklusleistungszählers in einem Startzykluszählfeld der Datenstruktur zu speichern.
  9. Prozessor nach Anspruch 8, wobei der Prozessor ferner ausgelegt ist, eine anschließende Instruktion zu identifizieren, die ein Ende der Coderegion demarkiert, wobei die anschließende Instruktion ausgelegt ist: eine Instruktionen-pro-Zyklus(IPC)-Berechnung für die Coderegion zu berechnen, die zwischen der ersten Instruktion und der anschließenden Instruktion demarkiert ist; die IPC-Berechnung in ein höchstes IPC-Feld der Datenstruktur zu schreiben, wenn die IPC-Berechnung größer ist als ein aktueller Wert des höchsten IPC-Felds; und die Auslegungs-Bits des Auslegungs-Bitfelds in ein höchstes Auslegungs-Bitfeld der Datenstruktur zu kopieren, wenn die IPC-Berechnung größer ist als der aktuelle Wert des höchsten IPC-Felds.
  10. Prozessor nach Anspruch 8, wobei die anschließende Instruktion ferner ausgelegt ist: zu bestimmen, ob eine Trainingsphase für die Auslegungs-Bitmuster beendet ist, die in der internen Hardware-Tabelle gespeichert sind; ein nächstes Auslegungs-Bitmuster aus der internen Hardware-Tabelle auszuwählen, wenn die Trainingsphase nicht beendet ist, und das nächste Auslegungs-Bitmuster in das Auslegungs-Bitfeld zu schreiben; zu bestimmen, ob die IPC-Berechnung um einen spezifizierten Betrag größer ist als der aktuelle Wert des höchsten IPC-Felds, wenn die Trainingsphase beendet ist; und erneut in die Trainingsphase einzutreten, wenn die IPC-Berechnung um den spezifizierten Betrag größer ist als der aktuelle Wert des höchsten IPC-Felds.
  11. Verfahren, umfassend: Identifizieren einer Coderegion, die für eine automatische Abstimmung von Prozessorparametern eines Prozessors demarkiert ist; und automatisches Abstimmen der Prozessorparameter für die Coderegion, wobei das automatische Abstimmen umfasst: Ausführen der Coderegion unter Verwendung verschiedener Kombinationen der Prozessorparameter; Berechnen einer Metrik der Ausführung der Coderegion für jede der verschiedenen Kombinationen der Prozessorparameter; und Auswählen eines Satzes von Prozessorparametern auf der Basis der Metriken.
  12. Verfahren nach Anspruch 11, ferner umfassend: während einer Trainingsphase, Identifizieren einer ersten Instruktion, die einen Beginn der Coderegion demarkiert, Verfolgen von Zählerwerten für eine Zykluszählung und Instruktionszählung, während die Coderegion ausgeführt wird, Identifizieren einer anschließenden Instruktion, die ein Ende der Coderegion demarkiert, und ansprechend auf das Identifizieren der anschließenden Instruktion, Berechnen einer Leistungsmetrik aus den Zählerwerten für die Metrik, Bestimmen, ob die Leistungsmetrik eine höchste Leistungsmetrik für den Satz von Prozessorparametern überschreitet, und Zuordnen der Leistungsmetrik als höchste Leistungsmetrik, wenn die Leistungsmetrik die höchste Leistungsmetrik überschreitet.
  13. Verfahren nach Anspruch 12, wobei das Berechnen der Leistungsmetrik ein Berechnen von Instruktionen-pro-Zyklus (IPC) umfasst.
  14. Verfahren nach Anspruch 13, wobei das Berechnen der IPC umfasst: Berechnen einer Anzahl von Instruktionen für die ausgeführte Coderegion; Berechnen einer Anzahl von Zyklen für die ausgeführte Coderegion; und Teilen der Anzahl von Instruktionen durch die Anzahl von Zyklen.
  15. Verfahren nach Anspruch 12, ferner umfassend: nach der Trainingsphase, Bestimmen, ob die Leistungsmetrik um einen spezifizierten Betrag größer ist als der aktuelle Wert der höchsten Leistungsmetrik, und erneutes Eintreten in die Trainingsphase, wenn die Leistungsmetrik um den spezifizierten Betrag größer ist als der aktuelle Wert der höchsten Leistungsmetrik.
  16. Verfahren nach Anspruch 11, ferner umfassend: während einer Trainingsphase, Identifizieren einer ersten Instruktion, die einen Beginn der Coderegion demarkiert, Identifizieren einer anschließenden Instruktion, die ein Ende der Coderegion demarkiert, und ansprechend auf das Identifizieren der anschließenden Instruktion, Berechnen einer Stromverbrauchsmetrik für die Metrik der Coderegion, die ausgeführt wird, Bestimmen, ob die Stromverbrauchsmetrik eine niedrigste Stromverbrauchsmetrik überschreitet, und Zuordnen der Stromverbrauchsmetrik als niedrigste Stromverbrauchsmetrik, wenn die Stromverbrauchsmetrik die niedrigste Stromverbrauchsmetrik überschreitet.
  17. Verfahren nach Anspruch 11, wobei die abstimmbaren Parameter als Auslegungs-Bitmuster in einer internen Hardware-Tabelle in einem Mikrocode gespeichert werden, wobei jedes Auslegungs-Bit des Auslegungs-Bitmusters anzeigt, ob ein gegebener abstimmbarer Parameter freigegeben oder gesperrt ist, und wobei das Verfahren ferner umfasst: Laden eines Auslegungs-Bitmusters aus der internen Hardware-Tabelle unter Verwendung eines ersten Operanden, der auf eine Datenstruktur zeigt; Speichern eines aktuellen Werts eines rückgeordneten Instruktionsleistungszählers in einem Startzählfeld der Datenstruktur; und Speichern eines aktuellen Werts eines Kernzyklusleistungszählers in einem Startzykluszählfeld der Datenstruktur.
  18. Verfahren nach Anspruch 17, ferner umfassend: Identifizieren einer anschließenden Instruktion, die ein Ende der Coderegion demarkiert; Berechnen einer Instruktionen-pro-Zyklus(IPC)-Berechnung für die Coderegion, die zwischen der ersten Instruktion und der anschließenden Instruktion demarkiert ist; Schreiben der IPC-Berechnung in ein höchstes IPC-Feld der Datenstruktur, wenn die IPC-Berechnung größer ist als ein aktueller Wert des höchsten IPC-Felds; und Kopieren der Auslegungs-Bits des Auslegungs-Bitfelds in ein höchstes Auslegungs-Bitfeld der Datenstruktur, wenn die IPC-Berechnung größer ist als der aktuelle Wert des höchsten IPC-Felds.
  19. Verfahren nach Anspruch 18, ferner umfassend: Bestimmen, ob eine Trainingsphase für die Auslegungs-Bitmuster beendet ist, die in der internen Hardware-Tabelle gespeichert sind; Auswählen eines nächsten Auslegungs-Bitmusters aus der internen Hardware-Tabelle, wenn die Trainingsphase nicht beendet ist, und Schreiben des nächsten Auslegungs-Bitmusters in das Auslegungs-Bitfeld; Bestimmen, ob die IPC-Berechnung um einen spezifizierten Betrag größer ist als der aktuelle Wert des höchsten IPC-Felds, wenn die Trainingsphase beendet ist; und erneutes Eintreten in die Trainingsphase, wenn die IPC-Berechnung um den spezifizierten Betrag größer ist als der aktuelle Wert des höchsten IPC-Felds.
  20. Nicht-transitorisches maschinenlesbares Speichermedium, welches Daten umfasst, die, wenn auf sie von einem Prozessor zugegriffen wird, den Prozessor veranlassen, Operationen vorzunehmen, umfassend: Identifizieren einer Coderegion, die für eine automatische Abstimmung von Prozessorparametern des Prozessors demarkiert ist; und automatisches Abstimmen der Coderegion, wobei das automatische Abstimmen umfasst: Ausführen der Coderegion unter Verwendung verschiedener Sätze der Prozessorparameter; Berechnen einer Metrik der Coderegion für jeden der verschiedenen Sätze der Prozessorparameter; und Auswählen eines Satzes von Prozessorparametern auf der Basis der Metriken.
  21. Nicht-transitorisches maschinenlesbares Speichermedium nach Anspruch 20, wobei die Operationen ferner umfassen: während einer Trainingsphase, Identifizieren einer ersten Instruktion, die einen Beginn der Coderegion demarkiert, Verfolgen von Zählerwerten für eine Zykluszählung und Instruktionszählung, während die Coderegion ausgeführt wird, Identifizieren einer anschließenden Instruktion, die ein Ende der Coderegion demarkiert, und ansprechend auf das Identifizieren der anschließenden Instruktion, Berechnen einer Leistungsmetrik aus den Zählerwerten für die Metrik, Bestimmen, ob die Leistungsmetrik eine höchste Leistungsmetrik für den Satz von Prozessorparametern überschreitet, und Zuordnen der Leistungsmetrik als höchste Leistungsmetrik, wenn die Leistungsmetrik die höchste Leistungsmetrik überschreitet.
  22. Nicht-transitorisches maschinenlesbares Speichermedium nach Anspruch 21, wobei das Berechnen der Leistungsmetrik ein Berechnen von Instruktionen-pro-Zyklus (IPC) umfasst.
  23. Nicht-transitorisches maschinenlesbares Speichermedium nach Anspruch 21, wobei die Operationen ferner umfassen: nach der Trainingsphase, Bestimmen, ob die Leistungsmetrik um einen spezifizierten Betrag größer ist als der aktuelle Wert der höchsten Leistungsmetrik, und erneutes Eintreten in die Trainingsphase, wenn die Leistungsmetrik um den spezifizierten Betrag größer ist als der aktuelle Wert der höchsten Leistungsmetrik.
  24. Nicht-transitorisches maschinenlesbares Speichermedium nach Anspruch 20, wobei die Operationen ferner umfassen: während einer Trainingsphase, Identifizieren einer ersten Instruktion, die einen Beginn der Coderegion demarkiert, Identifizieren einer anschließenden Instruktion, die ein Ende der Coderegion demarkiert, ansprechend auf das Identifizieren der anschließenden Instruktion, Berechnen einer Stromverbrauchsmetrik für die Metrik der Coderegion, die ausgeführt wird, Bestimmen, ob die Stromverbrauchsmetrik eine niedrigste Stromverbrauchsmetrik für den Satz von Prozessorparametern überschreitet, und Zuordnen der Stromverbrauchsmetrik als niedrigste Stromverbrauchsmetrik, wenn die Stromverbrauchsmetrik die niedrigste Stromverbrauchsmetrik überschreitet.
DE112013005131.1T 2012-12-20 2013-06-19 Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen Withdrawn DE112013005131T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/722,243 US9558006B2 (en) 2012-12-20 2012-12-20 Continuous automatic tuning of code regions
US13/722,243 2012-12-20
PCT/US2013/046494 WO2014098983A1 (en) 2012-12-20 2013-06-19 A method, apparatus, system for continuous automatic tuning of code regions

Publications (1)

Publication Number Publication Date
DE112013005131T5 true DE112013005131T5 (de) 2015-07-16

Family

ID=50976109

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013005131.1T Withdrawn DE112013005131T5 (de) 2012-12-20 2013-06-19 Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen

Country Status (5)

Country Link
US (2) US9558006B2 (de)
KR (2) KR101683014B1 (de)
CN (2) CN104813286B (de)
DE (1) DE112013005131T5 (de)
WO (1) WO2014098983A1 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9092214B2 (en) * 2012-03-29 2015-07-28 Intel Corporation SIMD processor with programmable counters externally configured to count executed instructions having operands of particular register size and element size combination
US9690354B1 (en) 2013-05-06 2017-06-27 AGGIOS, Inc. Automatic energy design and management system for assessing system components' energy consumption, compiling energy management control and optimizing energy usage
US9652233B2 (en) * 2013-08-20 2017-05-16 Apple Inc. Hint values for use with an operand cache
US20150355927A1 (en) * 2014-06-04 2015-12-10 Yahoo! Inc. Automatic virtual machine resizing to optimize resource availability
US11403099B2 (en) 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US10635446B2 (en) * 2015-09-24 2020-04-28 Qualcomm Incorporated Reconfiguring execution pipelines of out-of-order (OOO) computer processors based on phase training and prediction
CN108701060A (zh) 2016-02-22 2018-10-23 以色列理工学院-康奈尔大学琼·雅各布斯与欧文·雅各布斯研究院 用于计算系统自动调整的方法
US10915333B2 (en) 2016-03-30 2021-02-09 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
US10303488B2 (en) * 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
CN107070606B (zh) * 2016-12-30 2020-11-17 江苏银丰信息技术有限公司 基于锯齿解码的高吞吐量重传方法
CN107193487B (zh) * 2017-04-26 2019-11-12 华中科技大学 一种随机访问识别方法及系统
WO2019040152A1 (en) * 2017-08-24 2019-02-28 Google Llc DYNAMIC CALIBRATION OF AUDIO DATA TRANSFER
US11269656B2 (en) 2017-11-30 2022-03-08 Samsung Electronics Co., Ltd. Method and device for setting operating system
GB2569109B (en) * 2017-11-30 2021-03-31 Samsung Electronics Co Ltd Setting operating system parameters based on workload types
CN108632249B (zh) * 2018-03-26 2020-12-08 厦门亿联网络技术股份有限公司 一种用于VoIP开发调试的codec解包实现方法及装置
US10649688B1 (en) * 2018-11-01 2020-05-12 Intel Corporation Precise longitudinal monitoring of memory operations
WO2020190796A1 (en) * 2019-03-15 2020-09-24 Intel Corporation Systems and methods for cache optimization
CN113366454A (zh) 2019-03-15 2021-09-07 英特尔公司 用于图形操作的多片架构
US10915421B1 (en) 2019-09-19 2021-02-09 Intel Corporation Technology for dynamically tuning processor features
CN113918081B (zh) * 2020-07-08 2024-03-26 慧荣科技股份有限公司 计算机可读取存储介质、配置可靠命令的方法及装置
CN113590206A (zh) * 2021-07-23 2021-11-02 深圳品网科技有限公司 一种兼容多种ddr型号和容量的软件实现方法
TWI804163B (zh) * 2022-01-18 2023-06-01 新唐科技股份有限公司 麥克風陣列
US11861010B2 (en) * 2022-02-14 2024-01-02 Xilinx, Inc. Extensible device hosted root of trust architecture for integrated circuits
US20230333861A1 (en) * 2022-04-15 2023-10-19 SiFive, Inc. Configuring a component of a processor core based on an attribute of an operating system process

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845310A (en) 1993-12-15 1998-12-01 Hewlett-Packard Co. System and methods for performing cache latency diagnostics in scalable parallel processing architectures including calculating CPU idle time and counting number of cache misses
US6643609B2 (en) * 2001-05-16 2003-11-04 Sharewave, Inc Performance measurement for embedded systems
WO2003090052A2 (en) * 2002-04-18 2003-10-30 Advanced Micro Devices Inc. A computer system including a secure execution mode - capable cpu and a security services processor connected via a secure communication path
US8484643B2 (en) * 2003-03-31 2013-07-09 Fujitsu Limited CPU usage time counting method and job control system using this CPU usage time
US7281145B2 (en) * 2004-06-24 2007-10-09 International Business Machiness Corporation Method for managing resources in a CPU by allocating a specified percentage of CPU resources to high priority applications
US7376849B2 (en) 2004-06-30 2008-05-20 Intel Corporation Method, apparatus and system of adjusting one or more performance-related parameters of a processor
US7370189B2 (en) 2004-09-30 2008-05-06 Intel Corporation Method and apparatus for establishing safe processor operating points in connection with a secure boot
US8966223B2 (en) * 2005-05-05 2015-02-24 Icera, Inc. Apparatus and method for configurable processing
US7493516B2 (en) 2005-08-29 2009-02-17 Searete Llc Hardware-error tolerant computing
US8266605B2 (en) * 2006-02-22 2012-09-11 Wind River Systems, Inc. Method and system for optimizing performance based on cache analysis
US7802252B2 (en) * 2007-01-09 2010-09-21 International Business Machines Corporation Method and apparatus for selecting the architecture level to which a processor appears to conform
US7660933B2 (en) * 2007-10-11 2010-02-09 Broadcom Corporation Memory and I/O bridge
US8276015B2 (en) * 2009-02-23 2012-09-25 International Business Machines Corporation Managing the power-performance range of an application
CN102073596B (zh) * 2011-01-14 2012-07-25 东南大学 针对指令的可重构片上统一存储器管理方法
US8819653B2 (en) * 2012-01-30 2014-08-26 Cisco Technology, Inc. Automated improvement of executable applications based on evaluating independent execution heuristics

Also Published As

Publication number Publication date
US9558006B2 (en) 2017-01-31
KR20160140993A (ko) 2016-12-07
US20140181487A1 (en) 2014-06-26
CN104813286B (zh) 2018-08-10
KR20150060902A (ko) 2015-06-03
CN108874457A (zh) 2018-11-23
WO2014098983A1 (en) 2014-06-26
US9904555B2 (en) 2018-02-27
CN104813286A (zh) 2015-07-29
CN108874457B (zh) 2021-08-17
KR101717410B1 (ko) 2017-03-16
US20170123817A1 (en) 2017-05-04
KR101683014B1 (ko) 2016-12-06

Similar Documents

Publication Publication Date Title
DE112013005131T5 (de) Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen
US10656697B2 (en) Processor core power event tracing
US10152599B2 (en) Security mechanisms for extreme deep sleep state
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
US20200125396A1 (en) Modifying procressor frequency based on interrupt rate
US9323528B2 (en) Method, apparatus, system creating, executing and terminating mini-threads
DE112020000231T5 (de) Einstellung von Anzeige Auffrischung Raten basierend auf Benutzer Aktivität
DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
DE112020001586T5 (de) System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors
DE102018131595A1 (de) Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen
DE112017004361T5 (de) Steuern eines leistungszustands eines prozessors unter verwendung einer kombination von package- und thread-hinweis-informationen
DE112017001704T5 (de) Arbiterbasierte Serialisierung von Prozessor-System-Management-Interrupt-Ereignissen
DE102018129330A1 (de) System, Vorrichtung und Verfahren zur prozessorexternen Überschreibung der Hardwareleistungszustandssteuerung eines Prozessors
DE112019001001T5 (de) System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen
DE102020134491A1 (de) System, Vorrichtung und Verfahren zum dynamischen Justieren von Plattformenergie und -leistung basierend auf Aufgabeneigenschaften
DE112013007702T5 (de) Befehl und Logik für den Speicherzugriff in einer geclusterten Maschine mit breiter Ausführung
DE112016006028T5 (de) Inhaltsassoziative hardware-datenstruktur zur beschleunigung von mengenoperationen
DE202016009013U1 (de) Befehle und Logik für Vektorpermutation
DE112017005000T5 (de) Prozessorspannungssteuerung unter verwendung eines beweglichen mittelwerts
US10365707B2 (en) Instruction and logic for parallel multi-step power management flow
DE112017004991T5 (de) Ausgleichssteuerung für variable energieschienen
DE112017003873T5 (de) Bereitstellung einer Schnittstelle für Herabstufungssteuerinformationen in einem Prozessor
DE102020128219A1 (de) System, Einrichtung und Verfahren zur Latenzüberwachung und Reaktion
DE102020127742A1 (de) System, vorrichtung und verfahren für eine global bewusste reaktive lokale leistungssteuerung in einem prozessor
DE112013007703T5 (de) Befehl und Logik zum Kennzeichnen von Befehlen zur Rückordnung in einem mehrsträngigen Out-of-order-Prozessor

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee