DE112013007701T5 - Ein-Chip-System (SOC), das Hybridprozessorkerne enthält - Google Patents

Ein-Chip-System (SOC), das Hybridprozessorkerne enthält Download PDF

Info

Publication number
DE112013007701T5
DE112013007701T5 DE112013007701.9T DE112013007701T DE112013007701T5 DE 112013007701 T5 DE112013007701 T5 DE 112013007701T5 DE 112013007701 T DE112013007701 T DE 112013007701T DE 112013007701 T5 DE112013007701 T5 DE 112013007701T5
Authority
DE
Germany
Prior art keywords
processor
core
devices
isa
accordance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE112013007701.9T
Other languages
English (en)
Inventor
Hu Tiger Chen
Liang Chen
Chunxiao Lin
Sai Luo
Hai Ge Tian
Rui Gang Wang
Tin-Fook Ngai
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 DE112013007701T5 publication Critical patent/DE112013007701T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Microcomputers (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

Eine Verarbeitungsvorrichtung enthält ein erstes Prozessormodul, das einen ersten Kern umfasst, der in Übereinstimmung mit einem ersten Befehlssatz (ISA) ausgelegt ist, und ein zweites Prozessormodul, das einen zweiten Kern umfasst, der in Übereinstimmung mit einem zweiten ISA ausgelegt ist. Das erste und das zweite Prozessormodul sind auf einem selben Chipplättchen hergestellt.

Description

  • TECHNISCHES GEBIET
  • Die Ausführungsformen der Offenbarung beziehen sich allgemein auf Verarbeitungsvorrichtungen und beziehen sich insbesondere auf ein Ein-Chip-System, das Prozessoren enthält, die jeweils heterogene Kerne aufweisen, die in Übereinstimmung mit unterschiedlichen Befehlssatzarchitekturen (ISA) ausgelegt sind.
  • HINTERGRUND
  • Endanwender können fordern, dass eine einzelne Computervorrichtung wie etwa ein Laptopcomputer, ein Tablet-Computer oder ein Smartphone wahlweise unter einem einer Anzahl von Ökosystemen oder Betriebssystemen (OS) arbeitet. Zum Beispiel können sie wünschen, dass die Vorrichtung zur persönlichen Verwendung unter einem ersten OS (wie etwa AndroidTM) und zur Geschäftsverwendung unter einem zweiten OS (wie etwa Windows®) arbeitet.
  • Unterschiedliche OS-Typen können auf Prozessoren aufgebaut sein, die in Übereinstimmung mit unterschiedlichen Befehlssatzarchitekturen (ISA) ausgelegt sind. Zum Beispiel ist die Intel®-Architektur (IA) ein ISA-Typ, auf dem das Windows-OS arbeiten kann, und ist ARM® ein anderer ISA-Typ, auf dem Android arbeiten kann. Zusätzlich kann jede der ISA als die Kommunikationsschnittstellen zwischen Komponenten innerhalb der Prozessoren oder zwischen den Prozessoren und den Peripherievorrichtungen unterschiedliche Sätze von Kommunikationsprotokollen verwenden. Aktuell erzielen Vorrichtungshersteller zwei Ökosysteme auf einer selben Computervorrichtung unter Verwendung einer von zwei Techniken. Zunächst entwerfen die Vorrichtungshersteller einfach Prozessoren unterschiedlicher ISA in einer einzelnen Computervorrichtung. Zum Beispiel kann der Vorrichtungshersteller in einer Computervorrichtung einen IA-Prozessor und einen ARM-Prozessor implementieren, so dass Windows-Anwendungen auf dem IA-Prozessor ablaufen können, wenn Windows das Vordergrund-OS ist, und Android-Anwendungen auf dem ARM-Prozessor ablaufen können, wenn Android das Vordergrund-OS ist. Alternativ können Vorrichtungshersteller in einer Computervorrichtung eine virtuelle Maschine auf einem selben ISA-Prozessortyp ausführen. Die virtuelle Maschine kann unterschiedliche Ökosysteme von demselben ISA-Befehlstyp emulieren. Zum Beispiel kann die Computervorrichtung Windows-Anwendungen auf einer virtuellen Windows-Maschine und Android-Anwendungen auf einer virtuellen Android-Maschine ausführen, während die Prozessoren der Computervorrichtung entweder ausschließlich IA-Prozessoren oder ausschließlich ARM-Prozessoren sein können.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Offenbarung wird besser verständlich aus der im Folgenden gegebenen ausführlichen Beschreibung und aus den beigefügten Zeichnungen verschiedener Ausführungsformen der Offenbarung. Allerdings sind die Zeichnungen nicht als Beschränkung der Offenbarung auf die spezifischen Ausführungsformen, sondern nur zur Erläuterung und zum Verständnis zu verstehen.
  • 1 stellt eine Verarbeitungsvorrichtung in Übereinstimmung mit einer Ausführungsform dar.
  • 2A stellt eine Verarbeitungsvorrichtung, die eine Busbrücke enthält, in Übereinstimmung mit einer Ausführungsform dar.
  • 2B stellt eine Verarbeitungsvorrichtung, die einen Systemagentenumsetzer enthält, in Übereinstimmung mit einer Ausführungsform dar.
  • 2C stellt eine Verarbeitungsvorrichtung, die Mehrprozessormodule enthält, in Übereinstimmung mit einer Ausführungsform dar.
  • 3A stellt ein. ausführliches Prinzipschaltbild einer Verarbeitungsvorrichtung in Übereinstimmung mit einer Ausführungsform dar.
  • 3B stellt ein ausführliches Prinzipschaltbild einer Verarbeitungsvorrichtung in Übereinstimmung mit einer anderen Ausführungsform dar.
  • 4 ist ein Blockschaltplan eines Verfahrens zum Schalten zwischen OS in einer Zwei-OS-Computervorrichtung in Übereinstimmung mit einer Ausführungsform.
  • 5A ist ein Blockschaltplan, der eine Mikroarchitektur für einen Prozessor, der einen heterogenen Kern enthält, in dem eine Ausführungsform der Offenbarung verwendet werden kann, darstellt.
  • 5B ist ein Blockschaltplan, der eine In-der-Reihe-Pipeline und eine Registerumbenennungsstufen-außer-der-Reihe-Ausgabe/Ausführungs-Pipeline, die in Übereinstimmung mit wenigstens einer Ausführungsform der Offenbarung implementiert wird, darstellt.
  • 6 stellt einen Blockschaltplan der Mikroarchitektur für einen Prozessor, der eine Logik enthält, in Übereinstimmung mit einer Ausführungsform der Offenbarung dar.
  • 7 ist ein Blockschaltplan, der ein System darstellt, in dem eine Ausführungsform der Offenbarung verwendet werden kann.
  • 8 ist ein Blockschaltplan eines Systems, in dem eine Ausführungsform der Offenbarung arbeiten kann.
  • 9 ist ein Blockschaltplan eines Systems, in dem eine Ausführungsform der Offenbarung arbeiten kann.
  • 10 ist ein Blockschaltplan eines Ein-Chip-Systems (SoC) in Übereinstimmung mit einer Ausführungsform der vorliegenden Offenbarung.
  • 11 ist ein Blockschaltplan einer Ausführungsform eines SoC-Entwurfs in Übereinstimmung mit der vorliegenden Offenbarung.
  • 12 stellt einen Blockschaltplan einer Ausführungsform eines Computersystems dar.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Schemata zum Ausführen zweier Ökosysteme auf einer selben Vorrichtung erleiden wegen redundanter Prozessoren, die in Übereinstimmung mit unterschiedlichen ISA ausgelegt sind, hohe Kosten, Leistungsverschlechterungen und hohe Leistungsverbrauche. Ein weiteres Problem bei den aktuellen Schemata ist die Kompatibilität von Binärcodes, die in unterschiedlichen ISA-Mikrosystemen ablaufen. Zum Beispiel können Anwendungen, die für ARM-Plattformen kompiliert sind, ohne Portierungsanstrengungen nicht direkt auf IA-Plattformen ablaufen. Um die Kompatibilitätsprobleme zwischen unterschiedlichen ISA-Typen zu lösen, wird die Binärübersetzung verwendet. Allerdings benötigt diese Lösung Laufzeitsoftware, die die native Bibliothek, die für eine nicht-native ISA geschrieben ist, dynamisch oder statisch in eine native ISA übersetzt. Leider führt die Binärübersetzung Leistungsverluste ein und behandelt sie nicht alle Szenarien.
  • Endanwender von Computervorrichtungen, die mehrere Ökosysteme ausführen, wünschen schnelle Schalter zwischen unterschiedlichen OS-Typen, die auf der Computervorrichtung verfügbar sind, mit minimaler Leistungsverschlechterung, minimalem Leistungsverbrauch und minimaler Systemgrundfläche.
  • Um Multi-Ökosysteme in einer einzelnen Computervorrichtung effizient zu erzielen, stellen Ausführungsformen der Offenbarung ein Ein-Chip-System (SoC) bereit, das wenigstens eine Zentraleinheit (CPU) enthalten kann, die jeweils heterogene ISA-Kerne enthält. Die heterogenen Kerne können wenigstens einen Kern, der in Übereinstimmung mit einem ersten ISA-Typ ausgelegt ist, und wenigstens einen Kern, der in Übereinstimmung mit einem zweiten ISA-Typ ausgelegt ist, enthalten, wobei der erste und der zweite ISA-Typ unterschiedlich sind. Zum Beispiel kann ein erster Kern einer CPU als ein Kern zum Rechnen mit komplexem Befehlssatz (CSIC-Kern) ausgelegt sein und kann ein zweiter Kern für dieselbe CPU als ein Kern zum Rechnen mit reduziertem Befehlssatz (RISC-Kern) ausgelegt sein. Genauer kann der erste ISA-Typ IA sein und kann der zweite ISA-Typ ARM sein. Obgleich sich die vorliegende Anmeldung zweckmäßigkeitshalber häufig auf IA und ARM als die zwei beispielhaften ISA bezieht, wird angemerkt, dass die vorliegende Anmeldung nicht auf diese zwei spezifischen Beispiele beschränkt ist. Die Prinzipien der vorliegenden Anmeldung sind gleichfalls auf andere ISA-Typen wie etwa auf die PowerPC®-Architektur anwendbar.
  • Ausführungsformen der Offenbarung können die heterogenen Kerne in ein selbes Chipplättchen integrieren, um ein SoC zu bilden, so dass in einer einzelnen Computervorrichtung effiziente und Hochleistungs-Mehr-OS-Einrichtungen oder Hochleistungs-Zwei-OS-Einrichtungen aufgebaut werden können.
  • Ausführungsformen der vorliegenden Offenbarung stellen charakteristische Architekturen bereit, die gegenüber aktuellen Technologien den Vorteil niedriger Kosten und niedrigen Leistungsverbrauchs, kleiner Grundflächen und hoher Leistungsfähigkeit aufweisen.
  • Obgleich die folgenden Ausführungsformen mit Bezug auf spezifische integrierte Schaltungen wie etwa in Computerplattformen oder Mikroprozessoren beschrieben werden können, sind andere Ausführungsformen auf andere Typen integrierter Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren hier beschriebener Ausführungsformen können auf andere Typen von Schaltungen oder Halbleitervorrichtungen angewendet werden. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf Desktop-Computersysteme oder UltrabooksTM beschränkt. Außerdem können sie ebenfalls in anderen Vorrichtungen wie etwa Handvorrichtungen, Tablets, anderen dünnen Notebooks, Ein-Chip-Vorrichtungen (SOC-Vorrichtungen) und eingebetteten Anwendungen verwendet werden. Einige Beispiele für Handvorrichtungen enthalten Mobiltelephone, Internetprotokollvorrichtungen, Digitalkameras, Personal Digital Assistants (PDAs) und Hand-PCs. Üblicherweise enthalten eingebettete Anwendungen einen Mikrocontroller, einen digitalen Signalprozessor (DSP), ein Ein-Chip-System, Netzcomputer (NetPC), Set-Top-Boxen, Netz-Hubs, Weitverkehrs-Switches (WAN-Switches) oder irgendein anderes System, das die hier gelehrten Funktionen und Operationen ausführen kann.
  • Obgleich die folgenden Ausführungsformen mit Bezug auf einen Prozessor beschrieben sind, sind andere Ausführungsformen auf andere Typen integrierter Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen der Offenbarung können auf andere Typen von Schaltungen oder Halbleitervorrichtungen angewendet werden, die einen höheren Pipeline-Durchsatz und eine verbesserte Leistungsfähigkeit nutzen können. Die Lehren der Ausführungsformen der Offenbarung sind auf irgendeinen Prozessor oder auf irgendeine Maschine, die Datenmanipulationen ausführt, anwendbar. Allerdings ist die vorliegende Offenbarung nicht auf Prozessoren oder Maschinen, die 512-Bit-, 256-Bit-, 128-Bit-, 64-Bit-, 32-Bit- oder 16-Bit-Datenoperationen ausführen, beschränkt, und kann sie auf irgendeinen Prozessor und auf irgendeine Maschine angewendet werden, in der eine Manipulation oder ein Management von Daten ausgeführt wird. Außerdem bietet die folgende Beschreibung Beispiele und zeigen die beigefügten Zeichnungen verschiedene Beispiele zu Veranschaulichungszwecken. Allerdings sind diese Beispiele nicht in einem beschränkenden Sinn zu verstehen, da sie lediglich dazu bestimmt sind, Beispiele für Ausführungsformen der vorliegenden Offenbarung zu geben, anstatt eine erschöpfende Liste aller möglicher Implementierungen von Ausführungsformen der vorliegenden Offenbarung zu geben.
  • Während in Internet-, Text- und Multimediaanwendungen mehr Computersysteme verwendet werden, ist im Zeitverlauf eine zusätzliche Prozessorunterstützung eingeführt worden. In einer Ausführungsform kann ein Befehlssatz einer oder mehreren Computerarchitekturen einschließlich Datentypen, Befehlen, einer Registerarchitektur, Adressierungsbetriebsarten, einer Speicherarchitektur, einer Unterbrechungs- und Ausnahmebehandlung und einer externen Eingabe und Ausgabe (E/A) zugeordnet sein.
  • In einer Ausführungsform kann die Befehlssatzarchitektur (ISA) durch eine oder mehrere Mikroarchitekturen implementiert werden, die Prozessorlogik und Prozessorschaltungen enthalten, die zum Implementieren eines oder mehrerer Befehlssätze verwendet werden. Dementsprechend können Prozessoren mit unterschiedlichen Mikroarchitekturen wenigstens einen Teil eines gemeinsamen Befehlssatzes gemeinsam nutzen. Zum Beispiel implementieren Intel®-Pentium-4-Prozessoren, Intel®-CoreTM-Prozessoren und Prozessoren von Advanced Micro Devices, Inc., aus Sunnyvale, CA, nahezu gleiche Versionen des x86-Befehlssatzes (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt worden sind), weisen aber unterschiedliche interne Entwürfe auf. Ähnlich können Prozessoren, die durch andere Prozessorentwicklungsunternehmen wie etwa die ARM Holdings, Ltd., MIPS oder ihre Lizenznehmer oder Anwender entworfen worden sind, wenigstens einen Teil eines gemeinsamen Befehlssatzes gemeinsam nutzen, können sie aber unterschiedliche Prozessorentwürfe enthalten. Zum Beispiel kann dieselbe Registerarchitektur der ISA unter Verwendung neuer oder gut bekannter Techniken einschließlich dedizierter physikalischer Register, eines oder mehrerer dynamisch zugewiesener physikalischer Register unter Verwendung eines Registerumbenennungsmechanismus (z. B. unter Verwendung einer Registeraliastabelle (RAT), eines Umordnungspuffers (ROB) und einer Stilllegungsregisterdatei) in unterschiedlichen Mikroarchitekturen auf unterschiedliche Arten implementiert werden. In einer Ausführungsform können Register eines oder mehrere Register, eine oder mehrere Registerarchitekturen, eine oder mehrere Registerdateien oder eine oder mehrere andere Registersätze, die durch einen Softwareprogrammierer adressierbar oder nicht adressierbar sein können, enthalten.
  • In einer Ausführungsform kann ein Befehl ein oder mehrere Befehlsformate enthalten. In einer Ausführungsform kann ein Befehlsformat verschiedene Felder (die Anzahl von Bits, die Orte von Bits usw.) angeben, um unter anderem die auszuführende Operation und den bzw. die Operanden, an denen diese Operation ausgeführt werden soll, zu spezifizieren. Einige Befehlsformate können ferner durch Befehlsschablonen (oder Teilformate) gebrochen definiert sein. Zum Beispiel können die Befehlsschablonen eines gegebenen Befehlsformats so definiert sein, dass sie unterschiedliche Teilsätze der Felder des Befehlsformats aufweisen, und/oder so definiert sein, dass sie ein gegebenes Feld, das unterschiedlich interpretiert wird, aufweisen. In einer Ausführungsform wird ein Befehl unter Verwendung eines Befehlsformats (und, falls definiert, in einer gegebenen der Befehlsschablonen des Befehlsformats) ausgedrückt und spezifiziert er die Operation und die Operanden, die diese Operation bearbeitet, oder gibt diese an.
  • 1 stellt eine Verarbeitungsvorrichtung 100 in Übereinstimmung mit einer Ausführungsform dar. Die Verarbeitungsvorrichtung 100 kann ein SoC sein, das auf einem selben Chipplättchen oder auf einem selben Substrat positioniert ist und eine auf dem SoC hergestellte Zentraleinheit (CPU) repräsentieren kann. Das SoC kann integrierte Chips enthalten, die in einem selben Halbleiterherstellungsprozess effizient hergestellt werden. Die wie in 1 gezeigte Verarbeitungsvorrichtung 100 kann ein erstes Prozessormodul 102, ein zweites Prozessormodul 104 und eine Bus- und/oder Kommunikations-Fabric 106, die die Kommunikationsschnittstelle zwischen Prozessormodulen 102 und 104 und zwischen den Prozessormodulen 102, 104 und anderen Komponenten (nicht gezeigt) in dem SoC oder außerhalb des SoC bereitstellt, enthalten.
  • In einer Ausführungsform kann das Prozessormodul 102 einen oder mehrere Verarbeitungskerne, die in Übereinstimmung mit einem ersten ISA-Typ ausgelegt sind, enthalten und kann das Prozessormodul 104 einen oder mehrere Verarbeitungskerne, die in Übereinstimmung mit einem zweiten ISA-Typ ausgelegt sind, wobei der zweite Typ von dem ersten Typ verschieden ist, enthalten. Die ISA-Typen können unterschiedliche Varianten einer CISC- oder einer RISC-Architektur enthalten. Zum Beispiel können die ISA IA- oder ARM- oder PowerPC-Architekturen sein. In einer Ausführungsform kann das Prozessormodul 102 Verarbeitungskerne enthalten, die in Übereinstimmung mit einer IA ausgelegt sind, die spezifisch zur Unterstützung des Windows OS geeignet sein können, und kann das Prozessormodul 104 Verarbeitungskerne enthalten, die in Übereinstimmung mit ARM ausgelegt sind, die spezifisch zur Unterstützung des Android-OS geeignet sein können. In einer Ausführungsform kann unter Verwendung der Verarbeitungsvorrichtung 100 eine Computervorrichtung aufgebaut sein, die mehr oder zwei Ökosysteme unterstützt. Wenn die Computervorrichtung zu einer Windows-Vorrichtung geschaltet wird oder als eine solche gebootet wird, kann das Prozessormodul 102 aktiv im Vordergrund ablaufen, um die Ausführung von Windows-Anwendungen nativ zu unterstützen, während das Verarbeitungsmodul 104 im Hintergrund ablaufen kann oder im Leerlauf bleiben kann. Alternativ kann das Prozessormodul 104 im Vordergrund ablaufen, um die Ausführungen von Android-Anwendungen nativ zu unterstützen, während das Prozessormodul 102 im Hintergrund ablaufen kann oder im Leerlauf bleiben kann, wenn die Computervorrichtung zu einer Android-Vorrichtung geschaltet wird oder als eine solche gebootet wird. Auf diese Weise wird eine effiziente Hochleistungs-Zwei-Ökosystem-Computervorrichtung erreicht.
  • Der Bus 106 kann mit Prozessormodulen 102, 104 gekoppelt sein, um eine Schnittstelle für die Datenkommunikation und für die Steuersignalisierung bereitzustellen. In der Praxis kann der Bus 106 in Übereinstimmung mit einem bestimmten ISA-Typ ausgelegt sein. Somit können weitere Module zur Übersetzung der Daten und Nachrichten notwendig sein, um Kommunikationskanäle zwischen Prozessormodulen 102, 104, die in Übereinstimmung mit unterschiedlichen ISA-Typen ausgelegt sind, bereitzustellen. 2A stellt eine Verarbeitungsvorrichtung 200 dar, die Schaltungsmodule für Kommunikationen zwischen unterschiedlichen ISA-Kernen in Übereinstimmung mit einer Ausführungsform enthält. Die wie in 2A gezeigte Verarbeitungsvorrichtung 200 kann Prozessormodule 102, 104 und einen Bus und/oder eine Fabric 106 ähnlich der wie in 1 gezeigten Verarbeitungsvorrichtung enthalten. Außerdem kann die Verarbeitungsvorrichtung 200 eine Busbrücke 202 enthalten, die zwischen das Prozessormodul 104 und den Bus 106 gekoppelt ist. Der Bus 106 kann für den ISA-Typ des Prozessormoduls 102 ausgelegt sein und somit nicht zur direkten Kommunikation mit dem Prozessormodul 104 eines anderen ISA-Typs fähig sein. Die zwischen das Prozessormodul 104 und den Bus 106 gekoppelte Busbrücke 202 kann Nachrichten von dem Prozessormodul 104 in ein Format übersetzen, das für den Bus 106 geeignet ist und das von dem Prozessormodul 102 verstanden wird. Umgekehrt kann die Busbrücke 202 Nachrichten von dem Prozessormodul 102 über den Bus 106 in das Format übersetzen, das für das Prozessormodul 104 geeignet ist.
  • In einer Ausführungsform kann das Prozessormodul 102 Kerne vom IA-Typ enthalten und kann der Bus 106 spezifisch zum Behandeln von Nachrichten von IA-Kernen ausgelegt sein. Zum Beispiel kann der Bus 106 ein Systemagent (SA) sein, der Intel®-In-Die-Interconnect-Nachrichten (IDI-Nachrichten) behandeln kann. Das Prozessormodul 104 kann Kerne enthalten, deren Typen von IA verschieden sind. In einer Ausführungsform können die Kerne innerhalb des Prozessormoduls 104 ein ARM-Typ sein und zum Übermitteln von Nachrichten in Übereinstimmung mit dem Advanced-Microcontroller-Bus-Architecture-Protokoll (AMBA-Protokoll) ausgelegt sein. Die Busbrücke 202 kann IDI-Nachrichten von dem Prozessormodul 102 in AMBA-Nachrichten für das Prozessormodul 104 zum Lesen oder umgekehrt von AMBA-Nachrichten von dem Prozessormodul 104 in IDI-Nachrichten für das Prozessormodul 102 zum Lesen umsetzen.
  • In einer alternativen Ausführungsform kann das Prozessormodul 102 Kerne vom ARM-Typ enthalten und kann der Bus 106 spezifisch zum Behandeln von Nachrichten von ARM-Kernen ausgelegt sein. Zum Beispiel kann der Bus 106 ein SA sein, der AMBA-Nachrichten behandeln kann. Das Prozessormodul 104 kann Kerne enthalten, deren Typen von AMBA verschieden sind. In einer Ausführungsform können die Kerne in dem Prozessormodul 104 ein IA-Typ sein und zum Übermitteln von Nachrichten in Übereinstimmung mit IDI-Nachrichten ausgelegt sein. Die Busbrücke 202 kann AMBA-Nachrichten von dem Prozessormodul 102 in IDI-Nachrichten für den Prozessor 104 zum Lesen oder umgekehrt von IDI-Nachrichten von dem Prozessormodul 104 in AMBA-Nachrichten für das Prozessormodul 102 zum Lesen umsetzen.
  • Die heterogenen Kerne der Verarbeitungsvorrichtung 200 können mit Peripherievorrichtungen, die nicht in dem SoC sind, kommunizieren. 2B stellt die Verarbeitungsvorrichtung 200 dar, die Schaltungsmodule für Kommunikationen zwischen Kernen und Peripherievorrichtungen in Übereinstimmung mit einer Ausführungsform enthält. Im Vergleich zu 2A kann die wie in 2B gezeigte Verarbeitungsvorrichtung 200 außerdem einen Umsetzer 204 und eine Peripheriebrücke 206 zum Übermitteln von Nachrichten und Steuersignalen zwischen der Verarbeitungsvorrichtung 200 und Peripherievorrichtungen 208, 210 enthalten. Der Umsetzer 204 kann Teil eines Systemagenten und mit dem Bus 106 gekoppelt sein und die Peripheriebrücke 206 kann zwischen den Umsetzer 204 und die Peripherievorrichtungen 208, 210 geschaltet sein. Die Peripherievorrichtungen 208, 210, die nicht Teil des SoC sein können, werden durch die heterogenen Verarbeitungsmodule 102, 104 zusammen in der Weise gesteuert, dass jede Peripherievorrichtung durch eines der Verarbeitungsmodule adressiert werden kann. Der Umsetzer 204 kann unterschiedliche Typen von Nachrichten und Steuersignalen von den heterogenen Kernen in den Verarbeitungsmodulen 102, 104 in Formate, die die Peripheriebrücke 206 erkennen kann, so dass sie die Nachrichten und Steuersignale an die geeignete Peripherievorrichtung übergeben kann, umsetzen.
  • In einer Ausführungsform kann der Umsetzer 204 interne Anweisungen/Unterbrechungen zu und von Kernen einschließlich Kernen zu Peripherievorrichtungen, die mit einem anderen SOC, das heterogene Kerne enthält, gekoppelt sein können, behandeln. Diesbezüglich kann der Umsetzer interne Anweisungen/Unterbrechungen, die für einen ersten Kerntyp ausgelegt sind, an einen zweiten Typ anpassen. Zum Beispiel kann der Umsetzer 204 einen Intel®-On-Chip-System-Fabric-Bus (IOSF-Bus) und Peripherievorrichtungen, die für IA-Kerne ausgelegt sind, zum Kommunizieren mit ARM-Kernen anpassen. In einer anderen Ausführungsform kann der Umsetzer 204 die direkten Datenverbindungen zwischen Kernen und Peripherievorrichtungen managen. Zum Beispiel kann der Umsetzer 204 Steuercodes in speicheradressierte E/A-Register (MMIO-Register) von Peripherievorrichtungen schreiben, so dass Peripherievorrichtungen, die ausschließlich für einen ersten ISA-Typ ausgelegt sind, mit dem zweiten Kerntyp kommunizieren (Nachrichten und Unterbrechungen senden) können, und dass Peripherievorrichtungen, die ausschließlich für einen zweiten ISA-Typ ausgelegt sind, mit dem ersten Typ von Kernen kommunizieren können.
  • Obgleich wie in 2A und 2B gezeigte Ausführungsformen hinsichtlich einer Verarbeitungsvorrichtung 200 diskutiert sind, die zwei Typen von ISA-Kernen enthält, können Aspekte der vorliegenden Offenbarung auf mehrere Typen von ISA-Kernen erweitert werden. 2C stellt die Verarbeitungsvorrichtung dar, die Prozessormodule mehrerer ISA in Übereinstimmung mit einer Ausführungsform enthält. Im Vergleich zu 2B kann die wie in 2C gezeigte Verarbeitungsvorrichtung 200 zusätzlich ein drittes Prozessormodul 212 und eine zusätzliche Busbrücke 214 enthalten. Das Prozessormodul 212 kann Kerne enthalten, die in Übereinstimmung mit einem dritten ISA-Typ ausgelegt sind, der sich von der ISA des Prozessormoduls 102 oder 104 unterscheidet. Die zwischen das Prozessormodul 212 und den Bus 106 gekoppelte Busbrücke 214 (die in Übereinstimmung mit der ISA des Prozessormoduls 102 ausgelegt sein kann) kann Nachrichten zwischen dem Prozessormodul 212 und dem Bus 106 übersetzen. Somit kann die Verarbeitungsvorrichtung 200 heterogene Kerne von mehr als zwei Typen enthalten und in einer Computervorrichtung entworfen sein, die mehr als zwei Ökosysteme unterstützen kann.
  • 3A stellt ein ausführliches Prinzipschaltbild einer Verarbeitungsvorrichtung 300 in Übereinstimmung mit einer Ausführungsform dar. Die wie in 3A gezeigte Verarbeitungsvorrichtung kann ein erstes Prozessormodul 302, ein zweites Prozessormodul 304 und einen IA-Systemagenten (IA-SA) 306, der ferner einen Bus/eine Fabric (nicht gezeigt) und einen SA-Umsetzer 308 enthalten kann, enthalten. Ferner kann das Prozessormodul 302 einen oder mehrere eines ersten Typs von ISA-Kernen oder ISA-1-Kernen (wie etwa IA-Kernen) 310, 312 und einen Cache 314 der 2. Ebene, der zum Speichern von Daten für die IA-Kerne 310, 312 verwendet werden kann, enthalten. Ferner kann das Prozessormodul 304 einen oder mehrere Kerne eines zweiten Typs oder ISA-2-Kerne (wie etwa ARM-Kerne) 316, 318, einen Cache 320 der 2. Ebene, eine Busbrücke 322, in der der Cache 320 der 2. Ebene zum Speichern von Daten für ARM-Kerne 316, 318 und für die Busbrücke 322 verwendet werden kann, enthalten. Die Busbrücke 322 kann übertragene Nachrichten zwischen den ARM-Kernen 316, 318 und dem SA 306 umsetzen.
  • Außerdem kann die Verarbeitungsvorrichtung 300 einen Leistungscontroller 324, der mit den Prozessormodulen 302, 304 und mit dem SA 306 gekoppelt ist, um die den Prozessormodulen 302, 304 zugeführten Leistungen über Leistungsmanagementverbindungen (PM-Verbindungen) zu managen, enthalten. Außerdem kann die Verarbeitungsvorrichtung 300 einen Speichercontroller 326 enthalten, der unter Verwendung eines Speicherschnittstellenprotokolls (MI-Protokolls) mit dem SA 306 gekoppelt sein kann. Der Speichercontroller 326 kann das Daten-Lesen/Schreiben zu einer Speichervorrichtung 336 (wie etwa einem DDR-Speicher) steuern.
  • Außerdem kann der SA 306 über den Umsetzer 308 mit Peripherievorrichtungen 328334 gekoppelt sein. Peripherievorrichtungen können zu einer von drei Kategorien einschließlich IA-exklusiv, ARM-exklusiv und nicht exklusiv gehören. Die IA-exklusiven Peripherievorrichtungen arbeiten nur, wenn die Verarbeitungsvorrichtung 300 aktiv das Prozessormodul 302 im Vordergrund ablaufen lässt. Die ARM-exklusiven Vorrichtungen arbeiten nur, wenn die Verarbeitungsvorrichtung 300 das Prozessormodul 304 aktiv im Vordergrund ablaufen lässt. Die nicht exklusiven Peripherievorrichtungen können entweder arbeiten, wenn das Prozessormodul 302 im Vordergrund ist, oder wenn das Prozessormodul 304 im Vordergrund ist. Die Kommunikation zwischen dem Umsetzer 308 und den Peripherievorrichtungen 328334 kann über Buskommunikationen zwischen dem Intel-On-System-Fabric-Protokoll (IOSF-Protokoll) oder einem Fabric-Schnittstellen-Protokoll (FI-Protokoll) erreicht werden.
  • Im Betrieb können IA-Kerne 310, 312 Nachrichten in Übereinstimmung mit dem IDI-Protokoll an den SA 306 senden. Die Busbrücke 322 kann die IDI-Nachricht von den IA-Kernen 310, 312 in ein Format umsetzen, das von ARM-Kernen 316, 318 gelesen werden kann. Umgekehrt kann die Busbrücke 322 AMBA-Nachrichten von den ARM-Kernen 316, 318 in IDI-Nachrichten umsetzen und die IDI-Nachricht an den SA 306 senden. Die Nachrichten können durch einen Kern initiierte Speicher- und E/A-Operationen und durch einen Agenten initiierte Abhörungen und Unterbrechungen und eine Leistungsmanagement-Schnittstelle enthalten.
  • Der SA 306 kann den IOSF-Bus darin steuern, der mit anderen Modulen in dem SoC gekoppelt sein kann. Außerdem kann der SA 306 interne Anweisungen und/oder Unterbrechungen zu und von den heterogenen Kernen behandeln. Zur Anpassung des IOSF-Busses innerhalb des SA 306 und anderer Vorrichtungen an die ARM-Kerne 316, 318 kann der SA-Umsetzer 306 IOSF-Busprotokollnachrichten und interne Anweisungen/Unterbrechungen für die ARM-Kerne 316, 318 umsetzen.
  • In einer Ausführungsform kann die Verarbeitungsvorrichtung 300 Zwischen-Kern-Kommunikationstunnel bereitstellen, die IA-Kerne 310, 312 und ARM-Kerne 316, 318 direkt mit einem gemeinsam genutzten Speicherabschnitt (SM-Abschnitt) des Speichers 336 verknüpfen. Auf diese Weise können heterogene Kerne mit hoher Geschwindigkeit auf den Speicher zugreifen.
  • Der Leistungscontroller 324 kann über die FI-Protokollnachricht über den SA 306 mit den Prozessormodulen 302, 304 kommunizieren. Zum Beispiel kann der Leistungscontroller eine durch die Vordergrundkerne erzeugte Anforderung zum Schalten des aktuell ablaufenden Betriebssystems (OS) empfangen. In Ansprechen auf diese Anforderung kann der Leistungscontroller über die PM-Verbindung einen Befehl zum Verringern der Leistungsversorgung zu den aktiven Vordergrundkernen, um sie in einen Leerlaufzustand zu bringen, und gleichzeitig zum Erhöhen der Leistungsversorgung zu den Hintergrundkernen, um sie zu aktiven, ausgeben. Zum Beispiel kann der Leistungscontroller 324, falls die Verarbeitungsvorrichtung 300 die IA-Kerne 310, 312 aktiv ablaufen lässt und die ARM-Kerne 316, 318 im Leerlauf lässt, in Ansprechen auf eine Anforderung zum Schalten die Leistungsversorgung zu dem Prozessormodul 302 verringern und die Leistungsversorgung zu dem Prozessormodul 304 erhöhen, so dass die IA-Kerne 310, 312 in den Leerlauf versetzt werden können und die ARM-Kerne 316, 318 aktiv werden können.
  • Die wie in 3A gezeigte Verarbeitungsvorrichtung 300 ist um einen IA-Systemagenten 306 aufgebaut. Alternativ können Verarbeitungsvorrichtungen um andere Typen von Systemagenten aufgebaut sein. 3B stellt eine Verarbeitungsvorrichtung 340, die um einen ARM-Systemagenten aufgebaut ist, in Übereinstimmung mit einer Ausführungsform dar. Die wie in 3B gezeigte Verarbeitungsvorrichtung 340 kann einen ARM-Systemagenten (ARM-SA) 346 enthalten, der in Übereinstimmung mit ARM-Kommunikationsprotokollen wie etwa AMBA ausgelegt ist. Außerdem kann die Verarbeitungsvorrichtung 340 Prozessormodule 342, 344, einen Leistungscontroller 346 und einen Speichercontroller 366 enthalten. Ferner kann das Prozessormodul 342 einen oder mehr des zweiten Typs von ISA-Kernen oder ISA-2-Kernen (wie etwa ARM-Kernen) 350, 352 und einen Cache 354 der 2. Ebene enthalten und ferner kann das Prozessormodul 344 einen oder mehrere des ersten Typs von ISA-Kernen oder ISA-1-Kernen (wie etwa IA-Kernen) 356, 358, des Caches 360 der 2. Ebene und der Busbrücke 362 enthalten. Ferner kann der SA 346 einen ARM-Bus (nicht gezeigt) und einen Umsetzer 348 enthalten. Da der SA 346 dafür ausgelegt ist, mit ARM-Kernen zusammenzuarbeiten, kann das Prozessormodul 342 in Übereinstimmung mit dem AMBA-Protokoll mit dem ARM-SA 346 kommunizieren. Im Gegensatz dazu kann das Prozessormodul 344, das IA-Kerne 356, 358 enthält, über die Busbrücke 362, die IA-Kern-Nachrichten in das AMBA-Format oder umgekehrt umsetzen kann, mit dem SA 346 kommunizieren, so dass die Prozessormodule 342 über den SA 346 Nachrichten mit dem Prozessormodul 344 austauschen können. Ähnlich kann der Umsetzer 348 Anweisungen und/oder Unterbrechungen von IA-Kernen 356, 358 zu Peripherievorrichtungen 328334, die als IA-Vorrichtungen ausgelegt sind, oder umgekehrt umsetzen. In der Praxis kann die Verarbeitungsvorrichtung 340 in einer ähnlichen Weise wie die wie in 3A gezeigte Verarbeitungsvorrichtung 300 arbeiten.
  • Eine Computervorrichtung, die mit zwei oder mehr OS konfiguriert ist, kann in einer Betriebsart mit gemeinsamem Hardwarezugriff, in einer Betriebsart mit gemeinsamem Softwarezugriff oder in einer Betriebsart mit exklusivem Zugriff arbeiten. Gemäß der Betriebsart mit gemeinsamem Hardwarezugriff kann die Computervorrichtung mehr als ein OS (wie etwa sowohl Windows als auch Android) gleichzeitig und aktiv betreiben. Um die Betriebsart mit gemeinsamem Hardwarezugriff zu erreichen, kann jedes der Verarbeitungsmodule (wie etwa 302, 304, wie sie in 3A gezeigt sind, oder 342, 344, wie sie in 3B gezeigt sind) mit ihren jeweiligen Treibern ausgestattet sein. Der in den SA 308 (oder 348) eingebettete Umsetzer 308 (oder 348), der den Nachrichtenaustausch und die Ereignisabsendung zwischen Kernen und Peripherievorrichtungen steuert, kann Unterbrechungen zu jedem der OS, die gleichzeitig ablaufen, multiplexen.
  • Gemäß der Betriebsart mit gemeinsamem Softwarezugriff kann die Computervorrichtung durch Virtualisierung gleichzeitig und aktiv mehr als ein OS betreiben. Es können virtuelle Treiber konstruiert sein, um Nachrichten zwischen OS zwischen heterogenen Kernen weiterzuleiten. Obgleich sowohl die Betriebsart mit gemeinsamem Hardwarezugriff als auch die mit gemeinsamem Softwarezugriff mehr als ein OS gleichzeitig ablaufen lässt, kann in Bezug auf Peripherievorrichtungen eines der OS der Master sein und können die restlichen OS die Slaves sein. Das Master-OS kann primär Peripherievorrichtungen managen, exklusiv auf Peripherievorrichtungen zugreifen oder die Peripherievorrichtungen mit Slave-OS gemeinsam nutzen.
  • Gemäß der Exklusivzugriffsbetriebsart kann die Computervorrichtung nur ein OS im Vordergrund ablaufen lassen und den Rest der OS in dem Hintergrund oder in Leerlaufzuständen anordnen. Das Vordergrund-OS kann in dem Prozessormodul ablaufen, das Kerne enthält, die nativ für das Vordergrund-OS sind. Zum Beispiel können Windows und seine Anwendungen, wenn sie im Vordergrund sind, in IA-Kernen ablaufen und können Android und seine Anwendungen, wenn sie im Vordergrund sind, in ARM-Kernen ablaufen. In Ansprechen auf eine Anforderung zum Schalten können das Vordergrund-OS und Hintergrund-OS geschaltet werden.
  • 4 ist ein Blockschaltplan eines Verfahrens zum Schalten von OS in einer Zwei-OS-Computervorrichtung in Übereinstimmung mit einer Ausführungsform. Das Verfahren 400 kann durch Verarbeitungslogik ausgeführt werden, die Hardware (z. B. Schaltungsanordnung, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (wie etwa Befehle, die in einer Verarbeitungsvorrichtung, in einem Universalcomputersystem oder in einer dedizierten Maschine ablaufen), Firmware oder eine Kombination davon enthalten kann. In einer Ausführungsform kann das Verfahren 400 teilweise durch Verarbeitungslogik eines der oben anhand der 1, 2A2C, 3A3B beschriebenen Prozessormodule 102, 104, 212, 302, 304, 342, 344 ausgeführt werden.
  • Zur Einfachheit der Erläuterung ist das Verfahren 400 als eine Reihe von Tätigkeiten gezeigt und beschrieben. Allerdings können die Tätigkeiten in Übereinstimmung mit dieser Offenbarung in verschiedenen Reihenfolgen und/oder gleichzeitig und mit anderen Tätigkeiten, die hier nicht dargestellt und beschrieben sind, stattfinden. Darüber hinaus brauchen nicht alle dargestellten Tätigkeiten ausgeführt zu werden, um das Verfahren 400 in Übereinstimmung mit dem offenbarten Gegenstand zu implementieren. Außerdem wird der Fachmann auf dem Gebiet verstehen und würdigen, dass das Verfahren 400 alternativ über ein Zustandsdiagramm oder Ereignisse als eine Reihe untereinander zusammenhängender Zustände dargestellt werden könnte.
  • Anhand von 4 kann eine Verarbeitungslogik eine Anforderung zum Schalten von OS empfangen. Die Anforderung kann in Ansprechen auf einen von einem Anwender der Computervorrichtung ausgegebenen Befehl oder in Ansprechen auf ein durch eine Logik in der Computervorrichtung ausgelöstes Ereignis oder in Ansprechen auf einen Plan (wie etwa zu einem bestimmten Zeitpunkt an jedem Tag oder in jedem Monat) erzeugt werden. In Ansprechen auf die Anforderung kann die Verarbeitungslogik, die das aktuell ausgeführte OS ausführt, bei 402 einen ersten Satz von Vorrichtungen bestimmen, die exklusiv dafür ausgelegt sind, gemäß dem aktuell ausgeführten OS zu arbeiten und Anweisungen zum Anhalten des ersten Satzes von Vorrichtungen ausgeben. In einer Ausführungsform kann die Bestimmung durch Anpassen von Identifizierungen des Satzes von Vorrichtungen mit einer Tabelle, die Kategorien der Vorrichtungen spezifiziert, erzielt werden. Bei 404 kann die Verarbeitungslogik, die das aktuell ablaufende OS ausführt, ferner durch Abfragen der Tabelle einen zweiten Satz von Vorrichtungen bestimmen, die nicht entweder für das aktuell ablaufende Vordergrund-OS oder für das Hintergrund-OS exklusiv sind, und den zweiten Satz von Vorrichtungen über den Umsetzer in dem Systemagenten in der Weise rekonfigurieren, dass der zweite Satz von Vorrichtungen in einem Zustand ist, der geeignet ist, gemäß dem Hintergrund-OS abzulaufen. Die Rekonfigurierung kann das Neuschreiben von MMIO-Registern dieser Vorrichtungen enthalten. Bei 406 kann die Verarbeitungslogik, die das aktuell ablaufende Vordergrund-OS ausführt, durch Abfragen der Tabelle einen dritten Satz von Vorrichtungen bestimmen, die aktuell im Leerlauf sind, da sie exklusiv für den Betrieb gemäß dem Hintergrund-OS sind, und über den Umsetzer den dritten Satz von Vorrichtungen freigeben/wiederaufnehmen. Bei 408 kann der Prozessor, der das aktuell ablaufende OS ausführt, das Vordergrund-OS in den Hintergrund aktivieren und gleichzeitig das zuvor abgelaufene Vordergrund-OS deaktivieren. Wie in Ausführungsformen der vorliegenden Offenbarung gezeigt ist, kann das Schalten von OS ebenfalls ein Schalten zwischen heterogenen Kernen in unterschiedlichen Prozessormodulen verursachen.
  • 5A ist ein Blockschaltplan, der eine Mikroarchitektur für einen Prozessor 500 darstellt, der eine Verarbeitungsvorrichtung implementiert, die heterogene Kerne in Übereinstimmung mit einer Ausführungsform der Offenbarung enthält. Genauer zeigt der Prozessor 500 einen In-der-Reihe-Architektur-Kern und eine Registerumbenennungslogik-außer-der-Reihe-Ausgabe/Ausführungs-Logik, die in einem Prozessor in Übereinstimmung mit wenigstens einer Ausführungsform der Offenbarung enthalten sein sollen.
  • Der Prozessor 500 enthält eine Eingangsteileinheit 530, die mit einer Ausführungsmaschineneinheit 550 gekoppelt ist, wobei beide mit einer Speichereinheit 570 gekoppelt sind. Der Prozessor 500 kann einen Kern zum Rechnen mit reduziertem Befehlssatz (RISC-Kern), einen Kern zum Rechnen mit komplexem Befehlssatz (CISC-Kern), einen Kern. mit sehr langem Befehlswort (VLIW-Kern) oder einen Hybridkern oder einen alternativen Kerntyp enthalten. Als eine nochmals andere Option kann der Prozessor 500 einen Spezialkern wie etwa z. B. einen Netz- oder Kommunikationskern, eine Kompressionsmaschine, einen Graphikkern oder dergleichen enthalten. In einer Ausführungsform kann der Prozessor 500 ein Mehrkernprozessor oder Teil eines Mehrprozessorsystems sein.
  • Die Eingangsteileinheit 530 enthält eine Verzweigungsvorhersageeinheit 532, die mit einer Befehls-Cache-Einheit 534 gekoppelt ist, die mit einem Befehlsübersetzungspuffer (Befehls-TLB) 536 gekoppelt ist, der mit einer Befehlsholeinheit 538 gekoppelt ist, die mit einer Decodierungseinheit 540 gekoppelt ist. Die Decodierungseinheit 540 (auch als ein Decodierer bekannt) kann Befehle decodieren und als eine Ausgabe eine oder mehrere Mikrooperationen, Mikrocodeeintrittspunkte, Mikrobefehle, andere Befehle oder andere Steuersignale erzeugen, die aus den ursprünglichen Befehlen decodiert sind oder die diese auf andere Weise widerspiegeln oder von ihnen abgeleitet sind. Der Decodierer 540 kann unter Verwendung vieler unterschiedlicher Mechanismen implementiert werden. Beispiele geeigneter Mechanismen enthalten, sind aber nicht beschränkt auf, Nachschlagetabellen, Hardwareimplementierungen, programmierbare Logikanordnungen (PLAs), Mikrocode-Nur-Lese-Speicher (ROMs) usw. Die Befehls-Cache-Einheit 534 ist ferner mit der Speichereinheit 570 gekoppelt. Die Decodierungseinheit 540 ist mit einer Umbenennungs/Zuweisungs-Einheit 552 in der Ausführungsmaschineneinheit 550 gekoppelt.
  • Die Ausführungsmaschineneinheit 550 enthält die Umbenennungs/Zuweisungs-Einheit 552, die mit einer Stilllegungseinheit 554 und mit einem Satz einer oder mehrerer Planereinheiten 556 gekoppelt ist. Die eine oder die mehreren Planereinheiten 556 repräsentieren irgendeine Anzahl unterschiedlicher Planer einschließlich Reservierungsstationen (RS), eines zentralen Befehlsfensters usw. Die eine oder die mehreren Planereinheiten 556 sind mit der einen oder mit den mehreren physikalischen Registerdateieinheiten 558 gekoppelt. Jede der einen oder mehreren Registerdateieinheiten 558 repräsentiert eine oder mehrere physikalische Registerdateien, von denen unterschiedliche einen oder mehrere unterschiedliche Datentypen wie etwa skalar ganzzahlig, skalar Gleitkomma, gepackt ganzzahlig, gepackt Gleitkomma, Vektor ganzzahlig, Vektor Gleitkomma usw., Status (z. B. ein Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. speichern. Die eine oder die mehreren physikalischen Registerdateieinheiten 558 sind durch die Stilllegungseinheit 554 überlappt, um unterschiedliche Arten darzustellen, in denen die Registerumbenennung und die Außer-der-Reihe-Ausführung implementiert werden können (z. B. unter Verwendung eines oder mehrerer Umordnungspuffer und Stilllegungsregisterdateien, einer oder mehrerer Zukunftsdateien, eines oder mehrerer Historienpuffer und einer oder mehrerer Stilllegungsregisterdateien; unter Verwendung von Registerabbildern und eines Pools von Registern; usw.).
  • In einer Implementierung kann der Prozessor 500 derselbe wie die in Bezug auf die 1, 2A2C, 3A und 3B beschriebenen Prozessoren 100, 200, 300 und 340 sein.
  • Allgemein sind die Architekturregister von außerhalb des Prozessors oder aus Sicht eines Programmierers sichtbar. Die Register sind nicht auf irgendeinen bekannten bestimmten Schaltungstyp beschränkt. Es sind viele unterschiedliche Registertypen geeignet, solange sie Daten wie hier beschrieben speichern und bereitstellen können. Beispiele geeigneter Register enthalten, sind aber nicht beschränkt auf, dedizierte physikalische Register, dynamisch zugewiesene physikalische Register, die die Registerumbenennung verwenden, Kombinationen dedizierter und dynamisch zugewiesener physikalischer Register usw. Die Stilllegungseinheit 554 und die eine oder die mehreren physikalischen Registerdateieinheiten 558 sind mit einem oder mit mehreren Ausführungsclustern 560 gekoppelt. Der eine oder die mehreren Ausführungscluster 560 enthalten einen Satz einer oder mehrerer Ausführungseinheiten 562 und einen Satz einer oder mehrerer Speicherzugriffseinheiten 564. Die Ausführungseinheiten 562 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) ausführen und unterschiedliche Datentypen (z. B. skalar Gleitkomma, gepackt ganzzahlig, gepackt Gleitkomma, Vektor ganzzahlig, Vektor Gleitkomma) bearbeiten.
  • Obgleich einige Ausführungen eine Anzahl von Ausführungseinheiten enthalten können, die für spezifische Funktionen oder Sätze von Funktionen dediziert sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten, die alle Funktionen ausführen, enthalten. Die eine oder die mehreren Planereinheiten 556, die eine oder die mehreren physikalischen Registerdateieinheiten 558 und der eine oder die mehreren Ausführungscluster 560 sind als möglicherweise mehrfach gezeigt, da bestimmte Ausführungsformen für bestimmte Daten-/Operationstypen getrennte Pipelines erzeugen (z. B. eine Skalar-ganzzahlig-Pipeline, eine Skalar-Gleitkomma/Gepackt-ganzzahlig/Gepackt-Gleitkomma/Vektor-ganzzahlig/Vektor-Gleitkomma-Pipeline und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre eigene Planereinheit, ihre eigene eine oder ihre eigenen mehreren physikalischen Registerdateieinheiten und/oder ihren eigenen Ausführungscluster enthalten – und wobei im Fall einer getrennten Speicherzugriffspipeline bestimmte Ausführungsformen implementiert sind, in denen nur der Ausführungscluster dieser Pipeline die eine oder die mehreren Speicherzugriffseinheiten 564 aufweist). Außerdem ist festzustellen, dass eine oder mehrere dieser Pipelines Außer-der-Reihe-Ausgabe/Ausführungs-Einrichtungen und der Rest In-der-Reihe-Einrichtungen sein können, wenn getrennte Pipelines verwendet sind.
  • Der Satz der Speicherzugriffseinheiten 564 ist mit der Speichereinheit 570 gekoppelt, die einen Datenvorausleser 580, eine Daten-TLB-Einheit 572, eine Daten-Cache-Einheit (DCU) 574 und eine Cache-Einheit 576 der 2. Ebene (L2-Cacheeinheit) enthalten kann, um einige Beispiele zu nennen. In einigen Ausführungsformen ist die DCU 574 ebenfalls als ein Daten-Cache der ersten Ebene (L1-Cache) bekannt. Die DCU 574 kann mehrere ausstehende Cache-Fehltreffer behandeln und eingehende Speicherungen und Ladungen weiter bedienen. Außerdem unterstützt sie die Aufrechterhaltung der Cache-Kohärenz. Die Daten-TLB-Einheit 572 ist ein Cache, der durch Abbilden virtueller und physikalischer Speicheradressen zum Verbessern der Geschwindigkeit der virtuellen Adressenübersetzung verwendet wird. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 564 eine Ladeeinheit, eine Adressenspeichereinheit, eine Datenspeichereinheit enthalten, von denen jede mit der Daten-TLB-Einheit 572 in der Speichereinheit 570 gekoppelt ist. Die L2-Cache-Einheit 576 kann mit einer oder mit mehreren anderen Cache-Ebenen und schließlich mit einem Hauptspeicher gekoppelt sein.
  • In einer Ausführungsform liest der Datenvorausleser 580 spekulativ Daten in die DCU 574/liest er diese spekulativ voraus, indem er automatisch vorhersagt, welche Daten ein Programm davor steht zu verwenden. Das Vorauslesen kann sich auf das Übertragen von Daten, die an einem Speicherplatz einer Speicherhierarchie (z. B. Caches niedrigerer Ebene oder Speicher) gespeichert sind, an einen Speicherplatz höherer Ebene, der näher zu dem Prozessor ist (z. B. eine niedrigere Zugriffslatenzzeit liefert), bevor die Daten tatsächlich von dem Prozessor angefordert werden, beziehen. Genauer kann sich das Vorauslesen auf das frühe Auslesen von Daten aus einem der Caches niedrigerer Ebene/aus dem Speicher zu einem Daten-Cache und/oder Vorauslesepuffer, bevor der Prozessor einen Bedarf angibt, dass die spezifischen Daten zurückgegeben werden, beziehen.
  • Der Prozessor 500 kann einen oder mehrere Befehlssätze (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt worden sind); den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, CA; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen wie etwa NEON) der ARM Holdings aus Sunnyvale, CA) unterstützen.
  • Es ist festzustellen, dass der Kern Multithreading (die Ausführung zweier oder mehrerer paralleler Sätze von Operationen oder Threads) unterstützen kann und dies auf eine Vielzahl von Arten einschließlich Zeitschlitz-Multithreading, gleichzeitigem Multithreading (bei dem ein einzelner physikalischer Kern für jeden der Threads, den der physikalische Kern gleichzeitig durch Multithreading ausführt, einen logischen Kern bereitstellt) oder einer Kombination davon (z. B. Zeitschlitz-Holen und Zeitschlitz-Decodieren und gleichzeitiges Multithreading danach wie etwa in der Intel-Hyperthreading-Technologie) tun kann.
  • Obgleich die Registerumbenennung im Kontext der Außer-der-Reihe-Ausführung beschrieben worden ist, ist festzustellen, dass die Registerumbenennung in einer In-der-Reihe-Architektur verwendet werden kann. Obgleich die dargestellte Ausführungsform des Prozessors außerdem getrennte Befehls- und Daten-Cache-Einheiten und eine gemeinsam genutzte L2-Cache-Einheit enthält, können alternative Ausführungsformen einen einzelnen internen Cache sowohl für Befehle als auch für Daten wie etwa z. B. einen internen Cache der 1. Ebene (L1-Cache) oder mehrere internen Cache-Ebenen aufweisen. In einigen Ausführungsformen kann das System eine Kombination eines internen Cache und eines externen Cache, der gegenüber dem Kern und/oder gegenüber dem Prozessor extern ist, enthalten. Alternativ kann der gesamte Cache gegenüber dem Kern und/oder dem Prozessor extern sein.
  • 5B ist ein Blockschaltplan, der eine In-der-Reihe-Pipeline und eine Registerumbenennungsstufen-außer-der-Reihe-Ausgabe/Ausführungs-Pipeline, die durch die Verarbeitungsvorrichtung 500 aus 5A in Übereinstimmung mit einigen Ausführungsformen der Offenbarung implementiert wird, darstellt. Die Kästen in durchgezogenen Linien in 5B stellen eine In-der-Reihe-Pipeline dar, während die Strichlinienkästen eine Registerumbenennungs-außer-der-Reihe-Ausgabe/Ausführungs-Pipeline darstellen. In 5B enthält eine Prozessor-Pipeline 500 eine Abrufstufe 502, eine Längendecodierungsstufe 504, eine Decodierungsstufe 506, eine Zuweisungsstufe 508, eine Umbenennungsstufe 510, eine Planungsstufe (auch als eine Absende- oder Ausgabestufe bekannt) 512, eine Registerlese-/Speicherlesestufe 514, eine Ausführungsstufe 516, eine Rückschreib-/Speicherschreibstufe 518, eine Ausnahmebehandlungsstufe 522 und eine Einspeicherstufe 524. In einigen Ausführungsformen kann die Reihenfolge der Stufen 502524 anders als dargestellt sein und ist sie nicht auf die spezifische in 5B gezeigte Reihenfolge beschränkt.
  • 6 stellt einen Blockschaltplan der Mikroarchitektur für einen Prozessor 600, der Hybridkerne enthält, in Übereinstimmung mit einer Ausführungsform der Offenbarung dar. In einigen Ausführungsformen kann ein Befehl in Übereinstimmung mit einer Ausführungsform zum Bearbeiten von Datenelementen mit Byte-, Wort-, Doppelwort-, Quadwortgröße usw. sowie von Datentypen wie etwa des einfach- und doppeltgenauen Ganzzahldatentyps und des Gleitkommadatentyps implementiert werden. In einer Ausführungsform ist der In-der-Reihe-Eingangsteil 601 derjenige Teil des Prozessors 600, der auszuführende Befehle abruft und sie vorbereitet, damit sie später in der Prozessorpipeline verwendet werden.
  • Der Eingangsteil 601 kann mehrere Einheiten enthalten. In einer Ausführungsform liest der Befehlsvorausleser 626 Befehle aus dem Speicher voraus und speist sie in einen Befehlsdecodierer 628 ein, der sie wiederum decodiert oder interpretiert. Zum Beispiel decodiert der Decodierer in einer Ausführungsform einen empfangenen Befehl in eine oder in mehrere Operationen, die ”Mikrobefehle” oder ”Mikrooperationen” (auch Mikro-op oder uops genannt) genannt werden, die die Maschine ausführen kann. In anderen Ausführungsformen parst der Decodierer den Befehl in einen Opcode und in entsprechende Daten- und Steuerfelder, die von der Mikroarchitektur zum Ausführen von Operationen in Übereinstimmung mit einer Ausführungsform verwendet werden. In einer Ausführungsform nimmt der Trace-Cache 630 decodierte uops und setzt sie zu geordneten Programmsequenzen oder Traces in der uop-Warteschlange 634 zur Ausführung zusammen. Wenn der Trace-Cache 630 einen komplexen Befehl feststellt, stellt der Mikrocode-ROM 632 die uops bereit, die zum Abschließen der Operation notwendig sind.
  • Einige Befehle werden in einen einzelnen Mikro-op umgesetzt, während andere mehrere Mikro-ops benötigen, um die vollständige Operation abzuschließen.
  • In einer Ausführungsform greift der Decodierer 628 auf den Mikrocode-ROM 632 zu, um den Befehl auszuführen, falls mehr als vier Mikro-ops notwendig sind, um einen Befehl abzuschließen. Für eine Ausführungsform kann ein Befehl in eine kleine Anzahl von Mikro-ops decodiert werden, um ihn bei dem Befehlsdecodierer 628 zu verarbeiten. In einer anderen Ausführungsform kann ein Befehl in dem Mikrocode-ROM 632 gespeichert sein, falls eine Anzahl von Mikro-ops zum Vollenden der Operation notwendig sind. Der Trace-Cache 630 nimmt auf eine programmierbare Logikanordnung (PLA) eines Eintrittspunkts Bezug, um einen richtigen Mikrobefehlszeiger zum Lesen der Mikrocodesequenzen zu bestimmen, um einen oder mehrere Befehle in Übereinstimmung mit einer Ausführungsform von dem Mikrocode-ROM 632 abzuschließen. Nachdem der Mikrocode-ROM 632 die Ablaufsteuerungs-Mikro-ops für einen Befehl abgeschlossen hat, nimmt der Eingangsteil 601 der Maschine das Abrufen von Mikro-ops von dem Trace-Cache 630 wieder auf.
  • Die Außer-der-Reihe-Ausführungsmaschine 603 ist der Ort, wo die Befehle für die Ausführung vorbereitet werden. Die Außer-der-Reihe-Ausführungslogik weist eine Anzahl von Puffern auf, um den Ablauf von Befehlen auszugleichen und umzustellen, um die Leistungsfähigkeit zu optimieren, während sie die Pipeline entlanggehen und zur Ausführung geplant werden. Die Zuweisungslogik weist die Maschinenpuffer und Betriebsmittel zu, die jeder uop zum Ausführen benötigt. Die Registerumbenennungslogik benennt Logikregister in Einträge in einer Registerdatei um. Außerdem weist die Zuweisungseinrichtung für jeden uop in einer der zwei uop-Warteschlangen, einer für Speicheroperationen und einer für Nicht-Speicher-Operationen, einen Eintrag vor den Anweisungsplanern zu: Speicherplaner, schneller Planer 602, langsamer/allgemeiner Gleitkommaplaner 604 und einfacher Gleitkommaplaner 606. Die uop-Planer 602, 604, 606 bestimmen auf der Grundlage der Bereitschaft ihrer abhängigen Eingangsregisteroperandenquellen und der Verfügbarkeit der Ausführungsbetriebsmittel, die die uops zum Abschließen ihrer Operation benötigen, wann ein uop zur Ausführung bereit ist. Der schnelle Planer 602 einer Ausführungsform kann in jeder Hälfte des Haupttaktzyklus planen, während die anderen Planer nur einmal pro Hauptprozessorzyklus planen können. Die Planer entscheiden für die Absendeports, uops für die Ausführung zu planen.
  • Zwischen den Planern 602, 604, 606 und den Ausführungseinheiten 612, 614, 616, 618, 620, 622, 624 in dem Ausführungsblock 611 sitzen Registerdateien 608, 610. Es gibt eine getrennte Registerdatei 608, 610 für Ganzzahl- bzw. Gleitkommaoperationen. Jede Registerdatei 608, 610 einer Ausführungsform enthält außerdem ein Umgehungsnetz, das gerade fertiggestellte Ergebnisse, die noch nicht in die Registerdatei geschrieben worden sind, umgehen oder zu neuen unabhängigen uops weiterleiten kann. Die Ganzzahlregisterdatei 608 und die Gleitkommaregisterdatei 610 können ebenfalls Daten miteinander kommunizieren. Für eine Ausführungsform ist die Ganzzahlregisterdatei 608 in zwei getrennte Registerdateien, eine Registerdatei für die 32 niederwertigen Datenbits und eine zweite Registerdatei für die 32 höherwertigen Datenbits, geteilt. Da Gleitkommabefehle üblicherweise Operanden mit einer Breite von 64 bis 128 Bit aufweisen, weist die Gleitkommaregisterdatei 610 einer Ausführungsform 128 Bit breite Einträge auf.
  • Der Ausführungsblock 611 enthält die Ausführungseinheiten 612, 614, 616, 618, 620, 622, 624, wo die Befehle tatsächlich ausgeführt werden. Dieser Abschnitt enthält die Registerdateien 608, 610, die die Ganzzahl- und Gleitkomma-Datenoperandenwerte, die die Mikrobefehle ausführen müssen, speichern. Der Prozessor 600 einer Ausführungsform umfasst eine Anzahl von Ausführungseinheiten: eine Adressenerzeugungseinheit (AGU) 612, eine AGU 614, eine schnelle ALU 616, eine schnelle ALU 618, eine langsame ALU 620, eine Gleitkomma-ALU 622, eine Gleitkommaverschiebeeinheit 624. Für eine Ausführungsform führen die Gleitkommaausführungsblöcke 622, 624 Gleitkomma-, MMX-, SIMD- und SSE- oder andere Operationen aus. Die Gleitkomma-ALU 622 einer Ausführungsform enthält einen 64-Bit-mal-64-Bit-Gleitkommadividierer, um Division, Quadratwurzel und Rest-Mikro-ops auszuführen. Für Ausführungsformen der vorliegenden Offenbarung können Befehle, die einen Gleitkommawert umfassen, mit der Gleitkommahardware behandelt werden.
  • In einer Ausführungsform gehen die ALU-Operationen zu den schnellen ALU-Ausführungseinheiten 616, 618. Die schnellen ALUs 616, 618 einer Ausführungsform können schnelle Operationen mit einer effektiven Latenzzeit von einem halben Taktzyklus ausführen. Für eine Ausführungsform gehen die meisten komplexen Ganzzahloperationen zu der langsamen ALU 620, da die langsame ALU 620 Ganzzahlausführungshardware für Operationen vom Typ mit langer Latenzzeit wie etwa einen Multiplizierer, Verschiebungen, Merkerlogik und Verzweigungsverarbeitung enthält. Durch die AGUs 612, 614 werden Speicher-Lade/Speicher-Operationen ausgeführt. Für eine Ausführungsform werden die Ganzzahl-ALUs 616, 618, 620 im Kontext der Ausführung von Ganzzahloperationen an 64-Bit-Datenoperanden beschrieben. In alternativen Ausführungsformen können die ALUs 616, 618, 620 zur Unterstützung einer Vielzahl von Datenbits einschließlich 16, 32, 128, 256 usw. implementiert werden. Ähnlich können die Gleitkommaeinheiten 622, 624 zur Unterstützung eines Bereichs von Operanden mit Bits verschiedener Breiten implementiert werden. Für eine Ausführungsform können die Gleitkommaeinheiten 622, 624 128 Bit breite gepackte Datenoperanden zusammen mit SIMD- und Multimediabefehlen bearbeiten.
  • In einer Ausführungsform senden die uops-Planer 602, 604, 606 abhängige Operationen aus, bevor die Ausführung der Stammlast abgeschlossen ist. Da uops im Prozessor 600 spekulativ geplant und ausgeführt werden, enthält der Prozessor 600 außerdem eine Logik zum Behandeln von Speicherfehltreffern. Falls ein Datenladen in dem Daten-Cache einen Fehltreffer erzielt, kann es abhängige Operationen im Flug in der Pipeline geben, die den Planer mit vorübergehend falschen Daten zurückgelassen haben. Ein Wiederholungsmechanismus führt die Befehle, die falsche Daten verwenden, nach und führt sie erneut aus. Es brauchen nur die abhängigen Operationen wiederholt zu werden und die unabhängigen werden abschließen gelassen. Außerdem sind die Planer und der Wiederholungsmechanismus einer Ausführungsform eines Prozessors so ausgelegt, dass sie Befehlssequenzen für Textzeichenfolge-Vergleichsoperationen abfangen.
  • Außerdem enthält der Prozessor 600 eine Logik zum Implementieren der Speicheradressenvorhersage für die Speicherdisambiguierung in Übereinstimmung mit Ausführungsformen der Offenbarung. In einer Ausführungsform kann der Ausführungsblock 611 des Prozessors 600 einen Speicheradressenprädiktor (nicht gezeigt) zur Implementierung der Speicheradressenvorhersage für die Speicherdisambiguierung enthalten.
  • Der Begriff ”Register” kann sich auf die integrierten Prozessorablageplätze beziehen, die als Teil von Anweisungen zum Identifizieren von Operanden verwendet werden. Mit anderen Worten, Register können jene sein, die von außerhalb des Prozessors (aus Sicht eines Programmierers) verwendbar sind. Allerdings sollen die Register einer Ausführungsform nicht dahingehend beschränkt sein, dass sie einen bestimmten Schaltungstyp bedeuten. Vielmehr kann ein Register einer Ausführungsform Daten speichern und bereitstellen und die hier beschriebenen Funktionen ausführen. Die hier beschriebenen Register können durch eine Schaltungsanordnung innerhalb eines Prozessors unter Verwendung einer Anzahl unterschiedlicher Techniken wie etwa dedizierter physikalischer Register, dynamisch zugewiesener physikalischer Register unter Verwendung der Registerumbenennung, Kombinationen dedizierter und dynamisch zugewiesener physikalischer Register usw. implementiert werden. In einer Ausführungsform speichern Ganzzahlregister Zweiunddreißig-Bit-Ganzzahldaten. Eine Registerdatei einer Ausführungsform enthält außerdem acht Multimedia-SIMD-Register für gepackte Daten.
  • Für die folgenden Diskussionen sind Register als Datenregister, die zum Halten gepackter Daten ausgelegt sind, wie etwa 64-Bit-breite MMXTM-Register (in einigen Fällen auch 'mm'-Register genannt) in Mikroprozessoren, die mit der MMX-Technologie von der Intel Corporation aus Santa Clara, Kalifornien, ausgestattet sind, zu verstehen. Diese MMX-Register, die sowohl in Ganzzahl- als auch in Gleitkommaform verfügbar sind, können mit gepackten Datenelementen arbeiten, die SIMD- und SSE-Befehle begleiten. Ähnlich können 128 Bit breite XMM-Register, die sich auf die SSE2-, SSE3-, SSE4-Technologie (allgemein als ”SSEx”-Technologie) oder auf eine darüberhinausgehende Technologie beziehen, zum Halten solcher gepackten Datenoperanden verwendet werden. In einer Ausführungsform brauchen die Register beim Speichern gepackter Daten und von Ganzzahldaten nicht zwischen den zwei Datentypen zu unterscheiden. In einer Ausführungsform sind Ganzzahl und Gleitkomma entweder in derselben Registerdatei oder in unterschiedlichen Registerdateien enthalten. Darüber hinaus können Gleitkomma- und Ganzzahldaten in einer Ausführungsform in unterschiedlichen Registern oder in denselben Registern gespeichert werden.
  • Nun in 7 ist ein Blockschaltplan gezeigt, der ein System 700 darstellt, in dem eine Ausführungsform der Offenbarung verwendet werden kann. Wie in 7 gezeigt ist, ist das Mehrprozessorsystem 700 ein Punkt-zu-Punkt-Verdrahtungssystem und enthält es einen ersten Prozessor 770 und einen zweiten Prozessor 780, die über eine Punkt-zu-Punkt-Verdrahtung 750 gekoppelt sind. Obgleich es nur mit zwei Prozessoren 770, 780 gezeigt ist, ist festzustellen, dass der Schutzumfang von Ausführungsformen der Offenbarung darauf nicht beschränkt ist. In anderen Ausführungsformen können in einem gegebenen Prozessor einer oder mehrere zusätzliche Prozessoren vorhanden sein. In einer Ausführungsform kann das Mehrprozessorsystem 700 wie hier beschriebene Hybridkerne implementieren.
  • Die Prozessoren 770 und 780 sind in der Weise gezeigt, dass sie integrierte Speichercontrollereinheiten 772 bzw. 782 enthalten. Außerdem enthält der Prozessor 770 als Teil seiner Buscontrollereinheiten Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 776 und 778; ähnlich enthält der zweite Prozessor 780 P-P-Schnittstellen 786 und 788. Die Prozessoren 770, 780 können unter Verwendung von P-P-Schnittstellenschaltungen 778, 788 Informationen über eine Punkt-zu-Punkt-Schnittstelle (P-P-Schnittstelle) 750 austauschen. Wie in 7 gezeigt ist, koppeln die IMCs 772 und 782 die Prozessoren mit jeweiligen Speichern, d. h. mit einem Speicher 732 und mit einem Speicher 734, die Abschnitte des Hauptspeichers sein können, der an die jeweiligen Prozessoren lokal angeschlossen ist.
  • Die Prozessoren 770, 780 können über einzelne P-P-Schnittstellen 752, 754 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 776, 794, 786, 798 Informationen mit einem Chipsatz 790 austauschen. Der Chipsatz 790 kann außerdem über eine Hochleistungsgraphikschnittstelle 739 Informationen mit einer Hochleistungsgraphikschaltung 738 austauschen.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann in jedem Prozessor oder außerhalb beider Prozessoren enthalten sein, aber dennoch über eine P-P-Verdrahtung mit den Prozessoren verbunden sein, so dass lokale Cache-Informationen eines oder beider Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, falls ein Prozessor in einer leistungsarmen Betriebsart angeordnet wird.
  • Der Chipsatz 790 kann über eine Schnittstelle 796 mit einem ersten Bus 716 gekoppelt sein. In einer Ausführungsform kann der erste Bus 716 ein Peripheral-Component-Interconnect-Bus (PCI-Bus) oder ein Bus wie etwa ein PCI-Express-Bus oder ein anderer E/A-Verdrahtungsbus der dritten Generation sein, obgleich der Schutzumfang der vorliegenden Offenbarung darauf nicht beschränkt ist.
  • Wie in 7 gezeigt ist, können mit dem ersten Bus 716 zusammen mit einer Busbrücke 718, die den ersten Bus 716 mit einem zweiten Bus 720 koppelt, verschiedene E/A-Vorrichtungen 714 gekoppelt sein. In einer Ausführungsform kann der zweite Bus 720 ein Bus mit niedriger Anschlussstiftzahl (LPC-Bus) sein. Mit dem zweiten Bus 720 können verschiedene Vorrichtungen einschließlich z. B. einer Tastatur und/oder einer Maus 722, Kommunikationsvorrichtungen 727 und einer Ablageeinheit 728 wie etwa eines Plattenlaufwerks oder einer anderen Massenspeichervorrichtung, die in einer Ausführungsform Befehle/Code und Daten 730 enthalten kann, gekoppelt sein. Ferner kann mit dem zweiten Bus 720 eine Audio-E/A 724 gekoppelt sein. Es wird angemerkt, dass andere Architekturen möglich sind. Zum Beispiel kann ein System anstelle der Punkt-zu-Punkt-Architektur aus 7 einen Mehrpunktbus oder eine andere solche Architektur implementieren.
  • Nun anhand von 8 ist ein Blockschaltplan eines Systems 800 gezeigt, in dem eine Ausführungsform der Offenbarung arbeiten kann. Das System 800 kann einen oder mehrere Prozessoren 810, 815 enthalten, die mit einem Graphikspeichercontroller-Hub (GMCH) 820 gekoppelt sind. Das optionale Wesen zusätzlicher Prozessoren 815 ist in 8 mit Strichlinien bezeichnet. In einer Ausführungsform implementieren die Prozessoren 810, 815 Hybridkerne in Übereinstimmung mit Ausführungsformen der Offenbarung.
  • Jeder Prozessor 810, 815 kann eine Version der Schaltung, der integrierten Schaltung, des Prozessors und/oder der integrierten Siliciumschaltung, wie sie oben beschrieben ist, sein. Allerdings wird angemerkt, dass es unwahrscheinlich ist, dass in den Prozessoren 810, 815 integrierte Graphiklogikeinheiten und integrierte Speichersteuereinheiten vorhanden wären. 8 stellt dar, dass der GMCH 820 mit einem Speicher 840 gekoppelt sein kann, der z. B. ein dynamischer Schreib-Lese-Speicher (DRAM) sein kann. Für wenigstens eine Ausführungsform kann dem DRAM ein nichtflüchtiger Cache zugeordnet sein.
  • Der GMCH 820 kann ein Chipsatz oder ein Teil eines Chipsatzes sein. Der GMCH 820 kann mit einem oder mit mehreren Prozessoren 810, 815 kommunizieren und die Wechselwirkung zwischen dem einen und den mehrere Prozessoren 810, 815 und dem Speicher 840 steuern. Außerdem kann der GMCH 820 als eine beschleunigte Busschnittstelle zwischen dem einen oder den mehreren Prozessoren 810, 815 und anderen Elementen des Systems 800 wirken. Für wenigstens eine Ausführungsform kommuniziert der GMCH 820 über einen Mehrpunktbus wie etwa einen Frontside-Bus (FSB) 895 mit dem einen oder mit den mehreren Prozessoren 810, 815.
  • Darüber hinaus ist der GMCH 820 mit einer Anzeige 845 (wie etwa einem Flachbildschirm oder einer Berührungsbildschirmanzeige) gekoppelt. Der GMCH 820 kann einen integrierten Graphikbeschleuniger enthalten. Ferner ist der GMCH 820 mit einem Eingabe/Ausgabe-Controller-Hub (E/A-Controller-Hub) (ICH) 850 gekoppelt, der zum Koppeln verschiedener Peripherievorrichtungen mit dem System 800 verwendet werden kann. In der Ausführungsform aus 8 ist z. B. eine externe Graphikvorrichtung 860 gezeigt, die eine diskrete Graphikvorrichtung sein kann, die zusammen mit einer anderen Peripherievorrichtung 870 mit dem ICH 850 gekoppelt ist.
  • Alternativ können in dem System 800 ebenfalls zusätzliche oder andere Prozessoren vorhanden sein. Zum Beispiel können einer oder mehrere zusätzliche Prozessoren 815 einen oder mehrere zusätzliche Prozessoren, die derselben wie der Prozessor 810 sind, einen oder mehrere Prozessoren, die heterogen oder asymmetrisch zu dem Prozessor 810 sind, Beschleuniger (wie etwa z. B. Graphikbeschleuniger oder digitale Signalverarbeitungseinheiten (DSP-Einheiten)), frei programmierbare logische Anordnungen oder irgendeinen anderen Prozessor enthalten. Zwischen dem einen oder den mehreren Prozessoren 810, 815 kann es hinsichtlich eines Spektrums von Gütemetriken einschließlich Architektureigenschaften, Mikroarchitektureigenschaften, thermischer Eigenschaften, Leistungsverbrauchseigenschaften und dergleichen eine Vielzahl von Unterschieden geben. Diese Unterschiede können sich effektiv als Asymmetrie und Heterogenität zwischen den Prozessoren 810, 815 manifestieren. Für wenigstens eine Ausführungsform können die verschiedenen Prozessoren 810, 815 in derselben Chipplättchenbaugruppe liegen.
  • Nun in 9 ist ein Blockschaltplan eines Systems 900 gezeigt, in dem eine Ausführungsform der Offenbarung arbeiten kann. 9 stellt Prozessoren 970, 980 dar. In einer Ausführungsform können die Prozessoren 970, 980 wie oben beschriebene Hybridkerne implementieren. Die Prozessoren 970, 980 können einen integrierten Speicher und eine E/A-Steuerlogik (”CL”) 972 bzw. 982 enthalten und über eine Punkt-zu-Punkt-Verdrahtung 950 zwischen Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 978 bzw. 988 miteinander kommunizieren. Die Prozessoren 970, 980 kommunizieren jeweils über Punkt-zu-Punkt-Verdrahtungen 952 und 954 über die jeweiligen P-P-Schnittstellen 976 bis 994 und 986 bis 998 wie gezeigt mit dem Chipsatz 990. Für wenigstens eine Ausführungsform kann die CL 972, 982 integrierte Speichercontrollereinheiten enthalten. Die CLs 972, 982 können eine E/A-Steuerlogik enthalten. Wie gezeigt ist, sind die mit den CLs 972, 982 und mit den E/A-Vorrichtungen 914 gekoppelten Speicher 932, 934 ebenfalls mit der Steuerlogik 972, 982 gekoppelt. Die Legacy-E/A-Vorrichtungen 915 sind über die Schnittstelle 996 mit dem Chipsatz 990 gekoppelt.
  • Ausführungsformen können in vielen unterschiedliche Systemtypen implementiert werden. 10 ist ein Blockschaltplan eines SoC 1000 in Übereinstimmung mit einer Ausführungsform der vorliegenden Offenbarung. Strichlinienkästen sind optionale Merkmale in fortgeschritteneren SoCs. In 10 sind eine oder mehrere Verdrahtungseinheiten 1012 gekoppelt mit: einem Anwendungsprozessor 1020, der einen Satz eines oder mehrerer Kerne 1002A–N und eine oder mehrere gemeinsam genutzte Speichereinheiten 1006 enthält; einer Systemagenteneinheit 1010; einer oder mehreren Buscontrollereinheiten 1016; einer oder mehreren integrierten Speichercontrollereinheiten 1014; einem Satz oder einem oder mehreren Medienprozessoren 1018, die eine integrierte Graphiklogik 1008, einen Bildprozessor 1024 zum Bereitstellen einer Standbild- und/oder Videokamerafunktionalität, einen Audioprozessor 1026 zum Bereitstellen einer Hardwareaudiobeschleunigung und einen Videoprozessor 1028 zum Bereitstellen einer Videocodierungs-/Videodecodierungsbeschleunigung enthalten können; einer statischen Schreib-Lese-Speichereinheit (SRAM-Einheit) 1030; einer Speicherdirektzugriffseinheit (DMA-Einheit) 1032; und einer Anzeigeeinheit 1040 zum Koppeln mit einer oder mit mehreren externen Anzeigen. In einer Ausführungsform kann ein Speichermodul in der einen oder in den mehreren integrierten Speichercontrollereinheiten 1014 enthalten sein. In einer anderen Ausführungsform kann das Speichermodul in einer oder in mehreren anderen Komponenten des SoC 1000, die zum Zugreifen und/oder zum Steuern eines Speichers verwendet werden können, enthalten sein. Der Anwendungsprozessor 1020 kann einen Speicheradressenprädiktor zum Implementieren von Hybridkernen wie in vorliegenden Ausführungsformen beschrieben enthalten.
  • Die Speicherhierarchie enthält eine oder mehrere Cache-Ebenen innerhalb der Kerne, einen Satz oder eine oder mehrere gemeinsam genutzte Cache-Einheiten 1006 und einen externen Speicher (nicht gezeigt), der mit dem Satz integrierter Speichercontrollereinheiten 1014 gekoppelt ist. Der Satz gemeinsam genutzter Cache-Einheiten 1006 kann einen oder mehrere Caches mittlerer Ebenen wie etwa der 2. Ebene (L2), der 3. Ebene (L3), der 4. Ebene (L4) oder anderer Cache-Ebenen, einen Cache der letzten Ebene (LLC) und/oder Kombinationen davon enthalten.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 1002A–N Multithreading-fähig. Der Systemagent 1010 enthält jene Komponenten, die die Kerne 1002A–N koordinieren und betreiben. Die Systemagenteneinheit 1010 kann z. B. eine Leistungssteuereinheit (PCU) und eine Anzeigeeinheit enthalten. Die PCU kann Logik und Komponenten, die zum Regulieren des Leistungszustands der Kerne 1002A–N und der integrierten Graphiklogik 1008 notwendig sind, sein oder enthalten. Die Anzeigeeinheit dient zum Anzeigen einer oder mehrerer extern angeschlossener Anzeigen.
  • Die Kerne 1002A–N können hinsichtlich der Architektur und/oder des Befehlssatzes homogen oder heterogen sein. Zum Beispiel können einige der Kerne 1002A–N In-der-Reihe-Einrichtungen sein, während andere Außer-der-Reihe-Einrichtungen sind. Als ein weiteres Beispiel können zwei oder mehr der Kerne 1002A–N zur Ausführung desselben Befehlssatzes fähig sein, während andere zur Ausführung nur eines Teilsatzes dieses Befehlssatzes oder eines anderen Befehlssatzes fähig sein können.
  • Der Anwendungsprozessor 1020 kann ein Universalprozessor wie etwa ein CoreTM i3-, i5-, i7-, 2 Duo- und ein Quad-, XeonTM, ItaniumTM-, AtomTM- oder QuarkTM-Prozessor, die von der IntelTM Corporation aus Santa Clara, Kalifornien, verfügbar sind, sein. Alternativ kann der Anwendungsprozessor 1020 von einem anderen Unternehmen wie etwa von der ARM HoldingsTM, Ltd, von MIPSTM usw. sein. Der Anwendungsprozessor 1020 kann ein Spezialprozessor wie etwa z. B. ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Graphikprozessor, ein Coprozessor, ein eingebetteter Prozessor oder dergleichen sein. Der Anwendungsprozessor 1020 kann auf einem oder auf mehreren Chips implementiert sein. Der Anwendungsprozessor 1020 kann Teil eines oder mehrerer Substrate, die irgendeine eine Anzahl von Prozesstechnologien wie etwa z. B. BiCMOS, CMOS oder NMOS verwenden, sein und/oder auf ihnen implementiert sein.
  • 11 ist ein Blockschaltplan einer Ausführungsform eines Ein-Chip-Entwurfs (SoC-Entwurfs) in Übereinstimmung mit der vorliegenden Offenbarung. Als ein spezifisches veranschaulichendes Beispiel ist das SoC 1100 in einem Teilnehmergerät (UE) enthalten. In einer Ausführungsform bezieht sich ein UE auf irgendeine Vorrichtung, die durch einen Endnutzer zum Kommunizieren verwendet werden soll, wie etwa ein Handtelephon, ein Smartphone, ein Tablet, ein ultradünnes Notebook, ein Notebook mit Breitbandadapter oder irgendeine andere ähnliche Kommunikationsvorrichtung. Häufig verbindet sich ein UE mit einer Basisstation oder mit einem Knoten, was potentiell dem Wesen einer Mobilstation (MS) in einem GSM-Netz entspricht.
  • Das SoC 1100 enthält hier 2 Kerne – 1106 und 1107. Die Kerne 1106 und 1107 können zu einer Befehlssatzarchitektur wie etwa der eines Prozessors auf der Grundlage der Intel® Architecture CoreTM-, eines Prozessors der Advanced Micro Devices, Inc, (AMD), eines MIPS-basierten Prozessors, eines ARM-basierten Prozessorentwurfs oder der eines Kunden davon sowie eines ihrer Lizenznehmer oder Anwender konform sein. Die Kerne 1106 und 1107 sind mit der Cache-Steuerung 1108 gekoppelt, die der Busschnittstelleneinheit 1109 und dem L2-Cache 1110 zum Kommunizieren mit anderen Teilen des Systems 1100 zugeordnet ist. Die Verdrahtung 1110 enthält eine chipintegrierte Verdrahtung wie etwa einen IOSF, einen AMBA oder eine andere oben diskutierte Verdrahtung, die potentiell einen oder mehrere Aspekte der beschriebenen Offenbarung implementiert. In einer Ausführungsform können die Kerne 1106, 1107 wie in vorliegenden Ausführungsformen beschriebene Hybridkerne implementieren.
  • Die Verdrahtung 1110 stellt Kommunikationskanäle mit den anderen Komponenten wie etwa einem Teilnehmeridentifizierungsmodul (SIM) 1130 als Schnittstelle mit einer SIM-Karte, einem Boot-ROM 1135 zum Halten von Boot-Code zur Ausführung durch die Kerne 1106 und 1107 zum Initialisieren und Booten des SoC 1100, einem SDRAM-Controller 1140 als Schnittstelle mit einem externen Speicher (z. B. DRAM 1160), einem Flash-Controller 1145 als Schnittstelle mit einem nichtflüchtigen Speicher (z. B. Flash 1165), einer Peripheriesteuerung 1150 (z. B. einer seriellen Peripherieschnittstelle) als Schnittstelle mit Peripheriegeräten, Videocodecs 1120 und einer Videoschnittstelle 1125 zur Anzeige und zum Empfangen einer Eingabe (z. B. einer berührungsempfindlichen Eingabe), einer GPU 1115 zum Ausführen graphikbezogener Berechnungen usw. bereit. Jede dieser Schnittstellen kann Aspekte der Offenbarung, die hier beschrieben sind, enthalten. Außerdem stellt das System 1100 Peripheriegeräte für die Kommunikation wie etwa ein Bluetooth-Modul 1170, ein 3G-Modem 1175, GPS 1180 und WiFi 1185 dar.
  • 12 stellt eine graphische Darstellung einer Maschine in der beispielhaften Form eines Computersystems 1200 dar, in der ein Satz von Befehlen ausgeführt werden kann, um zu veranlassen, dass die Maschine irgendeine oder mehrere der oben diskutierten Methodiken ausführt. In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, in einem Intranet, in einem Extranet oder in dem Internet verbunden (z. B. vernetzt) sein. Die Maschine kann in der Kapazität einer Server- oder einer Client-Vorrichtung in einer Client-Server-Netzumgebung oder als eine Peer-Maschine in einer Peer-to-Peer-Netzumgebung (oder verteilten Netzumgebung) arbeiten. Die Maschine kann ein Personal Computer (PC), ein Tablet-PC, eine Set-Top-Box (STB), ein Personal Digital Assistant (PDA), ein Mobiltelephon, ein Web-Gerät, ein Server, ein Netzrouter, ein Netz-Switch oder eine Netz-Bridge oder irgendeine Maschine, die einen Satz von Befehlen, die Maßnahmen spezifizieren, die durch diese Maschine zu ergreifen sind, (sequentiell oder auf andere Weise) ausführen kann, sein. Obgleich nur eine einzelne Maschine dargestellt ist, soll der Begriff ”Maschine” ferner ebenfalls irgendeine Sammlung von Maschinen, die einen Satz (oder mehrere Sätze) von Befehlen einzeln oder zusammen ausführen, um eine oder mehrere der hier diskutierten Methodiken auszuführen, enthalten.
  • Das Computersystem 1200 enthält eine Verarbeitungsvorrichtung 1202, einen Hauptspeicher 1204 (z. B. einen Nur-Lese-Speicher (ROM), einen Flash-Speicher, einen dynamischen Schreib-Lese-Speicher (DRAM) (wie etwa einen synchronen DRAM (SDRAM) oder einen DRAM (RDRAM) usw.), einen statischen Speicher 1206 (z. B. einen Flash-Speicher, einen statischen Schreib-Lese-Speicher (SRAM) usw.) und eine Datenablagevorrichtung 1218, die über einen Bus 1230 miteinander kommunizieren.
  • Die Verarbeitungsvorrichtung 1202 repräsentiert eine oder mehrere Universalverarbeitungsvorrichtungen wie etwa einen Mikroprozessor, eine Zentraleinheit oder dergleichen. Genauer kann die Verarbeitungsvorrichtung ein Mikroprozessor zum Rechnen mit komplexem Befehlssatz (CISC-Mikroprozessor), ein Mikroprozessor eines Computers mit reduziertem Befehlssatz (RISC-Mikroprozessor), ein Mikroprozessor mit sehr langem Befehlswort (VLIW-Mikroprozessor) oder ein Prozessor, der andere Befehlssätze implementiert, oder ein Prozessor, der eine Kombination von Befehlssätzen implementiert, sein. Außerdem kann die Verarbeitungsvorrichtung 1202 eine oder mehrere Spezialverarbeitungsvorrichtungen wie etwa eine anwendungsspezifische integrierte Schaltung (ASIC), eine frei programmierbare logische Anordnung (FPGA), ein digitaler Signalprozessor (DSP), ein Netzprozessor oder dergleichen sein. In einer Ausführungsform kann die Verarbeitungsvorrichtung 1202 einen oder mehrere Verarbeitungskerne enthalten. Die Verarbeitungsvorrichtung 1202 ist dafür konfiguriert, die Verarbeitungslogik 1226 zum Ausführen der hier diskutierten Operationen und Schritte auszuführen. In einer Ausführungsform ist die Verarbeitungsvorrichtung 1202 dieselbe Prozessorarchitektur 100, die in Bezug auf 1 beschrieben ist, die wie hier beschriebene Hybridkerne mit Ausführungsformen der Offenbarung implementiert.
  • Ferner kann das Computersystem 1200 eine Netzschnittstellenvorrichtung 1208 enthalten, die mit einem Netz 1220 kommunikationstechnisch gekoppelt ist. Außerdem kann das Computersystem 1200 eine Videoanzeigeeinheit 1210 (z. B. eine Flüssigkristallanzeige (LCD) oder eine Katodenstrahlenröhre (CRT)), eine alphanumerische Eingabevorrichtung 1212 (z. B. eine Tastatur), eine Cursorsteuervorrichtung 1214 (z. B. eine Maus) und eine Signalerzeugungsvorrichtung 1216 (z. B. einen Lautsprecher) enthalten. Darüber hinaus kann das Computersystem 1200 eine Graphikverarbeitungseinheit 1222, eine Videoverarbeitungseinheit 1228 und eine Audioverarbeitungseinheit 1232 enthalten.
  • Die Datenablagevorrichtung 1218 kann ein durch eine Maschine zugreifbares Ablagemedium 1224, auf dem Software 1226 gespeichert ist, die eine oder mehrere der hier beschriebenen Methodiken von Funktionen implementiert, wie etwa die wie oben beschriebene Speicheradressenvorhersage zur Speicherdisambiguierung implementiert, enthalten. Außerdem kann die Software 1226 vollständig oder wenigstens teilweise als Befehle 1226 in dem Hauptspeicher 1204 liegen und/oder als Verarbeitungslogik 1226 während ihrer Ausführung durch das Computersystem 1200 in der Verarbeitungsvorrichtung 1202 liegen; der Hauptspeicher 1204 und die Verarbeitungsvorrichtung 1202 bilden ebenfalls durch eine Maschine zugreifbare Ablagemedien.
  • Das maschinenlesbare Ablagemedium 1224 kann außerdem zum Speichern von Befehlen 1226, die eine Speicheradressenvorhersage für Hybridkerne wie etwa die in Übereinstimmung mit Ausführungsformen der Offenbarung beschriebene implementieren können, verwendet werden. Obgleich das durch eine Maschine zugreifbare Ablagemedium 1128 in einer beispielhaften Ausführungsform als einzelnes Medium gezeigt ist, soll der Begriff ”durch eine Maschine zugreifbares Ablagemedium” ein einzelnes Medium oder mehrere Medien (z. B. eine zentralisierte oder verteilte Datenbank und/oder zugeordnete Caches und Server), die den einen oder die mehreren Sätze von Befehlen speichern, enthalten. Außerdem soll der Begriff ”durch eine Maschine zugreifbares Ablagemedium” irgendein Medium, das einen Satz von Befehlen zur Ausführung durch die Maschine speichern, codieren oder ausführen kann, und das veranlassen kann, dass die Maschine irgendeine oder mehrere der Methodiken der vorliegenden Offenbarung ausführt, enthalten. Dementsprechend soll der Begriff ”durch eine Maschine zugreifbares Ablagemedium” Festkörperspeicher und optische und magnetische Medien enthalten, darauf aber nicht beschränkt sein.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen. Das Beispiel 1 ist eine Verarbeitungsvorrichtung, die ein erstes Prozessormodul, das einen ersten Kern umfasst, der in Übereinstimmung mit einer ersten Befehlssatzarchitektur (ISA) ausgelegt ist, und ein zweites Prozessormodul, das einen zweiten Kern umfasst, der in Übereinstimmung mit einer zweiten ISA ausgelegt ist, enthalten kann, wobei das zweite Prozessormodul auf einem selben Chipplättchen wie das erste Prozessormodul hergestellt ist.
  • In Beispiel 2 kann der Gegenstand nach Beispiel 1 optional einen Systemagenten (SA) enthalten, der einen Bus umfasst, der mit dem ersten und mit dem zweiten Prozessormodul kommunikationstechnisch gekoppelt ist.
  • In Beispiel 3 kann der Gegenstand nach Beispiel 2 optional enthalten, dass der Bus dafür ausgelegt ist, Nachrichten zu und von dem ersten Kern nativ zu übertragen.
  • In Beispiel 4 kann der Gegenstand nach einem der Beispiele 2 und 3 optional vorsehen, dass das zweite Prozessormodul eine Busbrücke zum Umsetzen von Nachrichten, die zwischen dem zweiten Kern und dem Bus übertragen werden, umfasst.
  • In Beispiel 5 kann der Gegenstand nach einem der Beispiele 2 und 3 optional vorsehen, dass der SA ferner einen Umsetzer umfasst, über den der SA mit mehreren Peripherievorrichtungen gekoppelt ist.
  • In Beispiel 6 kann der Gegenstand nach einem der Beispiele 1–3 optional vorsehen, dass die Verarbeitungsvorrichtung eine Ein-Chip-Vorrichtung (SoC-Vorrichtung) ist, die auf demselben Chipplättchen hergestellt ist.
  • In Beispiel 7 kann der Gegenstand nach einem der Beispiele 1–3 optional vorsehen, dass die Verarbeitungsvorrichtung Teil einer Computervorrichtung ist, die mit mehr als einem Betriebssystem portiert ist.
  • In Beispiel 8 kann der Gegenstand nach einem der Beispiele 1–3 optional vorsehen, dass ein erstes Betriebssystem, wenn es aktiviert ist, auf dem ersten Prozessormodul abläuft und ein zweites Betriebssystem, wenn es aktiviert ist, auf dem zweiten Prozessormodul abläuft.
  • In Beispiel 9 kann der Gegenstand nach Beispiel 8 optional vorsehen, dass die Verarbeitungsvorrichtung eine Zentraleinheit (CPU) und Teil einer Computervorrichtung, die mit zwei Betriebssystemen portiert ist, ist.
  • In Beispiel 10 kann der Gegenstand nach einem der Beispiele 1–3 optional ferner ein drittes Prozessormodul enthalten, das einen dritten Kern umfasst, der in Übereinstimmung mit einem dritten Befehlssatz (ISA), der von dem ersten und von dem zweiten ISA verschieden ist, ausgelegt ist.
  • In Beispiel 11 kann der Gegenstand nach einem der Beispiele 1–3 optional vorsehen, dass das dritte Prozessormodul eine dritte Busbrücke zum Umsetzen von Nachrichten, die zwischen dem ersten, dem zweiten und dem dritten Kern übertragen werden, umfasst.
  • Das Beispiel 12 ist ein Prozessor, der einen ersten Kern, der in Übereinstimmung mit einer ersten Befehlssatzarchitektur (ISA) ausgelegt ist, und einen zweiten Kern, der in Übereinstimmung mit einer zweiten ISA ausgelegt ist, enthalten kann, wobei der Prozessor eine Ein-Chip-Vorrichtung (SoC-Vorrichtung) ist, die auf einem einzelnen Chipplättchen hergestellt ist.
  • In Beispiel 13 kann der Gegenstand nach Beispiel 13 optional ferner einen Systemagenten (SA) enthalten, der einen Bus umfasst, der mit dem ersten und mit dem zweiten Kern kommunikationstechnisch gekoppelt ist, wobei der Bus dafür ausgelegt ist, Nachrichten zu und von dem ersten Kern nativ zu übertragen.
  • In Beispiel 14 kann der Gegenstand nach einem der Beispiele 12 und 13 optional ferner eine Busbrücke enthalten, die zwischen den zweiten Kern und den Bus gekoppelt ist, wobei die Busbrücke zwischen dem zweiten Kern und dem Bus übertragene Nachrichten umsetzt.
  • In Beispiel 15 kann der Gegenstand nach einem der Beispiele 12–14 optional ferner vorsehen, dass der SA ferner einen Umsetzer umfasst, über den der SA mit mehreren Peripherievorrichtungen gekoppelt ist.
  • In Beispiel 16 kann der Gegenstand nach einem der Beispiele 12–14 optional ferner vorsehen, dass ein erstes Betriebssystem, wenn es aktiviert ist, auf dem ersten Prozessormodul abläuft und ein zweites Betriebssystem, wenn es aktiviert ist, auf dem zweiten Prozessormodul abläuft.
  • In Beispiel 17 kann der Gegenstand nach Beispiel 17 optional vorsehen, dass die Verarbeitungsvorrichtung eine Zentraleinheit (CPU) und Teil einer Computervorrichtung, die mit zwei Betriebssystemen portiert ist, ist.
  • In Beispiel 18 kann der Gegenstand nach einem der Beispiele 12–14 ferner einen dritten Kern enthalten, der in Übereinstimmung mit einem dritten Befehlssatz (ISA) ausgelegt ist, der von dem ersten und von dem zweiten ISA verschieden ist.
  • In Beispiel 19 kann der Gegenstand nach einem der Beispiele 12–14 optional vorsehen, dass der dritte Kern eine dritte Busbrücke zum Umsetzen von Nachrichten, die zwischen dem ersten, dem zweiten und dem dritten Kern übertragen werden, umfasst.
  • Das Beispiel 20 ist ein Verfahren, das in Ansprechen auf eine Anforderung, von einem ersten Betriebssystem (OS), das im Vordergrund in einer Zentraleinheit (CPU) ausgeführt wird, zu einem zweiten OS, das im Hintergrund in der CPU ausgeführt wird, zu schalten, das Bestimmen eines ersten Satzes von Vorrichtungen, die exklusiv dem ersten OS zugeordnet sind, durch einen ersten Kern der CPU, wobei der erste Kern in Übereinstimmung mit einem ersten Befehlssatzarchitekturtyp (ISA-Typ) ausgelegt ist, eines ersten Satzes von Vorrichtungen, die exklusiv dem ersten OS zugeordnet sind, das Anhalten des ersten Satzes von Vorrichtungen, das Bestimmen eines zweiten Satzes von Vorrichtungen, die nicht exklusiv für das erste und für das zweite OS sind, das Rekonfigurieren des zweiten Satzes von Vorrichtungen für das zweite OS und das Schalten des zweiten OS in den Vordergrund und des ersten OS in den Hintergrund, wobei das Schalten das Aktivieren eines zweiten Kerns der CPU, der in Übereinstimmung mit einem zweiten ISA-Typ ausgelegt ist, und den Leerlauf des ersten Kerns umfasst, enthalten kann.
  • In Beispiel 21 kann der Gegenstand nach Beispiel 21 optional das Bestimmen eines dritten Satzes von Vorrichtungen, die exklusiv für das zweite OS sind, und das Freigeben des dritten Satzes von Vorrichtungen enthalten.
  • Das Beispiel 22 ist ein nicht vorübergehendes computerlesbares Medium, das mehrere Befehle enthält, die in Ansprechen darauf, dass sie in einer Zentraleinheit (CPU) ausgeführt werden, veranlassen, dass die CPU ein Verfahren ausführt, wobei das Verfahren in Ansprechen auf eine Anforderung, von einem ersten Betriebssystem (OS), das im Vordergrund in einer Zentraleinheit (CPU) ausgeführt wird, zu einem zweiten OS, das im Hintergrund in der CPU ausgeführt wird, zu schalten, das Bestimmen eines ersten Satzes von Vorrichtungen, die exklusiv dem ersten OS zugeordnet sind, durch einen ersten Kern der CPU, wobei der erste Kern in Übereinstimmung mit einem ersten Befehlssatzarchitekturtyp (ISA-Typ) ausgelegt ist, eines ersten Satzes von Vorrichtungen, die exklusiv dem ersten OS zugeordnet sind, das Anhalten des ersten Satzes von Vorrichtungen, das Bestimmen eines zweiten Satzes von Vorrichtungen, die nicht exklusiv für das erste und für das zweite OS sind, das Rekonfigurieren des zweiten Satzes von Vorrichtungen für das zweite OS und das Schalten des zweiten OS in den Vordergrund und des ersten OS in den Hintergrund, wobei das Schalten das Aktivieren eines zweiten Kerns der CPU, der in Übereinstimmung mit einem zweiten ISA-Typ ausgelegt ist, und den Leerlauf des ersten Kerns umfasst, enthält.
  • In Beispiel 23 kann der Gegenstand nach Beispiel 22 optional ferner das Bestimmen eines dritten Satzes von Vorrichtungen, die exklusiv für das zweite OS sind, und das Freigeben des dritten Satzes von Vorrichtungen enthalten.
  • Das Beispiel 24 ist eine Vorrichtung, die in Ansprechen auf eine Anforderung, von einem ersten Betriebssystem (OS), das in einer Zentraleinheit (CPU) im Vordergrund ausgeführt wird, zu einem zweiten OS, das im Hintergrund in der CPU ausgeführt wird, zu schalten, ein Mittel zum Bestimmen eines ersten Satzes von Vorrichtungen, die exklusiv dem ersten OS zugeordnet sind, wobei der erste Kern in Übereinstimmung mit einem ersten Befehlssatzarchitekturtyp (ISA-Typ) ausgelegt ist, ein Mittel zum Anhalten des ersten Satzes von Vorrichtungen, ein Mittel zum Bestimmen eines zweiten Satzes von Vorrichtungen, die nicht exklusiv für das erste und für das zweite OS sind, ein Mittel zum Konfigurieren des zweiten Satzes von Vorrichtungen für das zweite OS und ein Mittel zum Schalten des zweiten OS in den Vordergrund und des ersten OS in den Hintergrund, wobei das Schalten das Aktivieren eines zweiten Kerns der CPU, der in Übereinstimmung mit einem zweiten ISA-Typ ausgelegt ist, und den Leerlauf des ersten Kerns umfasst, enthalten kann.
  • In Beispiel 25 kann der Gegenstand nach Beispiel 24 optional ferner ein Mittel zum Bestimmen eines dritten Satzes von Vorrichtungen, die exklusiv für das zweite OS sind, und ein Mittel zum Freigeben des dritten Satzes von Vorrichtungen enthalten.
  • Obgleich die Offenbarung in Bezug auf eine beschränkte Anzahl von Ausführungsformen beschrieben worden ist, wird der Fachmann auf dem Gebiet zahlreiche Änderungen und Veränderungen davon würdigen. Die beigefügten Ansprüche sollen alle solchen Änderungen und Veränderungen, die im wahren Erfindungsgedanken und Schutzumfang der Offenbarung liegen, umfassen.
  • Ein Entwurf kann von der Erzeugung bis zur Simulation bis zur Fertigung verschiedene Phasen durchlaufen. Daten, die einen Entwurf repräsentieren, können den Entwurf auf eine Anzahl von Arten repräsentieren. Zunächst kann die Hardware, wie es in Simulationen nützlich ist, unter Verwendung einer Hardwarebeschreibungssprache oder einer anderen Funktionsbeschreibungssprache repräsentiert werden. Außerdem kann ein Schaltungsebenenmodell mit Logik- und/oder Transistorgattern in einigen Phasen des Entwurfsprozesses hergestellt werden. Darüber hinaus erreichen die meisten Entwürfe in einer bestimmten Phase eine Ebene von Daten, die die physikalische Anordnung verschiedener Vorrichtungen in dem Hardwaremodell repräsentieren. Falls herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardwaremodell repräsentieren, die Daten sein, die die Anwesenheit oder Abwesenheit verschiedener Merkmale in unterschiedlichen Maskenschichten für Masken spezifizieren, die zur Herstellung der integrierten Schaltung verwendet werden. In irgendeiner Darstellung des Entwurfs können die Daten in irgendeiner Form eines maschinenlesbaren Mediums gespeichert sein. Das maschinenlesbare Medium zum Speichern von Informationen, die über optische oder elektrische Welle übertragen werden, die moduliert oder auf andere Weise erzeugt wird, um solche Informationen zu übertragen, kann ein Speicher oder eine magnetische oder optische Ablage wie etwa eine Platte sein. Wenn eine elektrische Trägerwelle übertragen wird, die den Code oder Entwurf angibt oder übermittelt, wird in dem Umfang, in dem das Kopieren, das Puffern oder das Neuübertragen des elektrischen Signals ausgeführt wird, eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzanbieter einen Artikel wie etwa in einer Trägerwelle codierte Informationen, die Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpern, wenigstens vorübergehend auf einem konkreten maschinenlesbaren Medium speichern.
  • Ein Modul, wie es hier verwendet ist, bezieht sich auf irgendeine Kombination aus Hardware, Software und/oder Firmware. Als ein Beispiel enthält ein Modul Hardware wie etwa einen Mikrocontroller, dem ein nicht vorübergehendes Medium zum Speichern von Code zugeordnet ist, der dafür ausgelegt ist, durch den Mikrocontroller ausgeführt zu werden. Somit bezieht sich die Bezugnahme auf ein Modul in einer Ausführungsform auf die Hardware, die spezifisch dafür konfiguriert ist, den in einem nicht vorübergehenden Medium zu haltenden Code zu erkennen und/oder auszuführen. Darüber hinaus bezieht sich die Verwendung eines Moduls in einer anderen Ausführungsform auf das nicht vorübergehende Medium, das den Code enthält, der spezifisch dafür ausgelegt ist, durch den Mikrocontroller ausgeführt zu werden, um vorgegebene Operationen auszuführen. Wie gefolgert werden kann, kann sich der Begriff Modul (in diesem Beispiel) in einer abermals anderen Ausführungsform auf die Kombination des Mikrocontrollers und des nicht vorübergehenden Mediums beziehen. Häufig variieren Modulgrenzen, die als getrennt dargestellt sind, und überlappen sie. Zum Beispiel können ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon gemeinsam nutzen, während sie potentiell einige unabhängige Hardware, Software oder Firmware behalten. In einer Ausführungsform enthält die Verwendung des Begriffs Logik Hardware wie etwa Transistoren, Register oder andere Hardware wie etwa programmierbare Logikvorrichtungen.
  • Die Verwendung der Formulierung 'konfiguriert zum' in einer Ausführungsform bezieht sich auf das Anordnen, Zusammenstellen, Herstellen, zum Verkauf anbieten, Importieren und/oder Entwerfen einer Vorrichtung, einer Hardware, einer Logik oder eines Elements zum Ausführen einer vorgesehenen oder bestimmten Aufgabe. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, die bzw. das nicht arbeitet, weiterhin 'konfiguriert zum' Ausführen einer bestimmten Aufgabe, falls sie bzw. es zum Ausführen der bestimmten Aufgabe ausgelegt, gekoppelt und/oder verbunden ist. Als ein rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 bereitstellen. Dagegen enthält ein Logikgatter, das 'konfiguriert zum' Bereitstellen eines Freigabesignals für einen Takt ist, nicht jedes potentielle Logikgatter, das eine 1 oder eine 0 bereitstellen kann. Stattdessen ist das Logikgatter in einer Weise gekoppelt, dass während des Betriebs die Ausgabe von 1 oder 0 zum Freigeben des Takts dient. Es wird noch einmal angemerkt, dass die Verwendung des Begriffs 'konfiguriert zum' nicht die Operation erfordert, sondern sich stattdessen auf den latenten Zustand der Vorrichtung, der Hardware und/oder des Elements konzentriert, wo die Vorrichtung, die Hardware und/oder das Element in dem latenten Zustand dafür ausgelegt ist, eine bestimmte Aufgabe auszuführen, wenn die Vorrichtung, die Hardware und/oder das Element arbeitet.
  • Darüber hinaus bezieht sich die Verwendung der Formulierungen 'zum', 'fähig für das/zum' und/oder 'betreibbar zum' in einer Ausführungsform auf eine Vorrichtung, eine Logik, eine Hardware und/oder ein Element, die bzw. das in der Weise ausgelegt ist, dass sie bzw. es die Logik, die Hardware und/oder das Element auf eine spezifizierte Weise zu verwenden ermöglicht. Wie oben angemerkt ist, bezieht sich die Verwendung von zum, fähig zum oder betreibbar zum in einer Ausführungsform auf den latenten Status einer Vorrichtung, einer Logik, einer Hardware und/oder eines Elements, wo die Vorrichtung, die Logik, die Hardware und/oder das Element nicht arbeitet, aber in der Weise ausgelegt ist, dass die Verwendung einer Vorrichtung auf spezifizierte Weise ermöglicht wird.
  • Ein Wert, wie er hier verwendet ist, enthält irgendeine bekannte Darstellung einer Zahl, eines Zustands, eines Logikzustands oder eines binären Logikzustands. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1-en und 0-en bezeichnet, was einfach binäre Logikzustände repräsentiert. Zum Beispiel bezieht sich eine 1 auf einen hohen Logikpegel und eine 0 auf einen tiefen Logikpegel. In einer Ausführungsform kann eine Ablagezelle wie etwa eine Transistor- oder Flash-Zelle in der Lage sein, einen einzelnen Logikwert oder mehrere Logikwerte zu halten. Allerdings werden in Computersystemen andere Darstellungen von Werten verwendet. Zum Beispiel kann die Dezimalzahl zehn als ein Binärwert von 910 und als ein hexadezimaler Buchstabe A dargestellt werden. Somit enthält ein Wert irgendeine Darstellung von Informationen, die in einem Computersystem gehalten werden können.
  • Darüber hinaus können Zustände durch Werte oder Abschnitte von Werten dargestellt werden. Als ein Beispiel kann ein erster Wert wie etwa eine logische Eins einen Standard- oder Anfangswert repräsentieren, während ein zweiter Wert wie etwa eine logische Null einen Nicht-Standard-Wert repräsentieren kann. Außerdem beziehen sich die Begriffe Zurücksetzen und Setzen in einer Ausführungsform auf einen Standardwert und auf einen aktualisierten Wert bzw. auf einen Standardzustand und auf einen aktualisierten Zustand. Zum Beispiel enthält ein Standardwert potentiell einen hohen Logikwert, d. h. Zurücksetzen, während ein aktualisierter Wert potentiell einen tiefen Logikwert, d. h. Setzen, enthält. Es wird angemerkt, dass irgendeine Kombination von Werten benutzt werden kann, um irgendeine Anzahl von Zuständen zu repräsentieren.
  • Die oben dargelegten Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code können über Befehle oder Code implementiert werden, die bzw. der in einem durch eine Maschine zugreifbaren, maschinenlesbaren, durch einen Computer zugreifbaren oder computerlesbaren Medium gespeichert sind bzw. ist, die durch ein Verarbeitungselement ausgeführt werden können. Ein nicht vorübergehendes durch eine Maschine zugreifbares/lesbares Medium enthält irgendeinen Mechanismus, der Informationen in einer durch eine Maschine wie etwa einen Computer oder ein elektronisches System lesbaren Form bereitstellt (d. h. speichert und/oder überträgt). Zum Beispiel enthält ein nicht vorübergehendes durch eine Maschine zugreifbares Medium einen Schreib-Lese-Speicher (RAM) wie etwa einen statischen RAM (SRAM) oder einen dynamischen RAM (DRAM); einen ROM; ein magnetisches oder optisches Ablagemedium; Flash-Speicher-Vorrichtungen; elektrische Ablagevorrichtungen; optische Ablagevorrichtungen; akustische Ablagevorrichtungen; eine andere Form von Ablagevorrichtungen zum Halten von Informationen, die von vorübergehenden (ausgebreiteten) Signalen (z. B. Trägerwellen, Infrarotsignalen, Digitalsignalen) empfangen werden; usw., die von den nicht vorübergehenden Medien, die Informationen davon empfangen können, zu unterscheiden sind.
  • Befehle, die dafür verwendet werden, Logik zum Ausführen von Ausführungsformen der Offenbarung zu programmieren, können in einem Speicher in dem System wie etwa DRAM, Cache, Flash-Speicher oder einer anderen Ablage gespeichert sein. Darüber hinaus können die Befehle über ein Netz oder über andere computerlesbare Medien verteilt werden. Somit kann ein maschinenlesbares Medium irgendeinen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form, Disketten, optische Platten, Compakt-Disk-Nur-Lese-Speicher (CD-ROMs) und magnetooptische Platten, Nur-Lese-Speicher (ROMs), Schreib-Lese-Speicher (RAM), löschbaren programmierbaren Nur-Lese-Speicher (EPROM), elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder eine konkrete maschinenlesbare Ablage, die bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen ausgebreiteter Signale (z. B. Trägerwellen, Infrarotsignale, Digitalsignale usw.) verwendet wird, enthalten, ist darauf aber nicht beschränkt. Dementsprechend enthält das computerlesbare Medium irgendeinen Typ eines konkreten maschinenlesbaren Mediums, das zum Speichern oder Übertragen elektronischer Befehle oder Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form geeignet ist.
  • Die Bezugnahme auf ”die eine Ausführungsform” oder ”eine Ausführungsform” bedeutet überall in dieser Beschreibung, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, das bzw. die in Verbindung mit der Ausführungsform beschrieben ist, in wenigstens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Somit beziehen sich die Vorkommen der Ausdrücke, ”in der einen Ausführungsform” oder ”in einer Ausführungsform” an verschiedenen Stellen überall in dieser Beschreibung nicht notwendig alle auf dieselbe Ausführungsform. Darüber hinaus können die bestimmten Merkmale, Strukturen oder Eigenschaften in einer oder in mehreren Ausführungsformen auf irgendeine geeignete Weise kombiniert werden.
  • In der vorstehenden Beschreibung ist eine ausführliche Beschreibung mit Bezug auf spezifische beispielhafte Ausführungsformen gegeben worden. Allerdings können daran offensichtlich verschiedene Abwandlungen und Änderungen vorgenommen werden, ohne von dem umfassenderen Erfindungsgedanken und Schutzumfang der Erfindung, wie sie in den beigefügten Ansprüchen dargelegt sind, abzuweichen. Dementsprechend sind die Beschreibung und die Zeichnungen in einem veranschaulichenden anstatt in einem einschränkenden Sinn anzusehen. Darüber hinaus bezieht sich die vorstehende Verwendung einer Ausführungsform und anderer beispielhafter Sprache nicht notwendig auf dieselbe Ausführungsform oder auf dasselbe Beispiel, sondern können sie sich auf unterschiedliche und verschiedene Ausführungsformen sowie potentiell auf dieselbe Ausführungsform beziehen.

Claims (24)

  1. Verarbeitungsvorrichtung, die Folgendes umfasst: ein erstes Prozessormodul, das einen ersten Kern umfasst, der in Übereinstimmung mit einer ersten Befehlssatzarchitektur (ISA) ausgelegt ist; und ein zweites Prozessormodul, das einen zweiten Kern umfasst, der in Übereinstimmung mit einer zweiten ISA ausgelegt ist, wobei das zweite Prozessormodul auf einem selben Chipplättchen wie das erste Prozessormodul hergestellt ist.
  2. Verarbeitungsvorrichtung nach Anspruch 1, die ferner Folgendes umfasst: einen Systemagenten (SA), der einen Bus umfasst, der mit dem ersten und mit dem zweiten Prozessormodul kommunikationstechnisch gekoppelt ist.
  3. Verarbeitungsvorrichtung nach Anspruch 2, wobei der Bus dafür ausgelegt ist, Nachrichten zu und von dem ersten Kern nativ zu übertragen.
  4. Verarbeitungsvorrichtung nach einem der Ansprüche 2 und 3, wobei das zweite Prozessormodul eine Busbrücke zum Umsetzen von Nachrichten, die zwischen dem zweiten Kern und dem Bus übertragen werden, umfasst.
  5. Verarbeitungsvorrichtung nach einem der Ansprüche 2 und 3, wobei der SA ferner einen Umsetzer umfasst, über den der SA mit mehreren Peripherievorrichtungen gekoppelt ist.
  6. Verarbeitungsvorrichtung nach einem der Ansprüche 1 bis 3, wobei die Verarbeitungsvorrichtung eine Ein-Chip-Vorrichtung (SoC-Vorrichtung) ist, die auf demselben Chipplättchen hergestellt ist.
  7. Verarbeitungsvorrichtung nach einem der Ansprüche 1 bis 3, wobei die Verarbeitungsvorrichtung Teil einer Computervorrichtung ist, die mit mehr als einem Betriebssystem portiert ist.
  8. Verarbeitungsvorrichtung nach einem der Ansprüche 1 bis 3, wobei ein erstes Betriebssystem, wenn es aktiviert ist, auf dem ersten Prozessormodul abläuft und ein zweites Betriebssystem, wenn es aktiviert ist, auf dem zweiten Prozessormodul abläuft.
  9. Verarbeitungsvorrichtung nach einem der Ansprüche 1 bis 3, wobei die Verarbeitungsvorrichtung eine Zentraleinheit (CPU) und Teil einer Computervorrichtung, die mit zwei Betriebssystemen portiert ist, ist.
  10. Verarbeitungsvorrichtung nach einem der Ansprüche 1 bis 3, die ferner Folgendes umfasst: ein drittes Prozessormodul, das einen dritten Kern umfasst, der in Übereinstimmung mit einem dritten Befehlssatz (ISA), der von dem ersten und von dem zweiten ISA verschieden ist, ausgelegt ist.
  11. Verarbeitungsvorrichtung nach Anspruch 10, wobei das dritte Prozessormodul eine dritte Busbrücke zum Umsetzen von Nachrichten, die zwischen dem ersten, dem zweiten und dem dritten Kern übertragen werden, umfasst.
  12. Prozessor, der Folgendes umfasst: einen ersten Kern, der in Übereinstimmung mit einer ersten Befehlssatzarchitektur (ISA) ausgelegt ist; und einen zweiten Kern, der in Übereinstimmung mit einer zweiten ISA ausgelegt ist, wobei der Prozessor eine Ein-Chip-Vorrichtung (SoC-Vorrichtung) ist, die auf einem einzelnen Chipplättchen hergestellt ist.
  13. Prozessor nach Anspruch 12, der ferner Folgendes umfasst: einen Systemagenten (SA), der einen Bus umfasst, der mit dem ersten und mit dem zweiten Kern kommunikationstechnisch gekoppelt ist, wobei der Bus dafür ausgelegt ist, Nachrichten zu und von dem ersten Kern nativ zu übertragen.
  14. Prozessor nach einem der Ansprüche 12 und 13, der ferner Folgendes umfasst: eine Busbrücke, die zwischen den zweiten Kern und den Bus gekoppelt ist, wobei die Busbrücke zwischen dem zweiten Kern und dem Bus übertragene Nachrichten umsetzt.
  15. Prozessor nach einem der Ansprüche 12 bis 14, wobei der SA ferner einen Umsetzer umfasst, über den der SA mit mehreren Peripherievorrichtungen gekoppelt ist.
  16. Prozessor nach einem der Ansprüche 12 bis 14, wobei ein erstes Betriebssystem, wenn es aktiviert ist, auf dem ersten Prozessormodul abläuft und ein zweites Betriebssystem, wenn es aktiviert ist, auf dem zweiten Prozessormodul abläuft.
  17. Prozessor nach Anspruch 16, wobei die Verarbeitungsvorrichtung eine Zentraleinheit (CPU) und Teil einer Computervorrichtung, die mit zwei Betriebssystemen portiert ist, ist.
  18. Prozessor nach einem der Ansprüche 12 bis 14, der ferner Folgendes umfasst: einen dritten Kern, der in Übereinstimmung mit einem dritten Befehlssatz (ISA) ausgelegt ist, der von dem ersten und von dem zweiten ISA verschieden ist.
  19. Prozessor nach einem der Ansprüche 12 bis 14, wobei der dritte Kern eine dritte Busbrücke zum Umsetzen von Nachrichten, die zwischen dem ersten, dem zweiten und dem dritten Kern übertragen werden, umfasst.
  20. Verfahren, das Folgendes umfasst: in Ansprechen auf eine Anforderung, von einem ersten Betriebssystem (OS), das im Vordergrund in einer Zentraleinheit (CPU) ausgeführt wird, zu einem zweiten OS, das im Hintergrund in der CPU ausgeführt wird, zu schalten, Bestimmen eines ersten Satzes von Vorrichtungen, die exklusiv dem ersten OS zugeordnet sind, durch einen ersten Kern der CPU, wobei der erste Kern in Übereinstimmung mit einem ersten Befehlssatzarchitekturtyp (ISA-Typ) ausgelegt ist; Anhalten des ersten Satzes von Vorrichtungen; Bestimmen eines zweiten Satzes von Vorrichtungen, die nicht exklusiv für das erste und für das zweite OS sind; Konfigurieren des zweiten Satzes von Vorrichtungen für das zweite OS; und Schalten des zweiten OS in den Vordergrund und des ersten OS in den Hintergrund, wobei das Schalten das Aktivieren eines zweiten Kerns der CPU, der in Übereinstimmung mit einem zweiten ISA-Typ ausgelegt ist, und den Leerlauf des ersten Kerns umfasst.
  21. Verfahren nach Anspruch 20, das ferner Folgendes umfasst: Bestimmen eines dritten Satzes von Vorrichtungen, die exklusiv für das zweite OS sind; Freigeben des dritten Satzes von Vorrichtungen.
  22. Wenigstens ein maschinenlesbares Medium, das mehrere Anweisungen umfasst, die in Ansprechen darauf, dass sie in einer Zentraleinheit (CPU) ausgeführt werden, veranlassen, dass die CPU ein Verfahren ausführt, wobei das Verfahren Folgendes umfasst: in Ansprechen auf eine Anforderung, von einem ersten Betriebssystem (OS), das im Vordergrund in einer Zentraleinheit (CPU) ausgeführt wird, zu einem zweiten OS, das im Hintergrund in der CPU ausgeführt wird, zu schalten, Bestimmen eines ersten Satzes von Vorrichtungen, die exklusiv dem ersten OS zugeordnet sind, durch einen ersten Kern der CPU, wobei der erste Kern in Übereinstimmung mit einem ersten Befehlssatzarchitekturtyp (ISA-Typ) ausgelegt ist; Anhalten des ersten Satzes von Vorrichtungen; Bestimmen eines zweiten Satzes von Vorrichtungen, die nicht exklusiv für das erste und für das zweite OS sind; Konfigurieren des zweiten Satzes von Vorrichtungen für das zweite OS; und Schalten des zweiten OS in den Vordergrund und des ersten OS in den Hintergrund, wobei das Schalten das Aktivieren eines zweiten Kerns der CPU, der in Übereinstimmung mit einem zweiten ISA-Typ ausgelegt ist, und den Leerlauf des ersten Kerns umfasst.
  23. Wenigstens ein maschinenlesbares Medium nach Anspruch 22, wobei das Verfahren ferner Folgendes umfasst: Bestimmen eines dritten Satzes von Vorrichtungen, die exklusiv für das zweite OS sind; Freigeben des dritten Satzes von Vorrichtungen.
  24. Vorrichtung, die Folgendes umfasst: ein Mittel zum Ausführen des Verfahrens nach einem der Ansprüche 20 und 21.
DE112013007701.9T 2013-12-23 2013-12-23 Ein-Chip-System (SOC), das Hybridprozessorkerne enthält Withdrawn DE112013007701T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/090225 WO2015096001A1 (en) 2013-12-23 2013-12-23 System-on-a-chip (soc) including hybrid processor cores

Publications (1)

Publication Number Publication Date
DE112013007701T5 true DE112013007701T5 (de) 2016-09-08

Family

ID=53477284

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013007701.9T Withdrawn DE112013007701T5 (de) 2013-12-23 2013-12-23 Ein-Chip-System (SOC), das Hybridprozessorkerne enthält

Country Status (7)

Country Link
US (1) US20160283438A1 (de)
EP (1) EP3087481A4 (de)
JP (1) JP6309623B2 (de)
KR (1) KR20160075669A (de)
CN (1) CN105793819A (de)
DE (1) DE112013007701T5 (de)
WO (1) WO2015096001A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018071781A2 (en) * 2016-10-13 2018-04-19 Skreens Entertainment Technologies, Inc. Systems and methods for video processing and display
US10499118B2 (en) 2012-04-24 2019-12-03 Skreens Entertainment Technologies, Inc. Virtual and augmented reality system and headset display
US11284137B2 (en) 2012-04-24 2022-03-22 Skreens Entertainment Technologies, Inc. Video processing systems and methods for display, selection and navigation of a combination of heterogeneous sources
CN104571464A (zh) * 2015-01-19 2015-04-29 宇龙计算机通信科技(深圳)有限公司 一种多操作系统的省电模式控制方法、装置和终端
US20170052799A1 (en) * 2015-08-21 2017-02-23 Microchip Technology Incorporated Integrated Circuit Device With Selectable Processor Core
DE102015221064A1 (de) * 2015-10-28 2017-05-04 Robert Bosch Gmbh Anordnung aus wenigstens zwei Mikrocontrollern und Verfahren zur Herstellung einer solchen Anordnung
US20170153892A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Instruction And Logic For Programmable Fabric Hierarchy And Cache
CN105827909B (zh) * 2016-01-25 2017-06-23 维沃移动通信有限公司 一种双摄像头快速启动方法及移动终端
US20180095792A1 (en) * 2016-10-05 2018-04-05 Mediatek Inc. Multi-core system including heterogeneous processor cores with different instruction set architectures
US20180173530A1 (en) * 2016-12-21 2018-06-21 Intel Corporation Systems and methods for multi-architecture computing
US10684984B2 (en) * 2016-12-21 2020-06-16 Intel Corporation Computing devices and server systems with processing cores having different instruction set architectures
US10713213B2 (en) 2016-12-21 2020-07-14 Intel Corporation Systems and methods for multi-architecture computing
US10552207B2 (en) * 2016-12-21 2020-02-04 Intel Corporation Systems and methods for multi-architecture computing including program stack translation
US11275709B2 (en) 2017-05-02 2022-03-15 Intel Corporation Systems and methods for multi-architecture computing
CN107161007A (zh) * 2017-06-16 2017-09-15 上海赫千电子科技有限公司 一种车辆仪表与中控的一体化设备及方法
US11151074B2 (en) * 2019-08-15 2021-10-19 Intel Corporation Methods and apparatus to implement multiple inference compute engines
CN112486638A (zh) 2019-09-11 2021-03-12 百度时代网络技术(北京)有限公司 用于执行处理任务的方法、装置、设备和存储介质
US11774487B2 (en) * 2020-01-02 2023-10-03 Texas Instruments Incorporated Electrical and logic isolation for systems on a chip
CN117215992B (zh) * 2023-11-09 2024-01-30 芯原科技(上海)有限公司 异构内核处理器、异构处理器和电源管理方法
CN117389625B (zh) * 2023-12-11 2024-03-12 沐曦集成电路(南京)有限公司 基于主动中断指令的进程同步方法、系统、设备及介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07325788A (ja) * 1994-06-02 1995-12-12 Hitachi Ltd マルチプロセッサ
JP3765201B2 (ja) * 1999-07-07 2006-04-12 株式会社日立製作所 計算機システム
DE112006003875T5 (de) * 2006-05-16 2009-06-18 Intel Corporation, Santa Clara Gleitkommaaddition für unterschiedliche Gleitkommaformate
CN100472452C (zh) * 2006-06-23 2009-03-25 联想(北京)有限公司 一种虚拟机系统及其硬件设备的切换方法
US20080263324A1 (en) * 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US8028290B2 (en) * 2006-08-30 2011-09-27 International Business Machines Corporation Multiple-core processor supporting multiple instruction set architectures
JP2008140078A (ja) * 2006-11-30 2008-06-19 Toshiba Corp バスブリッジ装置、情報処理装置、およびデータ転送制御方法
JP2009093439A (ja) * 2007-10-09 2009-04-30 Canon Inc 情報処理装置とその制御方法
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US8370605B2 (en) * 2009-11-11 2013-02-05 Sunman Engineering, Inc. Computer architecture for a mobile communication platform
JP5382133B2 (ja) * 2009-11-18 2014-01-08 日本電気株式会社 マルチコアシステム、マルチコアシステムの制御方法及びプログラム
US8943334B2 (en) * 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
CN102567275B (zh) * 2010-12-08 2014-01-08 中国科学院声学研究所 一种多核处理器上多个操作系统间内存访问的方法及系统
CN102567103B (zh) * 2010-12-27 2015-03-25 联想(北京)有限公司 一种终端及切换方法
US20120254588A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
CN103150209A (zh) * 2011-12-07 2013-06-12 文晔科技股份有限公司 具双操作系统的可携式平板计算机及其控制方法
JP5775209B2 (ja) * 2012-03-09 2015-09-09 パイオニア株式会社 情報処理装置、情報処理方法、情報処理プログラムが記録された記録媒体及び情報処理プログラム

Also Published As

Publication number Publication date
KR20160075669A (ko) 2016-06-29
CN105793819A (zh) 2016-07-20
JP2016537717A (ja) 2016-12-01
EP3087481A1 (de) 2016-11-02
WO2015096001A1 (en) 2015-07-02
JP6309623B2 (ja) 2018-04-11
EP3087481A4 (de) 2017-08-16
US20160283438A1 (en) 2016-09-29

Similar Documents

Publication Publication Date Title
DE112013007701T5 (de) Ein-Chip-System (SOC), das Hybridprozessorkerne enthält
US10990546B2 (en) Hardware-based virtual machine communication supporting direct memory access data transfer
DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
US20150277949A1 (en) Securing shared interconnect for virtual machine
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
US9250901B2 (en) Execution context swap between heterogeneous functional hardware units
DE102018125257A1 (de) Defragmentierter und effizienter mikrooperationscache
DE102014003795A1 (de) Verfahren und Vorrichtungen für Fusionsbefehle zur Bereitstellung der OR-Test- und AND-Test-Funktionalität auf mehreren Testquellen
DE102014003689A1 (de) Verfolgung des kontrollflusses von befehlen
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE102014003563A1 (de) Fusionierbare befehle und logik zum versehen mit or-test- und and-test-funktionalität unter benutzen von mehrfachtestquellen
DE102018001229A1 (de) Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE112011105665T5 (de) Befehl und Logik zum Liefern von Vektorladen und -speichern mit Schritt- und Maskierfunktionalität
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
DE112013007702T5 (de) Befehl und Logik für den Speicherzugriff in einer geclusterten Maschine mit breiter Ausführung
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
EP3333699A1 (de) System und verfahren zur verbesserung der leistung des monitors einer verschachtelten virtuellen maschine
DE112016005863T5 (de) Minimierung von Snoop-Verkehr lokal und über Kerne auf einem Chip-Mehrkern-Fabric
EP3557427A1 (de) Pausenkommunikation von e/a-vorrichtungen mit unterstützung von seitenfehlern
US11269782B2 (en) Address space identifier management in complex input/output virtualization environments
DE112017001704T5 (de) Arbiterbasierte Serialisierung von Prozessor-System-Management-Interrupt-Ereignissen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009450000

Ipc: G06F0009440000

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee