DE112019002389T5 - Architektur zur dynamischen umwandlung einer speicherkonfiguration - Google Patents

Architektur zur dynamischen umwandlung einer speicherkonfiguration Download PDF

Info

Publication number
DE112019002389T5
DE112019002389T5 DE112019002389.6T DE112019002389T DE112019002389T5 DE 112019002389 T5 DE112019002389 T5 DE 112019002389T5 DE 112019002389 T DE112019002389 T DE 112019002389T DE 112019002389 T5 DE112019002389 T5 DE 112019002389T5
Authority
DE
Germany
Prior art keywords
circuit system
memory
memory circuit
data
pages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112019002389.6T
Other languages
English (en)
Inventor
Nadav Bonen
Julius Mandelblat
Nir Sucher
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 DE112019002389T5 publication Critical patent/DE112019002389T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Sources (AREA)
  • Memory System (AREA)

Abstract

Eine Ausführungsform stellt eine Vorrichtung bereit. Die Vorrichtung umfasst ein erstes Speichersteuerungs-Schaltungssystem zum Steuern eines Lese- und/oder Schreibzugriffs auf ein erstes Speicherschaltungssystem über einen ersten leitfähigen Bus. Die Vorrichtung umfasst ein zweites Speichersteuerungs-Schaltungssystem zum Steuern eines Lese- und/oder Schreibzugriffs auf ein zweites Speicherschaltungssystem über einen zweiten leitfähigen Bus. Die Vorrichtung umfasst ein Energiesteuerungs-Schaltungssystem, welches mit dem ersten Speichersteuerungs-Schaltungssystem und dem zweiten Speichersteuerungs-Schaltungssystem verbunden ist. Das Energiesteuerungs-Schaltungssystem überträgt Daten von dem zweiten Speicherschaltungssystem mit dem zweiten Speichersteuerungs-Schaltungssystem über den zweiten leitfähigen Bus auf das erste Speicherschaltungssystem mit dem ersten Speichersteuerungs-Schaltungssystem über den ersten leitfähigen Bus. Das Energiesteuerungs-Schaltungssystem fährt nach der Übertragung der Daten von dem zweiten Speicherschaltungssystem auf das erste Speicherschaltungssystem das zweite Speicherschaltungssystem herunter. Das Energiesteuerungs-Schaltungssystem verringert den Energieverbrauch der Vorrichtung und kann die Batterielebensdauer der Vorrichtung verlängern.

Description

  • GEBIET
  • Die vorliegende Offenbarung betrifft eine Speicherkonfiguration, insbesondere eine Architektur zur dynamischen Umwandlung einer Speicherkonfiguration.
  • HINTERGRUND
  • Der Komfort von mobilen Computervorrichtungen wird wesentlich von der Batterielebensdauer definiert. Mobile Vorrichtungen mit längeren Batterielebensdauern ermöglichen Benutzern, nahezu an ihr Netzwerk angebunden zu bleiben, während sie körperlich mobil sind. Wenn jedoch eine mobile Computervorrichtung eine kurze Batterielebensdauer aufweist, versuchen Benutzer, die Batterielebensdauer durch eine Reihe von unbequemen Operationen zu verlängern, wie z.B. Verdunkeln eines Bildschirms, Eintreten in einen Niedrigenergiemodus, Verlangsamen der Prozessoren, Ausschalten von Merkmalen, Ausschalten der mobilen Vorrichtung und Ähnliches. Kollidierende Aufgaben für Hersteller von Geräten und Software sind es, Benutzern von mobilen Computervorrichtungen zu ermöglichen, die Merkmale zu genießen, die von den mobilen Computervorrichtungen bereitgestellt werden, und dabei für eine Batterielebensdauer zu sorgen, die eine bequeme Nutzung der mobilen Computervorrichtung ermöglicht.
  • Eine der Computerkomponenten, die Energie aus einer Batterie entnimmt, sowohl bei Niedrigenergieoperationen als auch bei energieintensiven Operationen, ist der Hauptspeicher der mobilen Computervorrichtung. Der Hauptspeicher bezieht sich typischerweise auf einen Direktzugriffsspeicher (RAM), welcher dadurch Energie entnimmt, dass er regelmäßig aktualisiert oder wieder mit Energie versorgt wird, um Daten zu konservieren. Der Hauptspeicher wird von einem Prozessor benutzt, um Informationen zu speichern, welche z.B. auf Anwendungen, Daten und Grundoperationen der mobilen Computervorrichtung bezogen sind. Da sich sowohl die Kapazität als auch die Bandbreite von Speichern mit den Jahren deutlich erhöht hat, weisen viele mobile Computervorrichtungen viel mehr Hauptspeicherkapazität auf, als für einfache Operationen oder Anwendungen benötigt wird. Aufgrund der Hauptspeicherkapazität und der Energie, die durch die größeren Mengen an Hauptspeicher entnommen wird, haben einige mobile Computervorrichtungen Probleme damit, mit den Batterielebensdauern kleinerer, dünnerer und schwächerer elektronischer Geräte (z.B. Tablets) Schritt zu halten. Dies kann bewirken, dass Benutzer zusätzliche elektronische Vorrichtungen kaufen, trotz der Fähigkeit von Mobilen Computervorrichtungen, dieselben Merkmale (und mehr) wie die zusätzlichen elektronischen Vorrichtungen bereitzustellen.
  • Figurenliste
  • Merkmale und Vorteile des beanspruchten Gegenstands werden aus der folgenden detaillierten Beschreibung von damit vereinbaren Ausführungsformen ersichtlich, wobei die Beschreibung in Bezug auf die beiliegenden Zeichnungen betrachtet werden sollte, wobei:
    • 1A und 1B ein funktionelles Blockschaubild eines Computersystems, welches ein Host-System aufweist, das den Energieverbrauch des Computersystems durch dynamisches Konsolidieren und/oder Rekonfigurieren des Hauptspeichers verringern kann, gemäß mehreren Ausführungsformen der vorliegenden Offenbarung zeigen;
    • 2 ein Ablaufplan des dynamischen Konsolidierens von Speicherseiten von Speichersegmenten des Hauptspeichers gemäß mindestens einer Ausführungsform der vorliegenden Offenbarung ist;
    • 3 ein Ablaufplan des Umwandelns von Hauptspeicher von einer Zweikanal- oder Mehrkanalkonfiguration in eine Einkanalkonfiguration gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung ist;
    • 4 ein Ablaufplan des dynamischen Umwandelns von Hauptspeicher von einer Zweikanal- oder Mehrkanalkonfiguration in eine Einkanalkonfiguration gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung ist;
    • 5 ein Ablaufplan des dynamischen Rückumwandelns von Hauptspeicher von einer Einkanalkonfiguration in eine ursprüngliche (Zweikanal- oder Mehrkanal-)Konfiguration gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung ist;
    • 6A-6B Blockschaubilder sind, welche ein allgemeines vektorfreundliches Befehlsformat und Befehlsschablonen davon gemäß Ausführungsformen der Offenbarung veranschaulichen;
    • 7A-D Blockschaubilder sind, welche ein beispielhaftes spezielles vektorfreundliches Befehlsformat gemäß Ausführungsformen der Offenbarung veranschaulichen;
    • 8 ein Blockschaubild einer Registerarchitektur gemäß einer Ausführungsform der Offenbarung ist;
    • 9A ein Blockschaubild ist, welches sowohl eine beispielhafte In-Order-Pipeline als auch eine beispielhafte Registerumbenennungs-Out-of Order-Ausgabe/Ausführungs-Pipeline gemäß Ausführungsformen der Offenbarung veranschaulicht.
    • 9B ein Blockschaubild ist, welches sowohl eine beispielhafte Ausführungsform eines Kerns einer In-Order-Architektur als auch einen beispielhaften Kern einer Registerumbenennungs-Out-of-Order-Ausgabe/Ausführungs-Architektur, der in einen Prozessor einzubauen ist, gemäß Ausführungsformen der Offenbarung veranschaulicht;
    • 10A-B ein Blockschaubild einer spezielleren beispielhaften In-Order-Kernarchitektur zeigen, wobei es sich bei dem Kern um einen von mehreren Logikblöcken (umfassend andere Kerne derselben Art und/oder anderer Arten) in einem Chip handelt;
    • 11 ein Blockschaubild eines Prozessors gemäß Ausführungsformen der Offenbarung ist, welcher mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Graphik aufweisen kann;
    • 12-15 Blockschaubilder beispielhafter Computerarchitekturen sind und
    • 16 ein Blockschaubild ist, welches die Verwendung eines Software-Befehlsumwandlers zum Umwandeln von binären Befehlen in einem Quellen-Befehlssatz in binäre Befehle in einem Ziel-Befehlssatz gemäß Ausführungsformen der Offenbarung deutlich macht.
  • Obwohl die folgende detaillierte Beschreibung unter Bezugnahme auf veranschaulichende Ausführungsformen fortgesetzt wird, werden dem Fachmann viele Alternativen, Modifikationen und Variationen davon ersichtlich sein.
  • DETAILLIERTE BESCHREIBUNG
  • Offenbart wird hierin ein Computersystem gemäß mehreren Ausführungsformen der vorliegenden Offenbarung, welches dafür konfiguriert ist, den Energieverbrauch zu verringern durch dynamisches Konsolidieren des Speichers, um ein Herunterfahren von Speicherabschnitten des Computersystems zu ermöglichen.
  • Verschiedene Faktoren beeinflussen die Energiemenge, die von einem Computersystem verbraucht wird. Einige der Faktoren umfassen das Betreiben von Gebläsen, um Prozessoren kalt zu halten, das Betreiben von Prozessoren, um Rechenoperationen zu ermöglichen, und das Aktualisieren des Speichers, um Prozessoroperationen zu unterstützen. Bei unbegrenzter Energieversorgung sind viele dieser Faktoren unproblematisch. Wenn jedoch versucht wird, die Batterielebensdauer zu verlängern, den Energieverbrauch zu senken oder die Wärme zu verringern, die durch Computersystemoperationen abgeleitet wird, kann eine Verringerung der Energiemenge, die von einem Computersystem verbraucht wird, ein wünschenswertes Ziel sein.
  • Die vorliegende Offenbarung betrifft allgemein eine Senkung des Energieverbrauchs durch Ermöglichen, dass ein Computersystem Speicherabschnitte herunterfährt, zum Beispiel wenn der Leistungsverlust akzeptabel ist (z.B. Abspielen von Videos statt Video-Streaming). Typischerweise wird der Speicher, der von einem Prozessor in einem Computersystem am meisten benutzt wird, als Hauptspeicher bezeichnet, in welchen schnell hineingeschrieben werden kann und welcher schnell ausgelesen werden kann. Dieser Hauptspeicher ist im Allgemeinen ein nicht-permanenter Speicher, welcher Daten verliert, wenn die Energieversorgung beendet wird und/oder wenn die Informationen, die von dem Hauptspeicher gespeichert werden, nicht aktualisiert werden. Das Aktualisieren des Hauptspeichers umfasst periodisches Anwenden von Energie auf Speicherzellen (z.B. Kondensatoren) innerhalb des Hauptspeichers, um sicherzustellen, dass die in den Speicherzellen gespeicherten Daten richtig ausgelesen werden können, wenn sie benötigt werden. Auch wenn das Computersystem in einen Niedrigenergie- oder Standby-Modus gesetzt ist, wird der Hauptspeicher immer noch aktualisiert, so dass das Computersystem frühere Operationen schnell wiederaufnehmen kann. Jedoch entnimmt der Hauptspeicher auch im Standby-Modus weiter eine Menge an Energie, die proportional zu der Ruheleistung des Speichers und der Kapazität des Speichers ist. Da einige Operationen des Computersystems mit deutlich weniger (z.B. halb so viel oder weniger) als der vollständigen Kapazität des Hauptspeichers durchgeführt werden können, ermöglichen Ausführungsformen der vorliegenden Offenbarung, dass ein Computersystem den Speicher dynamisch konsolidiert und den Energieverbrauch verringert, indem es auf einen physischen Speicherkanal nicht zugreift, indem es den Speicher, der zu einem heruntergefahrenen Speicherkanal gehört, nicht aktualisiert, indem es eine Speichersteuerung für den heruntergefahrenen Speicherkanal ausschaltet und indem es Abschnitte eines physischen Schaltungssystems (PHY) innerhalb des System-on-a-Chip (SoC) eines Prozessor-Package ausschaltet.
  • In einer Ausführungsform umfasst ein Computersystem einen Hauptspeicher, der mit zwei oder mehr Kanälen betrieben wird. Um den Hauptspeicher dynamisch zu konsolidieren, werden Segmente (oder Abschnitte) des Hauptspeichers identifiziert. Innerhalb der Segmente des Hauptspeichers werden weniger wichtige (z.B. weniger benutzte) Speicherseiten ausgelagert (d.h. in einen Permanentspeicher überführt/gespeichert) und wichtigere Speicherseiten werden zu einer verringerten Menge an Segmenten des Hauptspeichers (z.B. eines, zwei oder ein halbes) konsolidiert. Anschließend ist ein Energiesteuerungs-Schaltungssystem gemäß einer Ausführungsform dafür konfiguriert, methodisch Daten, die über mehrere Kanäle, Speicherschaltungen und/oder Ränge von Speicherschaltungen verteilt sind, auf einen einzelnen Kanal, einen einzelnen Satz von Speicherschaltungen und/oder einen einzelnen Rang zu überführen. Die Abschnitte des Hauptspeichers, die zu unbenutzten Kanälen gehören, können dann ausgeschaltet oder nicht mehr aktualisiert werden, um die Energiemenge zu verringern, die von dem Hauptspeicher verbraucht wird.
  • Es konnte gezeigt werden, dass einige prototypische Realisierungen der vorliegenden Offenbarung die Standby-Modus-Batterielebensdauer einer mobilen Computervorrichtung von 7,2 Tagen auf 8,5 Tage verlängern (also um ungefähr 18 %). Im Nicht-Standby-Modus kann die dynamische Konsolidierung des Hauptspeichers fortgesetzte Rechenoperationen ermöglichen, während gleichzeitig gemäß verschiedenen Realisierungen (z.B. während Operationen des Abspielens von Videos) der Energieverbrauch um 3,8 % bis 10,8 % verringert wird.
  • 1A und 1B zeigen ein Blockschaubild eines Computersystems 100, welches einen System-Host 102 aufweist, der den Energieverbrauch des Computersystems 100 durch dynamisches Konsolidieren und/oder Rekonfigurieren des Hauptspeichers verringern kann, gemäß mehreren Ausführungsformen der vorliegenden Offenbarung. Der System-Host 102 kann ein System-on-a-Chip (SoC) sein und ist eine beispielhafte Realisierung des SOC 1500 der 15, wie hierin beschrieben. Das Computersystem 100 umfasst den System-Host 102, der dafür konfiguriert ist, über einen Kommunikationskanal 106 und einen Kommunikationskanal 108 Speicherseiten und Cache-Zeilen in dem Hauptspeicher 104 zu speichern und daraus abzurufen. Die Kommunikationskanäle 106 und 108 sind leitfähige Busse oder Punkt-zu-Punkt-Verbindungen, welche Spuren für Daten, Steuerung und/oder Energie umfassen. Der System-Host 102 umfasst eine oder mehrere Komponenten, welche ermöglichen, dass der System-Host 102 die Konfiguration des Hauptspeichers 104 dynamisch umwandelt, um den Energieverbrauch des Computersystems 100 zu verringern.
  • Der System-Host 102 umfasst gemäß einer Ausführungsform einen Prozessor 110, welcher einen oder mehrere Kerne 112A bis 112N umfasst, ein oder mehrere Cache-Schaltungssysteme 114A bis 114N und ein gemeinsam genutztes Cache-Schaltungssystem 116; ein Systemagent-Schaltungssystem 118; ein Speichersteuerungs-Schaltungssystem 120 für den Kommunikationskanal 106; ein Speichersteuerungs-Schaltungssystem 122 für den Kommunikationskanal 108; ein Direktspeicherzugriffs(Direct Memory Access, DMA)-Schaltungssystem 124; ein Energiesteuerungs-Schaltungssystem 126 und ein Verbindungsschaltungssystem 125, welches die Komponenten des System-Host 102 physisch und zum Datenaustausch verbindet. Der eine oder die mehreren Kerne 112A bis 112N führen Rechenoperationen an Daten aus. Das eine oder die mehreren Cache-Schaltungssysteme 114A bis 114N und das gemeinsam genutzte Cache-Schaltungssystem 116 repräsentieren verschiedene Stufen von Speicher mit niedriger Latenzzeit, welcher Daten speichert, um Rechenoperationen durch den einen oder die mehreren Kerne 112A bis 112N zu unterstützen. Das Systemagent-Schaltungssystem 118 verwaltet die Energieversorgung des Prozessors 110 und kann eine Selbstaktualisierung und Taktaktivierung des Hauptspeichers 104 verwalten. Das Speichersteuerungs-Schaltungssystem 120 steuert den Lese- und Schreibzugriff auf das Speicherschaltungssystem, das mit dem Kommunikationskanal 106 verbunden ist. Das Speichersteuerungs-Schaltungssystem 122 steuert den Lese- und Schreibzugriff auf das Speicherschaltungssystem, das mit dem Kommunikationskanal 108 verbunden ist. Die Speichersteuerungen 120 und 122 führen ebenfalls Selbstaktualisierungs- und Taktaktivierungsoperationen für den Hauptspeicher 104 auf Grundlage von Strategien der Energiesteuerungseinheit aus. Das DMA-Schaltungssystem 124 führt die Kanalkonsolidierungsoperationen aus. Das DMA-Schaltungssystem 124 empfängt Anzeigen über freie und belegte Speichersegmente und empfängt Befehle von dem Energiesteuerungs-Schaltungssystem 126 (z.B. einer Energiesteuerungseinheit), Speichersegmente zu konsolidieren oder zu dekonsolidieren. In Reaktion auf Befehle von dem Energiesteuerungs-Schaltungssystem 126 zum Konsolidieren oder Dekonsolidieren führt das DMA-Schaltungssystem 124 die Kanalkonsolidierung durch Kopieren von Speicher aus belegten Segmenten in einem „Quellen“-Kanal in freie Segmente in einem „Ziel“-Kanal, um zu ermöglichen, dass der Quellenkanal ausgeschaltet wird. Während der Dekonsolidierung führt das DMA-Schaltungssystem 124 die umgekehrte Operation durch. Das Energiesteuerungs-Schaltungssystem 126 und/oder das DMA-Schaltungssystem 124 bewirken gemäß einer Ausführungsform, dass der Hauptspeicher 104 Operationen durchführt, welche den Hauptspeicher 104 dynamisch (z.B. während das Computersystem 100 arbeitet) vom Zweikanalbetrieb (oder Mehrkanalbetrieb, z.B. 8 Kanäle bei LPDDR4 und LPDDR5) in den Einkanalbetrieb (oder den Betrieb mit der Hälfte der Kanäle, z.B. 4 Kanäle bei LPDDR4 und LPDDR5) umwandeln, um den Energieverbrauch durch den Hauptspeicher 104, durch das Speichersteuerungs-Schaltungssystem 122 und durch das Computersystem 100 zu verringern.
  • Der Hauptspeicher 104 ist über den Kommunikationskanal 106 und den Kommunikationskanal 108 mit dem System-Host 102 verbunden. Obwohl zwei Kommunikationskanäle dargestellt und beschrieben werden, können viel mehr Kommunikationskanäle (z.B. 4, 6 usw.) eingesetzt werden, um die Informationsübertragung zwischen dem System-Host 102 und dem Hauptspeicher 104 zu ermöglichen. Der Hauptspeicher 104 umfasst gemäß einer Ausführungsform ein erstes Speicherschaltungssystem 128, ein zweites Speicherschaltungssystem 130, ein drittes Speicherschaltungssystem 132 und ein viertes Speicherschaltungssystem 134. Gemäß verschiedenen Realisierungen kann der Hauptspeicher 104 mehr oder weniger Speicherschaltungssysteme umfassen. Gemäß einer Ausführungsform ist das erste Speicherschaltungssystem 128 ein erstes Dual-In-Line-Speichermodul (Dual In-Line Memory Module, DIMM), das zweite Speicherschaltungssystem 130 ist ein zweites DIMM, das dritte Speicherschaltungssystem 132 ist ein drittes DIMM und das vierte Speicherschaltungssystem 134 ist ein viertes DIMM. In einer Ausführungsform umfasst jedes aus dem ersten Speicherschaltungssystem 128, dem zweiten Speicherschaltungssystem 130, dem dritten Speicherschaltungssystem 132 und dem vierten Speicherschaltungssystem 134 eine Anzahl von Direktzugriffsspeicher(RAM)-Dies, die auf einer ersten Seite des DIMM angeordnet sind (d.h. Rang 1), und eine Anzahl von RAM-Dies, die auf einer zweiten Seite des DIMM angeordnet sind (d.h. Rang 2). Ein RAM-Die kann hierin als ein Speicher-Package oder ein Speicher-Die-Package bezeichnet sein. Ein Beispiel für ein Speicher-Die-Package ist ein Ball-Grid-Array(BGA)-Speicher-Die-Package. Mehrere Speicher-Packages können zumindest teilweise ein DIMM bilden. Obwohl hierin DIMMs beschrieben und dargestellt werden, können in dem offenbarten Computersystem auch SIMMs und/oder RIMMs benutzt werden. Der Kommunikationskanal 106 kann mit dem ersten Speicherschaltungssystem 128 und dem dritten Speicherschaltungssystem 132 verbunden sein. Der Kommunikationskanal 108 kann mit dem zweiten Speicherschaltungssystem 130 und dem vierten Speicherschaltungssystem 134 verbunden sein.
  • 1A und 1B zeigen vereinfachte Blockschaubilder eines mehrstufigen Verfahrens zum dynamischen Umwandeln des Hauptspeichers 104 von einer Mehrkanalkonfiguration in eine Einkanalkonfiguration, während der Betrieb des Computersystems 100 fortgesetzt wird, um den Energieverbrauch des Hauptspeichers 104 zu verringern, gemäß Ausführungsformen der Offenbarung. Anfänglich empfangen das DMA-Schaltungssystem 124 und/oder das Energiesteuerungs-Schaltungssystem 126 einen oder mehrere Befehle von dem Prozessor 110 zum dynamischen Konsolidieren von Speicheroperationen auf eine verringerte Anzahl an Segmenten oder Abschnitten des Hauptspeichers 104. Das DMA-Schaltungssystem 124 und/oder das Energiesteuerungs-Schaltungssystem 126 können einen oder mehrere Befehle empfangen, indem sie Konfigurationsbits aus einem Register 127 auslesen, welches durch den Prozessor 110 (z.B. durch ein Betriebssystem) aktualisiert/geändert werden kann. Wenn die Speichersteuerungs-Schaltungssysteme 120, 122 Cache-Zeilen in den Hauptspeicher 104 schreiben, tun die Speichersteuerungs-Schaltungssysteme 120, 122 dies, indem sie Datenverkehr in feiner Granularität derart über beide Kanäle verteilen, dass eine physische Seite über alle Kanäle verteilt ist, um die Bandbreite zu maximieren. Physische Seiten können logisch als Segmente (oder Abschnitte) des gesamten verfügbaren Speichers organisiert sein und sind über mehrere Kanäle, DIMMs und/oder Ränge verteilt. In einer Ausführungsform repräsentiert jedes Segment ein Achtel der physischen Seiten des Hauptspeichers 104. In einer Ausführungsform repräsentiert eine einzelne physische Speicherseite 4 Kilo-Bytes. Eine einzelne Speicherseite kann eine einzelne Reihe einer Bank jedes RAM-Dies von allen der Dies des Hauptspeichers 104 repräsentieren.
  • Das DMA-Schaltungssystem 124 und/oder das Energiesteuerungs-Schaltungssystem 126 steuern das Speichersteuerungs-Schaltungssystem 120 und das Speichersteuerungs-Schaltungssystem 122, die Speichersegmente zu einer verringerten Anzahl an Segmenten und dann zu einer verringerten Anzahl an Kanälen zu konsolidieren. Die Verringerung der Anzahl an Segmenten wird durch ein Betriebssystem (OS) durchgeführt, welches Speicherseiten auslagert. Die Verringerung der Anzahl an Kanälen (z.B. von 2 auf 1) wird durch das Energiesteuerungs-Schaltungssystem 126, das DMA-Schaltungssystem 124 und die Speichersteuerungen 120, 122 durchgeführt. Die Speichersteuerung 122, das zweite Speicherschaltungssystem 130 und das vierte Speicherschaltungssystem 134 können dann ausgeschaltet werden.
  • In einer Ausführungsform identifiziert das OS am längsten unbenutzte (Least Recently Used, LRU) Speicherseiten im Hauptspeicher 104. Die LRU-Speicherseiten umfassen Speicherseiten (z.B. Datenseiten), welche für BIOS-Operationen, OS-Operationen und laufende Berechnungen nicht benötigt werden. In einer Ausführungsform überführt das OS die LRU-Speicherseiten über den Bus 142 auf die permanente Speichervorrichtung 140 (lagert sie z.B. aus). Nach dem Überführen der LRU-Speicherseiten auf eine oder mehrere Dateien auf der permanenten Speichervorrichtung 140 defragmentiert das OS den Hauptspeicher 104 und konsolidiert die verbleibenden Speicherseiten zu einer Gruppe von aufeinanderfolgenden Speicherseiten. Eine Gruppe von aufeinanderfolgenden Speicherseiten kann als ein Segment bezeichnet werden und der Hauptspeicher 104 kann logisch in 8 oder mehr Segmente unterteilt sein. Das OS kann bewirken, dass in Vorbereitung für anschließende Operationen Daten in den Segmenten 136 (welche z.B. die Segmente 5 bis 8 repräsentieren) in die Speichersegmente 138 (welche z.B. die Segmente 1 bis 4 repräsentieren) überführt werden. Als ein Ergebnis weist das Speicherschaltungssystem, das mit jedem Kommunikationskanal 106 und 108 verbunden ist, belegte Speicherseiten (z.B. durch die Segmente 1 bis 4 repräsentiert) und freie Speicherseiten (z.B. durch die Segmente 5 bis 8 repräsentiert) auf. Mit anderen Worten, der Kanal 0 weist Kanal-0-Daten (ch-0-Daten), welche aus den Segmenten 1 bis 8 auf dem Kanal 0 konsolidiert sind, unten in den Segmenten 1 bis 4 auf dem Kanal 0 auf. Außerdem weist der Kanal 1 Kanal-1-Daten (ch-1-Daten), welche aus den Segmenten 1 bis 8 auf dem Kanal 1 konsolidiert sind, unten in den Segmenten 1 bis 4 auf dem Kanal 1 auf.
  • Übergehend zu 1B, kopieren in einer zweiten Operation des Verfahrens zum dynamischen Umwandeln des Hauptspeichers 104 von einer Mehrkanalkonfiguration in eine Einkanalkonfiguration das DMA-Schaltungssystem 124 und/oder das Energiesteuerungs-Schaltungssystem 126 belegte Speichersegmente (repräsentiert durch ch-1-Daten aus den Segmenten 1 bis 4 des Kanals 1) eines Kanals (z.B. der Speicherschaltungssysteme 130 und 134) in freie Speichersegmente (repräsentiert durch die Segmente 5 bis 8 des Kanals 0) auf einem anderen Kanal (z.B. in die Speicherschaltungssysteme 128 und 132). Die Daten (ch-1-Daten), die in den Speichersegmenten 138 auf dem Kommunikationskanal 108 gespeichert waren, werden gemäß einer Ausführungsform in die Segmente 136 auf dem Kommunikationskanal 106 (z.B. in das erste Speicherschaltungssystem 128) und/oder in einen ersten Rang von Speicher-Dies für das erste Speicherschaltungssystem 128 überführt. Gleichzeitig werden gemäß einer Ausführungsform die Daten (ch-0-Daten), die in den Speichersegmenten 138 auf dem Kommunikationskanal 106 gespeichert sind, auf dem ersten Speicherschaltungssystem 128 (und/oder dem dritten Speicherschaltungssystem 132) belassen. Das Konsolidieren des Hauptspeichers 104 auf solche Weise ermöglicht dem Energiesteuerungs-Schaltungssystem 126 und/oder einer oder mehreren Komponenten des System-Host 102, eines oder mehreres aus der Speichersteuerung 122, dem zweiten Speicherschaltungssystem 130 und dem vierten Speicherschaltungssystem 134 herunterzufahren. Das Herunterfahren der Speichersteuerung 122, des zweiten Speicherschaltungssystems 130 und/oder des vierten Speicherschaltungssystems 134 kann gemäß verschiedenen Ausführungsformen umfassen, die Speicher-Dies nicht mehr zu aktualisieren, das Senden von Taktsignalen zu deaktivieren, die Energieversorgung zu deaktivieren, zumindest teilweise Energie aus dem Speichersteuerungs-Schaltungssystem 122 abzuziehen und/oder weitere Schaltungen herunterzufahren, welche den Betrieb des Kanals 1 unterstützen.
  • Anders zusammengefasst, verschiebt das OS Seiten im physischen Adressraum und ein Speichersegment ist ein Speicherbereich, welcher mehrere Seiten enthält (z.B. 1 GB Speicher = 256 Millionen 4K-Seiten). Eine Art eines Speichersegments ist ein DRAM-Segment, welches ein Speicherbereich im DRAM-Raum ist, der Seitenabschnitte enthält (z.B. umfasst in dem obigen Beispiel, wobei Seiten in zwei Kanäle aufgeteilt sind, jedes DRAM-Segment 0,5 GB Speicher, welcher 256 Millionen Halbseiten enthält). Das OS verschiebt Seiten, um sie in ungefähr 4 Segmenten oder der Hälfte des Speicherraums zu konsolidieren. Bei den offenbarten Techniken (z.B. unter Verwendung des DMA-Schaltungssystems 124, des Energiesteuerungs-Schaltungssystems 126 und des Speichersteuerungs-Schaltungssystems 122) werden Hardware-Komponenten eingesetzt, um belegte Segmente aus einem Kanal in freie Segmente eines anderen Kanals zu kopieren, um ein Herunterfahren mindestens eines Kanals zu ermöglichen.
  • Ausführungsformen der hierin offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination solcher Realisierungsansätze realisiert werden. Ausführungsformen der Offenbarung können als Computerprogramme oder Programmcode realisiert werden, die auf programmierbaren Systemen ausgeführt werden, welche mindestens einen Prozessor, ein Speichersystem (umfassend flüchtige und nicht-flüchtige Speicher und/oder Speicherelemente), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung umfassen.
  • 2 veranschaulicht ein Speicherschaubild eines Verfahrens 200 zum dynamischen Konsolidieren von Speicherseiten von Speichersegmenten des Hauptspeichers 104 (dargestellt in 1A und 1B) gemäß Ausführungsformen der Offenbarung. Das Verfahren umfasst mehrere Operationen, durch welche in Vorbereitung für ein Umwandeln des Hauptspeichers 104 von einer Zweikanal- oder Mehrkanalkonfiguration in eine Einkanalkonfiguration oder Konfiguration mit der Hälfte der Kanäle Abschnitte (z.B. Segmente) des Hauptspeichers 104 freigegeben werden.
  • Bei der Operation 202 umfasst das Verfahren 200 Auslagern von am längsten unbenutzten Seiten (LRU-Seiten) gemäß einer Ausführungsform. Das Auslagern der LRU-Seiten kann Überführen der Daten aus den LRU-Seiten in eine oder mehrere Dateien auf einer permanenten Speichervorrichtung umfassen.
  • Bei der Operation 204 umfasst das Verfahren 200 Verschieben von nicht-auslagerbaren Seiten (Non-Pageable Pages, NPP) und heißen Seiten (z.B. aktiv verwendeten Seiten) gemäß einer Ausführungsform. Nicht-auslagerbare Seiten können Speicherseiten umfassen, welche Daten für ein Basic Input Output System (BIOS) und/oder Daten für das OS und für Treiber-Firmware/Software speichern. Heiße Seiten können Seiten umfassen, welche Daten für Anwendungen umfassen, die aktuell von dem Prozessor oder von dem OS ausgeführt werden oder dort ablaufen.
  • Bei der Operation 206 umfasst das Verfahren 200 Einstellen des Aktualisierens unbenutzter Seiten gemäß einer Ausführungsform. Das Einstellen des Aktualisierens kann Deaktivieren von Selbstaktualisierungsmodi für Speicherschaltungssysteme umfassen. Durch das Einstellen des Aktualisierens ungenutzter Seiten wird die Energie verringert, die vom Hauptspeicher 104 verbraucht wird.
  • Bei der Operation 208 werden die unbenutzten Seiten nicht aktualisiert, um den Energieverbrauch zu verringern. Wie dargestellt, umfassen bei der Operation 208 die Speichersegmente 138 (z.B. die Speichersegmente 1 bis 4) belegte Speicherseiten und die Speichersegmente 136 (z.B. die Speichersegmente 5 bis 8) umfassen freie Speicherseiten. Es sei angemerkt, dass die Speichersegmente 136 und 138 verschachtelte Speicherseiten sowohl aus dem Kommunikationskanal 106 als auch aus dem Kommunikationskanal 108 umfassen.
  • 3 ist ein Speicherschaubild eines Verfahrens 300 zum Umwandeln des Hauptspeichers 104 (dargestellt in 1A und 1B) von einer Zweikanal- oder Mehrkanalkonfiguration in eine Einkanalkonfiguration oder Konfiguration mit der Hälfte der Kanäle gemäß Ausführungsformen der Offenbarung. In dem Verfahren 300 werden Kanalkonsolidierungsoperationen 302 zum Umwandeln von Abschnitten des Hauptspeichers 104 von einer Mehrkanalkonfiguration 304 in eine Konfiguration mit der Hälfte der Kanäle 306 gemäß einer Ausführungsform durchgeführt. Jeder der Abschnitte 308 der konsolidierten Speichersegmente 310 repräsentiert ein Segment in dem konsolidierten Speicherraum der Kanäle 310a und 310b. Da die Abschnitte 308 der konsolidierten Speichersegmente 310 mit einer Granularität über Kanäle verteilt sind, die kleiner ist als bei einer OS-Seite im Speicher, kann es sein, dass ein Betriebssystem („OS“) nicht in der Lage ist, Daten zwischen Kanälen zu übertragen (z.B. vom Kanal 1 zum Kanal 0). Beispielsweise ist ein SOC (z.B. der System-Host 102) typischerweise dafür konfiguriert, 64 Cache-Zeilen (4.096 Bytes) zu einer Zeit zu übertragen, wenn es eine virtuelle oder physische Seite (z.B. eine 4-Kilo-Byte-Seite) schreibt oder liest.
  • Bei der Mehrkanalkonfiguration 304 umfasst der Kanal 0 der konsolidierten Speichersegmente 310a unbenutzte oder freie Speicherseiten UU (z.B. die Segmente 5 bis 8) und belegte Speicherseiten (z.B. die Segmente 1 bis 4), wobei CH 0 Daten repräsentiert, welche auf dem Kanal 0 gespeichert sind. Der Kanal 1 der konsolidierten Speichersegmente 310b umfasst unbenutzten Speicher UU (z.B. die Segmente 5 bis 8) und belegte Speicherseiten (z.B. die Segmente 1 bis 4), wobei die Daten CH 1 Daten repräsentieren, welche auf dem Kanal 1 gespeichert sind. In den konsolidierten Speichersegmenten 310 sind gemäß einer Ausführungsform die Daten CH 0 und CH1 zwischen einem ersten Kanal und einem zweiten Kanal verschachtelt. In einer Ausführungsform können die Daten zwischen mehr als 2 Kanälen verschachtelt sein.
  • Nach den Kanalkonsolidierungsoperationen 302 wird gemäß einer Ausführungsform der Hauptspeicher 104 in die Einkanalkonfiguration 306 umgewandelt. Nach der Umwandlung umfassen die konsolidierten Speichersegmente 312 in einer Ausführungsform belegte Speicherseiten (z.B. die Segmente 1 bis 4 des Kanals 0) nur auf dem Kanal 0. Außerdem füllt nach der Umwandlung der Kanal 0 der konsolidierten Speichersegmente 312a zumindest teilweise seinen unbenutzten Speicher UU (z.B. die Segmente 5 bis 8) mit den Daten CH 1, welche zuvor auf dem Kanal 1 als der Kanal 1 der konsolidierten Speichersegmente 312b gespeichert waren. Durch das Konsolidieren der Daten aus zwei oder mehr Kanälen in einen einzelnen Kanal erhält ein Computersystem die Fähigkeit, einen Kanal (z.B. den Kanal 1), eine Speichersteuerung für einen Kanal und ein Speicherschaltungssystem (z.B. ein DIMM), das von einem Kanal unterstützt wird, herunterzufahren.
  • Insbesondere arbeiten das OS und die Anwendungen nach dem Umwandeln in die Einkanalkonfiguration weiter, als ob sich der Hauptspeicher in der Mehrkanalkonfiguration befände, indem sie in virtuelle Seiten schreiben, welche von dem Energiesteuerungs-Schaltungssystem und/oder dem Systemagent-Schaltungssystem auf physische Seiten in einem einzelnen Kanal abgebildet werden. Ein beachtenswerter Unterschied ist aus dieser Sicht, dass das OS die UU-Segmente bis zur Rückkehr in den Mehrkanalzustand nicht benutzen kann, da dieser UU-Raum auf unbenutzten Raum in 310a und 310b, der nun von CH1-Segmenten auf dem Kanal 0 in 312a eingenommen ist, und auf unzugängliche Segmente in 312b abgebildet ist, die ausgeschaltet sind. Das OS ordnet Seiten in diesen UU-Segmenten nicht zu und der Systemagent 118 (dargestellt in 1A) blockiert solche illegalen Transaktionen.
  • Die Kanalkonsolidierungsoperationen 302 werden in dem Verfahren 400 der 4 und dem Verfahren 500 der 5 gemäß Ausführungsformen der vorliegenden Offenbarung beschrieben.
  • Die Kanalkonsolidierungsoperationen 302 umfassen, ohne darauf beschränkt zu sein, Identifizieren unbenutzten Raums in einem ersten Kanal, Abbilden von Abschnitten des zweiten Kanals auf den ersten Kanal, Kopieren von Daten aus dem zweiten Kanal auf unbenutzten Raum in dem ersten Kanal, Benutzen des ersten Kanals, um auf Operationen (z.B. Lesen und Schreiben) zu antworten, die auf den ersten Kanal und den zweiten Kanal gerichtet sind, um dem Betriebssystem und Software-Anwendungen zu ermöglichen, virtuelle Speicherabbildungen zu verwenden, als ob der zweite Kanal oder als ob mehrere Kanäle aktiv wären, und Ausschalten des zweiten Kanals (z.B. des Kanals 1).
  • Da die Konfigurationsumwandlung dynamisch ist (z.B. erfolgt, während das Computersystem 100 der 1A und 1B läuft), kann das Energiesteuerungs-Schaltungssystem dafür konfiguriert sein, die Umwandlung in die Einkanalkonfiguration abzuwickeln, während es weiter Lese- und Schreibanforderungen empfängt. Wenn während des aktuellen Kopierens eines Abschnitts 308 aus dem zweiten Kanal (Kanal 1) in einen ersten Kanal (z.B. Kanal 0) eine neue Lese- oder Schreibanforderung empfangen wird, kann das Energiesteuerungs-Schaltungssystem dafür konfiguriert sein, die alte oder vorhergehende Speicheradresse zu verwenden, um die Lese- oder Schreibanforderung zu erfüllen. Nachdem ein Speicherabschnitt in den ersten Kanal herüber kopiert worden ist, kann das Energiesteuerungs-Schaltungssystem dafür konfiguriert sein, die Lese- oder Schreibanforderung an die neue Adresse (z.B. des Kanals 0) zu leiten. Die Umwandlung kann bei höheren Adressen beginnen und mit niedrigeren Adressen fortgesetzt werden, um zu ermöglichen, dass ein einfacher Komparator verwendet wird, um zu bestimmen, ob bereits eine Umwandlung stattgefunden hat, und um zu bestimmen, ob eine Lese- oder Schreibanforderung an eine alte Adresse oder eine neue Adresse zu senden ist. In einer Ausführungsform kann das OS die Umwandlung mitten in der Umwandlung beenden. Um die Umwandlung umzukehren, kann das OS in einer Ausführungsform Konfigurationsbits in einem Register für das Energiesteuerungs-Schaltungssystem ändern, was bewirkt, dass das Energiesteuerungs-Schaltungssystem den heruntergefahrenen Kanal wieder mit Energie versorgt und die Kanal-1-Daten aus dem Kanal 0 wieder im Kanal 1 gespeichert werden.
  • 4 ist ein Ablaufplan eines Verfahrens 400 zum dynamischen Umwandeln von Hauptspeicher von einer Zweikanal- oder Mehrkanalkonfiguration in eine Einkanalkonfiguration oder eine Konfiguration mit der Hälfte der Kanäle gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung.
  • Bei der Operation 402 beginnt ein Betriebssystem (OS) gemäß einer Ausführungsform Operationen zum Umwandeln von Hauptspeicher in eine Konfiguration mit der Hälfte der Kanäle, das OS lagert LRU-Seiten aus, so dass die Hälfte des Speichers oder weniger belegt ist, und konsolidiert Seiten in der Hälfte der Anzahl der Segmente oder weniger. Als ein Beispiel kann das OS bestimmen, Hauptspeicher in eine Einkanalkonfiguration umzuwandeln, wenn das OS Operationen mit niedriger Bandbreite ausführt (z.B. Abspielen von Videos, Ablaufen von Textverarbeitungsanwendungen usw.).
  • Bei der Operation 404 fordert das OS gemäß einer Ausführungsform den Beginn der Umwandlung in eine Konfiguration mit der Hälfte der Speicherkanäle an. Das OS kann den Beginn der Konfiguration gemäß einer Ausführungsform durch Senden einer oder mehrerer Anforderungen in Programmcode anfordern. Das OS kann den Beginn der Konfiguration mit der Hälfte der Speicherkanäle durch Ändern eines oder mehrerer Bits eines Registers für ein Energiesteuerungs-Schaltungssystem anfordern, welches dafür konfiguriert ist, die Umwandlung von einer Mehrkanalkonfiguration in eine Hauptspeicherkonfiguration mit der Hälfte der Speicherkanäle zu verwalten.
  • Bei der Operation 406 bestimmen gemäß einer Ausführungsform das Energiesteuerungs-Schaltungssystem und/oder das Systemagent-Schaltungssystem, ob die Anforderung von dem OS akzeptabel ist. Wenn die Anforderung inakzeptabel ist, geht die Operation 406 gemäß einer Ausführungsform in die Operation 408 über, wo ein Fehler gemeldet wird. Wenn die Anforderung akzeptabel ist, geht die Operation 406 gemäß einer Ausführungsform in die Operation 410 über.
  • Bei der Operation 410 stellt das Energiesteuerungs-Schaltungssystem eine Anzeige bereit, dass die Umwandlung in die Konfiguration mit der Hälfte der Speicherkanäle gerade stattfindet, und das Energiesteuerungs-Schaltungssystem beginnt gemäß einer Ausführungsform die Umwandlung durch das Direktspeicherzugriffs(DMA)-Schaltungssystem. Die Umwandlung durch das DMA beginnt, indem dem DMA ein Befehl bereitgestellt wird, die Umwandlung zu beginnen, und indem dem DMA Quellen- (z.B. belegte Segmente im Kanal 1) und Zieladressen (z.B. freie Segmente im Kanal 0) für die Datenübertragung bereitgestellt werden.
  • Bei der Operation 412 kopiert das DMA Daten aus belegten Segmenten der Quellenkanäle (Quelladressen) in freie Segmente von Zielkanälen (Zieladressen) und gemäß einer Ausführungsform werden Transaktionen zu den Quellenkanälen zu den neu belegten Segmenten der Zielkanäle geführt. In einer Ausführungsform aktualisiert das DMA ein Statusregister mit einer Adresse der Quelladresse, die als letztes gelesen worden ist. In einer Ausführungsform aktualisiert das DMA ein Statusregister mit einer Adresse der Zieladresse, in die als letztes geschrieben worden ist. In einer Ausführungsform bestimmt das DMA oder eine Router-Logik, ob Lese- oder Schreibzugriffsanforderungen zu einer alten Speicheradresse (Quelladresse) oder zu einer neuen Speicheradresse (Zieladresse) geführt werden sollten, basierend darauf, ob die Daten bereits von der alten Adresse übertragen worden sind.
  • Bei der Operation 414 meldet das DMA gemäß einer Ausführungsform den Abschluss der Umwandlung an das Energiesteuerungs-Schaltungssystem.
  • Bei der Operation 416 löscht das Energiesteuerungs-Schaltungssystem gemäß einer Ausführungsform eine Anzeige, dass die Umwandlung in die Konfiguration mit der Hälfte der Speicherkanäle gerade stattfindet, und das Energiesteuerungs-Schaltungssystem fährt die Quellenkanäle herunter. Das Herunterfahren der Quellenkanäle kann gemäß einer Ausführungsform das Deaktivieren der Energieversorgung des Energiesteuerungs-Schaltungssystems für die Quellenkanäle, das Deaktivieren von Taktsignalen an das Speicherschaltungssystem für die Quellenkanäle, das Deaktivieren der Energieversorgung für Treiber und/oder andere Komponenten der Bitübertragungsschicht umfassen, welche den Betrieb der Quellenkanäle unterstützen.
  • In einer Ausführungsform kann statt einer Umwandlung auf die halbe Anzahl der Speicherkanäle oder eine Einkanalkonfiguration das Computersystem dafür konfiguriert sein, den Hauptspeicher auf eine Ein-Rang-Konfiguration umzuwandeln (z.B. Daten und Operationen auf Rang 1 oder Rang 2 eines DIMM zu verschieben).
  • In einer Ausführungsform schreibt das DMA jede OS-Seite (z.B. Daten von 4 Kilobyte) in eine einzelne DRAM-Seite (z.B. eine einzelne Reihe in derselben Bank für alle Speicher-Dies auf dem Kanal 0), wenn es die Energiesenkung der Einkanalkonfiguration verbessern kann.
  • 5 ist ein Ablaufplan eines Verfahrens 500 zum dynamischen Rückumwandeln von Hauptspeicher von einer Konfiguration mit der Hälfte der Kanäle in eine ursprüngliche (Zweikanal- oder Mehrkanal-)Konfiguration gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung.
  • Bei der Operation 502 bestimmt ein Betriebssystem (OS) gemäß einer Ausführungsform, den Hauptspeicher von einer Konfiguration mit der Hälfte der Kanäle zurück umzuwandeln.
  • Bei der Operation 504 fordert das OS gemäß einer Ausführungsform den Beginn der Rückumwandlung von einer Konfiguration mit der Hälfte der Kanäle in eine ursprüngliche Speicherkonfiguration an. Das OS kann den Beginn der Rückumwandlung von der Konfiguration mit der Hälfte der Kanäle gemäß einer Ausführungsform durch Senden einer oder mehrerer Anforderungen in Programmcode anfordern. Das OS kann den Beginn der Rückumwandlung von der Konfiguration mit der Hälfte der Kanäle durch Ändern eines oder mehrerer Bits eines Registers für ein Energiesteuerungs-Schaltungssystem anfordern, welches dafür konfiguriert ist, die Umwandlung von einer Mehrkanalkonfiguration in eine Hauptspeicherkonfiguration mit der Hälfte der Speicherkanäle und umgekehrt zu verwalten.
  • Bei der Operation 506 bestimmen gemäß einer Ausführungsform das Energiesteuerungs-Schaltungssystem und/oder das Systemagent-Schaltungssystem, ob die Anforderung von dem OS akzeptabel ist. Wenn die Anforderung inakzeptabel ist, geht die Operation 506 gemäß einer Ausführungsform in die Operation 508 über, wo ein Fehler gemeldet wird. Wenn die Anforderung akzeptabel ist, geht die Operation 506 gemäß einer Ausführungsform in die Operation 510 über.
  • Bei der Operation 510 stellt das Energiesteuerungs-Schaltungssystem eine Anzeige bereit, dass die Rückumwandlung aus der Konfiguration mit der Hälfte der Kanäle gerade stattfindet, und das Energiesteuerungs-Schaltungssystem versorgt gemäß einer Ausführungsform die Speicherkanäle und Schaltungssysteme im SoC wieder mit Energie und beginnt die Rückumwandlung durch das Direktspeicherzugriffs(DMA)-Schaltungssystem. Die Umwandlung durch das DMA beginnt, indem dem DMA ein Befehl bereitgestellt wird, die Rückumwandlung zu beginnen, und indem dem DMA Quellen- und Zieladressen für die Datenübertragung bereitgestellt werden.
  • Bei der Operation 512 kopiert das DMA Quellenkanaldaten aus belegten (neu belegten) Segmenten der Zielkanäle zurück in die Segmente des Quellenkanals und gemäß einer Ausführungsform werden Transaktionen zu den Quellenkanälen zu ihrem ursprünglichen Ziel geführt. In einer Ausführungsform aktualisiert das DMA ein Statusregister mit einer Adresse der Quelladresse, die als letztes gelesen worden ist. In einer Ausführungsform aktualisiert das DMA ein Statusregister mit einer Adresse der Zieladresse, in die als letztes geschrieben worden ist. In einer Ausführungsform bestimmt das DMA oder eine Router-Logik, ob weitere Lese- oder Schreibzugriffsanforderungen zu einer alten Speicheradresse (z.B. Kanal 0) oder zu einer neuen Speicheradresse (z.B. Kanal 1) geführt werden sollten, basierend darauf, ob die Daten bereits von der alten Adresse übertragen worden sind.
  • Bei der Operation 514 meldet das DMA gemäß einer Ausführungsform den Abschluss der Rückumwandlung an das Energiesteuerungs-Schaltungssystem.
  • Bei der Operation 516 löscht das Energiesteuerungs-Schaltungssystem gemäß einer Ausführungsform eine Anzeige, dass die Umwandlung in die ursprüngliche Konfiguration gerade stattfindet, und unterstützende Schaltungssysteme und Komponenten zum Unterstützen der Operationen des zweiten Kanals sind hochgefahren worden.
  • Ein Beispiel für das Register und die Bits des Registers 127 (dargestellt in 1) sind in der nachstehenden Tabelle 1 enthalten. Wie hierin verwendet, kann sich „Pcode“ auf das Energiesteuerungs-Schaltungssystem oder auf Programmcode beziehen, der in einer intermediären kompilierten Sprache vorliegt, die zwischen Maschinencode und OS-Code liegt. Tabelle 1
    Feld Größe Zugriffstyp Kommentar
    Freie/Belegte Segmente 8b RW OS an Pcode, Bitanzeige je Speichersegment: '1 = frei, '0 = belegt
    Umwandleranforderung 3b RW OS an Pcode, Anforderung eines Zustandsübergangs. '000: Rückumwandeln in ursprüngliche Systemkonfiguration '001: Umwandeln in 64b-Speicher '010: Umwandeln in 32b-Speicher '011: Umwandeln in 1-Rang-Speicher Andere Varianten möglich, z.B. von 4 Rängen auf 2 Ränge
    Umwandlung/Rückumwandlung findet gerade statt 1b RO Pcode an OS, anzeigend, dass Zustandsänderung gerade stattfindet
    Umwandler-Status 3b RO Pcode an OS, Status verwendet gleiche Codierung wie Anforderung. Nur gültig, wenn das Gerade-stattfinden-Bit gelöscht ist
    Fehler 1b RW Pcode an OS, zeigt Unfähigkeit an, die Anforderung auszuführen. OS muss den Fehler beheben (z.B. mehr Segmente freimachen), das Fehlerbit löschen und neue Anforderung einstellen
  • In einer Ausführungsform ist das Register 16 Bits lang. 8 Bits des Registers können anzeigen, welche Segmente oder Abschnitte des Speichers frei oder belegt sind. 3 Bits des Registers können die Art der durchzuführenden Umwandlung anzeigen (z.B. 64-Bit-Einkanal, 32-Bit-Einkanal, eine Ein-Rang-Umwandlung oder Rückkehr in die ursprüngliche Konfiguration). 1 Bit kann verwendet werden, um anzuzeigen, ob eine Umwandlung oder Rückumwandlung gerade stattfindet. 3 Bits können verwendet werden, um anzuzeigen, welche Art von Umwandlung stattfindet und an das OS gesendet werden kann. 1 Bit kann verwendet werden, um anzuzeigen, ob ein Fehler vorliegt, der die Umwandlung unausführbar macht.
  • Obwohl die Schaubilder der 1A, 1B, 2, 3, 4 und 5 Operationen gemäß verschiedenen Ausführungsformen veranschaulichen, versteht es sich, dass für andere Ausführungsformen nicht alle der Operationen, die in 1A, 1B, 2, 3, 4 und 5 veranschaulicht sind, notwendig sind. Außerdem wird vollständig vorhergesehen, dass in anderen Ausführungsformen der vorliegenden Offenbarung die Operationen, die in 1A, 1B, 2, 3, 4 und 5 veranschaulicht sind, und/oder andere hierin beschriebene Operationen auf eine Weise kombiniert werden können, die in keiner der Zeichnungen speziell dargestellt ist, und solche Ausführungsformen können weniger oder mehr Operationen umfassen, als in 1A, 1B, 2, 3, 4 und 5 veranschaulicht. Somit sollen Ansprüche, die auf Merkmale und/oder Operationen gerichtet sind, die nicht exakt in einer Zeichnung dargestellt sind, vom Umfang und Inhalt der vorliegenden Offenbarung umfasst sein. Die nachstehenden Figuren stellen beispielhafte Architekturen und Systeme zum Realisieren von Ausführungsformen des Obigen detailliert dar. In einigen Ausführungsformen werden eine oder mehrere Hardware-Komponenten und/oder Befehle, die oben beschrieben werden, emuliert, wie nachstehend ausgeführt, oder als Software-Module realisiert.
  • Ausführungsformen des (der) oben detailliert beschriebenen Befehls (Befehle) können sind in einem „allgemeinen vektorfreundlichen Befehlsformat“ verkörpert sein, welches nachstehend ausgeführt wird. In anderen Ausführungsformen wird ein solches Format nicht verwendet und es wird ein anderes Befehlsformat verwendet, die nachstehende Beschreibung der Schreibmaskenregister, verschiedener Datenumwandlungen (Swizzle, Broadcast usw.), der Adressierung usw. ist jedoch allgemein auf die Beschreibung der Ausführungsformen des (der) obigen Befehls (Befehle) anwendbar. Außerdem werden nachstehend beispielhafte Systeme, Architekturen und Pipelines detailliert beschrieben. Ausführungsformen des (der) obigen Befehls (Befehle) können auf solchen Systemen, Architekturen und Pipelines ausgeführt werden, sind jedoch nicht auf diese detailliert beschriebenen beschränkt.
  • Ein Befehlssatz kann ein oder mehrere Befehlsformate umfassen. Ein gegebenes Befehlsformat kann verschiedene Felder (z.B. Anzahl an Bits, Position von Bits), um unter anderem die durchzuführende Operation (z.B. Opcode) und den (die) Operanden zu spezifizieren, an welchem (welchen) diese Operation auszuführen ist, und/oder ein anderes Datenfeld (andere Datenfelder) (z.B. Masken) definieren. Einige Befehlsformate werden durch die Definition von Befehlsschablonen (oder Unterformaten) weiter aufgeschlüsselt. Beispielsweise können die Befehlsschablonen eines gegebenen Befehlsformats so definiert sein, dass sie verschiedene Untergruppen der Felder des Befehlsformats aufweisen (die enthaltenen Felder sind typischerweise in derselben Reihenfolge, aber zumindest einige weisen andere Bitpositionen auf, da weniger Felder enthalten sind), und/oder so definiert sein, dass bei ihnen ein gegebenes Feld anders interpretiert wird. Somit wird jeder Befehl einer ISA unter Verwendung eines gegebenen Befehlsformats ausgedrückt (und, falls definiert, in einer gegebenen der Befehlsschablonen dieses Befehlsformats) und umfasst Felder zum Spezifizieren der Operation und der Operanden. Beispielsweise weist ein beispielhafter ADD-Befehl einen speziellen Opcode und ein Befehlsformat auf, welches ein Opcode-Feld zum Spezifizieren dieses Opcodes und Operanden-Felder zum Auswählen von Operanden umfasst (source1/destination und source2); und ein Auftreten dieses ADD-Befehls in einem Befehlsstrom bedeutet spezielle Inhalte in den Operandenfeldern, durch welche spezielle Operanden ausgewählt werden. Es ist ein Satz von SIMD-Erweiterungen ausgegeben und/oder veröffentlicht worden, welche als die Advanced Vector Extensions (AVX) (AVX1 und AVX2) bezeichnet werden und welche das Vector-Extensions(VEX)-Codierungsschema verwenden (siehe z.B. Intel® 64 and IA-32 Architectures Software Developer's Manual, September 2014; und siehe Intel® Advanced Vector Extensions Programming Reference, October 2014).
  • Beispielhafte Befehlsformate
  • Der (Die) hierin beschriebene(n) Befehl(e) kann (können) in verschiedenen Formaten verkörpert sein. Außerdem werden nachstehend beispielhafte Systeme, Architekturen und Pipelines detailliert beschrieben. Ausführungsformen des Befehls (der Befehle) können auf solchen Systemen, Architekturen und Pipelines ausgeführt werden, sind aber nicht auf diese detailliert beschriebenen beschränkt.
  • Allgemeines vektorfreundliches Befehlsformat
  • Ein vektorfreundliches Befehlsformat ist ein Befehlsformat, welches für Vektorbefehle geeignet ist (z.B. gibt es bestimmte Felder, die speziell für Vektoroperationen vorgesehen sind). Obwohl Ausführungsformen beschrieben werden, in welchen von dem vektorfreundlichen Befehlsformat sowohl Vektoroperationen als auch skalare Operationen unterstützt werden, werden in alternativen Ausführungsformen nur Vektoroperationen das vektorfreundliche Befehlsformat verwendet.
  • 6A-6B sind Blockschaubilder, welche ein allgemeines vektorfreundliches Befehlsformat und Befehlsschablonen davon gemäß Ausführungsformen der Offenbarung veranschaulichen. 6A ist ein Blockschaubild, welches ein allgemeines vektorfreundliches Befehlsformat und Klasse-A-Befehlsschablonen davon gemäß Ausführungsformen der Offenbarung veranschaulicht; während 6B ein Blockschaubild ist, welches das allgemeine vektorfreundliche Befehlsformat und Klasse-B-Befehlsschablonen davon gemäß Ausführungsformen der Offenbarung veranschaulicht. Speziell geht es um ein allgemeines vektorfreundliches Befehlsformat 600, für welches Klasse-A- und Klasse-B-Befehlsschablonen definiert sind, welche beide Befehlsschablonen ohne Speicherzugriff 605 und Befehlsschablonen mit Speicherzugriff 620 umfassen. Der Begriff „allgemeines“ im Zusammenhang mit dem vektorfreundlichen Befehlsformat bezieht sich darauf, dass das Befehlsformat nicht an einen speziellen Befehlssatz gebunden ist.
  • Obwohl Ausführungsformen der Offenbarung beschrieben werden, bei welchen das vektorfreundliche Befehlsformat Folgendes unterstützt: eine 64-Byte-Vektoroperandenlänge (oder -größe) mit 32-Bit(4-Byte-)- oder 64-Bit(8-Byte)-Datenelementbreiten (oder -größen) (und somit besteht ein 64-Byte-Vektor entweder aus 16 Elementen in Doppelwortgröße oder alternativ aus 8 Elementen in Quadwortgröße); eine 64-Byte-Vektoroperandenlänge (oder -größe) mit 16-Bit(2-Byte-)- oder 8-Bit(1-Byte)-Datenelementbreiten (oder -größen); eine 32-Byte-Vektoroperandenlänge (oder -größe) mit 32-Bit(4-Byte-)-, 64-Bit(8-Byte)-, 16-Bit(2-Byte)- oder 8-Bit(1-Byte)-Datenelementbreiten (oder -größen) und eine 16-Byte-Vektoroperandenlänge (oder -größe) mit 32-Bit(4-Byte-)-, 64-Bit(8-Byte)-, 16-Bit(2-Byte)- oder 8-Bit(1-Byte)-Datenelementbreiten (oder -größen); können alternative Ausführungsformen mehr, weniger und/oder andere Vektoroperandengrößen (z.B. 256-Byte-Vektoroperanden) mit mehr, weniger oder anderen Datenelementbreiten (z.B. 128-Bit(16-Byte)-Datenelementbreiten) unterstützen.
  • Die Klasse-A-Befehlsschablonen in 6A umfassen: 1) innerhalb der Befehlsschablonen ohne Speicherzugriff 605 sind eine Befehlsschablone ohne Speicherzugriff für Operationen des vollständigen Rundungssteuerungstyps 610 und eine Befehlsschablone ohne Speicherzugriff für Operationen des Datenumwandlungstyps 615 dargestellt; und 2) innerhalb der Befehlsschablonen mit Speicherzugriff 620 sind eine temporäre Befehlsschablone mit Speicherzugriff 625 und eine nicht-temporäre Befehlsschablone mit Speicherzugriff 630 dargestellt. Die Klasse-B-Befehlsschablonen in 6B umfassen: 1) innerhalb der Befehlsschablonen ohne Speicherzugriff 605 sind eine Schreibmaskensteuerungs-Befehlsschablone ohne Speicherzugriff für Operationen des partiellen Rundungssteuerungstyps 612 und eine Schreibmaskensteuerungs-Befehlsschablone ohne Speicherzugriff für Operationen des Vsize-Typs 617 dargestellt; und 2) innerhalb der Befehlsschablonen mit Speicherzugriff 620 ist eine Schreibmaskensteuerungs-Befehlsschablone mit Speicherzugriff 627 dargestellt.
  • Das allgemeine vektorfreundliche Befehlsformat 600 umfasst die folgenden Felder, die nachstehend in der Reihenfolge aufgelistet sind, wie in 6A-6B dargestellt.
  • Formatfeld 640 - ein spezieller Wert (ein Befehlsformat-Identifikatorwert) in diesem Feld identifiziert eindeutig das vektorfreundliche Befehlsformat und somit Auftreten von Befehlen in dem vektorfreundlichen Befehlsformat in Befehlsströmen. Daher ist dieses Feld optional in dem Sinn, dass es für einen Befehlssatz, der nur das allgemeine vektorfreundliche Befehlsformat aufweist, nicht benötigt wird.
  • Basisoperationsfeld 642 - sein Inhalt kennzeichnet verschiedene Basisoperationen.
  • Registerindexfeld 644 - sein Inhalt spezifiziert, direkt oder durch Adressenerzeugung, die Positionen der Quellen- und Zieloperanden, seien diese in Registern oder im Speicher. Diese umfassen eine ausreichende Anzahl an Bits zum Auswählen von N Registern aus einer PxQ-(z.B. 32x512-, 16x128-, 32x1024-, 64x1024-) Registerdatei. Obwohl es sich in einer Ausführungsform bei N um bis zu drei Quellen und ein Zielregister handeln kann, können alternative Ausführungsformen mehr oder weniger Quellen und Zielregister unterstützen (sie können z.B. bis zu zwei Quellen unterstützen, wobei eine dieser Quellen auch als das Ziel fungiert, sie können bis zu drei Quellen unterstützen, wobei eine dieser Quellen auch als das Ziel fungiert, sie können bis zu zwei Quellen und ein Ziel unterstützen).
  • Modifikatorfeld 646 - sein Inhalt unterscheidet auftretende Befehle in dem allgemeinen vektorfreundlichen Befehlsformat, welche einen Speicherzugriff spezifizieren, von jenen, die dies nicht tun; das heißt, zwischen Befehlsschablonen ohne Speicherzugriff 605 und Befehlsschablonen mit Speicherzugriff 620. Bei Speicherzugriffsoperationen wird aus der Speicherhierarchie gelesen und/oder in die Speicherhierarchie geschrieben (wobei in einigen Fällen die Quell- und/oder Zieladressen unter Verwendung von Werten in Registern spezifiziert werden), während dies bei Operationen ohne Speicherzugriff nicht geschieht (z.B. sind die Quelle und die Ziele Register). Während in einer Ausführungsform dieses Feld ebenfalls zwischen drei verschiedenen Wegen zur Durchführung von Speicheradressberechnungen unterscheidet, können alternative Ausführungsformen mehr, weniger oder andere Wege zur Durchführung von Speicheradressberechnungen unterstützen,
  • Zusatzoperationsfeld 650 - sein Inhalt kennzeichnet, welche aus einer Vielfalt von verschiedenen Operationen zusätzlich zu der Basisoperation auszuführen ist. Dieses Feld ist kontextspezifisch. In einer Ausführungsform der Offenbarung ist dieses Feld in ein Klassenfeld 668, ein Alphafeld 652 und ein Betafeld 654 unterteilt. Das Zusatzoperationsfeld 650 ermöglicht, dass gewöhnliche Gruppen von Operationen in einem einzigen Befehl statt in 2, 3 oder 4 Befehlen ausgeführt werden.
  • Skalierungsfeld 660 - sein Inhalt ermöglicht die Skalierung des Inhalts des Indexfelds zur Speicheradresserzeugung (z.B. zur Adresserzeugung, bei welcher 2Skalierung * Index + Basis angewendet wird).
  • Verschiebungsfeld 662A - sein Inhalt wird als Teil der Speicheradresserzeugung verwendet (z.B. zur Adresserzeugung, bei welcher 2Skalierung * Index + Basis + Verschiebung angewendet wird).
  • Verschiebungsfaktorfeld 662B (man beachte, dass durch das direkte Übereinanderstellen des Verschiebungsfelds 662A und des Verschiebungsfaktorfelds 662B angezeigt wird, dass das eine oder das andere verwendet wird) - sein Inhalt wird als Teil der Adresserzeugung verwendet; es spezifiziert einen Verschiebungsfaktor, welcher durch die Größe eines Speicherzugriffs (N) zu skalieren ist - wobei N die Anzahl an Bytes in dem Speicherzugriff ist (z.B. für eine Adresserzeugung, bei welcher 2Skalierung * Index + Basis + skalierte Verschiebung angewendet wird. Redundante niedrigstwertige Bits werden ignoriert und somit wird der Inhalt des Verschiebungsfaktorfelds mit der Gesamtgröße (N) der Speicheroperanden multipliziert, um die finale Verschiebung zu erzeugen, die bei der Berechnung einer tatsächlichen Adresse zu verwenden ist. Der Wert von N wird durch die Prozessor-Hardware in Laufzeit basierend auf dem (hierin nachstehend beschriebenen) Voll-Opcode-Feld 674 und dem Datenmanipulationsfeld 654C bestimmt. Das Verschiebungsfeld 662A und das Verschiebungsfaktorfeld 662B sind optional in dem Sinn, dass sie für die Befehlsschablonen ohne Speicherzugriff 605 nicht verwendet werden und/oder in anderen Ausführungsformen möglicherweise nur eines oder keines der beiden realisiert wird.
  • Datenelementbreitenfeld 664 - sein Inhalt kennzeichnet, welche aus einer Anzahl von Datenelementbreiten zu verwenden ist (in einigen Ausführungsformen für alle Befehle; in anderen Ausführungsformen nur einige der Befehle). Dieses Feld ist optional in dem Sinn, dass es nicht benötigt wird, wenn nur eine Datenelementbreite unterstützt wird und/oder Datenelementbreiten unter Verwendung einiger Aspekte der Opcodes unterstützt werden.
  • Schreibmaskenfeld 670 - sein Inhalt steuert auf einer Basis je Datenelementposition, ob diese Datenelementposition in dem Zielvektoroperanden das Ergebnis der Basisoperation und der Zusatzoperation reflektiert. Klasse-A-Befehlsschablonen unterstützen Merging-Schreibmaskierung, während Klasse-B-Befehlsschablonen sowohl Merging-Schreibmaskierung als auch Nullsetzungs-Schreibmaskierung unterstützen. Beim Merging ermöglichen Vektormasken, dass jede Gruppe von Elementen in dem Ziel während der Ausführung jeder Operation (spezifiziert durch die Basisoperation und die Zusatzoperation) vor Aktualisierungen geschützt wird; in einer anderen Ausführungsform wird der alte Wert jedes Elements des Ziels behalten, wo das entsprechende Maskenbit eine 0 aufweist. Bei der Nullsetzung hingegen ermöglichen Vektormasken, dass jede Gruppe von Elementen in dem Ziel während der Ausführung jeder Operation (spezifiziert durch die Basisoperation und die Zusatzoperation) auf Null gesetzt wird; in einer Ausführungsform wird ein Element des Ziels auf Null gesetzt, wenn das entsprechende Maskenbit einen Wert 0 aufweist. Eine Untergruppe dieser Funktionalität ist die Fähigkeit, die Vektorlänge der Operation, die durchgeführt wird, (also die Spanne von Elementen, die modifiziert werden, vom ersten bis zum letzten) zu steuern; es ist jedoch nicht notwendig, dass die Elemente, die modifiziert werden, aufeinander folgen. Somit ermöglicht das Schreibmaskenfeld 670 partielle Vektoroperationen, umfassend Laden, Speichern, arithmetische, logische usw. Obwohl Ausführungsformen der Offenbarung beschrieben werden, in welchen der Inhalt des Schreibmaskenfelds 670 eines aus einer Anzahl von Schreibmaskenregistern auswählt, welches die zu verwendende Schreibmaske enthält (und somit der Inhalt des Schreibmaskenfelds 670 indirekt identifiziert, dass eine Maskierung durchzuführen ist), ermöglichen alternative Ausführungsformen stattdessen oder zusätzlich, dass der Inhalt des Schreibmaskenfelds 670 direkt die durchzuführende Maskierung spezifiziert.
  • Immediatfeld 672 - sein Inhalt ermöglicht die Spezifikation eines Immediats. Dieses Feld ist optional in dem Sinn, dass es nicht vorhanden ist in einer Realisierung des allgemeinen vektorfreundlichen Formats, die kein Immediat unterstützt, und nicht vorhanden ist in Befehlen, die kein Immediat verwenden.
  • Klassenfeld 668 - sein Inhalt unterscheidet zwischen verschiedenen Klassen von Befehlen. In Bezug auf 6A-B wählen die Inhalte dieses Feldes zwischen Klasse-A- und Klasse-B-Befehlen aus. In 6A-B werden Quadrate mit abgerundeten Ecken verwendet, um anzuzeigen, dass in einem Feld ein spezieller Wert vorliegt (z.B. Klasse A 668A bzw. Klasse B 668B für das Klassenfeld 668 in 6A-B).
  • Befehlsschablonen der Klasse A
  • Im Fall der Befehlsschablonen ohne Speicherzugriff 605 der Klasse A wird das Alphafeld 652 als ein RS-Feld 652A interpretiert, dessen Inhalt kennzeichnet, welcher der verschiedenen Zusatzoperationstypen auszuführen ist (z.B. sind Runden 652A.1 und Datenumwandlung 652A.2 für die Befehlsschablonen für Operationen des Rundungstyps ohne Speicherzugriff 610 bzw. für die Befehlsschablonen für Operationen des Datenumwandlungstyps ohne Speicherzugriff 615 spezifiziert), während das Betafeld 654 kennzeichnet, welche der Operationen des spezifizierten Typs auszuführen ist. In den Befehlsschablonen ohne Speicherzugriff 605 sind das Skalierungsfeld 660, das Verschiebungsfeld 662A und das Verschiebungsskalierungsfeld 662B nicht vorhanden.
  • Befehlsschablonen ohne Speicherzugriff - Operation des vollständigen Rundungssteuerungstyps
  • In der Befehlsschablone ohne Speicherzugriff 610 für Operationen des vollständigen Rundungssteuerungstyps wird das Betafeld 654 als ein Rundungssteuerungsfeld 654A interpretiert, dessen Inhalt(e) für eine statische Rundung sorgt (sorgen). Während in den beschriebenen Ausführungsformen der Offenbarung das Rundungssteuerungsfeld 654A ein Alle-Gleitkomma-Ausnahmen-Unterdrücken(Suppress All Floating Point Exceptions, SAE)-Feld 656 und ein Rundungsoperations-Steuerungsfeld 658 umfasst, können alternative Ausführungsformen diese beiden Konzepte in demselben Feld unterstützen können codieren oder nur das eine oder das andere dieser Konzepte/Felder aufweisen (z.B. nur das Rundungsoperations-Steuerungsfeld 658 aufweisen).
  • SAE-Feld 656 - sein Inhalt kennzeichnet, ob die Ausnahmeereignismeldung zu deaktivieren ist oder nicht; wenn der Inhalt des SAE-Felds 656 anzeigt, dass eine Unterdrückung aktiviert ist, meldet ein gegebener Befehl keine Art von Gleitkomma-Ausnahme-Flag und erhöht keinen Gleitkomma-Ausnahme-Handler.
  • Rundungsoperations-Steuerungsfeld 658 - sein Inhalt kennzeichnet, welche aus einer Gruppe von Rundungsoperationen auszuführen ist (z.B. Aufrunden, Abrunden, Runden in Nullrichtung, Runden auf das Nächstgelegene). Somit ermöglicht das Rundungsoperations-Steuerungsfeld 658 die Änderung des Rundungsmodus auf einer Basis je Befehl. In einer Ausführungsform der Offenbarung, wobei ein Prozessor ein Steuerregister zum Spezifizieren von Rundungsmodi umfasst, hebt der Inhalt des Rundungsoperations-Steuerungsfelds 650 diesen Registerwert auf.
  • Befehlsschablonen ohne Speicherzugriff - Operation des Datenumwandlungstyps
  • In der Befehlsschablone ohne Speicherzugriff für Operationen des Datenumwandlungstyps 615 wird das Betafeld 654 als ein Datenumwandlungsfeld 654B interpretiert, dessen Inhalt kennzeichnet, welche aus einer Anzahl von Datenumwandlungen durchzuführen ist (z.B. keine Datenumwandlung, Swizzle, Broadcast).
  • Im Fall einer Befehlsschablone mit Speicherzugriff 620 der Klasse A wird das Alphafeld 652 als ein Räumungshinweisfeld 652B interpretiert, dessen Inhalt kennzeichnet, welcher der Räumungshinweise zu verwenden ist (in 6A sind temporär 652B. 1 und nicht-temporär 652B.2 für die temporäre Befehlsschablone mit Speicherzugriff 625 bzw. die nicht-temporäre Befehlsschablone mit Speicherzugriff 630 spezifiziert), während das Betafeld 654 als ein Datenmanipulationsfeld 654C interpretiert wird, dessen Inhalt kennzeichnet, welche aus einer Anzahl von Datenmanipulationsoperationen (auch als Grundoperationen bekannt) auszuführen ist (z.B. keine Manipulation; Broadcast; Aufwärtsumwandlung einer Quelle und Abwärtsumwandlung eines Ziels). Die Befehlsschablonen mit Speicherzugriff 620 umfassen das Skalierungsfeld 660 und gegebenenfalls das Verschiebungsfeld 662A oder das Verschiebungsskalierungsfeld 662B.
  • Vektorspeicherbefehle führen Vektorladevorgänge aus dem Speicher und Vektorspeicherungen in den Speicher mit Umwandlungsunterstützung durch. Wie bei regulären Vektorbefehlen übertragen Vektorspeicherbefehle Daten datenelementweise vom/zum Speicher, wobei die Elemente, die aktuell übertragen werden, von den Inhalten der Vektormaske bestimmt werden, die als die Schreibmaske ausgewählt wird.
  • Befehlsschablonen mit Speicherzugriff - Temporär
  • Temporäre Daten sind Daten, die wahrscheinlich früh genug wiederverwendet werden, um von einer Cache-Speicherung zu profitieren. Dies ist jedoch ein Hinweis und unterschiedliche Prozessoren können ihn auf unterschiedliche Weisen anwenden, einschließlich völligen Ignorierens des Hinweises.
  • Befehlsschablonen mit Speicherzugriff - Nicht-Temporär
  • Nicht-temporäre Daten sind Daten, für die es unwahrscheinlich ist, dass sie früh genug wiederverwendet werden, um von einer Cache-Speicherung im Level-1-Cache zu profitieren, und die Räumungspriorität erhalten sollten. Dies ist jedoch ein Hinweis und unterschiedliche Prozessoren können ihn auf unterschiedliche Weisen anwenden, einschließlich völligen Ignorierens des Hinweises.
  • Befehlsschablonen der Klasse B
  • Im Fall der Befehlsschablonen der Klasse B wird das Alphafeld 652 als ein Schreibmaskensteuerungs(Z)-Feld 652C interpretiert, dessen Inhalt kennzeichnet, ob die vom Schreibmaskenfeld 670 gesteuerte Schreibmaskierung ein Merging oder eine Nullsetzung sein sollte.
  • Im Fall der Befehlsschablonen ohne Speicherzugriff 605 der Klasse B wird ein Teil des Betafelds 654 als ein RL-Feld 657A interpretiert, dessen Inhalt kennzeichnet, welcher der verschiedenen Zusatzoperationstypen auszuführen ist (z.B. sind Runden 657A. 1 und Vektorlänge (VSIZE) 657a.2 für die Befehlsschablone ohne Speicherzugriff für Schreibmaskensteuerungsoperationen des partiellen Rundungssteuerungstyps 612 bzw. die Befehlsschablone ohne Speicherzugriff für Schreibmaskensteuerungsoperationen des VSIZE-Typs 617 spezifiziert), während der Rest des Betafelds 654 kennzeichnet, welche der Operationen des spezifizierten Typs auszuführen ist. In den Befehlsschablonen ohne Speicherzugriff 605 sind das Skalierungsfeld 660, das Verschiebungsfeld 662A und das Verschiebungsskalierungsfeld 662B nicht vorhanden.
  • Bei der Befehlsschablone ohne Speicherzugriff für Schreibmaskensteuerungsoperationen des partiellen Rundungssteuerungstyps 610 wird der Rest des Betafelds 654 als ein Rundungsoperationsfeld 659A interpretiert und die Ausnahmeereignismeldung ist deaktiviert (ein gegebener Befehl meldet keine Art von Gleitkomma-Ausnahme-Flag und erhöht keinen Gleitkomma-Ausnahme-Handler).
  • Rundungsoperations-Steuerungsfeld 659A - genau wie das Rundungsoperations-Steuerungsfeld 658 kennzeichnet sein Inhalt, welche aus einer Gruppe von Rundungsoperationen auszuführen ist (z.B. Aufrunden, Abrunden, Runden in Nullrichtung, Runden auf das Nächstgelegene). Somit ermöglicht das Rundungsoperations-Steuerungsfeld 659A die Änderung des Rundungsmodus auf einer Basis je Befehl. In einer Ausführungsform der Offenbarung, wobei ein Prozessor ein Steuerregister zum Spezifizieren von Rundungsmodi umfasst, hebt der Inhalt des Rundungsoperations-Steuerungsfelds 650 diesen Registerwert auf.
  • In der Befehlsschablone ohne Speicherzugriff für Schreibmaskensteuerungsoperationen des VSIZE-Typs 617 wird der Rest des Betafelds 654 als ein Vektorlängenfeld 659B interpretiert, dessen Inhalt kennzeichnet, mit welcher aus einer Anzahl von Datenvektorlängen zu arbeiten ist (z.B. 128, 256 oder 512 Bytes).
  • Im Fall einer Befehlsschablonen mit Speicherzugriff 620 der Klasse B wird ein Teil des Betafelds 654 als ein Broadcast-Feld 657B interpretiert, dessen Inhalt kennzeichnet, ob eine Datenmanipulationsoperation des Broadcast-Typs auszuführen ist oder nicht, während der Rest des Betafelds 654 als das Vektorlängenfeld 659B interpretiert wird. Die Befehlsschablonen mit Speicherzugriff 620 umfassen das Skalierungsfeld 660 und gegebenenfalls das Verschiebungsfeld 662A oder das Verschiebungsskalierungsfeld 662B.
  • In Bezug auf das allgemeine vektorfreundliche Befehlsformat 600 ist ein Voll-Opcode-Feld 674 dargestellt, welches das Formatfeld 640, das Basisoperationsfeld 642 und das Datenelementbreitenfeld 664 umfasst. Während eine Ausführungsform dargestellt ist, wobei das Voll-Opcode-Feld 674 all diese Felder umfasst, umfasst das Voll-Opcode-Feld 674 weniger als alle dieser Felder in Ausführungsformen, welche nicht alle von diesen unterstützen. Das Voll-Opcode-Feld 674 stellt den Operations-Code (Opcode) bereit.
  • Das Zusatzoperationsfeld 650, das Datenelementbreitenfeld 664 und das Schreibmaskenfeld 670 ermöglichen, dass diese Merkmale in dem allgemeinen vektorfreundlichen Befehlsformat auf einer Basis je Befehl spezifiziert werden.
  • Die Kombination aus Schreibmaskenfeld und Datenelementbreitenfeld erzeugt typisierte Befehle dadurch, dass sie ermöglicht, dass die Maske auf Basis verschiedener Datenelementbreiten angewendet wird.
  • Die verschiedenen Befehlsschablonen, die sich in der Klasse A und der Klasse B finden, sind in verschiedenen Situationen von Vorteil. In einigen Ausführungsformen der Offenbarung können verschiedene Prozessoren oder verschiedene Kerne innerhalb eines Prozessors nur die Klasse A, nur die Klasse B oder beide Klassen unterstützen. Beispielsweise kann ein Out-of-Order-Hochleistungs-Universalkern, der für allgemeine Berechnungen vorgesehen ist, nur die Klasse B unterstützen, ein Kern, der hauptsächlich für Graphik- und/oder wissenschaftliche Berechnungen (Durchsatzberechnungen) vorgesehen ist, kann nur die Klasse A unterstützen, und ein Kern, der für beides vorgesehen ist, kann beide unterstützen (natürlich ist ein Kern, der eine bestimmte Mischung von Schablonen und Befehlen aus beiden Klassen, aber nicht alle Schablonen und Befehle aus beiden Klassen aufweist, vom Umfang der Offenbarung umfasst). Außerdem kann ein einzelner Prozessor mehrere Kerne umfassen, von denen alle die gleiche Klasse unterstützen oder in welchen unterschiedliche kerne unterschiedliche Klassen unterstützen. Beispielsweise kann in einem Prozessor mit separaten Graphik- und Universal kernen einer der Graphikkerne, die hauptsächlich für Graphik- und/oder wissenschaftliche Berechnungen vorgesehen sind, nur die Klasse A unterstützen, während einer oder mehrere der Universalkerne Hochleistungs-Universalkerne mit Out-of-Order-Ausführung und Registerumbenennung sein können, die für allgemeine Berechnungen vorgesehen sind, welche nur die Klasse B unterstützen. Ein anderer Prozessor, der keinen separaten Graphikkern aufweist, kann einen oder mehrere In-Order- oder Out-of-Order-Universalkerne aufweisen, welche sowohl die Klasse A als auch die Klasse B unterstützen. Natürlich können in anderen Ausführungsformen der Offenbarung Merkmale aus einer Klasse auch in der anderen Klasse realisiert werden. Programme, die in einer höheren Sprache geschrieben sind, werden in eine Vielfalt verschiedener ausführbarer Formen gebracht (z.B. Just-in-Time-kompiliert oder statisch kompiliert), umfassend: 1) eine Form, welche nur Befehle der Klasse(n) aufweist, die von dem Zielprozessor zur Ausführung unterstützt wird (werden); oder 2) eine Form, welche alternative Routinen aufweist, die unter Verwendung verschiedener Kombinationen der Befehle aller Klassen geschrieben sind, und welche einen Steuerungsablauf-Code aufweist, der die Routinen zum Ausführen basierend auf den Befehlen auswählt, die von dem Prozessor unterstützt werden, welcher den Code aktuell ausführt.
  • Beispielhaftes spezielles vektorfreundliches Befehlsformat
  • 7 ist ein Blockschaubild, welches ein beispielhaftes spezielles vektorfreundliches Befehlsformat gemäß Ausführungsformen der Offenbarung veranschaulicht. 7 zeigt ein spezielles vektorfreundliches Befehlsformat 700, welches in dem Sinn speziell ist, dass es die Position, Größe, Interpretation und Reihenfolge der Felder spezifiziert, ebenso wie Werte für einige dieser Felder. Das spezielle vektorfreundliche Befehlsformat 700 kann verwendet werden, um den x86-Befehlssatz zu erweitern, und somit sind einige der Felder ähnliche oder die gleichen wie jene, die in dem existierenden x86-Befehlssatz und einer Erweiterung davon (z.B. AVX) verwendet werden. Dieses Format bleibt vereinbar mit dem Präfix-Codierungsfeld, dem Real-Opcode-Byte-Feld, dem MOD-R/M-Feld, dem SIB-Feld, dem Verschiebungsfeld und den Immediat-Feldern des existierenden x86-Befehlssatzes mit Erweiterungen. Die Felder aus 6, in welche die Felder aus 7 abgebildet werden, werden veranschaulicht.
  • Es versteht sich, dass, obwohl die Ausführungsformen der Offenbarung zu Veranschaulichungszwecken in Bezug auf das spezielle vektorfreundliche Befehlsformat 700 im Kontext des allgemeinen vektorfreundlichen Befehlsformats 600 beschrieben werden, die Offenbarung nicht auf das spezielle vektorfreundliche Befehlsformat 700 beschränkt ist, außer, wo dies beansprucht ist. Beispielsweise sieht das allgemeine vektorfreundliche Befehlsformat 600 eine Vielfalt möglicher Größen für die verschiedenen Felder vor, während das spezielle vektorfreundliche Befehlsformat 700 so dargestellt ist, dass es Felder spezieller Größen aufweist. Als spezielles Beispiel ist, obwohl das Datenelementbreitefeld 664 in dem speziellen vektorfreundlichen Befehlsformat 700 als Ein-Bit-Feld dargestellt ist, die Offenbarung nicht darauf beschränkt (das heißt, in dem allgemeinen vektorfreundlichen Befehlsformat 600 sind andere Größen des Datenelementbreitefelds 664 vorgesehen).
  • Das allgemeine vektorfreundliche Befehlsformat 600 umfasst die folgenden Felder, die nachstehend in der Reihenfolge aufgelistet sind, wie in 7A dargestellt.
  • EVEX-Präfix (Bytes 0 bis 3) 702 - ist in einer Vier-Byte-Form codiert.
  • Formatfeld 640 (EVEX-Byte 0, Bits [7:0]) - das erste Byte (EVEX-Byte 0) ist das Formatfeld 640 und es enthält 0x62 (den eindeutigen Wert, der in einer Ausführungsform der Offenbarung zum Kennzeichnen des vektorfreundlichen Befehlsformats verwendet wird).
  • Das zweite bis vierte Byte (EVEX-Bytes 1 bis 3) umfassen eine Anzahl von Bitfeldern, die eine spezielle Fähigkeit bereitstellen.
  • REX-Feld 705 (EVEX-Byte 1, Bits [7 bis 5]) - besteht aus einem EVEX.R-Bitfeld (EVEX-Byte 1, Bit [7] - R), einem EVEX.X-Bitfeld (EVEX-Byte 1, Bit [6] - X), und 657BEX-Byte 1, Bit [5] - B). The EVEX.R-, EVEX.X-, and EVEX.B-Bitfelder stellen dieselbe Funktionalität bereit wie die entsprechenden VEX-Bitfelder und werden codiert unter Verwendung der Einerkomplementform, d.h. ZMM0 wird als 1111B codiert, ZMM15 wird als 0000B codiert. Andere Felder der Befehle codieren die niedrigwertigeren drei Bits der Registerindizes, wie es auf dem Fachgebiet bekannt ist (rrr, xxx und bbb), so dass Rrrr, Xxxx, und Bbbb gebildet werden können durch Hinzufügen von EVEX.R, EVEX.X und EVEX.B.
  • REX'-Feld 610 - dieses ist der erste Teil des REX'-Felds 610 und ist das EVEX.R'-Bitfeld (EVEX-Byte 1, Bit [4] - R'), das verwendet wird, um entweder die höchstwertigen 16 oder die niedrigstwertigen 16 des erweiterten 32-Register-Satzes zu codieren. In einer Ausführungsform der Offenbarung wird dieses Bit zusammen mit anderen, wie nachstehend angegeben, in einem Bit-invertierten Format gespeichert, um es (in dem wohlbekannten x86-32-Bit-Modus) von dem BOUND-Befehl zu unterscheiden, dessen Real-Opcode-Byte 62 ist, aber in dem (nachstehend beschriebenen) MOD-R/M-Feld nicht den Wert 11 im MOD-Feld akzeptiert. In alternativen Ausführungsformen der Offenbarung werden dieses und die anderen nachstehend angegebenen Bits nicht in dem invertierten Format gespeichert. Ein Wert von 1 wird verwendet, um die unteren 16 Register zu codieren. Mit anderen Worten, R'Rrrr wird durch Kombinieren von EVEX.R', EVEX.R und den anderen RRR aus anderen Feldern gebildet.
  • Opcode-Abbildungsfeld 715 (EVEX-Byte 1, Bits [3:0] - mmmm) - sein Inhalt codiert ein impliziertes voranstehendes Opcode-Byte (0F, 0F 38 oder 0F 3).
  • Datenelementbreitefeld 664 (EVEX-Byte 2, Bit [7] - W) - wird durch die Notation EVEX.W dargestellt. EVEX.W wird verwendet, um die Granularität (Größe) des Datentyps zu definieren (entweder 32-Bit-Datenelemente oder 64-Bit-Datenelemente).
  • EVEX.vwv 720 (EVEX-Byte 2, Bits [6:3] - vvvv) - die Rolle von EVEX.vwv kann Folgendes umfassen: 1) EVEX.vwv codiert den ersten Quellenregisteroperanden, spezifiziert in invertierter Form (Einerkomplement), und ist gültig für Befehle mit 2 oder mehr Quellenoperanden; 2) EVEX.vvvv codiert den Zielregisteroperanden, spezifiziert in Einerkomplementform, für bestimmte Vektorverschiebungen; oder 3) EVEX.vvvv codiert keinen Operanden, das Feld ist reserviert und sollte 1111b enthalten. Somit codiert das EVEX.vvw-Feld 720 die 4 niedrigstwertigen Bits des ersten Quellenregisterspezifikators, gespeichert invertierter Form (Einerkomplementform). In Abhängigkeit von dem Befehl wird ein zusätzliches anderes EVEX-Bitfeld verwendet, um die Spezifikatorgröße auf 32 Register zu erweitern.
  • EVEX.U-Klassenfeld 668 (EVEX-Byte 2, Bit [2] - U) - Wenn EVEX.U = 0, zeigt es Klasse A oder EVEX.U0 an; wenn EVEX.U = 1, zeigt es Klasse B oder EVEX.U1 an.
  • Präfix-Codierungsfeld 725 (EVEX-Byte 2, Bits [1:0] - pp) - stellt weitere Bits für das Basisoperationsfeld bereit. Zusätzlich zum Bereitstellen von Unterstützung für die alten SSE-Befehle im EVEX-Präfix-Format hat dies auch den Vorteil, das SIMD-Präfix zu verdichten (anstatt dass ein Byte benötigt wird, um das SIMD-Präfix auszudrücken, benötigt das EVEX-Präfix nur 2 Bits). In einer Ausführungsform werden zum Unterstützen der alten SSE-Befehle, welche ein SIMD-Präfix verwenden (66H, F2H, F3H), sowohl im alten Format als auch im EVEX-Präfix-Format, diese alten SIMD-Präfixes in dem SIMD-Präfix-Codierungsfeld codiert; und werden in Laufzeit in das alte SIMD-Präfix ausgedehnt, bevor sie dem PLA des Decoders bereitgestellt werden (so dass das PLA ohne Modifikation sowohl das alte Format als auch das EVEX-Format dieser alten Befehle ausführen kann). Obwohl neuere Befehle den Inhalt des EVEX-Präfix-Codierungsfelds direkt als eine Opcode-Erweiterung nutzen könnten, dehnen bestimmte Ausführungsformen zur Vereinheitlichung in ähnlicher Weise aus, ermöglichen aber, dass durch diese alten SIMD-Präfixe andere Bedeutungen spezifiziert werden. In einer alternativen Ausführungsform kann das PLA so umgestaltet werden, dass die 2-Bit-SIMD-Präfix-Codierungen unterstützt werden und somit die Ausdehnung nicht benötigt wird.
  • Alphafeld 652 (EVEX-Byte 3, Bit [7] - EH; auch bekannt als EVEX.EH, EVEX.rs, EVEX.RL, EVEX.write mask control und EVEX.N; auch mit α dargestellt) - wie bereits beschrieben, ist dieses Feld kontextspezifisch.
  • Betafeld 654 (EVEX-Byte 3, Bits [6:4] - SSS, auch bekannt als EVEX.S2-0, EVEX.r2-0, EVEX.rr1, EVEX.LL0, EVEX.LLB; auch mit βββ dargestellt) - wie bereits beschrieben, ist dieses Feld kontextspezifisch.
  • REX'-Feld 610 - dies ist der Rest des REX'-Felds und ist das EVEX.V'-Bitfeld (EVEX-Byte 3, Bit [3] - V'), welches verwendet werden kann, um entweder die höchstwertigen 16 oder die niedrigstwertigen 16 des erweiterten 32-Register-Satzes zu codieren. Dieses Bit wird in einem Bit-invertierten Format gespeichert. Ein Wert von 1 wird verwendet, um die niedrigwertigeren 16 Register zu codieren. Mit anderen Worten, V'VVVV wird durch Kombinieren von EVEX.V', EVEX.vwv gebildet.
  • Schreibmaskenfeld 670 (EVEX-Byte 3, Bits [2:0] - kkk) - sein Inhalt spezifiziert den Index eines Registers in den Schreibmaskenregistern, wie bereits beschrieben. In einer Ausführungsform der Offenbarung weist der spezielle Wert EVEX.kkk = 000 ein spezielles Verhalten auf, welches impliziert, dass für den speziellen Befehl keine Schreibmaske verwendet wird (dies kann auf vielerlei Weisen realisiert werden, einschließlich der Verwendung einer Schreibmaske, die mit allen festverdrahtet ist, oder einer Hardware, welche die Maskierungs-Hardware umgeht).
  • Real-Opcode-Feld 730 (Byte 4) - ist auch als das Opcode-Byte bekannt. Ein Teil des Opcodes ist in diesem Feld spezifiziert.
  • MOD-R/M-Feld 740 (Byte 5) - umfasst das MOD-Feld 742, das Reg-Feld 744 und das R/M-Feld 746. Wie bereits beschrieben, unterscheidet der Inhalt des MOD-Felds 742 zwischen Operationen mit und ohne Speicherzugriff. Die Rolle des Reg-Felds 744 kann auf zwei Situationen zusammengefasst werden: es codiert entweder den Zielregisteroperanden oder einen Quellenregisteroperanden oder es wird als eine Opcode-Erweiterung behandelt und nicht verwendet, um einen Befehlsoperanden zu codieren. Die Rolle des R/M-Felds 746 kann Folgendes umfassen: es codiert den Befehlsoperanden, der eine Speicheradresse referenziert, oder es codiert entweder den Zielregisteroperanden oder einen Quellenregisteroperanden.
  • Skalierungs-, Index-, Basis(SIB)-Byte (Byte 6) - Wie bereits beschrieben, wird der Inhalt des Skalierungsfelds 650 zur Speicheradressenerzeugung verwendet. SIB.xxx 754 und SIB.bbb 756 -die Inhalte dieser Felder sind bereits in Bezug auf die Registerindizes Xxxx and Bbbb beschrieben worden.
  • Verschiebungsfeld 662A (Bytes 7 bis 10) - wenn das MOD-Feld 742 10 enthält, sind die Bytes 7 bis 10 das Verschiebungsfeld 662A, und es funktioniert genauso wie bei der alten 32-Bit-Verschiebung (disp32) and funktioniert mit Byte-Granularität.
  • Verschiebungsfaktorfeld 662B (Byte 7) - wenn das MOD-Feld 742 01 enthält, ist das Byte 7 das Verschiebungsfaktorfeld 662B. Die Position dieses Felds ist die gleiche wie die bei der alten x86-Befehlssatz-8-Bit-Verschiebung (disp8), welche mit Byte-Granularität funktioniert. Da disp8 vorzeichenerweitert ist, kann sie nur Verschiebungen zwischen -128 Bytes und 127 Bytes adressieren; in Bezug auf 64-Byte-Cache-Zeilen werden bei disp8 8 Bits verwendet, welche auf nur vier wirklich geeignete Werte -128, -64, 0 und 64 gesetzt werden können; da oft ein größerer Bereich benötigt wird, wird disp32 verwendet; disp32 benötigt jedoch 4 Bytes. Im Gegensatz zu disp8 und disp32 ist das Verschiebungsfaktorfeld 662B eine Neuinterpretation von disp8; wenn das Verschiebungsfaktorfeld 662B verwendet wird, wird die aktuelle Verschiebung bestimmt durch den Inhalt des Verschiebungsfaktorfelds multipliziert mit der Größe des Speicheroperandenzugriffs (N). Diese Art von Verschiebung wird als disp8*N bezeichnet. Dies verringert die mittlere Befehlslänge (für die Verschiebung von einem einzigen Byte verwendet, aber mit einem viel größeren Bereich). Eine solche komprimierte Verschiebung basiert auf der Annahme, dass die sich ergebende Verschiebung ein Vielfaches der Granularität des Speicherzugriffs ist und somit die redundanten niedrigstwertigen Bits der Adressenversetzung nicht codiert werden müssen. Mit anderen Worten, das Verschiebungsfaktorfeld 662B ersetzt die alte x86-Befehlssatz-8-Bit-Verschiebung. Somit wird das Verschiebungsfaktorfeld 662B auf dieselbe Weise codiert wie bei einer x86-Befehlssatz-8-Bit-Verschiebung (also keine Änderungen in den ModRMISIB-Codierungsregeln), mit der einzigen Ausnahme, dass disp8 zu disp8*N überführt wird. Mit anderen Worten, es gibt keine Veränderungen in den Codierungsregeln oder Codierungslängen, sondern nur in der Interpretation des Verschiebungswerts durch Hardware (welche die Skalierung mit der Größe des Speicheroperanden skalieren muss, um eine Byte-weise Adressenversetzung zu erhalten). Das Immediat-Feld 672 operiert, wie bereits beschrieben.
  • Voll-Opcode-Feld
  • 7B ist ein Blockschaubild, welches die Felder des speziellen vektorfreundlichen Befehlsformats 700, die das Voll-Opcode-Feld 674 ausmachen, gemäß einer Ausführungsform der Offenbarung veranschaulicht. Speziell umfasst das Voll-Opcode-Feld 674 das Formatfeld 640, das Basisoperationsfeld 642 und das Datenelementbreite(W)-Feld 664. Das Basisoperationsfeld 642 umfasst das Präfix-Codierungsfeld 725, das Opcode-Abbildungsfeld 715 und das Real-Opcode-Feld 730.
  • Registerindexfeld
  • 7C ist ein Blockschaubild, welches die Felder des speziellen vektorfreundlichen Befehlsformats 700, die das Registerindexfeld 644 ausmachen, gemäß einer Ausführungsform der Offenbarung veranschaulicht. Speziell umfasst das Registerindexfeld 644 das REX-Feld 705, das REX'-Feld 710, das MODR/M.reg-Feld 744, das MODR/M.r/m-Feld 746, das VVVV-Feld 720, das xxx-Feld 754 und das bbb-Feld 756.
  • Zusatzoperationsfeld
  • 7D ist ein Blockschaubild, welches die Felder des speziellen vektorfreundlichen Befehlsformats 700, die das Zusatzoperationsfeld 650 ausmachen, gemäß einer Ausführungsform der Offenbarung veranschaulicht. Wenn das Klassenfeld 668 (U) 0 enthält, kennzeichnet es EVEX.U0 (Klasse A 668A); wenn es 1 enthält, kennzeichnet es EVEX.U1 (Klasse B 668B). Wenn U = 0 und das MOD-Feld 742 11 enthält (was eine Operation ohne Speicherzugriff kennzeichnet), wird das Alphafeld 652 (EVEX-Byte 3, Bit [7] - EH) als das rs-Feld 652A interpretiert. Wenn das rs-Feld 652A eine 1 enthält (Rundung 652A.1), wird das Betafeld 654 (EVEX-Byte 3, Bits [6:4] - SSS) als das Rundungssteuerungsfeld 654A interpretiert. Das Rundungssteuerungsfeld 654A umfasst ein Ein-Bit-SAE-Feld 656 und ein Zwei-Bit-Rundungsoperationsfeld 658. Wenn das rs-Feld 652A eine 0 enthält (Datenumwandlung 652A.2), wird das Betafeld 654 (EVEX-Byte 3, Bits [6:4] - SSS) als ein Drei-Bit-Datenumwandlungsfeld 654B interpretiert. Wenn U = 0 und das MOD-Feld 742 00, 01 oder 10 enthält (was eine Speicherzugriffsoperation kennzeichnet), wird das Alphafeld 652 (EVEX-Byte 3, Bit [7] - EH) als das Räumungshinweis(Eviction Hint, EH)-Feld 652B interpretiert und das Betafeld 654 (EVEX-Byte 3, Bits [6:4] - SSS) wird als ein Drei-Bit-Datenmanipulationsfeld 654C interpretiert.
  • Wenn U = 1, wird das Alphafeld 652 (EVEX-Byte 3, Bit [7] - EH) als das Schreibmasken-Steuerungsfeld (Z) 652C interpretiert. Wenn U = 1 und das MOD-Feld 742 11 enthält (was eine Operation ohne Speicherzugriff kennzeichnet), wird ein Teil des Betafelds (EVEX-Byte 3, Bit [4] - S0) als das RL-Feld 657A interpretiert; wenn es eine 1 enthält (Rundung 657A.1), wird der Rest des Betafelds 654 (EVEX-Byte 3, Bit [6-5] - S2-1) als das Rundungsoperationsfeld 659A interpretiert, während, wenn das RL-Feld 657A eine 0 enthält (VSIZE 657.A2), der Rest des Betafelds 654 (EVEX-Byte 3, Bit [6-5] - S2-1) als das Vektorlängenfeld 659B (EVEX-Byte 3, Bit [6-5] - L1-0) interpretiert wird. When U = 1 und das MOD-Feld 742 00, 01 oder 10 enthält (was eine Speicherzugriffsoperation anzeigt), wird das Betafeld 654 (EVEX-Byte 3, Bits [6:4] - SSS) als das Vektorlängenfeld 659B (EVEX-Byte 3, Bit [6-5] - L1-0) und das Broadcast-Feld 657B (EVEX-Byte 3, Bit [4] - B) interpretiert.
  • Beispielhafte Registerarchitektur
  • 8 ist ein Blockschaubild einer Registerarchitektur 800 gemäß einer Ausführungsform der Offenbarung. In der dargestellten Ausführungsform gibt es 32 Vektorregister 810, welche 512 Bits breit sind, diese Register werden als zmm0 bis zmm31 referenziert. Die 256 niedrigstwertigen Bits der unteren 16 zmm-Register werden auf die Register ymm0 bis ymm16 überführt. Die 128 niedrigstwertigen Bits der unteren 16 zmm-Register (die 128 niedrigstwertigen Bits der ymm-Register) werden auf die Register xmm0 bis xmm15 überführt. Das spezielle vektorfreundliche Befehlsformat 700 arbeitet mit dieser überführten Registerdatei, wie in den nachstehenden Tabellen veranschaulicht.
    Einstellbare Vektorlänge Klasse Operationen Register
    Befehlsschablonen, welche das Vektorlängenfeld 659B nicht umfassen A ( 6A; U=0) 610, 615, 625, 630 zmm-Register (die Vektorlänge beträgt 64 Byte)
    B ( 6B; U=1) 612 zmm-Register (die Vektorlänge beträgt 64 Byte)
    Befehlsschablonen, welche das Vektorlängenfeld 659B umfassen B ( 6B; U=1) 617, 627 zmm-, ymm-, oder xmm-Register (die Vektorlänge beträgt 64 Byte, 32 Byte oder 16 Byte), abhängig von dem Vektorlängenfeld 659B
  • Mit anderen Worten, das Vektorlängenfeld 659B wählt zwischen einer maximalen Länge und einer oder mehreren kürzeren Längen aus, wobei jede dieser kürzeren Längen die Hälfte der Länge der vorhergehenden Länge ist; und Befehlsschablonen ohne das Vektorlängenfeld 659B arbeiten mit der maximalen Vektorlänge. Ferner arbeiten in einer Ausführungsform die Klasse-B-Befehlsschablonen des speziellen vektorfreundlichen Befehlsformats 700 mit gepackten oder skalaren Gleitkommadaten mit einfacher/doppelter Genauigkeit und gepackten oder skalaren ganzzahligen Daten. Skalare Operationen sind Operationen, die an der niedrigstwertigen Datenelementposition in einem zmm/ymm/xmm-Register ausgeführt werden; die Datenelementpositionen höherer Wertigkeit werden in Abhängigkeit von der Ausführungsform entweder so belassen, wie sie vor dem Befehl waren, oder auf Null gesetzt.
  • Schreibmaskenregister 815 - in der veranschaulichten Ausführungsform gibt es 8 Schreibmaskenregister (k0 bis k7), jeweils mit einer Größe von 64 Bits. In einer alternativen Ausführungsform weisen die Schreibmaskenregister 815 eine Größe von 16 Bits auf. Wie bereits beschrieben, kann in einer Ausführungsform der Erfindung das Vektormaskenregister k0 nicht als eine Schreibmaske verwendet werden; wenn die Codierung, die normalerweise k0 anzeigt, für eine Schreibmaske verwendet wird, wählt sie eine festverdrahtete Schreibmaske von 0xFFFF aus, welche im Ergebnis eine Schreibmaskierung für diesen Befehl deaktiviert.
  • Universalregister 825 - in der veranschaulichten Ausführungsform gibt es sechzehn 64-Bit-Universalregister, welche zusammen mit den existierenden x86-Adressierungsmodi verwendet werden, um Speicheroperanden zu adressieren. Diese Register werden mit den Bezeichnungen RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP und R8 bis R15 referenziert.
  • Skalare Gleitkomma-Stapelregisterdatei (x87-Stapel) 845, auf welche die gepacktganzzahlige flache MMX-Registerdatei 850 aliasiert ist - in der veranschaulichten Ausführungsform ist der x87-Stapel ein Acht-Elemente-Stapel, der verwendet wird, um unter Verwendung der x87-Befehlssatzerweiterung skalare Gleitkommaoperationen an 32/64/80-Bit-Gleitkommadaten auszuführen; während die MMX-Register verwendet werden, um Operationen an gepackt-ganzzahligen 64-Bit-Daten auszuführen sowie um Operanden für einige Operationen zu enthalten, die zwischen den MMX- und XMM-Registern ausgeführt werden.
  • In alternativen Ausführungsformen der Offenbarung können breitere oder schmalere Register verwendet werden. Außerdem können in alternativen Ausführungsformen der Offenbarung mehr, weniger oder andere Registerdateien und Register verwendet werden.
  • Beispielhafte Kernarchitekturen, Prozessoren und Computerarchitekturen
  • Prozessorkerne können auf verschiedene Weisen, für verschiedene Zwecke und in verschiedenen Prozessoren realisiert werden. Beispielsweise können Realisierungen solcher Kerne umfassen: 1) einen In-Order-Universalkern, der für allgemeine Berechnungen vorgesehen ist; 2) einen Hochleistungs-Out-of-Order-Universalkern, der für allgemeine Berechnungen vorgesehen ist; 3) einen Spezialkern, der hauptsächlich für Graphik- und/oder wissenschaftliche Berechnungen (Durchsatzberechnungen) vorgesehen ist. Realisierungen verschiedener Prozessoren können umfassen: 1) eine CPU, welche einen oder mehrere In-Order-Universalkerne, die für allgemeine Berechnungen vorgesehen sind, und/oder einen oder mehrere Out-of-Order-Universalkerne umfasst, die für allgemeine Berechnungen vorgesehen sind; und 2) einen Coprozessor, welcher einen oder mehrere Spezialkerne umfasst, die hauptsächlich für Graphik- und/oder wissenschaftliche Berechnungen (Durchsatzberechnungen) vorgesehen sind. Solche verschiedenen Prozessoren führen zu verschiedenen Computersystemarchitekturen, welche umfassen können: 1) den Coprozessor auf einem von der CPU separaten Chip; 2) den Coprozessor auf einem separaten Die in demselben Package wie eine CPU; 3) den Coprozessor auf demselben Die wie eine CPU (wobei in diesem Fall ein solcher Coprozessor manchmal als eine Speziallogik, z.B. eine integrierte Graphik- und/oder wissenschaftliche Logik (Durchsatzlogik), oder als Spezialkerne bezeichnet wird); und 4) ein System auf einem Chip, welches auf demselben Die die beschriebene CPU (manchmal als der (die) Anwendungskern(e) oder Anwendungsprozessor(en) bezeichnet), den oben beschriebenen Coprozessor und weitere Funktionalitäten umfassen kann. Als Nächstes werden beispielhafte Kernarchitekturen beschrieben, gefolgt von Beschreibungen beispielhafter Prozessoren und Computerarchitekturen.
  • Beispielhafte Kernarchitekturen
  • In-Order- und Out-of-Order-Kern-Blockschaubild
  • 9A ist ein Blockschaubild, welches sowohl eine beispielhafte In-Order-Pipeline als auch eine beispielhafte Registerumbenennungs-Out-of-Order-Ausgabe/Ausführungs-Pipeline gemäß Ausführungsformen der Offenbarung veranschaulicht. 9B ist ein Blockschaubild, welches sowohl eine beispielhafte Ausführungsform eines Kerns einer In-Order-Architektur als auch einen beispielhaften Kern einer Registerumbenennungs-Out-of-Order-Ausgabe/Ausführungs-Architektur, der in einen Prozessor einzubauen ist, gemäß Ausführungsformen der Offenbarung veranschaulicht. Die Kästen mit durchgezogenen Linien in 9A-B veranschaulichen die In-Order-Pipeline und den In-Order-Kern, während durch die optionale Hinzufügung der Kästen mit gestrichelten Linien die Registerumbenennungs-Out-of-Order-Ausgabe/Ausführungs-Pipeline und der Registerumbenennungs-Out-of-Order-Ausgabe/Ausführungs-Kern veranschaulicht werden. Da der In-Order-Aspekt eine Untergruppe des Out-of-Order-Aspekts ist, wird der Out-of-Order-Aspekt beschrieben.
  • In 9A umfasst eine Prozessor-Pipeline 900 eine Abrufstufe 902, eine Längendecodierungsstufe 904, eine Decodierungsstufe 906, eine Zuweisungsstufe 908, eine Umbenennungsstufe 910, eine Ablaufplanungsstufe 912 (auch als eine Abfertigungs- oder Ausgabestufe bekannt), eine Registerlese-/Speicherlesestufe 914, eine Ausführungsstufe 916, eine Rückschreib-/Speicherschreibstufe 918, eine Ausnahmebehandlungsstufe 922 und eine Festschreibstufe 924.
  • 9B zeigt den Prozessorkern 990, welcher eine Front-End-Einheit 930 umfasst, die mit einer Ausführungsmaschineneinheit 950 verbunden ist, und beide sind mit einer Speichereinheit 970 verbunden. Der Kern 990 kann ein Kern für Berechnungen mit eingeschränktem Befehlsvorrat (Reduced Instruction Set Computing, RISC), ein Kern für Berechnungen mit uneingeschränktem Befehlsvorrat (Complex Instruction Set Computing, CISC), ein Kern mit sehr langen Befehlsworten (Very Long Instruction Word, VLIW) oder ein hybrider oder alternativer Kerntyp sein. Als noch eine andere Option kann der Kern 990 ein Spezialkern sein, z.B. ein Netzwerk- oder Kommunikationskern, eine Kompressionsmaschine, ein Coprozessorkern, ein Kern für Allzweckberechnungen auf Graphikverarbeitungseinheiten (General Purpose Computing Graphics Processing Unit, GPGPU), ein Graphikkern oder Ähnliches.
  • Die Front-End-Einheit 930 umfasst eine Zweigvorhersageeinheit 932, welche mit einer Befehls-Cache-Einheit 934 verbunden ist, welche mit einem assoziativen Befehlsübersetzungs-Pufferspeicher (Translation Lookaside Buffer, TLB) 936 verbunden ist, welcher mit einer Befehlsabrufeinheit 938 verbunden ist, welche mit einer Decodierungseinheit 940 verbunden ist. Die Decodierungseinheit 940 (oder der Decoder) kann Befehle decodieren und als eine Ausgabe eine oder mehrere Mikrooperationen, Mikrocode-Eintrittspunkte, Mikrobefehle andere Befehle oder andere Steuersignale erzeugen, welche aus den ursprünglichen Befehlen decodiert werden, diese auf andere Weise widerspiegeln oder daraus abgeleitet werden. Die Decodierungseinheit 940 kann über mehrere verschiedene Mechanismen realisiert werden. Beispiele für geeignete Mechanismen umfassen, ohne darauf beschränkt zu sein, Verweistabellen, Hardware-Realisierungen, programmierbare Logik-Arrays (PLAs), Mikrocode-Nur-Lese-Speicher (ROMs) usw. In einer Ausführungsform umfasst der Kern 990 einen Mikrocode-ROM oder ein anderes Medium, welches Mikrocode für bestimmte Makrobefehle speichert (z.B. in der Decodierungseinheit 940 oder auf andere Weise innerhalb der Front-End-Einheit 930). Die Decodierungseinheit 940 ist mit einer Umbenennungs-/Zuweisungseinheit 952 in der Ausführungsmaschineneinheit 950 verbunden.
  • Die Ausführungsmaschineneinheit 950 umfasst die Umbenennungs-/Zuweisungseinheit 952, welche mit einer Ruhesetzungseinheit 954 und einem Satz einer oder mehrerer Ablaufplanungseinheit(en) 956 verbunden ist. Die Ablaufplanungseinheit(en) 956 repräsentiert (repräsentieren) eine beliebige Anzahl an verschiedenen Ablaufplanern, umfassend Reservierungsstationen, ein zentrales Befehlsfenster usw. Die Ablaufplanungseinheit(en) 956 ist (sind) mit der (den) physischen Registerdateieinheit(en) 958 verbunden. Jede der physischen Registerdateieinheit(en) 958 repräsentiert eine oder mehrere physische Registerdateien, von denen unterschiedliche einen oder mehrere unterschiedliche Datentypen speichern, z.B. skalare ganze Zahlen, skalare Gleitkommazahlen, gepackte ganze Zahlen, gepackte Gleitkommazahlen, ganzzahlige Vektoren, Gleitkommazahl-Vektoren, Status (z.B. einen Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. In einer Ausführungsform umfasst (umfassen) die physische(n) Registerdateieinheit(en) 958 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine Skalarregistereinheit. Diese Registereinheiten können architektonische Vektorregister, Vektormaskenregister und Universalregister bereitstellen. Die physische(n) Registerdateieinheit(en) 958 wird (werden) von der Ruhesetzungseinheit 954 überlappt, um verschiedene Weisen zu veranschaulichen, wie die Registerumbenennung und die Out-of-Order-Ausführung realisiert werden können (z.B. unter Verwendung eines Neuordnungs-Pufferspeichers (von Neuordnungs-Pufferspeichern) und einer Ruhesetzungsregisterdatei (von Ruhesetzungsregisterdateien); unter Verwendung einer zukünftigen Datei (von zukünftigen Dateien), eines historischen Pufferspeichers (von historischen Pufferspeichern) und einer Ruhesetzungsregisterdatei (von Ruhesetzungsregisterdateien); unter Verwendung von Registerabbildungen und eines Pools von Registern usw.). Die Ruhesetzungseinheit 954 und die physische(n) Registerdateieinheit(en) 958 sind mit dem (den) Ausführungs-Cluster(n) 960 verbunden. Der (Die) Ausführungs-Cluster 960 umfasst (umfassen) eine Gruppe von einer oder mehreren Ausführungseinheiten 962 und eine Gruppe von einer oder mehreren Speicherzugriffseinheiten 964. Die Ausführungseinheiten 962 können verschiedene Operationen (z.B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Arten von Datentypen (z.B. skalaren Gleitkommazahlen, gepackten ganzen Zahlen, gepackten Gleitkommazahlen, ganzzahligen Vektoren, Gleitkommazahl-Vektoren) ausführen. Während einige Ausführungsformen eine Anzahl an Ausführungseinheiten umfassen können, die für spezielle Funktionen oder Gruppen von Funktionen dediziert sind, können andere Ausführungsformen lediglich eine Ausführungseinheit oder mehrere Ausführungseinheiten umfassen, welche alle alle Funktionen ausführen. Die Ablaufplanungseinheit(en) 956, die physische(n) Registerdateieinheit(en) 958 und der (die) Ausführungs-Cluster 960 sind so dargestellt, dass sie möglicherweise mehrere sind, da in bestimmten Ausführungsformen separate Pipelines für bestimmte Typen von Daten/Operationen erzeugt werden (z.B. eine Pipeline für skalare ganze Zahlen, eine Pipeline für skalare Gleitkommazahlen/gepackte ganze Zahlen/gepackte Gleitkommazahlen/ganzzahlige Vektoren/Gleitkommazahl-Vektoren und/oder eine Speicherzugriffs-Pipeline, welche jeweils ihre eigene Ablaufplanungseinheit, ihre eigene physische Registerdateieinheit und/oder ihren eigenen Ausführungs-Cluster aufweisen - und im Fall einer separaten Speicherzugriffs-Pipeline werden bestimmte Ausführungsformen realisiert, in welchen nur der Ausführungs-Cluster dieser Pipeline die Speicherzugriffseinheit(en) 964 aufweist. Es versteht sich auch, dass, wo separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines Out-of-Order-Ausgabe/Ausführungs-Pipeline sein können und der Rest In-Order sein kann.
  • Die Gruppe von Speicherzugriffseinheiten 964 ist mit der Speichereinheit 970 verbunden, welche eine Daten-TLB-Einheit 972 umfasst, die mit einer Daten-Cache-Einheit 974 verbunden ist, die mit einer Level-2(L2)-Cache-Einheit 976 verbunden ist. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 964 eine Ladeeinheit, eine Adressenspeicherungseinheit, eine Datenspeicherungseinheit umfassen, welche jeweils mit der Daten-TLB-Einheit 972 in der Speichereinheit 970 verbunden sind. Die Befehls-Cache-Einheit 934 ist ferner mit einer Level-2(L2)-Cache-Einheit 976 in der Speichereinheit 970 verbunden. Die L2-Cache-Einheit 976 ist mit einem oder mehreren Cache-Leveln und schließlich mit einem Hauptspeicher verbunden.
  • Zum Beispiel kann die beispielhafte Registerumbenennungs-Out-of-Order-Ausgabe/Ausführungs-Kernarchitektur die Pipeline 900 wie folgt realisieren: 1) die Befehlsabrufeinheit 938 führt die Abruf- und die Längendecodierungsstufe 902 und 904 aus; 2) die Decodierungseinheit 940 führt die Decodierungsstufe 906 aus; 3) die Umbenennungs-/Zuweisungseinheit 952 führt die Zuweisungsstufe 908 und die Umbenennungsstufe 910 aus; 4) die Ablaufplanungseinheit(en) 956 führt (führen) die Ablaufplanungsstufe 912 aus; 5) die physische(n) Registerdateieinheit(en) 958 und die Speichereinheit 970 führen die Registerlese-/Speicherlesestufe 914 aus; der Ausführungs-Cluster 960 führt die Ausführungsstufe 916 aus; 6) die Speichereinheit 970 und die physische(n) Registerdateieinheit(en) 958 führen Rückschreib-/Speicherschreibstufe 918 aus; 7) verschiedene Einheiten können an der Ausnahmebehandlungsstufe 922 beteiligt sein und 8) die Ruhesetzungseinheit 954 und die physische(n) Registerdateieinheit(en) 958 führen die Festschreibstufe 924 aus.
  • Der Kern 990 kann einen oder mehrere Befehlssätze unterstützen (z.B. den x86-Befehlssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt worden sind); den MIPS-Befehlssatz von MIPS Technologies in Sunnyvale, CA; den ARM-Befehlssatz (gegebenenfalls mit zusätzlichen Erweiterungen wie NEON) von ARM Holdings in Sunnyvale, CA), einschließlich des (der) hierin beschriebenen Befehls (Befehle). In einer Ausführungsform umfasst der Kern 990 eine Logik zum Unterstützen einer gepackten Datenbefehlssatzerweiterung (z.B. AVX1, AVX2), wodurch ermöglicht wird, dass die Operationen, die von vielen Multimedia-Anwendungen angewendet werden, unter Verwendung gepackter Daten ausgeführt werden.
  • Es versteht sich, dass der Kern Multithreading unterstützen kann (Ausführen von zwei oder mehr parallelen Gruppen von Operationen oder Threads) und dies auf vielerlei Weisen tun kann, umfassend Zeitschlitz-Multithreading, gleichzeitiges Multithreading (wobei ein einzelner physischer Kern einen logischen Kern für jeden der Threads bereitstellt, für den der physische Kern gleichzeitig ein Multithreading durchführt) oder eine Kombination davon (Abruf und Decodierung im Zeitschlitzbetrieb und anschließend gleichzeitiges Multithreading, wie z.B. bei der Intel®-Hyperthreading-Technologie).
  • Obwohl die Registerumbenennung im Kontext einer Out-of-Order-Ausführung beschrieben wird, versteht es sich, dass die Registerumbenennung auch in einer In-Order-Architektur angewendet werden kann. Obwohl die veranschaulichte Ausführungsform des Prozessors auch separate Befehls- und Daten-Cache-Einheiten 934/974 und eine gemeinsam benutzte L2-Cache-Einheit 976 umfasst, können alternative Ausführungseinheiten einen einzigen internen Cache-Speicher sowohl für Befehle als auch für Daten aufweisen, wie zum Beispiel einen internen Level-1(L1)-Cache oder mehrere Level internen Cache-Speichers. In einigen Ausführungsformen kann das System eine Kombination aus einem internen Cache-Speicher und einem externen Cache-Speicher umfassen, der außerhalb des Kerns und/oder des Prozessors angeordnet ist. Alternativ kann der gesamte Cache-Speicher außerhalb des Kerns und/oder des Prozessors angeordnet sein.
  • Spezielle beispielhafte In-Order-Kernarchitektur
  • 10A-B zeigen ein Blockschaubild einer spezielleren beispielhaften In-Order-Kernarchitektur, wobei der Kern einer von mehreren Logikblöcken (welche andere Kerne des gleichen Typs und/oder anderer Typen umfassen) in einem Chip ist. Die Logikblöcke kommunizieren über ein Verbindungsnetzwerk (z.B. ein Ringnetzwerk) hoher Bandbreite mit gewissen Logiken mit fester Funktion, Speicher-I/O-Schnittstellen und anderer notwendiger I/O-Logik, was von der Anwendung abhängt.
  • 10A ist ein Blockschaubild eines einzelnen Prozessorkerns zusammen mit seiner Verbindung zu dem On-Die-Verbindungsnetzwerk 1002 und mit seiner lokalen Untergruppe des Level-2(L2)-Cache 1004 gemäß Ausführungsformen der Offenbarung. In einer Ausführungsform unterstützt ein Befehls-Decoder 1000 den x86-Befehlssatz mit einer Befehlssatzerweiterung für gepackte Daten. Ein L1-Cache 1006 ermöglicht Zugriffe mit niedriger Latenzzeit auf Cache-Speicher in die Skalar- und Vektoreinheiten. Obwohl in einer Ausführungsform (zur Vereinfachung des Designs) eine Skalareinheit 1008 und eine Vektoreinheit 1010 separate Registergruppen (Skalarregister 1012 bzw. Vektorregister 1014) verwenden und Daten, die zwischen diesen übertragen werden, in einen Speicher geschrieben werden und dann von einem Level-1-(L1)-Cache 1006 wieder eingelesen werden, kann in alternativen Ausführungsformen der Offenbarung ein anderer Ansatz angewendet werden (z.B. eine einzelne Registergruppe verwendet werden oder ein Kommunikationspfad einbezogen werden, welcher ermöglicht, dass Daten zwischen den zwei Registerdateien übertragen werden, ohne geschrieben und wieder gelesen zu werden).
  • Die lokale Untergruppe des L2-Cache 1004 ist Teil eines globalen L2-Cache, der in separate lokale Untergruppen unterteilt ist, eine je Prozessorkern. Jeder Prozessorkern weist einen direkten Zugriffsweg auf seine eigene Untergruppe des L2-Cache 1004 auf. Daten, die von einem Prozessorkern gelesen werden, werden in dessen L2-Cache-Untergruppe 1004 gespeichert und es kann schnell auf sie zugegriffen werden, parallel zu anderen Prozessorkernen, die auf ihre eigenen L2-Cache-Untergruppen zugreifen. Daten, die von einem Prozessorkern geschrieben werden, werden in seiner eigenen L2-Cache-Untergruppe 1004 gespeichert und werden aus anderen Teilgruppen entfernt, falls erforderlich. Das Ringnetzwerk stellt Kohärenz für gemeinsam genutzte Daten sicher. Das Ringnetzwerk ist bidirektional, um zu ermöglichen, dass Agenten, wie Prozessorkerne, L2-Caches und andere Logikblöcke, innerhalb des Chips miteinander kommunizieren. Jeder Ringdatenpfad ist je Richtung 1012 Bits breit.
  • 10B ist eine vergrößerte Ansicht eines Teils des Prozessorkerns in 10A gemäß Ausführungsformen der Offenbarung. 10B umfasst einen L1-Daten-Cache-Teil 1006A des L1-Cache 1004 sowie mehr Einzelheiten hinsichtlich der Vektoreinheit 1010 und der Vektorregister 1014. Speziell ist die Vektoreinheit 1010 eine 16-breite Vektorverarbeitungseinheit (Vector Processing Unit, VPU) (vgl. die 16-breite ALU 1028), welche einen oder mehrere Befehle aus ganzzahligen Befehlen, Gleitkommabefehlen mit einfacher Genauigkeit und Gleitkommabefehlen mit doppelter Genauigkeit ausführt. Die VPU unterstützt ein Swizzling der Registereingaben mit der Swizzle-Einheit 1020, eine numerische Umwandlung mit den numerischen Umwandlungseinheiten 1022A bis 1022B und eine Replikation mit der Replikationseinheit 1024 an der Speichereingabe. Schreibmaskenregister 1026 ermöglichen ein Prädizieren resultierender Vektorschreibvorgänge.
  • 11 ist ein Blockschaubild eines Prozessors 1100, welcher mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und eine integrierte Graphik aufweisen kann, gemäß Ausführungsformen der Offenbarung. Die Kästen mit durchgezogenen Linien in 11 veranschaulichen einen Prozessor 1100 mit einem einzelnen Kern 1102A, einem Systemagenten 1110, einer Gruppe von einer oder mehreren Bussteuerungseinheiten 1116, während durch die optionale Hinzufügung der Kästen mit gestrichelten Linien ein alternativer Prozessor 1100 mit mehreren Kernen 1102A bis 1102N, einer Gruppe von einer oder mehreren Speichersteuerungseinheiten 1114 in der Systemagenteinheit 1110 und einer Speziallogik 1108 veranschaulicht wird.
  • Somit können verschiedene Realisierungen des Prozessors 1100 umfassen: 1) eine CPU wobei es sich bei der Speziallogik 1108 um eine integrierte Graphik- und/oder wissenschaftliche Logik (Durchsatzlogik) (welche einen oder mehrere Kerne umfassen kann) handelt und die Kerne 1102A bis 1102N ein oder mehrere Universalkerne (z.B. In-Order-Universalkerne, Out-of-Order-Universalkerne, eine Kombination der beiden) sind; 2) einen Coprozessor, wobei es sich bei den Kernen 1102A bis 1102N um eine große Anzahl an Spezialkernen handelt, die hauptsächlich für Graphik und/oder wissenschaftliche Berechnungen (Durchsatzberechnungen) vorgesehen sind; und 3) einen Coprozessor, wobei es sich bei den Kernen 1102A bis 1102N um eine große Anzahl an In-Order-Universalkernen handelt. Somit kann der Prozessor 1100 ein Universalprozessor, ein Coprozessor oder ein Spezialprozessor sein, wie zum Beispiel ein Netzwerk- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Graphikprozessor, eine GPGPU (Allzweck-Graphikverarbeitungseinheit), ein Coprozessor mit hohem Durchsatz und vielen integrierten Kernen (Many Integrated Cores, MIC)(umfassend 30 oder mehr Kerne), ein eingebetteter Prozessor oder Ähnliches. Der Prozessor kann auf einem oder mehreren Chips realisiert sein. Der Prozessor 1100 kann ein Teil eines oder mehrerer Substrate sein und/oder kann auf einem oder mehreren Substraten realisiert sein, wobei beliebige einer Anzahl von Verfahrenstechnologien angewendet werden, wie zum Beispiel BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie umfasst ein oder mehrere Cache-Level innerhalb der Kerne, eine Gruppe von einer oder mehreren gemeinsam benutzten Cache-Einheiten 1106 und externen Speicher (nicht dargestellt), der mit der Gruppe von integrierten Speichersteuerungseinheiten 1114 verbunden ist. Die Gruppe von gemeinsam benutzten Cache-Einheiten 1106 kann einen oder mehrere Mid-Level-Caches, z.B. Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Level, einen Last-Level-Cache (LLC) und/oder Kombinationen davon umfassen. Obwohl in einer Ausführungsform eine ringbasierte Verbindungseinheit 1112 die integrierte Graphiklogik 1108, die Gruppe von gemeinsam benutzten Cache-Einheiten 1106 und die Systemagenteinheit 1110/die integrierte(n) Speichersteuerungseinheit(en) 1114 verbindet, kann in alternativen Ausführungsformen eine beliebige Anzahl an wohlbekannten Techniken zum Verbinden solcher Einheiten angewendet werden. In einer Ausführungsform wird zwischen einer oder mehreren Cache-Einheiten 1106 und Kernen 1102A bis 1102N Kohärenz bewahrt.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 1102A bis 1102N zum Multithreading fähig. Der Systemagent 1110 umfasst jene Komponenten, welche die Kerne 1102A bis 1102N koordinieren und betreiben. Der Systemagent 1110 kann beispielsweise eine Energiesteuerungseinheit (Power Control Unit, PCU) und eine Anzeigeeinheit umfassen. Die PCU kann Logik und Komponenten, die zum Regulieren des Energieversorgungszustands der Kerne 1102A bis 1102N und der integrierten Graphiklogik 1108 benötigt werden, sein oder umfassen. Die Anzeigeeinheit dient dem Ansteuern einer oder mehrerer extern verbundener Anzeigen.
  • Die Kerne 1102A bis 1102N können homogen oder heterogen in Bezug auf den Architekturbefehlssatz sein; das heißt, zwei oder mehr der Kerne 1102A bis 1102N können in der Lage sein, denselben Befehlssatz auszuführen, während andere nur in der Lage sein können, einen Teilsatz dieses Befehlssatzes oder einen anderen Befehlssatz auszuführen.
  • Beispielhafte Computerarchitekturen
  • 12-15 sind Blockschaubilder beispielhafter Computerarchitekturen. Andere System-Designs und Konfigurationen, die auf den Fachgebieten für Laptops, Desktops, Hand-PCs, persönliche digitale Assistenten, Konstruktions-Workstations, Server, Netzwerkvorrichtungen, Netzwerkknoten, Switches, eingebettete Prozessoren, digitale Signalprozessoren (DSPs), Graphikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxes, Mikrocontroller, Mobiltelefone, tragbare Medienabspielgeräte, Handvorrichtungen und verschiedene andere elektronische Vorrichtungen bekannt sind, sind ebenfalls geeignet. Im Allgemeinen ist eine große Vielfalt von Systemen oder elektronischen Vorrichtungen, die in der Lage sind, einen Prozessor und/oder eine andere Ausführungslogik zu integrieren, wie hierin offenbart, allgemein geeignet.
  • Nun Bezug nehmend auf 12, ist dort ein Blockschaubild eines Systems 1200 gemäß einer Ausführungsform der vorliegenden Offenbarung dargestellt. Das System 1200 kann einen oder mehrere Prozessoren 1210, 1215 umfassen, welche mit einem Steuerungsknoten 1220 verbunden sind. In einer Ausführungsformumfasst der Steuerungsknoten 1220 einen Graphik-Speicher-Steuerungsknoten (Graphics Memory Controller Hub, GMCH) 1290 und einen Eingabe/Ausgabe-Knoten (Input/Output Hub, IOH) 1250 (welche sich auf separaten Chips befinden können). Der GMCH 1290 umfasst Speicher- und Graphiksteuerungen, mit welchen ein Speicher 1240 und ein Coprozessor 1245 verbunden sind; der IOH 1250 ist verbindet die Eingabe/Ausgabe(I/O)-Vorrichtungen 1260 mit dem GMCH 1290. Alternativ sind einer oder beide der Speicher- und der Graphiksteuerung in den Prozessor integriert (wie hierin beschrieben), der Speicher 1240 und der Coprozessor 1245 sind direkt mit dem Prozessor 1210 verbunden und der Steuerungsknoten 1220 befindet sich in einem einzelnen Chip mit dem IOH 1250.
  • Die optionale Natur weiterer Prozessoren 1215 ist in 12 mit unterbrochenen Linien angezeigt. Jeder Prozessor 1210, 1215 kann einen oder mehrere der hierin beschriebenen Prozessorkerne umfassen und kann irgendeine Version des Prozessors 1100 sein.
  • Der Speicher 1240 kann zum Beispiel ein dynamischer Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM), ein Phasenwechselspeicher (Phase Change Memory, PCM) oder eine Kombination der beiden sein. Für mindestens eine Ausführungsform kommuniziert der Steuerungsknoten 1220 mit dem (den) Prozessor(en) 1210, 1215 über einen Multi-Drop-Bus, z.B. einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle/Verbindungen wie QuickPath Interconnect (QPI) oder eine ähnliche Verbindung 1295.
  • In einer Ausführungsform ist der Coprozessor 1245 ein Spezialprozessor, wie zum Beispiel ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Graphikprozessor, eine GPGPU, ein eingebetteter Prozessor oder Ähnliches. In einer Ausführungsform kann der Steuerungsknoten 1220 einen integrierten Graphikbeschleuniger umfassen.
  • Es kann vielerlei Unterschiede zwischen den physischen Ressourcen 1210, 1215 in Bezug auf ein Spektrum von Leistungsmessgrößen geben, umfassend architektonische, mikroarchitektonische, thermische, Stromverbrauchs-Eigenschaften und dergleichen.
  • In einer Ausführungsform führt der Prozessor 1210 Befehle aus, welche Datenverarbeitungsoperationen eines allgemeinen Typs steuern. Coprozessorbefehle können in die Befehle eingebettet sein. Der Prozessor 1210 erkennt diese Coprozessorbefehle als von einem Typ, der von dem zugehörigen Coprozessor 1245 ausgeführt werden sollte. Entsprechend gibt der Prozessor 1210 diese Coprozessorbefehle (oder Steuersignale, welche Coprozessorbefehle repräsentieren) auf einem Coprozessorbus oder einer anderen Verbindung an den Coprozessor 1245 aus. Der (Die) Coprozessor(en) 1245 nimmt (nehmen) die empfangenen Coprozessorbefehle an und führt (führen) sie aus.
  • Nun Bezug nehmend auf 13, ist dort ein Blockschaubild eines ersten spezielleren beispielhaften Systems 1300 gemäß einer Ausführungsform der vorliegenden Offenbarung dargestellt. Wie in 13 dargestellt, ist das Multiprozessorsystem 1300 ein Punkt-zu-Punkt-Verbindungssystem und umfasst einen ersten Prozessor 1370 und einen zweiten Prozessor 1380, die über eine Punkt-zu-Punkt-Verbindung 1350 verbunden sind. Bei jedem der Prozessoren 1370 und 1380 kann es sich um irgendeine Version des Prozessors 1100 handeln. In einer Ausführungsform der Offenbarung sind die Prozessoren 1370 und 1380 die Prozessoren 1210 bzw. 1215, während der Coprozessor 1338 der Coprozessor 1245 ist. In einer anderen Ausführungsform sind die Prozessoren 1370 und 1380 der Prozessor 1210 bzw. der Coprozessor 1245.
  • Die Prozessoren 1370 und 1380 sind so dargestellt, dass sie Einheiten integrierter Speichersteuerungen (Integrated Memory Controllers, IMC) 1372 bzw. 1382 umfassen. Der Prozessor 1370 umfasst außerdem als Teil seiner Bussteuerungseinheiten Punkt-zu-Punkt-(P-P)-Schnittstellen 1376 und 1378; in ähnlicher Weise umfasst der zweite Prozessor 1380 P-P-Schnittstellen 1386 und 1388. Die Prozessoren 1370, 1380 können Informationen unter Verwendung der P-P-Schnittstellenschaltungen 1378, 1388 über eine Punkt-zu-Punkt-Schnittstelle 1350 austauschen. Wie in 13 dargestellt, verbinden die IMCs 1372 und 1382 die Prozessoren mit entsprechenden Speichern, nämlich einem Speicher 1332 und einem Speicher 1334, welche Hauptspeicherabschnitte sein können, die lokal zu den entsprechenden Prozessoren gehören.
  • Die Prozessoren 1370, 1380 können jeweils über individuelle P-P-Schnittstellen 1352, 1354 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 1376, 1394, 1386, 1398 Informationen mit einem Chipsatz 1390 austauschen. Der Chipsatz 1390 kann gegebenenfalls über eine Hochleistungs-Schnittstelle 1339 Informationen mit dem Coprozessor 1338 austauschen. In einer Ausführungsform ist der Coprozessor 1338 ein Spezialprozessor, wie zum Beispiel ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Graphikprozessor, eine GPGPU, ein eingebetteter Prozessor oder Ähnliches.
  • Ein gemeinsam benutzter Cache-Speicher (nicht dargestellt) kann in jedem Prozessor oder außerhalb beider Prozessoren umfasst sein, jedoch über eine P-P-Verbindung mit den Prozessoren verbunden, so dass die lokalen Cache-Informationen eines oder beider Prozessoren in dem gemeinsam benutzten Cache-Speicher gespeichert werden können, wenn ein Prozessor in einen Niedrigenergiemodus gesetzt wird.
  • Der Chipsatz 1390 kann über eine Schnittstelle 1396 mit einem ersten Bus 1316 verbunden sein. In einer Ausführungsform kann der erste Bus 1316 ein Peripheral-Component-Interconnect(PCI)-Bus oder ein Bus wie z.B. ein PCI-Express-Bus oder ein anderer I/O-Verbindungsbus der dritten Generation oder eine Punkt-zu-Punkt-Schnittstelle sein, obwohl der Umfang der vorliegenden Offenbarung nicht darauf beschränkt ist.
  • Wie in 13 dargestellt, können verschiedene I/O-Vorrichtungen 1314 mit dem ersten Bus 1316 verbunden sein, zusammen mit einer Busbrücke 1318, welche den ersten Bus 1316 mit einem zweiten Bus 1320 verbindet. In einer Ausführungsform sind ein oder mehrere weitere Prozessoren 1315, z.B. Coprozessoren, MIC-Prozessoren mit hohem Durchsatz, GPGPUs, Beschleuniger (wie z.B. Graphikbeschleuniger oder Einheiten der digitalen Signalverarbeitung (Digital Signal Processing, DSP)), feldprogrammierbare Gate-Arrays oder irgendein anderer Prozessor, mit dem ersten Bus 1316 verbunden. In einer Ausführungsform kann der zweite Bus 1320 ein Low-Pin-Count(LPC)-Bus sein. Verschiedene Vorrichtungen können mit einem zweiten Bus 1320 verbunden sein, umfassend zum Beispiel eine Tastatur und/oder eine Maus 1322, Kommunikationsvorrichtungen 1327 und eine Speichereinheit 1328, wie z.B. ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, welche in einer Ausführungsform Befehle/Code und Daten 1330 umfassen kann. Ferner kann mit dem zweiten Bus 1320 eine Audio-I/O 1324 verbunden sein. Es sei angemerkt, dass andere Architekturen möglich sind. Beispielsweise kann ein System statt der Punkt-zu-Punkt-Architektur der 13 einen Multi-Drop-Bus oder eine andere solche Architektur realisieren.
  • Nun Bezug nehmend auf 14, ist dort ein Blockschaubild eines zweiten spezielleren beispielhaften Systems 1400 gemäß einer Ausführungsform der vorliegenden Offenbarung dargestellt. Gleiche Elemente in 13 und 14 weisen gleiche Bezugszahlen auf und bestimmte Aspekte der 13 sind in 14 weggelassen worden, um andere Aspekte der 14 nicht zu verdecken.
  • 14 veranschaulicht, dass die Prozessoren 1370, 1380 eine integrierte Speicher- und I/O-Steuerlogik (Control Logic, „CL“) 1372 bzw. 1382 umfassen können. Somit umfassen die CL 1372, 1382 integrierte Speichersteuerungseinheiten und umfassen I/O-Steuerlogik. 14 veranschaulicht nicht nur, dass die Speicher 1332, 1334 mit der CL 1372, 1382 verbunden sind, sondern auch, dass die I/O-Vorrichtungen 1414 ebenfalls mit der Steuerlogik 1372, 1382 verbunden sind. Alte I/O-Vorrichtungen 1415 sind mit dem Chipsatz 1390 verbunden.
  • Nun Bezug nehmend auf 15, ist dort ein Blockschaubild eines SoC 1500 gemäß einer Ausführungsform der vorliegenden Offenbarung dargestellt. Ähnliche Elemente in 11 weisen gleiche Bezugszahlen auf. Außerdem sind Kästen mit gestrichelten Linien optionale Merkmale auf weiterentwickelten SoCs. In 15, ist eine Verbindungseinheit (sind Verbindungseinheiten) 1502 verbunden mit: einem Anwendungsprozessor 1510, welcher eine Gruppe von einem oder mehreren Kernen 202A bis 202N und eine gemeinsam benutzte Cache-Einheit (Gemeinsam benutzte Cache-Einheiten) 1106 umfasst; einer Systemagenteinheit 1110; einer Bussteuerungseinheit (Bussteuerungseinheiten) 1116; einer integrierten Speichersteuerungseinheit (integrierten Speichersteuerungseinheiten) 1114; einer Gruppe von einem oder mehreren Coprozessoren 1520, welche integrierte Graphiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor umfassen können, einer statischen Direktzugriffsspeicher(Static Random Access Memory, SRAM)-Einheit 1530, einer Direktspeicherzugriffs(Direct Memory Access, DMA)-Einheit 1532 und einer Anzeigeeinheit 1540 zum Verbinden mit einer oder mehreren Anzeigevorrichtungen. In einer Ausführungsform umfasst (umfassen) der (die) Coprozessor(en) 1520 einen Spezialprozessor, wie zum Beispiel einen Netzwerk- oder Kommunikationsprozessor, eine Kompressionsmaschine, eine GPGPU, einen MIC-Prozessor mit hohem Durchsatz, einen eingebetteten Prozessor oder Ähnliches.
  • Ausführungsformen der hierin offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination solcher Realisierungsansätze realisiert werden. Ausführungsformen der Offenbarung können als Computerprogramme oder Programmcode realisiert werden, der auf programmierbaren Systemen abläuft, welche mindestens einen Prozessor, ein Speichersystem (umfassend flüchtigen und nicht-flüchtigen Speicher und/oder flüchtige und nicht-flüchtige Speicherelemente), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung umfassen.
  • Programmcode, z.B. der in 13 veranschaulichte Code 1330, kann angewendet werden, um Befehle einzugeben, um die hierin beschriebenen Funktionen auszuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können in bekannter Weise auf eine oder mehrere Ausgabevorrichtungen angewendet werden. Für die Zwecke der vorliegenden Anmeldung umfasst ein Verarbeitungssystem ein beliebiges System, welches einen Prozessor aufweist, wie zum Beispiel einen digitalen Signalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC) oder einen Mikroprozessor.
  • Der Programmcode kann in einer höheren prozedurorientierten oder objektorientierten Programmiersprache realisiert werden, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann außerdem in Assembler- oder Maschinensprache realisiert werden, falls gewünscht. Tatsächlich sind die hierin beschriebenen Mechanismen im Umfang nicht auf irgendeine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch repräsentative Befehle realisiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, welches verschiedenartige Logik innerhalb des Prozessors repräsentiert und welches, wenn es von einer Maschine gelesen wird, bewirkt, dass die Maschine eine Logik zur Durchführung der hierin beschriebenen Techniken erzeugt. Solche Repräsentationen, bekannt als „IP-Kerne“, können auf einem greifbaren maschinenlesbaren Medium gespeichert werden und an verschiedene Kunden oder Fabrikationsanlagen geliefert werden, um sie in die Fabrikationsmaschinen zu laden, welche die Logik oder den Prozessor tatsächlich herstellen.
  • Solche maschinenlesbaren Speichermedien können, ohne darauf beschränkt zu sein, nicht-flüchtige greifbare Einrichtungen von Gegenständen umfassen, die von einer Maschine oder einer Vorrichtung hergestellt oder gebildet werden, umfassend Speichermedien wie Hartplatten, beliebige andere Typen von Platten, umfassend Disketten, optische Platten, Compact-Disk-Nur-Lese-Speicher (CD-ROMs), Compact-Disk-Rewritables (CD-RWs) und magneto-optische Platten, Halbleitervorrichtungen, wie z.B. Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs), z.B. dynamische Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SRAMs), löschbare programmierbare Nur-Lese-Speicher (EPROMs), Flash-Speicher, elektrisch löschbare Nur-Lese-Speicher (EEPROMs), Phasenwechselspeicher (PCM), magnetische oder optische Karten oder beliebige andere Arten von Medien, die zum Speichern elektronischer Befehle geeignet sind.
  • Entsprechend umfassen Ausführungsformen der Offenbarung auch nicht-flüchtige greifbare maschinenlesbare Medien, welche Befehle enthalten oder Design-Daten enthalten, z.B. Hardware Description Language (HDL), welche Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definiert, die hierin beschrieben sind. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Emulation (umfassend Binärübersetzung, Code-Morphing, usw.)
  • In einigen Fällen kann ein Befehlsumwandler verwendet werden, um einen Befehl aus einem Quellenbefehlssatz in einen Zielbefehlssatz umzuwandeln. Beispielsweise kann der Befehlsumwandler einen Befehl in einen oder mehrere von dem Kern zu verarbeitende Befehle übersetzen (z.B. durch statische Binärübersetzung, dynamische Binärübersetzung, umfassend dynamische Kompilierung), morphen, emulieren oder auf andere Weise umwandeln. Der Befehlsumwandler kann in Software, Hardware, Firmware oder einer Kombination davon realisiert sein. Der Befehlsumwandler kann sich auf dem Prozessor, außerhalb des Prozessors oder teilweise auf dem und teilweise außerhalb des Prozessors befinden.
  • 16 ist ein Blockschaubild, welches die Verwendung eines Software-Befehlsumwandlers zum Umwandeln von binären Befehlen in einem Quellen-Befehlssatz in binäre Befehle in einem Ziel-Befehlssatz gemäß Ausführungsformen der Offenbarung deutlich macht. In der dargestellten Ausführungsform ist der Befehlsumwandler ein Software-Befehlsumwandler, obwohl der Befehlsumwandler alternativ in Software, Firmware, Hardware oder verschiedenen Kombinationen davon realisiert werden kann. 16 zeigt, dass ein Programm in einer höheren Sprache 1602 unter Verwendung eines x86-Kompilierers 1604 kompiliert werden kann, um x86-Binärcode 1606 zu erzeugen, der nativ von einem Prozessor mit mindestens einem x86-Befehlssatz-Kern 1616 ausgeführt werden kann. Der Prozessor mit mindestens einem x86-Befehlssatz-Kern 1616 repräsentiert einen beliebigen Prozessor, der im Wesentlichen dieselben Funktionen wie ein Intel-Prozessor mit mindestens einem x86-Befehlssatz-Kern ausführen kann, indem er (1) einen wesentlichen Teil des Befehlssatzes des Intel-x86-Befehlssatz-Kerns oder (2) Objekt-Code-Versionen von Anwendungen oder anderer Software, die darauf gerichtet sind, auf einem Intel-Prozessor mit mindestens einem x86-Befehlssatz-Kern abzulaufen, kompatibel ausführt oder auf andere Weise verarbeitet, um im Wesentlichen dasselbe Ergebnis zu erzielen wie ein Intel-Prozessor mit mindestens einem x86-Befehlssatz-Kern. Der x86-Kompilierer 1604 repräsentiert einen Kompilierer, der so zu betreiben ist, dass er x86-Binärcode 1606 (z.B. Objektcode) erzeugt, welcher mit oder ohne zusätzliche Binderverarbeitung auf dem Prozessor mit mindestens einem x86-Befehlssatz-Kern 1616 ausgeführt werden kann. In ähnlicher Weise zeigt 16, dass das Programm in der höheren Sprache 1602 unter Verwendung eines Alternativ-Befehlssatz-Kompilierers 1608 kompiliert werden kann, um alternativen Befehlssatz-Binärcode 1610 zu erzeugen, der nativ von einem Prozessor ohne mindestens eine x86-Befehlssatz-Kern 1614 (z.B. von einem Prozessor mit Kernen, welche den MIPS-Befehlssatz von MIPS Technologies in Sunnyvale, CA, ausführen oder welche den ARM-Befehlssatz von ARM Holdings in Sunnyvale, CA, ausführen) ausgeführt werden kann. Der Befehlsumwandler 1612 wird verwendet, um den x86-Binärcode 1606 in Code umzuwandeln, der nativ von dem Prozessor ohne einen x86-Befehlssatz-Kern 1614 ausgeführt werden kann. Es ist nicht wahrscheinlich, dass dieser umgewandelte Code derselbe ist wie der alternative Befehlssatz-Binärcode 1610, weil ein Befehlsumwandler, der hierzu in der Lage ist, schwierig herzustellen ist; jedoch führt der umgewandelte Code die allgemeine Operation durch und ist aus Befehlen aus dem alternativen Befehlssatz aufgebaut. Somit repräsentiert der Befehlsumwandler 1612 Software, Firmware, Hardware oder eine Kombination davon, welche durch Emulation, Simulation oder irgendein anderes Verfahren einem Prozessor oder einer anderen elektronischen Vorrichtung, der/die keinen x86-Befehlssatz-Prozessor oder -Kern aufweist, ermöglicht, den x86-Binärcode 1606 auszuführen.
  • Wie in beliebigen Ausführungsform hierin verwendet, kann sich der Begriff „Logik“ auf eine App, Software, Firmware und/oder ein Schaltungssystem beziehen, welche(s) dafür konfiguriert ist, beliebige der vorstehend erwähnten Operationen auszuführen. Software kann als ein Software-Paket, Code, Befehle, Befehlssätze und/oder Daten verkörpert sein, die auf einem nicht-flüchtigen computerlesbaren Speichermedium aufgezeichnet sind. Firmware kann als Code, Befehle oder Befehlssätze und/oder Daten verkörpert sein, die in Speichervorrichtungen hartcodiert sind (z.B. nicht-flüchtig).
  • „Schaltungssystem“, wie in beliebigen Ausführungsform hierin verwendet, kann zum Beispiel, einzeln oder in beliebiger Kombination, ein festverdrahtetes Schaltungssystem, ein programmierbares Schaltungssystem, ein Zustandsmaschinen-Schaltungssystem, Logik und/oder Firmware umfassen, welche Befehle speichert, die von einem programmierbaren Schaltungssystem ausgeführt werden. Das Schaltungssystem kann als eine integrierte Schaltung verkörpert sein, z.B. als ein IC-Chip. In einigen Ausführungsformen kann das Schaltungssystem, zumindest teilweise, durch den Prozessor 110 gebildet werden, welcher Code und/oder Befehlssätze (z.B. Software, Firmware usw.) ausführt, die der hierin beschriebenen Funktionalität entsprechen, wodurch ein Universalprozessor in eine spezielle Verarbeitungsumgebung umgewandelt wird, um eine oder mehrere der hierin beschriebenen Operationen auszuführen. In einigen Ausführungsformen können die verschiedenen Komponenten und Schaltungssysteme des Speichersteuerungs-Schaltungssystems oder andere Systeme in einer System-on-a-Chip(SoC)-Architektur kombiniert werden.
  • Ausführungsformen der hierin beschriebenen Operationen können in einer computerlesbaren Speichervorrichtung realisiert werden, auf welcher Befehle gespeichert sind, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, die Verfahren zur Ausführung bringen. Der Prozessor kann zum Beispiel eine Verarbeitungseinheit und/oder ein programmierbares Schaltungssystem umfassen. Die Speichervorrichtung kann eine maschinenlesbare Speichervorrichtung umfassen, welche eine beliebige Art einer greifbaren nicht-flüchtigen Speichervorrichtung umfassen kann, zum Beispiel eine beliebige Art einer Platte, umfassend Disketten, optische Platten, Compact-Disk-Nur-Lese-Speicher (CD-ROMs), Compact-Disk-Rewritables (CD-RWs) und magneto-optische Platten, Halbleitervorrichtungen, wie z.B. Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs), z.B. dynamische und statische RAMs, löschbare programmierbare Nur-Lese-Speicher (EPROMs), elektrisch löschbare Nur-Lese-Speicher (EEPROMs), Flash-Speicher, magnetische oder optische Karten oder beliebige Arten von Speichervorrichtungen, die zum Speichern elektronischer Befehle geeignet sind.
  • In einigen Ausführungsformen kann eine Hardware Description Language (HDL) verwendet werden, um Schaltungs- und/oder Logik-Realisierung(en) für die verschiedenen hierin beschriebenen Logiken und Schaltungssysteme zu spezifizieren. Beispielsweise kann in einer Ausführungsform die Hardware Description Language mit einer Very High Speed Integrated Circuits (VHSIC) Hardware Description Language (VHDL) vereinbar oder kompatibel sein, welche die Halbleiterherstellung einer oder mehrerer hierin beschriebener Schaltungen und/oder Logiken ermöglichen kann. Die VHDL kann mit dem IEEE-Standard 1076-1987, dem IEEE-Standard 1076.2, IEEE1076.1, dem IEEE-Entwurf 3.0 der VHDL-2006, dem IEEE-Entwurf 4.0 der VHDL-2008 und/oder anderen Versionen der IEEE-VHDL-Standards und/oder anderen Hardware-Beschreibungs-Standards vereinbar oder kompatibel sein.
  • In einigen Ausführungsformen kann eine Verilog Hardware Description Language (HDL) verwendet werden, um Schaltungs- und/oder Logik-Realisierung(en) für die verschiedenen hierin beschriebenen Logiken und Schaltungssysteme zu spezifizieren. Beispielsweise kann in einer Ausführungsform die HDL mit dem IEEE-Standard 62530-2011: SystemVerilog - Unified Hardware Design, Specification, and Verification Language, Juli 07, 2011; dem IEEE-Standard 1800™-2012: IEEE Standard for SystemVerilog-Unified Hardware Design, Specification, and Verification Language, herausgegeben im Februar 21, 2013; dem IEEE-Standard 1364-2005: IEEE Standard for Verilog Hardware Description Language, April 18, 2006, und/oder anderen Versionen von Verilog-HDL und/oder SystemVerilog-Standards vereinbar oder kompatibel sein.
  • Beispiele
  • Beispiele der vorliegenden Offenbarung umfassen Gegenstände wie z.B. ein Verfahren, eine Einheit, eine Vorrichtung oder ein System, die auf eine vorausschauende Erfassung einer Benutzerabsicht zur Verwendung eines Eingabestifts bezogen sind, wie nachstehend beschrieben.
    • Beispiel 1. Gemäß diesem Beispiel wird eine Vorrichtung bereitgestellt. Die Vorrichtung umfasst ein erstes Speichersteuerungs-Schaltungssystem zum Steuern eines Lese- und/oder Schreibzugriffs auf ein erstes Speicherschaltungssystem über einen ersten leitfähigen Bus; ein zweites Speichersteuerungs-Schaltungssystem zum Steuern eines Lese- und/oder Schreibzugriffs auf ein zweites Speicherschaltungssystem über einen zweiten leitfähigen Bus und ein Energiesteuerungs-Schaltungssystem, welches mit dem ersten Speichersteuerungs-Schaltungssystem und dem zweiten Speichersteuerungs-Schaltungssystem verbunden ist, wobei das Energiesteuerungs-Schaltungssystem Daten von dem zweiten Speicherschaltungssystem mit dem zweiten Speichersteuerungs-Schaltungssystem über den zweiten leitfähigen Bus auf das erste Speicherschaltungssystem mit dem ersten Speichersteuerungs-Schaltungssystem über den ersten leitfähigen Bus überträgt und das Energiesteuerungs-Schaltungssystem nach der Übertragung der Daten von dem zweiten Speicherschaltungssystem auf das erste Speicherschaltungssystem das zweite Speicherschaltungssystem herunterfährt. Wie hierin verwendet, kann ein leitfähiger Bus einen Multi-Drop-Bus, wie z.B. einen Frontside-Bus (FSB); eine Punkt-zu-Punkt-Schnittstelle wie QuickPath Interconnect (QPI) oder ähnliche Verbindungen umfassen.
    • Beispiel 2. Dieses Beispiel umfasst die Elemente des Beispiels 1, wobei das erste Speichersteuerungs-Schaltungssystem erste mehrere Speichersteuerungen umfasst, wobei das erste Speicherschaltungssystem erste mehrere Speicher-Packages umfasst, wobei der erste leitfähige Bus erste mehrere Kanäle umfasst, um die ersten mehreren Speichersteuerungen mit den ersten mehreren Speicher-Packages zu verbinden; wobei das zweite Speichersteuerungs-Schaltungssystem zweite mehrere Speichersteuerungen umfasst, wobei das zweite Speicherschaltungssystem zweite mehrere Speicher-Packages umfasst, wobei der zweite leitfähige Bus zweite mehrere Kanäle umfasst, um die zweiten mehreren Speichersteuerungen mit den zweiten mehreren Speicher-Packages zu verbinden.
    • Beispiel 3. Dieses Beispiel umfasst die Elemente des Beispiels 2, wobei die ersten mehreren Speichersteuerungen einen oder mehrere erste Speichersteuerungen umfassen, wobei die ersten mehreren Kanäle einen oder mehrere erste Kanäle umfassen, wobei die zweiten mehreren Speichersteuerungen einen oder mehrere zweite Speichersteuerungen umfassen, wobei die zweiten mehreren Kanäle einen oder mehrere zweite Kanäle umfassen, wobei das Energiesteuerungs-Schaltungssystem das zweite Speicherschaltungssystem herunterfährt, indem es die eine oder die mehreren zweiten Speichersteuerungen und die zweiten mehreren Speicher-Packages herunterfährt.
    • Beispiel 4. Dieses Beispiel umfasst die Elemente des Beispiels 1, ferner umfassend einen Prozessorkern zum Ausführen eines Betriebssystems, wobei das Betriebssystem mindestens die Hälfte der Daten des ersten Speicherschaltungssystems und des zweiten Speicherschaltungssystems auf eine oder mehrere Dateien in einer permanenten Speichervorrichtung überträgt, wobei das Betriebssystem verbleibende Datenseiten des ersten Speicherschaltungssystems und des zweiten Speicherschaltungssystems auf eine Gruppe aufeinanderfolgender Speicherseiten innerhalb des ersten Speicherschaltungssystems und des zweiten Speicherschaltungssystems überführt.
    • Beispiel 5. Dieses Beispiel umfasst die Elemente des Beispiels 4, wobei ein Kopieren der verbleibenden Datenseiten des ersten Speicherschaltungssystems und des zweiten Speicherschaltungssystems in die Gruppe aufeinanderfolgender Speicherseiten innerhalb des ersten Speicherschaltungssystems und des zweiten Speicherschaltungssystems zu freien Speicherseiten innerhalb des ersten Speicherschaltungssystems und belegten Speicherseiten innerhalb des zweiten Speicherschaltungssystems führt.
    • Beispiel 6. Dieses Beispiel umfasst die Elemente des Beispiels 5, wobei das Übertragen der Daten von dem zweiten Speicherschaltungssystem auf das erste Speicherschaltungssystem umfasst: Übertragen der Daten der belegten Speicherseiten innerhalb des zweiten Speicherschaltungssystems auf Stellen innerhalb der freien Speicherseiten innerhalb des ersten Speicherschaltungssystems.
    • Beispiel 7. Dieses Beispiel umfasst die Elemente des Beispiels 5, wobei das Übertragen der Daten von dem zweiten Speicherschaltungssystem auf das erste Speicherschaltungssystem umfasst: Übertragen von Speicherseiten eines dynamischen Direktzugriffsspeichers („DRAM“) innerhalb des zweiten Speicherschaltungssystems auf DRAM-Speicherseiten innerhalb des ersten Speicherschaltungssystems.
    • Beispiel 8. Dieses Beispiel umfasst die Elemente des Beispiels 1, wobei, während das zweite Speicherschaltungssystem heruntergefahren ist, das Energiesteuerungs-Schaltungssystem neuen Datenverkehr zu Stellen innerhalb des ersten Speicherschaltungssystems führt, wenn der neue Datenverkehr an Stellen innerhalb des zweiten Speicherschaltungssystems gerichtet ist.
    • Beispiel 9. Dieses Beispiel umfasst die Elemente des Beispiels 1, wobei das Energiesteuerungs-Schaltungssystem in Reaktion auf einen Empfang eines Befehls, das zweite Speicherschaltungssystem hochzufahren, das zweite Speicherschaltungssystem hochfährt, wobei das Energiesteuerungs-Schaltungssystem die übertragenen Daten von dem ersten Speicherschaltungssystem auf das zweite Speicherschaltungssystem zurückführt.
    • Beispiel 10. Dieses Beispiel umfasst die Elemente des Beispiels 1, wobei das Herunterfahren des zweiten Speicherschaltungssystems eines oder mehreres aus Folgendem umfasst: Beenden einer Taktsignalübertragung auf das zweite Speicherschaltungssystem über den zweiten leitfähigen Bus; Beenden der Energiezufuhr zu dem zweiten Speicherschaltungssystem; Deaktivieren automatisierter Selbstaktualisierungsoperationen für das zweite Speicherschaltungssystem; oder zumindest teilweise Beenden der Energiezufuhr zu dem zweiten Speicherschaltungssystem.
    • Beispiel 11. Dieses Beispiel umfasst die Elemente des Beispiels 1, wobei das Herunterfahren des zweiten Speicherschaltungssystems durch das Energiesteuerungs-Schaltungssystem Herunterfahren mindestens der Hälfte einer Kombination aus dem ersten Speicherschaltungssystem und dem zweiten Speicherschaltungssystem umfasst.
    • Beispiel 12. Dieses Beispiel umfasst die Elemente des Beispiels 1, wobei das Energiesteuerungs-Schaltungssystem in Reaktion auf Konfigurationsbits eines Energiesteuerungsregisters die Daten von dem zweiten Speicherschaltungssystem auf das erste Speicherschaltungssystem überträgt.
    • Beispiel 13. Dieses Beispiel umfasst die Elemente des Beispiels 11, wobei auf das Energiesteuerungsregister durch ein Betriebssystem, das von einem Prozessor ausgeführt wird, Zugriff besteht.
    • Beispiel 14. Gemäß diesem Beispiel wird ein Verfahren bereitgestellt. Das Verfahren umfasst Empfangen eines Befehls zum Übertragen von Daten auf ein erstes Speicherschaltungssystem über erste Kanäle von einem zweiten Speicherschaltungssystem über zweite Kanäle durch ein Energiesteuerungs-Schaltungssystem; Übertragen mindestens der Hälfte der Daten, die in dem ersten Speicherschaltungssystem gespeichert sind und in dem zweiten Speicherschaltungssystem gespeichert sind, auf eine oder mehrere Dateien in einem permanenten Speicher, wobei nicht-übertragene Daten verbleibende Daten sind; Kopieren der verbleibenden Daten auf eine Gruppe aufeinanderfolgender Seiten unter dem ersten Speicherschaltungssystem und unter dem zweiten Speicherschaltungssystem, um für belegte Speicherseiten in dem zweiten Speicherschaltungssystem und für freie Speicherseiten in dem ersten Speicherschaltungssystem zu sorgen; Übertragen von Daten aus den belegten Speicherseiten in dem zweiten Speicherschaltungssystem auf Speicherstellen in den freien Speicherseiten in dem ersten Speicherschaltungssystem; und Verringern der Energie, die auf das zweite Speicherschaltungssystem angewendet wird.
    • Beispiel 15. Dieses Beispiel umfasst die Elemente des Beispiels 14, wobei das Verringern der Energie, die auf das zweite Speicherschaltungssystem angewendet wird, eines oder mehreres aus Folgendem umfasst: Beenden einer Taktsignalübertragung auf das zweite Speicherschaltungssystem über die zweiten Kanäle; Beenden der Energiezufuhr zu dem zweiten Speicherschaltungssystem; Deaktivieren automatisierter Selbstaktualisierungsoperationen für das zweite Speicherschaltungssystem; oder zumindest teilweise Beenden der Energiezufuhr zu dem zweiten Speicherschaltungssystem.
    • Beispiel 16. Dieses Beispiel umfasst die Elemente des Beispiels 14, ferner umfassend Reaktivieren der Energiezufuhr zu dem zweiten Speicherschaltungssystem in Reaktion auf den Empfang eines Befehls, das zweite Speicherschaltungssystem hochzufahren; und Kopieren der Daten, die von dem zweiten Speicherschaltungssystem auf das erste Speicherschaltungssystem übertragen wurden, von dem ersten Speicherschaltungssystem in das zweite Speicherschaltungssystem.
    • Beispiel 17. Dieses Beispiel umfasst die Elemente des Beispiels 14, wobei das Empfangen eines Befehls zum Übertragen von Daten von dem zweiten Speicherschaltungssystem über die zweiten Kanäle auf das erste Speicherschaltungssystem über die ersten Kanäle durch das Energiesteuerungs-Schaltungssystem umfasst: Lesen von Bits aus einem Energiesteuerungsregister, welches Konfigurationseinstellungen für das erste Speicherschaltungssystem und das zweite Speicherschaltungssystem speichert.
    • Beispiel 18. Gemäß diesem Beispiel wird ein System bereitgestellt. Das System umfasst einen Prozessor; mindestens eine Speichersteuerung zum Steuern eines Lese- und/oder Schreibzugriffs auf erste mehrere Speicher-Packages über mindestens einen ersten Kanal und auf zweite mehrere Speicher-Packages über mindestens einen zweiten Kanal; und ein Energiesteuerungs-Schaltungssystem, welches mit der mindestens einen Speichersteuerung verbunden ist, wobei das Energiesteuerungs-Schaltungssystem Daten von den zweiten mehreren Speicher-Packages auf die ersten mehreren Speicher-Packages überträgt, das Energiesteuerungs-Schaltungssystem mindestens die Hälfte des mindestens einen ersten Kanals und des mindestens einen zweiten Kanals herunterfährt und das Energiesteuerungs-Schaltungssystem nach dem Übertragen der Daten von den zweiten mehreren Speicher-Packages auf die ersten mehreren Speicher-Packages die zweiten mehreren Speicher-Packages herunterfährt.
    • Beispiel 19. Dieses Beispiel umfasst die Elemente des Beispiels 18, ferner umfassend: ein Systemagent-Schaltungssystem zum Steuern von Energiemerkmalen des Prozessors, wobei das Systemagent-Schaltungssystem das Energiesteuerungs-Schaltungssystem umfasst; und ein Verbindungsschaltungssystem zum Verbinden des Prozessors mit dem Systemagent-Schaltungssystem und mit der mindestens einen Speichersteuerung.
    • Beispiel 20. Dieses Beispiel umfasst die Elemente des Beispiels 18, wobei das Energiesteuerungs-Schaltungssystem mindestens die Hälfte der Datenseiten der ersten mehreren Speicher-Packages und der zweiten mehreren Speicher-Packages auf eine oder mehrere Dateien in einer permanenten Speichervorrichtung überträgt, das Energiesteuerungs-Schaltungssystem verbleibende Datenseiten der ersten mehreren Speicher-Packages und der zweiten mehreren Speicher-Packages in eine Gruppe aufeinanderfolgender Speicherseiten innerhalb der ersten Speicher-Packages und der zweiten Speicher-Packages kopiert.
    • Beispiel 21. Dieses Beispiel umfasst die Elemente des Beispiels 20, wobei die Gruppe aufeinanderfolgender Speicherseiten mehrere Segmente von Speicherseiten umfasst.
    • Beispiel 22. Dieses Beispiel umfasst die Elemente des Beispiels 20, wobei das Kopieren der verbleibenden Datenseiten der ersten mehreren Speicher-Packages und der zweiten mehreren Speicher-Packages in die Gruppe aufeinanderfolgender Speicherseiten innerhalb der ersten Speicher-Packages und der zweiten Speicher-Packages zu freien Speicherseiten innerhalb der ersten mehreren Speicher-Packages und belegten Speicherseiten innerhalb der zweiten mehreren Speicher-Packages führt.
    • Beispiel 23. Dieses Beispiel umfasst die Elemente des Beispiels 22, wobei das Übertragen der Daten von den zweiten mehreren Speichermodulen auf die ersten mehreren Speichermodule umfasst: Übertragen der Daten der belegten Speicherseiten innerhalb der zweiten mehreren Speicher-Packages auf Speicherstellen innerhalb der freien Speicherseiten innerhalb der ersten mehreren Speicher-Packages.
    • Beispiel 24. Dieses Beispiel umfasst die Elemente des Beispiels 18, wobei, während die zweiten mehreren Speicher-Packages heruntergefahren sind, das Energiesteuerungs-Schaltungssystem neuen Datenverkehr zu Stellen innerhalb der ersten mehreren Speicher-Packages führt, wenn der neue Datenverkehr an Stellen innerhalb der zweiten mehreren Speicher-Packages gerichtet ist.
    • Beispiel 25. Dieses Beispiel umfasst die Elemente des Beispiels 18, wobei das Energiesteuerungs-Schaltungssystem in Reaktion auf einen Empfang eines Befehls, die zweiten mehreren Speicher-Packages hochzufahren, die zweiten mehreren Speicher-Packages hochfährt, wobei das Energiesteuerungs-Schaltungssystem die übertragenen Daten von den ersten mehreren Speicher-Packages auf die zweiten mehreren Speicher-Packages zurückführt.
    • Beispiel 26. Gemäß diesem Beispiel wird eine computerlesbare Einheit bereitgestellt, welche Befehle speichert, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, das Verfahren eines der Beispiele 14 bis 17 zur Ausführung bringen.
    • Beispiel 27. Gemäß diesem Beispiel wird eine Einheit bereitgestellt, welche ein Mittel zum Ausführen des Verfahrens eines der Beispiele 14 bis 17 umfasst.
  • Die Begriffe und Ausdrücke, die hierin verwendet worden sind, werden als Begriffe zur Beschreibung und nicht zur Beschränkung verwendet und es ist bei der Verwendung solcher Begriffe und Ausdrücke nicht beabsichtigt, irgendwelche Äquivalente der dargestellten und beschriebenen Merkmale (oder Teile davon) auszuschließen, und es sei angemerkt, dass innerhalb des Umfangs der Ansprüche verschiedene Modifikationen möglich sind. Dementsprechend sollen die Ansprüche all solche Äquivalente abdecken.
  • Hierin sind verschiedene Merkmale, Aspekte und Ausführungsformen beschrieben worden. Die Merkmale, Aspekte und Ausführungsformen sind Kombinationen miteinander sowie Variationen und Modifikationen zugänglich, wie es der Fachmann versteht. Die vorliegende Offenbarung sollte deswegen so angesehen werden, dass sie solche Kombinationen, Variationen und Modifikationen umfasst.

