DE10297581T5 - Lade/Übertrage- und Duplizier-Anweisungen für einen Prozessor - Google Patents

Lade/Übertrage- und Duplizier-Anweisungen für einen Prozessor Download PDF

Info

Publication number
DE10297581T5
DE10297581T5 DE10297581T DE10297581T DE10297581T5 DE 10297581 T5 DE10297581 T5 DE 10297581T5 DE 10297581 T DE10297581 T DE 10297581T DE 10297581 T DE10297581 T DE 10297581T DE 10297581 T5 DE10297581 T5 DE 10297581T5
Authority
DE
Germany
Prior art keywords
bits
source
register
bit
floating point
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.)
Ceased
Application number
DE10297581T
Other languages
English (en)
Inventor
Patrice Portland Roussel
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 DE10297581T5 publication Critical patent/DE10297581T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

Computeranweisung, die folgendes umfaßt: eine Übertrage- und Duplizieranweisung, die bewirkt, daß ein Prozessor einen ersten Teil von Bits einer Quelle in einen ersten Teil eines Zielregisters lädt und diesen ersten Teil der Bits in einem nachfolgenden Teil des Zielregisters dupliziert.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft Lade-/Übertragungs- und Duplikationsanweisungen für einen Prozessor.
  • Allgemeiner Stand der Technik
  • Eine Systemarchitektur beschreibt die Betriebsart eines Prozessors und Mechanismen, die vorgesehen werden, um Betriebssysteme zu unterstützen, und in denen systemorientierte Register und Datenstrukturen und systemorientierte Anweisungen enthalten sind. Die Systemarchitektur stellt außerdem die notwendigen Mechanismen für den Wechsel zwischen Realadressen- und geschützten Betriebsarten bereit.
  • Die Einführung von SIMD-Technologie (single-instruction, multiple-data) in eine Systemarchitektur ermöglicht parallele Berechnungen an gepackten Integer-Daten, die in 64-Bit-Registern enthalten sind. SIMD ermöglicht einem Prozessor verbesserte Leistung zum Bei spiel in Anwendungen für erweiterte Medien, Bildverarbeitung und Datenkompression.
  • Beschreibung der Zeichnungen
  • 1 ist ein Blockschaltbild eines Prozessors.
  • 2 ist ein Blockschaltbild einer Ausführungsumgebung.
  • 3 ist ein Diagramm eines Byteordnungs-Fundamentaldatentyps.
  • 4 zeigt ein Fließkommaformat.
  • 5 zeigt eine Tabelle, die die verschiedenen SIMD-Erweiterungen und -Datentypen, und wie die Datentypen in Registern gepackt werden, zusammenfaßt.
  • Ausführliche Beschreibung
  • Mit Bezug auf 1 ist ein Prozessor 10 gezeigt. Der Prozessor 10 ist eine Dreiweg-Superscaler-Pipeline-Architektur. Durch Verwendung paralleler Verarbeitungstechniken kann der Prozessor 10 im Mittel die Ausführung (retire) von drei Anweisungen pro Taktzyklus decodieren, abfertigen und abschließen. Um mit diesem Grad an Anweisungsdurchsatz fertig zu werden, verwendet der Prozessor 10 eine entkoppelte, zwölfstufige Pipeline, die Out-of-order-Anweisungsausfihrung unterstützt. Die Mikroarchitektur-Pipeline des Prozessors 10 ist in vier Abschnitte unterteilt, nämlich einen Cache 12 der ersten Ebene und einen Cache 14 der zweiten Ebene, ein Frontend 16, einen Out-of-order-Ausführungskern 18 und einen Retire-Abschnitt 20. Anweisungen und Daten werden diesen Einheiten durch eine Busschnittstelle 22 zugeführt, die an einen Systembus 24 angeschaltet ist. Das Frontend 16 führt dem Out-of-order-Kern 18, der eine sehr große Ausführungsbandbreite aufweist und grundlegende Integer-Operationen mit einer Latenz von einem halben Taktzyklus ausführen kann, in Pro- grammreihenfolge Anweisungen zu. Das Frontend 16 holt Anweisungen und decodiert diese zu einfachen, als Mikroops (μ-ops) bezeichneten Operationen. Dann kann das Frontend 16 in der ursprünglichen Programmreihenfolge mehrfache μ-ops pro Zyklus an den Out-of-order-Kern 18 ausgeben. Das Frontend 16 führt mehrere grundlegende Funktionen durch. Zum Beispiel führt das Frontend 16 Vorabrufanweisungen durch, die wahrscheinlich ausgeführt werden, sowie Abrufanweisungen, die noch nicht vorabgerufen wurden, und Decodieranweisungen zu Mikrooperationen, erzeugt Mikrocode für komplexe Anweisungen und Spezialcode, liefert decodierte Anweisungen von einem Ausführungs-Trace-Cache 26 ab und sagt unter Verwendung erweiterter Algorithmen in einer Zweigvorhersageeinheit 28 Verzweigungen voraus.
  • Das Frontend 16 des Prozessors 10 ist so ausgelegt, daß es bestimmte häufig anzutreffende Probleme in schnellen Mikroprozessoren mit Pipeline behandelt. Zum Beispiel tragen zwei dieser Probleme zu wesentlichen Quellen von Verzögerungen bei, und zwar die Zeit zum Decodieren von aus dem Ziel abgerufenen Anweisungen und verschwendete Decodierbandbreite aufgrund von Verzweigungen oder eines Zweigziels mitten in Cache-Linien.
  • Der Ausführungs-Trace-Cache 26 behandelt beide Probleme, indem er decodierte Anweisungen speichert. Anweisungen werden durch eine (nicht gezeigte) Übersetzungs-Engine abgerufen und decodiert und zu Sequenzen von als Traces bezeichneten μ-ops aufgebaut. Diese Traces von μ-ops werden in dem Trace-Cache 26 gespeichert. Die Anweisungen von dem wahrscheinlichsten Ziel einer Verzweigung folgen unmittelbar der Verzweigung ohne Rücksicht auf Kontinuität von Anweisungsadressen. Nachdem ein Trace aufgebaut wurde, wird der Trace-Cache 26 nach der Anweisung durchsucht, die diesem Trace folgt. Wenn diese Anweisung als die erste Anweisung in einem existierenden Trace erscheint, hört das Abrufen und Decodieren von Anweisungen 30 aus der Speicherhierarchie auf und der Trace-Cache 26 wird die neue Quelle von Anweisungen.
  • Der Ausführungs-Trace-Cache 18 und die (nicht gezeigte) Übersetzungs-Engine weisen kooperierende Zweigvorhersagehardware auf. Verzweigungsziele werden unter Verwendung von Zweigzielpuffern (BTBS) 28 auf der Basis ihrer linearen Adresse vorhergesagt und so bald wie möglich abgerufen. Die Zweigziele werden aus dem Trace-Cache 26 abgerufen, wenn sie tatsächlich dort cache-gespeichert sind. Andernfalls werden sie aus der Speicherhierarchie abgerufen. Mit den Zweigvorhersageinformationen der Übersetzungs-Engine werden Traces entlang den wahrscheinlichsten Wegen gebildet.
  • Der Kern 18 führt Anweisungen außerhalb der Reihenfolge ("out of order") aus, wodurch der Prozessor 10 Anweisungen umordnen kann, so daß, wenn eine μ-op verzögert wird, während auf Daten oder ein Ausführungsbetriebsmittel, um das konkurriert wird, gewartet wird, andere μ-ops, die später in der Programmreihenfolge kommen, um sie herum voranschreiten können. Der Prozessor 10 verwendet mehrere Puffer zum Glätten des Flusses von T-ops. Das hat zur Folge, daß, wenn es in einem Teil der Pipeline zu einer Verzögerung kommt, diese Verzögerung durch andere, parallel ausgeführte Operationen oder durch die Ausführung von μ-ops, die zuvor in einem Puffer in eine Warteschlange eingereiht wurden, abgedeckt werden kann.
  • Der Kern 18 ist dafür ausgelegt, parallele Ausführung zu unterstützen. Der Kern 18 kann bis zu sechs μ-ops pro Zyklus abfertigen. Man beachte, daß dies die μ-op-Bandbreite des Trace-Cache und des Retirement 20 übersteigt. Die meisten Pipelines können mit jedem Zyklus mit dem Ausführen einer neuen μ-op beginnen, so daß mehrere Anweisungen zu beliebiger Zeit für jede Pipeline verarbeitet werden können. Eine Anzahl von Anweisungen der Arithmetik-Logik-Einheit (ALU) können zwei pro Zyklus starten, und viele Fließkommaanweisungen können eine jeden zweiten Zyklus starten. Schließlich können μ-ops mit dem Ausführen außerhalb der Reihenfolge beginnen, sobald ihre Dateneingaben bereit und Betriebsmittel verfügbar sind.
  • Der Retirement-Abschnitt 20 empfängt die Ergebnisse der ausgeführten μ-ops aus dem Ausführungskern 18 und verarbeitet die Ergebnisse, so daß der ordnungsgemäße Architekturzustand gemäß der ursprünglichen Programmreihenfolge aktualisiert wird. Für eine semantisch korrekte Ausführung werden die Ergebnisse von Anweisungen in der ursprünglichen Programmreihenfolge übergeben, bevor sie ausgeschieden wird. Programmausnahmen können erhoben werden, während Anweisungen ausgeschieden werden. Somit können Programmausnahmen nicht spekulativ erfolgen. Sie erfolgen in der korrekten Reihenfolge und der Prozessor 10 kann nach der Ausführung korrekt neugestartet werden.
  • Wenn eine μ-op abgeschlossen ist und ihr Ergebnis in das Ziel schreibt, wird sie ausgeschieden ("retired"). Es können bis zu drei μ-ops pro Zyklus ausgeschieden werden. Ein (nicht gezeigter) ReOrder-Puffer (ROB) in dem Ausscheideabschnitt 20 ist die Einheit in dem Prozessor 10, die abgeschlossene μ-ops puffert, den Architekturzustand in der Reihenfolge aktualisiert und das Anordnen von Programmausnahmen verwaltet.
  • Der Ausscheideabschnitt 20 verfolgt auch Verzweigungen und sendet aktualisierte Verzweigungszielinformationen zu dem BTB 28, um die Verzweigungsvorgeschichte zu aktualisieren.
  • Auf diese Weise können Traces, die nicht mehr benötigt werden, aus dem Trace-Cache 26 ausgeräumt werden und es können auf der Basis aktualisierter Zweigvorgeschichteinformationen neue Zweigwege abgerufen werden.
  • Mit Bezug auf 2 ist eine Ausführungsumgebung 50 gezeigt. Jedem Programm oder jeder Task, das bzw. die auf dem Prozessor 10 (von 1) abläuft, wird ein Satz Betriebsmittel zum Ausführen von Anweisungen und zum Speichern von Code, Daten und Zustandsinformationen gegeben. Diese Betriebsmittel bilden die Ausführungsumgebung 50 des Prozessors 10. Auf dem Prozessor 10 ablaufende Anwendungsprogramme und das Betriebssystem bzw. die Betriebsexekutive verwenden gemeinsam die Ausführungsumgebung 50. Die Ausführungsumgebung 50 enthält grundlegende Programmausführungsregister 52, einen Adressenraum 54, Register 56 der Fließkommaeinheit (FPU), Multimedia-Erweiterungsregister (MMX) 58 und Register 60 der SIMD-Erweiterung (SSE und SSE2).
  • Jede auf dem Prozessor 10 ablaufende Task oder jedes auf dem Prozessor 10 ablaufende Programm kann eine lineare Adressenbasis 54 von bis zu vier Gigabyte (232 Byte) und einen physikalischen Adressenraum von bis zu 64 Gigabyte (236 Byte) adressieren. Der Adressenraum 54 kann flach oder segmentiert sein. Durch Verwendung eines Erweiterungsmechanismus für physikalische Adressen kann ein physikalischer Adressenraum von 236-1 adressiert werden.
  • Zu den grundlegenden Programmausführungsregistern 52 gehören acht Vielzweckregister 62, sechs Segmentregister 64, ein EFLAGS-Register 66 und ein Register 68 für den Anweisungszeiger (EIP). Die grundlegenden Programmausführungsregister 52 liefern eine grundlegende Ausführungsumgebung, in der ein Satz Vielzweckanweisungen ausgeführt werden soll. Diese Anweisungen führen eine grundlegende Integer-Arithmetik an Byte-, Wort- und Doppelwort-Integers durch, wickeln die Programmflußsteuerung ab, operieren an Bit- und Byte-Stärken und an Adressenspeicher.
  • Die FPU-Register 56 umfassen acht FPU-Datenregister 70, ein FPU-Steuerregister 72, ein Statusregister 74, ein FPU-Anweisungszeigerregister 76, ein Zeigerregister 78 für FPU-Operanden (Daten), ein FPU-Tag-Register 80 und ein FPU-op-Code-Register 82. Die FPU-Register 56 liefern eine Ausführungsumgebung zum Operieren an Fließkommawerten mit einfacher Präzision, doppelter Präzision und doppelter erweiterter Präzision und an Wort-, Doppelwort- und Quadwort-Integers und binär codierten (BCD-) Dezimalwerten.
  • Die acht Multimedia-Erweiterungsregister 58 unterstützen die Ausführung von Einzelanweisungs-/Mehrfachdatenoperationen (SIMD-Operationen) an gepackten 64-Byte-, Wort- und -Doppelwort-Integers.
  • Die Register 60 der SIMD-Erweiterung (SSE und SSE2) umfassen acht erweiterte Multimedia- (XMM-) Datenregister 84 und ein MXCSR-Register 86. Die Register 60 der SIMD-Erweiterung (SSE und SSE2) unterstützen die Ausführung von SIMD-Operationen an gepackten 128-Bit-Fließkommawerten mit einfacher Präzision und doppelter Präzision und an gepackten 128-Bit-Byte-, Wort-, Doppelwort- und Quadwort-Integers.
  • Ein (nicht gezeigter) Stapel unterstützt Prozedur- oder Subroutinenaufrufe und das Weiterleiten von Parametern zwischen Prozeduren oder Subroutinen.
  • Die Vielzweckregister 62 sind für das Speichern von Operanden und Zeigern verfügbar. Die Segmentregister 64 halten bis zu sechs Segmentselektoren. Die EFLAGS-Register 66 (Programmstatus und Steuerung) melden den Status eines Programms, das ausgeführt wird, und ermöglicht eine begrenzte Steuerung (auf Anwendungsprogrammebene) des Prozessors. Das Register 68 für den Anweisungszeiger (EIP) enthält einen 32-Bit-Zeiger auf die nächste auszuführende Anweisung.
  • Die 32-Bit-Vielzweckregister 62 werden zum Halten von Operanden für logische und arithmetische Operationen, Operanden für Adressenberechnungen und Speicherzeiger vorgesehen. Die Segmentregister 64 halten 16-Bit-Segmentselektoren. Ein Segmentselektor ist ein spezieller Zeiger, der ein Segment im Speicher identifiziert. Um auf ein bestimmtes Segment im Speicher zuzugreifen, muß der Segmentselektor für dieses Segment in dem entsprechenden Segmentregister 64 vorhanden sein.
  • Beim Schreiben von Anwendungscode erzeugen Programmierer im allgemeinen Segmentselektoren mit Assembler-Direktiven und -Symbolen. Der Assembler und andere Tools erzeugen dann die tatsächlichen Segmentselektorwerte, die diesen Direktiven und Symbolen zugeordnet sind. Wenn sie Systemcode schreiben, müssen Programmierer möglicherweise Segmentselektoren direkt generieren.
  • Wie die Segmentregister 64 benutzt werden, hängt von der Art des Speicherverwaltungsmodells ab, das das Betriebssystem oder die Exekutive verwendet. Bei Verwendung eines flachen (unsegmentierten) Speichermodells werden die Segmentregister 64 mit Segmentselektoren geladen, die auf sich überlappende Segmente zeigen, von denen jedes an einer Adresse Null im linearen Adressenraum beginnt. Diese sich überlappenden Segmente enthalten dann den linearen Adressenraum für das Programm. In der Regel werden zwei sich überlappende Segmente definiert: eines für Code und ein weiteres für Daten und Stapel. Das (nicht gezeigte) CS-Segmentregister der Segmentregister 64 zeigt auf das Codesegment, und alle anderen Segmentregister zeigen auf das Daten- und Stapelsegment.
  • Bei Verwendung eines segmentierten Speichermodells wird jedes Segmentregister 64 gewöhnlich mit einem anderen Segmentselektor geladen, so daß jedes Segmentregister 64 auf ein anderes Segment in dem linearen Adressenraum zeigt. Zu jedem beliebigen Zeitpunkt kann ein Programm somit auf bis zu sechs Segmente in dem linearen Adressenraum zugreifen. Um auf ein Segment zuzugreifen, auf das keines der Segmentregister 64 zeigt, lädt ein Programm zuerst den Segmentselektor, auf den zugegriffen werden soll, in ein Segmentregister 64.
  • Das 32-Bit-EFLAGS-Register 66 enthält eine Gruppe von Statusflags, ein Steuerflag und eine Gruppe von Systemflags. Einige der Flags in den EFLAGS-Registern 66 können unter Verwendung besonderer Anweisungen direkt modifiziert werden. Es gibt keine Anweisungen, mit denen das ganze Register 66 direkt untersucht oder modifiziert werden kann. Mit den folgenden Anweisungen können jedoch Gruppen von Flags zu und von den Prozedurstapeln oder dem Vielzweckregister übertragen werden: LAHF, SAHF, push-F, push-FD, pop-F und pop-FD. Nachdem der Inhalt des EFLAGS-Registers 66 zu dem Prozedurstapel oder einem Vielzweckregister transferiert wurde, können die Flags unter Verwendung der 10-Bit-Manipulationsanweisungen des Prozessors untersucht und modifiziert werden.
  • Beim Suspendieren einer Task sichert der Prozessor 10 automatisch den Zustand des EFLAGS-Registers 66 in dem (nicht gezeigten) Task-Zustandssegement (TSS) für die Task, die suspendiert wird. Wenn sich der Prozessor 10 an eine neue Task bindet, lädt er das EFLAGS-Register 66 mit Daten aus dem (nicht gezeigten) Neue-Tasks-Programmzustandsregister (PSS).
  • Wenn ein Interrupt-Handler oder eine Programmausnahmeprozedur aufgerufen wird, sichert der Prozessor 10 automatisch den Zustand des EFLAGS-Registers 66 auf dem Prozedurstapel. Wenn ein Interrupt oder eine Programmausnahme mit einem Task-Wechsel abgewickelt wird, wird der Zustand des EFLAGS-Registers 66 für die Task, die suspendiert wird, auf dem TSS gesichert.
  • Die in dem Prozessor 10 verwendeten Fundamentaldatentypen sind Bytes, Wörter, Doppelwörter, Quadwörter und Doppelquadwörter. Ein Byte sind acht Bit, ein Wort sind zwei Byte (16 Bit), ein Doppelwort sind vier Byte (32 Bit), ein Quadwort sind acht Byte (64 Bit) und ein Doppelquadwort sind sechzehn Byte (128 Bit).
  • Mit Bezug auf 3 ist eine Bytereihenfolge jedes der Fundamentaldatentypen bei Referenzierung als Operanden im Speicher gezeigt. Das niedrige Byte (Bit 0-7) jedes Datentyps nimmt die niedrigste Adresse im Speicher ein, und diese Adresse ist auch die Adresse des Operanden.
  • Wörter, Doppelwörter und Quadwörter müssen im Speicher nicht an natürlichen Grenzen ausgerichtet sein. Die natürlichen Grenzen für Wörter, Doppelwörter und Quadwörter sind geradzahlige Adressen, gerade durch 4 teilbare Adressen bzw. gerade durch 8 teilbare Adres- sen. Um jedoch die Leistung von Programmen zu verbessern, sollten Datenstrukturen (insbesondere Stapel) immer, wenn es möglich ist, an natürlichen Grenzen ausgerichtet sein. Der Grund dafür besteht darin, daß der Prozessor 10 zwei Speicherzugriffe benötigt, um einen unausgerichteten Speicherzugriff durchzuführen, während ausgerichtete Zugriffe einen Speicherzugriff erfordern. Ein Wort- oder Doppelwortoperand, der eine 4-Byte-Grenze überschreitet, oder ein Quadwortoperand, der eine 8-Byte-Grenze überschreitet, wird als unausgerichtet betrachtet, und es sind zwei getrennte Speicherbuszyklen erforderlich, um auf ihn zuzugreifen. Ein Wort, das an einer ungeraden Adresse beginnt, aber keine Wortgrenze überschreitet, wird als ausgerichtet betrachtet, und es kann in einem Buszyklus auf es zugegriffen werden.
  • Bestimmte Anweisungen, die an Doppelquadwörtern operieren, erfordern, daß Speicheroperanden an einer natürlichen Grenze ausgerichtet sind. Diese Anweisungen generieren eine allgemeine Schutzprogrammausnahme (#GP), wenn ein unausgerichteter Operand spezifiziert wird. Eine natürliche Grenze für ein Doppelquadwort ist jede gerade durch 16 teilbare Adresse. Andere Anweisungen, die an Doppelquadwörtern operieren, gestatten einen unausgerichteten Zugriff, ohne eine allgemeine Schutzprogrammausnahme zu generieren. Es sind aber zusätzliche Speicherbuszyklen erforderlich, um auf unausgerichtete Daten aus dem Speicher zuzugreifen.
  • Obwohl Byte, Wörter und Doppelwörter die Fundamentaldatentypen des Prozessors 10 sind, unterstützen bestimmte Anweisungen eine zusätzliche Interpretation dieser Datentypen, um eine Durchführung von Operationen an numerischen Datentypen zu erlauben. Zum Beispiel definiert der Prozessor 10 zwei Integer-Typen: vorzeichenlos und vorzeichenbehaftet. Vorzeichenlose Integers sind gewöhnliche Binärwerte im Bereich von null bis zu der maximalen positiven Zahl, die in der gewählten Operandengröße codiert werden kann. Vorzeichenbehaftete Integers sind Zweierkomplement-Binärwerte, mit denen sowohl positive als auch negative ganzzahlige Werte repräsentiert werden können.
  • Der Prozessor 10 definiert drei Fließkommadatentypen und operiert an diesen: Fließkomma mit einfacher Präzision, Fließkomma mit doppelter Präzision und Fließkomma mit doppelter erweiterter Präzision. Die Datenformate für diese Datentypen entsprechen direkt dem in dem IEEE-Standard 754 definierten Format für Binär-Fließkommaarithmetik.
  • Zeiger sind Adressen von Speicherstellen im Speicher. Der Prozessor 10 definiert zwei Zeigertypen: einen Nah-Zeiger (32 Bit) und einen Fern-Zeiger (48 Bit). Ein Nah-Zeiger ist ein 32-Bit-Offset (das auch als eine effektive Adresse bezeichnet wird) in einem Segment. Nah-Zeiger werden für alle Speicherreferenzen in einem Flach-Speichermodell oder für Referenzen in einem segmentierten Modell verwendet, wenn die Identität des Segments, auf das zugegriffen wird, implizit ist. Ein Fern-Zeiger ist eine logische 48-Bit-Adresse, die aus einem 16-Bit-Selektor und einem 32-Bit-Offset besteht. Fern-Zeiger werden für Speicherreferenzen und ein segmentiertes Datenmodell verwendet, bei dem die Identität eines Segments, auf das zugegriffen wird, explizit spezifiziert werden muß.
  • Ein Bitfeld ist eine kontinuierliche Bitsequenz. Es kann an einer beliebigen Bitposition eines beliebigen Byte im Speicher beginnen und kann bis zu 32 Bit enthalten. Ketten sind kontinuierliche Sequenzen von Bit, Byte, Wörtern oder Doppelwörtern. Eine Bitkette kann an einer beliebigen Bitposition eines beliebigen Byte beginnen und kann bis zu 232-1 Bit enthalten. Eine Bytekette kann Byte, Wörter oder Doppelwörter enthalten und kann im Bereich von null bis 232-1 Byte (vier Gigabyte) liegen.
  • Binär codierte Dezimal-Integers (BCD-Integers) sind vorzeichenlose Vier-Bit-Integers mit einem Bereich gültiger Werte von 0 bis 9. Der Prozessor 10 definiert Operationen an BCD-Integers, die sich in einem oder mehreren Vielzweckregistern 62 oder in einem oder mehreren FPU-Registern 56 befinden.
  • Mit Bezug auf 4 werden reelle Zahlen in einem Fließkommaformat 100 in den FPU-56-Fließkommaregistern 70 repräsentiert. Das Fließkommaformat enthält drei Teile, nämlich ein Vorzeichen 102, einen Signifikanden 104 und einen Exponenten 106. Das Vorzeichen 102 ist ein binärer Wert, der angibt, ob die Zahl positiv (0) oder negativ (1) ist. Der Signifikand 104 enthält zwei Teile: einen 1-Bit-Binär-Integer (der auch als ein J-Bit bezeichnet wird) 108 und einen Binär-Bruchteil 110. Das Integer-Bit 108 wird häufig nicht repräsentiert, sondern ist stattdessen ein impliziter Wert. Der Exponent 106 ist ein Binär-Integer, der eine Potenz zur Basis 2 repräsentiert, mit der der Signifikand 104 multipliziert wird.
  • Der Prozessor 10 definiert einen Satz gepackter 64-Bit- und 128-Bit-Datentypen zur Verwendung in SIMD-Operationen und operiert an ihnen. Diese Datentypen umfassen Fundamentaldatentypen (gepackte Byte, Wörter, Doppelwörter und Quadwörter) und numerische Interpretationen von Fundamentaldatentypen zur Verwendung in gepackten Integer- und gepackten Fließkommaoperationen.
  • An den 64-Bit-SIMD-Datentypen wird hauptsächlich in den 64-Bit-Multimedia-Erweiterungsregistern 58 operiert. Die fundamentalen gepackten 64-Bit-Datentypen sind gepackte Byte, gepackte Wörter und gepackte Doppelwörter. Bei der Durchführung numerischer SIMD-Operationen an diesen Datentypen in den Multimedia-Erweiterungsregistern 58 werden diese Datentypen als Byte, Wörter oder Doppelwort-Integer-Werte enthaltend interpretiert.
  • An den gepackten 128-Bit-SIMD-Datentypen wird hauptsächlich in den erweiterten Multimedia-Registern (XMM) 84 und in dem Speicher 54 operiert. Die fundamentalen gepackten 128-Bit-Datentypen sind gepackte Byte, gepackte Wörter, gepackte Doppelwörter und gepackte Quadwörter. Bei der Durchführung von SIMD-Operationen an diesen fundamentalen Datentypen in den erweiterten Multimedia- (XMM-) Registern 84 werden diese Datentypen als gepackte oder Skalar-Fließkommawerte mit einfacher Präzision oder doppelter Präzision oder gepackte Byte, Wörter, Doppelwort- oder Quadwort-Integer-Werte enthaltend interpretiert.
  • Mit Bezug auf 5 zeigt eine Tabelle 120, die verschiedenen SIMD-Erweiterungen, die Datentypen, an denen operiert wird, und wie die Datentypen in die Multimedia-Erweiterungsregister 58 und in die erweiterten Multimedia- (XMM-) Register 84 gepackt werden, zusammenfaßt.
  • Wie oben beschrieben operieren Multimedia-Erweiterungsanweisungen an gepackten Byte-, Wort-, Doppelwort- oder Quadwort-Integer-Operanden, die in dem Speicher 54, in den Multimedia-Erweiterungsregistern 58 und/oder in den Vielzweckregistern 62 enthalten sind.
  • Die Multimedia-Erweiterungsanweisungen umfassen Datentransferanweisungen, Konvertie- rungsanweisungen, Gepackt-Arithmetikanweisungen, Vergleichsanweisungen, logische Anweisungen, Schiebe- und Rotationsanweisungen und Zustandsverwaltungsanweisungen.
  • Anweisungen der SIMD-Erweiterung (SSE und SSE2) werden in eine Anzahl von z.B. vier Gruppen aufgeteilt: SIMD-Fließkommaanweisungen mit einfacher Präzision, die an den erweiterten Multimedia- (XMM-) Registern 84 operieren, MXSCR-Anweisungen, die an dem MXSCR-Register 86 operieren, 64-Bit-SIMD-Integer-Anweisungen, die an den MMX-Registern 58 operieren, und Cachebarkeits-Steuer-, Vorabruf- und Anweisungsordnungsanweisungen.
  • Eine Klasse von Anweisungen sind Anweisungen des Lade-/Übertragungs- und Duplikationstyps. Diese Anweisungen werden insofern als "kombinierte" Anweisungen bezeichnet, als durch sie überflüssig wird, eine explizite Operation an dem geladenen Wert durchzuführen, um zum Beispiel eine Duplikation von Bit zu erhalten. Die vorliegende Architektur enthält eine MOVDDUP-Anweisung, eine MOVSHDUP-Anweisung und eine MOVSLDUP-Anweisung. Diese Anweisungen werden vorgesehen, um komplexe Arithmetik mit gepackten Fließkommadatentypen mit einfacher und mit doppelter Präzision zu unterstützen. Diese Anweisungen können in vielfältigen Anwendungen verwendet werden. Zum Beispiel können diese Anweisungen die Effizienz von Signalverarbeitungsanwendungen und Anwendungen, bei denen natürliche Datentypen verarbeitet werden, verbessern.
  • Die MOVDDUP-Anweisung ist eine Übertrage ein Doppel-Fließkomma und Dupliziere-SSE2-Anweisung, die 64 Bit (die Bit [63-0], wenn die Quelle ein Register ist) lädt/überträgt. Die Ausführung der MOVDDUP-Anweisung gibt sowohl in der unteren als auch in der oberen Hälfte desselben Ergebnisregisters dieselben 64 Bit zurück, das heißt, Duplikation der 64 Bit aus der Quelle. Wenn die Quelle Einträge 1/0 aufweist, hat das Ziel also Einträge 1/0/1/0. Die MOVEDDUP-Anweisung hat das folgende Format:
    MOVEDDUP Ziel, Quelle
    wobei der Quellenoperand eine Speicherstelle 54 oder ein zweites erweitertes Multimedia-(XMM-) Register 84 und der Zieloperand ein erstes erweitertes Multimedia- (XMM-) Register 84 ist. Die Quelle enthält einen Doppel-Fließkommadatentyp.
  • Im Betrieb werden, wenn der Quellenoperand eine Speicheradresse ist, die Bit [63-0] des ersten erweiterten Multimedia- (XMM-) Registers mit den Bit [63-0] der Speicheradresse geladen, und die Bit [127-64] des ersten erweiterten Multimedia- (XMM-) Registers werden mit den Bit [63-0] der Speicheradresse geladen. Wenn der Quellenoperand ein zweites erweitertes Multimedia- (XMM-) Register ist, werden die Bit [63-0] des ersten erweiterten Multimedia-(XMM-) Registers gleich den Bit [63-0] des zweiten erweiterten Multimedia- (XMM-) Registers gesetzt, und die Bit [127-64] des ersten erweiterten Multimedia- (XMM-) Registers gleich den Bit [63-0] des zweiten erweiterten Multimedia- (XMM-) Registers gesetzt.
  • Die lineare Adresse entspricht der Adresse des niedrigstwertigen Byte der referenzierten Speicherdaten. Wenn eine Speicheradresse angegeben ist, werden die 16 Datenbyte an der Speicherstelle geladen oder gespeichert. Wenn die Register-Register-Form der Operation verwendet wird, wird der Inhalt des 128-Bit-Quellenregisters in das 128-Bit-Zielregister kopiert.
  • Die MOVSHDUP-Anweisung ist eine Übertrage gepacktes Einfach-Fließkomma high und, Dupliziere-SSE2-Anweisung, die 128 Bit lädt/überträgt und die Einträge 1 und 3 in dem resultierenden Register dupliziert. Bei dem Beispiel einer 128-Bit-Quellenregisterbreite beträgt jeder Eintrag 32 Bit. Genauer gesagt speichert, wenn es sich bei einer Quelle um Einträge 3/2/1/0 handelt (wobei 0 der niedrige Eintrag mit einfacher Präzision und 3 der hohe Eintrag mit einfacher Präzision ist), ein Ergebnisregister nach der Ausführung der MOVSHDUP-Anweisung Einträge 3 und 1 und dupliziert, um Einträge 3/3/1/1 zu ergeben. MOVSHDUP hat das folgende Format:
    MOVSHDUP Ziel, Quelle
    wobei der Quellenoperand eine Speicherstelle 54 oder ein zweites erweitertes Multimedia-(XMM-) Register 84 und der Zieloperand ein erstes erweitertes Multimedia- (XMM-) Register 84 ist. Die Quelle hat einen gepackten Einfach-Fließkommadatentyp.
  • Im Betrieb werden, wenn der Quellenoperand eine Speicheradresse ist, die Bit [31-0] des ersten erweiterten Multimedia- (XMM-) Registers mit den Bit [63-32] der Speicheradresse geladen, die Bit 63-32 des ersten erweiterten Multimedia- (XMM-) Registers werden mit den Bit [63-32] der Speicheradresse geladen, die Bit 95-64 des ersten erweiterten Multimedia-(XMM-) Registers werden mit den Bit [127-96] der Speicheradresse geladen und die Bit 127-96 des ersten erweiterten Multimedia- (XMM-) Registers werden mit den Bit [127-96] der Speicheradresse geladen.
  • Wenn der Quellenoperand ein zweites erweitertes Multimedia- (XMM-) Register ist, werden die Bit [31-0] des ersten erweiterten Multimedia- (XMM-) Registers gleich den Bit [63-32] des zweiten erweiterten Multimedia- (XMM-) Registers gesetzt, die Bit [63-32] des ersten erweiterten Multimedia- (XMM-) Registers werden gleich den Bit [83-32] des zweiten erweiterten Multimedia- (XMM-) Registers gesetzt, die Bit [95-64] des ersten erweiterten Multimedia- (XMM-) Registers werden gleich den Bit [127-96] des zweiten erweiterten Multimedia- (XMM-) Registers gesetzt und die Bit [127-96] des ersten erweiterten Multimedia-(XMM-) Registers werden gleich den Bit [127-96] des zweiten erweiterten Multimedia-(XMM-) Registers gesetzt.
  • Die lineare Adresse entspricht der Adresse des niedrigstwertigen Byte der referenzierten Speicherdaten. Wenn eine Speicheradresse angegeben ist, werden die 16 Datenbyte an der Speicherstelle geladen oder gespeichert. Wenn die Register-Register-Form der Operation verwendet wird, wird der Inhalt des 128-Bit-Quellenregisters in das 128-Bit-Zielregister kopiert.
  • Die MOVSLDUP-Anweisung ist eine Übertrage gepacktes Einfach-Fließkomma low und Dupliziere-SSE2-Anweisung, die 128 Bit lädt/überträgt und die Einträge 0 und 2 dupliziert. Genauer gesagt speichert, wenn es sich bei einer Quelle um 3/2/1/0 handelt (wobei 0 der niedrigere Eintrag mit einfacher Präzision ist), ein Ergebnisregister Einträge 2/2/0/0. Die MOVSLDUP-Anweisung hat das folgende Format:
    MOVSLDUP Ziel, Quelle
    wobei der Quellenoperand eine Speicherstelle 54 oder ein zweites erweitertes Multimedia-(XMM-) Register 84 und der Zieloperand ein erstes erweitertes Multimedia- (XMM-) Register 84 ist. Der Quellenoperand enthält einen gepackten Einfach-Fließkommadatentyp.
  • Im Betrieb werden, wenn der Quellenoperand eine Speicheradresse ist, die Bit [31-0] des ersten erweiterten Multimedia- (XMM-) Registers mit den Bit [31-0] der Speicheradresse geladen, die Bit [63-32] des ersten erweiterten Multimedia- (XMM-) Registers werden mit den Bit [31-0] der Speicheradresse geladen, die Bit [95-64] des ersten erweiterten Multimedia-(XMM-) Registers werden mit den Bit [95-64] der Speicheradresse geladen und die Bit [127-96] des ersten erweiterten Multimedia- (XMM-) Registers werden mit den Bit [95-64] der Speicheradresse geladen. Wenn der Quellenoperand ein Register ist, werden die Bit [31-0] des ersten erweiterten Multimedia- (XMM-) Registers gleich den Bit [31-0] des zweiten erweiterten Multimedia- (XMM-) Registers gesetzt, die Bit [63-32] des ersten erweiterten Multimedia- (XMM-) Registers werden gleich den Bit [31-0] des zweiten erweiterten Multimedia- (XMM-) Registers gesetzt, die Bit [95-64] des ersten erweiterten Multimedia- (XMM-) Registers werden gleich den Bit [95-64] des zweiten erweiterten Multimedia- (XMM-) Registers gesetzt und die Bit [127-96] des ersten erweiterten Multimedia- (XMM-) Registers werden gleich den Bit [95-64] des zweiten erweiterten Multimedia- (XMM-) Registers gesetzt.
  • Die lineare Adresse entspricht der Adresse des niedrigstwertigen Byte der referenzierten Speicherdaten. Wenn eine Speicheradresse angegeben ist, werden die 16 Datenbyte an der Speicherstelle geladen oder gespeichert. Wenn die Register-Register-Form der Operation verwendet wird, wird der Inhalt des 128-Bit-Quellenregisters in das 128-Bit-Zielregister kopiert.
  • Folglich liegen andere Ausführungsformen innerhalb des Schutzumfangs der folgenden Ansprüche.
  • Zusammenfassung
  • Ein Verfahren in einem Prozessor beinhaltet das Laden/Übertragen eines ersten Teils von Bits einer Quelle in einen ersten Teil eines Zielregisters und das Duplizieren dieses ersten Teils der Bits in einem nachfolgenden Teil des Zielregisters.

Claims (58)

  1. Computeranweisung, die folgendes umfaßt: eine Übertrage- und Duplizieranweisung, die bewirkt, daß ein Prozessor einen ersten Teil von Bits einer Quelle in einen ersten Teil eines Zielregisters lädt und diesen ersten Teil der Bits in einem nachfolgenden Teil des Zielregisters dupliziert.
  2. Anweisung nach Anspruch 1, bei der es sich bei dem ersten Teil der Quelle um 64 Bit handelt, die einen Doppel-Fließkommadatentyp in einer Speicherstelle repräsentieren.
  3. Anweisung nach Anspruch 1, bei der es sich bei dem ersten Teil der Quelle um 64 Bit handelt, die einen Doppel-Fließkommadatentyp in einem Quellenregister repräsentieren.
  4. Anweisung nach Anspruch 1, bei der der erste Teil des Zielregisters mit Bits [63-0] des ersten Teils der Quelle und der nachfolgende Teil des Zielregisters mit Bit [63-0] des ersten Teils der Quelle geladen wird.
  5. Verfahren mit den folgenden Schritten: – Laden eines ersten Teils von Bits einer Quelle in einen ersten Teil eines Zielregisters in einem Prozessor; und – Duplizieren des ersten Teils von Bit in einem nachfolgenden Teil des Zielregisters.
  6. Verfahren nach Anspruch 5, bei dem es sich bei dem ersten Teil der Quelle um 64 Bit handelt, die einen Doppel-Fließkommadatentyp in einer Speicherstelle repräsentieren.
  7. Verfahren nach Anspruch 5, bei dem es sich bei dem ersten Teil der Quelle um 64 Bit handelt, die einen Doppel-Fließkommadatentyp in einem Quellenregister repräsentieren.
  8. Verfahren nach Anspruch 5, bei dem der erste Teil des Zielregisters mit Bits [63-0] des ersten Teils der Quelle und der nachfolgende Teil des Zielregisters mit Bits [63-0] des ersten Teils der Quelle geladen wird.
  9. Computerprogrammprodukt auf einem computerlesbaren Medium, auf dem Anweisungen gespeichert sind, die, wenn sie durch den Prozessor ausgeführt werden, die folgenden Aktionen des Prozessors bewirken: Laden eines ersten Teils von Bits einer Quelle in einen ersten Teil eines Zielregisters; und Duplizieren des ersten Teils von Bits in einem nachfolgenden Teil des Zielregisters.
  10. Computerprogrammprodukt nach Anspruch 9, bei dem es sich bei dem ersten Teil der Quelle um 64 Bit handelt, die einen Doppel-Fließkommadatentyp in einer Speicherstelle repräsentieren.
  11. Computerprogrammprodukt nach Anspruch 9, bei dem es sich bei dem ersten Teil der Quelle um 64 Bit handelt, die einen Doppel-Fließkommadatentyp in einem Quellenregister repräsentieren.
  12. Computerprogrammprodukt nach Anspruch 9, bei dem der erste Teil des Zielregisters mit Bits [63-0] des ersten Teils der Quelle und der nachfolgende Teil des Zielregisters mit Bits [63-0] des ersten Teils der Quelle geladen wird.
  13. Computeranweisung, die folgendes umfaßt: eine Übertrage ein Doppel-Fließkomma und Dupliziere-Anweisung, die bewirkt, daß ein Prozessor 64 Bit einer Quelle lädt und die 64 Bit in einer unteren Hälfte eines Ziels und einer oberen Hälfte eines Ziels zurückgibt.
  14. Anweisung nach Anspruch 13, weiterhin umfassend: einen Quellenoperanden; und einen Zieloperanden.
  15. Anweisung nach Anspruch 13, bei der der Quellenoperand eine Speicherstelle ist.
  16. Anweisung nach Anspruch 15, bei der die Speicherstelle einen 128-Bit-Wert aufweist, der einen Doppel-Fließkommadatentyp repräsentiert.
  17. Anweisung nach Anspruch 13, bei der der Quellenoperand ein 128-Bit-Quellenregister ist.
  18. Anweisung nach Anspruch 17, bei der das Quellenregister einen 128-Bit-Wert aufweist, der einen Doppel-Fließkommadatentyp repräsentiert.
  19. In einem Prozessor ausgeführtes Verfahren mit dem folgenden Schritt: Laden einer ersten Anzahl N Bits aus einer Quelle in eine untere Hälfte eines 2N breiten Bit-Zielregisters und in eine obere Hälfte des 2N breiten Bit-Zielregisters.
  20. Verfahren nach Anspruch 19, bei dem die Quelle eine Speicherstelle ist und N 64 Bit beträgt.
  21. Verfahren nach Anspruch 20, bei dem die Speicherstelle einen Doppel-Fließkommadatentyp enthält.
  22. Verfahren nach Anspruch 19, bei dem die Quelle ein 128-Bit-Quellenregister ist und N 64 Bit beträgt.
  23. Verfahren nach Anspruch 19, bei dem das 128-Bit-Quellenregister einen Doppel-Fließkommadatentyp enthält.
  24. Computerprogrammprodukt auf einem computerlesbaren Medium, auf dem Anweisungen gespeichert sind, die, wenn sie durch den Prozessor ausgeführt werden, die folgenden Aktionen des Prozessors bewirken: Laden von 64 Bit aus einer Quelle in eine untere Hälfte eines 128-Bit-Zielregisters und in eine obere Hälfte des 128-Bit-Zielregisters.
  25. Computerprogrammprodukt nach Anspruch 24, bei dem die Quelle eine Speicherstelle ist, die einen 128-Bit-Doppel-Fließkommadatentyp enthält.
  26. Computerprogrammprodukt nach Anspruch 24, bei dem die Quelle ein 128-Quellenregister ist, das einen 128-Bit-Doppel-Fließkommadatentyp enthält.
  27. Computeranweisung, die folgendes umfaßt: eine Übertrage gepacktes Einfach-Fließkomma high und Dupliziere-Anweisung, die bewirkt, daß ein Prozessor Bits [127-0] einer Quelle lädt und Bits [63-32] der Quelle in den Bits [31-0] eines 128-Bit-Zielregisters, Bits [63-32] der Quelle in den Bits [63-32] des Zielregisters, Bits [127-96] der Quelle in den Bits [95-64] des Zielregisters und Bits [127-96] der Quelle in den Bits [127-96] des Zielregisters zurückgibt.
  28. Anweisung nach Anspruch 27, weiterhin umfassend: ein Quellenoperandenfeld; und ein Zieloperandenfeld.
  29. Anweisung nach Anspruch 27, bei der der Quellenoperand eine Speicherstelle ist.
  30. Anweisung nach Anspruch 29, bei der die Speicherstelle 128 Bit aufweist, die einen gepackten Einfach-Fließkommadatentyp repräsentieren.
  31. Anweisung nach Anspruch 27, bei der der Quellenoperand ein ein 128-Bit-Quellenregister ist.
  32. Anweisung nach Anspruch 31, bei der das Quellenregister 128 Bit aufweist, die einen gepackten Einfach-Fließkommadatentyp repräsentieren.
  33. In einem Prozessor ausgeführtes Verfahren mit den folgenden Schritten: – Zugreifen auf Bits [127-0] einer Quelle; und – Zurückgeben von Bits [63-32] der Quelle in Bits [31-0] und in Bits [63-32] des Zielregisters; und – Bits [127-96] der Quelle in Bits [95-64] und in Bits [127-96] des Zielregisters.
  34. Verfahren nach Anspruch 33, bei dem die Quelle eine Speicherstelle ist.
  35. Verfahren nach Anspruch 34, bei dem die Speicherstelle einen gepackten Einfach-Fließkommadatentyp enthält.
  36. Verfahren nach Anspruch 33, bei dem die Quelle ein 128-Bit-Quellenregister ist.
  37. Verfahren nach Anspruch 36, bei dem das 128-Bit-Quellenregister einen gepackten Einfach-Fließkommadatentyp enthält.
  38. Computerprogrammprodukt auf einem computerlesbaren Medium, auf dem Anweisungen gespeichert sind, die, wenn sie durch den Prozessor ausgeführt werden, die folgenden Aktionen des Prozessors bewirken: Laden von Bits [127-0] einer Quelle; Zurückgeben von Bits [63-32] der Quelle in Bits [31-0] eines 128-Bit-Zielregisters; Zurückgeben von Bits [63-32] der Quelle in Bits [63-32] des Zielregisters; Zurückgeben von Bits [127-96] der Quelle in Bits [95-64] des Zielregisters; und Zurückgeben von Bits [127-96] der Quelle in Bits [127-96] des Zielregisters.
  39. Computerprogrammprodukt nach Anspruch 38, bei dem die Quelle eine Speicherstelle ist.
  40. Computerprogrammprodukt nach Anspruch 39, bei dem die Speicherstelle einen gepackten Einfach-Fließkommadatentyp enthält.
  41. Computerprogrammprodukt nach Anspruch 38, bei dem ein 128-Bit-Quellenregister ist.
  42. Computerprogrammprodukt nach Anspruch 41, bei dem das 128-Bit-Quellenregister einen gepackten Einfach-Fließkommadatentyp enthält.
  43. Computeranweisung, die folgendes umfaßt: eine Übertrage gepacktes Einfach-Fließkomma low und Dupliziere-Anweisung, die bewirkt, daß ein Prozessor Bits [127-0] einer Quelle lädt und Bits [31-0] der Quelle in Bits [31-0] eines 128-Bit-Zielregisters, Bits [31-0] der Quelle in den Bits [63-32] des Zielregisters, Bits [95-64] der Quelle in Bits [95-64] des Zielregisters und Bits [95-64] der Quelle in Bits [127-96] des Zielregisters zurückgibt.
  44. Anweisung nach Anspruch 43, weiterhin umfassend: ein Quellenadressfeld; und ein Zielregister.
  45. Anweisung nach Anspruch 44, bei der die Quelle eine Speicherstelle ist.
  46. Anweisung nach Anspruch 45, bei der die Speicherstelle 128 Bit enthält, die einen gepackten Einfach-Fließkommadatentyp repräsentieren.
  47. Anweisung nach Anspruch 43, bei der die Quelle ein 128-Bit-Quellenregister ist.
  48. Anweisung nach Anspruch 47, bei der das Quellenregister 128 Bit enthält, die einen gepackten Einfach-Fließkommadatentyp repräsentieren.
  49. Verfahren mit den folgenden Schritten: – Laden von Bits [127-0] einer Quelle in einem Prozessor; – Zurückgeben von Bits [31-0] der Quelle in Bits [31-0] eines 128-Bit-Zielregisters; – Zurückgeben von Bits [31-0] der Quelle in Bits [63-32] des Zielregisters; – Zurückgeben von Bits [95-64] der Quelle in Bits [95-64] des Zielregisters; und – Zurückgeben von Bits [95-64] der Quelle in Bits [127-96] des Zielregisters.
  50. Verfahren nach Anspruch 49, bei dem die Quelle eine Speicherstelle ist.
  51. Verfahren nach Anspruch 50, bei dem die Speicherstelle einen gepackten Einfach-Fließkommadatentyp enthält.
  52. Verfahren nach Anspruch 51, bei dem die Quelle ein 128-Bit-Quellenregister ist.
  53. Verfahren nach Anspruch 52, bei dem das 128-Bit-Quellenregister einen gepackten Einfach-Fließkommadatentyp enthält.
  54. Computerprogrammprodukt auf einem computerlesbaren Medium, auf dem Anweisungen gespeichert sind, die, wenn sie durch den Prozessor ausgeführt werden, die folgenden Aktionen des Prozessors bewirken: Laden von Bits [127-0] einer Quelle; Zurückgeben von Bits [31-0] der Quelle in Bits [31-0] eines 128-Bit-Zielregisters; Zurückgeben von Bits [31-0] der Quelle in Bits [63-32] des Zielregisters; Zurückgeben von Bits [95-64] der Quelle in Bits [95-64] des Zielregisters; und Zurückgeben von Bits [95-64] der Quelle in Bits [127-96] des Zielregisters.
  55. Computerprogrammprodukt nach Anspruch 54, bei dem die Quelle eine Speicherstelle ist.
  56. Computerprogrammprodukt nach Anspruch 55, bei dem die Speicherstelle einen gepackten Einfach-Fließkommadatentyp enthält.
  57. Computerprogrammprodukt nach Anspruch 54, bei dem die Quelle ein 128-Bit-Quellenregister ist.
  58. Computerprogrammprodukt nach Anspruch 57, bei dem das 128-Bit-Quellenregister einen gepackten Einfach-Fließkommadatentyp enthält.
DE10297581T 2001-12-20 2002-12-12 Lade/Übertrage- und Duplizier-Anweisungen für einen Prozessor Ceased DE10297581T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/032,144 2001-12-20
US10/032,144 US7853778B2 (en) 2001-12-20 2001-12-20 Load/move and duplicate instructions for a processor
PCT/US2002/040166 WO2003054692A1 (en) 2001-12-20 2002-12-12 Load/move and duplicate instructions for a processor

Publications (1)

Publication Number Publication Date
DE10297581T5 true DE10297581T5 (de) 2004-11-11

Family

ID=21863332

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10297581T Ceased DE10297581T5 (de) 2001-12-20 2002-12-12 Lade/Übertrage- und Duplizier-Anweisungen für einen Prozessor

Country Status (9)

Country Link
US (6) US7853778B2 (de)
JP (3) JP2006502464A (de)
KR (1) KR100806408B1 (de)
CN (2) CN101520723B (de)
AU (1) AU2002357263A1 (de)
DE (1) DE10297581T5 (de)
RU (1) RU2292581C2 (de)
TW (1) TW594569B (de)
WO (1) WO2003054692A1 (de)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853778B2 (en) 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
WO2004015563A1 (en) * 2002-08-09 2004-02-19 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US6986023B2 (en) 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7392368B2 (en) * 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
EP1508853A1 (de) * 2003-08-19 2005-02-23 STMicroelectronics Limited Rechnersystem und Verfahren zum Laden von nicht-ausgerichteten Wörtern
WO2006018822A1 (en) * 2004-08-20 2006-02-23 Koninklijke Philips Electronics, N.V. Combined load and computation execution unit
US8996152B2 (en) * 2006-06-28 2015-03-31 Nvidia Corporation Operating system aware hardware mutex
US8321872B2 (en) * 2006-06-28 2012-11-27 Nvidia Corporation Reusable, operating system aware hardware mutex
US20080077772A1 (en) * 2006-09-22 2008-03-27 Ronen Zohar Method and apparatus for performing select operations
US8112675B2 (en) * 2006-09-28 2012-02-07 Nvidia Corporation Filesystem directory debug log
US8538015B2 (en) * 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor
US9967092B2 (en) 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US9911008B2 (en) 2010-05-25 2018-03-06 Via Technologies, Inc. Microprocessor with on-the-fly switching of decryption keys
US9798898B2 (en) 2010-05-25 2017-10-24 Via Technologies, Inc. Microprocessor with secure execution mode and store key instructions
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US8639945B2 (en) * 2010-05-25 2014-01-28 Via Technologies, Inc. Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
US9552206B2 (en) * 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US8656139B2 (en) * 2011-03-11 2014-02-18 Telefonaktiebolaget L M Ericsson (Publ) Digital processor for processing long and short pointers and converting each between a common format
WO2013095555A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Packed data rearrangement control indexes generation processors, methods, systems, and instructions
CN104126168B (zh) * 2011-12-22 2019-01-08 英特尔公司 打包数据重新安排控制索引前体生成处理器、方法、系统及指令
CN104011646B (zh) 2011-12-22 2018-03-27 英特尔公司 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
US10866807B2 (en) 2011-12-22 2020-12-15 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride
US10223112B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
CN104246745B (zh) * 2011-12-29 2017-05-24 英特尔公司 用于控制mxcsr的方法及装置
US9459867B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US20140095847A1 (en) * 2012-09-28 2014-04-03 Doron Orenstein Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
US10540179B2 (en) 2013-03-07 2020-01-21 MIPS Tech, LLC Apparatus and method for bonding branch instruction with architectural delay slot
US20140258667A1 (en) * 2013-03-07 2014-09-11 Mips Technologies, Inc. Apparatus and Method for Memory Operation Bonding
CN103186363B (zh) * 2013-03-26 2015-09-30 北京经纬恒润科技有限公司 一种数值编辑方法及系统
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
US10423413B2 (en) * 2013-07-09 2019-09-24 Texas Instruments Incorporated Vector load and duplicate operations
US9448939B2 (en) 2014-06-30 2016-09-20 International Business Machines Corporation Collecting memory operand access characteristics during transactional execution
US9336047B2 (en) 2014-06-30 2016-05-10 International Business Machines Corporation Prefetching of discontiguous storage locations in anticipation of transactional execution
US9348643B2 (en) 2014-06-30 2016-05-24 International Business Machines Corporation Prefetching of discontiguous storage locations as part of transactional execution
US9710271B2 (en) 2014-06-30 2017-07-18 International Business Machines Corporation Collecting transactional execution characteristics during transactional execution
US9600286B2 (en) 2014-06-30 2017-03-21 International Business Machines Corporation Latent modification instruction for transactional execution
US9529653B2 (en) * 2014-10-09 2016-12-27 International Business Machines Corporation Processor register error correction management
US20160179521A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Method and apparatus for expanding a mask to a vector of mask values
US20160224252A1 (en) * 2015-01-30 2016-08-04 Intel Corporation Hybrid memory architecture
EP3336691B1 (de) 2016-12-13 2022-04-06 ARM Limited Replikatelementanweisung
EP3336692B1 (de) * 2016-12-13 2020-04-29 Arm Ltd Replikatpartitionsanweisung
WO2018168637A1 (ja) 2017-03-14 2018-09-20 株式会社トクヤマ フライアッシュの使用方法
US10409614B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
RU2713709C1 (ru) * 2019-06-20 2020-02-06 Федеральное государственное унитарное предприятие "Научно-производственный центр автоматики и приборостроения имени академика Н.А. Пилюгина" (ФГУП "НПЦАП") Устройство преобразования информации
KR102307691B1 (ko) 2020-11-19 2021-10-05 주식회사 우드메탈 원적외선 및 음이온 방출 기능을 갖는 가구용 엣지마감재

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4141005A (en) * 1976-11-11 1979-02-20 International Business Machines Corporation Data format converting apparatus for use in a digital data processor
JPS61294550A (ja) 1985-06-21 1986-12-25 Nec Corp 電子計算機におけるデ−タ読取書込制御方式
US5522082A (en) 1986-01-23 1996-05-28 Texas Instruments Incorporated Graphics display processor, a graphics display system and a method of processing graphics data with control signals connected to a central processing unit and graphics circuits
US5268995A (en) * 1990-11-21 1993-12-07 Motorola, Inc. Method for executing graphics Z-compare and pixel merge instructions in a data processor
US6116768A (en) 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
US5613121A (en) 1994-10-19 1997-03-18 International Business Machines Corporation Method and system of generating combined storage references
GB9509988D0 (en) 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Matrix transposition
US5673321A (en) 1995-06-29 1997-09-30 Hewlett-Packard Company Efficient selection and mixing of multiple sub-word items packed into two or more computer words
US7085795B2 (en) 2001-10-29 2006-08-01 Intel Corporation Apparatus and method for efficient filtering and convolution of content data
US5936872A (en) 1995-09-05 1999-08-10 Intel Corporation Method and apparatus for storing complex numbers to allow for efficient complex multiplication operations and performing such complex multiplication operations
US5983253A (en) 1995-09-05 1999-11-09 Intel Corporation Computer system for performing complex digital filters
JP3735438B2 (ja) * 1997-02-21 2006-01-18 株式会社東芝 Risc計算機
US6041404A (en) 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6115812A (en) * 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
US6560667B1 (en) * 1999-12-28 2003-05-06 Intel Corporation Handling contiguous memory references in a multi-queue system
US6820190B1 (en) 2000-02-02 2004-11-16 Hewlett-Packard Development Company, L.P. Method and computer system for decomposing macroinstructions into microinstructions and forcing the parallel issue of at least two microinstructions
US7155601B2 (en) 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
US7631025B2 (en) 2001-10-29 2009-12-08 Intel Corporation Method and apparatus for rearranging data between multiple registers
US7853778B2 (en) 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
JP4112946B2 (ja) * 2002-10-31 2008-07-02 株式会社東芝 非鉛系接合材、ソルダーペースト及び接合方法
JP2009016397A (ja) 2007-06-29 2009-01-22 Toshiba Corp プリント配線板
JP5229819B2 (ja) 2009-04-01 2013-07-03 株式会社レヨーン工業 除塵装置

Also Published As

Publication number Publication date
US8539202B2 (en) 2013-09-17
KR100806408B1 (ko) 2008-02-21
US8200941B2 (en) 2012-06-12
US20130013896A1 (en) 2013-01-10
RU2004122101A (ru) 2005-03-27
CN101520723B (zh) 2011-01-12
US20110258418A1 (en) 2011-10-20
JP2006502464A (ja) 2006-01-19
KR20040068333A (ko) 2004-07-30
JP5960115B2 (ja) 2016-08-02
US9043583B2 (en) 2015-05-26
JP2010152919A (ja) 2010-07-08
AU2002357263A1 (en) 2003-07-09
JP2014089730A (ja) 2014-05-15
US20120317401A1 (en) 2012-12-13
US20110047361A1 (en) 2011-02-24
US8650382B2 (en) 2014-02-11
CN100492281C (zh) 2009-05-27
RU2292581C2 (ru) 2007-01-27
CN1605062A (zh) 2005-04-06
WO2003054692A1 (en) 2003-07-03
US20130219153A1 (en) 2013-08-22
US8032735B2 (en) 2011-10-04
TW200304091A (en) 2003-09-16
CN101520723A (zh) 2009-09-02
US7853778B2 (en) 2010-12-14
US20030120903A1 (en) 2003-06-26
TW594569B (en) 2004-06-21

Similar Documents

Publication Publication Date Title
DE10297581T5 (de) Lade/Übertrage- und Duplizier-Anweisungen für einen Prozessor
DE19735350B4 (de) Vektorprozessor zum Ausführen paralleler Operationen und Verfahren hierfür
DE112013005188B4 (de) Prozessor und vefrahren zur vektorisierung von zusammengeführten, mehrfach geschachtelten schleifen
DE102016006400A1 (de) Hardware-prozessoren und verfahren für eng-gekoppelte heterogene datenverarbeitung
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE102008061062A1 (de) Befehle und Logik zum Durchführen von Maskenlade- und -speicheroperationen
DE102020126212A1 (de) Vorrichtungen, Verfahren und Systeme für Anweisungen eines Matrixoperationsbeschleunigers
DE19735348A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern
DE112013005343T5 (de) Befehle für Codierungsalgorithemen mit gleitendem Fenster
DE102018124945A1 (de) Einrichtung und verfahren für komplexe multiplikation
DE112011105121T5 (de) Systeme, Vorrichtungen und Verfahren zum Schrittmustersammeln von Datenelementen und Schrittmusterstreuen von Datenelementen
DE112012001542T5 (de) System, Vorrichtung und Verfahren zum Ausrichten von Registern
DE112013005236T5 (de) Verfahren und Vorrichtung für Integralbild-Berechnungsbefehle
DE112012007063T5 (de) Zusammenfügen von benachbarten Sammel-/Streuoperationen
DE102018006008A1 (de) Vorrichtung und Verfahren zur Multiplikation einer komplexen Zahl mit der konjugierten
DE2835095A1 (de) Gekoppeltes, mikroprogrammiertes prozessorsystem
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE112014000252T5 (de) Anweisung "Vector floating point test data class immediate"
DE112013005466T5 (de) Anweisung "Vector generate mask"
DE112013005500T5 (de) Anweisung zum Drehen und Einfügen eines Vektorelements unter einer Maske
DE112016004348T5 (de) Streuen-durch-indizes-zu-register- und datenelementumordnungsprozessoren, -verfahren, -systeme und -befehle
DE112017003347T5 (de) Systeme, Vorrichtungen und Verfahren für Strided-Ladevorgänge
DE112017000983T5 (de) System und Verfahren zum Ausführen eines Befehls zum Permutieren einer Maske
DE102014003659A1 (de) Systeme, vorrichtungen und verfahren zum bestimmen eines folgenden niedrigstwertigen maskierungsbits eines schreibmaskenregisters
DE102018124944A1 (de) Vorrichtung und Verfahren zum Umsetzen eines Gleitkommawertes von halber Genauigkeit in einfache Genauigkeit

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 10297581

Country of ref document: DE

Date of ref document: 20041111

Kind code of ref document: P

8131 Rejection