DE10297581T5 - Lade/Übertrage- und Duplizier-Anweisungen für einen Prozessor - Google Patents
Lade/Übertrage- und Duplizier-Anweisungen für einen Prozessor Download PDFInfo
- 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
Links
- 238000012546 transfer Methods 0.000 title claims description 11
- 230000015654 memory Effects 0.000 claims description 53
- 238000000034 method Methods 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims 17
- 230000005540 biological transmission Effects 0.000 abstract 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 7
- 239000000872 buffer Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000029142 excretion Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000001356 surgical procedure Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD 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 Prozessor10 gezeigt. Der Prozessor10 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 Prozessor10 eine entkoppelte, zwölfstufige Pipeline, die Out-of-order-Anweisungsausfihrung unterstützt. Die Mikroarchitektur-Pipeline des Prozessors10 ist in vier Abschnitte unterteilt, nämlich einen Cache12 der ersten Ebene und einen Cache14 der zweiten Ebene, ein Frontend16 , einen Out-of-order-Ausführungskern18 und einen Retire-Abschnitt20 . Anweisungen und Daten werden diesen Einheiten durch eine Busschnittstelle22 zugeführt, die an einen Systembus24 angeschaltet ist. Das Frontend16 führt dem Out-of-order-Kern18 , 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 Frontend16 holt Anweisungen und decodiert diese zu einfachen, als Mikroops (μ-ops) bezeichneten Operationen. Dann kann das Frontend16 in der ursprünglichen Programmreihenfolge mehrfache μ-ops pro Zyklus an den Out-of-order-Kern18 ausgeben. Das Frontend16 führt mehrere grundlegende Funktionen durch. Zum Beispiel führt das Frontend16 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-Cache26 ab und sagt unter Verwendung erweiterter Algorithmen in einer Zweigvorhersageeinheit28 Verzweigungen voraus. - Das Frontend
16 des Prozessors10 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-Cache26 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-Cache26 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 Anweisungen30 aus der Speicherhierarchie auf und der Trace-Cache26 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-Cache26 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 Prozessor10 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 Prozessor10 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 Kern18 kann bis zu sechs μ-ops pro Zyklus abfertigen. Man beachte, daß dies die μ-op-Bandbreite des Trace-Cache und des Retirement20 ü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ührungskern18 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 Prozessor10 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 Prozessor10 , 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 BTB28 , 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ührungsumgebung50 gezeigt. Jedem Programm oder jeder Task, das bzw. die auf dem Prozessor10 (von1 ) 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ührungsumgebung50 des Prozessors10 . Auf dem Prozessor10 ablaufende Anwendungsprogramme und das Betriebssystem bzw. die Betriebsexekutive verwenden gemeinsam die Ausführungsumgebung50 . Die Ausführungsumgebung50 enthält grundlegende Programmausführungsregister52 , einen Adressenraum54 , Register56 der Fließkommaeinheit (FPU), Multimedia-Erweiterungsregister (MMX)58 und Register60 der SIMD-Erweiterung (SSE und SSE2). - Jede auf dem Prozessor
10 ablaufende Task oder jedes auf dem Prozessor10 ablaufende Programm kann eine lineare Adressenbasis54 von bis zu vier Gigabyte (232 Byte) und einen physikalischen Adressenraum von bis zu 64 Gigabyte (236 Byte) adressieren. Der Adressenraum54 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 Vielzweckregister62 , sechs Segmentregister64 , ein EFLAGS-Register66 und ein Register68 für den Anweisungszeiger (EIP). Die grundlegenden Programmausführungsregister52 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-Datenregister70 , ein FPU-Steuerregister72 , ein Statusregister74 , ein FPU-Anweisungszeigerregister76 , ein Zeigerregister78 für FPU-Operanden (Daten), ein FPU-Tag-Register80 und ein FPU-op-Code-Register82 . Die FPU-Register56 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-) Datenregister84 und ein MXCSR-Register86 . Die Register60 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 Segmentregister64 halten bis zu sechs Segmentselektoren. Die EFLAGS-Register66 (Programmstatus und Steuerung) melden den Status eines Programms, das ausgeführt wird, und ermöglicht eine begrenzte Steuerung (auf Anwendungsprogrammebene) des Prozessors. Das Register68 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 Segmentregister64 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 Segmentregister64 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 Segmentregister64 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 Segmentregister64 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 Segmentregister64 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 Segmentregister64 zeigt, lädt ein Programm zuerst den Segmentselektor, auf den zugegriffen werden soll, in ein Segmentregister64 . - 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-Registern66 können unter Verwendung besonderer Anweisungen direkt modifiziert werden. Es gibt keine Anweisungen, mit denen das ganze Register66 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-Registers66 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-Registers66 in dem (nicht gezeigten) Task-Zustandssegement (TSS) für die Task, die suspendiert wird. Wenn sich der Prozessor10 an eine neue Task bindet, lädt er das EFLAGS-Register66 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-Registers66 auf dem Prozedurstapel. Wenn ein Interrupt oder eine Programmausnahme mit einem Task-Wechsel abgewickelt wird, wird der Zustand des EFLAGS-Registers66 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 Prozessor10 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-Standard754 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 Vielzweckregistern62 oder in einem oder mehreren FPU-Registern56 befinden. - Mit Bezug auf
4 werden reelle Zahlen in einem Fließkommaformat100 in den FPU-56-Fließkommaregistern70 repräsentiert. Das Fließkommaformat enthält drei Teile, nämlich ein Vorzeichen102 , einen Signifikanden104 und einen Exponenten106 . Das Vorzeichen102 ist ein binärer Wert, der angibt, ob die Zahl positiv (0) oder negativ (1) ist. Der Signifikand104 enthält zwei Teile: einen 1-Bit-Binär-Integer (der auch als ein J-Bit bezeichnet wird)108 und einen Binär-Bruchteil110 . Das Integer-Bit108 wird häufig nicht repräsentiert, sondern ist stattdessen ein impliziter Wert. Der Exponent106 ist ein Binär-Integer, der eine Potenz zur Basis2 repräsentiert, mit der der Signifikand104 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-Erweiterungsregistern58 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 Speicher54 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-) Registern84 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 Tabelle120 , die verschiedenen SIMD-Erweiterungen, die Datentypen, an denen operiert wird, und wie die Datentypen in die Multimedia-Erweiterungsregister58 und in die erweiterten Multimedia- (XMM-) Register84 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-Erweiterungsregistern58 und/oder in den Vielzweckregistern62 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-Register86 operieren, 64-Bit-SIMD-Integer-Anweisungen, die an den MMX-Registern58 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 Speicherstelle54 oder ein zweites erweitertes Multimedia-(XMM-) Register84 und der Zieloperand ein erstes erweitertes Multimedia- (XMM-) Register84 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 Speicherstelle54 oder ein zweites erweitertes Multimedia-(XMM-) Register84 und der Zieloperand ein erstes erweitertes Multimedia- (XMM-) Register84 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 Speicherstelle54 oder ein zweites erweitertes Multimedia-(XMM-) Register84 und der Zieloperand ein erstes erweitertes Multimedia- (XMM-) Register84 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)
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Anweisung nach Anspruch 13, weiterhin umfassend: einen Quellenoperanden; und einen Zieloperanden.
- Anweisung nach Anspruch 13, bei der der Quellenoperand eine Speicherstelle ist.
- Anweisung nach Anspruch 15, bei der die Speicherstelle einen 128-Bit-Wert aufweist, der einen Doppel-Fließkommadatentyp repräsentiert.
- Anweisung nach Anspruch 13, bei der der Quellenoperand ein 128-Bit-Quellenregister ist.
- Anweisung nach Anspruch 17, bei der das Quellenregister einen 128-Bit-Wert aufweist, der einen Doppel-Fließkommadatentyp repräsentiert.
- 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.
- Verfahren nach Anspruch 19, bei dem die Quelle eine Speicherstelle ist und N 64 Bit beträgt.
- Verfahren nach Anspruch 20, bei dem die Speicherstelle einen Doppel-Fließkommadatentyp enthält.
- Verfahren nach Anspruch 19, bei dem die Quelle ein 128-Bit-Quellenregister ist und N 64 Bit beträgt.
- Verfahren nach Anspruch 19, bei dem das 128-Bit-Quellenregister einen Doppel-Fließkommadatentyp enthält.
- 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.
- Computerprogrammprodukt nach Anspruch 24, bei dem die Quelle eine Speicherstelle ist, die einen 128-Bit-Doppel-Fließkommadatentyp enthält.
- Computerprogrammprodukt nach Anspruch 24, bei dem die Quelle ein 128-Quellenregister ist, das einen 128-Bit-Doppel-Fließkommadatentyp enthält.
- 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.
- Anweisung nach Anspruch 27, weiterhin umfassend: ein Quellenoperandenfeld; und ein Zieloperandenfeld.
- Anweisung nach Anspruch 27, bei der der Quellenoperand eine Speicherstelle ist.
- Anweisung nach Anspruch 29, bei der die Speicherstelle 128 Bit aufweist, die einen gepackten Einfach-Fließkommadatentyp repräsentieren.
- Anweisung nach Anspruch 27, bei der der Quellenoperand ein ein 128-Bit-Quellenregister ist.
- Anweisung nach Anspruch 31, bei der das Quellenregister 128 Bit aufweist, die einen gepackten Einfach-Fließkommadatentyp repräsentieren.
- 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.
- Verfahren nach Anspruch 33, bei dem die Quelle eine Speicherstelle ist.
- Verfahren nach Anspruch 34, bei dem die Speicherstelle einen gepackten Einfach-Fließkommadatentyp enthält.
- Verfahren nach Anspruch 33, bei dem die Quelle ein 128-Bit-Quellenregister ist.
- Verfahren nach Anspruch 36, bei dem das 128-Bit-Quellenregister einen gepackten Einfach-Fließkommadatentyp enthält.
- 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.
- Computerprogrammprodukt nach Anspruch 38, bei dem die Quelle eine Speicherstelle ist.
- Computerprogrammprodukt nach Anspruch 39, bei dem die Speicherstelle einen gepackten Einfach-Fließkommadatentyp enthält.
- Computerprogrammprodukt nach Anspruch 38, bei dem ein 128-Bit-Quellenregister ist.
- Computerprogrammprodukt nach Anspruch 41, bei dem das 128-Bit-Quellenregister einen gepackten Einfach-Fließkommadatentyp enthält.
- 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.
- Anweisung nach Anspruch 43, weiterhin umfassend: ein Quellenadressfeld; und ein Zielregister.
- Anweisung nach Anspruch 44, bei der die Quelle eine Speicherstelle ist.
- Anweisung nach Anspruch 45, bei der die Speicherstelle 128 Bit enthält, die einen gepackten Einfach-Fließkommadatentyp repräsentieren.
- Anweisung nach Anspruch 43, bei der die Quelle ein 128-Bit-Quellenregister ist.
- Anweisung nach Anspruch 47, bei der das Quellenregister 128 Bit enthält, die einen gepackten Einfach-Fließkommadatentyp repräsentieren.
- 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.
- Verfahren nach Anspruch 49, bei dem die Quelle eine Speicherstelle ist.
- Verfahren nach Anspruch 50, bei dem die Speicherstelle einen gepackten Einfach-Fließkommadatentyp enthält.
- Verfahren nach Anspruch 51, bei dem die Quelle ein 128-Bit-Quellenregister ist.
- Verfahren nach Anspruch 52, bei dem das 128-Bit-Quellenregister einen gepackten Einfach-Fließkommadatentyp enthält.
- 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.
- Computerprogrammprodukt nach Anspruch 54, bei dem die Quelle eine Speicherstelle ist.
- Computerprogrammprodukt nach Anspruch 55, bei dem die Speicherstelle einen gepackten Einfach-Fließkommadatentyp enthält.
- Computerprogrammprodukt nach Anspruch 54, bei dem die Quelle ein 128-Bit-Quellenregister ist.
- Computerprogrammprodukt nach Anspruch 57, bei dem das 128-Bit-Quellenregister einen gepackten Einfach-Fließkommadatentyp enthält.
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)
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)
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 | 株式会社レヨーン工業 | 除塵装置 |
-
2001
- 2001-12-20 US US10/032,144 patent/US7853778B2/en not_active Expired - Lifetime
-
2002
- 2002-12-12 AU AU2002357263A patent/AU2002357263A1/en not_active Abandoned
- 2002-12-12 WO PCT/US2002/040166 patent/WO2003054692A1/en active Application Filing
- 2002-12-12 CN CN2009101331655A patent/CN101520723B/zh not_active Expired - Fee Related
- 2002-12-12 DE DE10297581T patent/DE10297581T5/de not_active Ceased
- 2002-12-12 RU RU2004122101/09A patent/RU2292581C2/ru not_active IP Right Cessation
- 2002-12-12 CN CNB028253272A patent/CN100492281C/zh not_active Expired - Fee Related
- 2002-12-12 JP JP2003555340A patent/JP2006502464A/ja active Pending
- 2002-12-12 KR KR1020047009869A patent/KR100806408B1/ko active IP Right Grant
- 2002-12-19 TW TW091136652A patent/TW594569B/zh not_active IP Right Cessation
-
2010
- 2010-02-25 JP JP2010039897A patent/JP2010152919A/ja active Pending
- 2010-11-05 US US12/940,782 patent/US8032735B2/en not_active Expired - Fee Related
-
2011
- 2011-04-15 US US13/088,198 patent/US8200941B2/en not_active Expired - Lifetime
-
2012
- 2012-06-12 US US13/494,764 patent/US8539202B2/en not_active Expired - Lifetime
- 2012-09-14 US US13/620,194 patent/US8650382B2/en not_active Expired - Fee Related
-
2013
- 2013-03-15 US US13/843,815 patent/US9043583B2/en not_active Expired - Fee Related
- 2013-12-13 JP JP2013257903A patent/JP5960115B2/ja not_active Expired - Fee Related
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 |