Claims (25)

  1. Vorrichtung, umfassend: ein erstes Speichersteuerungs-Schaltungssystem zum Steuern eines Lese- und/oder Schreibzugriffs auf ein erstes Speicherschaltungssystem über einen ersten leitfähigen Bus; ein zweites Speichersteuerungs-Schaltungssystem zum Steuern eines Lese- und/oder Schreibzugriffs auf ein zweites Speicherschaltungssystem über einen zweiten leitfähigen Bus; und ein Energiesteuerungs-Schaltungssystem, welches mit dem ersten Speichersteuerungs-Schaltungssystem und dem zweiten Speichersteuerungs-Schaltungssystem verbunden ist, wobei das Energiesteuerungs-Schaltungssystem Daten von dem zweiten Speicherschaltungssystem mit dem zweiten Speichersteuerungs-Schaltungssystem über den zweiten leitfähigen Bus auf das erste Speicherschaltungssystem mit dem ersten Speichersteuerungs-Schaltungssystem über den ersten leitfähigen Bus überträgt und das Energiesteuerungs-Schaltungssystem nach der Übertragung der Daten von dem zweiten Speicherschaltungssystem auf das erste Speicherschaltungssystem das zweite Speicherschaltungssystem herunterfährt.
  2. Vorrichtung nach Anspruch 1, wobei das erste Speichersteuerungs-Schaltungssystem erste mehrere Speichersteuerungen umfasst, wobei das erste Speicherschaltungssystem erste mehrere Speicher-Packages umfasst, wobei der erste leitfähige Bus erste mehrere Kanäle umfasst, um die ersten mehreren Speichersteuerungen mit den ersten mehreren Speicher-Packages zu verbinden; wobei das zweite Speichersteuerungs-Schaltungssystem zweite mehrere Speichersteuerungen umfasst, wobei das zweite Speicherschaltungssystem zweite mehrere Speicher-Packages umfasst, wobei der zweite leitfähige Bus zweite mehrere Kanäle umfasst, um die zweiten mehreren Speichersteuerungen mit den zweiten mehreren Speicher-Packages zu verbinden.
  3. Vorrichtung nach Anspruch 2, wobei das Energiesteuerungs-Schaltungssystem das zweite Speicherschaltungssystem herunterfährt, indem es die zweiten mehreren Speichersteuerungen und die zweiten mehreren Speicher-Packages herunterfährt.
  4. Vorrichtung nach Anspruch 1 bis 3, ferner umfassend: einen Prozessorkern zum Ausführen eines Betriebssystems, wobei das Betriebssystem mindestens die Hälfte der Datenseiten des ersten Speicherschaltungssystems und des zweiten Speicherschaltungssystems auf eine oder mehrere Dateien in einer permanenten Speichervorrichtung überträgt, wobei das Betriebssystem verbleibende Datenseiten des ersten Speicherschaltungssystems und des zweiten Speicherschaltungssystems auf eine Gruppe aufeinanderfolgender Speicherseiten innerhalb des ersten Speicherschaltungssystems und des zweiten Speicherschaltungssystems überführt.
  5. Vorrichtung nach Anspruch 4, wobei das Überführen der verbleibenden Datenseiten des ersten Speicherschaltungssystems und des zweiten Speicherschaltungssystems auf die Gruppe aufeinanderfolgender Speicherseiten innerhalb des ersten Speicherschaltungssystems und des zweiten Speicherschaltungssystems zu freien Speicherseiten innerhalb des ersten Speicherschaltungssystems und belegten Speicherseiten innerhalb des zweiten Speicherschaltungssystems führt.
  6. Vorrichtung nach Anspruch 5, wobei das Übertragen der Daten von dem zweiten Speicherschaltungssystem auf das erste Speicherschaltungssystem umfasst: Übertragen der Daten der belegten Speicherseiten innerhalb des zweiten Speicherschaltungssystems auf Stellen innerhalb der freien Speicherseiten innerhalb des ersten Speicherschaltungssystems.
  7. Vorrichtung nach Anspruch 5, wobei das Übertragen der Daten von dem zweiten Speicherschaltungssystem auf das erste Speicherschaltungssystem umfasst: Übertragen von Speicherseiten eines dynamischen Direktzugriffsspeichers („DRAM“) innerhalb des zweiten Speicherschaltungssystems auf DRAM-Speicherseiten innerhalb des ersten Speicherschaltungssystems.
  8. Vorrichtung nach einem der Ansprüche 1 bis 3, wobei, während das zweite Speicherschaltungssystem heruntergefahren ist, das Energiesteuerungs-Schaltungssystem neuen Datenverkehr zu Stellen innerhalb des ersten Speicherschaltungssystems führt, wenn der neue Datenverkehr an Stellen innerhalb des zweiten Speicherschaltungssystems gerichtet ist.
  9. Vorrichtung nach einem der Ansprüche 1 bis 3, wobei das Energiesteuerungs-Schaltungssystem in Reaktion auf einen Empfang eines Befehls, das zweite Speicherschaltungssystem hochzufahren, das zweite Speicherschaltungssystem hochfährt, wobei das Energiesteuerungs-Schaltungssystem die übertragenen Daten von dem ersten Speicherschaltungssystem auf das zweite Speicherschaltungssystem zurückführt.
  10. Vorrichtung nach einem der Ansprüche 1 bis 3, wobei das Herunterfahren des zweiten Speicherschaltungssystems eines oder mehreres aus Folgendem umfasst: Beenden einer Taktsignalübertragung auf das zweite Speicherschaltungssystem über den zweiten leitfähigen Bus; Beenden der Energiezufuhr zu dem zweiten Speicherschaltungssystem; Deaktivieren automatisierter Selbstaktualisierungsoperationen für das zweite Speicherschaltungssystem; oder zumindest teilweise Beenden der Energiezufuhr zu dem zweiten Speicherschaltungssystem.
  11. Vorrichtung nach einem der Ansprüche 1 bis 3, wobei das Herunterfahren des zweiten Speicherschaltungssystems durch das Energiesteuerungs-Schaltungssystem Herunterfahren mindestens der Hälfte einer Kombination aus dem ersten Speicherschaltungssystem und dem zweiten Speicherschaltungssystem umfasst.
  12. Vorrichtung nach einem der Ansprüche 1 bis 3, wobei das Energiesteuerungs-Schaltungssystem in Reaktion auf Konfigurationsbits eines Energiesteuerungsregisters die Daten von dem zweiten Speicherschaltungssystem auf das erste Speicherschaltungssystem überträgt.
  13. Vorrichtung nach Anspruch 12, wobei auf das Energiesteuerungsregister durch ein Betriebssystem, das von einem Prozessor ausgeführt wird, Zugriff besteht.
  14. Verfahren, umfassend: Empfangen eines Befehls zum Übertragen von Daten auf ein erstes Speicherschaltungssystem über erste Kanäle von einem zweiten Speicherschaltungssystem über zweite Kanäle durch ein Energiesteuerungs-Schaltungssystem; Übertragen mindestens der Hälfte der Daten, die in dem ersten Speicherschaltungssystem gespeichert sind und in dem zweiten Speicherschaltungssystem gespeichert sind, durch ein Speichersteuerungs-Schaltungssystem auf eine oder mehrere Dateien in einem permanenten Speicher, wobei nicht-übertragene Daten verbleibende Daten sind; Kopieren der verbleibenden Daten auf eine Gruppe aufeinanderfolgender Seiten unter dem ersten Speicherschaltungssystem und unter dem zweiten Speicherschaltungssystem durch das Speichersteuerungs-Schaltungssystem, um für belegte Speicherseiten in dem zweiten Speicherschaltungssystem und für freie Speicherseiten in dem ersten Speicherschaltungssystem zu sorgen; Übertragen von Daten von den belegten Speicherseiten in dem zweiten Speicherschaltungssystem auf Speicherstellen in den freien Speicherseiten in dem ersten Speicherschaltungssystem durch das Speichersteuerungs-Schaltungssystem; und Verringern der Energie, die auf das zweite Speicherschaltungssystem angewendet wird, durch das Energiesteuerungs-Schaltungssystem.
  15. Verfahren nach Anspruch 14, wobei das Verringern der Energie, die auf das zweite Speicherschaltungssystem angewendet wird, eines oder mehreres aus Folgendem umfasst: Beenden einer Taktsignalübertragung auf das zweite Speicherschaltungssystem über die zweiten Kanäle durch das Energiesteuerungs-Schaltungssystem; Beenden der Energiezufuhr zu dem zweiten Speicherschaltungssystem durch das Energiesteuerungs-Schaltungssystem; Deaktivieren automatisierter Selbstaktualisierungsoperationen für das zweite Speicherschaltungssystem durch das Energiesteuerungs-Schaltungssystem; oder zumindest teilweise Beenden der Energiezufuhr zu dem zweiten Speicherschaltungssystem durch das Energiesteuerungs-Schaltungssystem.
  16. Verfahren nach Anspruch 14, ferner umfassend: Reaktivieren der Energiezufuhr zu dem zweiten Speicherschaltungssystem durch das Energiesteuerungs-Schaltungssystem in Reaktion auf den Empfang eines Befehls, das zweite Speicherschaltungssystem hochzufahren; und Kopieren der Daten, die von dem zweiten Speicherschaltungssystem auf das erste Speicherschaltungssystem übertragen wurden, von dem ersten Speicherschaltungssystem in das zweite Speicherschaltungssystem durch das Speichersteuerungs-Schaltungssystem.
  17. Verfahren nach Anspruch 14, wobei das Empfangen des Befehls zum Übertragen von Daten von dem zweiten Speicherschaltungssystem über die zweiten Kanäle auf das erste Speicherschaltungssystem über die ersten Kanäle umfasst: Lesen von Bits aus einem Energiesteuerungsregister, welches Konfigurationseinstellungen für das erste Speicherschaltungssystem und das zweite Speicherschaltungssystem speichert, durch das Energiesteuerungs-Schaltungssystem.
  18. System, umfassend: Mittel zum Empfangen eines Befehls zum Übertragen von Daten von einem zweiten Speicherschaltungssystem über zweite Kanäle auf ein erstes Speicherschaltungssystem über erste Kanäle; Mittel zum Übertragen mindestens der Hälfte der Daten, die in dem ersten Speicherschaltungssystem gespeichert sind und in dem zweiten Speicherschaltungssystem gespeichert sind, auf eine oder mehrere Dateien in einem permanenten Speicher, wobei nicht-übertragene Daten verbleibende Daten sind; Mittel zum Kopieren der verbleibenden Daten auf eine Gruppe aufeinanderfolgender Seiten unter dem ersten Speicherschaltungssystem und unter dem zweiten Speicherschaltungssystem, um für belegte Speicherseiten in dem zweiten Speicherschaltungssystem und für freie Speicherseiten in dem ersten Speicherschaltungssystem zu sorgen; Mittel zum Übertragen von Daten von den belegten Speicherseiten in dem zweiten Speicherschaltungssystem auf Speicherstellen in den freien Speicherseiten in dem ersten Speicherschaltungssystem; und Mittel zum Verringern der Energie, die auf das zweite Speicherschaltungssystem angewendet wird.
  19. System nach Anspruch 18, wobei das Mittel zum Verringern der Energie, die auf das zweite Speicherschaltungssystem angewendet wird, eines oder mehreres aus Folgendem umfasst: Mittel zum Beenden einer Taktsignalübertragung auf das zweite Speicherschaltungssystem über die zweiten Kanäle; Mittel zum Beenden der Energiezufuhr zu dem zweiten Speicherschaltungssystem; Mittel zum Deaktivieren automatisierter Selbstaktualisierungsoperationen für das zweite Speicherschaltungssystem; oder Mittel zum zumindest teilweise Beenden der Energiezufuhr zu dem zweiten Speicherschaltungssystem.
  20. System nach Anspruch 18, ferner umfassend: Mittel zum Reaktivieren der Energiezufuhr zu dem zweiten Speicherschaltungssystem in Reaktion auf den Empfang eines Befehls, das zweite Speicherschaltungssystem hochzufahren; und Mittel zum Kopieren der Daten, die von dem zweiten Speicherschaltungssystem auf das erste Speicherschaltungssystem übertragen wurden, von dem ersten Speicherschaltungssystem in das zweite Speicherschaltungssystem.
  21. System nach Anspruch 18, wobei das Mittel zum Empfangen des Befehls zum Übertragen von Daten von dem zweiten Speicherschaltungssystem über die zweiten Kanäle auf das erste Speicherschaltungssystem über die ersten Kanäle umfasst: Mittel zum Lesen von Bits aus einem Energiesteuerungsregister, welches Konfigurationseinstellungen für das erste Speicherschaltungssystem und das zweite Speicherschaltungssystem speichert, durch das Energiesteuerungs-Schaltungssystem.
  22. System zum Übertragen von Daten, wobei das System dafür eingerichtet ist, das Verfahren nach einem der Ansprüche 14 bis 17 auszuführen.
  23. Chipsatz, der dafür eingerichtet ist, das Verfahren nach einem der Ansprüche 14 bis 17 auszuführen.
  24. Mindestens ein maschinenlesbares Medium, umfassend mehrere Befehle, welche in Reaktion darauf, dass sie auf einer Rechenvorrichtung ausgeführt werden, bewirken, dass die Rechenvorrichtung das Verfahren nach einem der Ansprüche 14 bis 17 ausführt.
  25. Einheit, welche dafür konfiguriert ist, Daten zu übertragen, wobei die Einheit dafür eingerichtet ist, das Verfahren nach einem der Ansprüche 14 bis 17 auszuführen.
