DE112020000231T5 - Einstellung von Anzeige Auffrischung Raten basierend auf Benutzer Aktivität - Google Patents

Einstellung von Anzeige Auffrischung Raten basierend auf Benutzer Aktivität Download PDF

Info

Publication number
DE112020000231T5
DE112020000231T5 DE112020000231.4T DE112020000231T DE112020000231T5 DE 112020000231 T5 DE112020000231 T5 DE 112020000231T5 DE 112020000231 T DE112020000231 T DE 112020000231T DE 112020000231 T5 DE112020000231 T5 DE 112020000231T5
Authority
DE
Germany
Prior art keywords
refresh rate
processor
display device
time
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112020000231.4T
Other languages
English (en)
Inventor
Ajay Saini
Yong-Joon Park
Sravan Akepati
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 DE112020000231T5 publication Critical patent/DE112020000231T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/20Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3041Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is an input/output interface
    • 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/3438Recording 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 monitoring of user actions
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • G09G5/005Adapting incoming signals to the display format of the display terminal
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • G09G5/006Details of the interface to the display terminal
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/18Timing circuits for raster scan displays
    • 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
    • G06F11/3419Recording 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 by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2310/00Command of the display device
    • G09G2310/04Partial updating of the display screen
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/02Improving the quality of display appearance
    • G09G2320/0252Improving the response speed
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/10Special adaptations of display systems for operation with variable images
    • G09G2320/103Detection of image changes, e.g. determination of an index representative of the image change
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/04Changes in size, position or resolution of an image
    • G09G2340/0407Resolution change, inclusive of the use of different resolutions for different screen areas
    • G09G2340/0435Change or adaptation of the frame rate of the video stream
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2354/00Aspects of interface with display user

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Power Sources (AREA)

Abstract

In einer Ausführungsform beinhaltet eine Rechenvorrichtung einen Prozessor und ein maschinenlesbares Speichermedium, das Anweisungen speichert. Wobei die Anweisungen durch den Hardware Prozessor ausführbar sein können zum: über wachen einer Benutzereingabe Vorrichtung während der Präsentation von Video frames auf einer Anzeige Vorrichtung mit einer Auffrischung Rate auf einem ersten Niveau; Bestimmen, ob ein Zeit Raum seit einer letzten Benutzer Interaktion mit der Benutzereingabe Vorrichtung einen Zeit Schwellenwert überschreitet; und Reduzieren der Auffrischung Rate der Anzeige Vorrichtung auf ein zweites Niveau als Reaktion auf eine Bestimmung, dass der Zeit Raum seit der letzten Benutzer Interaktion den Zeit Schwellenwert überschreitet. Andere Ausführungsformen sind beschrieben und beansprucht.