DE112019002389.6T 2018-06-29 2019-05-30 Architektur zur dynamischen umwandlung einer speicherkonfiguration Pending DE112019002389T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/024,637 2018-06-29
US16/024,637 US10877693B2 (en) 2018-06-29 2018-06-29 Architecture for dynamic transformation of memory configuration
PCT/US2019/034737 WO2020005457A1 (en) 2018-06-29 2019-05-30 Architecture for dynamic transformation of memory configuration

Publications (1)

Publication Number Publication Date
DE112019002389T5 true DE112019002389T5 (de) 2021-03-04

Family

ID=65230240

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019002389.6T Pending DE112019002389T5 (de) 2018-06-29 2019-05-30 Architektur zur dynamischen umwandlung einer speicherkonfiguration

Country Status (7)

Country Link
US (1) US10877693B2 (de)
JP (1) JP7374116B2 (de)
KR (1) KR20210016325A (de)
CN (1) CN111886575A (de)
BR (1) BR112020019651A2 (de)
DE (1) DE112019002389T5 (de)
WO (1) WO2020005457A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877693B2 (en) * 2018-06-29 2020-12-29 Intel Corporation Architecture for dynamic transformation of memory configuration
US10580481B1 (en) * 2019-01-14 2020-03-03 University Of Virginia Patent Foundation Methods, circuits, systems, and articles of manufacture for state machine interconnect architecture using embedded DRAM
US10770431B1 (en) * 2019-02-27 2020-09-08 Western Digital Technologies, Inc. Memory die layouts for failure protection in SSDs
US11669901B2 (en) 2019-07-12 2023-06-06 Core Scientific Operating Company Communication network for gaming rewards
US20210064445A1 (en) * 2019-08-27 2021-03-04 Core Scientific, Inc. Harvesting remnant cycles in smart devices
US11449346B2 (en) * 2019-12-18 2022-09-20 Advanced Micro Devices, Inc. System and method for providing system level sleep state power savings
US11487447B2 (en) * 2020-08-28 2022-11-01 Advanced Micro Devices, Inc. Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems
US11513691B2 (en) * 2021-01-09 2022-11-29 Western Digital Technologies, Inc. Systems and methods for power and performance improvement through dynamic parallel data transfer between device and host
GB2604153A (en) * 2021-02-26 2022-08-31 Advanced Risc Mach Ltd Data Processors
US20230275597A1 (en) * 2021-11-08 2023-08-31 Ambiq Micro, Inc. Low power and wide dynamic range analog-to-digital converter

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6240496B1 (en) * 1989-11-24 2001-05-29 Hyundai Electronics America Architecture and configuring method for a computer expansion board
AU662973B2 (en) * 1992-03-09 1995-09-21 Auspex Systems, Inc. High-performance non-volatile ram protected write cache accelerator system
US6154821A (en) 1998-03-10 2000-11-28 Rambus Inc. Method and apparatus for initializing dynamic random access memory (DRAM) devices by levelizing a read domain
JP2001093275A (ja) 1999-09-20 2001-04-06 Mitsubishi Electric Corp 半導体集積回路装置
US6418510B1 (en) * 2000-09-14 2002-07-09 International Business Machines Corporation Cooperative cache and rotational positioning optimization (RPO) scheme for a direct access storage device (DASD)
US7269709B2 (en) * 2002-05-15 2007-09-11 Broadcom Corporation Memory controller configurable to allow bandwidth/latency tradeoff
US7218566B1 (en) 2005-04-28 2007-05-15 Network Applicance, Inc. Power management of memory via wake/sleep cycles
US7590796B2 (en) 2006-07-31 2009-09-15 Metaram, Inc. System and method for power management in memory systems
US20080005516A1 (en) * 2006-06-30 2008-01-03 Meinschein Robert J Memory power management through high-speed intra-memory data transfer and dynamic memory address remapping
US20080133654A1 (en) * 2006-12-01 2008-06-05 Chei-Yol Kim Network block device using network asynchronous i/o
US20080307240A1 (en) * 2007-06-08 2008-12-11 Texas Instruments Incorporated Power management electronic circuits, systems, and methods and processes of manufacture
JP2009163394A (ja) 2007-12-28 2009-07-23 Panasonic Corp メモリ管理装置およびメモリ管理方法
WO2010064280A1 (en) * 2008-12-04 2010-06-10 Hitachi, Ltd. Storage system having volatile memory and non-volatile memory
US8365020B2 (en) * 2010-03-18 2013-01-29 Red Hat Israel, Ltd. Mechanism for saving crash dump files of a virtual machine on a designated disk
US9842068B2 (en) * 2010-04-14 2017-12-12 Qualcomm Incorporated Methods of bus arbitration for low power memory access
US8589730B2 (en) * 2010-08-31 2013-11-19 Apple Inc. Handling errors during device bootup from a non-volatile memory
CN101950261B (zh) * 2010-09-09 2013-12-04 中兴通讯股份有限公司 数据存储与鉴权并行的处理方法和终端
JP6050250B2 (ja) 2011-01-11 2016-12-21 ビーエーエスエフ ソシエタス・ヨーロピアBasf Se ポリイソブテンコハク酸エステルをベースとしたヒドロゲル
US8874680B1 (en) * 2011-11-03 2014-10-28 Netapp, Inc. Interconnect delivery process
BR112014013390A2 (pt) * 2011-12-20 2017-06-13 Intel Corp redução de potência parcial dinâmica de cache de lado de memória em hierarquia de memória de 2 níveis
JP5894044B2 (ja) 2012-09-14 2016-03-23 レノボ・シンガポール・プライベート・リミテッド ハイブリッド・ディスク・ドライブにデータを記憶する方法および携帯式コンピュータ
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
WO2015047326A1 (en) * 2013-09-27 2015-04-02 Hewlett-Packard Development Company, L.P. Data management on memory modules
US9304937B2 (en) * 2013-10-23 2016-04-05 Netapp Inc. Atomic write operations for storage devices
US9459810B2 (en) * 2013-12-30 2016-10-04 Sandisk Technologies Llc Storage module and method for configuring command attributes
US9727439B2 (en) * 2014-05-28 2017-08-08 Vmware, Inc. Tracking application deployment errors via cloud logs
US9563382B2 (en) * 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
US9836108B2 (en) * 2014-09-10 2017-12-05 Toshiba Memory Corporation Memory system and controller
US20160094339A1 (en) * 2014-09-30 2016-03-31 Sandisk Technologies Inc. Scrambling schemes for scrambling and descrambling data
US9740617B2 (en) * 2014-12-23 2017-08-22 Intel Corporation Hardware apparatuses and methods to control cache line coherence
JP2017027458A (ja) 2015-07-24 2017-02-02 京セラドキュメントソリューションズ株式会社 メモリー制御装置及びこれを備えた画像形成装置
US20170125070A1 (en) * 2015-10-29 2017-05-04 Sandisk Technologies Inc. System and method for hibernation using a delta generator engine
US20170206031A1 (en) * 2016-01-15 2017-07-20 Samsung Electronics Co., Ltd. Fine grain level memory power consumption control mechanism
JP2017138853A (ja) 2016-02-04 2017-08-10 株式会社東芝 情報処理装置およびプログラム
US9996477B2 (en) * 2016-09-14 2018-06-12 Western Digital Technologies, Inc. Asynchronous drive telemetry data notification
US10243560B2 (en) * 2017-08-11 2019-03-26 Seagate Technology Llc Maintaining slew rate while loading flash memory dies
US10685121B2 (en) * 2017-10-17 2020-06-16 Quanta Computer Inc. Secure environment examination
TWI645289B (zh) * 2017-10-31 2018-12-21 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體操作方法
US10877693B2 (en) * 2018-06-29 2020-12-29 Intel Corporation Architecture for dynamic transformation of memory configuration

Also Published As

Publication number Publication date
KR20210016325A (ko) 2021-02-15
US20190042157A1 (en) 2019-02-07
JP2021528712A (ja) 2021-10-21
BR112020019651A2 (pt) 2021-01-05
US10877693B2 (en) 2020-12-29
JP7374116B2 (ja) 2023-11-06
WO2020005457A1 (en) 2020-01-02
CN111886575A (zh) 2020-11-03

Similar Documents

Publication Publication Date Title
DE112019002389T5 (de) Architektur zur dynamischen umwandlung einer speicherkonfiguration
DE112017001804T5 (de) Vorrichtung und Verfahren für träge synchrone Seitentabellenaktualisierungen mit geringem Aufwand
DE112012007119T5 (de) Threadmigration-Unterstützung für Kerne unterschiedlicher Architektur
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE112013005287B4 (de) Prozessor mit heterogenen physischen Kernen und in einem Prozessor mit heterogenen physischen Kernen implementiertes Verfahren
DE102018132521A1 (de) Vorrichtung und verfahren zur verflachung und reduktion von schleifen in einer single instruction, multiple data- (simd-) pipeline
DE112012007058T5 (de) Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE202019005682U1 (de) Hardwaregestützte Paging-Mechanismen
DE112011105122T5 (de) Systeme, Vorrichtungen und Verfahren zum Vermischen zweier Quelloperanden in einem einzigen Ziel unter Verwendung einer Schreibmaske
DE112013005338T5 (de) Vorrichtung und Verfahren für Beschleunigeraufruf mit geringer Latenz
DE112013005418T5 (de) Vorrichtung und Verfahren zur schnellen Befehlsfehlerbehandlung
DE102014003706A1 (de) BEREICHSBEGRENZTE VEKTORSPEICHERZUGRIFFSINSTRUKTIONEN, PROZESSOREN, VERFAHREN und SYSTEME
DE102018124945A1 (de) Einrichtung und verfahren für komplexe multiplikation
DE112016005849T5 (de) Hardwarebeschleuniger und Verfahren für zustandsbehafetete Komprimierungs- und Dekomprimierungsoperationen
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE102019109845A1 (de) Vereinheitlichte Beschleunigung eines Blockgeheimcodes eines symmetrischen Schlüssels für AES-SMS4-Camellia
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE102018130225A1 (de) Entfernte atomare Operationen in Multi-Sockel-Systemen
DE102018003612A1 (de) Befehle für Dualzieltyp-Umwandlung-, Akkumulation- mit gemischter Präzision und atomare Speicheroperationen mit gemischter Präzision
DE112013003735B4 (de) Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung
DE102018126036A1 (de) Systeme und verfahren zum setzen eines kachelregisterpaars auf null
DE112016005909T5 (de) Einrichtung und verfahren zum beschleunigen von graphenanalyse
DE112017003347T5 (de) Systeme, Vorrichtungen und Verfahren für Strided-Ladevorgänge