Description

  • Gebiet der Erfindung
  • Ausführungsformen betreffen Anzeigevorrichtungen und insbesondere Steuern von Auffrischraten in Anzeigevorrichtungen.
  • Hintergrund
  • Fortschritte in digitalen Technologien haben die Anzeige von Videobildern auf Bildschirmen erlaubt, die mit elektronischen Vorrichtungen assoziiert sind. Beispielsweise kann ein Smartphone Videobilder auf einem enthaltenen Bildschirm darstellen. Bei einem anderen Beispiel kann ein Desktop-Computer Videobilder auf einer angeschlossenen Anzeigevorrichtung (e.g., einem Monitor) präsentieren. In manchen Beispielen kann eine Rechenvorrichtung eine Anzeige-Engine zum Verarbeiten von Videobildern, die durch die Rechenvorrichtung angezeigt werden, beinhalten.
  • Figurenliste
    • 1 ist ein Blockschaltbild eines Teils eines Systems gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
    • 2 ist ein Blockschaltbild eines Prozessors gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
    • 3 ein Blockschaltbild eines Mehrbereichsprozessors gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung.
    • 4 eine Ausführungsform eines Prozessors mit mehreren Kernen.
    • 5 ist ein Blockschaltbild einer Mikroarchitektur eines Prozessorkerns gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
    • 6 ein Blockschaltbild einer Mikroarchitektur eines Prozessorkerns gemäß einem weiteren Ausführungsbeispiel.
    • 7 ein Blockschaltbild einer Mikroarchitektur eines Prozessorkerns gemäß noch einem weiteren Ausführungsbeispiel.
    • 8 ein Blockschaltbild einer Mikroarchitektur eines Prozessorkerns gemäß einem noch weiteren Ausführungsbeispiel.
    • 9 ein Blockschaltbild eines Prozessors gemäß einem weiteren Ausführungsbeispiel der vorliegenden Erfindung.
    • 10 ist ein Blockschaltbild eines repräsentativen SoC gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
    • 11 ist ein Blockschaltbild eines weiteren beispielhaften SoC gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
    • 12 ist ein Blockdiagramm eines beispielhaften Systems, mit dem Ausführungsformen verwendet werden können.
    • 13 ist ein Blockdiagramm eines anderen beispielhaften Systems, mit dem Ausführungsformen verwendet werden können.
    • 14 ein Blockschaltbild eines repräsentativen Computersystems.
    • 15 A-15 B Blockdiagramme von Systemen gemäß Ausführungsformen der vorliegenden Erfindung.
    • 16 ist ein Blockdiagramm, das ein IP-KERNENTWICKLUNGSSYSTEM veranschaulicht, das zum Herstellen einer integrierten Schaltung zum Durchführen von Operationen verwendet wird, gemäß einer Ausführungsform.
    • 17 A-17 B Blockdiagramme, die ein generisches vektorfreundliches Befehlsformat und Befehlstemplates davon gemäß Ausführungsformen der Erfindung veranschaulichen.
    • 18A-D sind Blockdiagramme, die ein beispielhaftes spezifisches vektorfreundliches Befehlsformat gemäß Ausführungsformen der Erfindung veranschaulichen.
    • 19 ein Blockschaltbild einer Registerarchitektur gemäß einem Ausführungsbeispiel der Erfindung.
    • 20 A ist ein Blockdiagramm, das sowohl eine beispielhafte reihenfolgetreue Pipeline als auch eine beispielhafte reihenfolgeveränderte Registerumbenennungs-Ausgabe-/Ausführungspipeline gemäß Ausführungsformen der Erfindung veranschaulicht.
    • 20 B ist ein Blockdiagramm, das sowohl ein Ausführungsbeispiel eines reihenfolgetreuen Architekturkerns als auch eines beispielhaften reihenfolgetreuen Ausgabe/Ausführungsarchitekturkerns mit Registerumbenennung veranschaulicht, der in einem Prozessor enthalten sein soll, gemäß Ausführungsformen der Erfindung.
    • 21A-B veranschaulichen ein Blockdiagramm einer spezifischeren beispielhaften reihenfolgetreuen Kernarchitektur, wobei der Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne des gleichen Typs und/oder unterschiedlicher Typen) in einem Chip wäre.
    • 22 ist ein Blockdiagramm eines Prozessors, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Grafiken aufweisen kann, gemäß Ausführungsformen der Erfindung.
    • 23-24 Blockdiagramme beispielhafter Computerarchitekturen.
    • 25 ist ein Blockdiagramm, das die Verwendung eines Softwarebefehlsumwandlers zum Umwandeln binärer Befehle in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz gemäß Ausführungsformen der Erfindung kontrastiert.
    • 26 ist ein Diagramm eines beispielhaften Systems gemäß einer oder mehreren Ausführungsformen.
    • 27 ist ein Flussdiagramm eines beispielhaften Verfahrens gemäß einer oder mehreren Ausführungsformen.
    • 28 ist ein Diagramm beispielhafter Ereignisse gemäß einer oder mehreren Ausführungsformen.
    • 29 ist ein Flussdiagramm eines beispielhaften Verfahrens gemäß einer oder mehreren Ausführungsformen.
    • 30 ist ein Flussdiagramm eines beispielhaften Verfahrens gemäß einer oder mehreren Ausführungsformen.
    • 31 ist ein Flussdiagramm eines beispielhaften Verfahrens gemäß einer oder mehreren Ausführungsformen.
    • 33 ist ein Diagramm einer beispielhaften Rechenvorrichtung gemäß einer oder mehreren Ausführungsformen.
    • 33 ist ein Diagramm eines beispielhaften maschinenlesbaren Speicherungsmediums, das Anweisungen speichert, gemäß einer oder mehreren Ausführungsformen.
  • Ausführliche Beschreibung
  • Ein Computer oder eine andere elektronische Vorrichtung kann eine Anzeigevorrichtung verwenden, um Videobilder darzustellen. Die Anzeigevorrichtung kann ein Monitor sein, der in der Lage ist, Videoinhalt mit mehreren Auffrischraten darzustellen. „Eine Bildwiederholrate ist die Frequenz, mit der separate Einzelbilder angezeigt werden können.“ Zum Beispiel kann eine Anzeigevorrichtung eine Auffrischrate von 48 Hz verwenden, wodurch 48 Einzelbilder pro Sekunde angezeigt werden. Eine relativ höhere Auffrischrate kann ein besseres Betrachtungserlebnis liefern als eine relativ niedrigere Auffrischrate. Dementsprechend können manche Anzeigevorrichtungen standardmäßig die maximale Auffrischrate verwenden, die in einer gegebenen Situation unterstützt werden kann. Das Verwenden einer höheren Auffrischrate kann jedoch zu mehr Gesamtleistungsverbrauch als das Verwenden einer niedrigeren Auffrischrate führen. Dementsprechend kann das Verwenden der höheren Auffrischrate mit reduzierter Batterielaufzeit, erhöhter Wärmelast und/oder erhöhten Leistungskosten assoziiert sein.
  • Gemäß einer oder mehreren Ausführungsformen kann die Auffrischrate einer Anzeigevorrichtung dynamisch angepasst werden, wenn Bedingungen detektiert werden, die angeben, dass eine niedrigere Auffrischrate wenig oder keinen Einfluss auf das Betrachtungserlebnis hätte. Bei manchen Beispielen kann die Auffrischrate reduziert werden, falls die Zeit seit der letzten Benutzereingabe eine Zeitschwelle überschritten hat, falls ein aktualisierter Rahmenteil unter einer Größenschwelle liegt, falls die Häufigkeit von Rahmenaktualisierungen geringer als die Auffrischrate ist, oder eine beliebige Kombination davon. Ferner kann die Auffrischrate erhöht werden, falls eine solche Bedingung(en) nicht mehr detektiert wird(werden). Auf diese Weise kann die Auffrischrate dynamisch angepasst werden, während eine Auswirkung auf das Betrachtungserlebnis minimiert wird. Dementsprechend können manche Ausführungsformen einen reduzierten Leistungsverbrauch der Rechenvorrichtung bereitstellen. Verschiedene Einzelheiten mancher Ausführungsformen sind weiter unten unter Bezugnahme auf die 26-33 beschrieben. Ferner sind beispielhafte Systeme und Architekturen unten unter Bezugnahme auf die 1 und 2 beschrieben. 1-25.
  • Beispielhafte Systeme und Architekturen
  • Obwohl die folgenden Ausführungsformen unter Bezugnahme auf bestimmte Implementierungen beschrieben sind, sind Ausführungsformen in dieser Hinsicht nicht beschränkt. Insbesondere wird in Betracht gezogen, dass ähnliche Techniken und Lehren von hier beschriebenen Ausführungsformen auf andere Arten von Schaltungen, Halbleitervorrichtungen, Prozessoren, Systemen usw. angewandt werden können. Zum Beispiel können die offenbarten Ausführungsformen in einer beliebigen Art von Computersystem implementiert werden, einschließlich Server-Computern (e.g., Turm, Rack, Blade, Mikroserver und so weiter), Kommunikationssystemen, Speicherungssystemen, Desktop-Computern einer beliebigen Konfiguration, Laptop, Notebook und Tablet-Computern (einschließlich 2:1-Tablets, Phablets und so weiter).
  • Zusätzlich dazu können offenbarte Ausführungsformen auch in anderen Vorrichtungen verwendet werden, wie etwa handgehaltenen Vorrichtungen, System-on-Chip (SoCs) und eingebetteten Anwendungen. Manche Beispiele für handgehaltene Vorrichtungen beinhalten Mobiltelefone, wie etwa Smartphones, Internetprotokollvorrichtungen, Digitalkameras, PDAs (Personal Digital Assistants) und handgehaltene PCs. Eingebettete Anwendungen können typischerweise einen Mikrocontroller, einen digitalen Signalprozessor (DSP), Netzwerkcomputer (NetPC), Set-Top-Boxen, Netzwerk-Hubs, Weitverkehrsnetzwerk (WAN) -Switches, Wearable-Vorrichtungen oder ein beliebiges anderes System beinhalten, das die unten gelehrten Funktionen und Operationen durchführen kann. Ferner können Ausführungsformen in mobilen Endgeräten mit standardmäßiger Sprachfunktionalität, wie etwa Mobiltelefonen, Smartphones und Phablets, und/oder in nichtmobilen Endgeräten ohne eine standardmäßige drahtlose Sprachfunktionskommunikationsfähigkeit, wie etwa vielen Wearables, Tablets, Notebooks, Desktops, Mikroservern, Servern und so weiter, implementiert werden.
  • Mit Bezug auf 1 ist ein Blockdiagramm eines Teils eines Systems gemäß einer Ausfuhrungsform der vorliegenden Erfindung gezeigt. Wie in 1 kann das System 100 verschiedene Komponenten beinhalten, einschließlich eines Prozessors 110, der, wie gezeigt, ein Mehrkernprozessor ist. Der Prozessor 110 kann über einen externen Spannungsregler 160 mit einer Leistungsversorgung 150 gekoppelt sein, der eine erste Spannungsumsetzung durchführen kann, um dem Prozessor 110 eine geregelte Primärspannung Vreg bereitzustellen.
  • Wie gesehen, kann der Prozessor 110 ein Einzel-Die-Prozessor sein, der mehrere Kerne 120 a-120 n beinhaltet. Außerdem kann jeder Kern mit einem integrierten Spannungsregler (IVR) 125 a-125 n assoziiert sein, der die primäre geregelte Spannung empfängt und eine Betriebsspannung erzeugt, die an einen oder mehrere Agenten des Prozessors geliefert werden soll, der mit dem IVR assoziiert ist. Dementsprechend kann eine IVR-IMPLEMENTIERUNG bereitgestellt werden, um eine feinkörnige Steuerung der Spannung und somit Leistung und Leistungsfähigkeit jedes einzelnen Kerns zu ermöglichen. Von daher kann jeder Kern bei einer unabhängigen Spannung und Frequenz arbeiten, was eine große Flexibilität ermöglicht und weite Möglichkeiten zum Ausgleichen des Leistungsverbrauchs mit Leistungsfähigkeit bietet. Bei manchen Ausführungsformen ermöglicht die Verwendung mehrerer IVRs das Gruppieren von Komponenten in separate Leistungsebenen, so dass Leistung durch die IVR geregelt und nur diesen Komponenten in der Gruppe zugeführt wird. Während des Leistungsmanagements kann eine gegebene Leistungsebene eines IVR herunter-oder ausgeschaltet werden, wenn der Prozessor in einen gewissen Niedrigleistungszustand versetzt wird, während eine andere Leistungsebene eines anderen IVR aktiv bleibt, oder vollständig mit Leistung versorgt wird. Gleichermaßen können die Kerne 120 unabhängige Takterzeugungsschaltkreise, wie etwa eine oder mehrere Phasenregelschleifen (PLLs), beinhalten oder damit assoziiert sein, um die Betriebsfrequenz jedes Kerns 120 unabhängig zu steuern.
  • Noch mit Bezug auf 1 können zusätzliche Komponenten innerhalb des Prozessors einschließlich einer Eingabe/Ausgabe-Schnittstelle (IF) 132, einer anderen Schnittstelle 134 und einer integrierten Speichersteuerung (IMC) 136 vorhanden sein. Wie gesehen wird, kann jede dieser Komponenten durch einen anderen integrierten Spannungsregler 125x mit Leistung versorgt werden. In einer Ausführungsform kann die Schnittstelle 132 einen Betrieb für eine Intel® QuickPath Interconnect (QPI) -Verbindung ermöglichen, die Punkt-zu-Punkt (PtP) -Verbindungen in einem cache-kohärenten Protokoll bereitstellt, das mehrere Schichten einschließlich einer physikalischen Schicht, einer Verbindungsschicht und einer Protokollschicht beinhaltet. Im Gegenzug kann die Schnittstelle 134 über ein Peripheral Component Interconnect Express (PCIe™) -Protokoll kommunizieren.
  • Außerdem ist eine Leistungssteuereinheit (PCU) 138 gezeigt, die eine Schaltungsanordnung einschließlich Hardware, Software und/oder Firmware zum Durchführen von Leistungsverwaltungsoperationen mit Bezug auf den Prozessor 110 beinhalten kann. Wie gesehen wird, liefert die PCU 138 Steuerinformationen über eine digitale Schnittstelle 162 an den externen Spannungsregler 160, um zu bewirken, dass der Spannungsregler die angemessene geregelte Spannung erzeugt. Die PCU 138 liefert auch Steuerinformationen an die IVRs 125 über eine andere digitale Schnittstelle 163, um die erzeugte Betriebsspannung zu steuern (oder um zu bewirken, dass ein entsprechender IVR in einem Niedrigleistungsmodus deaktiviert wird). Bei verschiedenen Ausführungsformen kann die PCU 138 eine Vielzahl von Leistungsverwaltungslogikeinheiten beinhalten, um eine hardwarebasierte Leistungsverwaltung durchzuführen. Eine solche Leistungsverwaltung kann vollständig prozessorgesteuert sein (e.g. durch verschiedene Prozessorhardware, und die durch Arbeitslast und/oder Leistung, thermische oder andere Prozessorbedingungen ausgelöst werden kann) und/oder die Leistungsverwaltung kann als Reaktion auf externe Quellen (wie etwa eine Plattform-oder Leistungsverwaltungsquelle oder Systemsoftware) durchgeführt werden.
  • In 1 ist die PCU 138 als eine separate Logik des Prozessors vorhanden veranschaulicht. In anderen Fällen kann DIE PCU 138 auf einem oder mehreren der gegebenen Kerne 120 ausgeführt werden. In manchen Fällen kann die PCU 138 als ein Mikrocontroller (dedizierter oder allgemeiner Zweck) oder eine andere Steuerlogik implementiert sein, die dazu konfiguriert ist, ihren eigenen dedizierten Leistungsmanagementcode, manchmal als P-code bezeichnet, auszuführen. Bei noch anderen Ausführungsformen können Leistungsverwaltungsoperationen, die durch die PCU 138 durchzuführen sind, extern zu einem Prozessor implementiert werden, wie etwa mittels einer separaten integrierten Leistungsverwaltungsschaltung (PMIC: Power Management Integrated Circuit) oder einer anderen Komponente außerhalb des Prozessors. Bei noch anderen Ausführungsformen können Leistungsverwaltungsoperationen, die von der PCU 138 auszuführen sind, innerhalb von BIOS oder einer anderen Systemsoftware implementiert werden.
  • Ausführungsformen können besonders für einen Mehrkernprozessor geeignet sein, bei dem jeder von mehreren Kernen bei einem unabhängigen Spannungs-und Frequenzpunkt arbeiten kann. Wie hier verwendet, wird der Begriff „Domäne“ verwendet, um eine Sammlung von Hardware und/oder Logik zu verstehen, die bei demselben Spannungs-und Frequenzpunkt arbeitet. Außerdem kann ein Mehrkernprozessor ferner andere Nicht-Kern-Verarbeitungs-Engines, wie Festfunktionseinheiten, Grafik-Engines und so weiter, beinhalten. Ein solcher Prozessor kann unabhängige Domänen außer den Kernen beinhalten, wie etwa eine oder mehrere Domänen, die mit einer Grafik-Engine assoziiert sind (hierin als Grafikdomäne bezeichnet), und eine oder mehrere Domänen, die mit Nicht-Kern-Schaltungen assoziiert sind, hierin als Systemagenten bezeichnet. Obwohl viele Implementierungen eines Mehrdomänenprozessors auf einem einzigen Halbleiter-Die gebildet werden können, können andere Implementierungen durch ein Mehrchipgehäuse realisiert werden, bei dem unterschiedliche Domänen auf unterschiedlichen Halbleiter-Dies eines einzigen Gehäuses vorhanden sein können.
  • Obwohl zur Vereinfachung der Veranschaulichung nicht gezeigt, versteht es sich, dass zusätzliche Komponenten innerhalb des Prozessors 110 vorhanden sein können, wie etwa Nicht-Kern-Logik, und andere Komponenten, wie etwa interne Speicher, e.g., eine oder mehrere Ebenen einer Cache-Speicherhierarchie und so weiter. Des Weiteren ist, während in der Implementierung von 1 mit einem integrierten Spannungsregler sind Ausführungsformen nicht so beschränkt. Zum Beispiel können andere geregelte Spannungen an On-Chip-Ressourcen von dem externen Spannungsregler 160 oder einer oder mehreren zusätzlichen externen Quellen geregelter Spannungen bereitgestellt werden.
  • Es wird angemerkt, dass die hier beschriebenen Leistungsmanagementtechniken unabhängig von und komplementär zu einem Betriebssystem (OS)basierten Leistungsmanagement (OSPM) -Mechanismus sein können. Gemäß einer beispielhaften OSPM-TECHNIK kann ein Prozessor bei verschiedenen Leistungsfähigkeitszuständen oder - pegeln arbeiten, sogenannten P-Zuständen, nämlich von P0 bis PN. Allgemein kann der P1-Leistungszustand dem höchsten garantierten Leistungszustand entsprechen, der durch ein OS angefordert werden kann. Zusätzlich zu diesem P1-Zustand kann das OS ferner einen höheren Leistungsfähigkeitszustand, nämlich einen P0-Zustand, anfordern. Dieser P0-Zustand kann somit ein opportunistischer, übertaktender oder Turbomoduszustand sein, in dem, wenn Leistung und/oder Thermobudget verfügbar ist, Prozessorhardware den Prozessor oder zumindest Teile davon konfigurieren kann, mit einer höheren als garantierten Frequenz zu arbeiten. Bei vielen Implementierungen kann ein Prozessor mehrere sogenannte Bin-Frequenzen oberhalb der P1 garantierten Maximalfrequenz beinhalten, die eine maximale Spitzenfrequenz des speziellen Prozessors überschreiten, wie sie während der Herstellung verschmolzen oder anderweitig in den Prozessor geschrieben werden. Außerdem kann gemäß einem OSPM-MECHANISMUS ein Prozessor bei verschiedenen Leistungszuständen oder - pegeln arbeiten. In Bezug auf Leistungszustände kann ein OSPM-MECHANISMUS unterschiedliche Leistungsverbrauchszustände, allgemein als C-Zustände bezeichnet, C0-, C1-bis Cn-Zustände spezifizieren. Wenn ein Kern aktiv ist, läuft er in einem C0-Zustand, und wenn der Kern im Leerlauf ist, kann er in einen Kern-Niedrigleistungszustand versetzt werden, der auch als Kern-C-Zustand ungleich null bezeichnet wird (e.g., C1-C6-Zustände), wobei sich jeder C-Zustand auf einem niedrigeren Leistungsverbrauchspegel befindet (so dass C6 ein tieferer Niedrigleistungszustand als C1 ist, usw.).
  • „Es versteht sich, dass viele verschiedene Arten von Leistungsmanagementtechniken einzeln oder in Kombination bei verschiedenen Ausführungsformen verwendet werden können.“ Als repräsentative Beispiele kann eine Leistungssteuerung den Prozessor steuern, um Leistung durch irgendeine Form einer dynamischen Spannungsfrequenzskalierung (DVFS: Dynamic Voltage Frequency Scaling) verwaltet zu werden, in der eine Betriebsspannung und/oder Betriebsfrequenz eines oder mehrerer Kerne oder einer anderen Prozessorlogik dynamisch gesteuert werden kann, um den Leistungsverbrauch in gewissen Situationen zu reduzieren. Bei einem Beispiel kann DVFS unter Verwendung von Enhanced Intel SpeedStep™ Technologie durchgeführt werden, die von Intel Corporation, Santa Clara, CA, verfügbar ist, um eine optimale Leistungsfähigkeit bei einem niedrigsten Leistungsverbrauchspegel bereitzustellen. In einem anderen Beispiel kann DVFS unter Verwendung von Intel TurboBoost™-Technologie durchgeführt werden, um einem oder mehreren Kernen oder anderen Rechen-Engines zu ermöglichen, basierend auf Bedingungen (e.g., Arbeitslast und Verfügbarkeit) mit einer höheren als garantierten Betriebsfrequenz zu arbeiten.
  • Eine andere Leistungsverwaltungstechnik, die in gewissen Beispielen verwendet werden kann, ist dynamisches Austauschen von Arbeitslasten zwischen verschiedenen Rechen-Engines. Der Prozessor kann zum Beispiel asymmetrische Kerne oder andere Verarbeitungs-Engines beinhalten, die bei unterschiedlichen Leistungsverbrauchspegeln arbeiten, so dass in einer leistungsbeschränkten Situation eine oder mehrere Arbeitslasten dynamisch umgeschaltet werden können, um auf einem Kern mit niedrigerer Leistung oder einer anderen Rechen-Engine ausgeführt zu werden. Eine andere beispielhafte Leistungsverwaltungstechnik ist Hardware-Tastverhältnis (HDC), das bewirken kann, dass Kerne und/oder andere Rechen-Engines periodisch gemäß einem Tastverhältnis aktiviert und deaktiviert werden, so dass ein oder mehrere Kerne während einer inaktiven Periode des Tastverhältnisses inaktiv gemacht werden können und während einer aktiven Periode des Tastverhältnisses aktiv gemacht werden können.
  • Leistungsmanagementtechniken können auch verwendet werden, wenn Einschränkungen in einer Betriebsumgebung existieren. Wenn zum Beispiel eine Leistung und/oder thermische Beschränkung angetroffen wird, kann Leistung reduziert werden, indem Betriebsfrequenz und/oder -spannung reduziert werden. Andere Leistungsverwaltungstechniken beinhalten Drosseln der Befehlsausführungsrate oder Begrenzen der Planung von Befehlen. Ferner ist es möglich, dass Befehle einer gegebenen Befehlssatzarchitektur eine ausdrückliche oder implizite Richtung bezüglich Leistungsverwaltungsoperationen beinhalten. Obwohl mit diesen speziellen Beispielen beschrieben, versteht es sich, dass viele andere Leistungsverwaltungstechniken bei speziellen Ausführungsformen verwendet werden können.
  • Ausführungsformen können in Prozessoren für verschiedene Märkte implementiert werden, einschließlich Serverprozessoren, Desktopprozessoren, Mobilprozessoren und so weiter. Mit Bezug auf 2 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 2 kann der Prozessor 200 ein Mehrkernprozessor mit mehreren Kernen 210 a-210n sein. In einer Ausführungsform kann jeder solche Kern von einer unabhängigen Leistungsdomäne sein und kann dazu konfiguriert sein, basierend auf Arbeitslast in aktive Zustände und/oder maximale Leistungsfähigkeitszustände einzutreten und auszutreten. Ein oder mehrere Kerne 210 können heterogen zu den anderen Kernen e.g sein, die unterschiedliche Mikroarchitekturen, Befehlssatzarchitekturen, Pipelinentiefen, Leistungs-und Leistungsfähigkeiten aufweisen. Die verschiedenen Kerne können über eine Zwischenverbindung 215 mit einem Systemagenten 220 gekoppelt sein, der verschiedene Komponenten beinhaltet. Wie gesehen, kann der Systemagenten 220 einen gemeinsam genutzten Cache 230 aufweisen, der ein Last-Level-Cache sein kann. Zusätzlich dazu kann der Systemagenten eine integrierte Speichersteuerung 240 zum Kommunizieren mit einem Systemspeicher (in 2) , e.g., über einen Speicherbus. Der Systemagent 220 beinhaltet auch verschiedene Schnittstellen 250 und eine Leistungssteuereinheit 255, die Logik zum Durchführen der hier beschriebenen Leistungsmanagementtechniken beinhalten kann.
  • Zusätzlich dazu kann durch die Schnittstellen 250 a-250 n eine Verbindung zu verschiedenen chipexternen Komponenten, wie etwa Peripherievorrichtungen, Massenspeicherung und so weiter, hergestellt werden. Während bei dieser speziellen Implementierung in der Ausführungsform nach 2 ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
  • Mit Bezug auf 3 ist ein Blockdiagramm eines Mehrdomänenprozessors gemäß einer anderen Ausfuhrungsform der vorliegenden Erfindung gezeigt. Wie in der Ausführungsform nach 3 beinhaltet der Prozessor 300 mehrere Domänen. Insbesondere kann eine Kerndomäne 310 mehrere Kerne 310 a-310 n beinhalten, eine Grafikdomäne 320 kann eine oder mehrere Grafik-Engines beinhalten und eine Systemagentendomäne 350 kann ferner vorhanden sein. In einigen Ausführungsformen kann die Systemagentendomäne 350 mit einer unabhängigen Frequenz als die Kerndomäne ausgeführt werden und kann jederzeit eingeschaltet bleiben, um Leistungssteuerereignisse und Leistungsmanagement zu handhaben, so dass die Domänen 310 und 320 gesteuert werden können, dynamisch in Zustände hoher Leistung und niedriger Leistung einzutreten und diese zu verlassen. Jede der Domänen 310 und 320 kann bei unterschiedlicher Spannung und/oder Leistung arbeiten. Es wird angemerkt, dass, obwohl nur mit drei Domänen gezeigt, der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist und zusätzliche Domänen bei anderen Ausführungsformen vorhanden sein können. Beispielsweise können mehrere Kerndomänen vorhanden sein, die jeweils mindestens einen Kern beinhalten.
  • Allgemein kann jeder der Kerne 310 a-310 n ferner Low-Level-Caches zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen beinhalten. Wiederum können die verschiedenen Kerne miteinander und mit einem gemeinsam genutzten Cache-Speicher gekoppelt sein, der aus mehreren Einheiten eines letzten Level-Caches (LLC) 340 a-340 n gebildet ist. Bei verschiedenen Ausführungsformen kann der LLC 340 von den Kernen und der Grafik-Engine sowie verschiedenen Medienverarbeitungsschaltkreisen gemeinsam genutzt werden. Wie gesehen wird, koppelt somit eine Ringverbindung 330 die Kerne miteinander und stellt eine Verbindung zwischen den Kernen, der Grafikdomäne 320 und der Systemagentendomäne 350 bereit. In einer Ausfuhrungsform kann die Zwischenverbindung 330 Teil der Kerndomäne sein. Bei anderen Ausführungsformen kann die Ringverbindung jedoch von ihrer eigenen Domäne sein.
  • Wie ferner gesehen wird, kann die Systemagentendomäne 350 eine Anzeigesteuerung 352 beinhalten, die eine Steuerung einer assoziierten Anzeige und eine Schnittstelle zu dieser bereitstellen kann. Wie ferner gesehen wird, kann die Systemagentendomäne 350 eine Leistungssteuereinheit 355 beinhalten, die Logik zum Durchführen der hier beschriebenen Leistungsverwaltungstechniken beinhalten kann.
  • Wie weiter aus 3 kann der Prozessor 300 ferner eine integrierte Speichersteuerung (IMC) 370 beinhalten, die eine Schnittstelle zu einem Systemspeicher, wie etwa einem dynamischen Direktzugriffsspeicher (DRAM), bereitstellen kann. Mehrere Schnittstellen 380 a-380 n können vorhanden sein, um eine Verbindung zwischen dem Prozessor und anderen Schaltungen zu ermöglichen. Zum Beispiel kann in einer Ausfuhrungsform mindestens eine direkte Medienschnittstelle (DMI) -Schnittstelle sowie eine oder mehrere PCIeTM-Schnittstellen bereitgestellt sein. Noch weiter können, um Kommunikationen zwischen anderen Agenten, wie etwa zusätzlichen Prozessoren oder anderen Schaltungen, bereitzustellen, auch eine oder mehrere QPI-SCHNITTSTELLEN bereitgestellt werden. Obwohl auf diesem hohen Niveau bei der Ausführungsform nach 3 ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
  • Mit Bezug auf 4 ist eine Ausführungsform eines Prozessors mit mehreren Kernen veranschaulicht. Der Prozessor 400 beinhaltet einen beliebigen Prozessor oder eine beliebige Verarbeitungsvorrichtung, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor, einen handgehaltenen Prozessor, einen Anwendungsprozessor, einen Coprozessor, einen System-on-Chip (SoC) oder eine andere Vorrichtung zum Ausführen von Code. Der Prozessor 400 beinhaltet in einer Ausführungsform mindestens zwei Kerne-Kerne 401 und 402, die asymmetrische Kerne oder symmetrische Kerne beinhalten können (die veranschaulichte Ausführungsform). Der Prozessor 400 kann jedoch eine beliebige Anzahl von Verarbeitungselementen beinhalten, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik, um einen Softwarethread zu unterstützen. Beispiele für Hardwareverarbeitungselemente beinhalten: eine Thread-Einheit, einen Thread-Schlitz, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardwarethread, einen Kern und/oder ein beliebiges anderes Element, das in der Lage ist, einen Zustand für einen Prozessor zu halten, wie etwa einen Ausführungszustand oder Architekturzustand. Mit anderen Worten bezieht sich ein Verarbeitungselement in einer Ausführungsform auf eine beliebige Hardware, die in der Lage ist, unabhängig mit Code assoziiert zu werden, wie etwa einen Softwarethread, ein Betriebssystem, eine Anwendung oder einen anderen Code. Ein physischer Prozessor verweist typischerweise auf eine integrierte Schaltung, die potenziell eine beliebige Anzahl anderer Verarbeitungselemente, wie etwa Kerne oder Hardware-Threads, beinhaltet.
  • Ein Kern bezieht sich häufig auf Logik, die sich auf einer integrierten Schaltung befindet, die in der Lage ist, einen unabhängigen architektonischen Zustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene architektonische Zustand mit mindestens einigen dedizierten Ausführungsressourcen assoziiert ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread typischerweise auf eine beliebige Logik, die sich auf einer integrierten Schaltung befindet, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei sich die unabhängig aufrechterhaltenen Architekturzustände Zugriff auf Ausführungsressourcen teilen. Wie gesehen werden kann, überlappt, wenn gewisse Ressourcen gemeinsam genutzt werden und andere einem Architekturzustand zugeordnet sind, die Linie zwischen der Nomenklatur eines Hardware-Threads und eines Kerns. Jedoch werden häufig ein Kern und ein Hardware-Thread von einem Betriebssystem als individuelle logische Prozessoren betrachtet, wobei das Betriebssystem in der Lage ist, Operationen auf jedem logischen Prozessor individuell zu planen.
  • Physischer Prozessor 400, wie in 4 zwei Kerne, die Kerne 401 und 402, umfasst. Hier werden die Kerne 401 und 402 als symmetrische Kerne betrachtet, d. h. Kerne mit den gleichen Konfigurationen, Funktionseinheiten und/oder Logik. Bei einer anderen Ausfuhrungsform beinhaltet der Kern 401 einen Außer-Reihenfolge-Prozessorkern, während der Kern 402 einen In-Reihenfolge-Prozessorkern beinhaltet. Die Kerne 401 und 402 können jedoch individuell aus einer beliebigen Art von Kern ausgewählt werden, wie etwa einem nativen Kern, einem softwareverwalteten Kern, einem Kern, der dazu ausgelegt ist, eine native Befehlssatzarchitektur (ISA) auszuführen, einem Kern, der dazu ausgelegt ist, eine übersetzte ISA auszuführen, einem co-entworfenen Kern oder einem anderen bekannten Kern. Noch um die Erörterung weiter zu bedienen, werden die in Kern 401 veranschaulichten Funktionseinheiten unten ausführlicher beschrieben, da die Einheiten in Kern 402 auf eine ähnliche Weise arbeiten.
  • Wie dargestellt, weist der Kern 401 zwei Architekturzustandsregister 401 a und 401 b auf, die mit zwei HardwareThreads (auch als Hardwarethread-Slots bezeichnet) assoziiert sein können. Daher betrachten Softwareentitäten, wie etwa ein Betriebssystem, in einer Ausfuhrungsform potentiell den Prozessor 400 als vier separate Prozessoren, d. h. vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, vier Software-Threads gleichzeitig auszuführen. Wie oben angeführt, ist ein erster Thread mit Architekturzustandsregistern 401 a assoziiert, ein zweiter Thread ist mit Architekturzustandsregistern 401 b assoziiert, ein dritter Thread kann mit Architekturzustandsregistern 402 a assoziiert sein und ein vierter Thread kann mit Architekturzustandsregistern 402 b assoziiert sein. Hier können die Architekturzustandsregister (401 a, 401 b, 402 a und 402 b) Verarbeitungselementen, Thread-Schlitzen oder Thread-Einheiten zugeordnet sein, wie oben beschrieben. Wie veranschaulicht, werden Architekturzustandsregister 401 a in Architekturzustandsregistern 401 b repliziert, so dass individuelle Architekturzustände/Kontexte für den logischen Prozessor 401 a und den logischen Prozessor 401 b gespeichert werden können. Im Kern 401 können auch andere kleinere Ressourcen, wie Befehlszeiger und Umbenennungslogik im Zuordnungs-und Umbenennungsblock 430 für die Threads 401 a und 401 b repliziert werden. Einige Ressourcen, wie etwa Neuordnungspuffer in der Neuordnungs/Rückzugseinheit 435, Verzweigungszielpuffer und Befehlsübersetzungspuffer (BTB und 1-TLB) 420, Lade-/Speicherpuffer und Warteschlangen können durch Partitionierung gemeinsam genutzt werden. Andere Ressourcen, wie etwa universelle interne Register, Seitentabellenbasisregister, Low-Level-Daten-Cache und Daten-TLB 450, Ausführungseinheit(en) 440 und Abschnitte der Umordnungs-/Rückzugseinheit 435 werden potentiell vollständig geteilt.
  • Der Prozessor 400 beinhaltet häufig andere Ressourcen, die vollständig gemeinsam genutzt, durch Partitionierung gemeinsam genutzt oder durch Verarbeitungselemente dediziert werden können. In 4 ist eine Ausfuhrungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors dargestellt. Es wird angemerkt, dass ein Prozessor beliebige dieser Funktionseinheiten beinhalten oder weglassen kann sowie beliebige andere bekannte Funktionseinheiten, Logik oder Firmware beinhalten kann, die nicht dargestellt sind. Wie veranschaulicht, beinhaltet der Kern 401 einen vereinfachten, repräsentativen Out-Of-Order (OOO) -Prozessorkern. Jedoch kann ein In-Order-Prozessor bei verschiedenen Ausführungsformen genutzt werden.
  • Der Kern 401 beinhaltet ferner ein Decodierungsmodul 425, das mit einer Abrufeinheit gekoppelt ist, um abgerufene Elemente zu decodieren. Abruflogik weist in einer Ausfuhrungsform individuelle Sequenzierer auf, die jeweils mit Thread-Schlitzen 401 a, 401 b assoziiert sind. Üblicherweise ist der Kern 401 mit einer ersten ISA assoziiert, die Anweisungen definiert/spezifiziert, die auf dem Prozessor 400 ausführbar sind. Häufig beinhalten Maschinencodeanweisungen, die Teil der ersten ISA sind, einen Teil der Anweisung (als ein Opcode bezeichnet), der eine durchzuführende Anweisung oder Operation referenziert/spezifiziert. Das Decodierungsmodul 425 beinhaltet eine Schaltungsanordnung, die diese Befehle anhand ihrer Opcodes erkennt und die decodierten Befehle in der Pipeline zur Verarbeitung weiterleitet, wie durch die erste ISA definiert. Zum Beispiel beinhaltet das Decodiermodul 425 in einer Ausführungsform Logik, die dazu ausgelegt oder angepasst ist, spezifische Anweisungen, wie etwa transaktionale Anweisungen, zu erkennen. Als ein Ergebnis der Erkennung durch das Decodiermodul 425 ergreift die Architektur oder der Kern 401 spezifische, vordefinierte Handlungen, um Aufgaben durchzuführen, die mit dem geeigneten Befehl assoziiert sind. Es ist wichtig anzumerken, dass beliebige der hier beschriebenen Aufgaben, Blöcke, Operationen und Verfahren als Reaktion auf einen einzelnen oder mehrere Befehle durchgeführt werden können, von denen einige neue oder alte Befehle sein können.
  • In einem Beispiel beinhaltet der Zuordnungs-und Umbenennerblock 430 einen Zuordner zum Reservieren von Ressourcen, wie Registerdateien zum Speichern von Befehlsverarbeitungsergebnissen. Die Threads 401 a und 401 b sind jedoch potenziell zur Ausführung außerhalb der Reihenfolge in der Lage, wobei der Zuordnungs-und Umbenennerblock 430 auch andere Ressourcen reserviert, wie etwa Umordnungspuffer, um Befehlsergebnisse zu verfolgen. Der Umbenennungsblock 430 kann auch einen Registerumbenenner zum Umbenennen von Programm-/Befehlsreferenzregistern in andere Register innerhalb des Prozessors 400 beinhalten. Die Neuordnung/Zurückzieheinheit 435 beinhaltet Komponenten, wie etwa die oben erwähnten Neuordnungspuffer, Ladepuffer und Speicherpuffer, um die Ausführung außerhalb der Reihenfolge und die spätere In-Reihenfolge-Zurückziehung von Befehlen, die außerhalb der Reihenfolge ausgeführt werden, zu unterstützen.
  • Der Scheduler-und Ausführungseinheit(en) -Block 440 beinhaltet in einer Ausführungsform eine Schedulereinheit zum Planen von Anweisungen/Operationen an Ausführungseinheiten. Zum Beispiel wird ein Gleitkomma-Befehl auf einem Port einer Ausführungseinheit geplant, die eine verfügbare Gleitkomma-Ausführungseinheit aufweist. Registerdateien, die mit den Ausführungseinheiten assoziiert sind, sind auch enthalten, um Informationsanweisungsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten beinhalten eine Gleitkomma-Ausführungseinheit, eine Ganzzahlausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Der Daten-Cache niedrigerer Ebene und der Datenübersetzungspuffer (D-TLB) 450 sind mit der (den) Ausführungseinheit(en) 440 gekoppelt. Der Daten-Cache soll kürzlich verwendete/betriebene Elemente, wie Datenoperanden, speichern, die potenziell in Speicherkohärenzzuständen gehalten werden. Der D-TLB soll kürzliche virtuelle/lineare in physikalische Adressübersetzungen speichern. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur beinhalten, um physischen Speicher in mehrere virtuelle Seiten aufzuteilen.
  • Hier teilen sich die Kerne 401 und 402 Zugriff auf den Cache 410 höherer Ebene oder weiter unten, der kürzlich abgerufene Elemente zwischenspeichern soll. Es wird angemerkt, dass eine höhere Ebene oder eine weitere Ebene sich auf Cache-Ebenen bezieht, die von der (den) Ausführungseinheit(en) zunehmen oder weiter entfernt sind. In einer Ausfuhrungsform ist der Cache 410 höherer Ebene ein Daten-Cache der letzten Ebene-letzter Cache in der Speicherhierarchie auf Prozessor 400-wie ein Daten-Cache der zweiten oder dritten Ebene. Der High-Level-Cache 410 ist jedoch nicht so beschränkt, da er mit einem Anweisungs-Cache assoziiert sein kann oder einen Anweisungs-Cache enthält. Ein Trace-Cache-ein Typ von Befehls-Cache-kann stattdessen nach dem Decodiermodul 425 gekoppelt sein, um kürzlich decodierte Traces zu speichern.
  • Bei der abgebildeten Konfiguration beinhaltet der Prozessor 400 auch eine Busschnittstelle 405 und eine Leistungssteuereinheit 460, die ein Leistungsmanagement gemäß einer Ausfuhrungsform der vorliegenden Erfindung durchführen kann. In diesem Szenario soll die Busschnittstelle 405 mit Vorrichtungen außerhalb des Prozessors 400 kommunizieren, wie etwa Systemspeicher und anderen Komponenten.
  • Eine Speichersteuerung 470 kann mit anderen Vorrichtungen, wie etwa einem oder vielen Speichern, eine Schnittstelle bilden. In einem Beispiel beinhaltet die Busschnittstelle 405 eine Ringverbindung mit einer Speichersteuerung zum Verbinden mit einem Speicher und eine Grafiksteuerung zum Verbinden mit einem Grafikprozessor. In einer SoC-Umgebung können noch mehr Vorrichtungen, wie etwa eine Netzwerkschnittstelle, Coprozessoren, Speicher, Grafikprozessor und beliebige andere bekannte Computervorrichtungen/Schnittstelle, auf einem einzigen Die oder einer integrierten Schaltung integriert sein, um einen kleinen Formfaktor mit hoher Funktionalität und niedrigem Stromverbrauch bereitzustellen.
  • Mit Bezug auf 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 kann der Prozessorkern 500 ein mehrstufiger Pipeline-out-of-order Prozessor sein. Der Kern 500 kann bei verschiedenen Spannungen basierend auf einer empfangenen Betriebsspannung arbeiten, die von einem integrierten Spannungsregler oder externen Spannungsregler empfangen werden kann.
  • Wie aus 5 beinhaltet der Kern 500 Frontendeinheiten 510, die verwendet werden können, um auszuführende Anweisungen abzurufen und sie für eine spätere Verwendung in der Prozessor-Pipeline vorzubereiten. Zum Beispiel können die Frontendeinheiten 510 eine Abrufeinheit 501, einen Anweisungs-Cache 503 und einen Anweisungsdecodierer 505 aufweisen. Bei manchen Implementierungen können die Frontendeinheiten 510 ferner einen Trace-Cache zusammen mit einem Mikrocodespeicher sowie einem Mikrooperationsspeicher beinhalten. Die Abrufeinheit 501 kann Makrobefehle e.g aus dem Speicher oder Befehls-Cache 503 abrufen und sie dem Befehlsdecodierer 505 zuführen, um sie in Primitive, d. h. Mikrooperationen zur Ausführung durch den Prozessor, zu decodieren.
  • Zwischen Frontendeinheiten 510 und Ausführungseinheiten 520 ist eine Out-Of-Order (OOO) -Engine 515 gekoppelt, die verwendet werden kann, um die Mikrobefehle zu empfangen und sie zur Ausführung vorzubereiten. Genauer gesagt kann die OOO-ENGINE 515 verschiedene Puffer beinhalten, um den Mikrobefehlsfluss neu zu ordnen und verschiedene Ressourcen zuzuweisen, die zur Ausführung benötigt werden, sowie um Umbenennung logischer Register auf Speicherorte innerhalb verschiedener Registerdateien, wie Registerdatei 530 und erweiterter Registerdatei 535, bereitzustellen. Die Registerdatei 530 kann separate Registerdateien für Ganzzahl-und Gleitkommaoperationen beinhalten. Für Zwecke der Konfiguration, Steuerung und zusätzlicher Operationen kann auch ein Satz von maschinenspezifischen Registern (MSRs) 538 vorhanden sein und für verschiedene Logik innerhalb des Kerns 500 (und außerhalb des Kerns) zugänglich sein.
  • Verschiedene Ressourcen können in Ausführungseinheiten 520 vorhanden sein, einschließlich zum Beispiel verschiedener Ganzzahl-, Gleitkomma-und Einzelbefehls-Mehrfachdaten (SIMD) -Logikeinheiten unter anderen spezialisierten Hardware. Solche Ausführungseinheiten können zum Beispiel unter anderen solchen Ausführungseinheiten eine oder mehrere arithmetische Logikeinheiten (ALUs) 522 und eine oder mehrere Vektorausführungseinheiten 524 beinhalten.
  • Ergebnisse von den Ausführungseinheiten können einer Rückzugslogik, nämlich einem Neuordnungspuffer (ROB) 540, bereitgestellt werden. Genauer gesagt, kann ROB 540 verschiedene Arrays und Logik zum Empfangen von Informationen beinhalten, die mit Anweisungen assoziiert sind, die ausgeführt werden. Diese Informationen werden dann durch ROB 540 untersucht, um zu bestimmen, ob die Anweisungen gültig zurückgenommen werden können und Ergebnisdaten an den Architekturzustand des Prozessors übergeben werden, oder ob eine oder mehrere Ausnahmen aufgetreten sind, die eine ordnungsgemäße Zurücknahme der Anweisungen verhindern. Natürlich kann die ROB 540 andere Operationen handhaben, die mit dem Zurückziehen assoziiert sind.
  • Wie in 5 ist ROB 540 mit einem Cache 550 gekoppelt, der in einer Ausführungsform ein Low-Level-Cache (e.g., ein L1-Cache) sein kann, obwohl der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist. Außerdem können die Ausführungseinheiten 520 direkt mit dem Cache 550 gekoppelt sein. Vom Cache 550 kann eine Datenkommunikation mit Caches höherer Ebene, Systemspeicher usw. stattfinden. Während bei diesem High-Pegel im Ausführungsbeispiel nach 5 ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt. Während zum Beispiel die Implementierung von 5 in Bezug auf eine Außer-Reihenfolge-Maschine, wie etwa auf eine Intel® x86-Befehlssatz-Architektur (ISA), ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt. Das heißt, andere Ausführungsformen können in einem reihenfolgetretenden Prozessor, einem RISC-PROZESSOR (RISC: Reduced Instruction Set Computing), wie etwa einem ARM-basierten Prozessor, oder einem Prozessor eines anderen Typs von ISA implementiert sein, der Befehle und Operationen einer anderen ISA über eine Emulations-Engine und eine assoziierte Logikschaltungsanordnung emulieren kann.
  • Mit Bezug auf 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer anderen Ausführungsform gezeigt. Bei der Ausführungsform nach 6 kann der Kern 600 ein Niedrigleistungskern einer anderen Mikroarchitektur sein, wie etwa ein Intel® Atom™-based-Prozessor mit einer relativ begrenzten Pipelinentiefe, die dazu ausgelegt ist, den Leistungsverbrauch zu reduzieren. Wie zu sehen ist, weist der Kern 600 einen Anweisungs-Cache 610 auf, der gekoppelt ist, um Anweisungen an einen Anweisungsdecodierer 615 bereitzustellen. Ein Verzweigungsvorhersager 605 kann mit dem Befehls-Cache 610 gekoppelt sein. Es wird angemerkt, dass der Anweisungs-Cache 610 ferner mit einer anderen Ebene eines Cache-Speichers gekoppelt sein kann, wie etwa einem L2-Cache (der Einfachheit der Veranschaulichung in 6) . Im Gegenzug stellt der Befehlsdecodierer 615 decodierte Befehle an eine Ausgabewarteschlange (IQ) 620 zur Speicherung und Lieferung an eine gegebene Ausführungs-Pipeline bereit. Ein MIKROCODE-ROM 618 ist mit dem Befehlsdecoder 615 gekoppelt.
  • Eine Gleitkomma-Pipeline 630 beinhaltet eine Gleitkomma (FP) -Registerdatei 632, die eine Vielzahl von Architekturregistern einer gegebenen Bitbreite, wie etwa 128, 256 oder 512 Bits, beinhalten kann. Die Pipeline 630 beinhaltet einen Gleitkomma-Planer 634 zum Planen von Anweisungen zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline. Bei der gezeigten Ausfuhrungsform weisen solche Ausführungseinheiten eine arithmetische Logikeinheit (ALU) 635, eine Mischeinheit 636 und einen Gleitkomma (FP) - Addierer 638 auf. Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, können wiederum Puffern und/oder Registern der Registerdatei 632 bereitgestellt werden. Selbstverständlich können, während sie mit diesen wenigen beispielhaften Ausführungseinheiten gezeigt sind, zusätzliche oder unterschiedliche Gleitkomma-Ausführungseinheiten bei einer anderen Ausführungsform vorhanden sein.
  • Es kann auch eine ganzzahlige Pipeline 640 vorgesehen sein. In der gezeigten Ausfuhrungsform weist die Pipeline 640 eine Integer (INT) -Registerdatei 642 auf, die eine Vielzahl von Architekturregistern einer gegebenen Bitbreite, wie etwa 128 oder 256 Bits, aufweisen kann. Die Pipeline 640 weist einen Integer-Execution (IE) -Scheduler 644 auf, um Anweisungen zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline zu planen. Bei der gezeigten Ausführungsform weisen solche Ausführungseinheiten eine ALU 645, eine Verschiebereinheit 646 und eine Jump-Ausführungseinheit (JEU) 648 auf. Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, können wiederum Puffern und/oder Registern der Registerdatei 642 bereitgestellt werden. Selbstverständlich können, während mit diesen wenigen beispielhaften Ausführungseinheiten gezeigt, zusätzliche oder unterschiedliche ganzzahlige Ausführungseinheiten in einer anderen Ausfuhrungsform vorhanden sein.
  • Ein Speicherausführung (ME) -Scheduler 650 kann Speicheroperationen zur Ausführung in einer Adresserzeugungseinheit (AGU) 652 planen, die auch mit einem TLB 654 gekoppelt ist. Wie gesehen, können diese Strukturen mit einem Daten-Cache 660 gekoppelt sein, der ein L0-und/oder L1-Daten-Cache sein kann, der wiederum mit zusätzlichen Ebenen einer Cache-Speicherhierarchie gekoppelt ist, einschließlich eines L2-Cache-Speichers.
  • Um Unterstützung für eine Außerreihenfolgeausführung bereitzustellen, kann ein Zuordner/Umbenenner 670 zusätzlich zu einem Umordnungspuffer 680 bereitgestellt sein, der dazu ausgelegt ist, Anweisungen, die außerhalb der Reihenfolge ausgeführt werden, zum Zurückziehen in der Reihenfolge umzuordnen. Obwohl mit dieser speziellen Pipeline-Architektur in der Darstellung von 6, verstehen, dass viele Variationen und Alternativen möglich sind.
  • Es wird angemerkt, dass in einem Prozessor mit asymmetrischen Kernen, wie etwa gemäß den Mikroarchitekturen der 5 und 6 können Arbeitslasten aus Gründen der Leistungsverwaltung dynamisch zwischen den Kernen ausgetauscht werden, da diese Kerne, obwohl sie unterschiedliche Pipeline-Designs und Tiefen aufweisen, von der gleichen oder verwandten ISA sein können. Ein solches dynamisches Core-Austauschen kann transparent für eine Benutzeranwendung (und möglicherweise auch Kernel) durchgeführt werden.
  • Mit Bezug auf 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer anderen Ausführungsform gezeigt. Wie in 7 kann ein Kern 700 eine mehrstufige reihenfolgetreue Pipeline zum Ausführen bei sehr niedrigen Leistungsverbrauchspegeln beinhalten. Als ein solches Beispiel kann der Kern 700 eine Mikroarchitektur gemäß einem ARM Cortex A53 Design aufweisen, das von ARM Holdings, LTD., Sunnyvale, CA erhältlich ist. Bei einer Implementierung kann eine 8-stufige Pipeline bereitgestellt sein, die dazu konfiguriert ist, sowohl 32-Bit-als auch 64-Bit-Code auszuführen. Der Kern 700 beinhaltet eine Abrufeinheit 710, die dazu ausgelegt ist, Anweisungen abzurufen und sie einer Decodiereinheit 715 bereitzustellen, die die Anweisungen e.g decodieren kann. Makroanweisungen einer gegebenen ISA, wie etwa einer ARMv8-ISA. Es wird ferner angemerkt, dass eine Warteschlange 730 mit der Decodiereinheit 715 gekoppelt sein kann, um decodierte Anweisungen zu speichern. Decodierte Befehle werden einer Ausgabelogik 725 bereitgestellt, wo die decodierten Befehle an eine gegebene von mehreren Ausführungseinheiten ausgegeben werden können.
  • Unter weiterer Bezugnahme auf 7 kann die Ausgabelogik 725 Anweisungen an eine von mehreren Ausführungseinheiten ausgeben. Bei der gezeigten Ausführungsform weisen diese Ausführungseinheiten eine Ganzzahleinheit 735, eine Multiplikationseinheit 740, eine Gleitkomma-/Vektoreinheit 750, eine Doppelausgabeeinheit 760 und eine Lade-/Speichereinheit 770 auf. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können einer Rückschreibeinheit (WB-EINHEIT) 780 bereitgestellt werden. Verstehen, dass, obwohl zur Vereinfachung der Veranschaulichung eine einzige Rückschreibeinheit gezeigt ist, bei manchen Implementierungen separate Rückschreibeinheiten mit jeder der Ausführungseinheiten assoziiert sein können. Des Weiteren versteht es sich, dass, während jede der in 7 auf einer High-Ebene dargestellt ist, kann eine bestimmte Implementierung mehr oder unterschiedliche Strukturen beinhalten. „Ein Prozessor, der unter Verwendung eines oder mehrerer Kerne mit einer Pipeline wie in Fig.“ 7 kann in vielen verschiedenen Endprodukten implementiert werden, die sich von Mobilgeräten zu Serversystemen erstrecken.
  • Mit Bezug auf 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer noch weiteren Ausführungsform gezeigt. Wie in 8 kann ein Kern 800 eine mehrstufige Mehrfach-Ausgabe-Außer-Reihenfolge-Pipeline zum Ausführen bei sehr hohen Leistungspegeln (die bei höheren Leistungsverbrauchspegeln als der Kern 700 von 7) . Als ein solches Beispiel kann der Prozessor 800 eine Mikroarchitektur gemäß einem ARM Cortex A57 Design aufweisen. Bei einer Implementierung kann eine 15 (oder mehr)-Stufen-Pipeline bereitgestellt sein, die dazu konfiguriert ist, sowohl 32-Bit-als auch 64-Bit-Code auszuführen. Zusätzlich dazu kann die Pipeline eine Operation mit 3 (oder mehr)Breite und 3 (oder mehr)Ausgabe bereitstellen. Der Kern 800 beinhaltet eine Abrufeinheit 810, die dazu ausgelegt ist, Anweisungen abzurufen und sie einer Decodier-/Umbenenner-/Dispatcher-Einheit 815 bereitzustellen, die mit einem Cache 820 gekoppelt ist. Die Einheit 815 kann die Befehle decodieren, e.g. Makrobefehle einer ARMv8-Befehlssatzarchitektur, Registerreferenzen innerhalb der Befehle umbenennen und die Befehle (letztendlich) an eine ausgewählte Ausführungseinheit versenden. Decodierte Befehle können in einer Warteschlange 825 gespeichert werden. Es wird angemerkt, dass, obwohl eine einzige Warteschlangenstruktur zur einfachen Veranschaulichung in 8 gezeigt ist, verstanden wird, dass separate Warteschlangen für jeden der mehreren unterschiedlichen Typen von Ausführungseinheiten bereitgestellt werden können.
  • Auch in Fig. „8 ist eine Ausgabelogik 830 dargestellt, von der decodierte Befehle, die in der Warteschlange 825 gespeichert sind, an eine ausgewählte Ausführungseinheit ausgegeben werden können.“ Die Ausgabelogik 830 kann in einer bestimmten Ausführungsform auch mit einer separaten Ausgabelogik für jeden der mehreren unterschiedlichen Typen von Ausführungseinheiten implementiert sein, mit denen die Ausgabelogik 830 gekoppelt ist.
  • Decodierte Befehle können an eine gegebene von mehreren Ausführungseinheiten ausgegeben werden. Bei der gezeigten Ausfuhrungsform weisen diese Ausführungseinheiten eine oder mehrere Ganzzahleinheiten 835, eine Multiplikationseinheit 840, eine Gleitkomma-/Vektoreinheit 850, eine Verzweigungseinheit 860 und eine Lade-/Speichereinheit 870 auf. Bei einer Ausführungsform kann die Gleitkomma-/Vektoreinheit 850 dazu konfiguriert sein, SIMD oder Vektordaten von 128 oder 256 Bit zu handhaben. Des Weiteren kann die Gleitkomma-/Vektor-Ausführungseinheit 850 Gleitkommaoperationen mit doppelter Genauigkeit IEEE-754 durchführen. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können einer Rückschreibeinheit 880 bereitgestellt werden. Es wird angemerkt, dass bei manchen Implementierungen separate Rückschreibeinheiten mit jeder der Ausführungseinheiten assoziiert sein können. Des Weiteren versteht es sich, dass, während jede der in 8 auf einem High-Level dargestellt ist, kann eine bestimmte Implementierung mehr oder unterschiedliche Strukturen beinhalten.
  • Es wird angemerkt, dass in einem Prozessor mit asymmetrischen Kernen, wie etwa gemäß den Mikroarchitekturen der 7 und 8 können Arbeitslasten aus Leistungsmanagementgründen dynamisch ausgetauscht werden, da diese Kerne, obwohl sie unterschiedliche Pipeline-Designs und Tiefen aufweisen, von der gleichen oder verwandten ISA sein können. Ein solches dynamisches Core-Austauschen kann transparent für eine Benutzeranwendung (und möglicherweise auch Kernel) durchgeführt werden.
  • Prozessor, der unter Verwendung eines oder mehrerer Kerne mit Pipelines wie in einer oder mehreren der 5-8 können in vielen verschiedenen Endprodukten implementiert werden, die sich von Mobilgeräten zu Serversystemen erstrecken. Mit Bezug auf 9 ist ein Blockdiagramm eines Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Bei der Ausfuhrungsform nach 9 kann der Prozessor 900 ein SoC mit mehreren Domänen sein, von denen jede gesteuert werden kann, um bei einer unabhängigen Betriebsspannung und Betriebsfrequenz zu arbeiten. Als ein spezifisches veranschaulichendes Beispiel kann der Prozessor 900 ein Intel® Architecture CoreTM-based-Prozessor sein, wie etwa ein i3, i5, i7 oder ein anderer solcher Prozessor, der von der Intel Corporation erhältlich ist. Jedoch können andere Prozessoren mit niedriger Leistung, wie etwa von Advanced Micro Devices, Inc. (AMD) von Sunnyvale, CA, ein ARM-basiertes Design von ARM Holdings, Ltd. oder Lizenznehmer davon oder ein MIPS-basiertes Design von MIPS Technologies, Inc. von Sunnyvale, CA oder deren Lizenznehmer oder Übersetzer können stattdessen in anderen Ausführungsformen vorhanden sein, wie etwa einem Aple A7 Prozessor, einem Qualcomm Snapdragon Prozessor oder Texas Instruments OMAP Prozessor. Ein solches SoC kann in einem Niedrigleistungssystem verwendet werden, wie etwa einem Smartphone, Tablet-Computer, Phablet-Computer, UltrabookTM-Computer oder einer anderen tragbaren Rechenvorrichtung, die eine heterogene Systemarchitektur mit einem heterogenen Systemarchitektur-basierten Prozessordesign beinhalten kann.
  • In der Hochansicht gemäß 9 weist der Prozessor 900 mehrere Kerneinheiten 910 a-910 n auf. Jede Kerneinheit kann einen oder mehrere Prozessorkerne, einen oder mehrere Cache-Speicher und eine andere Schaltungsanordnung beinhalten. Jede Kerneinheit 910 kann einen oder mehrere Befehlssätze (e.g., einen x86-Befehlssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); einen MIPS-BEFEHLSSATZ; einen ARM-BEFEHLSSATZ (mit optionalen zusätzlichen Erweiterungen wie NEON)) oder einen anderen Befehlssatz oder Kombinationen davon unterstützen. Es wird angemerkt, dass manche der Kerneinheiten heterogene Ressourcen (e.g., von einem anderen Design) sein können. Außerdem kann jeder solche Kern mit einem Cache-Speicher (nicht gezeigt) gekoppelt sein, der in einer Ausführungsform ein Cache-Speicher der gemeinsamen Ebene zwei (L2) sein kann. Eine nichtflüchtige Speicherung 930 kann verwendet werden, um verschiedene Programme und andere Daten zu speichern. Diese Speicherung kann zum Beispiel verwendet werden, um wenigstens Teile von Mikrocode, Boot-Informationen, wie etwa ein BIOS, andere Systemsoftware oder so weiter, zu speichern.
  • Jede Kerneinheit 910 kann auch eine Schnittstelle, wie etwa eine Busschnittstelleneinheit, beinhalten, um eine Verbindung mit einer zusätzlichen Schaltungsanordnung des Prozessors zu ermöglichen. In einer Ausführungsform ist jede Kerneinheit 910 mit einer kohärenten Struktur gekoppelt, die als eine kohärente On-Die-Primär-Cache-Verbindung fungieren kann, die wiederum mit einer Speichersteuerung 935 gekoppelt ist. Im Gegenzug steuert die Speichersteuerung 935 Kommunikationen mit einem Speicher, wie etwa einem DRAM (der Einfachheit der Veranschaulichung in 9) .
  • Zusätzlich zu Kerneinheiten sind zusätzliche Verarbeitungs-Engines innerhalb des Prozessors vorhanden, einschließlich mindestens einer Grafikeinheit 920, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) zum Durchführen einer Grafikverarbeitung sowie möglicherweise zum Ausführen von Allzweckoperationen auf dem Grafikprozessor (sogenannte GPGPGPU-OPERATION) beinhalten kann. Zusätzlich kann mindestens ein Bildsignalprozessor 925 vorhanden sein. Der Signalprozessor 925 kann dazu konfiguriert sein, eingehende Bilddaten zu verarbeiten, die von einer oder mehreren Erfassungsvorrichtungen empfangen werden, entweder innerhalb des SoC oder außerhalb des Chips.
  • Auch andere Beschleuniger können anwesend sein. In der Darstellung der 9 kann ein Videocodierer 950 Codieroperationen durchführen, einschließlich Codieren und Decodieren für Videoinformationen, e.g., was Hardwarebeschleunigungsunterstützung für hochauflösenden Videoinhalt bereitstellt. Eine Anzeigesteuerung 955 kann ferner bereitgestellt sein, um Anzeigevorgänge einschließlich Bereitstellen von Unterstützung für interne und externe Anzeigen eines Systems zu beschleunigen. Zusätzlich dazu kann ein Sicherheitsprozessor 945 vorhanden sein, um Sicherheitsoperationen, wie etwa sichere Boot-Operationen, verschiedene Kryptographieoperationen und so weiter, durchzuführen.
  • Jede der Einheiten kann ihren Leistungsverbrauch über einen Leistungsmanager 940 steuern, der Steuerlogik zum Durchführen der verschiedenen hier beschriebenen Leistungsmanagementtechniken beinhalten kann.
  • Bei manchen Ausführungsformen kann der Prozessor 900 ferner eine nichtkohärente Struktur beinhalten, die mit der kohärenten Struktur gekoppelt ist, mit der verschiedene Peripherievorrichtungen gekoppelt sein können. Eine oder mehrere Schnittstellen 960 a-960 d ermöglichen eine Kommunikation mit einer oder mehreren chipexternen Vorrichtungen. Solche Kommunikationen können unter anderen Arten von Kommunikationsprotokollen über eine Vielzahl von Kommunikationsprotokollen erfolgen, wie etwa PCIeTM, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI. Obwohl auf diesem hohen Niveau bei der Ausführungsform nach 9 ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
  • Mit Bezug auf 10 ist ein Blockdiagramm eines repräsentativen SoC gezeigt. Bei der gezeigten Ausführungsform kann das SoC 1000 ein Mehrkern-SoC sein, das für einen Niedrigleistungsbetrieb konfiguriert ist, der zur Integration in ein Smartphone oder eine andere Niedrigleistungsvorrichtung, wie etwa einen Tablet-Computer oder eine andere tragbare Rechenvorrichtung, optimiert werden soll. Als ein Beispiel kann das SoC 1000 unter Verwendung asymmetrischer oder unterschiedlicher Typen von Kernen implementiert werden, wie etwa Kombinationen von Kernen mit höherer Leistung und/oder niedriger Leistung, e.g., Außer-Reihenfolge-Kernen und In-Reihenfolge-Kernen. Bei verschiedenen Ausführungsformen können diese Kerne auf einem Intel® Architecture™-Kerndesign oder einem ARMARCHITEKTURDESIGN basieren. Bei noch anderen Ausführungsformen kann eine Mischung von Intel-und ARMKERNEN in einem gegebenen SoC implementiert werden.
  • Wie aus 10 beinhaltet das SoC 1000 eine erste Kerndomäne 1010 mit mehreren ersten Kernen 1012 a-1012 d. Bei einem Beispiel können diese Kerne Niedrigleistungskerne sein, wie etwa reihenfolgetreue Kerne. In einer Ausfuhrungsform können diese ersten Kerne als ARM-CORTEX-KERNE A53 implementiert sein. Diese Kerne sind wiederum mit einem Cache-Speicher 1015 der Kerndomäne 1010 gekoppelt. Außerdem weist das SoC 1000 eine zweite Kerndomäne 1020 auf. In der Darstellung der 10 weist die zweite Kerndomäne 1020 mehrere zweite Kerne 1022 a-1022 d auf. In einem Beispiel können diese Kerne höher leistungsverbrauchende Kerne als die ersten Kerne 1012 sein. In einer Ausfuhrungsform können die zweiten Kerne außer Ordnung Kerne sein, die als ARM-CORTEX-KERNE A57 implementiert sein können. Diese Kerne sind wiederum mit einem Cache-Speicher 1025 der Kerndomäne 1020 gekoppelt. „Es ist zu beachten, dass während das in Fig.“ 10 umfasst 4 Kerne in jeder Domäne, versteht sich, dass in anderen Beispielen mehr oder weniger Kerne in einer gegebenen Domäne vorhanden sein können.
  • Unter weiterer Bezugnahme auf 10 ist auch eine Grafikdomäne 1030 bereitgestellt, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) beinhalten kann, die dazu ausgelegt sind, Grafikarbeitslasten e.g unabhängig auszuführen, die von einem oder mehreren Kernen der Kerndomänen 1010 und 1020 bereitgestellt werden. Als ein Beispiel kann die GPU-DOMÄNE 1030 verwendet werden, um eine Anzeigeunterstützung für eine Vielzahl von Bildschirmgrößen bereitzustellen, zusätzlich zu dem Bereitstellen von Grafik-und Anzeigerenderungsoperationen.
  • Wie zu sehen ist, koppeln die verschiedenen Domänen mit einer kohärenten Zwischenverbindung 1040, die in einer Ausführungsform eine kohärente Zwischenverbindungsstruktur sein kann, die wiederum mit einer integrierten Speichersteuerung 1050 gekoppelt ist. Die kohärente Zwischenverbindung 1040 kann bei manchen Beispielen einen gemeinsam genutzten Cache-Speicher, wie etwa einen L3-Cache, beinhalten. Bei einer Ausführungsform kann die Speichersteuerung 1050 eine Direktspeichersteuerung sein, um mehrere Kommunikationskanäle mit einem chipexternen Speicher bereitzustellen, wie etwa mehrere Kanäle eines DRAM (der Einfachheit der Veranschaulichung in 10) .
  • In verschiedenen Beispielen kann die Anzahl der Kerndomänen variieren. Für ein SoC mit niedriger Leistung, das zur Einbindung in eine mobile Rechenvorrichtung geeignet ist, kann zum Beispiel eine begrenzte Anzahl von Kerndomänen, wie in 10 vorhanden sein kann. Ferner kann in einer solchen Niedrigleistung SoCs die Kerndomäne 1020 einschließlich Kernen höherer Leistung weniger Anzahlen solcher Kerne aufweisen. Bei einer Implementierung können zum Beispiel zwei Kerne 1022 bereitgestellt sein, um einen Betrieb bei reduzierten Leistungsverbrauchspegeln zu ermöglichen. Zusätzlich dazu können die verschiedenen Kerndomänen auch mit einer Unterbrechungssteuerung gekoppelt sein, um ein dynamisches Austauschen von Arbeitslasten zwischen den verschiedenen Domänen zu ermöglichen.
  • Bei noch anderen Ausführungsformen kann eine größere Anzahl von Kerndomänen sowie zusätzliche optionale IP-LOGIK vorhanden sein, indem ein SoC zur Einbindung in andere Rechenvorrichtungen, wie etwa Desktops, Servern, Hochleistungsrechensystemen, Basisstationen, auf höhere Leistungsfähigkeits- (und Leistungs-) Pegel skaliert werden kann. Als ein solches Beispiel können 4 Kerndomänen bereitgestellt werden, die jeweils eine gegebene Anzahl von out-of-order Kernen aufweisen. Noch weiter können zusätzlich zu einer optionalen GPU-UNTERSTÜTZUNG (die als ein Beispiel die Form einer GPGPU annehmen kann) auch ein oder mehrere Beschleuniger zum Bereitstellen optimierter Hardwareunterstützung für bestimmte Funktionen (z. B. Web-Service, Netzwerkverarbeitung, Umschalten oder so weiter) bereitgestellt werden. Außerdem kann eine Eingabe/Ausgabe-Schnittstelle vorhanden sein, um solche Beschleuniger mit chipexternen Komponenten zu koppeln.
  • Mit Bezug auf 11 ist ein Blockdiagramm eines anderen beispielhaften SoC gezeigt. Bei der Ausführungsform nach 11 kann das SoC 1100 verschiedene Schaltungen beinhalten, um eine hohe Leistung für Multimedia-Anwendungen, Kommunikationen und andere Funktionen zu ermöglichen. Von daher eignet sich das SoC 1100 zur Einbindung in eine breite Vielfalt von tragbaren und anderen Vorrichtungen, wie etwa Smartphones, Tablet-Computern, Smart-TVs und so weiter. In dem gezeigten Beispiel weist das SoC 1100 eine Zentralprozessoreinheit (CPU) -Domäne 1110 auf. In einer Ausfuhrungsform können mehrere einzelne Prozessorkerne in der CPU-DOMÄNE 1110 vorhanden sein. Als ein Beispiel kann die CPU-DOMÄNE 1110 ein Vierkernprozessor mit 4 Multithreadkernen sein. Solche Prozessoren können homogene oder heterogene Prozessoren sein, e.g., eine Mischung aus Niedrigleistungs-und Hochleistungsprozessorkernen.
  • Im Gegenzug ist eine GPU-DOMÄNE 1120 bereitgestellt, um eine fortschrittliche Grafikverarbeitung in einer oder mehreren GPUs durchzuführen, um Grafik-und Rechen-APIs zu handhaben. Eine DSP-EINHEIT 1130 kann einen oder mehrere Niedrigleistungs-DSPs zum Handhaben von Niedrigleistungsmultimedia-Anwendungen, wie etwa Musikwiedergabe, Audio/Video und so weiter, zusätzlich zu fortgeschrittenen Berechnungen, die während der Ausführung von Multimedia-Anweisungen auftreten können, bereitstellen. Wiederum kann eine Kommunikationseinheit 1140 verschiedene Komponenten beinhalten, um Konnektivität über verschiedene drahtlose Protokolle bereitzustellen, wie etwa zellulare Kommunikationen (einschließlich 3G/4G-LTE), drahtlose lokale Protokolle, wie etwa Bluetooth™, IEEE 802.11 und so weiter.
  • Ferner kann ein Multimedia-Prozessor 1150 verwendet werden, um eine Erfassung und Wiedergabe von hochauflösenden Video-und Audioinhalten durchzuführen, einschließlich einer Verarbeitung von Benutzergesten. Eine Sensoreinheit 1160 kann mehrere Sensoren und/oder eine Sensorsteuerung zum Verbinden mit verschiedenen chipexternen Sensoren, die in einer gegebenen Plattform vorhanden sind, beinhalten. Ein Bildsignalprozessor (ISP) 1170 kann eine Bildverarbeitung in Bezug auf erfassten Inhalt von einer oder mehreren Kameras einer Plattform, einschließlich Standbild-und Videokameras, durchführen.
  • Ein Anzeigeprozessor 1180 kann Unterstützung zur Verbindung mit einer hochauflösenden Anzeige einer gegebenen Pixeldichte bereitstellen, einschließlich der Fähigkeit, drahtlos Inhalt zur Wiedergabe auf einer solchen Anzeige zu kommunizieren. Ferner kann eine Ortungseinheit 1190 einen GPS-Empfänger (GPS: Global Positioning System) mit Unterstützung für mehrere GPS-KONSTELLATIONEN beinhalten, um Anwendungen mit hoher Genauigkeit bereitzustellen, die unter Verwendung eines solchen GPS-EMPFÄNGERS erhalten werden. „Es versteht sich, dass, obwohl mit diesem speziellen Komponentensatz im Beispiel der Fig.“ 11 sind viele Variationen und Alternativen möglich.
  • Mit Bezug auf 12 ist ein Blockdiagramm eines beispielhaften Systems gezeigt, mit dem Ausführungsformen verwendet werden können. Wie gesehen wird, kann das System 1200 ein Smartphone oder ein anderer drahtloser Kommunikator sein. Ein Basisbandprozessor 1205 ist dazu konfiguriert, verschiedene Signalverarbeitung in Bezug auf Kommunikationssignale durchzuführen, die von dem System gesendet oder von diesem empfangen werden sollen. Wiederum ist der Basisbandprozessor 1205 zusätzlich zu Benutzeranwendungen, wie etwa vielen wohlbekannten sozialen Medien und Multimedia-Apps, mit einem Anwendungsprozessor 1210 gekoppelt, der eine HAUPT-CPU des Systems zum Ausführen eines OS und einer anderen Systemsoftware sein kann. Der Anwendungsprozessor 1210 kann ferner dazu konfiguriert sein, eine Vielfalt anderer Rechenoperationen für die Vorrichtung durchzuführen.
  • Wiederum kann der Anwendungsprozessor 1210 mit einer Benutzeroberfläche/Anzeige 1220, e.g, einer Touchscreen-Anzeige, gekoppelt sein. Außerdem kann der Anwendungsprozessor 1210 mit einem Speichersystem gekoppelt sein, das einen nichtflüchtigen Speicher, nämlich einen Flash-Speicher 1230, und einen Systemspeicher, nämlich einen dynamischen Direktzugriffsspeicher (DRAM) 1235, beinhaltet. Wie ferner gesehen wird, koppelt der Anwendungsprozessor 1210 ferner mit einer Erfassungsvorrichtung 1241, wie etwa einer oder mehreren Bilderfassungsvorrichtungen, die Video-und/oder Standbilder aufzeichnen können.
  • Noch mit Bezug auf 12 ist auch eine Universal Integrated Circuit Card (UICC) 1246, die ein Teilnehmeridentifikationsmodul und gegebenenfalls einen sicheren Speicher- und Kryptoprozessor umfasst, mit dem Anwendungsprozessor 1210 gekoppelt. Das System 1200 kann ferner einen Sicherheitsprozessor 1250 beinhalten, der mit dem Anwendungsprozessor 1210 gekoppelt sein kann. Mehrere Sensoren 1225 können mit dem Anwendungsprozessor 1210 gekoppelt sein, um die Eingabe einer Vielfalt erfasster Informationen, wie etwa Beschleunigungsmesser und anderer Umgebungsinformationen, zu ermöglichen. Eine Audioausgabevorrichtung 1295 kann eine Schnittstelle zum Ausgeben von Ton, e.g., in der Form von Sprachkommunikationen, abgespielten oder Streaming-Audiodaten usw. bereitstellen.
  • Wie ferner veranschaulicht, ist eine kontaktlose Nahfeldkommunikation (NFC) - Schnittstelle 1260 bereitgestellt, die in einem NFC-NAHFELD über eine NFC-ANTENNE 1265 kommuniziert. Während separate Antennen in 12 versteht es sich, dass bei manchen Implementierungen eine Antenne oder ein anderer Satz von Antennen bereitgestellt werden kann, um verschiedene Drahtlosfunktionalitäten zu ermöglichen.
  • Eine integrierte Leistungsverwaltungsschaltung (PMIC: Power Management Integrated Circuit) 1215 ist mit dem Anwendungsprozessor 1210 gekoppelt, um eine Leistungsverwaltung auf Plattformebene durchzuführen. Zu diesem Zweck kann die PMIC 1215 Leistungsverwaltungsanforderungen an den Anwendungsprozessor 1210 ausgeben, wie gewünscht, in gewisse Niederleistungszustände einzutreten. Des Weiteren kann die PMIC 1215 basierend auf Plattformbeschränkungen auch den Leistungspegel anderer Komponenten des Systems 1200 steuern.
  • Um zu ermöglichen, dass Kommunikationen übertragen und empfangen werden, können verschiedene Schaltungen zwischen dem Basisbandprozessor 1205 und einer Antenne 1290 gekoppelt sein. Insbesondere können ein Hochfrequenz (HF) -Sendeempfänger 1270 und ein Wireless Local Area Network (WLAN) -Sendeempfänger 1275 vorhanden sein. Allgemein kann der HF-SENDEEMPFÄNGER 1270 verwendet werden, um Drahtlosdaten und Anrufe gemäß einem gegebenen Drahtloskommunikationsprotokoll, wie etwa einem 3G- oder 4G-Drahtloskommunikationsprotokoll, wie etwa gemäß einem Codemultiplex-Mehrfachzugriff (CDMA: Code Division Multiple Access), Global System for Mobile Communication (GSM: Global System for Mobile Communication), Long Term Evolution (LTE: Long Term Evolution) oder einem anderen Protokoll, zu empfangen und zu übertragen. Zusätzlich kann ein GPS-SENSOR 1280 vorhanden sein. Andere drahtlose Kommunikationen, wie etwa der Empfang oder die Übertragung von Funksignalen, e.g., AM/FM und anderen Signalen, können ebenfalls bereitgestellt werden. Zusätzlich können über den WLAN-TRANSCEIVER 1275 auch lokale drahtlose Kommunikationen realisiert werden.
  • Mit Bezug auf 13 ist ein Blockdiagramm eines anderen beispielhaften Systems gezeigt, mit dem Ausführungsformen verwendet werden können. In der Darstellung der 13 kann das System 1300 ein mobiles Niederleistungssystem sein, wie etwa ein Tablet-Computer, 2:1-Tablet, Phablet oder ein anderes umwandelbares oder eigenständiges Tablet-System. Wie veranschaulicht, ist ein SoC 1310 vorhanden und kann dazu konfiguriert sein, als ein Anwendungsprozessor für die Vorrichtung zu arbeiten.
  • Eine Vielzahl von Vorrichtungen kann mit dem SoC 1310 gekoppelt sein. Bei der gezeigten Veranschaulichung beinhaltet ein Speichersubsystem einen Flash-Speicher 1340 und einen DRAM 1345, die mit dem SoC 1310 gekoppelt sind. Außerdem ist ein Touchpanel 1320 mit dem SoC 1310 gekoppelt, um Anzeigefähigkeit und Benutzereingabe über Berührung bereitzustellen, einschließlich Bereitstellen einer virtuellen Tastatur auf einer Anzeige des Touchpanels 1320. Um drahtgebundene Netzwerkkonnektivität bereitzustellen, ist das SoC 1310 mit einer Ethernet-Schnittstelle 1330 gekoppelt. Ein Peripherie-Hub 1325 ist mit dem SoC 1310 gekoppelt, um eine Schnittstelle mit verschiedenen Peripherievorrichtungen zu ermöglichen, wie sie beispielsweise durch einen beliebigen von verschiedenen Ports oder anderen Verbindern mit dem System 1300 gekoppelt sein können.
  • Zusätzlich zu einer internen Leistungsverwaltungsschaltungsanordnung und - funktionalität innerhalb des SoC 1310 ist eine PMIC 1380 mit dem SoC 1310 gekoppelt, um plattformbasiertes Leistungsmanagement e.g bereitzustellen, basierend darauf, ob das System durch eine Batterie 1390 oder AC-LEISTUNG über einen AC-ADAPTER 1395 mit Leistung versorgt wird. Zusätzlich zu dieser leistungsquellenbasierten Leistungsverwaltung kann die PMIC 1380 ferner Plattformleistungsverwaltungsaktivitäten basierend auf Umgebungs-und Nutzungsbedingungen durchführen. Ferner kann die PMIC 1380 Steuer-und Statusinformationen an das SoC 1310 kommunizieren, um verschiedene Leistungsmanagementhandlungen innerhalb des SoC 1310 zu bewirken.
  • Noch mit Bezug auf 13 ist, um drahtlose Fähigkeiten bereitzustellen, eine WLAN-EINHEIT 1350 mit dem SoC 1310 und wiederum mit einer Antenne 1355 gekoppelt. Bei verschiedenen Implementierungen kann die WLAN-EINHEIT 1350 eine Kommunikation gemäß einem oder mehreren Drahtlosprotokollen bereitstellen.
  • Wie ferner veranschaulicht, können mehrere Sensoren 1360 mit dem SoC 1310 gekoppelt sein. Diese Sensoren können diverse Beschleunigungsmesser, Umgebungs-und andere Sensoren, einschließlich Benutzergestensensoren, beinhalten. Schließlich ist ein Audiocodec 1365 mit dem SoC 1310 gekoppelt, um eine Schnittstelle zu einer Audioausgabevorrichtung 1370 bereitzustellen. „Selbstverständlich versteht es sich, dass, obwohl bei dieser konkreten Realisierung in Fig.“ 13 sind viele Variationen und Alternativen möglich.
  • Mit Bezug auf 14 ist ein Blockdiagramm eines repräsentativen Computersystems 1400, wie etwa Notebook, Ultrabook™ oder ein anderes kleines Formfaktorsystem, gezeigt. Ein Prozessor 1410 beinhaltet bei einer Ausführungsform einen Mikroprozessor, Mehrkernprozessor, Multithreadprozessor, einen Ultraniederspannungsprozessor, einen eingebetteten Prozessor oder ein anderes bekanntes Verarbeitungselement. Bei der veranschaulichten Implementierung agiert der Prozessor 1410 als eine Hauptverarbeitungseinheit und ein zentraler Hub zur Kommunikation mit vielen der verschiedenen Komponenten des Systems 1400 und kann eine Leistungsverwaltungsschaltungsanordnung, wie hier beschrieben, beinhalten. Als ein Beispiel ist der Prozessor 1410 als ein SoC implementiert.
  • Der Prozessor 1410 kommuniziert in einer Ausführungsform mit einem Systemspeicher 1415. Als ein veranschaulichendes Beispiel ist der Systemspeicher 1415 über mehrere Speichervorrichtungen oder Module implementiert, um eine gegebene Menge an Systemspeicher bereitzustellen.
  • Um eine dauerhafte Speicherung von Informationen, wie etwa Daten, Anwendungen, einem oder mehreren Betriebssystemen usw., bereitzustellen, kann eine Massenspeicherung 1420 auch mit dem Prozessor 1410 gekoppelt sein. Bei verschiedenen Ausführungsformen, um eine dünnere und leichtere Systemgestaltung zu ermöglichen sowie die Systemansprechempfindlichkeit zu verbessern, diese Massenspeicherung kann über ein SSD implementiert werden oder die Massenspeicherung kann primär unter Verwendung eines Festplattenlaufwerks (HDD) mit einer geringeren Menge an SSD-SPEICHERUNG implementiert werden, um als ein SSD-CACHE zu wirken, um eine nichtflüchtige Speicherung eines Kontextzustands und anderer solcher Informationen während Abschaltereignissen zu ermöglichen, so dass ein schnelles Einschalten bei Wiedereinleitung von Systemaktivitäten auftreten kann. Auch in 14 kann eine Flash-Vorrichtung 1422 über eine serielle Peripherieschnittstelle (SPI) mit dem Prozessor 1410, e.g gekoppelt sein. Diese Flash-Vorrichtung kann eine nichtflüchtige Speicherung von Systemsoftware bereitstellen, einschließlich einer Basic Input/Output Software (BIOS) sowie anderer Firmware des Systems.
  • Verschiedene Eingabe/Ausgabe (E/A) -Vorrichtungen können innerhalb des Systems 1400 vorhanden sein. Konkret ist bei der Ausfuhrungsform nach Fig. „14 ist eine Anzeige 1424 dargestellt, die ein hochauflösendes LCD-oder LED-PANEL sein kann, das ferner einen Touchscreen 1425 bereitstellt.“ In einer Ausführungsform kann die Anzeige 1424 mit dem Prozessor 1410 über eine Anzeigeverbindung gekoppelt sein, die als eine Hochleistungsgrafikverbindung implementiert sein kann. Der Touchscreen 1425 kann mit dem Prozessor 1410 über eine andere Zwischenverbindung gekoppelt sein, die bei einer Ausführungsform eine I2C-Zwischenverbindung sein kann. Wie weiter in 14 kann zusätzlich zu dem Touchscreen 1425 auch eine Benutzereingabe durch Berührung über ein Touchpad 1430 erfolgen, das innerhalb des Chassis konfiguriert sein kann und auch mit derselben I2C-Verschaltung wie der Touchscreen 1425 gekoppelt sein kann.
  • Zur Wahrnehmungsberechnung und anderen Zwecken können verschiedene Sensoren innerhalb des Systems vorhanden sein und können auf unterschiedliche Weisen mit dem Prozessor 1410 gekoppelt sein. Bestimmte Inertial-und Umgebungssensoren können über eine I2C-Verbindung über einen Sensorhub 1440, e.g mit dem Prozessor 1410 gekoppelt sein. Bei der Ausführungsform nach 14 können diese Sensoren einen Beschleunigungsmesser 1441, einen Umgebungslichtsensor (ALS) 1442, einen Kompass 1443 und ein Gyroskop 1444 beinhalten. Andere Umgebungssensoren können einen oder mehrere thermische Sensoren 1446 beinhalten, die bei manchen Ausführungsformen über einen Systemverwaltungsbus (SMBus) -Bus mit dem Prozessor 1410 gekoppelt sind.
  • Wie auch aus 14 können verschiedene Peripherievorrichtungen mit dem Prozessor 1410 über eine LPC (LPC: Low Pin Count) -Verbindung gekoppelt sein. Bei der gezeigten Ausführungsform können verschiedene Komponenten durch eine eingebettete Steuerung 1435 gekoppelt sein. Solche Komponenten können eine Tastatur 1436 (e.g., die über eine PS2-Schnittstelle gekoppelt ist), einen Lüfter 1437 und einen Thermosensor 1439 beinhalten. Bei manchen Ausführungsformen kann das Touchpad 1430 auch über eine PS2-Schnittstelle mit der EC 1435 gekoppelt sein. Zusätzlich dazu kann ein Sicherheitsprozessor, wie etwa ein Trusted Platform Module (TPM) 1438, auch über diese LPC-ZWISCHENVERBINDUNG mit dem Prozessor 1410 gekoppelt sein.
  • Das System 1400 kann auf eine Vielzahl von Weisen mit externen Vorrichtungen kommunizieren, einschließlich drahtlos. Bei der Ausführungsform nach 14 sind verschiedene Drahtlosmodule vorhanden, von denen jedes einem Funk entsprechen kann, der für ein bestimmtes Drahtloskommunikationsprotokoll konfiguriert ist. Eine Art und Weise für drahtlose Kommunikation in einem Nahbereich, wie etwa einem Nahfeld, kann über eine NFC-EINHEIT 1445 erfolgen, die bei einer Ausfuhrungsform über einen SMBus mit dem Prozessor 1410 kommunizieren kann. Es wird angemerkt, dass über diese NFC-EINHEIT 1445 Vorrichtungen in unmittelbarer Nähe zueinander kommunizieren können.
  • Wie weiter aus 14 können zusätzliche drahtlose Einheiten andere drahtlose Engines mit kurzer Reichweite einschließlich einer WLAN-EINHEIT 1450 und einer Bluetooth™-Einheit 1452 beinhalten. Unter Verwendung der WLAN-EINHEIT 1450 können Wi-FiTM-Kommunikationen realisiert werden, während über die BluetoothTM-Einheit 1452 kurzreichweitige BluetoothTM-Kommunikationen stattfinden können. Diese Einheiten können über eine gegebene Verbindung mit dem Prozessor 1410 kommunizieren.
  • Zusätzlich dazu können Drahtlos-Weitbereichskommunikationen, e.g., gemäß einem zellularen oder anderen Drahtlos-Weitbereichsprotokoll über eine WWAN-EINHEIT 1456 stattfinden, die wiederum mit einem Teilnehmeridentitätsmodul (SIM) 1457 gekoppelt sein kann. Zusätzlich kann, um den Empfang und die Verwendung von Ortsinformationen zu ermöglichen, auch ein GPS-MODUL 1455 vorhanden sein. „Es ist zu beachten, dass bei der in Fig.“ 14 können die WWAN-EINHEIT 1456 und eine integrierte Erfassungsvorrichtung, wie etwa ein Kameramodul 1454, über einen gegebenen Link kommunizieren.
  • Um Audioeingänge und -ausgänge bereitzustellen, kann ein Audioprozessor über einen digitalen Signalprozessor (DSP) 1460 implementiert werden, der über eine High-Definition-Audio (HDA) -Verbindung mit dem Prozessor 1410 gekoppelt sein kann. Gleichermaßen kann DER DSP 1460 mit einem integrierten Codierer/Decodierer (CODEC) und Verstärker 1462 kommunizieren, die wiederum mit Ausgangslautsprechern 1463 gekoppelt sein können, die innerhalb des Chassis implementiert sein können. Gleichermaßen können Verstärker und CODEC 1462 gekoppelt sein, um Audioeingaben von einem Mikrofon 1465 zu empfangen, das bei einer Ausführungsform über Dual-Array-Mikrofone (wie etwa ein digitales Mikrofonarray) implementiert werden kann, um Audioeingaben mit hoher Qualität bereitzustellen, um eine sprachaktivierte Steuerung verschiedener Operationen innerhalb des Systems zu ermöglichen. Es wird auch angemerkt, dass Audioausgaben von Verstärker/CODEC 1462 an eine Kopfhörerbuchse 1464 geliefert werden können. Obwohl mit diesen speziellen Komponenten in der Ausführungsform nach 14 ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
  • Ausführungsformen können in vielen verschiedenen Systemtypen implementiert werden. Mit Bezug auf 15 A ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 15 A ist das Multiprozessorsystem 1500 ein Punkt-zu-Punkt-Zwischenverbindungssystem und beinhaltet einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über eine Punkt-zu-Punkt-Zwischenverbindung 1550 gekoppelt sind. Wie in 15 A kann jeder der Prozessoren 1570 und 1580 Mehrkernprozessoren sein, einschließlich erster und zweiter Prozessorkerne (d. h. Prozessorkerne 1574 a und 1574 b und Prozessorkerne 1584 a und 1584 b), obwohl potenziell viel mehr Kerne in den Prozessoren vorhanden sein können. Jeder der Prozessoren kann eine PCU oder eine andere Leistungsverwaltungslogik zum Durchführen einer prozessorbasierten Leistungsverwaltung, wie hier beschrieben, beinhalten.
  • Noch mit Bezug auf 15 A weist der erste Prozessor 1570 ferner eine integrierte Speichersteuerung (IMC) 1572 und Punkt-zu-Punkt (P-P) -Schnittstellen 1576 und 1578 auf. Gleichermaßen weist der zweite Prozessor 1580 einen IMC 1582 und P-P-Schnittstellen 1586 und 1588 auf. Wie in 15 koppeln IMCs 1572 und 1582 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1532 und einem Speicher 1534, die Teile des Systemspeichers (e.g., DRAM) sein können, die lokal mit den jeweiligen Prozessoren verbunden sind. Der erste Prozessor 1570 und der zweite Prozessor 1580 können über P-P-Zwischenverbindungen 1562 bzw. 1564 mit einem Chipsatz 1590 gekoppelt sein. Wie in 15 A weist der Chipsatz 1590 P-P-Schnittstellen 1594 und 1598 auf.
  • Des Weiteren beinhaltet der Chipsatz 1590 eine Schnittstelle 1592 zum Koppeln des Chipsatzes 1590 mit einer Hochleistungsgrafik-Engine 1538 durch eine P-P-Zwischenverbindung 1539. Wiederum kann der Chipsatz 1590 über eine Schnittstelle 1596 mit einem ersten Bus 1516 gekoppelt sein. Wie in 15 A können verschiedene Eingabe/Ausgabe (E/A) -Vorrichtungen 1514 mit dem ersten Bus 1516 gekoppelt sein, zusammen mit einer Busbrücke 1518, die den ersten Bus 1516 mit einem zweiten Bus 1520 koppelt. Verschiedene Vorrichtungen können bei einer Ausführungsform mit dem zweiten Bus 1520 gekoppelt sein, einschließlich zum Beispiel einer Tastatur/Maus 1522, Kommunikationsvorrichtungen 1526 und einer Datenspeicherungseinheit 1528, wie etwa einem Plattenlaufwerk oder einer anderen Massenspeicherungsvorrichtung, die Code 1530 beinhalten kann. Ferner kann ein Audio-E/A 1524 mit dem zweiten Bus 1520 gekoppelt sein. Ausführungsformen können in andere Arten von Systemen integriert werden, einschließlich Mobilvorrichtungen, wie etwa ein Smart-Mobiltelefon, Tablet-Computer, Netbook, UltrabookTM oder so weiter.
  • Mit Bezug auf 15 B ist ein Blockdiagramm eines zweiten spezifischeren beispielhaften Systems 1501 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in 15 A und 15 B tragen gleiche Bezugsziffern und bestimmte Aspekte von 15 A sind in Fig. „15 B, um andere Aspekte der Fig.“ 15 B.
  • 15 B veranschaulicht, dass die Prozessoren 1570, 1580 integrierten Speicher und e/A-Steuerlogik („CL“) 1571 bzw. 1581 beinhalten können. Dementsprechend beinhalten die Steuerlogik 1571 und 1581 integrierte Speichersteuerungseinheiten und beinhalten E/A-Steuerlogik. 15 N veranschaulicht, dass nicht nur die Speicher 1532, 1534 mit der Steuerlogik 1571 und 1581 gekoppelt sind, sondern auch, dass E/A-Vorrichtungen 1513 auch mit der Steuerlogik 1571 und 1581 gekoppelt sind. Legacy-E/A-Vorrichtungen 1515 sind mit dem Chipsatz 1590 gekoppelt.
  • Ein oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentativen Code implementiert werden, der auf einem maschinenlesbaren Medium gespeichert ist, das Logik innerhalb einer integrierten Schaltung, wie etwa eines Prozessors, repräsentiert und/oder definiert. Das maschinenlesbare Medium kann zum Beispiel Anweisungen beinhalten, die verschiedene Logik innerhalb des Prozessors repräsentieren. Wenn sie von einer Maschine gelesen werden, können die Anweisungen bewirken, dass die Maschine die Logik herstellt, um die hier beschriebenen Techniken durchzuführen. Solche Repräsentationen, die als „IP-KERNE“ bekannt sind, sind wiederverwendbare Logikeinheiten für eine integrierte Schaltung, die auf einem greifbaren, maschinenlesbaren Medium als ein Hardwaremodell gespeichert werden können, das die Struktur der integrierten Schaltung beschreibt. Das Hardwaremodell kann verschiedenen Kunden oder Herstellungsanlagen zugeführt werden, die das Hardwaremodell auf Herstellungsmaschinen laden, die integrierte Schaltung herstellen. Der integrierte Schaltkreis kann so gefertigt sein, dass der Schaltkreis Operationen durchführt, die in Verbindung mit einer beliebigen der hier beschriebenen Ausführungsformen beschrieben sind.
  • 16 ist ein Blockdiagramm, das ein IP-KERNENTWICKLUNGSSYSTEM 1600 veranschaulicht, das zum Herstellen einer integrierten Schaltung zum Durchführen von Operationen verwendet werden kann, gemäß einer Ausführungsform. Das IP-KERNENTWICKLUNGSSYSTEM 1600 kann verwendet werden, um modulare, wiederverwendbare Designs zu erzeugen, die in ein größeres Design integriert werden können oder verwendet werden können, um eine gesamte integrierte Schaltung (e.g., eine integrierte SoC-Schaltung) zu konstruieren. Eine Entwurfseinrichtung 1630 kann eine Softwaresimulation 1610 eines IP-KERN-ENTWURFS in einer höheren Programmiersprache (e.g., C/C++) erzeugen. Die Softwaresimulation 1610 kann verwendet werden, um das Verhalten des IP-KERNS zu entwerfen, zu testen und zu verifizieren. Aus dem Simulationsmodell kann dann Ein Register Transfer Level (RTL) Design erstellt oder synthetisiert werden. Das RTL-DESIGN 1615 ist eine Abstraktion des Verhaltens der integrierten Schaltung, die den Fluss digitaler Signale zwischen Hardwareregistern modelliert, einschließlich der assoziierten Logik, die unter Verwendung der modellierten digitalen Signale durchgeführt wird. Zusätzlich zu einem RTL-DESIGN 1615 können auch Designs niedrigerer Ebene auf dem Logikpegel oder Transistorpegel erzeugt, gestaltet oder synthetisiert werden. Dementsprechend können die speziellen Einzelheiten des anfänglichen Designs und der Simulation variieren.
  • Das RTL-DESIGN 1615 oder Äquivalent kann ferner durch die Designeinrichtung zu einem Hardwaremodell 1620 synthetisiert werden, das in einer Hardwarebeschreibungssprache (HDL) oder einer anderen Repräsentation physischer Designdaten vorliegen kann. Die HDL kann ferner simuliert oder getestet werden, um das IP-KERNDESIGN zu verifizieren. Das IP-KERNDESIGN kann zur Lieferung an eine Drittparteifertigungsanlage 1665 unter Verwendung eines nichtflüchtigen Speichers 1640 (e.g. Festplatte, Flash-Speicher oder ein beliebiges nichtflüchtiges Speichermedium) gespeichert werden. Alternativ dazu kann das IP-KERNDESIGN über eine drahtgebundene Verbindung 1650 oder eine drahtlose Verbindung 1660 übertragen (e.g. über das Internet) werden. Die Fertigungseinrichtung 1665 kann dann eine integrierte Schaltung fertigen, die zumindest teilweise auf dem IP-KERNDESIGN basiert. Die gefertigte integrierte Schaltung kann dazu konfiguriert sein, Operationen gemäß den hier beschriebenen Komponenten und/oder Prozessen durchzuführen.
  • 17 A-25, die unten beschrieben sind, ausführliche beispielhafte Architekturen und Systeme zum Implementieren von Ausführungsformen der hier beschriebenen Komponenten und/oder Prozesse. Bei manchen Ausführungsformen werden eine oder mehrere hier beschriebene Hardwarekomponenten und/oder Anweisungen emuliert, wie unten ausführlich beschrieben, oder werden als Softwaremodule implementiert.
  • Ausführungsformen des (der) oben ausführlich beschriebenen Befehls(Befehle) können in einem „generischen vektorfreundlichen Befehlsformat“ ausgeführt sein, das unten ausführlich beschrieben ist. Bei anderen Ausführungsformen wird ein solches Format nicht genutzt und ein anderes Befehlsformat wird verwendet, jedoch ist die nachfolgende Beschreibung der Schreibmaskenregister, verschiedener Datentransformationen (swizzle, Broadcast usw.), Adressierung usw. allgemein auf die vorstehende Beschreibung der Ausführungsformen des Befehls bzw. der Befehle anwendbar. Außerdem sind beispielhafte Systeme, Architekturen und Pipelines unten ausführlich beschrieben. Ausführungsformen der Anweisung(en) oben können auf solchen Systemen, Architekturen und Pipelines ausgeführt werden, sind aber nicht auf die ausführlichen beschränkt.
  • Ein Befehlssatz kann ein oder mehrere Befehlsformate beinhalten. Ein gegebenes Befehlsformat kann verschiedene Felder (e.g., Anzahl von Bits, Ort von Bits) definieren, um unter anderem die durchzuführende Operation (e.g., Opcode) und den oder die Operanden, an denen diese Operation durchzuführen ist, und/oder andere Datenfelder (e.g., Maske) zu spezifizieren. Manche Befehlsformate werden durch die Definition von Befehlstemplates (oder Subformaten) weiter zerlegt. Zum Beispiel können die Befehlstemplates eines gegebenen Befehlsformats so definiert sein, dass sie unterschiedliche Teilmengen der Felder des Befehlsformats aufweisen (die enthaltenen Felder befinden sich typischerweise in der gleichen Reihenfolge, weisen aber zumindest manche unterschiedliche Bitpositionen auf, da weniger Felder enthalten sind) und/oder so definiert sein, dass sie ein gegebenes Feld aufweisen, das unterschiedlich interpretiert wird. Somit wird jeder Befehl einer ISA unter Verwendung eines gegebenen Befehlsformats (und, falls definiert, in einer gegebenen der Befehlsvorlagen dieses Befehlsformats) ausgedrückt und beinhaltet Felder zum Spezifizieren der Operation und der Operanden. Beispielsweise weist ein beispielhafter ADD-BEFEHL einen spezifischen Opcode und ein Befehlsformat auf, das ein Opcode-Feld zum Spezifizieren dieses Opcodes und Operandenfelder zum Auswählen von Operanden (Quelle 1/Ziel und Quelle 2) beinhaltet; und ein Auftreten dieses ADD-BEFEHLS in einem Befehlsstrom wird spezifische Inhalte in den Operandenfeldern aufweisen, die spezifische Operanden auswählen. Ein Satz von SIMD-ERWEITERUNGEN, die als Advanced Vector Extensions (AVX) (AVX1 und AVX2) bezeichnet werden und das Vector Extensions (VEX) -Codierungsschema verwenden, wurde freigegeben und/oder veröffentlicht (e.g. siehe Intel® 64 und IA-32 Architecturs Software Developer's Manual, September 2014; und siehe Intel® Advanced Vector Extensions Programming Reference, Oktober 2014).
  • Beispielhafte Anweisungsformate
  • Ausführungsformen des (der) hierin beschriebenen Befehls(Befehle) können in unterschiedlichen Formaten umgesetzt sein. Außerdem sind beispielhafte Systeme, Architekturen und Pipelines unten ausführlich beschrieben. Ausführungsformen der Anweisung(en) können auf solchen Systemen, Architekturen und Pipelines ausgeführt werden, sind aber nicht auf die ausführlichen beschränkt.
  • Generisches vektorfreundliches Befehlsformat
  • Ein vektorfreundliches Befehlsformat ist ein Befehlsformat, das für Vektorbefehle geeignet ist (e.g. es gibt bestimmte Felder, die für Vektoroperationen spezifisch sind). Obwohl Ausführungsformen beschrieben sind, bei denen sowohl Vektor-als auch Skalaroperationen durch das vektorfreundliche Befehlsformat unterstützt werden, verwenden alternative Ausführungsformen nur Vektoroperationen in dem vektorfreundlichen Befehlsformat.
  • 17 A-17 B Blockdiagramme, die ein generisches vektorfreundliches Befehlsformat und Befehlstemplates davon gemäß Ausführungsformen der Erfindung veranschaulichen. 17 A ist ein Blockdiagramm, das ein generisches vektorfreundliches Befehlsformat und Klasse-A-Befehlstemplates davon gemäß Ausführungsformen der Erfindung veranschaulicht; während 17 B ist ein Blockdiagramm, das das generische vektorfreundliche Befehlsformat und Klasse-B-Befehlsvorlagen davon gemäß Ausführungsformen der Erfindung veranschaulicht. Insbesondere sind ein generisches vektorfreundliches Befehlsformat 1700, für das Klasse-A-und Klasse-B-Befehlstemplates definiert sind, die beide keine Befehlstemplates mit Speicherzugriff 1705 und Befehlstemplates mit Speicherzugriff 1720 beinhalten. „Der Begriff generisch im Kontext des vektorfreundlichen Befehlsformats bezieht sich darauf, dass das Befehlsformat nicht an einen bestimmten Befehlssatz gebunden ist.“
  • Während Ausführungsformen der Erfindung beschrieben werden, in denen das vektorfreundliche Befehlsformat Folgendes unterstützt: eine 64-Byte-Vektoroperandenlänge (oder -größe) mit 32 Bit (4 Byte) oder 64 Bit (8 Byte) Datenelementbreiten (oder -größen) (und somit ein 64-Byte-Vektor besteht entweder aus 16 Elementen mit doppelter Wortgröße oder alternativ aus 8 Elementen mit vierfacher Wortgröße); eine 64-Byte-Vektoroperandenlänge (oder -größe) mit 16 Bit (2 Byte) oder 8 Bit (1 Byte) Datenelementbreiten (oder -größen); eine 32-Byte-Vektoroperandenlänge (oder -größe) mit 32 Bit (4 Byte), 64 Bit (8 Byte), 16 Bit (2 Byte) oder 8 Bit (1 Byte) Datenelementbreiten (oder -größen); und eine 16-Byte-Vektoroperandenlänge (oder -größe) mit 32 Bit (4 Byte), 64 Bit (8 Byte), 16 Bit (2 Byte), oder 8 Bit (1 Byte) -Datenelementbreiten (oder -größen); alternative Ausführungsformen können mehr, weniger und/oder unterschiedliche Vektoroperandengrößen (e.g., 256 Byte Vektoroperanden) mit mehr, weniger oder unterschiedlichen Datenelementbreiten (e.g., 128 Bit (16 Byte) -Datenelementbreiten) unterstützen.
  • Die Klasse-A-Befehlstemplates in 17 A beinhalten: 1) innerhalb der Befehlstemplates ohne Speicherzugriff 1705 ist ein Befehlstemplate für eine Vollrundensteuerungsoperation ohne Speicherzugriff 1710 und ein Befehlstemplate für eine Datentransformationsoperation ohne Speicherzugriff 1715 gezeigt; und 2) innerhalb der Befehlstemplates mit Speicherzugriff 1720 sind ein temporales Befehlstemplate mit Speicherzugriff 1725 und ein nicht-temporales Befehlstemplate mit Speicherzugriff 1730 gezeigt. Die Befehlstemplates der Klasse B in 17 B beinhalten: 1) innerhalb der Befehlsvorlagen ohne Speicherzugriff 1705 ist eine Befehlsvorlage ohne Speicherzugriff, Schreibmaskensteuerung, Teilrundungssteuertypoperation 1712 und eine Befehlsvorlage ohne Speicherzugriff gezeigt, Befehlstemplate für Schreibmaskensteuerung, vsize, Operation 1717; und 2) innerhalb der Befehlstemplates mit Speicherzugriff 1720 ist ein Befehlstemplate für Schreibmaskensteuerung 1727 mit Speicherzugriff gezeigt.
  • Das generische vektorfreundliche Befehlsformat 1700 beinhaltet die folgenden Felder, die unten in der in den Figuren veranschaulichten Reihenfolge aufgeführt sind. 17 A-17 B.
  • Formatfeld 1740 - ein spezifischer Wert (ein Befehlsformatkennungswert) in diesem Feld identifiziert eindeutig das vektorfreundliche Befehlsformat und somit das Auftreten von Befehlen in dem vektorfreundlichen Befehlsformat in Befehlsströmen. Daher ist dieses Feld optional in dem Sinne, dass es nicht für einen Befehlssatz benötigt wird, der nur das generische vektorfreundliche Befehlsformat aufweist.
  • Basisoperationsfeld 1742 - sein Inhalt unterscheidet unterschiedliche Basisoperationen.
  • Registerindexfeld 1744 - sein Inhalt spezifiziert direkt oder durch Adresserzeugung die Orte der Quell-und Zieloperanden, sei es in Registern oder im Speicher. Diese beinhalten eine ausreichende Anzahl von Bits, um N Register aus einer PxQ (e.g, 32x512, 16x128, 32x1024, 64x1024) -Registerdatei auszuwählen. Während in einer Ausführungsform N bis zu drei Quellen und ein Zielregister sein kann, können alternative Ausführungsformen mehr oder weniger Quellen und Zielregister unterstützen (e.g. kann bis zu zwei Quellen unterstützen, wobei eine dieser Quellen auch als das Ziel fungiert, kann bis zu drei Quellen unterstützen, wobei eine dieser Quellen auch als das Ziel fungiert, kann bis zu zwei Quellen und ein Ziel unterstützen).
  • Modifikatorfeld 1746 - sein Inhalt unterscheidet das Auftreten von Befehlen im generischen Vektorbefehlsformat, die Speicherzugriff spezifizieren, von jenen, die dies nicht tun; das heißt zwischen Befehlstemplates ohne Speicherzugriff 1705 und Befehlstemplates mit Speicherzugriff 1720. Speicherzugriffsoperationen lesen und/oder schreiben in die Speicherhierarchie (in manchen Fällen spezifizieren die Quell-und/oder Zieladressen unter Verwendung von Werten in Registern), während Nicht-Speicherzugriffsoperationen dies nicht tun (e.g. die Quell-und Ziele sind Register). Während in einer Ausführungsform dieses Feld auch zwischen drei verschiedenen Wegen zum Durchführen von Speicheradressberechnungen auswählt, können alternative Ausführungsformen mehr, weniger oder verschiedene Wege zum Durchführen von Speicheradressberechnungen unterstützen.
  • Erweiterungsoperationsfeld 1750 - sein Inhalt unterscheidet, welche einer Vielzahl von verschiedenen Operationen zusätzlich zu der Basisoperation durchzuführen ist. Dieses Feld ist kontextspezifisch. In einer Ausführungsform der Erfindung ist dieses Feld in ein Klassenfeld 1768, ein Alphafeld 1752 und ein Betafeld 1754 unterteilt. Das Erweiterungsoperationsfeld 1750 ermöglicht, dass gemeinsame Gruppen von Operationen in einem einzigen Befehl anstelle von 2, 3 oder 4 Befehlen durchgeführt werden.
  • Skalierungsfeld 1760 - sein Inhalt ermöglicht das Skalieren des Inhalts des Indexfeldes zur Speicheradressenerzeugung (e.g. zur Adressenerzeugung, die 2skala * Index + Basis verwendet).
  • Verschiebungsfeld 1762 A - sein Inhalt wird als Teil der Speicheradressenerzeugung (e.g. zur Adresserzeugung, die 2skala * Index + Basis + Verschiebung verwendet) verwendet.
  • Verschiebungsfaktorfeld 1762 B (es wird angemerkt, dass die Juxtaposition des Verschiebungsfeldes 1762 A direkt über dem Verschiebungsfaktorfeld 1762 B angibt, dass das eine oder das andere verwendet wird) - sein Inhalt wird als Teil der Adresserzeugung verwendet; sie spezifiziert einen Verschiebungsfaktor, der durch die Größe eines Speicherzugriffs (N) skaliert werden soll - wobei N die Anzahl von Bytes in dem Speicherzugriff (e.g., zur Adresserzeugung, die 2skala * Index + Basis + skalierte Verschiebung verwendet) ist. Redundante niederwertige Bits werden ignoriert und daher wird der Inhalt des Verschiebungsfaktorfeldes mit der Speicheroperandengesamtgröße (N) multipliziert, um die endgültige Verschiebung zu erzeugen, die beim Berechnen einer effektiven Adresse verwendet werden soll. Der Wert von N wird durch die Prozessorhardware zur Laufzeit basierend auf dem Voll-Opcode-Feld 1774 (hier später beschrieben) und dem Datenmanipulationsfeld 1754 C bestimmt. Das Verschiebungsfeld 1762 A und das Verschiebungsfaktorfeld 1762 B sind optional in dem Sinne, dass sie nicht für die Befehlsvorlagen ohne Speicherzugriff 1705 verwendet werden und/oder unterschiedliche Ausführungsformen nur eine oder keine der beiden implementieren können.
  • Datenelementbreitenfeld 1764 - sein Inhalt unterscheidet, welche einer Anzahl von Datenelementbreiten verwendet werden soll (bei manchen Ausführungsformen für alle Befehle; bei anderen Ausführungsformen für nur einige der Befehle). „Dieses Feld ist optional in dem Sinne, dass es nicht benötigt wird, wenn nur eine Datenelementbreite unterstützt wird und/oder Datenelementbreiten unter Verwendung eines Aspekts der Opcodes unterstützt werden.“
  • Schreibmaskenfeld 1770 - sein Inhalt steuert auf einer Pro-Datenelementpositionsbasis, ob diese Datenelementposition in dem Zielvektoroperanden das Ergebnis der Basisoperation und Erweiterungsoperation widerspiegelt. Klasse-A-Befehlstemplates unterstützen das Mischen und Schreiben, während Klasse-B-Befehlstemplates sowohl das Mischen als auch das Null-Schreiben unterstützen. Beim Zusammenführen erlauben Vektormasken, dass ein beliebiger Satz von Elementen in dem Ziel vor Aktualisierungen während der Ausführung einer beliebigen Operation (spezifiziert durch die Basisoperation und die Erweiterungsoperation) geschützt wird; in einer anderen Ausführungsform bewahren des alten Werts jedes Elements des Ziels, wo das entsprechende Maskenbit eine 0 aufweist. Wenn Vektormasken Nullen dagegen ermöglichen, dass ein beliebiger Satz von Elementen in dem Ziel während der Ausführung einer beliebigen Operation (spezifiziert durch die Basisoperation und die Erweiterungsoperation) auf Nullen gesetzt wird; in einer Ausführungsform wird ein Element des Ziels auf 0 gesetzt, wenn das entsprechende Maskenbit einen 0-Wert aufweist. Eine Teilmenge dieser Funktionalität ist die Fähigkeit, die Vektorlänge der durchgeführten Operation (d. h. die Spanne von Elementen, die modifiziert werden, von dem ersten zu dem letzten) zu steuern; es ist jedoch nicht notwendig, dass die Elemente, die modifiziert werden, aufeinanderfolgend sind. Somit ermöglicht das Schreibmaskenfeld 1770 Teilvektoroperationen, einschließlich Lasten, Speicher, Arithmetik, Logik usw. Obwohl Ausführungsformen der Erfindung beschrieben sind, bei denen der Inhalt des Schreibmaskenfeldes 1770 eines aus einer Anzahl von Schreibmaskenregistern auswählt, das die zu verwendende Schreibmaske enthält (und somit der Inhalt des Schreibmaskenfeldes 1770 diese durchzuführende Maskierung indirekt identifiziert), alternative Ausführungsformen ermöglichen stattdessen oder zusätzlich, dass der Inhalt des Maskenschreibfeldes 1770 die durchzuführende Maskierung direkt spezifiziert.
  • Direktfeld 1772 - sein Inhalt ermöglicht die Spezifikation eines Direktoperanden. „Dieses Feld ist optional in dem Sinne, dass es bei einer Implementierung des generischen vektorfreundlichen Formats, das nicht sofortig unterstützt, nicht vorhanden ist und in Befehlen, die kein sofortiges verwenden, nicht vorhanden ist.“
  • Klassenfeld 1768 - sein Inhalt unterscheidet zwischen verschiedenen Klassen von Befehlen. Unter Bezugnahme auf die 17A-B, wählen die Inhalte dieses Feldes zwischen Klasse-A-und Klasse-B-Befehlen aus. In den 17A-B werden Quadrate mit abgerundeten Ecken verwendet, um anzugeben, dass ein spezifischer Wert in einem Feld (e.g., Klasse A 1768 A bzw. Klasse B 1768 B für das Klassenfeld 1768 in den 17AB).
  • Befehlsvorlagen der Klasse A
  • Im Fall der Befehlstemplates ohne Speicherzugriff 1705 der Klasse A wird das Alphafeld 1752 als ein RS-FELD 1752 A interpretiert, dessen Inhalt unterscheidet, welche der unterschiedlichen Erweiterungsoperationstypen durchzuführen sind (e.g., Rundung 1752A. 1 und Datentransformation 1752A.2 sind jeweils für die Befehlstemplates ohne Speicherzugriff, Rundungstyp, 1710 und die Befehlstemplates ohne Speicherzugriff, Datentransformationstyp, 1715 spezifiziert), während das Beta-Feld 1754 unterscheidet, welche der Operationen des spezifizierten Typs durchzuführen ist. In den Befehlstemplates ohne Speicherzugriff 1705 sind das Skalierungsfeld 1760, das Verschiebungsfeld 1762 A und das Verschiebungsskalierungsfeld 1762 B nicht vorhanden.
  • Befehlsvorlagen ohne Speicherzugriff - Vollrundungssteuerungsbetrieb
  • In der Befehlstemplate für Vollrundensteuerungstyp 1710 ohne Speicherzugriff wird das Beta-Feld 1754 als ein Rundungssteuerfeld 1754 A interpretiert, dessen Inhalt(e) statische Rundung bereitstellt(bereitstellen). Obwohl bei den beschriebenen Ausführungsformen der Erfindung das Rundungssteuerfeld 1754 A ein SAE-Feld (SAE: Suppression all Gleitkomma Exceptions) 1756 und ein Rundungsoperationssteuerfeld 1758 beinhaltet, können alternative Ausführungsformen diese beiden Konzepte in das gleiche Feld codieren oder nur das eine oder das andere dieser Konzepte/Felder aufweisen (e.g. können nur das Rundungsoperationssteuerfeld 1758 aufweisen).
  • SAE-FELD 1756 - sein Inhalt unterscheidet, ob der Ausnahmeereignisbericht deaktiviert werden soll oder nicht; wenn der Inhalt des SAE-FELDS 1756 anzeigt, dass Unterdrückung aktiviert ist, meldet ein gegebener Befehl keine Art von Gleitkomma-Ausnahme-Flag und löst keinen Gleitkomma-Ausnahme-Handler aus.
  • Rundungsoperationssteuerfeld 1758 - sein Inhalt unterscheidet, welche einer Gruppe von Rundungsoperationen durchzuführen ist (e.g., Aufrunden, Abrunden, Runden auf Null und Runden auf nächste). Somit ermöglicht das Rundungsoperationssteuerfeld 1758 das Ändern des Rundungsmodus auf einer Befehlsbasis. Bei einer Ausführungsform der Erfindung, bei der ein Prozessor ein Steuerregister zum Spezifizieren von Rundungsmodi aufweist, übersteuert der Inhalt des Rundungsoperationssteuerfeldes 1750 diesen Registerwert.
  • Keine Speicherzugriffsanweisungsvorlagen - Datentransformationsoperation
  • In der Befehlsvorlage der Datentransformationstypoperation ohne Speicherzugriff 1715 wird das Beta-Feld 1754 als ein Datentransformationsfeld 1754 B interpretiert, dessen Inhalt unterscheidet, welche einer Anzahl von Datentransformationen durchzuführen ist (e.g., keine Datentransformation, Swizzle, Broadcast).
  • Im Fall einer Befehlsvorlage mit Speicherzugriff 1720 der Klasse A wird das Alphafeld 1752 als ein Räumungshinweisfeld 1752 B interpretiert, dessen Inhalt unterscheidet, welcher der Räumungshinweise zu verwenden ist (in 17 A, temporär 1752B. 1 und nicht-temporär 1752B.2 sind jeweils für das Befehlstemplate mit Speicherzugriff, temporär 1725 und das Befehlstemplate mit Speicherzugriff, nicht-temporär 1730 spezifiziert), während das Beta-Feld 1754 als Datenmanipulationsfeld 1754 C interpretiert wird, dessen Inhalt unterscheidet, welche einer Anzahl von Datenmanipulationsoperationen (auch als Primitive bezeichnet) durchzuführen ist (e.g. keine Manipulation; Broadcast; Aufwärtswandlung einer Quelle; und Abwärtswandlung eines Ziels). Die Befehlstemplates mit Speicherzugriff 1720 beinhalten das Skalierungsfeld 1760 und optional das Verschiebungsfeld 1762 A oder das Verschiebungsskalierungsfeld 1762 B.
  • Vektorspeicherbefehle führen Vektorladungen von und Vektorspeicherungen in den Speicher mit Umwandlungsunterstützung durch. Vektorspeicherbefehle übertragen wie bei regulären Vektorbefehlen Daten von/zu dem Speicher datenelementweise, wobei die Elemente, die tatsächlich übertragen werden, durch den Inhalt der Vektormaske bestimmt werden, die als Schreibmaske ausgewählt wird.
  • Speicherzugriffsanweisungsvorlagen - Temporär
  • Zeitliche Daten sind Daten, die wahrscheinlich schnell genug wiederverwendet werden, um vom Zwischenspeichern zu profitieren. Dies ist jedoch ein Hinweis und unterschiedliche Prozessoren können ihn auf unterschiedliche Weisen implementieren, einschließlich vollständiges Ignorieren des Hinweises.
  • Speicherzugriffsanweisungsvorlagen - nicht temporär
  • Nicht-temporale Daten sind Daten, die wahrscheinlich nicht bald genug wiederverwendet werden, um vom Zwischenspeichern in dem Zwischenspeicher der 1. Ebene zu profitieren, und sollten Priorität für die Räumung erhalten. Dies ist jedoch ein Hinweis und unterschiedliche Prozessoren können ihn auf unterschiedliche Weisen implementieren, einschließlich vollständiges Ignorieren des Hinweises.
  • Befehlsvorlagen der Klasse B
  • Im Falle der Befehlsvorlagen der Klasse B wird das Alphafeld 1752 als ein Schreibmaskensteuer- (Z) -Feld 1752 C interpretiert, dessen Inhalt unterscheidet, ob die durch das Schreibmaskenfeld 1770 gesteuerte Schreibmaskierung ein Zusammenführen oder ein Nullsetzen sein sollte.
  • Im Fall der Befehlstemplates ohne Speicherzugriff 1705 der Klasse B wird ein Teil des Beta-Felds 1754 als ein RL-FELD 1757 A interpretiert, dessen Inhalt unterscheidet, welche der verschiedenen Erweiterungsoperationstypen durchzuführen sind (e.g., Rundung 1757A. 1 und Vektorlänge (VSIZE) 1757A.2 sind jeweils für den keinen Speicherzugriff spezifiziert, Schreibmaskensteuer-, Teilrundensteuertyp-Operation 1712-Befehlstemplate und Schreibmaskensteuer-, VSIZE-BEFEHLSTEMPLATE 1717 ohne Speicherzugriff), während der Rest des Beta-Felds 1754 unterscheidet, welche der Operationen des spezifizierten Typs durchzuführen ist. In den Befehlstemplates ohne Speicherzugriff 1705 sind das Skalierungsfeld 1760, das Verschiebungsfeld 1762 A und das Verschiebungsskalierungsfeld 1762 B nicht vorhanden.
  • In der Befehlstemplate 1710 für Schreibmaskensteuerung ohne Speicherzugriff wird der Rest des Betafeldes 1754 als ein Rundungsoperationsfeld 1759 A interpretiert und das Melden eines Ausnahmeereignisses ist deaktiviert (ein gegebener Befehl meldet keine Art von Gleitkommaausnahmeflag und löst keinen Gleitkommaausnahmehandler aus).
  • Rundungsoperationssteuerfeld 1759 A - genauso wie das Rundungsoperationssteuerfeld 1758 unterscheidet sein Inhalt, welche einer Gruppe von Rundungsoperationen durchzuführen ist (e.g., Aufrunden, Abrunden, Runden auf Null und Runden auf nächste). Somit ermöglicht das Rundungsoperationssteuerfeld 1759 A das Ändern des Rundungsmodus auf einer Befehlsbasis. Bei einer Ausführungsform der Erfindung, bei der ein Prozessor ein Steuerregister zum Spezifizieren von Rundungsmodi aufweist, übersteuert der Inhalt des Rundungsoperationssteuerfeldes 1750 diesen Registerwert.
  • In der Befehlstemplate der OPERATION 1717 ohne Speicherzugriff, Schreibmaskensteuerung, VSIZE-Typ, wird der Rest des Beta-Felds 1754 als ein Vektorlängenfeld 1759 B interpretiert, dessen Inhalt unterscheidet, an welcher einer Anzahl von Datenvektorlängen durchzuführen ist (e.g., 128, 256 oder 512 Byte).
  • Im Fall einer Befehlsvorlage mit Speicherzugriff 1720 der Klasse B wird ein Teil des Beta-Felds 1754 als ein Broadcast-Feld 1757 B interpretiert, dessen Inhalt unterscheidet, ob die Datenmanipulationsoperation vom Broadcast-Typ durchzuführen ist oder nicht, während der Rest des Beta-Felds 1754 als Vektorlängenfeld 1759 B interpretiert wird. Die Befehlstemplates mit Speicherzugriff 1720 beinhalten das Skalierungsfeld 1760 und optional das Verschiebungsfeld 1762 A oder das Verschiebungsskalierungsfeld 1762 B.
  • In Bezug auf das generische vektorfreundliche Befehlsformat 1700 ist ein Voll-Opcode-Feld 1774 gezeigt, das Formatfeld 1740, das Basisoperationsfeld 1742 und das Datenelementbreitenfeld 1764 beinhaltet. Obwohl eine Ausführungsform gezeigt ist, bei der das Voll-Opcode-Feld 1774 alle diese Felder beinhaltet, beinhaltet das Voll-Opcode-Feld 1774 bei Ausführungsformen, die nicht alle diese Felder unterstützen, weniger als alle diese Felder. Das volle Opcode-Feld 1774 stellt den Operationscode (Opcode) bereit.
  • Das Erweiterungsoperationsfeld 1750, das Datenelementbreitenfeld 1764 und das Schreibmaskenfeld 1770 ermöglichen, dass diese Merkmale pro Befehl in dem generischen vektorfreundlichen Befehlsformat spezifiziert werden.
  • „Die Kombination von Schreibmaskenfeld und Datenelementbreitenfeld erzeugen typisierte Befehle, indem sie es ermöglichen, die Maske basierend auf unterschiedlichen Datenelementbreiten anzuwenden.“
  • Die verschiedenen innerhalb der Klasse A und Klasse B gefundenen Befehlstemplates sind in verschiedenen Situationen vorteilhaft. In einigen Ausführungsformen der Erfindung können unterschiedliche Prozessoren oder unterschiedliche Kerne innerhalb eines Prozessors nur Klasse A, nur Klasse B oder beide Klassen unterstützen. Beispielsweise kann ein Hochleistungs-Allzweck-Außer-Reihenfolge-Kern, der für Allzweckberechnung vorgesehen ist, nur Klasse B unterstützen, ein Kern, der primär für Grafik-und/oder wissenschaftliche (Durchsatz-) Berechnung vorgesehen ist, kann nur Klasse A unterstützen, und ein für beide vorgesehener Kern kann beides unterstützen (natürlich liegt ein Kern, der eine gewisse Mischung von Vorlagen und Anweisungen aus beiden Klassen aufweist, aber nicht alle Vorlagen und Anweisungen aus beiden Klassen im Rahmen der Erfindung). Außerdem kann ein einziger Prozessor mehrere Kerne beinhalten, die alle dieselbe Klasse unterstützen oder in denen unterschiedliche Kerne unterschiedliche Klassen unterstützen. Beispielsweise kann in einem Prozessor mit getrennten Grafik-und Allzweckkernen einer der Grafikkerne, die primär für Grafik-und/oder wissenschaftliche Berechnung bestimmt sind, nur Klasse A unterstützen, während einer oder mehrere der Allzweckkerne Hochleistungs-Allzweckkerne mit Außerreihenfolgeausführung und Registerumbenennung sein können, die für Allzweckberechnung bestimmt sind, die nur Klasse b unterstützen. Ein anderer Prozessor, der keinen separaten Grafikkern aufweist, kann einen oder mehrere Allzweck-In-Order-Kerne beinhalten, die sowohl Klasse A als auch Klasse b unterstützen. Natürlich können Merkmale aus einer Klasse auch in der anderen Klasse in verschiedenen Ausführungsformen der Erfindung implementiert werden. Programme, die in einer Hochsprache geschrieben sind, würden (e.g., gerade zeitkompiliert oder statisch kompiliert) in eine Vielzahl verschiedener ausführbarer Formen gebracht werden, einschließlich: 1) ein Form ULAR, das nur Befehle der Klasse(n) aufweist, die von dem Ziel Prozessor zur Ausführung unterstützt werden; oder 2) ein Form ULAR, das alternative Routinen aufweist, die unter Verwendung unterschiedlicher Kombinationen der Befehle aller Klassen geschrieben werden, und das einen Steuer Fluss Code aufweist, der die Routinen auswählt, die basierend auf den Befehlen auszuführen sind, die von dem Prozessor unterstützt werden, der gegenwärtig den Code ausführt.
  • Beispielhaftes spezifisches vektorfreundliches Befehlsformat
  • 18 A-18 C Blockdiagramme, die ein beispielhaftes spezifisches vektorfreundliches Befehlsformat gemäß Ausführungsformen der Erfindung veranschaulichen. 18 A zeigt ein spezifisches vektorfreundliches Befehlsformat 1800, das spezifisch in dem Sinne ist, dass es den Ort, die Größe, die Interpretation und die Reihenfolge der Felder sowie Werte für manche dieser Felder spezifiziert. Das spezifische vektorfreundliche Befehlsformat 1800 kann verwendet werden, um den x86-Befehlssatz zu erweitern, und dementsprechend sind einige der Felder ähnlich oder gleich denen, die in dem existierenden x86-Befehlssatz und dessen Erweiterung verwendet werden (e.g., AVX). Dieses Format bleibt konsistent mit dem Präfixcodierungsfeld, dem realen Opcode-Bytefeld, dem MOD-R/M-Feld, dem SIB-FELD, dem Verschiebungsfeld und unmittelbaren Feldern des existierenden x86-Befehlssatzes mit Erweiterungen. Die Felder aus den FIGs. „17 A-17 B, in die Felder aus den Fig.“ 18 A-18 C Karten dargestellt sind.
  • Es versteht sich, dass, obwohl Ausführungsformen der Erfindung unter Bezugnahme auf das spezifische vektorfreundliche Befehlsformat 1800 im Kontext des generischen vektorfreundlichen Befehlsformats 1700 zu veranschaulichenden Zwecken beschrieben sind, die Erfindung nicht auf das spezifische vektorfreundliche Befehlsformat 1800 beschränkt ist, außer dort, wo beansprucht. Das generische vektorfreundliche Befehlsformat 1700 sieht zum Beispiel eine Vielfalt möglicher Größen für die verschiedenen Felder in Betracht, während das spezifische vektorfreundliche Befehlsformat 1800 Felder spezifischer Größen aufweisend gezeigt ist. Obwohl das Datenelementbreitenfeld 1764 als ein Ein-Bit-Feld in dem spezifischen vektorfreundlichen Befehlsformat 1800 veranschaulicht ist, ist die Erfindung beispielsweise nicht so beschränkt (das heißt, das generische vektorfreundliche Befehlsformat 1700 sieht andere Größen des Datenelementbreitenfelds 1764 vor).
  • „Das generische vektorfreundliche Befehlsformat 1700 umfasst die folgenden Felder, die unten in der in Fig.“ 18 A DARGESTELLT.
  • EVEX-PRAFIX (Bytes 0-3) 1802 - ist in einer Vier-Byte-Form codiert.
  • Formatfeld 1740 (EVEX-BYTE 0, Bits [7:0]) - das erste Byte (EVEX-BYTE 0) ist das Formatfeld 1740 und enthält 0x62 (den eindeutigen Wert, der zum Unterscheiden des vektorfreundlichen Befehlsformats in einer Ausführungsform der Erfindung verwendet wird).
  • Die zweit-vierten Bytes (EVEX-BYTES 1-3) beinhalten eine Anzahl von Bitfeldern, die eine spezifische Fähigkeit bereitstellen.
  • REX-FELD 1805 (EVEX-BYTE 1, Bits [7-5]) - besteht aus einem EVEX.R-Bitfeld (EVEX-BYTE 1, Bit [7] - R), EVEX.X-Bitfeld (EVEX-BYTE 1, Bit [6] - X) und EVEX.B-Byte 1, Bit[5] - B). Die EVEX.R-, EVEX.X-und EVEX.B-Bitfelder stellen die gleiche Funktionalität wie die entsprechenden VEX-BITFELDER bereit und werden unter Verwendung einer 1S-Komplementform codiert, d. h. ZMM0 wird als 1111 B codiert, ZMM15 wird als 0000 B codiert. Andere Felder der Befehle codieren die niedrigeren drei Bits der Registerindizes, wie in der Technik bekannt ist (rrr, xxx und bbb), so dass Rrr, Xxxx und Bbbb durch Hinzufügen von EVEX.R, EVEX.X und EVEX.b gebildet werden können.
  • REX ‚-Feld 1810 - dies ist der erste Teil des REX‘ -Feldes 1810 und ist das EVEX.R ‚-Bitfeld (EVEX-BYTE 1, Bit [4] -R‘), das verwendet wird, um entweder den oberen 16 oder den unteren 16 des erweiterten 32-Registersatzes zu codieren. Bei einer Ausführungsform der Erfindung wird dieses Bit zusammen mit anderen, wie unten angegeben, in bitinvertiertem Format gespeichert, um (im wohlbekannten x86-32-Bit-Modus) von dem GEBUNDENEN Befehl zu unterscheiden, dessen reales Opcode-Byte 62 ist, „Akzeptiert aber im MOD-R/M-Feld (nachfolgend beschrieben) nicht den Wert von 11 im MOD-FELD, alternative Ausführungsformen der Erfindung speichern dies und die anderen angegebenen Bits nachfolgend nicht im invertierten Format.“ Zur Codierung der unteren 16 Register wird ein Wert von 1 verwendet. Mit anderen Worten wird R ‚Rrrr durch Kombinieren von EVEX.R‘, EVEX.R und dem anderen RRR aus anderen Feldern gebildet.
  • Opcode-Abbildungsfeld 1815 (EVEX-BYTE 1, Bits [3:0] - mmmm) - sein Inhalt codiert ein impliziertes führendes Opcode-Byte (0 F, 0 F 38 oder 0 F 3).
  • Das Datenelementbreitenfeld 1764 (EVEX-BYTE 2, Bit [7] - W) - wird durch die Notation EVEX.W repräsentiert. EVEX.W wird verwendet, um die Granularität (Größe) des Datentyps (entweder 32-Bit-Datenelemente oder 64-Bit-Datenelemente) zu definieren.
  • EVEX.vvvv 1820 (EVEX-BYTE 2, Bits [6: 3]-vvvv)- die Rolle von EVEX.wvv kann Folgendes beinhalten: 1) EVEX.vvvv codiert den ersten Quellregisteroperanden, spezifiziert in invertierter (1S-Komplement-) Form, und ist gültig für Befehle mit 2 oder mehr Quelloperanden; 2) EVEX.vvvv codiert den Zielregisteroperanden, spezifiziert in 1S-Komplementform für bestimmte Vektorverschiebungen; oder 3) EVEX.vvvv codiert keinen Operanden, das Feld ist reserviert und sollte 1111 b enthalten. Somit codiert das EVEX.ww-Feld 1820 die 4 niederwertigen Bits des ersten Quellregisterspezifizierers, die in invertierter (1S-Komplement) Form gespeichert sind. In Abhängigkeit von der Anweisung wird ein zusätzliches unterschiedliches EVEX-BITFELD verwendet, um die Spezifiziergröße auf 32 Register zu erweitern.
  • EVEX.U 1768 Klassenfeld (EVEX-BYTE 2, Bit [2]-U) - falls EVEX.U = 0, gibt es Klasse A oder EVEX.U0 an; falls EVEX.U = 1, gibt es Klasse B oder EVEX.U1.
  • Präfixcodierungsfeld 1825 (EVEX-BYTE 2, Bits [1: 0]-pp) - stellt zusätzliche Bits für das Basisoperationsfeld bereit. Zusätzlich zum Bereitstellen von Unterstützung für die LEGACY-SSE-ANWEISUNGEN im EVEX-PRÄFIXFORMAT hat dies auch den Vorteil des Kompaktierens des SIMD-PRAFIXES (anstatt ein Byte zum Ausdrücken des SIMD-PRÄFIXES zu benötigen, benötigt das EVEX-PRÄFIX nur 2 Bits). In einer Ausführungsform, um LEGACY-SSE-ANWEISUNGEN zu unterstützen, die ein SIMD-PRAFIX (66 H, F2H, F3H) sowohl im Legacy-Format als auch im EVEX-PRAFIXFORMAT verwenden, diese LEGACY-SIMD-PRAFIXE in das SIMD-PRAFIXCODIERUNGSFELD codiert werden; und zur Lauf Zeit in das Legacy SIMD Präfix erweitert werden, bevor es der PLA des Decodierers bereitgestellt wird (so dass die PLA sowohl das Legacy Format als auch das EVEX-FORMAT dieser Legacy Befehle ohne Modifikation ausführen kann). Obwohl neuere Anweisungen den Inhalt des EVEX-PRÄFIXCODIERUNGSFELDES direkt als eine Opcode-Erweiterung verwenden könnten, erweitern sich bestimmte Ausführungsformen auf ähnliche Weise hinsichtlich Konsistenz, erlauben aber, dass unterschiedliche Bedeutungen durch diese LEGACY-SIMD-PRAFIXE spezifiziert werden. Eine alternative Ausführungsform kann die PLA umkonstruieren, um die 2-BIT-SIMD-PRÄFIXCODIERUNGEN zu unterstützen, und somit die Erweiterung nicht erfordern.
  • Alphafeld 1752 (EVEX-BYTE 3, Bit [7] - EH; auch als EVEX.EH, EVEX.rs, EVEX.RL, EVEX.write-Maskensteuerung und EVEX.N bekannt; auch mit α veranschaulicht) - wie zuvor beschrieben, ist dieses Feld kontextspezifisch.
  • Beta-Feld 1754 (EVEX-BYTE 3, Bits [6: 4]-SSS, auch als EVEX.S2-0, EVEX.r2-0, EVEX.rr1, EVEX.LL0, EVEX.LLB bekannt; auch mit βββ veranschaulicht) - wie zuvor beschrieben, ist dieses Feld kontextspezifisch.
  • REX ‚-Feld 1810 - dies ist der Rest des REX‘ -Feldes und ist das EVEX.V ‚-Bitfeld (EVEX-BYTE 3, Bit [3] - V‘), das verwendet werden kann, um entweder den oberen 16 oder den unteren 16 des erweiterten 32-Registersatzes zu codieren. Dieses Bit wird bitinvertiert gespeichert. Zur Codierung der unteren 16 Register wird ein Wert von 1 verwendet. Mit anderen Worten wird V ‚VWV durch Kombinieren von EVEX.V‘, EVEX.wvv gebildet.
  • Schreibmaskenfeld 1770 (EVEX-BYTE 3, Bits [2: 0]-kkk) - sein Inhalt spezifiziert den Index eines Registers in den Schreibmaskenregistern, wie zuvor beschrieben. Bei einer Ausführungsform der Erfindung weist der spezifische Wert EVEX.kkk=000 ein spezielles Verhalten auf, das impliziert, dass keine Schreibmaske für den bestimmten Befehl verwendet wird (dies kann auf eine Vielzahl von Weisen implementiert werden, einschließlich der Verwendung einer Schreibmaske, die mit allen fest verdrahtet ist, oder Hardware, die Maskierungshardware umgeht).
  • Das reale Opcode-Feld 1830 (Byte 4) ist auch als das Opcode-Byte bekannt. In diesem Feld ist ein Teil des Opcodes angegeben.
  • Das MOD-R/M-Feld 1840 (Byte 5) weist das MOD-FELD 1842, das Reg-Feld 1844 und das R/M-Feld 1846 auf. Wie zuvor beschrieben, unterscheidet der Inhalt des MOD-FELDES 1842 zwischen Speicherzugriffs-und Nicht-Speicherzugriffsoperationen. Die Rolle des Reg-Feldes 1844 lässt sich zu zwei Situationen zusammenfassen: Codieren entweder des Zielregisteroperanden oder eines Quellregisteroperanden, oder als eine Opcode-Erweiterung behandelt werden und nicht zum Codieren irgendeines Befehlsoperanden verwendet werden. Die Rolle des R/M-Feldes 1846 kann Folgendes beinhalten: Codieren des Befehlsoperanden, der eine Speicheradresse referenziert, oder Codieren entweder des Zielregisteroperanden oder eines Quellregisteroperanden.
  • Skalierungs-, Index-, Basis (SIB) -Byte (Byte 6) - Wie zuvor beschrieben, wird der Inhalt des Skalierungsfeldes 1850 zur Speicheradressenerzeugung verwendet. SIB.xxx 1854 und SIB.bbb 1856 - auf die Inhalte dieser Felder wurde zuvor bezüglich der Registerindizes Xxxx und Bbbb Bezug genommen.
  • Verschiebungsfeld 1762 A (Bytes 7-10) - wenn das MOD-FELD 1842 10 enthält, sind Bytes 7-10 das Verschiebungsfeld 1762 A, und es arbeitet wie die Legacy 32-Bit-Verschiebung (disp32) und arbeitet mit Bytegranularität.
  • Verschiebungsfaktorfeld 1762 B (Byte 7) - wenn DAS MOD-Feld 1842 01 enthält, ist Byte 7 das Verschiebungsfaktorfeld 1762 B. Der Ort dieses Feldes ist derselbe wie der der 8-Bit-Verschiebung des Legacy-x86-Befehlssatzes (disp8), der bei Bytegranularität arbeitet. Da disp8 vorzeichenerweitert ist, kann es nur zwischen -128 und 127 Bytes Offsets adressieren; in Bezug auf 64-Byte-Cache-Zeilen verwendet disp8 8 Bits, die auf nur vier wirklich nützliche Werte -128, -64, 0 und 64 gesetzt werden können; da oft ein größerer Bereich benötigt wird, wird disp32 verwendet; disp32 benötigt jedoch 4 Bytes. Im Gegensatz zu disp8 und disp32 ist das Verschiebungsfaktorfeld 1762 B eine Neuinterpretation von disp8; bei Verwendung des Verschiebungsfaktorfeldes 1762 B wird die tatsächliche Verschiebung durch den Inhalt des Verschiebungsfaktorfeldes multipliziert mit der Größe des Speicheroperandenzugriffs (N) bestimmt. Diese Art der Verschiebung wird als disp8*n bezeichnet. „Dies reduziert die durchschnittliche Befehlslänge (ein einzelnes Byte wird für die Verschiebung verwendet, jedoch mit einer viel größeren Reichweite).“ Eine solche komprimierte Verschiebung basiert auf der Annahme, dass die effektive Verschiebung ein Vielfaches der Granularität des Speicherzugriffs ist und daher die redundanten niederwertigen Bits des Adressversatzes nicht codiert werden müssen. Mit anderen Worten ersetzt das Verschiebungsfaktorfeld 1762 B die 8-Bit-Verschiebung des Legacy x86-Befehlssatzes. Somit wird das Verschiebungsfaktorfeld 1762 B auf die gleiche Weise codiert wie eine 8-Bit-Verschiebung eines x86-Befehlssatzes (also keine Änderungen in den ModRM/SIB-CODIERUNGSREGELN) mit der einzigen Ausnahme, dass disp8 auf disp8*n überlastet wird. Mit anderen Worten gibt es keine Änderungen in den Codierungsregeln oder Codierungslängen, sondern nur in der Interpretation des Verschiebungswerts durch Hardware (die die Verschiebung um die Größe des Speicheroperanden skalieren muss, um einen byteweisen Adressversatz zu erhalten). Das unmittelbare Feld 1772 arbeitet wie zuvor beschrieben.
  • Volles Opcode-Feld
  • Fig. „18 B ist ein Blockdiagramm, das die Felder des spezifischen vektorfreundlichen Befehlsformats 1800 veranschaulicht, die das volle Opcode-Feld 1774 bilden, gemäß einer Ausführungsform der Erfindung.“ Insbesondere weist das Voll-Opcode-Feld 1774 das Formatfeld 1740, das Basis-Operationsfeld 1742 und das Datenelementbreite (W) -Feld 1764 auf. Das Basisoperationsfeld 1742 weist das Präfixcodierungsfeld 1825, das Opcode-Kartenfeld 1815 und das Real-Opcode-Feld 1830 auf.
  • Registerindexfeld
  • Fig. „18 C ist ein Blockdiagramm, das die Felder des spezifischen vektorfreundlichen Befehlsformats 1800 veranschaulicht, die das Registerindexfeld 1744 bilden, gemäß einer Ausführungsform der Erfindung.“ Insbesondere weist das Registerindexfeld 1744 das REX-FELD 1805, das REX'-Feld 1810, das MODR/M.reg-Feld 1844, das MODR/M.r/M-Feld 1846, das VVVV-FELD 1820, das xxx-Feld 1854 und das bbb-Feld 1856 auf.
  • Erweiterungsoperationsfeld
  • 18 D ist ein Blockdiagramm, das die Felder des spezifischen vektorfreundlichen Befehlsformats 1800 veranschaulicht, die das Erweiterungsoperationsfeld 1750 bilden, gemäß einer Ausführungsform der Erfindung. Wenn das Klasse (U) -Feld 1768 0 enthält, bedeutet es EVEX.U0 (Klasse A 1768 A); wenn es 1 enthält, bedeutet es EVEX.U1 (Klasse B 1768 B). Wenn U=0 ist und das MOD-FELD 1842 11 enthält (was eine Operation ohne Speicherzugriff bedeutet), wird das Alphafeld 1752 (EVEX-BYTE 3, Bit [7] - EH) als das rs-Feld 1752 A interpretiert. Wenn das rs-Feld 1752 A eine 1 (Rundung 1752A.1) enthält, wird das Beta-Feld 1754 (EVEX-BYTE 3, Bits [6:4]- SSS) als das Rundungssteuerfeld 1754 A interpretiert. Das Rundungssteuerfeld 1754 A weist ein EINBIT-SAE-FELD 1756 und ein Zweibit-Rundungsoperationsfeld 1758 auf. Wenn das rs-Feld 1752 A eine 0 enthält (Datentransformation 1752A.2), wird das Beta-Feld 1754 (EVEX-BYTE 3, Bits [6:4]- SSS) als ein Drei-Bit-Datentransformationsfeld 1754 B interpretiert. Wenn U=0 ist und das MOD-FELD 1842 00, 01 oder 10 enthält (was eine Speicherzugriffsoperation bedeutet), wird das Alphafeld 1752 (EVEX-BYTE 3, Bit [7] - EH) als das Räumungshinweis (EH) -Feld 1752 B interpretiert und das Betafeld 1754 (EVEX-BYTE 3, Bit [6:4]- SSS) wird als ein Drei-Bit-Datenmanipulationsfeld 1754 C interpretiert.
  • Wenn U=1, wird das Alphafeld 1752 (EVEX-BYTE 3, Bit [7] - EH) als das Schreibmaskensteuer- (Z) -Feld 1752 C interpretiert. Wenn U=1 und das MOD-FELD 1842 11 enthält (was eine Operation ohne Speicherzugriff bedeutet), wird ein Teil des Beta-Felds 1754 (EVEX-BYTE 3, Bit [4]- So) als das RL-FELD 1757 A interpretiert; wenn es eine 1 (Rundung 1757A.1) enthält, wird der Rest des Beta-Felds 1754 (EVEX-BYTE 3, Bit [6-5]-S2-1) als das Rundungsoperationsfeld 1759 A interpretiert wird, während, wenn das RL-FELD 1757 A eine 0 (VSIZE 1757.A2) enthält, der Rest des Beta-Felds 1754 (EVEX-BYTE 3, Bit [6-5]- S2-1) als das Vektorlängenfeld 1759 B (EVEX-BYTE 3, Bit [6-5]- L1-0) interpretiert wird. Wenn U=1 und das MOD-FELD 1842 00, 01 oder 10 enthält (was eine Speicherzugriffsoperation bedeutet), wird das Beta-Feld 1754 (EVEX-BYTE 3, Bits [6:4]-SSS) als das Vektorlängenfeld 1759 B (EVEX-BYTE 3, Bit [6-5]- L1-0) und das Broadcast-Feld 1757 B (EVEX-BYTE 3, Bit [4]- B) interpretiert.
  • Beispielhafte Registerarchitektur
  • 19 ist ein Blockschaltbild einer Registerarchitektur 1900 gemäß einer Ausführungsform der Erfindung. Bei der veranschaulichten Ausführungsform gibt es 32 Vektorregister 1910, die 512 Bit breit sind; diese Register werden als zmm0 bis zmm31 bezeichnet. Die niederwertigen 256 Bits der unteren 16 zmm-Register werden den Registern ymm0-16 überlagert. Die niederwertigen 128 Bits der unteren 16 zmm-Register (die niederwertigen 128 Bits der ymm-Register) werden den Registern xmm0-15 überlagert. Das spezifische vektorfreundliche Befehlsformat 1800 arbeitet auf diesen überlagerten Registerdateien, wie in den folgenden Tabellen veranschaulicht.
    Einstellbare Vektorlänge Klasse Operationen Register
    Befehlsvorlagen, die das Vektorlängenfeld 1759 B nicht beinhalten A (17 A; U=0) 1710, 1715, 1725, 1730 ZMM-Register (die Vektorlänge beträgt 64 Byte)
    B (17 B; U=1) 1712 ZMM-Register (die Vektorlänge beträgt 64 Byte)
    Befehlsvorlagen, die das Vektorlängenfeld 1759 B beinhalten B (17 B; U=1) 1717, 1727 ZMM-, yMM-oder xmm-Register (die Vektorlänge beträgt 64 Byte, 32 Byte oder 16 Byte) in Abhängigkeit von dem Vektorlängenfeld 1759 B
  • Mit anderen Worten wählt das Vektorlängenfeld 1759 B zwischen einer maximalen Länge und einer oder mehreren anderen kürzeren Längen aus, wobei jede solche kürzere Länge die Hälfte der Länge der vorhergehenden Länge ist; und Befehlsvorlagen ohne das Vektorlängenfeld 1759 B arbeiten mit der maximalen Vektorlänge. Ferner arbeiten in einer Ausführungsform die Klasse-B-Befehlstemplates des spezifischen vektorfreundlichen Befehlsformats 1800 an gepackten oder skalaren Gleitkommadaten mit einfacher/doppelter Genauigkeit und gepackten oder skalaren Ganzzahldaten. Skalaroperationen sind Operationen, die an der Datenelementposition niedrigster Ordnung in einem zmm/ymm/xmm-Register durchgeführt werden; die Datenelementpositionen höherer Ordnung werden je nach Ausführungsform entweder gleich gelassen wie vor dem Befehl oder auf Null gesetzt.
  • Schreibmaskenregister 1915 - bei der veranschaulichten Ausführungsform gibt es 8 Schreibmaskenregister (k0 bis k7), die jeweils 64 Bit groß sind. Bei einer alternativen Ausführungsform sind die Schreibmaskenregister 1915 16 Bit groß. Wie zuvor beschrieben, kann in einer Ausführungsform der Erfindung das Vektormaskenregister k0 nicht als eine Schreibmaske verwendet werden; wenn die Codierung, die normalerweise k0 angeben würde, für eine Schreibmaske verwendet wird, wählt es eine festverdrahtete Schreibmaske von 0xFFFF aus, wodurch die Schreibmaske für diesen Befehl effektiv deaktiviert wird.
  • Universalregister 1925 - bei der veranschaulichten Ausführungsform gibt es sechzehn 64-Bit-Universalregister, die zusammen mit den existierenden x86 Adressierungsmodi verwendet werden, um Speicheroperanden zu adressieren. Diese Register werden durch die Namen RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP und R8 bis R15 bezeichnet.
  • Skalare Gleitkommastapelregisterdatei (x87-Stack) 1945, auf der die MMX-GEPACKTE Ganzzahlflachregisterdatei 1950 aliasiert ist - in der veranschaulichten Ausführungsform ist der x87 - Stack ein achtgliedriger Stack, der verwendet wird, um skalare Gleitkommaoperationen an 32/64/80-Bit-Gleitkommadaten unter Verwendung der x87-Befehlssatzerweiterung durchzuführen, während die MMX-REGISTER verwendet werden, um Operationen an gepackten 64-Bit-Ganzzahldaten durchzuführen sowie Operanden für manche Operationen zu halten, die zwischen den MMX-und XMM-REGISTERN durchgeführt werden.
  • Alternative Ausführungsformen der Erfindung können breitere oder schmalere Register verwenden. Zusätzlich dazu können alternative Ausführungsformen der Erfindung mehr, weniger oder unterschiedliche Registerdateien und Register verwenden.
  • Beispielhafte Kernarchitekturen, Prozessoren und Computerarchitekturen
  • Prozessorkerne können auf unterschiedliche Weisen, für unterschiedliche Zwecke und in unterschiedlichen Prozessoren implementiert sein. Implementierungen solcher Kerne können beispielsweise Folgendes beinhalten: 1) einen Allzweck Kern in der Reihen Folge, der für die Allzweck Berechnung vorgesehen ist; 2) einen hoch Leistung mehr Zweck Kern in der Reihen Folge, der für die Allzweck Berechnung vorgesehen ist; 3) einen spezial Kern, der primär für die Grafik-und/oder wissenschaftliche (Durchsatz-) Berechnung vorgesehen ist. Implementierungen verschiedener Prozessoren können Folgendes beinhalten: 1) eine CPU mit einem oder mehreren Allzweck Kernen in der Reihen Folge, die für die Allzweck Berechnung vorgesehen sind, und/oder einem oder mehreren Allzweck Kernen außer der Reihen Folge, die für die Allzweck Berechnung vorgesehen sind; und 2) einen Coprozessor mit einem oder mehreren spezial Kernen, die primär für Grafik und/oder wissenschaftlich (durch Satz) vorgesehen sind. Solche unterschiedlichen Prozessoren führen zu unterschiedlichen Computersystemarchitekturen, die Folgendes beinhalten können: 1) den Coprozessor auf einem separaten Chip von der CPU; 2) den Coprozessor auf einem separaten Chip in demselben Gehäuse wie eine CPU; 3) den Coprozessor auf demselben Chip wie eine CPU (wobei in diesem Fall ein solcher Coprozessor manchmal als spezial Logik bezeichnet wird, wie etwa integrierte Grafik-und/oder wissenschaftliche (Durchsatz-) Logik, oder als Sonder Zweck kerne); und 4) ein System auf einem Chip, das auf demselben Die die beschriebene CPU (manchmal als Anwendung Kern(en) oder Anwendung Prozessor(en)bezeichnet), den oben beschriebenen Coprozessor und zusätzliche Funktionalität beinhalten kann. Beispielhafte Kernarchitekturen werden als Nächstes beschrieben, gefolgt von Beschreibungen beispielhafter Prozessoren und Computerarchitekturen.
  • Beispielhafte Kernarchitekturen
  • In-order und Out-of-order Kern Block Diagramm
  • 20 A ist ein Blockdiagramm, das sowohl eine beispielhafte reihenfolgetreue Pipeline als auch eine beispielhafte reihenfolgeveränderte Registerumbenennungs-Ausgabe-/Ausführungspipeline gemäß Ausführungsformen der Erfindung veranschaulicht. 20 B ist ein Blockdiagramm, das sowohl ein Ausführungsbeispiel eines In-Reihenfolge-Architekturkerns als auch einen beispielhaften Registerumbenennungs-Außer-Reihenfolge-Ausgabe-/Ausführungsarchitekturkem, der in einem Prozessor enthalten sein soll, gemäß Ausführungsformen der Erfindung veranschaulicht. Die Kästen mit durchgezogenen Linien in den 20A-B veranschaulichen die reihenfolgetreue Pipeline und den reihenfolgetreuen Kern, während die optionale Hinzufügung der gestrichelten Kästchen die Registerumbenennungs-, reihenfolgetreue Ausgabe/Ausführungs-Pipeline und den -kern veranschaulicht. Angesichts dessen, dass der reihenfolgetreue Aspekt eine Teilmenge des reihenfolgetreue Aspekts ist, wird der reihenfolgetreue Aspekt beschrieben.
  • In 20 A beinhaltet eine Prozessor-Pipeline 2000 eine Abrufstufe 2002, eine Längendecodierstufe 2004, eine Decodierstufe 2006, eine Zuordnungsstufe 2008, eine Umbenennungsstufe 2010, eine Planungsstufe 2012 (auch als eine Dispatch-oder Ausgabestufe bekannt), eine Registerlese-/Speicherlesestufe 2014, eine Ausführungsstufe 2016, eine Rückschreib-/Speicherschreibstufe 2018, eine Ausnahmebehandlungsstufe 2022 und eine Commit Stufe 2024.
  • 20 B zeigt den Prozessorkern 2090 einschließlich einer Frontend-Einheit 2030, die mit einer Ausführungs-Engine-Einheit 2050 gekoppelt ist, und beide sind mit einer Speichereinheit 2070 gekoppelt. Der Kern 2090 kann ein RISC-KERN (RISC: Reduced Instruction Set Computing), ein CISC-Kern (CISC: Complex Instruction Set Computing), ein VLIW-Kern (VLIW: Very Long Instruction Word) oder ein hybrider oder alternativer Kerntyp sein. Als noch eine andere Option kann der Kern 2090 ein Spezialkern sein, wie etwa zum Beispiel ein Netzwerk-oder Kommunikationskern, eine Kompressions-Engine, ein Koprozessorkern, ein GPGPU-Kern (GPPU: Allzweck Computing Graphics Processing Unit), ein Grafikkern oder dergleichen.
  • Die Frontendeinheit 2030 beinhaltet eine Verzweigungsvorhersageeinheit 2032, die mit einer Befehls-Cacheeinheit 2034 gekoppelt ist, die mit einem Befehlsübersetzungspuffer (TLB) 2036 gekoppelt ist, der mit einer Befehlsabrufeinheit 2038 gekoppelt ist, die mit einer Decodiereinheit 2040 gekoppelt ist. Die Decodiereinheit 2040 (oder der Decodierer) kann Befehle decodieren und als eine Ausgabe eine oder mehrere Mikrooperationen, Mikrocodeeingangspunkte, Mikrobefehle, andere Befehle oder andere Steuersignale erzeugen, die von den ursprünglichen Befehlen decodiert werden oder die anderweitig widerspiegeln oder von diesen abgeleitet werden. Die Decodiereinheit 2040 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele für geeignete Mechanismen beinhalten unter anderem Nachschlagetabellen, Hardware-Implementierungen, programmierbare Logikarrays (PLAs), Mikrocode-Festwertspeicher (ROMs) usw. In einer Ausführungsform beinhaltet der Kern 2090 ein MIKROCODE-ROM oder ein anderes Medium, das Mikrocode für bestimmte Makrobefehle speichert (e.g. in der Decodiereinheit 2040 oder anderweitig innerhalb der Frontendeinheit 2030). Die Decodiereinheit 2040 ist mit einer Umbenennung/Zuordnungseinheit 2052 in der Ausführungs-Engine-Einheit 2050 gekoppelt.
  • Die Ausführungs-Engine-Einheit 2050 beinhaltet die Umbenennungs-/Zuordnungseinheit 2052, die mit einer Rückzugseinheit 2054 und einem Satz von einer oder mehreren Schedulereinheit(en) 2056 gekoppelt ist. Die Schedulereinheit(en) 2056 repräsentiert(repräsentieren) eine beliebige Anzahl verschiedener Scheduler, einschließlich Reservierungsstationen, zentralem Anweisungsfenster usw. Die Schedulereinheit(en) 2056 ist(sind) mit der (den) physischen Registerdatei(en) einheit(en) 2058 gekoppelt. Jede der physischen Registerdatei(en) einheiten 2058 repräsentiert eine oder mehrere physische Registerdateien, von denen verschiedene einen oder mehrere verschiedene Datentypen speichern, wie etwa skalare Ganzzahl, skalare Gleitkomma, gepackte Ganzzahl, gepackte Gleitkomma, Vektor-Ganzzahl, Vektor-Gleitkomma, Status (e.g., ein Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. In einer Ausführungsform umfasst die physische(n) Registerdatei(en) -Einheit 2058 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine Skalarregistereinheit. Diese Registereinheiten können Architekturvektorregister, Vektormaskenregister und Allzweckregister bereitstellen. Die physische (n) Registerdatei(en) -Einheit(en) 2058 wird(werden) durch die Rückzugseinheit 2054 überlappt, um verschiedene Weisen zu veranschaulichen, auf die Registerumbenennung und Außer-Reihenfolge-Ausführung implementiert werden können (e.g. unter Verwendung eines Rückordnungspuffers(en) und einer Rückzugsregisterdatei(en); unter Verwendung einer zukünftigen Datei(en), eines Historiepuffers(en) und einer Rückzugsregisterdatei(en); unter Verwendung einer Registerabbildung und eines Pools von Registern; usw.). Die Rückzugseinheit 2054 und die physische(n) Registerdatei(en) einheit(en) 2058 sind mit dem (den) Ausführungscluster(n) 2060 gekoppelt. Der eine oder die mehreren Ausführungscluster 2060 weisen einen Satz von einer oder mehreren Ausführungseinheiten 2062 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 2064 auf. Die Ausführungseinheiten 2062 können verschiedene Operationen (e.g. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Datentypen (e.g. skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektor-Ganzzahl, Vektor-Gleitkomma) durchführen. Obwohl manche Ausführungsformen eine Anzahl von Ausführungseinheiten beinhalten können, die spezifischen Funktionen oder Sätzen von Funktionen dediziert sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten beinhalten, die alle alle Funktionen durchführen. Die Schedulereinheit(en) 2056, die physische (n) Registerdatei(en) einheit(en) 2058 und der/die Ausführungscluster 2060 sind als möglicherweise mehrfach gezeigt, weil bestimmte Ausführungsformen separate Pipelines für bestimmte Arten von Daten/Operationen erzeugen (e.g. eine skalare Ganzzahl-Pipeline, eine skalare Gleitkomma-/gepackte Ganzzahl-/gepackte Gleitkomma-/Vektor-Ganzzahl-/Vektor-Gleitkomma-Pipeline, und/oder eine Speicherzugriffspipeline, die jeweils ihre eigene Schedulereinheit, physische Registerdatei(en) -Einheit und/oder Ausführungs-Cluster aufweisen - und im Falle einer separaten Speicherzugriffspipeline werden bestimmte Ausführungsformen implementiert, bei denen nur der Ausführungs-Cluster dieser Pipeline die Speicherzugriffseinheit(en) 2064 aufweist). Es versteht sich auch, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines außer der Reihenfolge Ausgabe/Ausführung und der Rest in der Reihenfolge sein können.
  • Der Satz von Speicherzugriffseinheiten 2064 ist mit der Speichereinheit 2070 gekoppelt, die eine DATEN-TLB-EINHEIT 2072 beinhaltet, die mit einer Daten-Cache-Einheit 2074 gekoppelt ist, die mit einer Ebene 2 (L2) -Cache-Einheit 2076 gekoppelt ist. Bei einem Ausführungsbeispiel können die Speicherzugriffseinheiten 2064 eine Ladeeinheit, eine Speicheradresseinheit und eine Speicherdateneinheit beinhalten, von denen jede mit der DATEN-TLB-EINHEIT 2072 in der Speichereinheit 2070 gekoppelt ist. Die Anweisungs-Cache-Einheit 2034 ist ferner mit einer Ebene 2 (L2) -Cache-Einheit 2076 in der Speichereinheit 2070 gekoppelt. Die L2-Cache-Einheit 2076 ist mit einer oder mehreren anderen Cache-Ebenen und schließlich mit einem Hauptspeicher gekoppelt.
  • Beispielsweise kann die beispielhafte Registerumbenennungs-Außer-Reihenfolge-Ausgabe-/Ausführungskernarchitektur die Pipeline 2000 wie folgt implementieren: 1) der Befehlsabruf 2038 führt die Abruf-und Längendecodierstufen 2002 und 2004 durch; 2) die Decodiereinheit 2040 führt die Decodierstufe 2006 durch; 3) die Umbenennungs-/Zuordnungseinheit 2052 führt die Zuordnungsstufe 2008 und Umbenennungsstufe 2010 durch; 4) Die Schedulereinheit(en) 2056 führen die Schedulerstufe 2012 durch; 5) die physische (n) Registerdateieinheit(en) 2058 und die Speichereinheit 2070 führen die Registerlese-/Speicherlesestufe 2014 durch; der Ausführungscluster 2060 führt die Ausführungsstufe 2016 durch; 6) die Speichereinheit 2070 und die physische(n) Registerdatei(en) einheit(en) 2058 führen die Rückschreib-/Speicherschreibstufe 2018 durch; 7) verschiedene Einheiten können an der Ausnahmebehandlungsstufe 2022 beteiligt sein; und 8) die Rückzugseinheit 2054 und die physische(n) Registerdatei(en) einheit(en) 2058 führen die Festschreibstufe 2024 durch.
  • Der Kern 2090 kann einen oder mehrere Befehlssätze unterstützen (e.g., den x86-Befehlssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-BEFEHLSSATZ von MIPS Technologies von Sunnyvale, CA; den ARM-BEFEHLSSATZ (mit optionalen zusätzlichen Erweiterungen wie NEON) von ARM Holdings von Sunnyvale, CA), einschließlich des oder der hierin beschriebenen Befehle. In einer Ausführungsform weist der Kern 2090 Logik auf, um eine Befehlssatzerweiterung gepackter Daten (e.g., AVX1, AVX2) zu unterstützen, wodurch ermöglicht wird, dass die Operationen, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung gepackter Daten durchgeführt werden.
  • Es versteht sich, dass der Kern Multithread (Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies auf eine Vielzahl von Weisen tun kann, einschließlich zeitgeschnittener Multithread, simultanes Multithread (wobei ein einziger physischer Kern einen logischen Kern für jeden der Threads bereitstellt, bei dem der physische Kern gleichzeitig Multithread ist) oder eine Kombination davon (e.g., zeitgeschnittenes Abrufen und Decodieren und simultanes Multithread danach, wie etwa in der Intel® Hyperthreading-Technologie).
  • Obwohl Registerumbenennung im Kontext einer Außer-Reihenfolge-Ausführung beschrieben ist, versteht es sich, dass Registerumbenennung in einer In-Reihenfolge-Architektur verwendet werden kann. Obwohl die veranschaulichte Ausführungsform des Prozessors auch separate Befehls-und Daten-Cache-Einheiten 2034/2074 und eine gemeinsam genutzte L2-Cache-Einheit 2076 beinhaltet, können alternative Ausführungsformen einen einzelnen internen Cache sowohl für Befehle als auch Daten aufweisen, wie etwa zum Beispiel einen internen Level-1 (L1) -Cache oder mehrere interne Cache-Ebenen. In einigen Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache, der sich außerhalb des Kerns und/oder des Prozessors befindet, beinhalten. Alternativ dazu kann sich der gesamte Cache außerhalb des Kerns und/oder des Prozessors befinden.
  • Spezifische beispielhafte reihenfolgetreue Kernarchitektur
  • 21A-B veranschaulichen ein Blockdiagramm einer spezifischeren beispielhaften reihenfolgetreuen Kernarchitektur, wobei der Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne des gleichen Typs und/oder unterschiedlicher Typen) in einem Chip wäre. Die Logikblöcke kommunizieren in Abhängigkeit von der Anwendung durch ein Zwischenverbindungsnetzwerk mit hoher Bandbreite (e.g., ein Ringnetzwerk) mit einer Logik mit fester Funktion, Speicher-E/A-Schnittstellen und einer anderen notwendigen E/A-Logik.
  • 21 A ist ein Blockdiagramm eines einzelnen Prozessorkerns zusammen mit seiner Verbindung mit dem On-Die-Verbindungsnetzwerk 2102 und mit seiner lokalen Teilmenge des Level 2 (L2) -Caches 2104 gemäß Ausführungsformen der Erfindung. In einer Ausführungsform unterstützt ein Befehlsdecodierer 2100 den x86-Befehlssatz mit einer Befehlssatzerweiterung für gepackte Daten. Ein LI-Cache 2106 ermöglicht Zugriffe mit niedriger Latenz auf den Cache-Speicher in die Skalar-und Vektoreinheiten. Während in einer Ausführungsform (um das Design zu vereinfachen) eine Skalareinheit 2108 und eine Vektoreinheit 2110 separate Registersätze (Skalarregister 2112 bzw. Vektorregister 2114) verwenden und Daten, die zwischen ihnen übertragen werden, in einen Speicher geschrieben und dann aus einem Level-1 (L1) -Cache 2106 zurückgelesen werden, alternative Ausführungsformen der Erfindung können einen anderen Ansatz verwenden (e.g., einen einzigen Registersatz verwenden oder einen Kommunikationspfad beinhalten, der ermöglicht, dass Daten zwischen den zwei Registerdateien übertragen werden, ohne geschrieben und zurückgelesen zu werden).
  • Die lokale Teilmenge des L2-Caches 2104 ist Teil eines globalen L2-Caches, der in separate lokale Teilmengen unterteilt ist, eine pro Prozessorkern. Jeder Prozessorkern weist einen direkten Zugriffspfad zu seiner eigenen lokalen Teilmenge des L2-Caches 2104 auf. Von einem Prozessorkern gelesene Daten werden in seiner L2-Cache-Teilmenge 2104 gespeichert und können schnell parallel zu anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cache-Teilmengen zugreifen, zugegriffen werden. Daten, die durch einen Prozessorkern geschrieben werden, werden in seiner eigenen L2-Cache-Teilmenge 2104 gespeichert und werden, falls erforderlich, aus anderen Teilmengen entleert. Das Ringnetz stellt Kohärenz für gemeinsam genutzte Daten sicher. Das Ringnetzwerk ist bidirektional, um Agenten wie Prozessorkernen, L2-Caches und anderen Logikblöcken zu ermöglichen, innerhalb des Chips miteinander zu kommunizieren. Jeder Ringdatenpfad ist pro Richtung 1012 Bit breit.
  • 21B eine erweiterte Ansicht eines Teils des Prozessorkerns in 21 A gemäß Ausführungsformen der Erfindung. 21 B weist einen L1-Daten-Cache 2106 A Teil des L1-Caches 2104 sowie detaillierter bezüglich der Vektoreinheit 2110 und der Vektorregister 2114 auf. Insbesondere ist die Vektoreinheit 2110 eine 16-breite Vektorverarbeitungseinheit (VPU: Vector Processing Unit) (siehe die 16-breite ALU 2128), die Ganzzahl-und/oder Gleitkommandos mit einfacher Genauigkeit und/oder Gleitkommandos mit doppelter Genauigkeit ausführt. Die VPU unterstützt das Wechseln der Registereingänge mit der Wechseleinheit 2120, die numerische Umwandlung mit den numerischen Umwandlungseinheiten 2122A-B und die Replikation mit der Replikationseinheit 2124 auf dem Speichereingang. Schreibmaskenregister 2126 ermöglichen das Prädizieren resultierender Vektorschreibungen.
  • 22 ist ein Blockdiagramm eines Prozessors 2200, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Grafiken aufweisen kann, gemäß Ausführungsformen der Erfindung. Die durchgezogenen Kästen in 22 veranschaulichen einen Prozessor 2200 mit einem einzigen Kern 2202 A, einem Systemagenten 2210, einem Satz von einer oder mehreren Buscontrollereinheiten 2216, während das optionale Hinzufügen der gestrichelten Kästen einen alternativen Prozessor 2200 mit mehreren Kernen 2202A-N, einem Satz von einer oder mehreren integrierten Speichersteuereinheit(en) 2214 in der Systemagenteneinheit 2210 und einer Speziallogik 2208 veranschaulicht.
  • Dementsprechend können unterschiedliche Implementierungen des Prozessors 2200 Folgendes beinhalten: 1) eine CPU, wobei die Speziallogik 2208 integrierte Grafik-und/oder wissenschaftliche (Durchsatz-) Logik ist (die einen oder mehrere Kerne beinhalten kann) und die Kerne 2202A-N ein oder mehrere Universalkerne sind (e.g. Universal-In-Order-Kerne, Universal-Außer-Order-Kerne, eine Kombination der beiden); 2) einen Coprozessor, wobei die Kerne 2202A-N eine große Anzahl von spezial Kernen sind, die primär für Grafik und/oder wissenschaftlich (durch Satz) bestimmt sind; und 3) einen Coprozessor, wobei die Kerne 2202A-N eine große Anzahl von Allzweck Kernen in der Reihen Folge sind. Somit kann der Prozessor 2200 ein Universalprozessor, Coprozessor oder Spezialprozessor sein, wie etwa zum Beispiel ein Netzwerk-oder Kommunikationsprozessor, eine Kompressions-Engine, ein Grafikprozessor, EINE GPGPU (Universal-Grafikverarbeitungseinheit), ein MIC-Koprozessor (MIC-KOPROZESSOR mit hohem Durchsatz) (einschließlich 30 oder mehr Kerne), ein eingebetteter Prozessor oder dergleichen. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 2200 kann ein Teil von und/oder kann auf einem oder mehreren Substraten unter Verwendung einer beliebigen einer Anzahl von Prozesstechnologien, wie etwa zum Beispiel BiCMOS, CMOS oder NMOS, implementiert sein.
  • Die Speicherhierarchie beinhaltet eine oder mehrere Cache-Ebenen innerhalb der Kerne, einen Satz oder eine oder mehrere gemeinsam genutzte Cache-Einheiten 2206 und externen Speicher (nicht gezeigt), der mit dem Satz integrierter Speichersteuerungseinheiten 2214 gekoppelt ist. Der Satz gemeinsam genutzter Cache-Einheiten 2206 kann einen oder mehrere Mittelebene-Caches, wie etwa Ebene 2 (L2), Ebene 3 (L3), Ebene 4 (L4) oder andere Cache-Ebenen, einen Last-Level-Cache (LLC) und/oder Kombinationen davon, beinhalten. Während in einer Ausführungsform eine ringbasierte Verbindungseinheit 2212 die integrierte Grafiklogik 2208, den Satz gemeinsam genutzter Cache-Einheiten 2206 und die Systemagenteneinheit 2210/integrierte Speichersteuereinheit(en) 2214 miteinander verbindet, können alternative Ausführungsformen eine beliebige Anzahl wohlbekannter Techniken zum Verbinden solcher Einheiten verwenden. In einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 2206 und den Kernen 2202-A-N aufrechterhalten.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 2202A-N zum Multithread in der Lage. Der Systemagent 2210 beinhaltet diejenigen Komponenten, die die Kerne 2202A-N koordinieren und betreiben. Die Systemagenteneinheit 2210 kann beispielsweise eine Power-Control-Unit (PCU) und eine Anzeigeeinheit beinhalten. Die PCU kann Logik und Komponenten sein oder beinhalten, die zum Regeln des Leistungszustands der Kerne 2202A-N und der integrierten Grafiklogik 2208 benötigt werden. Die Anzeigeeinheit dient zur Ansteuerung eines oder mehrerer extern angeschlossener Displays.
  • Die Kerne 2202A-N können hinsichtlich des Architekturbefehlssatzes homogen oder heterogen sein, das heißt, zwei oder mehr der Kerne 2202A-N können in der Lage sein, denselben Befehlssatz auszuführen, während andere in der Lage sein können, nur eine Teilmenge dieses Befehlssatzes oder einen anderen Befehlssatz auszuführen.
  • Beispielhafte Computerarchitekturen
  • 23-24 Blockdiagramme beispielhafter Computerarchitekturen. Andere System Entwürfe und -konfigurationen, die im Stand der Technik für Laptops, Desktops, handgehaltene PCs, persönliche digitale Assistenten, Engineering Workstations, Server, Netzwerk Vorrichtungen, Netzwerk Hubs, Switches, eingebettete Prozessoren, digitale Signalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Medienabspielgeräte, Handgeräte und verschiedene andere elektronische Vorrichtungen sind ebenfalls geeignet. Allgemein sind eine große Vielfalt von Systemen oder elektronischen Vorrichtungen, die in der Lage sind, einen Prozessor und/oder eine andere Ausführungslogik, wie hier offenbart, aufzunehmen, allgemein geeignet.
  • Mit Bezug auf 23 ist ein Blockdiagramm eines Systems 2300 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 2300 kann einen oder mehrere Prozessoren 2310, 2315 beinhalten, die mit einem Controller-Hub 2320 gekoppelt sind. In einer Ausführungsform beinhaltet der Steuerungshub 2320 einen Grafikspeichersteuerungshub (GMCH) 2390 und einen Eingabe/Ausgabe-Hub (IOH) 2350 (die sich auf separaten Chips befinden können); der GMCH 2390 beinhaltet Speicher-und Grafiksteuerungen, mit denen der Speicher 2340 und ein Coprozessor 2345 gekoppelt sind; der IOH 2350 koppelt Eingabe/Ausgabe (E/A) -Vorrichtungen 2360 mit dem GMCH 2390. Alternativ dazu sind eine oder beide der Speicher-und Grafiksteuerungen innerhalb des Prozessors integriert (wie hier beschrieben), der Speicher 2340 und der Coprozessor 2345 sind direkt mit dem Prozessor 2310 gekoppelt und der Steuerungs-Hub 2320 in einem einzigen Chip mit dem IOH 2350.
  • Die optionale Natur zusätzlicher Prozessoren 2315 ist in 23 gestrichelt angedeutet ist. Jeder Prozessor 2310, 2315 kann einen oder mehrere der hier beschriebenen Verarbeitungskerne beinhalten und kann irgendeine Version des Prozessors 2200 sein.
  • Der Speicher 2340 kann zum Beispiel dynamischer Direktzugriffsspeicher (DRAM), Phasenwechselspeicher (PCM) oder eine Kombination der beiden sein. Für mindestens eine Ausführungsform kommuniziert der Steuerungs-Hub 2320 mit dem einen oder den mehreren Prozessoren 2310, 2315 über einen Multi-Drop-Bus, wie etwa einen Front-Side-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie etwa QuickPath-Interconnect (QPI) oder eine ähnliche Verbindung 2395.
  • In einer Ausführungsform ist der Coprozessor 2345 ein Spezialprozessor, wie etwa zum Beispiel ein MIC-PROZESSOR mit hohem Durchsatz, ein Netzwerk-oder Kommunikationsprozessor, eine Kompressions-Engine, ein Grafikprozessor, GPGPU, ein eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann der Controller-Hub 2320 einen integrierten Grafikbeschleuniger beinhalten.
  • Es kann eine Vielzahl von Unterschieden zwischen den physischen Ressourcen 2310, 2315 hinsichtlich eines Spektrums von Gütemetriken geben, einschließlich architektonischer, mikroarchitektonischer, thermischer, Leistungsverbrauchscharakteristiken und dergleichen.
  • In einer Ausführungsform führt der Prozessor 2310 Anweisungen aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. Innerhalb der Anweisungen können Koprozessoranweisungen eingebettet sein. Der Prozessor 2310 erkennt diese Coprozessorbefehle als von einem Typ, der durch den angeschlossenen Coprozessor 2345 ausgeführt werden sollte. Dementsprechend gibt der Prozessor 2310 diese Koprozessorbefehle (oder Steuersignale, die Koprozessorbefehle repräsentieren) auf einem Koprozessorbus oder einer anderen Zwischenverbindung an den Koprozessor 2345 aus. Der oder die Coprozessoren 2345 nehmen die empfangenen Coprozessorbefehle an und führen diese aus.
  • Mit Bezug auf 24 ist ein Blockdiagramm eines SoC 2400 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in 22 tragen gleiche Bezugszeichen. Außerdem sind Kästen mit gestrichelten Linien optionale Merkmale bei weiterentwickeltem SoCs. In 24 ist/sind eine Verbindungseinheit(en) 2402 gekoppelt mit: einem Anwendungsprozessor 2410, der einen Satz von einem oder mehreren Kernen 202A-N und gemeinsam genutzte Cacheeinheit(en) 2206 beinhaltet; einer Systemagenteneinheit 2210; einer Bussteuerungseinheit(en) 2216; einer integrierten Speichersteuereinheit(en) 2214; einen Satz oder einen oder mehrere Coprozessoren 2420, die integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor beinhalten können; eine statische Direktzugriffsspeichereinheit (SRAM) 2430; eine Direktzugriffsspeichereinheit (DMA) 2432; und eine Anzeigeeinheit 2440 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform beinhalten der eine oder die mehreren Coprozessoren 2420 einen Spezialprozessor, wie etwa zum Beispiel einen Netzwerk-oder Kommunikationsprozessor, eine Kompressions-Engine, GPGPU, einen MIC-PROZESSOR mit hohem Durchsatz, einen eingebetteten Prozessor oder dergleichen.
  • Ausführungsformen der hier offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination solcher Implementierungsansätze implementiert werden. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode implementiert sein, die auf programmierbaren Systemen ausgeführt werden, die mindestens einen Prozessor, ein Speichersystem (einschließlich flüchtigem und nichtflüchtigem Speicher und/oder Speicherelementen), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung umfassen.
  • Programmcode kann auf Eingabeanweisungen angewandt werden, um die hier beschriebenen Funktionen durchzuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können auf bekannte Weise an eine oder mehrere Ausgabeeinrichtungen angelegt werden. Zu Zwecken dieser Anmeldung beinhaltet ein Verarbeitungssystem ein beliebiges System, das einen Prozessor aufweist, wie etwa zum Beispiel einen digitalen Signalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC) oder einen Mikroprozessor.
  • Der Programmcode kann in einer prozeduralen oder objektorientierten Programmiersprache hoher Ebene implementiert sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann, falls gewünscht, auch in Assembler-oder Maschinensprache implementiert sein. Tatsächlich sind die hier beschriebenen Mechanismen im Schutzumfang nicht auf irgendeine spezielle Programmiersprache beschränkt. In jedem Fall kann es sich bei der Sprache um eine kompilierte oder interpretierte Sprache handeln.
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch repräsentative Anweisungen implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die, wenn sie durch eine Maschine gelesen werden, die Maschine dazu veranlassen, Logik herzustellen, um die hierin beschriebenen Techniken durchzuführen. Solche Repräsentationen, die als „IP-KERNE“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert werden und verschiedenen Kunden oder Herstellungsanlagen zugeführt werden, um in die Herstellungsmaschinen zu laden, die tatsächlich die Logik oder den Prozessor herstellen.
  • Solche maschinenlesbaren Speicherungsmedien können, ohne Einschränkung, nichtflüchtige greifbare Anordnungen von Gegenständen beinhalten, die durch eine Maschine oder Vorrichtung hergestellt oder gebildet werden, einschließlich Speicherungsmedien, wie etwa Festplatten, eine beliebige andere Art von Disketten einschließlich Disketten, optischen Disketten, CD-ROMs (Compact Disk Read-Only-Memory), CD-RWs (Compact Disk Rewritable) und magnetooptischen Disketten, Halbleiter Vorrichtungen wie fest Wert Speicher (ROM), direkt Zugriff Speicher (RAM) wie dynamische direkt Zugriff Speicher (DRAM), statische direkt Zugriff Speicher (SRAM), löschbare programmierbare fest Wert Speicher (EPROM), Flash Speichern, elektrisch löschbaren programmierbaren fest Wert Speichern (EEPROMs), Phasenwechsel Speicher (PCM), magnetischen oder optischen Karten oder einer beliebigen anderen Art von Medien, die zum Speichern elektronischer Anweisungen geeignet sind.
  • Dementsprechend beinhalten Ausführungsformen der Erfindung auch nichtflüchtige, greifbare maschinenlesbare Medien, die Anweisungen enthalten oder Gestaltungsdaten enthalten, wie etwa Hardwarebeschreibungssprache (HDL), die hier beschriebene Strukturen, Schaltungen, Einrichtungen, Prozessoren und/oder Systemmerkmale definieren. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Emulation (einschließlich binärer Übersetzung, Codemorphing usw.)
  • In manchen Fällen kann ein Befehlsumsetzer verwendet werden, um einen Befehl von einem Quellbefehlssatz in einen Zielbefehlssatz umzuwandeln. Zum Beispiel kann der Anweisungskonverter eine Anweisung übersetzen (e.g. unter Verwendung statischer binärer Übersetzung, dynamischer binärer Übersetzung einschließlich dynamischer Kompilierung), morph, emulieren oder anderweitig in eine oder mehrere andere Anweisungen umwandeln, die durch den Kern verarbeitet werden sollen. Der Anweisungskonverter kann in Software, Hardware, Firmware oder einer Kombination davon implementiert sein. Der Anweisungskonverter kann ein Prozessor, ein Prozessor aus oder ein Prozessor Teil ein und ein Prozessor aus sein.
  • 25 ist ein Blockdiagramm, das die Verwendung eines Softwarebefehlsumwandlers zum Umwandeln binärer Befehle in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz gemäß Ausführungsformen der Erfindung kontrastiert. Bei der veranschaulichten Ausführungsform ist der Anweisungskonverter ein Softwareanweisungskonverter, obwohl alternativ der Anweisungskonverter in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert sein kann. 25 zeigt ein Programm in einer höheren Sprache 2502, das unter Verwendung eines x86-Compilers 2504 kompiliert werden kann, um x86-Binärcode 2506 zu erzeugen, der nativ durch einen Prozessor mit mindestens einem x86-Befehlssatzkern 2516 ausgeführt werden kann. Der Prozessor mit mindestens einem x86-Befehlssatzkern 2516 repräsentiert einen beliebigen Prozessor, der im Wesentlichen die gleichen Funktionen wie ein Intel-Prozessor mit mindestens einem x86-Befehlssatzkern durchführen kann, indem er kompatibel oder anderweitig Verarbeiten (1) eines wesentlichen Teils des Befehlssatzes des Intel x86-Befehlssatzkerns oder (2) von Objektcodeversionen von Anwendungen oder anderer Software, die darauf abzielen, auf einem Intel Prozessor mit mindestens einem x86-Befehlssatzkern ausgeführt zu werden, um im Wesentlichen dasselbe Ergebnis wie ein Intel Prozessor mit mindestens einem x86-Befehlssatzkern zu erzielen. Der x86-Compiler 2504 repräsentiert einen Compiler, der betreibbar ist zum Erzeugen von x86-Binärcode 2506 (e.g. Objektcode), der mit oder ohne zusätzliche Verknüpfungsverarbeitung auf dem Prozessor mit mindestens einem x86-Befehlssatzkern 2516 ausgeführt werden kann. Ähnlich ist in 25 zeigt, dass das Programm in der höheren Sprache 2502 unter Verwendung eines alternativen Befehlssatzkompilierers 2508 kompiliert werden kann, um alternativen Befehlssatzbinärcode 2510 zu erzeugen, der nativ durch einen Prozessor ohne mindestens einen x86-Befehlssatzkern 2514 ausgeführt werden kann (e.g., einen Prozessor mit Kernen, die den MIPS-BEFEHLSSATZ von MIPS-TECHNOLOGIES in Sunnyvale, CA, ausführen und/oder die den ARM-BEFEHLSSATZ von ARM-HOLDINGS in Sunnyvale, CA) ausführen. Der Befehlswandler 2512 wird verwendet, um den x86-Binärcode 2506 in Code umzuwandeln, der nativ durch den Prozessor ohne einen x86-Befehlssatzkern 2514 ausgeführt werden kann. Dieser umgewandelte Code ist wahrscheinlich nicht derselbe wie der alternative Befehlssatzbinärcode 2510, da ein Befehlsumsetzer, der dazu in der Lage ist, schwierig herzustellen ist; der umgewandelte Code wird jedoch die allgemeine Operation durchführen und aus Befehlen aus dem alternativen Befehlssatz bestehen. Somit repräsentiert der Anweisungskonverter 2512 Software, Firmware, Hardware oder eine Kombination davon, die es durch Emulation, Simulation oder einen beliebigen anderen Prozess einem Prozessor oder einer anderen elektronischen Vorrichtung ermöglicht, die keinen x86-Anweisungssatzprozessor oder -kern aufweist, den x86-Binärcode 2506 auszuführen.
  • Logik zur Anpassung von Auffrischungsraten der Anzeigevorrichtung
  • Mit Bezug auf 26 ist ein Blockdiagramm eines Systems 2600 gemäß einer oder mehreren Ausführungsformen gezeigt. Bei manchen Ausführungsformen kann das System 2600 eine gesamte oder ein Teil einer elektronischen Vorrichtung oder Komponente sein. Das System 2600 kann zum Beispiel ein Mobiltelefon, ein Computer, ein Server, eine Netzwerkvorrichtung, ein System-on-Chip (SoC), eine Steuerung, ein drahtloser Sendeempfänger, eine tragbare Vorrichtung usw. sein. Des Weiteren kann das System 2600 bei manchen Ausführungsformen Teil einer Gruppierung verwandter oder miteinander verbundener Vorrichtungen sein, wie etwa eines Datenzentrums, eines Rechen-Clusters usw.
  • Wie in 26 kann das System 2600 eine Rechenvorrichtung 2610 beinhalten, die mit einer oder mehreren Eingabevorrichtungen 2640 und einer Anzeigevorrichtung 2650 gekoppelt ist. Ferner kann, obwohl dies in 26 kann das System 2600 andere Komponenten beinhalten. Die Eingabevorrichtung(en) 2640 kann(können) einem Benutzer ermöglichen, Eingaben an die Rechenvorrichtung 2610 (e.g., eine Tastatur, eine Computermaus, einen Joystick, einen Touchscreen, eine Sprachschnittstelle, eine Gestenschnittstelle usw.) bereitzustellen. Die Anzeigevorrichtung 2650 kann eine Vorrichtung sein, die Video-und andere Bildinhalte präsentieren kann (e.g. Monitor, Fernseher, Projektor und so weiter). Wie gezeigt, können sich bei manchen Ausführungsformen die Eingabevorrichtung(en) 2640 und die Anzeigevorrichtung 2650 außerhalb der Rechenvorrichtung 2610 befinden. Bei anderen Ausführungsformen können jedoch die Eingabevorrichtung(en) 2640 und/oder die Anzeigevorrichtung 2650 in der Rechenvorrichtung 2610 enthalten sein.
  • Bei einer oder mehreren Ausführungsformen kann die Rechenvorrichtung 2610 einen oder mehrere Prozessor(en) 2620 und Speicher 2630 beinhalten. Der Speicher 2630 kann mit einem oder mehreren beliebigen Typen von Computerspeicher (e.g. dynamischer Direktzugriffsspeicher (DRAM), statischer Direktzugriffsspeicher (SRAM), nichtflüchtiger Speicher (NVM), einer Kombination von DRAM und NVM usw.) implementiert werden. Der Prozessor 2620 kann eine Hardwareverarbeitungsvorrichtung (e.g., eine Zentralverarbeitungseinheit (CPU), ein System-on-Chip (SoC) und so weiter) sein.
  • Bei einer oder mehreren Ausführungsformen kann der Speicher 2630 eine adaptive Auffrischlogik 2635 beinhalten, um Auffrischraten für die Anzeigevorrichtung 2650 dynamisch anzupassen. Zum Beispiel kann die adaptive Auffrischungslogik 2635 die Auffrischungsrate der Anzeigevorrichtung 2650 reduzieren, wenn detektiert wird, dass die Eingabevorrichtung(en) 2640 für wenigstens eine Mindestzeitperiode keine Benutzereingabe empfangen hat(haben). Ferner kann die adaptive Auffrischungslogik 2635 die Auffrischungsrate reduzieren, wenn detektiert wird, dass der aktualisierte Teil der auf der Anzeigevorrichtung 2650 angezeigten Einzelbilder unter einer Mindestgröße liegt. Des Weiteren kann die adaptive Auffrischungslogik 2635 die Auffrischungsrate reduzieren, wenn detektiert wird, dass die Rate, mit der die angezeigten Einzelbilder aktualisiert werden, kleiner als die Auffrischungsrate ist. Die Funktionalität der adaptiven Auffrischungslogik 2635 ist weiter unten unter Bezugnahme auf die 1 und 2 beschrieben. 27-33 beschrieben.
  • In einigen Ausführungsformen kann die adaptive Auffrischlogik 2635 als Softwareanweisungen (e.g.) implementiert sein, die durch den einen oder die mehreren Prozessoren 2620 ausführbar sind. Zum Beispiel kann die adaptive Auffrischlogik 2635 in einem Betriebssystem der Rechenvorrichtung 2610 implementiert sein. Ausführungsformen sind jedoch in dieser Hinsicht nicht beschränkt. Zum Beispiel kann die adaptive Auffrischlogik 2635 bei manchen Ausführungsformen in anderer Software (e.g., einem Grafiktreiber, einer Anwendung), in Hardware (e.g., in Prozessor 2620, Rechenvorrichtung 2610, Anzeigevorrichtung 2650, einer Anzeige-Engine, einem Grafikprozessor, einer externen Vorrichtung) und so weiter implementiert sein.
  • Mit Bezug auf 27 ist ein Flussdiagramm eines Verfahrens 2700 gemäß einer oder mehreren Ausführungsformen gezeigt. Bei verschiedenen Ausführungsformen kann das Verfahren 2700 durch Verarbeitungslogik durchgeführt werden, die Hardware (e.g., Verarbeitungsvorrichtung, Schaltungsanordnung, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (e.g., Anweisungen, die auf einer Verarbeitungsvorrichtung ausgeführt werden) oder eine Kombination davon beinhalten kann. Bei manchen Implementierungen kann das Verfahren 2700 unter Verwendung einer oder mehrerer Komponenten durchgeführt werden, die in 26 (e.g., adaptive Auffrischlogik 2635, Prozessor(en) 2620 und so weiter). Bei Firmware-oder Software-Ausführungsformen kann das Verfahren 2700 durch computerausgeführte Anweisungen implementiert werden, die in einem nichtflüchtigen maschinenlesbaren Medium, wie etwa einer optischen, Halbleiter-oder Magnetspeicherungsvorrichtung, gespeichert sind. Zur Veranschaulichung können die Handlungen, die in das Verfahren 2700 involviert sind, unten unter Bezugnahme auf die 1 und 2 beschrieben werden. 26 und 28, die Beispiele gemäß einer oder mehreren Ausführungsformen zeigen. Der Schutzumfang der verschiedenen hier besprochenen Ausführungsformen ist jedoch in dieser Hinsicht nicht beschränkt.
  • Block 2710 kann Bestimmen der seit einer letzten Benutzerinteraktion verstrichenen Zeit beinhalten. Zum Beispiel wird unter Bezugnahme auf 26 kann die adaptive Auffrischungslogik 2635 die Zeit bestimmen, die seit der letzten Eingabe verstrichen ist, die über die Eingabevorrichtung(en) 2640 empfangen wurde (e.g. Tastatureingabe, Mausbewegung, Sprachbefehl und so weiter). Bei einer oder mehreren Ausführungsformen kann die adaptive Auffrischlogik 2635 in einem Betriebssystem der Rechenvorrichtung 2610 implementiert sein.
  • Block 2720 kann Bestimmen einer Größe einer aktualisierten Region in einem Frame beinhalten. Zum Beispiel wird unter Bezugnahme auf 26 kann die adaptive Auffrischungslogik 2635 die Größe der Bildregion oder des Bildteils auf der Anzeigevorrichtung 2650 bestimmen, die zwischen Einzelbildern geändert wird. Bei einer oder mehreren Ausführungsformen kann die Größe eines aktualisierten Gebiets als ein Absolutwert (e.g., 10 mal 20 Pixel) oder als ein relativer Anteil (e.g., 25 Prozent, ein Viertel, 0,25 usw.) definiert sein.
  • Block 2730 kann Bestimmen einer einheitlichen Häufigkeit von Bildschirmaktualisierungen beinhalten. Zum Beispiel wird unter Bezugnahme auf 26 kann die adaptive Auffrischungslogik 2635 eine einheitliche Frequenz bestimmen (d. h. im gleichen Intervall wiederholt), mit der die auf der Anzeigevorrichtung 2650 angezeigten Einzelbilder modifiziert werden, um neuen Bildinhalt zu enthalten.
  • Die Raute 2740 kann Bestimmen beinhalten, ob die seit der letzten Benutzerinteraktion verstrichene Zeit eine Zeitschwelle überschreitet. Zum Beispiel wird unter Bezugnahme auf 26 kann die adaptive Auffrischungslogik 2635 bestimmen, ob die Zeit, die seit der letzten Eingabe verstrichen ist, die über die Eingabevorrichtung(en) 2640 empfangen wurde, größer als eine gespeicherte Zeitschwelle ist (e.g, 100 Millisekunden). Falls bei Diamant 2740 bestimmt wird, dass die seit der letzten Benutzerinteraktion verstrichene Zeit die Zeitschwelle nicht überschreitet, dann fährt das Verfahren 2700 bei Diamant 2780 fort (unten beschrieben). Falls jedoch bestimmt wird, dass die verstrichene Zeit die Zeitschwelle überschreitet, fährt das Verfahren 2700 bei Diamant 2750 fort.
  • Die Raute 2750 kann Bestimmen beinhalten, ob die Größe des aktualisierten Gebiets unter einer Größenschwelle liegt. Bei manchen Ausführungsformen kann die Größenschwelle als ein Prozentsatz der vollen Rahmengröße spezifiziert sein. Zum Beispiel wird unter Bezugnahme auf 26 kann die adaptive Auffrischungslogik 2635 bestimmen, ob der Teil des angezeigten Bildes, der zwischen Einzelbildern aktualisiert wird, kleiner als die Größenschwelle ist (e.g., ein definierter Prozentsatz). Falls bei Diamant 2750 bestimmt wird, dass die Größe des aktualisierten Gebiets unter der Größenschwelle liegt, fährt das Verfahren 2700 bei Diamant 2770 fort (unten beschrieben). Falls jedoch bei Diamant 2750 bestimmt wird, dass die Größe des aktualisierten Gebiets nicht unter der Größenschwelle liegt, fährt das Verfahren 2700 bei Diamant 2760 fort.
  • Die Raute 2760 kann Bestimmen beinhalten, ob die gleichmäßige Frequenz von Bildschirmaktualisierungen unterhalb der aktuellen Auffrischrate liegt. Zum Beispiel wird unter Bezugnahme auf 26 kann die adaptive Auffrischungslogik 2635 bestimmen, dass die Anzeigerahmen mit einer einheitlichen Rate aktualisiert werden, die niedriger als die aktuelle Auffrischungsrate der Anzeigevorrichtung 2650 ist.
  • Falls bei Raute 2760 bestimmt wird, dass die gleichmäßige Häufigkeit von Bildschirmaktualisierungen unter der aktuellen Auffrischrate liegt, oder falls bei Raute 2750 bestimmt wird, dass die Größe des aktualisierten Gebiets unter der Größenschwelle liegt, dann wird bei Raute 2770 bestimmt, ob sich die Anzeigevorrichtung gegenwärtig bei einer reduzierten Zielauffrischrate befindet. Falls bei Raute 2770 bestimmt wird, dass sich die Anzeigevorrichtung gegenwärtig nicht bei der reduzierten Zielauffrischrate befindet, dann wird bei Block 2775 die Auffrischrate auf die reduzierte Zielauffrischrate eingestellt. Nach dem Einstellen der reduzierten Zielauffrischrate kehrt das Verfahren 2700 zu Block 2710 zurück (d. h. zum Wiederholen der Bestimmung der seit einer letzten Benutzerinteraktion verstrichenen Zeit). Falls jedoch bei Raute 2770 bestimmt wird, dass sich die Anzeigevorrichtung gegenwärtig bei der reduzierten Zielauffrischrate befindet, kehrt das Verfahren 2700 zu Block 2710 zurück, ohne die Auffrischrate zu ändern.
  • Es wird angemerkt, dass, wie durch Blöcke/Rauten 2740-2775 angegeben, die Auffrischrate reduziert werden kann, wenn bestimmt wird, dass die letzte eingegebene verstrichene Zeit größer als die Zeitschwelle ist und die aktualisierte Gebietsgröße unter der Größenschwelle ist, oder wenn bestimmt wird, dass die letzte eingegebene verstrichene Zeit größer als die Zeitschwelle ist und die gleichmäßige Aktualisierungsfrequenz unter der Auffrischrate ist.
  • Mit Bezug auf 28 ist ein Zeitstrahldiagramm 2800 gemäß einer oder mehreren Ausführungsformen gezeigt. Insbesondere veranschaulicht das Zeitliniendiagramm 2800 das Auftreten von Grafikunterbrechungen 2810 zu verschiedenen Zeitpunkten (von links nach rechts ansteigend). Wie im äußersten linken Teil der 28 sind die Interrupts 2810 anfänglich durch eine erste Periode 2820 getrennt, die einer Standard-Auffrischrate (e.g., 60 Hz) entspricht. Bei manchen Ausführungsformen können die Interrupts 2810 VBI-Interrupts (VBI: Vertical Blank Interval) sein.
  • Es wird angenommen, dass das Ereignis 2830 den Zeitpunkt veranschaulicht, zu dem überwachte Bedingungen bei manchen Ausführungsformen eine Abnahme der Auffrischrate verursachen. Das Ereignis 2830 kann zum Beispiel eine Bestimmung veranschaulichen, dass die letzte eingegebene verstrichene Zeit größer als die Zeitschwelle ist und die aktualisierte Gebietsgröße unter der Größenschwelle ist, oder eine Bestimmung, dass die letzte eingegebene verstrichene Zeit größer als die Zeitschwelle ist und die gleichmäßige Aktualisierungsfrequenz unter der Auffrischrate ist (d. h. in Blöcken/Rauten 2740-2775, die in 27) . Dementsprechend sind die Interrupts 2810 nach dem Ereignis 2830 durch eine zweite Periode 2840 getrennt, die einer reduzierten Auffrischrate (e.g., 30 Hz) entspricht. Es wird angemerkt, dass die Periode, in der die reduzierte Auffrischrate verwendet wird, die Anzahl an Unterbrechungen reduziert. Daher können manche Ausführungsformen den Leistungsverbrauch, der mit Videoverarbeitung assoziiert ist, reduzieren.
  • Unter erneuter Bezugnahme auf 27, falls bei Raute 2740 bestimmt wird, dass die seit einer letzten Benutzerinteraktion verstrichene Zeit die Zeitschwelle nicht überschreitet, oder falls bei Raute 2760 bestimmt wird, dass die gleichmäßige Häufigkeit von Bildschirmaktualisierungen nicht unter der aktuellen Auffrischrate liegt, dann wird bei Raute 2780 bestimmt, ob sich die Anzeigevorrichtung aktuell bei einer Standardauffrischrate befindet. Falls bei Raute 2780 bestimmt wird, dass sich die Anzeigevorrichtung gegenwärtig nicht bei der Standard-Auffrischrate befindet, dann wird bei Block 2785 die Auffrischrate auf die Standard-Auffrischrate eingestellt. Nach dem Einstellen der Default-reduzierten Rate kehrt das Verfahren 2700 zu Block 2710 zurück. Falls jedoch bei Raute 2780 bestimmt wird, dass sich die Anzeigevorrichtung gegenwärtig bei der Standard-Auffrischrate befindet, kehrt das Verfahren 2700 zu Block 2710 zurück, ohne die Auffrischrate zu ändern.
  • Es wird angemerkt, dass nach dem Reduzieren der Auffrischrate (wie oben unter Bezugnahme auf Blöcke/Rauten 2740-2775 besprochen) die Auffrischrate zu der Standard-Auffrischrate zurückgegeben werden kann, wenn bestimmt wird, dass eine Zeitperiode seit einer Benutzereingabe (e.g., eine Benutzer Eingabe nach der Aktualisierung Raten reduktion) nicht größer als die Zeit Schwelle ist, oder wenn bestimmt wird, dass die aktualisierte Region Größe nicht unter der Größen Schwelle liegt und die einheitliche Aktualisierung Häufigkeit nicht unter der Aktualisierung Rate liegt.
  • Unter erneuter Bezugnahme auf 28 veranschaulicht das Ereignis 2850 bei manchen Ausführungsformen den Zeitpunkt, zu dem überwachte Bedingungen eine Zunahme der Auffrischrate verursachen. Das Ereignis 2850 kann zum Beispiel eine Bestimmung, dass die letzte eingegebene verstrichene Zeit nicht größer als die Zeitschwelle ist, oder eine Bestimmung, dass die aktualisierte Gebietsgröße nicht unter der Größenschwelle ist und die gleichmäßige Aktualisierungshäufigkeit nicht unter der Auffrischrate ist (d. h. in Blöcken/Rauten 2740-2785, die in 27) . Dementsprechend sind die Interrupts 2810 nach dem Ereignis 2850 wieder durch die erste Periode 2820 getrennt, die der Standard-Auffrischrate (e.g., 60 Hz) entspricht.
  • Unter erneuter Bezugnahme auf 27 kann das Verfahren 2700 bei manchen Ausführungsformen in einer Schleife wiederholt werden, um die letzte eingegebene verstrichene Zeit, die aktualisierte Gebietsgröße und die einheitliche Aktualisierungsfrequenz kontinuierlich zu überwachen und die Auffrischrate gemäß diesen überwachten Parametern nach oben und unten anzupassen. Ferner kann das Verfahren 2700 bei manchen Ausführungsformen mit mehreren Pegeln reduzierter Auffrischraten durchgeführt werden. Zum Beispiel können die Diamanten 2740-2750 bei mehreren Niveaus von Zeit-/Größenschwellen evaluiert werden, so dass positive Bestimmungen bei jedem Niveau zum Einstellen der Auffrischrate auf zunehmend niedrigere Auffrischraten führen. Bei solchen Beispielen kann die Auffrischrate in mehreren Schritten nach unten reduziert werden, was zunehmend größeren Zeitschwellen und/oder zunehmend kleineren Größenschwellen entspricht. Ferner kann Diamant 2760 mit mehreren Pegeln evaluiert werden, die mehreren Reduzierungen der Auffrischrate entsprechen.
  • Mit Bezug auf 29 ist ein Flussdiagramm eines Verfahrens 2900 gemäß einer oder mehreren Ausführungsformen gezeigt. Block 2910 kann Präsentieren, durch eine Rechenvorrichtung, mehrerer Video-Frames auf einer Anzeigevorrichtung beinhalten. Block 2920 kann Bestimmen, durch adaptive Auffrischlogik der Rechenvorrichtung, einer Zeitspanne seit einer letzten Benutzerinteraktion mit einer Eingabevorrichtung beinhalten. Zum Beispiel wird unter Bezugnahme auf 26 kann die adaptive Auffrischungslogik 2635, während ein Videobild auf der Anzeigevorrichtung 2650 präsentiert wird, die Zeit bestimmen, die seit der letzten Eingabe verstrichen ist, die über die Eingabevorrichtung(en) 2640 empfangen wurde.
  • Block 2930 kann Bestimmen, durch die adaptive Auffrischlogik, beinhalten, ob die Zeitspanne seit der letzten Benutzerinteraktion eine Zeitschwelle überschreitet. Block 2940 kann als Reaktion auf eine Bestimmung, dass die Zeitspanne seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet, Veranlassen, durch die adaptive Auffrischlogik, dass die Anzeigevorrichtung mit einer reduzierten Auffrischrate arbeitet, beinhalten. Zum Beispiel wird unter Bezugnahme auf 26 kann die adaptive Auffrischungslogik 2635 bestimmen, dass die Zeit, die seit der letzten Eingabe verstrichen ist, die über die Eingabevorrichtung(en) 2640 empfangen wurde, größer als eine gespeicherte Zeitschwelle ist, und kann als Reaktion darauf die Auffrischungsrate der Anzeigevorrichtung 2650 reduzieren. In einigen Ausführungsformen kann die adaptive Auffrischlogik in einem Betriebssystem der Rechenvorrichtung implementiert sein. Nach Block 2940 ist das Verfahren 2900 abgeschlossen.
  • Mit Bezug auf 30 ist ein Flussdiagramm eines Verfahrens 3000 gemäß einer oder mehreren Ausführungsformen gezeigt. Block 3010 kann Präsentieren mehrerer Video-Frames auf einer Anzeigevorrichtung beinhalten. Block 3020 kann Bestimmen beinhalten, ob ein Zeitraum seit einer letzten Benutzerinteraktion eine Zeitschwelle überschreitet. Block 3030 kann Bestimmen beinhalten, ob eine aktualisierte Regiongröße eines Video-Frames unter einer Größenschwelle liegt. Block 3040 kann als Reaktion auf eine Bestimmung, dass die Zeitspanne seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet und dass die aktualisierte Gebietsgröße unter der Größenschwelle liegt, Bewirken, dass die Anzeigevorrichtung mit einer reduzierten Auffrischrate arbeitet, beinhalten. Nach Block 3040 ist das Verfahren 3000 abgeschlossen.
  • Mit Bezug auf 31 ist ein Flussdiagramm eines Verfahrens 3100 gemäß einer oder mehreren Ausführungsformen gezeigt. Block 3110 kann Präsentieren mehrerer Video-Frames auf einer Anzeigevorrichtung mit einer ersten Auffrischrate beinhalten. Block 3120 kann Bestimmen beinhalten, ob ein Zeitraum seit einer letzten Benutzereingabe eine Zeitschwelle überschreitet. Block 3130 kann Bestimmen beinhalten, ob eine Aktualisierungsfrequenz der Video-Frames niedriger als die erste Auffrischrate ist. Block 3040 kann als Reaktion auf eine Bestimmung, dass die Zeitperiode seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet und dass die Aktualisierungsfrequenz der Video-Frames niedriger als die erste Auffrischrate ist, Veranlassen, dass die Anzeigevorrichtung mit einer reduzierten Auffrischrate arbeitet, beinhalten. Nach Block 3140 ist das Verfahren 3100 abgeschlossen.
  • Bei verschiedenen Ausführungsformen können das Verfahren 2900, das Verfahren 3000 und/oder das Verfahren 3100 durch Verarbeitungslogik durchgeführt werden, die Hardware (e.g., Verarbeitungsvorrichtung, Schaltungsanordnung, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (e.g., Anweisungen, die auf einer Verarbeitungsvorrichtung ausgeführt werden) oder eine Kombination davon beinhalten kann. Bei manchen Implementierungen können das Verfahren 2900, das Verfahren 3000 und/oder das Verfahren 3100 unter Verwendung einer oder mehrerer in 26 (e.g., adaptive Auffrischlogik 2635, Prozessor(en) 2620, Betriebssystem 2632 und so weiter). Bei Firmware-oder Software-Ausführungsformen können das Verfahren 2900, das Verfahren 3000 und/oder das Verfahren 3100 durch computerausgeführte Anweisungen implementiert werden, die in einem nichtflüchtigen maschinenlesbaren Medium, wie etwa einer optischen, Halbleiter-oder Magnetspeicherungsvorrichtung, gespeichert sind. Zur Veranschaulichung können die Handlungen, die in Verfahren 2900, Verfahren 3000 und/oder Verfahren 3100 involviert sind, unter Bezugnahme auf die 26-28, die Beispiele gemäß einer oder mehreren Ausführungsformen zeigen. Der Schutzumfang der verschiedenen hier besprochenen Ausführungsformen ist jedoch in dieser Hinsicht nicht beschränkt.
  • Mit Bezug auf 32 ist ein schematisches Diagramm einer beispielhaften Rechenvorrichtung 3200 gezeigt. In manchen Beispielen kann die Rechenvorrichtung 3200 allgemein der Rechenvorrichtung 2610 entsprechen, die in FIG. gezeigt ist. 26 beschrieben. Wie gezeigt, kann die Rechenvorrichtung 3200 eine Benutzereingabevorrichtung 3201, eine Anzeigevorrichtung 3203, einen oder mehrere Hardwareprozessoren 3202 und ein maschinenlesbares Speichermedium 3206 beinhalten. Das maschinenlesbare Speichermedium 3206 kann ein nichtflüchtiges Medium sein und kann Anweisungen 3210-3230 speichern. Die Anweisungen 3210-3230 können durch den oder die Hardwareprozessoren 3202 ausgeführt werden.
  • Die Anweisung 3210 kann ausgeführt werden, um eine Benutzereingabevorrichtung während der Präsentation von Videobildern auf einer Anzeigevorrichtung mit einer Auffrischrate auf einem ersten Niveau zu überwachen. Die Anweisung 3220 kann ausgeführt werden, um zu bestimmen, dass eine Zeitspanne seit einer letzten Benutzerinteraktion mit der Benutzereingabevorrichtung eine Zeitschwelle überschreitet. Die Anweisung 3230 kann ausgeführt werden, um die Auffrischrate der Anzeigevorrichtung als Reaktion auf eine Bestimmung, dass die Zeitspanne seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet, auf ein zweites Niveau zu reduzieren. Bei manchen Ausführungsformen beträgt der erste Pegel der Auffrischrate wenigstens das Doppelte des zweiten Pegels der Auffrischrate. Bei manchen Ausführungsformen ist die letzte Benutzerinteraktion eine Benutzereingabe unter Verwendung einer Eingabevorrichtung (e.g. Tastatur, Maus, Touchpad, Touchscreen usw.).
  • Mit Bezug auf 33 ist ein maschinenlesbares Speichermedium 3300 gezeigt, das Anweisungen 3310-3130 speichert, gemäß manchen Implementierungen. Die Anweisungen 3310-3130 können durch eine beliebige Anzahl von Prozessoren (e.g) ausgeführt werden, der eine oder die mehreren Prozessoren 2620, die in 26) . Das maschinenlesbare Speichermedium 3300 kann ein beliebiges nichtflüchtiges computerlesbares Medium sein, wie etwa eine optische, Halbleiter-oder magnetische Speicherungsvorrichtung.
  • Der Befehl 3310 kann ausgeführt werden, um mehrere Video-Frames auf einer Anzeigevorrichtung darzustellen. Die Anweisung 3320 kann ausgeführt werden, um zu bestimmen, ob eine Zeitspanne seit einer letzten Benutzerinteraktion mit einer Eingabevorrichtung eine Zeitschwelle überschreitet. Die Anweisung 3330 kann ausgeführt werden, um als Reaktion auf eine Bestimmung, dass die Zeitspanne seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet, zu bewirken, dass die Anzeigevorrichtung mit einer reduzierten Auffrischrate arbeitet.
  • Die folgenden Klauseln und/oder Beispiele betreffen weitere Ausführungsformen.
  • Bei Beispiel 1 beinhaltet eine Rechenvorrichtung zum Reduzieren der Auffrischrate einen Prozessor und ein maschinenlesbares Speichermedium, das Anweisungen speichert. Wobei die Anweisungen durch den Hardware Prozessor ausführbar sind zum: über wachen einer Benutzereingabe Vorrichtung während der Präsentation von Video frames auf einer Anzeige Vorrichtung mit einer Auffrischung Rate auf einem ersten Niveau; Bestimmen, ob ein Zeit Raum seit einer letzten Benutzer Interaktion mit der Benutzereingabe Vorrichtung einen Zeit Schwellenwert überschreitet; und Reduzieren der Auffrischung Rate der Anzeige Vorrichtung auf ein zweites Niveau als Reaktion auf eine Bestimmung, dass der Zeit Raum seit der letzten Benutzer Interaktion den Zeit Schwellenwert überschreitet.
  • Bei Beispiel 2 kann der Gegenstand des Beispiels 1 optional Anweisungen beinhalten, die ausführbar sind, um die Auffrischrate der Anzeigevorrichtung als Reaktion auf eine Bestimmung, dass ein Zeitraum seit einer Benutzerinteraktion unter dem Zeitschwellenwert liegt, auf das erste Niveau zurückzuführen.
  • Bei Beispiel 3 kann der Gegenstand der Beispiele 1-2 optional Anweisungen beinhalten, die ausführbar sind, um zu bestimmen, ob eine aktualisierte Regiongröße eines Videorahmens unter einem Größenschwellenwert liegt; und die Auffrischrate des Anzeigegeräts als Reaktion auf Folgendes zu reduzieren: die Bestimmung, dass der Zeit Raum seit der letzten Benutzer Interaktion den Zeit Schwellenwert überschreitet; und eine Bestimmung, dass die aktualisierte Region Größe des Video frames unter dem Größen Schwellenwert liegt.
  • Bei Beispiel 4 kann der Gegenstand der Beispiele 1-3 optional Anweisungen beinhalten, die ausführbar sind, um als Reaktion auf eine Bestimmung, dass die aktualisierte Regiongröße des Videorahmens nicht unter dem Größenschwellenwert liegt, die Auffrischrate des Anzeigegeräts zu dem ersten Niveau zurückzuführen.
  • Bei Beispiel 5 kann der Gegenstand der Beispiele 1-4 optional Anweisungen beinhalten, die ausführbar sind, um zu bestimmen, ob eine Aktualisierungsfrequenz der Video-Frames niedriger als die Aktualisierungsrate ist; und die Aktualisierungsrate der Anzeigevorrichtung als Reaktion auf Folgendes zu reduzieren: die Bestimmung, dass die Zeit Periode seit der letzten Benutzer Interaktion den Zeit Schwellenwert überschreitet; und eine Bestimmung, dass die Aktualisierung Frequenz der Video frames niedriger als die Aktualisierung Rate ist.
  • Bei Beispiel 6 kann der Gegenstand der Beispiele 1-5 optional Anweisungen beinhalten, die ausführbar sind, um die Aktualisierungsfrequenz der Videorahmen als Reaktion auf eine Bestimmung, dass die Aktualisierungsfrequenz der Videorahmen nicht niedriger als die Aktualisierungsrate ist, zu der ersten Ebene zurückzuführen.
  • Bei Beispiel 7 kann der Gegenstand der Beispiele 1-6 optional sein, dass der Größenschwellenwert als ein bestimmter Prozentsatz der Vollrahmengröße spezifiziert ist.
  • Bei Beispiel 8 kann der Gegenstand der Beispiele 1-8 optional beinhalten, dass die letzte Benutzerinteraktion eine Benutzereingabe unter Verwendung einer Eingabeeinrichtung umfasst.
  • Bei Beispiel 9 kann ein Verfahren zum Reduzieren der Auffrischrate Folgendes beinhalten: Präsentieren, durch eine Rechenvorrichtung, mehrerer Video-Frames auf einer Anzeigevorrichtung; Bestimmen, durch adaptive Auffrischlogik der Rechenvorrichtung, einer Zeitspanne seit einer letzten Benutzerinteraktion mit einer Eingabevorrichtung; Bestimmen, durch die adaptive Auffrischlogik, ob die Zeit Dauer seit der letzten Benutzer Interaktion einen Zeit Schwellenwert überschreitet; und als Reaktion auf eine Bestimmung, dass die Zeit Dauer seit der letzten Benutzer Interaktion den Zeit Schwellenwert überschreitet, Veranlassen, durch die adaptive Auffrischung Logik, dass die Anzeige Vorrichtung mit einer reduzierten Auffrischung Rate arbeitet.
  • Bei Beispiel 10 kann der Gegenstand des Beispiels 9 optional, nachdem bewirkt wurde, dass die Anzeigevorrichtung mit der reduzierten Auffrischrate arbeitet, Folgendes beinhalten: Bestimmen, dass die Zeitspanne seit der letzten Benutzerinteraktion unter der Zeitschwelle liegt; und Bewirken, dass die Anzeige Vorrichtung mit einer Standard Aktualisierung Rate arbeitet, als Reaktion auf eine Bestimmung, dass die Zeit Periode seit der letzten Benutzer Interaktion unter dem Zeit Schwellenwert liegt, wobei die Standard Aktualisierung Rate höher als die reduzierte Aktualisierung Rate ist.
  • Bei Beispiel 11 kann der Gegenstand der Beispiele 9-10 optional das Bestimmen beinhalten, ob eine aktualisierte Regiongröße eines Video-Frames unter einem Größenschwellenwert liegt; und Veranlassen, dass die Anzeigevorrichtung mit der reduzierten Auffrischrate arbeitet, als Reaktion auf: die Bestimmung, dass der Zeit Raum seit der letzten Benutzer Interaktion den Zeit Schwellenwert überschreitet; und eine Bestimmung, dass die aktualisierte Region Größe des Video frames unter dem Größen Schwellenwert liegt.
  • Bei Beispiel 12 kann der Gegenstand der Beispiele 9-11 optional beinhalten, nach dem Veranlassen, dass die Anzeigevorrichtung mit der reduzierten Auffrischrate arbeitet, Veranlassen, dass die Anzeigevorrichtung als Reaktion auf eine Bestimmung, dass die aktualisierte Regiongröße des Videorahmens nicht unter dem Größenschwellenwert liegt, mit einer Standard-Auffrischrate arbeitet.
  • Bei Beispiel 13 kann der Gegenstand der Beispiele 9-12 optional Bestimmen, ob eine Aktualisierungsfrequenz der Video-Frames niedriger als die Auffrischrate ist, und Veranlassen, dass die Anzeigevorrichtung mit der reduzierten Auffrischrate arbeitet, als Reaktion auf: die Bestimmung, dass die Zeit Periode seit der letzten Benutzer Interaktion den Zeit Schwellenwert überschreitet; und eine Bestimmung, dass die Aktualisierung Frequenz der Video frames niedriger als die Aktualisierung Rate ist.
  • Bei Beispiel 14 kann der Gegenstand der Beispiele 9-13 optional beinhalten, nach dem Veranlassen, dass die Anzeigevorrichtung mit der reduzierten Auffrischrate arbeitet, Veranlassen, dass die Anzeigevorrichtung als Reaktion auf eine Bestimmung, dass die Aktualisierungsfrequenz der Video-Frames nicht niedriger als die Auffrischrate ist, mit einer Standard-Auffrischrate arbeitet.
  • Bei Beispiel 15 kann der Gegenstand der Beispiele 9-14 optional beinhalten, dass die adaptive Auffrischlogik in einem Betriebssystem der Rechenvorrichtung implementiert ist.
  • Bei Beispiel 16 kann ein Rechengerät zum Reduzieren der Auffrischrate Folgendes beinhalten: einen oder mehrere Prozessoren; und einen Speicher, in dem eine Vielzahl von Anweisungen gespeichert ist, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, das Rechengerät veranlassen, das Verfahren nach einem der Beispiele 9 bis 15 auszuführen.
  • In Beispiel 17 kann mindestens ein maschinenlesbares Medium darauf gespeicherte Daten aufweisen, die, wenn sie von mindestens einer Maschine verwendet werden, bewirken, dass die mindestens eine Maschine das Verfahren nach einem der Beispiele 9 bis 15 durchführt.
  • In Beispiel 18 weist eine elektronische Vorrichtung Mittel zum Durchführen des Verfahrens nach einem der Beispiele 9 bis 15 auf.
  • Bei Beispiel 19 beinhaltet ein Artikel ein nichtflüchtiges maschinenlesbares Speichermedium, das Anweisungen zum Reduzieren einer Auffrischrate speichert, die bei Ausführung bewirken, dass ein Prozessor: eine Vielzahl von Video-Frames auf einer Anzeigevorrichtung präsentiert; Bestimmen, ob ein Zeit Raum seit einer letzten Benutzer Interaktion mit einer Eingabe Vorrichtung einen Zeit Schwellenwert überschreitet; und als Reaktion auf eine Bestimmung, dass der Zeit Raum seit der letzten Benutzer Interaktion den Zeit Schwellenwert überschreitet, Veranlassen, dass die Anzeige Vorrichtung mit einer reduzierten Auffrischung Rate arbeitet.
  • Bei Beispiel 20 kann der Gegenstand des Beispiels 19 optional Anweisungen beinhalten, die ausführbar sind, um die Auffrischrate des Anzeigegeräts als Reaktion auf eine Bestimmung, dass eine Zeitdauer seit einer Benutzerinteraktion unter dem Zeitschwellenwert liegt, zu einem Standardpegel zurückzuführen, wobei die Standardauffrischrate höher als die reduzierte Auffrischrate ist.
  • Bei Beispiel 21 kann der Gegenstand der Beispiele 19-20 optional Anweisungen beinhalten, die ausführbar sind zum: Bestimmen, ob eine aktualisierte Regiongröße eines Videorahmens unter einem Größenschwellenwert liegt; und Reduzieren der Auffrischrate des Anzeigegeräts als Reaktion auf: die Bestimmung, dass der Zeit Raum seit der letzten Benutzer Interaktion den Zeit Schwellenwert überschreitet; und eine Bestimmung, dass die aktualisierte Region Größe des Video frames unter dem Größen Schwellenwert liegt.
  • Bei Beispiel 22 kann der Gegenstand der Beispiele 19-21 optional Anweisungen beinhalten, die ausführbar sind zum: Bestimmen, ob eine Aktualisierungsfrequenz der Videorahmen niedriger als die Aktualisierungsrate ist; und Reduzieren der Aktualisierungsrate des Anzeigegeräts als Reaktion auf: die Bestimmung, dass die Zeit Periode seit der letzten Benutzer Interaktion den Zeit Schwellenwert überschreitet; und eine Bestimmung, dass die Aktualisierung Frequenz der Video frames niedriger als die Aktualisierung Rate ist.
  • Bei Beispiel 23 kann der Gegenstand der Beispiele 19-22 optional beinhalten, dass der Größenschwellenwert ein bestimmter Prozentsatz der Vollrahmengröße ist.
  • Bei Beispiel 24 beinhaltet ein Gerät zum Reduzieren der Auffrischrate: Mittel zum Präsentieren einer Vielzahl von Video-Frames auf einer Anzeigevorrichtung; Mittel zum Bestimmen einer Zeitspanne seit einer letzten Benutzerinteraktion mit einer Eingabevorrichtung; Mittel zum Bestimmen, ob die Zeit Periode seit der letzten Benutzer Interaktion einen Zeit Schwellenwert überschreitet; und Mittel zum Veranlassen, ansprechend auf eine Bestimmung, dass die Zeit Periode seit der letzten Benutzer Interaktion den Zeit Schwellenwert überschreitet, dass die Anzeige Einrichtung mit einer reduzierten Auffrischung Rate arbeitet.
  • Bei Beispiel 25 kann der Gegenstand des Beispiels 24 optional Mittel aufweisen zum, nachdem bewirkt wurde, dass die Anzeigevorrichtung mit der reduzierten Auffrischrate arbeitet: Bestimmen, dass die Zeitdauer seit der letzten Benutzerinteraktion unter der Zeitschwelle liegt; und Bewirken, dass die Anzeige Vorrichtung mit einer Standard Aktualisierung Rate arbeitet, ansprechend auf eine Bestimmung, dass die Zeit Periode seit der letzten Benutzer Interaktion unter dem Zeit Schwellenwert liegt, wobei die Standard Aktualisierung Rate höher als die reduzierte Aktualisierung Rate ist.
  • Bei Beispiel 26 kann der Gegenstand der Beispiele 24-25 optional Folgendes beinhalten: Mittel zum Bestimmen, ob eine aktualisierte Regiongröße eines Video-Frames unter einem Größenschwellenwert liegt; und Mittel zum Veranlassen, dass die Anzeigevorrichtung mit der reduzierten Auffrischrate arbeitet, als Reaktion auf: die Bestimmung, dass der Zeit Raum seit der letzten Benutzer Interaktion den Zeit Schwellenwert überschreitet; und eine Bestimmung, dass die aktualisierte Region Größe des Video frames unter dem Größen Schwellenwert liegt.
  • Bei Beispiel 27 kann der Gegenstand der Beispiele 24-26 optional Mittel beinhalten, um, nachdem das Anzeigegerät veranlasst wurde, mit der reduzierten Auffrischrate zu arbeiten, das Anzeigegerät zu veranlassen, als Reaktion auf eine Bestimmung, dass die aktualisierte Regiongröße des Videorahmens nicht unter dem Größenschwellenwert liegt, mit einer Standard-Auffrischrate zu arbeiten.
  • Bei Beispiel 28 kann der Gegenstand der Beispiele 24-27 optional Mittel zum Bestimmen, ob eine Aktualisierungsfrequenz der Video-Frames niedriger als die Auffrischrate ist, und Mittel zum Veranlassen, dass die Anzeigevorrichtung mit der reduzierten Auffrischrate arbeitet, als Reaktion auf: die Bestimmung, dass die Zeit Periode seit der letzten Benutzer Interaktion den Zeit Schwellenwert überschreitet; und eine Bestimmung, dass die Aktualisierung Frequenz der Video frames niedriger als die Aktualisierung Rate ist.
  • Bei Beispiel 29 kann der Gegenstand der Beispiele 24-28 optional Mittel beinhalten, um, nachdem die Anzeigevorrichtung veranlasst wurde, mit der reduzierten Auffrischrate zu arbeiten, die Anzeigevorrichtung als Reaktion auf eine Bestimmung, dass die Aktualisierungsfrequenz der Video-Frames nicht niedriger als die Auffrischrate ist, mit einer Standard-Auffrischrate zu arbeiten.
  • Gemäß einer oder mehreren Ausführungsformen können Anzeigeauffrischraten basierend auf Bedingungen, die eine reduzierte Auswirkung auf ein Betrachtungserlebnis angeben, dynamisch angepasst werden. Bei manchen Beispielen kann die Auffrischrate reduziert werden, falls die Zeit seit der letzten Benutzereingabe eine Zeitschwelle überschritten hat, falls ein aktualisierter Rahmenteil unter einer Größenschwelle liegt, falls die Häufigkeit von Rahmenaktualisierungen geringer als die Auffrischrate ist, oder eine Kombination davon. Dementsprechend können manche Ausführungsformen den Leistungsverbrauch reduzieren, der mit dem Anzeigen von Video-Frames assoziiert ist.
  • Es wird angemerkt, dass, während die Figuren 26-33 veranschaulichen verschiedene beispielhafte Implementierungen, andere Variationen sind möglich. Zum Beispiel wird in Betracht gezogen, dass eine oder mehrere Ausführungsformen unter Verwendung mancher oder aller der beispielhaften Vorrichtungen und Systeme implementiert werden können, die unter Bezugnahme auf die 1 und 2 beschrieben sind. 1-25. Es wird angemerkt, dass die in den 1-33 sind zur Veranschaulichung bereitgestellt und sollen keine Ausführungsformen beschränken. Insbesondere, obwohl Ausführungsformen der Klarheit halber in vereinfachter Form gezeigt sein können, können Ausführungsformen eine beliebige Anzahl und/oder Anordnung von Prozessoren, Kernen und/oder zusätzlichen Komponenten (e.g. Busse, Speichermedien, Verbinder, Leistungskomponenten, Puffer, Schnittstellen usw.) beinhalten. Zum Beispiel wird in Betracht gezogen, dass manche Ausführungsformen eine beliebige Anzahl von Komponenten zusätzlich zu den gezeigten beinhalten können und dass eine unterschiedliche Anordnung der gezeigten Komponenten bei gewissen Implementierungen auftreten kann. Des Weiteren wird in Betracht gezogen, dass Spezifikationen in den Beispielen, die in den 1-33 kann überall in einer oder mehreren Ausführungsformen verwendet werden.
  • „Es versteht sich, dass verschiedene Kombinationen der obigen Beispiele möglich sind.‟ Ausführungsformen können in vielen verschiedenen Arten von Systemen verwendet werden. Bei einer Ausführungsform kann zum Beispiel eine Kommunikationsvorrichtung eingerichtet sein, um die verschiedenen hierin beschriebenen Verfahren und Techniken durchzuführen. Natürlich ist der Schutzumfang der vorliegenden Erfindung nicht auf eine Kommunikationsvorrichtung beschränkt und stattdessen können andere Ausführungsformen auf andere Arten von Einrichtungen zum Verarbeiten von Anweisungen oder ein oder mehrere maschinenlesbare Medien einschließlich Anweisungen, die als Reaktion darauf, dass sie auf einer Rechenvorrichtung ausgeführt werden, bewirken, dass die Vorrichtung eines oder mehrere der hier beschriebenen Verfahren und Techniken ausführt, gerichtet sein.
  • Verweise durch diese Spezifikation hindurch auf „eine Ausführungsform“ oder „eine Ausführungsform“ bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Charakteristik, das/die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Implementierung enthalten ist, die von der vorliegenden Erfindung umfasst ist. Dementsprechend beziehen sich die Erscheinungen des Ausdrucks „eine Ausführungsform“ oder „bei einer Ausführungsform“ nicht notwendigerweise auf die gleiche Ausführungsform. Des Weiteren können die speziellen Merkmale, Strukturen oder Charakteristiken in anderen geeigneten Formen außer der speziellen veranschaulichten Ausführungsform instituiert sein und alle solchen Formen können innerhalb der Ansprüche der vorliegenden Anmeldung enthalten sein.
  • Obwohl die vorliegende Erfindung mit Bezug auf eine beschränkte Anzahl von Ausführungsformen beschrieben wurde, versteht der Fachmann zahlreiche Modifikationen und Variationen davon. Es ist beabsichtigt, dass die angehängten Ansprüche alle Modifikationen und Variationen abdecken, die in den wahren Wesen und Schutzumfang dieser vorliegenden Erfindung fallen.

Claims (23)

  1. „Rechenvorrichtung, umfassend:“ einen Prozessor; und ein maschinenlesbares Speichermedium, das Anweisungen speichert, wobei die Anweisungen durch den Hardwareprozessor ausführbar sind zum: Überwachen einer Benutzereingabevorrichtung während der Präsentation von Videobildern auf einer Anzeigevorrichtung mit einer Auffrischungsrate auf einem ersten Pegel; Bestimmen, ob ein Zeitraum seit einer letzten Benutzerinteraktion mit der Benutzereingabevorrichtung eine Zeitschwelle überschreitet; und reduzieren der Auffrischrate der Anzeigevorrichtung auf ein zweites Niveau als Reaktion auf eine Bestimmung, dass die Zeitdauer seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet.
  2. Rechenvorrichtung nach Anspruch 1, wobei die Anweisungen ausführbar sind zum: Zurückgeben der Auffrischrate der Anzeigevorrichtung auf das erste Niveau als Reaktion auf eine Bestimmung, dass eine Zeitspanne seit einer Benutzerinteraktion unter der Zeitschwelle liegt.
  3. Rechenvorrichtung nach Anspruch 1, wobei die Anweisungen ausführbar sind zum: „Bestimmen, ob eine aktualisierte Bereichsgröße eines Video-Frames unter einem Größenschwellenwert liegt; und“ reduzieren der Auffrischrate der Anzeigevorrichtung als Reaktion auf: „Bestimmen, dass die Zeitspanne seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet; und“ eine Bestimmung, dass die aktualisierte Gebietsgröße des Video-Frames unter der Größenschwelle liegt.
  4. Rechenvorrichtung nach Anspruch 3, wobei die Anweisungen ausführbar sind zum: „Zurückgeben der Auffrischrate der Anzeigevorrichtung auf den ersten Pegel als Reaktion auf eine Bestimmung, dass die aktualisierte Bereichsgröße des Video-Frames nicht unter dem Größenschwellenwert liegt.‟
  5. Rechenvorrichtung nach Anspruch 1, wobei die Anweisungen ausführbar sind zum: „Bestimmen, ob eine Aktualisierungsfrequenz der Video-Frames niedriger als die Auffrischrate ist, und“ reduzieren der Auffrischrate der Anzeigevorrichtung als Reaktion auf: „Bestimmen, dass die Zeitspanne seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet; und“ eine Bestimmung, dass die Aktualisierungsfrequenz der Video-Frames niedriger als die Auffrischrate ist.
  6. Rechenvorrichtung nach Anspruch 5, wobei die Anweisungen ausführbar sind zum: „Zurückgeben der Auffrischungsrate der Anzeigevorrichtung auf den ersten Pegel als Reaktion auf eine Bestimmung, dass die Aktualisierungsfrequenz der Video-Frames nicht niedriger als die Auffrischungsrate ist.‟
  7. Rechen Vorrichtung nach Anspruch 1, wobei der Größen Schwellenwert als ein bestimmter Prozent Satz der vollen Rahmen Größe spezifiziert ist.
  8. Computer Vorrichtung nach Anspruch 1, wobei die letzte Benutzer Interaktion eine Benutzer Eingabe unter Verwendung einer Eingabe Vorrichtung umfasst.
  9. „Verfahren, umfassend:“ darstellen, durch eine Rechenvorrichtung, mehrerer Video-Frames auf einer Anzeigevorrichtung; Bestimmen, durch adaptive Auffrischungslogik der Rechenvorrichtung, einer Zeitspanne seit einer letzten Benutzerinteraktion mit einer Eingabevorrichtung; Bestimmen, durch die adaptive Auffrischungslogik, ob die Zeitspanne seit der letzten Benutzerinteraktion eine Zeitschwelle überschreitet; und als Reaktion auf eine Bestimmung, dass die Zeitspanne seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet, Veranlassen, durch die adaptive Auffrischlogik, dass die Anzeigevorrichtung mit einer reduzierten Auffrischrate arbeitet.
  10. Verfahren nach Anspruch 9, das nach dem Bewirken, dass die Anzeige Vorrichtung mit der reduzierten Auffrischung Rate arbeitet, Folgendes umfasst: „Bestimmen, dass der Zeitraum seit der letzten Benutzerinteraktion unter der Zeitschwelle liegt; und“ veranlassen, dass die Anzeige Vorrichtung als Reaktion auf eine Bestimmung, dass die Zeitspanne seit der letzten Benutzer Interaktion unter dem Zeit Schwellenwert liegt, mit einer Standard Aktualisierung Rate arbeitet, wobei die Standard Aktualisierung Rate höher als die reduzierte Aktualisierung Rate ist.
  11. Verfahren nach Anspruch 9, das Folgendes umfasst: „Bestimmen, ob eine aktualisierte Bereichsgröße eines Video-Frames unter einem Größenschwellenwert liegt; und“ bewirken, dass die Anzeigevorrichtung mit der reduzierten Auffrischrate arbeitet, als Reaktion auf: „Bestimmen, dass die Zeitspanne seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet; und“ eine Bestimmung, dass die aktualisierte Gebietsgröße des Video-Frames unter der Größenschwelle liegt.
  12. Verfahren nach Anspruch 11, das, nachdem bewirkt wurde, dass die Anzeigevorrichtung mit der reduzierten Auffrischrate arbeitet, Folgendes umfasst: bewirken, dass die Anzeigevorrichtung als Reaktion auf eine Bestimmung, dass die aktualisierte Bereichsgröße des Video-Frames nicht unter dem Größenschwellenwert liegt, mit einer Standard-Auffrischrate arbeitet.
  13. Verfahren nach Anspruch 9, das Folgendes umfasst: „Bestimmen, ob eine Aktualisierungsfrequenz der Video-Frames niedriger als die Auffrischrate ist, und“ bewirken, dass die Anzeigevorrichtung mit der reduzierten Auffrischrate arbeitet, als Reaktion auf: „Bestimmen, dass die Zeitspanne seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet; und“ eine Bestimmung, dass die Aktualisierungsfrequenz der Video-Frames niedriger als die Auffrischrate ist.
  14. Verfahren nach Anspruch 13, das, nachdem bewirkt wurde, dass die Anzeigevorrichtung mit der reduzierten Auffrischrate arbeitet, Folgendes umfasst: bewirken, dass die Anzeigevorrichtung als Reaktion auf eine Bestimmung, dass die Aktualisierungsfrequenz der Video-Frames nicht niedriger als die Aktualisierungsrate ist, mit einer Standardaktualisierungsrate arbeitet.
  15. Verfahren nach Anspruch 9, wobei die adaptive Auffrischung Logik in einem Betrieb System der Rechen Vorrichtung implementiert ist.
  16. „Rechenvorrichtung, umfassend:“ einen oder mehrere Prozessoren; und Speicher, in dem mehrere Anweisungen gespeichert sind, die bei Ausführung durch den einen oder die mehreren Prozessoren bewirken, dass die Rechenvorrichtung das Verfahren nach einem der Ansprüche 9 bis 15 durchführt.
  17. Maschinenlesbares Medium, auf dem Daten gespeichert sind, die, wenn sie von mindestens einer Maschine verwendet werden, bewirken, dass die mindestens eine Maschine das Verfahren nach einem der Ansprüche 9 bis 15 durchführt.
  18. Elektronische Vorrichtung, die Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 9 bis 15 umfasst.
  19. Artikel, der ein nichtflüchtiges maschinenlesbares Speichermedium umfasst, das Anweisungen speichert, die bei Ausführung einen Prozessor zu Folgendem veranlassen: Präsentieren mehrerer Video-Frames auf einer Anzeigevorrichtung; Bestimmen, ob ein Zeitraum seit einer letzten Benutzerinteraktion mit einer Eingabevorrichtung eine Zeitschwelle überschreitet; und als Reaktion auf eine Bestimmung, dass die Zeitspanne seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet, Bewirken, dass die Anzeigevorrichtung mit einer reduzierten Auffrischrate arbeitet.
  20. Artikel nach Anspruch 19, wobei die Anweisungen ausführbar sind zum: die Auffrischung Rate der Anzeige Vorrichtung als Reaktion auf eine Bestimmung, dass ein Zeit Raum seit einer Benutzer Interaktion unter der Zeit Schwelle liegt, auf einen Standard Pegel zurückzubringen, wobei die Standard Auffrischung Rate höher als die reduzierte Auffrischung Rate ist.
  21. Artikel nach Anspruch 19, wobei die Anweisungen ausführbar sind zum: „Bestimmen, ob eine aktualisierte Bereichsgröße eines Video-Frames unter einem Größenschwellenwert liegt; und“ reduzieren der Auffrischrate der Anzeigevorrichtung als Reaktion auf: „Bestimmen, dass die Zeitspanne seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet; und“ eine Bestimmung, dass die aktualisierte Gebietsgröße des Video-Frames unter der Größenschwelle liegt.
  22. Artikel nach Anspruch 19, wobei die Anweisungen ausführbar sind zum: „Bestimmen, ob eine Aktualisierungsfrequenz der Video-Frames niedriger als die Auffrischrate ist; und“ reduzieren der Auffrischrate der Anzeigevorrichtung als Reaktion auf: „Bestimmen, dass die Zeitspanne seit der letzten Benutzerinteraktion die Zeitschwelle überschreitet; und“ eine Bestimmung, dass die Aktualisierungsfrequenz der Video-Frames niedriger als die Auffrischrate ist.
  23. Artikel nach Anspruch 19, wobei die Größenschwelle ein bestimmter Prozentsatz der Vollbildgröße ist.
DE112020000231.4T 2019-02-07 2020-02-05 Einstellung von Anzeige Auffrischung Raten basierend auf Benutzer Aktivität Pending DE112020000231T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/269,958 2019-02-07
US16/269,958 US10861424B2 (en) 2019-02-07 2019-02-07 Adjusting display refresh rates based on user activity
PCT/US2020/016740 WO2020163445A1 (en) 2019-02-07 2020-02-05 Adjusting display refresh rates based on user activity

Publications (1)

Publication Number Publication Date
DE112020000231T5 true DE112020000231T5 (de) 2021-09-09

Family

ID=66659429

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020000231.4T Pending DE112020000231T5 (de) 2019-02-07 2020-02-05 Einstellung von Anzeige Auffrischung Raten basierend auf Benutzer Aktivität

Country Status (4)

Country Link
US (1) US10861424B2 (de)
CN (1) CN113272889A (de)
DE (1) DE112020000231T5 (de)
WO (1) WO2020163445A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11095566B2 (en) * 2018-10-22 2021-08-17 Hewlett Packard Enterprise Development Lp Embedded device interaction restrictions
US10861424B2 (en) 2019-02-07 2020-12-08 Intel Corporation Adjusting display refresh rates based on user activity
TWI704468B (zh) * 2019-07-01 2020-09-11 宏碁股份有限公司 用於對遊戲對話視窗進行翻譯的方法及電腦程式產品
CN112445315A (zh) 2019-08-28 2021-03-05 北京小米移动软件有限公司 屏幕刷新帧率的控制方法、装置及存储介质
KR20210119609A (ko) 2020-03-24 2021-10-06 삼성디스플레이 주식회사 표시 장치 및 이를 이용한 표시 패널의 구동 방법
US11446571B2 (en) * 2020-04-30 2022-09-20 Intel Corporation Cloud gaming adaptive synchronization mechanism
CN111767013A (zh) * 2020-06-01 2020-10-13 Oppo(重庆)智能科技有限公司 控制方法、控制装置、电子装置、计算机可读存储介质
US11244654B2 (en) 2020-06-19 2022-02-08 Intel Corporation Display control apparatus and method for a display based on information indicating presence or engagement of the user of the display
US11513795B2 (en) * 2020-06-24 2022-11-29 Dell Products L.P. Systems and methods for firmware-based user awareness arbitration
CN113438552B (zh) * 2021-05-19 2022-04-19 荣耀终端有限公司 一种刷新率调整方法和电子设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080001934A1 (en) * 2006-06-28 2008-01-03 David Anthony Wyatt Apparatus and method for self-refresh in a display device
US8334857B1 (en) * 2007-12-14 2012-12-18 Nvidia Corporation Method and system for dynamically controlling a display refresh rate
US10157657B2 (en) * 2012-08-28 2018-12-18 Rambus Inc. Selective refresh with software components
US20140184611A1 (en) * 2012-12-31 2014-07-03 Nvidia Corporation Method and apparatus for sending partial frame updates rendered in a graphics processor to a display using framelock signals
JP2017502325A (ja) * 2013-12-28 2017-01-19 インテル・コーポレーション 動的バックライト制御能力を利用した適応性部分画面更新
US9293119B2 (en) * 2014-01-06 2016-03-22 Nvidia Corporation Method and apparatus for optimizing display updates on an interactive display device
US9354744B2 (en) * 2014-06-09 2016-05-31 Sony Corporation Adaptive touch panel synchronization
US10032430B2 (en) * 2014-09-17 2018-07-24 Mediatek Inc. Processor for use in dynamic refresh rate switching and related electronic device
JP6288882B1 (ja) 2016-12-12 2018-03-07 株式会社コナミデジタルエンタテインメント ゲーム制御装置、ゲームシステム、及びプログラム
US10475405B2 (en) * 2017-12-07 2019-11-12 Qualcomm Incorporated Dynamic control of display refresh rate based on user interface activity
US10861424B2 (en) 2019-02-07 2020-12-08 Intel Corporation Adjusting display refresh rates based on user activity

Also Published As

Publication number Publication date
US10861424B2 (en) 2020-12-08
CN113272889A (zh) 2021-08-17
WO2020163445A1 (en) 2020-08-13
US20190172427A1 (en) 2019-06-06

Similar Documents

Publication Publication Date Title
DE112020000231T5 (de) Einstellung von Anzeige Auffrischung Raten basierend auf Benutzer Aktivität
DE102018131595A1 (de) Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen
DE112013005287B4 (de) Prozessor mit heterogenen physischen Kernen und in einem Prozessor mit heterogenen physischen Kernen implementiertes Verfahren
EP3646179B1 (de) Änderung der prozessorfrequenz auf der basis einer unterbrechungsrate
DE112019001522T5 (de) System, vorrichtung und verfahren zur optimierten drosselung eines prozessors
DE102020122528A1 (de) Softwareunterstütztes Leistungsmanagement
DE112013005131T5 (de) Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE112012007058T5 (de) Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
DE112019000693T5 (de) System, vorrichtung und verfahren zur bereitstellung von hardware-rückmeldungsinformationen in einem prozessor
DE112017004361T5 (de) Steuern eines leistungszustands eines prozessors unter verwendung einer kombination von package- und thread-hinweis-informationen
DE112016004776T5 (de) Datenkomprimierung unter Verwendung eines Beschleunigers mit mehreren Suchmaschinen
DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
DE112012007119T5 (de) Threadmigration-Unterstützung für Kerne unterschiedlicher Architektur
DE112020001586T5 (de) System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors
DE112011105666T5 (de) Befehl und Logik zum Bereitstellen von Vektor-Lade-OP/Speicher-OP mit Schritt-Funktionalität
DE202015009867U1 (de) Einrichtung zum Bereitstellen einer Wärmeparametermeldung für eine Mehrchip-Baugruppe
DE112019002389T5 (de) Architektur zur dynamischen umwandlung einer speicherkonfiguration
DE202019005682U1 (de) Hardwaregestützte Paging-Mechanismen
DE112011105665T5 (de) Befehl und Logik zum Liefern von Vektorladen und -speichern mit Schritt- und Maskierfunktionalität
DE112018004329T5 (de) Steuerblöcke zur prozessorleistungsverwaltung
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
DE112017003080T5 (de) Prozessor mit gleichzeitigem kern und gewebeausgang aus einem zustand mit geringer energie
DE112017001704T5 (de) Arbiterbasierte Serialisierung von Prozessor-System-Management-Interrupt-Ereignissen