DE112014000252T5 - Anweisung "Vector floating point test data class immediate" - Google Patents

Anweisung "Vector floating point test data class immediate" Download PDF

Info

Publication number
DE112014000252T5
DE112014000252T5 DE112014000252.6T DE112014000252T DE112014000252T5 DE 112014000252 T5 DE112014000252 T5 DE 112014000252T5 DE 112014000252 T DE112014000252 T DE 112014000252T DE 112014000252 T5 DE112014000252 T5 DE 112014000252T5
Authority
DE
Germany
Prior art keywords
operand
register
field
vector
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112014000252.6T
Other languages
English (en)
Inventor
Jonathan David Bradbury
Eric Mark Schwarz
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112014000252T5 publication Critical patent/DE112014000252T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/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
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string 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
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode

Landscapes

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

Abstract

Eine Anweisung „Vector Floating Point Test Data Class Immediate” wird bereitgestellt, die bestimmt, ob ein oder mehrere Elemente eines in der Anweisung angegebenen Vektors einer oder mehreren ausgewählten Klassen und Vorzeichen zugehörig sind. Wenn ein Vektorelement eine ausgewählte Klasse und ein ausgewähltes Vorzeichen hat, wird ein Element in einem Operanden der Anweisung, das dem Vektorelement entspricht, auf einen ersten definierten Wert gesetzt, und wenn das Vektorelement nicht die ausgewählte Klasse und das ausgewählte Vorzeichen hat, wird das Operandenelement, das dem Vektorelement entspricht, auf einen zweiten definierten Wert gesetzt.

Description

  • GEBIET DER ERFINDUNG
  • Ein oder mehrere Aspekte betreffen allgemein eine Verarbeitung innerhalb einer Datenverarbeitungsumgebung und insbesondere eine Vektorverarbeitung innerhalb einer derartigen Umgebung.
  • HINTERGRUND DER ERFINDUNG
  • Die Verarbeitung innerhalb einer Datenverarbeitungsumgebung umfasst eine Steuerungsoperation für eine oder mehrere Zentraleinheiten (CPUs). Normalerweise wird eine Operation einer Zentraleinheit durch Anweisungen in einem Speicher gesteuert. Anweisungen können verschiedene Formate haben und geben oft Register an, die beim Ausführen von verschiedener Operationen zu verwenden sind.
  • Abhängig von der Architektur der Zentraleinheit können verschiedene Typen von Registern verwendet werden, darunter zum Beispiel Mehrzweckregister, Sonderzweckregister, Gleitkommaregister und/oder Vektorregister. Verschiedene Typen von Registern können mit verschiedenen Typen von Anweisungen verwendet werden. Zum Beispiel speichern Gleitkommaregister Gleitkommazahlen, die von Gleitkommaanweisungen verwendet werden sollen; und Vektorregister enthalten Daten für eine Vektorverarbeitung, die durch „Single Instruction, Multiple Data”-(SIMD) Anweisungen (Einzelanweisung-Mehrdaten-Anweisungen) ausgeführt werden, einschließlich Vektoranweisungen.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Unzulänglichkeiten nach dem Stand der Technik werden beseitigt und Vorteile werden durch die Bereitstellung eines Computerprogrammprodukts zum Ausführen einer Maschinenanweisung bereitgestellt. Das Computerprogrammprodukt enthält ein computerlesbares Speichermedium, das durch eine Verarbeitungsschaltung gelesen werden kann, und Speicheranweisungen für eine Ausführung durch die Verarbeitungsschaltung zum Ausführen eines Verfahrens. Das Verfahren enthält zum Beispiel ein Erlangen einer Maschinenanweisung zur Ausführung durch einen Prozessor, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert wird, wobei die Maschinenanweisung enthält: mindestens ein Operationscode-Feld zum Bereitstellen eines Operationscodes, wobei der Operationscode eine Operation „Vector Floating Point Test Data Class Immediate” definiert; ein erstes Registerfeld, das zum Bezeichnen eines ersten Registers zu verwenden ist, wobei das erste Register einen ersten Operanden enthält; und ein zweites Registerfeld, das einen zweiten Operanden enthält; und Ausführen der Maschinenanweisung, wobei das Ausführen enthält: Bestimmen von Eigenschaften eines ausgewählten Elements des zweiten Operanden; Auswählen einer ausgewählten Dateneinheit, die die Eigenschaften des ausgewählten Elements darstellt, aus einer Eingabe in die Maschinenanweisung, wobei die Eingabe eine oder mehrere Dateneinheiten zum Darstellen von einer oder mehreren Eigenschaften enthält; Prüfen, ob die ausgewählte Dateneinheit auf einen bestimmten Wert gesetzt ist; und auf der Grundlage des Prüfens, Setzen eines Elements in dem ersten Operanden, das dem ausgewählten Element des zweiten Operanden entspricht, wobei das Setzen darauf beruht, ob die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist.
  • Von einem ersten Aspekt aus betrachtet stellt die vorliegende Erfindung ein Computersystem für ein Ausführen einer Maschinenanweisung in einer Zentraleinheit bereit, wobei das Computersystem aufweist: einen Arbeitsspeicher; und einen mit dem Arbeitsspeicher in Datenübertragung stehenden Prozessor, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren ausführt, wobei das Verfahren aufweist:
    ein Erlangen einer Maschinenanweisung zur Ausführung durch einen Prozessor, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert wird, wobei die Maschinenanweisung aufweist: mindestens ein Operationscode-Feld zum Bereitstellen eines Operationscodes, wobei der Operationscode eine Operation „Vector Floating Point Test Data Class Immediate” identifiziert;
    ein erstes Registerfeld, das zum Angeben eines ersten Registers zu verwenden ist, wobei das erste Register einen ersten Operanden aufweist; und
    ein zweites Registerfeld, das zum Angeben eines zweiten Registers zu verwenden ist, wobei das zweite Register einen zweiten Operanden aufweist; und Ausführen der Maschinenanweisung, wobei das Ausführen aufweist: Bestimmen von Eigenschaften eines ausgewählten Elements des zweiten Operanden;
    Auswählen einer ausgewählten Dateneinheit, die die Eigenschaften des ausgewählten Elements darstellt, aus einer Eingabe in die Maschinenanweisung, wobei die Eingabe eine oder mehrere Dateneinheiten zum Darstellen von einer oder mehreren Eigenschaften enthält;
    Prüfen, ob die ausgewählte Dateneinheit auf einen bestimmten Wert gesetzt ist; und auf der Grundlage des Prüfens, Setzen eines Elements in dem ersten Operanden, das dem ausgewählten Element des zweiten Operanden entspricht, wobei das Setzen darauf beruht, ob die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computersystem bereit, wobei der zweite Operand eine Vielzahl von Elementen aufweist, wobei das Bestimmen ein Bestimmen von Eigenschaften für jedes Element der Vielzahl von Elementen aufweist, und wobei das Setzen ein Setzen jedes Elements in dem ersten Operanden entsprechend jedem Element in dem zweiten Operanden aufweist auf der Grundlage, ob die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computersystem bereit, wobei das Setzen ein Setzen des Elements in dem ersten Operanden auf Einsen aufweist auf der Grundlage des Prüfens, die angibt, dass die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist, und ein Setzen des Elements in dem ersten Operanden auf Null auf der Grundlage des Prüfens, die angibt, dass die ausgewählte Dateneinheit nicht auf den bestimmten Wert gesetzt ist.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computersystem bereit, wobei die Eingabe eine Vielzahl von Dateneinheiten aufweist, wobei jede Dateneinheit aus der Vielzahl von Dateneinheiten eine Klasse und ein Vorzeichen darstellt.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computersystem bereit, wobei die Maschinenanweisung ferner ein Feld aufweist, das die Eingabe enthält.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computersystem bereit, wobei die Maschinenanweisung ferner ein Erweiterungsfeld aufweist, das zum Angeben von einem oder mehreren Registern zu verwenden ist, und wobei das erste Registerfeld mit einem ersten Abschnitt des Erweiterungsfelds kombiniert wird, um das erste Register anzugeben, und das zweite Registerfeld mit einem zweiten Abschnitt des Erweiterungsfelds kombiniert wird, um das zweite Register anzugeben, und wobei die Maschinenanweisung ferner ein Maskenfeld aufweist, wobei das Maskenfeld angibt, ob ein oder mehrere Elemente des zweiten Operanden in die Bestimmung einzubeziehen sind, und wobei die Maschinenanweisung ferner ein weiteres Maskenfeld aufweist, wobei das weitere Maskenfeld eine Größe einer Gleitkommazahl in einem Element des zweiten Operanden angeben soll.
  • Von einem weiteren Aspekt aus betrachtet stellt die vorliegende Erfindung ein Verfahren für ein Ausführen einer Maschinenanweisung in einer Zentraleinheit bereit, wobei das Verfahren aufweist: ein Erlangen einer Maschinenanweisung zur Ausführung durch einen Prozessor, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert wird, wobei die Maschinenanweisung aufweist: mindestens ein Operationscode-Feld zum Bereitstellen eines Operationscodes, wobei der Operationscode eine Operation „Vector Floating Point Test Data Class Immediate” definiert; ein erstes Registerfeld, das zum Bezeichnen eines ersten Registers zu verwenden ist, wobei das erste Register einen ersten Operanden aufweist; und ein zweites Registerfeld, das einen zweiten Operanden aufweist; und Ausführen der Maschinenanweisung, wobei das Ausführen aufweist: Bestimmen von Eigenschaften eines ausgewählten Elements des zweiten Operanden; Auswählen einer ausgewählten Dateneinheit, die die Eigenschaften des ausgewählten Elements darstellt, aus einer Eingabe in die Maschinenanweisung, wobei die Eingabe eine oder mehrere Dateneinheiten zum Darstellen von einer oder mehreren Eigenschaften enthält; Prüfen, ob die ausgewählte Dateneinheit auf einen bestimmten Wert gesetzt ist; und auf der Grundlage des Prüfens, Setzen eines Elements in dem ersten Operanden, das dem ausgewählten Element des zweiten Operanden entspricht, wobei das Setzen darauf beruht, ob die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, wobei das Setzen ein Setzen des Elements in dem ersten Operanden auf Einsen auf der Grundlage des Prüfens aufweist, die angibt, dass die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist, und ein Setzen des Elements in dem ersten Operanden auf Null auf der Grundlage des Prüfens, die angibt, dass die ausgewählte Dateneinheit nicht auf den bestimmten Wert gesetzt ist.
  • Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, wobei die Maschinenanweisung ferner ein Erweiterungsfeld aufweist, das zum Angeben von einem oder mehreren Registern zu verwenden ist, und wobei das erste Registerfeld mit einem ersten Abschnitt des Erweiterungsfelds kombiniert wird, um das erste Register anzugeben, und das zweite Registerfeld mit einem zweiten Abschnitt des Erweiterungsfelds kombiniert wird, um das zweite Register anzugeben, und wobei die Maschinenanweisung ferner ein Maskenfeld aufweist, wobei das Maskenfeld angibt, ob ein oder mehrere Elemente des zweiten Operanden in die Bestimmung einzubeziehen sind, und wobei die Maschinenanweisung ferner ein weiteres Maskenfeld aufweist, wobei das weitere Maskenfeld eine Größe einer Gleitkommazahl in einem Element des zweiten Operanden angeben soll.
  • Von einem weiteren Aspekt aus betrachtet stellt die vorliegende Erfindung ein Computerprogrammprodukt für ein Ausführen einer Maschinenanweisung in einer Zentraleinheit bereit, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Anweisungen zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren auszuführen, das aufweist: ein Erlangen einer Maschinenanweisung zur Ausführung durch einen Prozessor, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert wird, wobei die Maschinenanweisung aufweist: mindestens ein Operationscode-Feld zum Bereitstellen eines Operationscodes, wobei der Operationscode eine Operation „Vector Floating Point Test Data Class Immediate” definiert; ein erstes Registerfeld, das zum Bezeichnen eines ersten Registers zu verwenden ist, wobei das erste Register einen ersten Operanden aufweist; und ein zweites Registerfeld, das zum Bezeichnen eines zweiten Registers zu verwenden ist, wobei das zweite Register einen zweiten Operanden aufweist; und Ausführen der Maschinenanweisung, wobei das Ausführen aufweist: Bestimmen von Eigenschaften eines ausgewählten Elements des zweiten Operanden; Auswählen einer ausgewählten Dateneinheit, die die Eigenschaften des ausgewählten Elements darstellt, aus einer Eingabe in die Maschinenanweisung, wobei die Eingabe eine oder mehrere Dateneinheiten zum Darstellen von einer oder mehreren Eigenschaften enthält; Prüfen, ob die ausgewählte Dateneinheit auf einen bestimmten Wert gesetzt ist; und auf der Grundlage des Prüfens, Setzen eines Elements in dem ersten Operanden, das dem ausgewählten Element des zweiten Operanden entspricht, wobei das Setzen darauf beruht, ob die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei der zweite Operand eine Vielzahl von Elementen aufweist, wobei das Bestimmen ein Bestimmen von Eigenschaften für jedes Element der Vielzahl von Elementen aufweist, und wobei das Setzen ein Setzen jedes Elements in dem ersten Operanden entsprechend jedem Element in dem zweiten Operanden aufweist auf der Grundlage, ob die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei das Setzen ein Setzen des Elements in dem ersten Operanden auf Einsen aufweist auf der Grundlage des Prüfens, die angibt, dass die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist, und ein Setzen des Elements in dem ersten Operanden auf Null auf der Grundlage des Prüfens, die angibt, dass die ausgewählte Dateneinheit nicht auf den bestimmten Wert gesetzt ist.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Eigenschaften eine Klasse und ein Vorzeichen aufweisen.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Eingabe eine Vielzahl von Dateneinheiten aufweist, wobei jede Dateneinheit aus der Vielzahl von Dateneinheiten eine Klasse und ein Vorzeichen darstellt.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Vielzahl von Dateneinheiten eine Vielzahl von Bits aufweist, und wobei jedes Bit eine Elementklasse aus einer Vielzahl von Elementklassen darstellt, wobei die Vielzahl der Elementklassen Null, normale Zahl, subnormale Zahl, Unendlichkeit, stille Nichtzahl und Signalisierungs-Nichtzahl aufweist, und wobei jedes Bit ein positives oder negatives Vorzeichen darstellt.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Maschinenanweisung ferner ein Feld aufweist, das die Eingabe enthält.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Maschinenanweisung ferner ein Erweiterungsfeld aufweist, das zum Angeben von einem oder mehreren Registern zu verwenden ist, und wobei das erste Registerfeld mit einem ersten Abschnitt des Erweiterungsfelds kombiniert wird, um das erste Register anzugeben, und das zweite Registerfeld mit einem zweiten Abschnitt des Erweiterungsfelds kombiniert wird, um das zweite Register anzugeben.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Maschinenanweisung ferner ein Maskenfeld aufweist, wobei das Maskenfeld angeben soll, ob ein oder mehrere Elemente des zweiten Operanden in die Bestimmung einzubeziehen sind.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei die Maschinenanweisung ferner ein weiteres Maskenfeld aufweist, wobei das weitere Maskenfeld eine Größe einer Gleitkommazahl in einem Element des zweiten Operanden angeben soll.
  • Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, wobei das Ausführen ferner ein Setzen eines Bedingungscodes für die Maschinenanweisung aufweist, wobei der Bedingungscode das Setzen der Elemente des ersten Operanden zusammenfassen soll.
  • Verfahren und Systeme, die einen oder mehrere Aspekte betreffen, werden hierin ebenfalls beschrieben und beansprucht. Ferner werden auch Dienste, die einen oder mehrere Aspekte betreffen, hierin ebenfalls beschrieben und können beansprucht werden.
  • Weitere Merkmale und Vorteile werden durch die Techniken von einem oder mehreren Aspekten verwirklicht. Weitere Ausführungsformen und Aspekte werden hierin ausführlich beschrieben und werden als Bestandteil der Ansprüche betrachtet.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
  • Die vorliegende Erfindung kann auf mehrere Arten in die Praxis umgesetzt werden, und im Folgenden werden Ausführungsformen allein zu Beispielzwecken und unter Bezugnahme auf die begleitenden Zeichnungen beschrieben, wobei:
  • 1 ein Beispiel einer Datenverarbeitungsumgebung zum Integrieren und Verwenden von einem oder mehreren Aspekten darstellt;
  • 2A ein weiteres Beispiel einer Datenverarbeitungsumgebung zum Integrieren und Verwenden von einem oder mehreren Aspekten darstellt;
  • 2B weitere Details des Arbeitsspeichers von 2A darstellt;
  • 3 ein Beispiel einer Registerdatei darstellt;
  • 4A ein Beispiel für ein Format einer Anweisung „Vector Floating Point Test Data Class Immediate” (Anweisungfür Vektor-Gleitkommatest der Datenklasse „Immediate”) darstellt;
  • 4B ein Beispiel für Bit-Werte des dritten Operanden der Anweisung „Vector Floating Point Test Data Class Immediate” von 4A darstellt;
  • 4C eine Ausführungsform der Logik darstellt, die der Anweisung „Vector Floating Point Test Data Class Immediate” von 4A zugehörig ist;
  • 4D ein Beispiel eines Blockschaubilds einer Ausführung der Anweisung „Vector Floating Point Test Data Class Immediate” von 4A darstellt;
  • 4E ein Beispiel für eine Definition von verschiedenen Klassen von binären Gleitkommadaten darstellt;
  • 5A ein Beispiel für ein Format einer Anweisung „Vector Checksum” (Anweisung für Vektor-Prüfsumme) darstellt;
  • 5B eine Ausführungsform der Logik darstellt, die der Anweisung „Vector Checksum” von 5A zugehörig ist;
  • 5C ein Beispiel für ein Blockschaubild einer Ausführung der Anweisung „Vector Checksum” von 5A darstellt;
  • 6A ein Beispiel für ein Format einer Anweisung „Vector Galois Field Multiply Sum and Accumulate” (Anweisung zum Multiplizieren, Summieren und Kumulieren in Vektor-Galoisfeld) darstellt;
  • 6B eine Ausführungsform der Logik darstellt, die der Anweisung „Vector Galois Field Multiply Sum and Accumulate” von 6A zugehörig ist;
  • 6C ein Beispiel für ein Blockschaubild einer Ausführung der Anweisung „Vector Galois Field Multiply Sum and Accumulate” von 6A darstellt;
  • 7A ein Beispiel für ein Format einer Anweisung „Vector Generate Mask” (Anweisung zur Vektormaskenerzeugung) darstellt;
  • 7B eine Ausführungsform der Logik darstellt, die der Anweisung „Vector Generate Mask” von 7A zugehörig ist;
  • 7C ein Beispiel für ein Blockschaubild einer Ausführung der Anweisung „Vector Generate Mask” von 7A darstellt;
  • 8A ein Beispiel für ein Format einer Anweisung „Vector Element Rotate and Insert Under Mask” (Anweisung zum Drehen und Einfügen eines Vektorelements unter einer Maske) darstellt;
  • 8B eine Ausführungsform der Logik darstellt, die der Anweisung „Vector Element Rotate and Insert Under Mask” von 8A zugehörig ist;
  • 8C ein Beispiel für ein Blockschaubild einer Ausführung der Anweisung „Vector Element Rotate and Insert Under Mask” von 8A darstellt;
  • 9A ein Beispiel eines Vektorausnahmecodes darstellt;
  • 9B eine Ausführungsform der Logik zum Setzen des Vektorausnahmecodes von 9A darstellt;
  • 10 eine Ausführungsform eines Computerprogrammprodukts darstellt, das einen oder mehrere Aspekte integriert;
  • 11 eine Ausführungsform eines Host-Computersystems darstellt;
  • 12 ein weiteres Beispiel eines Computersystems darstellt;
  • 13 ein werteres Beispiel eines Computersystems darstellt, das ein Computernetzwerk aufweist;
  • 14 eine Ausführungsform von verschiedenen Elementen eines Computersystems darstellt;
  • 15A eine Ausführungsform der Ausführungseinheit des Computersystems von 14 darstellt;
  • 15B eine Ausführungsform der Verzweigungseinheit des Computersystems von 14 darstellt;
  • 15C eine Ausführungsform der Lade-/Speichereinheit des Computersystems von 14 darstellt; und
  • 16 eine Ausführungsform eines emulierten Host-Computersystems darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einem oder mehreren Aspekten wird eine Vektoreinrichtung bereitgestellt, die verschiedene Vektoranweisungen sowie eine Vektorausnahmeverarbeitung enthält. Jede der hierin beschriebenen Anweisungen ist eine „Single Instruction, Multiple Data”-(SIMD)Anweisung, die ein oder mehrere Vektorregister verwendet (auf die hierin auch als Vektoren verwiesen wird). Ein Vektorregister ist zum Beispiel ein Prozessorregister (auf das auch als Hardware-Register verwiesen wird), das eine kleine Speichermenge ist (z. B. kein Hauptarbeitsspeicher), die als Teil einer Zentraleinheit (CPU) oder eines anderen Prozessors verfügbar ist. Jedes Vektorregister enthält einen Vektoroperanden mit einem oder mehreren Elementen, und ein Element weist zum Beispiel eine Länge von einem, zwei, vier oder acht Byte auf. In anderen Ausführungsformen können die Elemente andere Größen haben; und eine Vektoranweisung muss keine SIMD-Anweisung sein.
  • Eine Ausführungsform einer Datenverarbeitungsumgebung zum Integrieren und Verwenden von einem oder mehreren Aspekten wird unter Bezugnahme auf 1 beschrieben. Eine Datenverarbeitungsumgebung 100 enthält zum Beispiel einen Prozessor 102 (z. B. eine Zentraleinheit), einen Arbeitsspeicher 104 (z. B. Hauptarbeitsspeicher) und eine oder mehrere Eingabe/Ausgabe-(E/A)Einheiten und/oder -Schnittstellen 106, die zum Beispiel über einen oder mehrere Busse 108 und/oder andere Verbindungen miteinander verbunden sind.
  • In einem Beispiel beruht der Prozessor 102 auf der z/Architecture, die von International Business Machines Corporation angeboten wird, und ist Bestandteil eines Servers, wie beispielsweise des System z-Servers, der ebenfalls von International Business Machines Corporation angeboten wird und die z/Architecture umsetzt. Eine Ausführungsform der z/Architecture wird in einer IBM®-Veröffentlichung mit dem Titel „z/Architecture Principles of Operation” beschrieben, IBM®-Veröffentlichung SA22-7832-09, zehnte Ausgabe, September 2012, die hierin durch Verweis in ihrer Gesamtheit aufgenommen wird. In einem Beispiel führt der Prozessor ein Betriebssystem aus, wie beispielsweise z/OS, das ebenfalls von International Business Machines Corporation angeboten wird. IBM®, Z/ARCHITECTURE® und Z/OS® sind eingetragene Marken der International Business Machines Corporation, Armonk, New York, USA. Weitere hierin verwendete Namen können eingetragene Marken, Markenzeichen oder Produktnamen von International Business Machines Corporation oder anderen Unternehmen sein.
  • In einer weiteren Ausführungsform beruht der Prozessor 102 auf der von International Business Machines Corporation angebotenen Power Architecture. Eine Ausführungsform der Power Architecture wird in „Power ISATM Version 2.06 Revision B”, International Business Machines Corporation, 23. Juli 2010 beschrieben, die hierin durch Verweis in ihrer Gesamtheit aufgenommen wird. POWER ARCHITECTURE® ist eine eingetragene Marke von International Business Machines Corporation.
  • In noch einer weiteren Ausführungsform beruht der Prozessor 102 auf einer von Intel Corporation angebotenen Intel-Architektur. Eine Ausführungsform der Intel-Architektur wird im „Intel® 64 and IA-32 Architectures Developer's Manual: Band 2B, Instructions Set Reference, A-L”, Bestellnummer 253666-045US, Januar 2013, und im „Intel® 64 and IA-32 Architectures Developer's Manual: Band 2B, Instructions Set Reference, M-Z”, Bestellnummer 253667-045US, Januar 2013 beschrieben, die jeweils durch Verweis hierin in ihrer Gesamtheit aufgenommen werden. Intel® ist eine eingetragene Marke der Intel Corporation, Santa Clara, Kalifornien.
  • Eine weitere Ausführungsform einer Datenverarbeitungsumgebung zum Integrieren und Verwenden von einem oder mehreren Aspekten wird unter Bezugnahme auf 2A beschrieben. In diesem Beispiel enthält eine Datenverarbeitungsumgebung 200 zum Beispiel eine native Zentraleinheit 202, einen Arbeitsspeicher 204 und eine oder mehrere Eingabe/Ausgabe-Einheiten und/oder -Schnittstellen 206, die zum Beispiel über einen oder mehrere Busse 208 und/oder andere Verbindungen miteinander verbunden sind. Zum Beispiel kann die Datenverarbeitungsumgebung 200 einen PowerPC-Prozessor, einen pSeries-Server oder einen xSeries-Server enthalten, der von International Business Machines Corporation in Armonk, New York angeboten wird; einen HP Superdome mit Intel Itanium II-Prozessoren, der von Hewlett Packard Co., Palo Alto, Kalifornien angeboten wird; und/oder weitere Maschinen auf der Grundlage von Architekturen, die von International Business Machines Corporation, Hewlett Packard, Intel, Oracle oder anderen angeboten werden.
  • Die native Zentraleinheit 202 enthält ein oder mehrere native Register 210 wie zum Beispiel ein oder mehrere Mehrzweckregister und/oder ein oder mehrere Sonderzweckregister, die bei der Verarbeitung innerhalb der Umgebung verwendet werden. Diese Register enthalten Informationen, die den Zustand der Umgebung zu jedem bestimmten Zeitpunkt darstellen.
  • Des Weiteren führt die native Zentraleinheit 202 Anweisungen und Code aus, die im Arbeitsspeicher 204 gespeichert sind. In einem bestimmten Beispiel führt die Zentraleinheit einen Emulatorcode 212 aus, der im Arbeitsspeicher 204 gespeichert ist. Dieser Code ermöglicht der in einer Architektur konfigurierten Verarbeitungsumgebung die Emulation einer anderen Architektur. Zum Beispiel gestattet der Emulatorcode 212 Maschinen auf der Grundlage anderer Architekturen als der z/Architecture, wie zum Beispiel PowerPC-Prozessoren, pSeries-Servern, xSeries-Servern, HP Superdome-Servern oder anderen, die z/Architecture zu emulieren und Software und Anweisungen auszuführen, die auf der Grundlage der z/Architecture entwickelt wurden.
  • Weitere Details zum Emulatorcode 212 werden unter Bezugnahme auf 2B beschrieben. Im Arbeitsspeicher 204 gespeicherte Gastanweisungen 250 weisen Software-Anweisungen auf, (z. B. korrelierend zu Maschinenanweisungen), die entwickelt wurden, um in einer anderen Architektur als derjenigen der nativen CPU 202 ausgeführt zu werden. Zum Beispiel können Gastanweisungen 250 dafür ausgelegt worden sein, auf einem z/Architecture-Prozessor 102 ausgeführt zu werden, werden aber stattdessen auf der nativen CPU 202 emuliert, die zum Beispiel ein Intel Itanium II-Prozessor sein kann. In einem Beispiel enthält der Emulatorcode 212 eine Anweisungsabrufroutine 252, um eine oder mehrere Gastanweisungen 250 vom Arbeitsspeicher 204 zu erhalten und um optional eine lokale Pufferspeicherung für die erhaltenen Anweisungen bereitzustellen. Außerdem enthält er eine Anweisungsumsetzungsroutine 254, um den Typ der Gastanweisung zu ermitteln, die erhalten wurde, und um die Gastanweisung in eine oder mehrere native Anweisungen 256 umzusetzen. Diese Umsetzung enthält zum Beispiel ein Identifizieren der Funktion, die durch die Gastanweisung ausgeführt werden soll, und ein Auswählen der nativen Anweisung(en), die diese Funktion ausführen soll(en).
  • Ferner enthält der Emulator 212 eine Emulationssteuerroutine 260, die veranlasst, dass die nativen Anweisungen ausgeführt werden. Die Emulationssteuerroutine 260 kann die native CPU 202 veranlassen, eine Routine von nativen Anweisungen auszuführen, die eine oder mehrere vorher erhaltene Gastanweisungen emulieren, und die nach Abschluss einer derartigen Ausführung die Steuerung wieder an die Anweisungsabrufroutine zurückgeben, um das Erhalten der nächsten Gastanweisung oder einer Gruppe von Gastanweisungen zu emulieren. Die Ausführung der nativen Anweisungen 256 kann ein Laden von Daten aus dem Arbeitsspeicher 204 in ein Register enthalten; ein Zurückspeichern der Daten aus einem Register; oder ein Ausführen eines Typs einer arithmetischen oder logischen Operation, wie durch die Umsetzungsroutine festgelegt.
  • Jede Routine ist zum Beispiel in Software umgesetzt, die im Arbeitsspeicher gespeichert ist und durch die native Zentraleinheit 202 ausgeführt wird. In einigen Beispielen sind eine oder mehrere der Routinen oder Operationen in Firmware, Hardware, Software oder einer Kombination davon umgesetzt. Die Register des emulierten Prozessors können unter Verwendung der Register 210 der nativen CPU oder unter Verwendung von Speicherpositionen im Arbeitsspeicher 204 emuliert werden. In Ausführungsformen können Gastanweisungen 250, native Anweisungen 256 und der Emulatorcode 212 in demselben Arbeitsspeicher liegen oder auf verschiedenen Arbeitsspeichereinheiten zur Verfügung gestellt sein.
  • Wie hierin verwendet, enthält Firmware z. B. den Mikrocode, Millicode und/oder Makrocode des Prozessors. Sie enthält zum Beispiel die Anweisungen auf Hardware-Ebene und/oder Datenstrukturen, die in einer Umsetzung von übergeordnetem Maschinencode verwendet werden. In einer Ausführungsform enthält sie zum Beispiel proprietären Code, der normalerweise als Mikrocode bereitgestellt wird, der vertrauenswürdige Software enthält oder einen Mikrocode, der für die zugrunde liegende Hardware spezifisch ist und den Betriebssystemzugriff auf die System-Hardware steuert.
  • In einem Beispiel ist eine Gastanweisung 250, die erhalten, umgesetzt und ausgeführt wird, eine hierin beschriebene Anweisung. Die Anweisung, die von einer Architektur stammt (z. B. der z/Architecture), wird aus dem Arbeitsspeicher abgerufen, umgesetzt und als eine Folge von nativen Anweisungen 256 einer anderen Architektur dargestellt (z. B. PowerPC, pSeries, xSeries, Intel usw.). Diese nativen Anweisungen werden anschließend ausgeführt.
  • In einer Ausführungsform sind die hierin beschriebenen Anweisungen Vektoranweisungen, die Teil einer Vektoreinrichtung sind. Die Vektoreinrichtung stellt zum Beispiel Vektoren fester Größe mit einem Bereich von einem bis sechzehn Elementen bereit. Jeder Vektor enthält Daten, die auf der Grundlage von Vektoranweisungen bearbeitet werden, die in der Einrichtung definiert wurden. Wenn ein Vektor aus mehreren Elementen besteht, wird in einer Ausführungsform jedes Element parallel zu den anderen Elementen verarbeitet. Ein Anweisungsabschluss wird erst erreicht, wenn die Verarbeitung aller Elemente abgeschlossen ist. In weiteren Ausführungsformen werden die Elemente teilweise parallel und/oder nacheinander verarbeitet.
  • Vektoranweisungen können als Teil von verschiedenen Architekturen umgesetzt werden, darunter z/Architecture, Power, x86, IA-32, IA-64 usw., sie sind aber nicht darauf beschränkt. Obwohl hierin beschriebene Ausführungsformen für die z/Architecture sind, können die hierin beschriebenen Vektoranweisungen und einer oder mehrere Aspekte auf vielen anderen Architekturen beruhen. Die z/Architecture ist nur ein Beispiel.
  • In einer Ausführungsform, in der die Vektoreinrichtung als Teil der z/Architecture umgesetzt ist, um die Vektorregister und -anweisungen zu verwenden, werden in einem angegebenen Steuerregister (z. B. einem Steuerregister 0) eine Vektoraktivierungssteuerung und eine Registersteuerung zum Beispiel auf Eins gesetzt. Wenn die Vektoreinrichtung installiert ist und eine Vektoranweisung ausgeführt wird, ohne dass die Aktvierungssteuerungen gesetzt sind, wird eine Datenausnahme erkannt. Wenn die Vektoreinrichtung nicht installiert ist und eine Vektoranweisung ausgeführt wird, wird ein Operationsfehler erkannt.
  • In einer Ausführungsform gibt es 32 Vektorregister, und weitere Typen von Registern können einem Quadranten der Vektorregister zugeordnet werden. Wie in 3 gezeigt, enthält eine Registerdatei 300 zum Beispiel 32 Vektorregister 302, und jedes Register weist eine Länge von 128 Bit auf. Sechszehn Gleitkommaregister 304, die eine Länge von 64 Bit aufweisen, können die Vektorregister überlagern. Wenn also zum Beispiel ein Gleitkommaregister 2 modifiziert wird, wird auch ein Vektorregister 2 modifiziert. Weitere Zuordnungen für andere Registertypen sind ebenfalls möglich.
  • Vektordaten treten im Speicher zum Beispiel in derselben Links-nach-Rechts-Folge auf wie andere Datenformate. Bits eines Datenformats, die von 0 bis 7 nummeriert sind, bilden das Byte in der höchstwertigen Byte-Speicherposition (mit der niedrigsten Nummer) im Speicher, die Bits 8 bis 15 bilden das Byte in der nächsten darauffolgenden Speicherposition usw. In einem weiteren Beispiel können die Vektordaten im Speicher in einer anderen Folge auftreten, wie beispielsweise von rechts nach links.
  • Jede der hierin beschriebenen Vektoranweisungen weist eine Vielzahl von Feldern auf, und ein oder mehrere der Felder weisen eine zugehörige tiefgestellte Zahl auf. Die einem Feld der Anweisung zugehörige tiefgestellte Zahl gibt den Operanden an, für den das Feld gilt. Zum Beispiel gibt die dem Vektorregister V1 zugehörige tiefgestellte Zahl 1 an, dass das Register in V1 den ersten Operanden enthält usw. Ein Registeroperand entspricht einer Registerlänge, die zum Beispiel 128 Bit beträgt.
  • Ferner weisen viele der Vektoranweisungen, die mit der Vektoreinrichtung bereitgestellt werden, ein Feld mit angegebenen Bits auf. Dieses Feld, auf das als das Registererweiterungsbit oder RXB verwiesen wird, enthält das höchstwertige Bit für jeden Operanden, der durch das Vektorregister bezeichnet wird. Von der Anweisung nicht angegebene Bits für Registerbezeichnungen müssen reserviert und auf Null gesetzt werden. Das höchstwertige Bit ist zum Beispiel mit der linken Seite der Vier-Bit-Registerbezeichnung verkettet, um eine Fünf-Bit-Vektorregisterbezeichnung zu erstellen.
  • In einem Beispiel enthält das RXB-Feld vier Bits (z. B. Bit 0 bis 3), und die Bits sind wie folgt definiert:
  • 0
    – Höchstwertiges Bit für die erste Vektorregisterbezeichnung (z. B. in Bit 8 bis 11) der Anweisung.
    1
    – Höchstwertiges Bit für die zweite Vektorregisterbezeichnung (z. B. in Bit 12 bis 15) der Anweisung, sofern vorhanden.
    2
    – Höchstwertiges Bit für die dritte Vektorregisterbezeichnung (z. B. in Bit 16 bis 19) der Anweisung, sofern vorhanden.
    3
    – Höchstwertiges Bit für die vierte Vektorregisterbezeichnung (z. B. in Bit 32 bis 35) der Anweisung, sofern vorhanden.
  • Jedes Bit wird zum Beispiel durch den Assembler abhängig von der Registernummer auf Null oder Eins gesetzt. Für die Register 0 bis 15 wird das Bit zum Beispiel auf 0 gesetzt; für die Register 16 bis 31 wird das Bit auf 1 gesetzt usw.
  • In einer Ausführungsform ist jedes RXB-Bit ein Erweiterungsbit für eine bestimmte Speicherposition in einer Anweisung, die ein oder mehrere Vektorregister enthält. Zum Beispiel ist in einer oder mehreren Vektoranweisungen Bit 0 von RXB ein Erweiterungsbit für die Speicherposition 8 bis 11, die z. B. V1 zugewiesen ist; Bit 1 von RXB ist ein Erweiterungsbit für die Speicherposition 12 bis 15, die z. B. V2 zugewiesen ist usw. In einer weiteren Ausführungsform enthält das RXB-Feld zusätzliche Bits, und mehr als ein Bit wird als eine Erweiterung für jeden Vektor oder jede Speicherposition verwendet.
  • Eine Anweisung, die gemäß einem Aspekt bereitgestellt wird, die das RXB-Feld enthält, ist eine Anweisung „Vector Floating Point Test Data Class Immediate” (VFTCI), für die ein Beispiel in 4A dargestellt ist. In einem Beispiel enthält die Anweisung „Vector Floating Point Test Data Class Immediate” 400 Operationscode-Felder 402a (z. B. Bit 0 bis 7), 402b (z. B. Bit 40 bis 47), die eine Operation „Vector Floating Point Test Data Class Immediate” angeben; ein erstes Vektorregisterfeld 404 (z. B. Bit 8 bis 11), das zum Bezeichnen eines ersten Vektorregisters (V1) verwendet wird; ein zweites Vektorregisterfeld 406 (z. B. Bit 12 bis 15), das zum Bezeichnen eines zweiten Vektorregisters (V2) verwendet wird; ein Direktfeld (I3) 408 (z. B. Bit 16 bis 27) zum Aufnehmen einer Bitmaske; ein erstes Maskenfeld (M5) 410 (z. B. Bit 28 bis 31); ein zweites Maskenfeld (M4) 412 (z. B. Bit 32 bis 35); und ein RXB-Feld 414 (z. B. Bit 36 bis 39). Jedes der Felder 404 bis 414 ist in einem Beispiel getrennt und unabhängig von dem oder den Operationscode-Feldern. Ferner sind sie in einer Ausführungsform voneinander getrennt und unabhängig; allerdings kann in anderen Ausführungsformen mehr als ein Feld kombiniert werden. Weitere Informationen über die Verwendung dieser Felder werden im Folgenden beschrieben.
  • In einem Beispiel geben ausgewählte Bits (z. B. die ersten zwei Bits) des Operationscodes, der durch das Operationscode-Feld 402a bezeichnet wird, die Länge der Anweisung an. In diesem bestimmten Beispiel geben die ausgewählten Bits an, dass die Länge drei Halbwörter beträgt. Ferner ist das Format der Anweisung eine Vektorregister- und Direkt-Operation mit einem erweiterten Operationscode-Feld. Jedes der Vektor-(V)Felder bezeichnet zusammen mit seinem entsprechenden durch RXB angegebenen Erweiterungsbit ein Vektorregister. Insbesondere wird für Vektorregister das Register angegeben, das den Operanden enthält, indem zum Bespiel ein Vier-Bit-Feld des Registerfelds mit der Addition seines entsprechenden Registererweiterungsbits (RXB) als das höchstwertige Bit verwendet wird. Wenn zum Beispiel das Vier-Bit-Feld 0110 lautet und das Erweiterungsbit 0 ist, gibt das Fünf-Bit-Feld 00110 eine Registernummer 6 an.
  • Ferner geben in einer Ausführungsform der VFTCI-Anweisung V1 404 und V2 406 Vektorregister an, die für die Anweisung jeweils einen ersten Operanden und einen zweiten Operanden enthalten. Außerdem enthält I3 408 eine Bitmaske mit einer Vielzahl von Bits, und jedes Bit wird zum Darstellen einer binären Gleitkomma-Elementklasse und eines Vorzeichens (positiv oder negativ) verwendet, wie im Folgenden ausführlicher beschrieben.
  • In einer weiteren Ausführungsform kann die Bitmaske zum Beispiel in einem Mehrzweckregister, im Arbeitsspeicher, in einem Element eines Vektorregisters (unterschiedlich je nach Element) oder aus einer Adressberechnung bereitgestellt werden. Sie kann als expliziter Operand der Anweisung oder als ein implizierter Operand oder eine Eingabe enthalten sein.
  • Ein Feld M5 410 hat zum Beispiel vier Bits, 0 bis 3, und gibt eine Einzelelement-Steuerung (S) zum Beispiel in Bit 0 an. Wenn Bit 0 auf Eins gesetzt wird, findet die Operation nur auf dem Element mit Null-Index in dem Vektor statt. Die Bitpositionen aller anderen Elemente in dem ersten Operandenvektor sind unvorhersehbar. Wenn Bit 0 auf Null gesetzt wird, erfolgt die Operation auf allen Elementen in dem Vektor.
  • Ein Feld M4 412 wird zum Beispiel zum Angeben der Größe der Gleitkommazahlen in dem zweiten Operanden der Anweisung verwendet. In einem Beispiel wird dieses Feld auf 3 gesetzt, womit eine binäre Gleitkommazahl mit doppelter Genauigkeit angegeben wird. Weitere Beispiele sind ebenfalls möglich.
  • Bei der Ausführung einer Ausführungsform der Anweisung „Vector Floating Point Test Data Class Immediate” werden die Klasse und das Vorzeichen des Gleitkomma-Elements oder der Gleitkomma-Elemente des zweiten Operanden geprüft, um ein oder mehrere Bits aus dem dritten Operanden auszuwählen. Wenn ein ausgewähltes Bit gesetzt ist, werden alle Bitpositionen des entsprechenden Elements in dem ersten Operanden auf Einsen gesetzt; andernfalls werden sie auf Null gesetzt. Das bedeutet, wenn die Klasse/das Vorzeichen der Gleitkommazahl, die in einem Element des zweiten Operanden enthalten ist, mit einem gesetzten Bit in dem dritten Operanden übereinstimmt (d. h. einem Bit, das z. B. auf Eins gesetzt ist), wird ein Element des ersten Operanden, das dem Element des zweiten Operanden entspricht, auf Einsen gesetzt. In einem Beispiel enthalten alle Operandenelemente Langformat-BFP-(binäre Gleitkomma-)Zahlen.
  • Wie hierin angegeben, werden die 12 Bits des dritten Operanden, Bit 16 bis 27) des Anweisungstexts, zum Angeben von 12 Kombinationen von BFP-Datenklasse und Vorzeichen verwendet. In einem Beispiel, wie in 4B gezeigt, werden BFP-Operandenelemente in sechs Klassen 430 unterteilt: Null, normale Zahl, subnormale Zahl, Unendlichkeit, stille NaN (Nichtzahl) und Signalisierungs-NaN, und jeder Klasse ist ein Vorzeichen 432 (entweder positiv oder negativ) zugehörig. Somit gibt zum Beispiel Bit 0 von I3 eine Null-Klasse mit einem positiven Vorzeichen an, und Bit 1 gibt eine Null-Klasse mit einem negativen Vorzeichen an usw.
  • Ein oder mehrere der Bits des dritten Operanden können auf Eins gesetzt sein. Ferner kann die Anweisung in einer Ausführungsform ein oder mehrere Elemente gleichzeitig bearbeiten.
  • Operandenelemente, einschließlich SNaNs (Signalisierungsnichtzahlen) und QNaNs (stille Nichtzahlen), werden geprüft, ohne eine IEEE-Ausnahme zu verursachen.
  • Sich daraus ergebender Zusammenfassungs-Bedingungscode für alle Elemente:
  • 0
    Ausgewähltes Bit ist 1 für alle Elemente (Übereinstimmung)
    1
    Ausgewähltes Bit ist 1 für mindestens eines, aber nicht alle Elemente (wenn S-Bit Null ist)
    2
    Ausgewähltes Bit ist 0 für alle Elemente (keine Übereinstimmung)
  • IEEE-Ausnahmen: Keine
  • Programmausnahmen:
    • – Daten mit einem Datenausnahmecode (DXC) FE, „Vector Instruction”, der angibt, dass eine Vektoreinrichtung nicht aktiviert ist
    • – Operation (wenn die Vektoreinrichtung für z/Architecture nicht installiert ist)
    • – Spezifikation
    • – Transaktionseinschränkung
  • Programmiernotizen:
    • 1. Diese Anweisung bietet eine Möglichkeit zum Testen von Operandenelementen ohne ein Risiko einer Ausnahme oder IEEE-Markierungen zu setzen.
    • 2. Wenn das S-Bit gesetzt ist, wird ein Bedingungscode von 1 nicht verwendet.
  • Weitere Details, die eine Ausführungsform der Anweisung „Vector Floating Point Test Data Class Immediate” betreffen, werden unter Bezugnahme auf 4C und 4D beschrieben. 4C stellt insbesondere eine Ausführungsform der Logik dar, die der Anweisung „Vector Floating Point Test Data Class Immediate” zugehörig ist, die durch einen Prozessor (z. B. eine CPU) ausgeführt wird, und 4D stellt ein Beispiel für ein Blockschaubild dar, das die Ausführung der Anweisung „Vector Floating Point Test Data Class” veranschaulicht.
  • Unter Bezugnahme auf 4C wird zunächst eine Variable, auf die als Elementindex (Ei) verwiesen wird, auf Null initialisiert, SCHRITT 450. Danach wird der Wert im Element Ei, das in diesem Fall das Element 0 ist, aus dem zweiten Operanden der Anweisung extrahiert (z. B. aus dem Operanden, der in dem Register gespeichert ist, das mit V2 bezeichnet ist), SCHRITT 452. Dieser Wert, der ein binärer Langformat-Gleitkommawert ist, wird in einen Zahlentyp konvertiert, um eine Klasse und ein Vorzeichen für das Gleitkomma-Element des zweiten Operanden zu erhalten, wie im Folgenden beschrieben, SCHRITT 454. In einem Beispiel wird die Größe der Gleitkommazahl 453 in die Konvertierungslogik eingegeben. Die erhaltene Klasse und das Vorzeichen sind einem bestimmten Klassen/Vorzeichen-Bit zugehörig, wie unter Bezugnahme auf 4B beschrieben. Wenn die Konvertierung zum Beispiel angibt, dass die Gleitkommazahl eine positive normale Zahl ist, ist Bit 2 der Gleitkommazahl zugehörig.
  • Nach der Konvertierung wird das Bit in dem dritten Operanden geprüft (auf das als ausgewähltes Bit verwiesen wird), das dem bestimmten Bit entspricht, das auf der Grundlage der Konvertierung ermittelt wurde, SCHRITT 456. Wenn das ausgewählte Bit gesetzt ist, ANFRAGE 458, wird das Element in dem ersten Operanden, das dem Element (Ei) entspricht, komplett auf Einsen gesetzt, SCHRITT 460; andernfalls wird dieses Element in dem ersten Operanden gleich Null gesetzt, SCHRITT 462. Wenn zum Beispiel die Konvertierung der Gleitkommazahl im Element 0 eine positive normale Zahl angibt, ist Bit 2 der Zahl zugehörig. Somit wird Bit 2 des dritten Operanden geprüft, und wenn es auf Eins gesetzt ist, wird Element 0 des ersten Operanden komplett auf Einsen gesetzt.
  • Danach wird eine Bestimmung vorgenommen, ob Ei gleich der maximalen Anzahl von Elementen des zweiten Operanden ist, ANFRAGE 464. Falls nicht, wird Ei z. B. um Eins erhöht, SCHRITT 466, und die Verarbeitung wird mit SCHRITT 452 fortgesetzt. Wenn Ei andererseits gleich der maximalen Anzahl von Elementen ist, wird ein Zusammenfassungs-Bedingungscode erzeugt, SCHRITT 468. Der Zusammenfassungs-Bedingungscode fasst die Verarbeitung für alle Elemente des zweiten Operanden zusammen. Wenn z. B. das ausgewählte Bit für alle Elemente Eins ist (Übereinstimmung), ist der sich daraus ergebende Bedingungscode Null. Wenn das ausgewählte Bit andererseits für mindestens eines, aber nicht alle der Elemente 1 ist (wenn das S-Bit nicht Null ist), ist der Bedingungscode 1, und wenn das ausgewählte Bit für alle Elemente Null ist (keine Übereinstimmung), ist der Bedingungscode 3.
  • Die vorgenannte Verarbeitung ist in dem Blockschaubild von 4D bildlich dargestellt. Wie dargestellt, enthält ein Vektorregister 480 eine Vielzahl von Elementen 482a bis 482n, wobei jedes eine Gleitkommazahl enthält. Jede Gleitkommazahl und die Größe der Gleitkommazahl 483a bis 483n werden in die Logik zur Zahlentypkonvertierung 484a bis 484n eingegeben, und die Ausgabe ist ein bestimmtes Bit, das eine Klasse/ein Vorzeichen für die Gleitkommazahl darstellt. Anschließend wird ein ausgewähltes Bit in jeder Maske 486a bis 486b geprüft, das jedem bestimmten Bit entspricht. Abhängig davon, ob das ausgewählte Bit gesetzt ist, wird der erste Operand in einem Vektorregister 488 gesetzt. Wenn zum Beispiel für Element 0 des zweiten Operanden das ausgewählte Bit gesetzt ist, wird ein Element 490a des ersten Operanden komplett auf Einsen gesetzt. Wenn das ausgewählte Bit für Element 1 des zweiten Operanden nicht gesetzt ist (z. B. auf Null gesetzt ist), wird desgleichen ein Element 490b des ersten Operanden auf Null gesetzt usw.
  • Weitere Details einer Ausführungsform der Logik zur Zahlentypkonvertierung werden im Folgenden beschrieben. Zunächst wird die Gleitkommazahl, die eine standardmäßige binäre IEEE-Gleitkommazahl ist, in drei Teile konvertiert: ein Vorzeichen, einen Exponenten (8 Bit) + 127 und eine Bruchzahl (23 Bit), wie bekannt ist. Anschließend werden die Werte aller drei Teile geprüft, um die Klasse und das Vorzeichen zu bestimmen, wie in 4E gezeigt. Zum Beispiel ist das Vorzeichen der Wert des Vorzeichen-Teils, und die Klasse (die in 4E auch als Entität bezeichnet wird) beruht auf den Werten des Exponenten und der Bruchzahl (das Einheitenbit in 4E ist ein impliziertes Bit der Bruchzahl). Wenn die Werte des Exponenten und der Bruchzahl (einschließlich des Einheitenbits) zum Beispiel Nullen sind, ist die Klasse Null, und wenn der Vorzeichenteil positiv ist, ist das Vorzeichen positiv. Somit stellt Bit 0 (4B) die Klasse/das Vorzeichen dieser Gleitkommazahl dar.
  • Oben wird eine Ausführungsform einer Anweisung zum Testen der Gleitkommaklasse von Elementen in einem Vektor und Setzen einer sich daraus ergebenden Bitmaske beschrieben. Die Anweisung „Vector Floating Point Test Data Class Immediate” weist ein Direktfeld auf, in dem jedes Bit eine Klasse von zu erfassenden Gleitkommazahlen darstellt. Jedes Gleitkomma-Element eines Eingabevektors wird getestet, um festzustellen, ob der Wert in irgendeiner Klasse vorhanden ist, die durch die Anweisung angegeben wird. Wenn das Gleitkomma-Element in einer der Klassen vorhanden ist, werden die Bitpositionen des entsprechenden Elements des Ausgabevektors auf 1 gesetzt. Dadurch wird eine Technik zum Bestimmen einiger Eigenschaften (z. B. Klasse und Vorzeichen) einer binären Gleitkommazahl bereitgestellt, ohne irgendwelche Ausnahmen oder Unterbrechungen zu verursachen.
  • In einer weiteren Ausführungsform kann das Testen durch Prüfen ausgeführt werden, welche Bits des dritten Operanden gesetzt sind (z. B. auf Eins), und anschließend durch Bestimmen, ob die Klasse/das Vorzeichen von einem oder mehreren Elementen des zweiten Operanden dieselben sind wie bei einem der gesetzten Bits. Der erste Operand wird dann auf der Grundlage des Vergleichs gesetzt.
  • In einem weiteren Aspekt wird eine Anweisung „Vector Checksum” bereitgestellt, für die ein Beispiel in 5A dargestellt ist. In einem Beispiel enthält die Anweisung „Vector Checksum” 500 Operationscode-Felder 502a (z. B. Bit 0 bis 7), 502b (z. B. Bit 40 bis 47), die eine Vektorprüfsummen-Operation angeben; ein erstes Vektorregisterfeld 504 (z. B. Bit 8 bis 11), das zum Bezeichnen eines ersten Vektorregisters (V1) verwendet wird; ein zweites Vektorregisterfeld 506 (z. B. Bit 12 bis 15), das zum Bezeichnen eines zweiten Vektorregisters (V2) verwendet wird; ein drittes Vektorregisterfeld 508 (z. B. Bit 16 bis 19), das zum Bezeichnen eines dritten Vektorregisters (V3) verwendet wird; und ein RXB-Feld 510 (z. B. Bit 36 bis 39). Jedes der Felder 504 bis 510 ist in einem Beispiel getrennt und unabhängig von dem oder den Operationscode-Feldern. Ferner sind sie in einer Ausführungsform voneinander getrennt und unabhängig; allerdings kann in anderen Ausführungsformen mehr als ein Feld kombiniert werden.
  • In einer weiteren Ausführungsform ist das dritte Vektorregisterfeld nicht als expliziter Operand der Anweisung enthalten, sondern ist stattdessen ein implizierter Operand oder eine Eingabe. Ferner kann der in dem Operanden bereitgestellte Wert auf andere Weise bereitgestellt werden, wie beispielsweise in einem Mehrzweckregister, im Arbeitsspeicher, als eine Adressberechnung usw.
  • In noch einer weiteren Ausführungsform wird der dritte Operand, explizit oder impliziert, überhaupt nicht bereitgestellt.
  • In einem Beispiel geben ausgewählte Bits (z. B. die ersten zwei Bits) des Operationscodes, der durch das Operationscode-Feld 502a bezeichnet wird, die Länge der Anweisung an. In diesem bestimmten Beispiel geben die ausgewählten Bits an, dass die Länge drei Halbwörter beträgt. Ferner ist das Format der Anweisung eine Vektorregister-und-Register-Operation mit einem erweiterten Operationscode-Feld. Jedes der Vektor-(V)Felder bezeichnet zusammen mit diesem entsprechenden durch RXB angegebenen Erweiterungsbit ein Vektorregister. Insbesondere wird für Vektorregister das Register angegeben, das den Operanden enthält, indem zum Beispiel ein Vier-Bit-Feld des Registerfelds unter Addieren des entsprechenden Registererweiterungsbits (RXB) als das höchstwertige Bit verwendet wird.
  • Bei der Ausführung einer Ausführungsform der Anweisung „Vector Checksum” werden die Elemente des zweiten Operanden, die zum Beispiel Wortlänge haben, eines nach dem anderen zusammen mit einem ausgewählten Element des dritten Operanden addiert, z. B. das Element im Wort eins des dritten Operanden. (in einer weiteren Ausführungsform ist das Addieren des ausgewählten Elements des dritten Operanden optional.) Die Summe wird in eine ausgewählte Speicherposition gestellt, z. B. Wort eins des ersten Operanden. Nullen werden in die anderen Wort-Elemente gestellt, z. B. Wortelemente 0 und 2 bis 3 des ersten Operanden. Die Wortlängen-Elemente werden alle als binäre 32-Bit-Ganzzahlen ohne Vorzeichen behandelt. Nach jeder Addition eines Elements wird ein Übertrag von z. B. Bitposition 0 der Summe z. B. zur Bitposition 31 des Ergebnisses im Wort-Element eins des ersten Operanden addiert.
  • Bedingungscode: Der Code bleibt unverändert.
  • Programmausnahmen:
    • – Daten mit einem Datenausnahmecode (DXC) FE, „Vector Instruction”, der angibt, dass die Vektoreinrichtung nicht aktiviert ist
    • – Operation (wenn die Vektoreinrichtung für z/Architecture nicht installiert ist)
    • – Transaktionseinschränkung
  • Programmiernotizen:
    • 1. Der Inhalt des dritten Operanden muss am Anfang eines Algorithmus zur Prüfsummenberechnung Null enthalten.
    • 2. Eine 16-Bit-Prüfsumme wird zum Beispiel in einer TCP/IP-Anwendung verwendet. Das folgende Programm kann ausgeführt werden, nachdem eine 32-Bit-Prüfsumme berechnet worden ist:
  • VERLLF V2, V1, 16(0) (VERLLF – Vector Element Rotate Left
    Logical – 4-Byte-Wert)
    VAF V2, V1, V2 (VAF – Vector Add – 4-Byte-Wert)
  • Das Halbwort in Element 2 enthält die 16-Bit-Prüfsumme.
  • Weitere Details zur Anweisung „Vector Checksum” werden unter Bezugnahme auf 5B und 5C beschrieben. In einem Beispiel stellt 5B eine Ausführungsform der Logik dar, die durch einen Prozessor beim Ausführen der Anweisung „Vector Checksum” ausgeführt wird, und 5C stellt ein Blockschaubild eines Beispiels für die Ausführung der Anweisung „Vector Checksum” dar.
  • Unter Bezugnahme auf 5B wird zunächst der Elementindex (Ey) für den ersten Operanden (OPI) z. B. auf Eins gesetzt, wodurch Element 1 des ersten Operanden angegeben wird, SCHRITT 530. Desgleichen wird der Elementindex (Ex) für den dritten Operanden (OP3) z. B. auf Eins gesetzt, wodurch Element 1 des dritten Operanden angegeben wird, SCHRITT 532. Danach wird der Elementindex (Ei) gleich 0 gesetzt, und das Element am Elementindex (Ey), d. h. Element 1 in diesem Beispiel, wird auf Null initialisiert, SCHRITT 534. In einer weiteren Ausführungsform können Ex und Ey auf jeden gültigen Elementindex gesetzt werden.
  • Eine End Around Carry-Addition (EAC) (Rückwärtsübertragaddition ) wird ausgeführt, bei dem OP1(Ey) = OP1(Ey) + OP2(Ei) + OP2(Ei + 1) ist, SCHRITT 536. Somit wird das Element 1 des Ausgabevektors (OP1) gleich den Inhalten dieses Elements plus dem Wert in Element 0 des zweiten Operanden (OP2) und dem Wert in Element 1 des zweiten Operanden gesetzt. Mit einer Rückwärtsübertragaddition wird eine Additions-Operation ausgeführt, und jeder Übertrag aus der Addition wird in die Summe zurück addiert, um eine neue Summe zu erzeugen.
  • In einer weiteren Ausführungsform wird statt der oben beschriebenen Addition Folgendes ausgeführt: ein temporärer Akkumulatorwert wird definiert und auf Null initialisiert, und anschließend wird jeweils ein Element addiert. In einer weiteren Ausführungsform werden alle Wörter parallel addiert und es gibt keinen temporären Akkumulator. Weitere Variationen sind ebenfalls möglich.
  • Danach wird eine Bestimmung vorgenommen, ob in dem zweiten Operanden zusätzliche Elemente vorhanden sind, die addiert werden sollen, ABFRAGE 538. Zum Beispiel ist Ei-2 <Anzahl der Elemente des zweiten Operanden. Wenn mehr Elemente des zweiten Operanden vorhanden sind, die addiert werden sollen, wird Ei zum Beispiel um zwei erhöht, SCHRITT 540, und die Verarbeitung wird mit SCHRITT 536 fortgesetzt.
  • Nach dem Addieren der Elemente aus dem zweiten Operanden wird das Ergebnis zu einem Wert in dem dritten Operanden addiert. Zum Beispiel wird eine Rückwärtsübertragaddition des Elements (Ey) des ersten Operanden (der die Summe der EAC-Addition von allen Elementen des zweiten Operanden ist) und eines Werts im Element (Ex) des dritten Operanden (OP3) ausgeführt (d. h. EAC ADD OP1(Ey) + OP3(Ex)), SCHRITT 542. Dies wird in 5C bildlich dargestellt.
  • Wie in 5C gezeigt, enthält der zweite Operand 550 eine Vielzahl von Elementen 552a bis 552n, und diese Elemente werden eines nach dem anderen zusammen mit dem Element in Wort 1 (562) des dritten Operanden 560 addiert. Das Ergebnis wird in Element 1 (572) des ersten Operanden 570 gestellt. Dies wird mathematisch durch die Gleichung Ey = Ex + die Summe von EI dargestellt, wobei i = 0 bis n ist, und die Addition eine Rückwärtsübertragaddition ist.
  • Oben wird eine Ausführungsform einer Anweisung „Vector Checksum” beschrieben, die eine Prüfsumme für die Elemente eines Vektorregisters ausführt, statt eine Lane-Arithmetik (Paralleldatenweg-Arithmetik) auszuführen. In einer Ausführungsform führt die Anweisung „Vector Checksum” Prüfsummen aus, indem eine Quersumme mit Rückwärtsübertragadditionen ausgeführt wird. In einem Beispiel nimmt die Anweisung „Vector Checksum” vier 4-Byte-Ganzzahlenelemente aus einem Vektorregister und addiert sie. Alle Überträge aus den Additionen werden zurückaddiert. Die 4-Byte-Summe wird zu einem 4-Byte-Element in einem anderen Operanden addiert und anschließend in noch einem weiteren Vektorregister gespeichert (z. B. das niedrigstwertige 4-Byte-Element eines Vektorregisters mit Nullen, die in den höchstwertigen Elementen des Vektorregisters gespeichert sind).
  • In einer weiteren Ausführungsform wird das weitere Vektorregister oder ein anderes Register nicht zum Speichern des Werts verwendet, sondern stattdessen wird eines der anderen Register (d. h. Operanden) als ein Akkumulator verwendet.
  • Die bereitgestellte Prüfsumme kann zur Wahrung der Datenintegrität verwendet werden. Eine Prüfsumme wird oft auf Daten angewendet und über einen verrauschten Kanal gesendet, um zu überprüfen, ob die empfangenen Daten korrekt sind. In diesem Beispiel, wie hierin beschrieben, wird die Prüfsumme verwendet, indem vier aufeinander folgende 4-Byte-Ganzzahlen addiert werden. Wenn ein Übertrag der Ganzzahlen-Rechenoperation vorhanden ist, werden der Übertrag und eine zusätzliche Eins zu der laufenden Summe addiert.
  • Obwohl hier Prüfsummen beschrieben werden, kann eine ähnliche Technik für andere Rückwärtsübertragadditionen verwendet werden.
  • Eine weitere Anweisung, die gemäß einem Aspekt bereitgestellt wird, ist eine Anweisung „Vector Galois Field Multiply Sum and Accumulate” (VGFMA), für die ein Beispiel in 6A dargestellt ist. In einem Beispiel enthält die Anweisung „Vector Galois Field Multiply Sum and Accumulate” 600 Operationscode-Felder 602a (z. B. Bit 0 bis 7), 602b (z. B. Bit 40 bis 47), die eine Operation „Vector Galois Field Multiply Sum and Accumulate” angeben; ein erstes Vektorregisterfeld 604 (z. B. Bit 8 bis 11), das zum Bezeichnen eines ersten Vektorregisters (V1) verwendet wird; ein zweites Vektorregisterfeld 606 (z. B. Bit 12 bis 15), das zum Bezeichnen eines zweiten Vektorregisters (V2) verwendet wird; ein drittes Vektorregisterfeld 608 (z. B. Bit 16 bis 19), das zum Bezeichnen eines dritten Vektorregisters (V3) verwendet wird; ein Maskenfeld (M5) 610 (z. B. Bit 20 bis 23); ein viertes Vektorregisterfeld 612 (z. B. Bit 32 bis 35), das zum Bezeichnen eines vierten Vektorregisters (V4) verwendet wird; und ein RXB-Feld 614 (z. B. Bit 36 bis 39). Jedes der Felder 604 bis 614 ist in einem Beispiel getrennt und unabhängig von dem oder den Operationscode-Feldern.
  • Ferner sind sie in einer Ausführungsform voneinander getrennt und unabhängig; allerdings kann in anderen Ausführungsformen mehr als ein Feld kombiniert werden.
  • In einem Beispiel geben ausgewählte Bits (z. B. die ersten zwei Bits) des Operationscodes, der durch das Operationscode-Feld 602a bezeichnet wird, die Länge der Anweisung an. In diesem bestimmten Beispiel geben die ausgewählten Bits an, dass die Länge drei Halbwörter beträgt. Ferner ist das Format der Anweisung eine Vektorregister- und Register-Operation mit einem erweiterten Operationscode-Feld. Jedes der Vektor-(V)Felder bezeichnet zusammen mit seinem entsprechenden durch RXB angegebenen Erweiterungsbit ein Vektorregister. Insbesondere wird für Vektorregister das Register angegeben, das den Operanden enthält, indem zum Beispiel ein 4-Bit-Feld des Registerfelds mit der Addition seines entsprechenden Registererweiterungsbits (RXB) als das höchstwertige Bit verwendet wird.
  • Das M5-Feld 610 hat zum Beispiel 4 Bits, 0 bis 3, und gibt eine Elementgrößen-(ES)Steuerung an. Die Elementgrößensteuerung gibt die Größe der Elemente in den Vektorregister-Operanden zwei und drei an; die Elemente in dem ersten und vierten Operanden haben die doppelte Größe wie diejenigen, die durch die ES-Steuerung angegeben werden. Zum Beispiel gibt ein Wert 0 in M5 Elemente in Byte-Größe an; 1 gibt zum Beispiel Halbwort an; 2 gibt Wort an; und 3 gibt Doppelwort an.
  • Bei der Ausführung einer Ausführungsform der Anweisung „Vector Galois Field Multiple Sum and Accumulate” wird jedes Element des zweiten Operanden in einem Galois-Feld (d. h. einem finiten Feld mit einer finiten Anzahl von Elementen) mit dem entsprechenden Element des dritten Operanden multipliziert. Das bedeutet, dass jedes Element des zweiten Operanden mit dem entsprechenden Element des dritten Operanden unter Verwendung einer übertraglosen Multiplikation multipliziert wird. Das Galois-Feld hat in einem Beispiel eine Ordnung von zwei. Diese Multiplikation ist einer standardmäßigen binären Multiplikation ähnlich, aber statt einer Addition des verschobenen Multiplikanden wird eine Exklusiv-ODER-VerknOpfung (XOR) verwendet. Für die sich daraus ergebenden geraden-ungeraden Paare von beispielsweise Produkten von doppelter Elementgröße wird untereinander eine Exklusiv-ODER-Verknüpfung und eine Exklusiv-ODER-Verknüpfung mit dem entsprechenden Element ausgeführt, z. B. einem Element doppelter Breite des vierten Operanden. Die Ergebnisse werden zum Beispiel in die Elemente doppelter Breite des ersten Operanden gestellt.
  • Bedingungscode: Der Code bleibt unverändert.
  • Programmausnahmen:
    • – Daten mit einem Datenausnahmecode (DXC) FE, „Vector Instruction”, der angibt, dass die Vektoreinrichtung nicht aktiviert ist
    • – Operation (wenn die Vektoreinrichtung für z/Architecture nicht Installiert ist)
    • – Spezifikation
    • – Transaktionseinschränkung
  • In einer weiteren Ausführungsform kann die Anweisung einen oder mehr Operanden weniger enthalten. Zum Beispiel ist der Wert für den eine Exklusiv-ODER-Verknüpfung ausgeführt werden soll, statt in einem vierten Operanden in dem ersten Operanden, der ebenfalls die Ergebnisse enthalten wird. Weitere Variationen sind ebenfalls möglich.
  • Weitere Details zu einer Ausführungsform einer Anweisung „Vector Galois Field Multiply Sum and Accumulate” werden unter Bezugnahme auf 6B und 6C beschrieben. In einem Beispiel stellt 6B eine Ausführungsform der Logik dar, die von einem Prozessor zum Ausführen einer Anweisung „Vector Galois Field Multiply Sum and Accumulate” ausgeführt wird, und 6C stellt ein Beispiel eines Blockschaubilds dar, das die Ausführung der Logik zeigt.
  • Unter Bezugnahme auf 6B werden zunächst gerade/ungerade Paare aus dem zweiten Operanden (OP2), dem dritten Operanden (OP3) und dem vierten Operanden (OP4) extrahiert, SCHRITT 630, und es wird eine übertraglose Multiplizier-Summier-Kumulier-Funktion ausgeführt, SCHRITT 632. Wenn zum Beispiel in einem Galois-Feld der Potenz 2 gearbeitet wird, ist die übertraglase Multiplikation eine Verschiebung und XOR (Exklusiv-ODER-Verknüpfung), die jeden Übertrag tatsächlich ignoriert. Das Ergebnis wird in den ersten Operanden gestellt (OPI), SCHRITT 634, und eine Bestimmung wird vorgenommen, ob noch mehr zu extrahierende Paare vorhanden sind, ABFRAGE 636. Wenn weitere Paare vorhanden sind, wird die Verarbeitung mit SCHRITT 630 fortgesetzt; andernfalls ist die Verarbeitung abgeschlossen, SCHRITT 638. In einem Beispiel ist die Elementgröße 631 eine Eingabe in die SCHRITTE 630 bis 634.
  • Weitere Details der übertraglosen Multiplizier-Summier-Kumulier-Funktion von SCHRITT 632 werden unter Bezugnahme auf 6C beschrieben. Wie gezeigt wird ein Paar von Operanden OP2H 652a, OP2L 652b aus dem zweiten Operanden 650 extrahiert. Ferner wird ein Operandenpaar OP3H 662a, OP3L 662b aus dem dritten Operanden 660 extrahiert, und ein Operandenpaar OP4H 672a und OP4L 672b wird aus dem vierten Operanden 670 extrahiert. Der Operand OP2H 652a wird mit einer übertraglosen Multiplikation mit dem Operanden OP3H 662a multipliziert, und ein Ergebnis H 680a wird bereitgestellt. Desgleichen wird der Operand OP2L 652b unter Verwendung einer übertraglosen Multiplikation mit dem Operanden OP3L 662b multipliziert, und ein Ergebnis L 680b wird bereitgestellt. Für das Ergebnis H 680a wird anschließend eine Exklusiv-ODER-Verknüpfung mit dem Ergebnis L 680b ausgeführt, und für dieses Ergebnis wird eine Exklusiv-ODER-Verknüpfung mit dem Operanden OP4H 672a und dem Operanden OP4L 672b ausgeführt, und das Ergebniswird in OP1H 690a, OP1L 690b gestellt.
  • Hierin wird eine Vektoranweisung beschrieben, die eine übertraglase Multiplizier-Operation ausführt und anschließend eine abschließende Exklusiv-ODER-Verknüpfung ausführt, um eine kumulierte Summe zu erstellen. Diese Technik kann für verschiedene Aspekte von Fehlererkennungscodes und Verschlüsselung verwendet werden, die Operationen in einem finiten Feld der Ordnung 2 ausführen.
  • In einem Beispiel wird durch die Anweisung eine übertraglose Multiplizier-Operation für eine Vielzahl von Elementen eines Vektorregisters ausgeführt, um eine Summe zu erhalten. Ferner führt die Anweisung eine endgültige Exklusiv-ODER-VerknOpfung für die Summe aus, um eine kumulierte Summe zu erstellen. Wenn sie ausgeführt wird, multipliziert die Anweisung in einem Galois-Feld entsprechende Elemente eines zweiten Vektors und eines dritten Vektors, und für den verschobenen Multiplikanden wird eine XOR-Verknüpfung vorgenommen. Alle Produkte doppelter Breite werden untereinander einer XOR-Verknüpfung unterzogen, und für das Ergebnis wird eine XOR-Verknüpfung mit einem entsprechenden Element doppelter Breite eines ersten Vektors vorgenommen. Das Ergebnis wird in dem ersten Vektorregister gespeichert. Zwar wurden oben Doppelwort-Elemente beschrieben, doch können auch Wortgrößen-Elemente mit anderen Elementgrößen verwendet werden. Die Anweisung kann mehrere verschiedene Elementgrößen bearbeiten.
  • Eine weitere Anweisung, die gemäß einem Aspekt bereitgestellt wird, ist eine Anweisung „Vector Generate Mask” (VGM), für die ein Beispiel unter Bezugnahme auf 7A beschrieben wird. In einem Beispiel enthält die Anweisung „Vector Generate Mask” 700 Operationscode-Felder 702a (z. B. Bit 0 bis 7), 702b (z. B. Bit 40 bis 47), die eine Operation zur Vektormaskenerzeugung angeben; ein erstes Vektorregisterfeld 704 (z. B. Bit 8 bis 11), das zum Bezeichnen eines ersten Vektorregisters (V1) verwendet wird; ein erstes Direktfeld I2 706 (z. B. Bit 16 bis 24), das zum Bezeichnen eines ersten Werts verwendet wird; ein zweites Direktfeld (I3) 708 (z. B. Bit 24 bis 32), das zum Bezeichnen eines zweiten Werts verwendet wird; ein Maskenfeld (M4) 710 (z. B. Bit 32 bis 35); und ein RXB-Feld 712 (z. B. Bit 36 bis 39). Jedes der Felder 704 bis 712 ist in einem Beispiel getrennt und unabhängig von dem oder den Operationscode-Feldern. Ferner sind sie in einer Ausführungsform voneinander getrennt und unabhängig; allerdings kann in anderen Ausführungsformen mehr als ein Feld kombiniert werden.
  • In einer weiteren Ausführungsform kann der erste Wert und/oder der zweite Wert zum Beispiel in einem Mehrzweckregister, im Arbeitsspeicher, in einem Element eines Vektorregisters (je nach Element unterschiedlich) oder aus einer Adressberechnung bereitgestellt werden. Sie kann als ein expliziter Operand der Anweisung oder als ein implizierter Operand oder eine Eingabe enthalten sein.
  • In einem Beispiel geben ausgewählte Bits (z. B. die ersten zwei Bits) des Operationscodes, der durch das Operationscode-Feld 702a bezeichnet wird, die Länge der Anweisung an. In diesem bestimmten Beispiel geben die ausgewählten Bits an, dass die Länge drei Halbwörter beträgt. Ferner ist das Format der Anweisung eine Vektorregister- und Direkt-Operation mit einem erweiterten Operationscode-Feld. Jedes der Vektor-(V)Felder bezeichnet zusammen mit seinem entsprechenden, durch RXB angegebenen Erweiterungsbit ein Vektorregister. Insbesondere wird für Vektorregister das Register angegeben, das den Operanden enthält, indem zum Beispiel ein Vier-Bit-Feld des Registerfelds mit der Addition seines entsprechenden Registererweiterungsbits (RXB) als das höchstwertige Bit verwendet wird.
  • Das M4-Feld gibt zum Beispiel eine Elementgrößen-Steuerung (ES) an. Die Elementgrößen-Steuerung gibt die Größe der Elemente in den Vektorregister-Operanden an. In einem Beispiel gibt Bit 0 des M4-Felds ein Byte an; Bit 1 gibt ein Halbwort an (z. B. 2 Bytes); Bit 2 gibt ein Wort an (z. B. 4 Bytes; auch als Vollwort bezeichnet); und Bit 3 gibt ein Doppelwort an.
  • Bei der Ausführung einer Ausführungsform der Anweisung „Vector Generate Mask” für jedes Element in dem ersten Operanden wird eine Bitmaske erzeugt. Die Maske enthält Bits, die auf Eins gesetzt sind, beginnend an der Bitposition, die z. B. durch den Ganzzahlenwert ohne Vorzeichen in I2 angegeben wird, und endend mit der Bitposition, die z. B. durch den Ganzzahlenwert ohne Vorzeichen in I3 angegeben wird. Alle anderen Bitpositionen werden auf Null gesetzt. In einem Beispiel wird nur die Anzahl von Bits, die zum Darstellen aller Bitpositionen für die angegebene Elementgröße benötigt werden, aus den Feldern I2 und I3 verwendet; alle anderen Bits werden ignoriert. Wenn die Bitposition im I2-Feld größer als die Bitposition im I3-Feld ist, erfolgt ein Umbruch des Bitbereichs an der maximalen Bitposition für die angegebene Elementgröße. Wenn zum Beispiel Elemente mit Byte-Größe angenommen werden, lautet die sich daraus ergebende Maske Xξ7Eξ oder Bξ01111110ξ, wenn I2 = 1 und I3 = 6 sind. Wenn jedoch I2 = 6 und I3 = 1 sind, lautet die sich daraus ergebende Maske Xξ81ξ oder bξ10000001ξ.
  • Bedingungscode: Der Code bleibt unverändert.
  • Programmausnahmen:
    • – Daten mit einem Datenausnahmecode (DXC) FE, „Vector Instruction”, der angibt, dass die Vektoreinrichtung nicht aktiviert ist
    • – Operation (wenn die Vektoreinrichtung für z/Architecture nicht installiert ist)
    • – Spezifikation
    • – Transaktianseinschränkung
  • Weitere Details zu einer Ausführungsform der Anweisung „Vector Generate Mask” werden unter Bezugnahme auf 7B und 7C beschrieben. Insbesondere stellt 7B eine Ausführungsform der Logik dar, die der Anweisung „Vector Generate Mask” zugehörig ist, die durch einen Prozessor ausgeführt wird, und 7C stellt ein Beispiel eines Blockschaubilds dar, das eine Ausführungsform der Ausführung der Anweisung „Vector Generate Mask” veranschaulicht.
  • Unter Bezugnahme auf 7B wird zunächst eine Maske für jedes Element in dem ersten Operanden erzeugt, SCHRITT 720. Dieser Schritt verwendet verschiedene Eingaben, einschließlich des Werts, der in dem zweiten Operandenfeld als die Anfangsposition (722) angegeben wird, und des Werts, der in dem dritten Operandenfeld als die Endposition (724) angegeben wird, und der Größe der Elemente, wie im M4-Feld (726) angegeben. Diese Eingaben werden zum Erzeugen der Maske und Auffüllen der Positionen eines ausgewählten Elements des ersten Operanden (Op1) verwendet, z. B. Element 0, SCHRITT 730. Zum Beispiel enthält Element 0 des ersten Operanden (Op1) eine Vielzahl von Positionen (z. B. Bitpositionen) und Positionen (z. B. Bits) von Element 0 des ersten Operanden werden beginnend an der Position, die durch den Ganzzahlwert ohne Vorzeichen in I2 angegeben wird, und endend an der Position, die durch den Ganzzahlwert ohne Vorzeichen in I3 angegeben wird, auf Eins gesetzt. Die anderen Bitpositionen werden auf Null gesetzt. Danach wird eine Bestimmung vorgenommen, ob weitere Elemente in dem ersten Operanden vorhanden sind, ABFRAGE 734. Wenn weitere Elemente vorhanden sind, wird die Verarbeitung mit SCHRITT 720 fortgesetzt. Andernfalls ist die Verarbeitung abgeschlossen, SCHRITT 736.
  • Das Erzeugen der Maske und das Auffüllen des ersten Operanden wird in 7C bildlich dargestellt. Wie gezeigt, werden Masken für jedes Element des ersten Operanden unter Verwendung der Eingaben (z. B. 722 bis 726) erzeugt 720, und die Ergebnisse des Erzeugens der Masken werden in Elementen des ersten Operanden 740 gespeichert.
  • Oben wird im Detail eine Anweisung zum Erzeugen von Bitmasken für jedes Element eines Vektors beschrieben. In einer Ausführungsform nimmt die Anweisung eine Anfangs-Bitposition und eine End-Bitposition und erstellt eine Bitmaske, die für jedes Element nachgebildet wird. Die Anweisung gibt einen Bitbereich an, und jedes Bit innerhalb des Bereichs wird für jedes Element des Vektorregisters auf Eins gesetzt, während andere Bits auf Null gesetzt werden.
  • In einer Ausführungsform stellt die Verwendung einer Anweisung zum Erzeugen von Bitmasken zum Beispiel Vorteile bereit gegenüber dem Laden von Bitmasken aus dem Arbeitsspeicher, durch das ein Cachespeicherbedarf für einen Anweisungsdatenstrom erhöht wird und abhängig davon, wie viele Masken benötigt werden, die Latenz in einer kritischen Schleife erhöhen könnte.
  • Noch eine weitere Anweisung, die gemäß einem Aspekt bereitgestellt wird, ist eine Anweisung „Vector Element Rotate and Insert Under Mask” (VERIM), für die ein Beispiel in 8A dargestellt ist. In einem Beispiel enthält die Anweisung „Vector Element Rotate and Insert Under Mask” 800 Operationscode-Felder 802a (z. B. Bit 0 bis 7), 802b (z. B. Bit 40 bis 47), die eine Operation „Vector Element Rotate and Insert Under Mask” angeben; ein erstes Vektorregisterfeld 804 (z. B. Bit 8 bis 11), das zum Bezeichnen eines ersten Vektorregisters (V1) verwendet wird; ein zweites Vektorregisterfeld 806 (z. B. Bit 12 bis 15), das zum Bezeichnen eines zweiten Vektorregisters (V2) verwendet wird; ein drittes Vektorregisterfeld 808 (z. B. Bit 16 bis 19), das zum Bezeichnen eines dritten Vektorregisters (V3) verwendet wird; ein Direktfeld (I4) 812 (z. B. Bit 24 bis 31), das z. B. eine binäre Ganzzahl ohne Vorzeichen enthält, die die Anzahl von Bits angibt, die in jedem Element zu drehen sind; ein Maskenfeld (M5) 814 (z. B. Bit 32 bis 35); und ein RXB-Feld 816 (z. B. Bit 36 bis 39). Jedes der Felder 804 bis 816 ist in einem Beispiel getrennt und unabhängig von dem oder den Operationscode-Feldern. Ferner sind sie in einer Ausführungsform voneinander getrennt und unabhängig; allerdings kann in anderen Ausführungsformen mehr als ein Feld kombiniert werden.
  • In einem Beispiel geben ausgewählte Bits (z. B. die ersten zwei Bits) des Operationscodes, der durch das Operationscode-Feld 802a bezeichnet wird, die Länge der Anweisung an. In diesem bestimmten Beispiel geben die ausgewählten Bits an, dass die Länge drei Halbwörter beträgt. Ferner ist das Format der Anweisung die Vektorregister- und Direkt-Operation mit einem erweiterten Operationscode-Feld. Jedes der Vektor-(V)Felder bezeichnet zusammen mit seinem entsprechenden, durch RXB angegebenen Erweiterungsbit ein Vektorregister. Insbesondere wird für Vektorregister das Register angegeben, das den Operanden enthält, indem zum Beispiel ein 4-Bit-Feld des Registerfelds mit der Addition seines entsprechenden Registererweiterungsbits (RXB) als das höchstwertige Bit verwendet wird.
  • Das M5-Feld gibt die Elementgrößen-Steuerung (ES) an. Die Elementgrößen-Steuerung gibt die Größe der Elemente in den Vektorregister-Operanden an. In einem Beispiel gibt Bit 0 des M5-Felds ein Byte an; Bit 1 gibt ein Halbwort an (z. B. 2 Bytes); Bit 2 gibt ein Wort an (z. B. 4 Bytes; auch als Vollwort bezeichnet); und Bit 3 gibt ein Doppelwort an.
  • Bei der Ausführung von einer Ausführungsform einer Anweisung „Vector Element Rotate and Insert Under Mask” wird jedes Element des zweiten Operanden um die Anzahl von Bits nach links gedreht, die durch den vierten Operanden angegeben werden. Jedes aus der höchstwertigen Bitposition des Elements heraus verschobene Bit tritt an der niedrigstwertigen Bitposition des Elements wieder ein. Der dritte Operand enthält eine Maske in jedem Element. Für jedes Bit in dem dritten Operanden, das Eins ist, ersetzt das entsprechende Bit der gedrehten Elemente in dem zweiten Operanden das entsprechende Bit in dem ersten Operanden. Das bedeutet, ein Wert des entsprechenden Bits der gedrehten Elemente ersetzt einen Wert des entsprechenden Bits in dem ersten Operanden. Für jedes Bit in dem dritten Operanden, das Null ist, bleibt das entsprechende Bit des ersten Operanden unverändert. Ausgenommen der Fall, in dem der erste Operand derselbe wie entweder der zweite oder dritte Operand ist, bleiben der zweite und dritte Operand unverändert.
  • Der vierte Operand ist z. B. eine binäre Ganzzahl ohne Vorzeichen, die die Anzahl von Bits angibt, um die jedes Element in dem zweiten Operanden gedreht werden soll. Wenn der Wert größer ist als die Anzahl von Bits in der angegebenen Elementgröße, wird der Wert auf die Anzahl von Bits in dem Element modulo-reduziert.
  • In einem Beispiel wird die in dem dritten Operanden enthaltene Maske unter Verwendung der hierin beschriebenen VGM-Anweisung erzeugt.
  • Bedingungscode: Der Code bleibt unverändert.
  • Programmausnahmen:
    • – Daten mit einem Datenausnahmecode (DXC) FE, „Vector Instruction”, der angibt, dass die Vektoreinrichtung nicht aktiviert ist
    • – Operation (wenn die Vektoreinrichtung für z/Architecture nicht installiert ist)
    • – Spezifikation
    • – Transaktionseinschränkung
  • Programmiernotizen:
    • 1. Eine Kombination aus VERIM und VGM kann verwendet werden, um die volle Funktionalität einer Anweisung „Rotate and Insert Selected Bits” zu erzielen.
    • 2. Obwohl die Bits des I4-Felds so definiert sind, dass sie eine binäre Ganzzahl ohne Vorzeichen enthalten, die die Anzahl von Bits angibt, um die jedes Element nach links gedreht werden soll, kann ein negativer Wert codiert werden, der tatsächlich einen Rechtsdrehungs-Betrag angibt.
  • Weitere Details zur Ausführung der Anweisung „Vector Element Rotate and Insert Under Mask” werden unter Bezugnahme auf 8B und 8C beschrieben. Insbesondere 8B stellt eine Ausführungsform der Logik dar, die der Anweisung „Vector Element Rotate and Insert Under Mask” zugehörig ist, die durch einen Prozessor ausgeführt wird, und 8C stellt ein Beispiel für die Ausführung der Anweisung „Vector Element Rotate and Insert Under Mask” bildlich dar.
  • Unter Bezugnahme auf 8B wird ein ausgewähltes Element des zweiten Operanden um einen in einem vierten Operanden angegebenen Betrag (820) gedreht, SCHRITT 830. Wenn der in dem vierten Operanden angegebene Wert größer ist als die Anzahl von Bits, die in der Elementgröße angegeben sind (822), wird dieser Wert auf die Anzahl der Bits in dem Element modulo-reduziert.
  • Nach dem Drehen der Bits des Elements wird ein Zusammenführen unter einer Maske ausgeführt, SCHRITT 832. Zum Beispiel ersetzt für jedes Bit in dem dritten Operanden (824), das 1 ist, das entsprechende Bit des gedrehten Elements in dem zweiten Operanden das entsprechende Bit in dem ersten Operanden.
  • Danach wird eine Bestimmung vorgenommen, ob weitere Elemente vorhanden sind, die zu drehen sind, ABFRAGE 834. Wenn weitere zu drehende Elemente vorhanden sind, wird die Verarbeitung mit SCHRITT 830 fortgesetzt. Andernfalls ist die Verarbeitung abgeschlossen, SCHRITT 836.
  • Unter Bezugnahme auf 8C werden Elemente des zweiten Operanden wie gezeigt auf der Grundlage von Eingaben 820 und 822 gedreht 830. Ferner wird eine Zusammenführung unter einer Maske 832 unter Verwendung einer Eingabe 824 ausgeführt.
  • Oben wird ein Beispiel einer Anweisung „Vector Element Rotate and Insert Under Mask” beschrieben. Diese Anweisung wird verwendet, um Elemente in einem ausgewählten Operanden um eine definierte Anzahl von Bits zu drehen. Obwohl Bits angegeben sind, können die Elemente in einer weiteren Anweisung um eine Anzahl von Positionen gedreht werden, und die Positionen können sich von Bits unterscheiden. Ferner kann die Anweisung mit verschiedenen Elementgrößen verwendet werden.
  • Zum Beispiel wird eine derartige Anweisung zum Auswählen bestimmter Bitbereiche aus Zahlen für tabellengestützte Suchen verwendet.
  • Während der Ausführung bestimmter Vektoranweisungen oder anderer SIMD-Operationen kann eine Ausnahme auftreten. Wenn eine Ausnahme bei einer SIMD-Operation auftritt, ist normalerweise nicht bekannt, welches Element des Vektorregisters die Ausnahme verursacht hat. Eine Software-Unterbrechungsroutine muss jedes Element extrahieren und die Berechnung in skalarem Modus erneut vornehmen, um zu bestimmen, welches Element bzw. welche Elemente die Ausnahme verursacht haben. Gemäß einem Aspekt, wenn die Maschine (z. B. ein Prozessor) eine Programmunterbrechung aufgrund einer Vektoroperation verarbeitet, wird jedoch ein Elementindex gemeldet, der z. B. das Element mit dem niedrigsten Index in dem Vektor angibt, das die Ausnahme verursacht hat. Die Software-Unterbrechungsroutine kann dann sofort zu dem fraglichen Element springen und alle erforderlichen oder gewünschten Aktionen ausführen.
  • Zum Beispiel wird in einer Ausführungsform, wenn eine Vektordatenausnahme eine Programmunterbrechung verursacht, ein Vektorausnahmecode (VXC) zum Beispiel in einer realen Arbeitsspeicher-Speicherposition gespeichert (z. B. Speicherposition 147 (Xξ93ξ), und Nullen werden z. B. in realen Arbeitsspeicher-Speicherpositionen 144 bis 146 (Xξ90ξ–Xξ92ξ) gespeichert. In einer weiteren Ausführungsform wird der VXC auch in ein Datenausnahmecode-(DXC)Feld eines Gleitkommasteuerregisters gestellt, wenn ein angegebenes Bit (z. B. Bit 45) eines bezeichneten Steuerregisters (z. B. CR0) 1 ist. Wenn Bit 45 des Steuerregisters 0 0 ist und Bit 46 des Steuerregisters 0 1 ist, sind der DXC des Gleitkommasteuerregisters und die Inhalte des Speichers in der Speicherposition 147 (Xξ93ξ) nicht vorhersehbar.
  • In einer Ausführungsform unterscheidet der VXC zwischen verschiedenen Typen von Vektorgleitkommaausnahmen und gibt an, welches Element die Ausnahme verursacht hat. In einem Beispiel, wie in 9A dargestellt, enthält ein Vektorausnahmecode 900 einen Vektorindex (VIX) 902 und einen Vektorunterbrechungscode (VIC) 904. In einem Beispiel enthält der Vektorindex die Bits 0 bis 3 des Vektorausnahmecodes, und sein Wert ist der Index des höchstwertigen Elements eines ausgewählten Vektorregisters, das die Ausnahme erkannt hat. Ferner ist der Vektorunterbrechungscode in den Bits 4 bis 7 des Vektorausnahmecodes enthalten und weist zum Beispiel die folgenden Werte auf:
    0001 IEEE Ungültige Operation
    0010 IEEE Division durch Null
    0011 IEEE Überlauf
    0100 IEEE Unterlauf
    0101 IEEE Inexakt
  • In einer weiteren Ausführungsform enthält der VXC nur den Vektorindex oder eine andere Positionsangabe eines Elements, das eine Ausnahme verursacht.
  • In einer Ausführungsform kann der VXC durch eine Anzahl von Anweisungen gesetzt werden, einschließlich zum Beispiel folgende Anweisungen: zum Beispiel Vector Floating Point (FP) Add, Vector FP Compare Scalar, Vector FP Compare Equal, Vector FP Compare High or Equal, Vector FP Convert From Fixed 64-Bit, Vector FP Convert From Logical 64-Bit, Vector FP Convert to Fixed 64-Bit, Vector FP Convert to Logical 64-Bit, Vector FP Divide, Vector Load FP Integer, Vector FP Load Lengthened, Vector FP Load Rounded, Vector FP Multiply, Vector FP Multiply and Add, Vector FP Multiple and Subtract, Vector FP Square Root und Vector FP Subtract sowie weitere Typen von Vektorgleitkommaanweisungen und/oder andere Anweisungen.
  • Weitere Details zum Setzen des Vektorausnahmecodes werden unter Bezugnahme auf 9B beschrieben. In einer Ausführungsform führt ein Prozessor der Datenverarbeitungsumgebung diese Logik aus.
  • Unter Bezugnahme auf 9B wird zunächst eine Anweisung ausgeführt, die ein Vektorregister bearbeitet, wie beispielweise eine der oben aufgelisteten Anweisungen oder eine andere Anweisung, SCHRITT 920. Während der Ausführung der Anweisung tritt eine Ausnahmebedingung auf, SCHRITT 922. In einem Beispiel verursacht diese Ausnahmebedingung eine Unterbrechung. Eine Bestimmung wird vorgenommen, welches Element des Vektorregisters die Ausnahme verursacht hat, SCHRITT 924. Zum Beispiel ermitteln eine oder mehrere Hardware-Einheiten des Prozessors, der die Berechnung für ein oder mehrere Elemente des Vektorregisters ausführt, die Ausnahme und stellen ein Signal bereit. Wenn zum Beispiel eine Vielzahl von Hardware-Einheiten eine Berechnung für eine Vielzahl von Elementen eines Vektorregisters parallel ausführt und während der Verarbeitung von einem oder mehreren der Elemente eine Ausnahme auftritt, signalisiert bzw. signalisieren die Hardware-Einheit(en), die die Verarbeitung ausführt bzw. ausführen, bei der die Ausnahme aufgetreten ist, eine Ausnahmebedingung sowie eine Angabe des Elements, das verarbeitet wurde. Wenn die Elemente des Vektors nacheinander ausgeführt werden und während der Verarbeitung eines Elements eine Ausnahme auftritt, gibt in einer weiteren Ausführungsform die Hardware an, welches Element in der Folge bearbeitet wurde, als die Ausnahme auftrat.
  • Auf der Grundlage der signalisierten Ausnahme wird der Vektorausnahmecode gesetzt, SCHRITT 926. Dazu gehören zum Beispiel das Angeben einer Position eines Elements in dem Vektorregister, das die Ausnahme verursacht hat, sowie der Unterbrechungscode.
  • Oben wird im Detail ein Vektorausnahmecode beschrieben, der eine leistungsfähige Vektorausnahmebearbeitung bereitstellt. In einem Beispiel, wenn eine Maschine eine Programmunterbrechung aufgrund einer Vektoroperation verarbeitet, wird ein Elementindex gemeldet, der ein Element mit dem niedrigsten Index in dem Vektorregister angibt, das die Ausnahme verursacht hat. In einem bestimmten Beispiel, wenn eine Vektoraddition ausgeführt wird und zwei Elemente pro Vektorregister vorhanden sind, die A0 + B0 und A1 + B1 bereitstellen, und ein inexaktes Ergebnis für A0 + B0, aber nicht für A1 + B1 erhalten wird, wird VIX auf 0 gesetzt und VIC wird gleich 0101 gesetzt. In einem weiteren Beispiel, wenn nicht A0 + B0 eine Ausnahme erhält, sondern A1 + B1 eine Ausnahme erhält, wird VIX gleich 1 (VIC = 0101) gesetzt. Wenn beide eine Ausnahme erhalten, wird VIX auf 0 gesetzt, weil dies die äußerste linke Indexposition ist und VIC = 0101 ist.
  • Oben werden im Detail verschiedene Vektoranweisungen sowie ein Vektorausnahmecode beschrieben, der die Position einer Ausnahme in einem Vektorregister angibt. In den bereitgestellten Ablaufplänen können einige Verarbeitungen als aufeinanderfolgend erscheinen; in einer oder mehreren Ausführungsformen werden Elemente jedoch parallel verarbeitet, und daher ist es möglicherweise nicht nötig zu prüfen, ob zum Beispiel weitere Elemente vorhanden sind, die zu verarbeiten sind. Viele weitere Variationen sind ebenfalls möglich.
  • In weiteren Ausführungsformen können Inhalte von einem oder mehreren Feldern einer Anweisung außerdem in einem Mehrzweckregister, im Arbeitsspeicher, in einem Element eines Vektorregisters (je nach Element unterschiedlich) oder aus einer Adressberechnung bereitgestellt werden. Sie können als ein expliziter Operand der Anweisung oder als ein implizierter Operand oder eine Eingabe enthalten sein. Ferner können eine oder mehrere Anweisungen weniger Operanden oder Eingaben verwenden, und stattdessen können ein oder mehrere Operanden für mehrere Operationen oder Schritte verwendet werden.
  • Des Weiteren kann statt einer Aufnahme einer Elementgrößen-Steuerung in einem Feld der Anweisung die Elementgrößen-Steuerung auf andere Weise bereitgestellt werden, wie hierin beschrieben. Außerdem kann die Elementgröße durch den Operationscode angegeben werden. Zum Beispiel gibt ein bestimmter Operationscode der Anweisung die Operation sowie die Größe der Elemente an usw.
  • Hierin werden Arbeitsspeicher, Hauptarbeitsspeicher, Speicher und Hauptspeicher austauschbar verwendet, sofern nichts anderes explizit oder durch den Kontext angegeben ist.
  • Wie einem Fachmann klar sein wird, können Aspekte als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte in Gestalt einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte kombiniert, auf die alle hierin als „Schaltung”, „Modul” oder „System” Bezug genommen werden kann. Des Weiteren können Aspekte die Form eines Computerprogrammprodukts annehmen, das in einem oder in mehreren computerlesbaren Medien mit einem darin ausgeführten computerlesbaren Programmcode ausgeführt ist.
  • Jede Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu spezielleren Beispielen (eine nicht erschöpfende Liste) für das computerlesbare Speichermedium würde Folgendes zählen; eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer CD-ROM, eine optische Speichereinheit, eine Magnetspeichereinheit oder jede geeignete Kombination des Vorgenannten. In dem Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung verwendet werden kann.
  • Unter folgender Bezugnahme auf 10 enthält in einem Beispiel ein Computerprogrammprodukt 1000 beispielsweise ein oder mehrere nicht-flüchtige computerlesbare Speichermedien 1002, um darauf computerlesbare Programmcodemittel oder Logik 1004 zu speichern, um einen oder mehrere Aspekte der vorliegenden Erfindung bereitzustellen und zu ermöglichen.
  • In einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung eines geeigneten Mediums übertragen werden, einschließlich drahtlos, drahtgebunden, über ein Lichtwellenleiterkabel, HF usw. oder eine geeignete Kombination des Vorgenannten, er ist aber nicht darauf beschränkt.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache wie JAVA, Smalltalk, C++ oder dergleichen und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C”, Assembler oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters).
  • Aspekte werden hierin unter Bezugnahme auf Ablaufplan-Veranschaulichungen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß einer oder mehreren Ausführungsformen beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, einschließlich Anweisungen, die die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen.
  • Die Computerprogrammanweisungen können auch auf einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen Vorrichtung, die programmierbare Daten ausführt, oder anderen Einheiten zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. Es ist ebenfalls anzumerken, dass in einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge auftreten können als in den Figuren angegeben. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block in den Blockschaubildern und/oder in der Veranschaulichung des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder der Veranschaulichung des Ablaufplans durch spezielle Systeme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden können.
  • Zusätzlich zu Vorgenanntem können ein oder mehrere Aspekte durch einen Dienstanbieter bereitgestellt, angeboten, eingesetzt, verwaltet, gewartet werden usw., der eine Verwaltung von Umgebungen von Kunden anbietet. Zum Beispiel kann der Dienstanbieter Computercode und/oder eine Computer-Infrastruktur erstellen, pflegen, unterstützen usw., die einen oder mehrere Aspekte für einen oder mehrere Kunden ausführen. Im Gegenzug kann der Dienstanbieter zum Beispiel eine Bezahlung von dem Kunden unter einem Abonnement und/oder einer Gebührenvereinbarung erhalten. Zusätzlich oder alternativ kann der Dienstanbieter eine Bezahlung aus dem Verkauf von Werbeinhalten an einen oder mehrere Fremdanbieter erhalten.
  • In einem Aspekt kann eine Anwendung zum Ausführen von einem oder mehreren Aspekten verwendet werden. Zum Beispiel weist die Verwendung einer Anwendung ein Bereitstellen einer Computer-Infrastruktur auf, die fähig ist, einen oder mehrere Aspekte auszuführen.
  • Als weiterer Aspekt kann eine Datenverarbeitungs-Infrastruktur verwendet werden, die ein Integrieren von computerlesbarem Code in ein Datenverarbeitungssystem aufweist, in dem der Code in Kombination mit dem Datenverarbeitungssystem fähig ist, einen oder mehrere Aspekte auszuführen.
  • Als noch ein weiterer Aspekt kann ein Prozess zum Integrieren einer Datenverarbeitungs-Infrastruktur bereitgestellt werden, die ein Integrieren von computerlesbarem Code in ein Computersystem aufweist. Das Computersystem weist ein computerlesbares Medium auf, wobei das Computer-Medium einen oder mehrere Aspekte aufweist. Der Code in Kombination mit dem Computersystem ist fähig, einen oder mehrere Aspekte auszuführen.
  • Obwohl verschiedene Ausführungsformen oben beschrieben werden, sind dies nur Beispiele. Zum Beispiel können Datenverarbeitungsumgebungen von anderen Architekturen einen oder mehrere Aspekte verkörpern und nutzen. Ferner können Vektoren mit anderen Größen verwendet werden, und Änderungen an den Anweisungen können vorgenommen werden, ohne von dem einen Aspekt oder den mehreren Aspekten abzuweichen. Des Weiteren können Register verwendet werden, die keine Vektorregister sind. Außerdem kann in weiteren Ausführungsformen ein Vektoroperand eine Arbeitsspeicher-Speicherposition statt eines Vektorregisters sein. Weitere Variationen sind ebenfalls möglich.
  • Ferner können weitere Typen von Datenverarbeitungsumgebungen von einem oder mehreren Aspekten profitieren. Zum Beispiel ist ein Datenverarbeitungssystem verwendbar, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, das mindestens zwei Prozessoren enthält, die direkt oder indirekt über einen Systembus mit Arbeitsspeicherelementen verbunden sind. Die Arbeitsspeicherelemente enthalten zum Beispiel einen lokalen Arbeitsspeicher, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und einen Cache-Arbeitsspeicher, die eine vorübergehende Speicherung von mindestens einigem Programmcode bereitstellen, um die Anzahl zu verringern, wie oft Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
  • Eingabe-/Ausgabe- oder E/A-Einheiten (einschließlich Tastaturen, Anzeigen, Zeigeeinheiten, DASD, Band, CDs, DVDs, Thumb-Drives und andere Speichermedien usw., die jedoch nicht darauf beschränkt sind) können entweder direkt oder über zwischengeschaltete E/A-Controller mit dem System verbunden werden. Netzwerkadapter können ebenfalls mit dem System verbunden werden, um zu ermöglichen, dass das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder entfernt angeordneten Druckern oder Speichereinheiten über dazwischenliegende private oder öffentliche Netzwerke verbunden werden kann. Modems, Kabelmodems oder Ethernet-Karten sind nur einige der verfügbaren Typen von Netzwerkadaptern.
  • Unter Bezugnahme auf 11 werden repräsentative Komponenten eines Host-Computersystems 5000 zum Umsetzen von einem oder mehreren Aspekten dargestellt. Der repräsentative Host-Computer 5000 weist eine oder mehrere CPUs 5001 auf, die in Datenübertragung mit einem Computer-Arbeitsspeicher (d. h. einem zentralen Speicher) 5002 stehen, sowie E/A-Schnittstellen zu Speichermedieneinheiten 5011 und Netzwerken 5010 für einen Datenaustausch mit anderen Computern oder SANs oder dergleichen. Die CPU 5001 ist mit einer Architektur mit einer architekturgebundenen Anweisungsgruppe und einer architekturgebundenen Funktionalität kompatibel. Die CPU 5001 kann eine dynamische Adressumsetzung (DAT) 5003 zum Umsetzen von Programmadressen (virtuellen Adressen) in reale Arbeitsspeicheradressen haben. Eine DAT enthält normalerweise einen Adressumsetzpuffer (TLB) 5007 zum Zwischenspeichern von Umsetzungen, sodass spätere Zugriffe auf den Block des Computer-Arbeitsspeichers 5002 die Verzögerung einer Adressumsetzung nicht erforderlich machen. Normalerweise wird ein Zwischenspeicher 5009 zwischen dem Computer-Arbeitsspeicher 5002 und dem Prozessor 5001 verwendet. Der Zwischenspeicher 5009 kann hierarchisch sein und einen großen Zwischenspeicher haben, der für mehr als eine CPU verfügbar ist, und kleinere, schnellere Zwischenspeicher (auf niedrigerer Ebene) zwischen dem großen Zwischenspeicher und jeder CPU. In einigen Umsetzungen werden die Zwischenspeicher der niedrigeren Ebene aufgeteilt, um separate Zwischenspeicher auf niedrigerer Ebene für Anweisungsabruf und Datenzugriffe bereitzustellen. In einer Ausführungsform wird eine Anweisung aus dem Arbeitsspeicher 5002 durch eine Anweisungsabrufeinheit 5004 über einen Zwischenspeicher 5009 abgerufen. Die Anweisung wird in einer Anweisungsentschlüsselungseinheit 5006 entschlüsselt und (in einigen Ausführungsformen zusammen mit anderen Anweisungen) an eine Anweisungsausführungseinheit oder Anweisungsausführungseinheiten 5008 weitergeleitet. Normalerweise werden mehrere Ausführungseinheiten 5008 verwendet, zum Beispiel eine arithmetische Ausführungseinheit, eine Gleitkomma-Ausführungseinheit und eine Verzweigungsanweisungs-Ausführungseinheit. Die Anweisung wird durch die Ausführungseinheit ausgeführt, die je nach Bedarf auf Operanden aus anweisungsspezifizierten Registern oder Arbeitsspeicher zugreift. Wenn auf einen Operanden vorn Arbeitsspeicher 5002 aus zugegriffen werden soll (dieser geladen oder gespeichert werden soll), übernimmt normalerweise eine Lade-/Speichereinheit 5005 die Bearbeitung des Zugriffs unter dem Steuerelement der Anweisung, die ausgeführt wird. Anweisungen können in Hardware-Schaltungen oder in internem Mikrocode (Firmware) oder durch eine Kombination von beidem ausgeführt werden.
  • Wie angemerkt, enthält ein Computersystem Informationen in lokalem (oder Haupt-)Speicher sowie Adressierungs-, Schutz- und Referenz- sowie Änderungsaufzeichnung. Einige Adressierungsaspekte enthalten das Format von Adressen, das Konzept von Adressräumen, die verschiedenen Typen von Adressen und die Art und Weise, wie ein Adresstyp in einen anderen Adresstyp umgesetzt wird. Einiger Hauptspeicher enthält dauerhaft zugewiesene Speicherorte. Der Hauptspeicher stellt dem System eine direkt adressierbare Datenspeicherung mit schnellem Zugriff bereit. Sowohl Daten als auch Programme müssen (von Eingabeeinheiten) in den Hauptspeicher geladen werden, bevor sie verarbeitet werden können.
  • Der Hauptspeicher kann einen oder mehrere kleinere Pufferspeicher mit schnellem Zugriff enthalten, die manchmal als Zwischenspeicher bezeichnet werden. Ein Zwischenspeicher ist normalerweise einer CPU oder einem E/A-Prozessor physisch zugehörig. Ausgenommen in Bezug auf die Leistung sind die Auswirkungen der physischen Konstruktion und der Verwendung von verschiedenen Speichermedien im Allgemeinen nicht durch das Programm beobachtbar.
  • Separate Zwischenspeicher können für Anweisungen und für Datenoperanden verwaltet werden. Informationen in einem Zwischenspeicher werden in zusammenhängenden Bytes auf einer integralen Grenze verwaltet, die als Zwischenspeicherblock oder Zwischenspeicherzeile (oder kurz als Zeile) bezeichnet wird. Ein Modell kann eine Anweisung EXTRACT CACHE ATTRIBUTE bereitstellen, die die Größe einer Zwischenspeicherzeile in Bytes zurückgibt. Ein Modell kann auch Anweisungen PREFETCH DATA und PREFETCH DATA RELATIVE LONG bereitstellen, was sich auf den Vorablesezugriff auf Speicher im Daten- oder Anweisungszwischenspeicher oder die Freigabe von Daten aus dem Zwischenspeicher auswirkt.
  • Der Speicher wird als lange horizontale Folge von Bits gesehen. Bei den meisten Operationen erfolgen Zugriffe auf den Speicher in einer Abfolge von links nach rechts. Die Folge von Bits ist in Einheiten von je acht Bits unterteilt. Eine Acht-Bit-Einheit wird als Byte bezeichnet, das der grundlegenden Baustein aller Informationsformate ist. Jeder Byte-Speicherort im Speicher wird durch eine eindeutige nicht negative Ganzzahl identifiziert, die die Adresse dieses Byte-Speicherorts bzw. einfach die Byte-Adresse ist. Aneinander angrenzende Byte-Speicherorte haben aufeinanderfolgende Adressen, beginnend mit 0 auf der linken Seite und fortgeführt in einer Abfolge von links nach rechts. Adressen sind binäre Ganzzahlen ohne Vorzeichen und sind 24, 31 oder 64 Bits.
  • Informationen werden zwischen dem Speicher und einer CPU oder einem Kanal-Subsystem mit jeweils einem Byte oder einer Gruppe von Bytes übertragen. Sofern zum Beispiel in der z/Achitecture nicht anders angegeben, wird eine Gruppe von Bytes im Speicher durch das höchstwertige Byte der Gruppe adressiert. Die Anzahl von Bytes in der Gruppe wird entweder implizit oder explizit durch die auszuführende Operation angegeben. Wenn eine Gruppe von Bytes in einer CPU-Operation verwendet wird, wird sie als Feld bezeichnet. Innerhalb jeder Gruppe von Bytes, beispielsweise in der z/Architecture, werden Bits in einer Abfolge von links nach rechts nummeriert. In der z/Architecture werden die Bits links außen manchmal als die „höchstwertigen” Bits und die Bits rechts außen als die „niedrigstwertigen” Bits bezeichnet. Bit-Nummern sind jedoch keine Speicheradressen. Nur Bytes können adressiert werden. Um einzelne Bits eines Bytes im Speicher bearbeiten zu können, wird auf das gesamte Byte zugegriffen. Die Bits in einem Byte sind von 0 bis 7 von links nach rechts durchnummeriert (z. B. in der z/Architecture). Die Bits in einer Adresse können von 8 bis 31 oder 40 bis 63 für 24-Bit-Adressen oder von 1 bis 31 oder 33 bis 63 für 31-Bit-Adressen nummeriert sein; sie sind von 0 bis 63 für 64-Bit-Adressen nummeriert. In einem beliebigen anderen Format fester Länge von mehreren Bytes sind die Bits, die das Format bilden, von 0 ausgehend fortlaufend nummeriert. Zum Zweck einer Fehlererkennung und vorzugsweise zur Korrektur können ein oder mehrere Prüfbits mit jedem Byte oder mit einer Gruppe von Bytes übertragen werden. Solche Prüfbits werden von der Maschine automatisch erzeugt und können durch das Programm nicht direkt gesteuert werden. Speicherkapazitäten werden in einer Anzahl von Bytes ausgedrückt. Wenn die Länge eines Speicheroperandenfelds durch den Operationscode einer Anweisung impliziert wird, gilt für das Feld eine feste Länge, die ein, zwei, vier, acht oder 16 Bytes betragen kann. Größere Felder können für einige Anweisungen impliziert werden. Wenn die Länge eines Speicheroperandenfelds nicht impliziert, sondern explizit angegeben wird, gilt für das Feld eine variable Länge. Operanden variabler Länge können in der Länge um Erhöhungen von jeweils einem Byte (oder bei einigen Anweisungen in Mehrfachen von zwei Bytes oder anderen Mehrfachen) variieren. Wenn Informationen in den Speicher gestellt werden, werden nur die Inhalte derjenigen Byte-Speicherorte ersetzt, die in dem angegebenen Feld enthalten sind, auch wenn die Breite des physischen Pfads zum Speicher größer als die Länge des Felds ist, das gespeichert wird.
  • Bestimmte Einheiten von Informationen müssen sich auf einer integralen Grenze im Speicher befinden. Eine Grenze wird für eine Einheit von Informationen als integral bezeichnet, wenn deren Speicheradresse ein Mehrfaches der Länge der Einheit in Bytes ist. Felder mit 2, 4, 8 und 16 Bytes auf einer integralen Grenze werden mit einem speziellen Namen bezeichnet. Ein Halbwort ist eine Gruppe von zwei aufeinanderfolgenden Bytes auf einer Zwei-Byte-Grenze und ist der grundlegende Baustein von Anweisungen. Ein Wort ist eine Gruppe von vier aufeinanderfolgenden Bytes auf einer Vier-Byte-Grenze. Ein Doppelwort ist eine Gruppe von acht aufeinanderfolgenden Bytes auf einer Acht-Byte-Grenze. Ein Vierfachwort ist eine Gruppe von 16 aufeinanderfolgenden Bytes auf einer 16-Byte-Grenze. Wenn Speicheradressen Halbwörter, Wörter, Doppelwörter und Vierfachwörter angeben, enthält die binäre Darstellung der Adresse jeweils ein, zwei, drei oder vier niedrigstwertige Null-Bits. Anweisungen müssen sich auf integralen Zwei-Byte-Grenzen befinden. Für die Speicheroperanden der meisten Anweisungen bestehen keine Anforderungen für eine Grenzausrichtung.
  • Bei Einheiten, die separate Zwischenspeicher für Anweisungen und Datenoperanden implementieren, kann eine wesentliche Verzögerung bemerkt werden, wenn das Programm in eine Zwischenspeicherzeile speichert, aus der anschließend Anweisungen abgerufen werden, ohne Berücksichtigung dessen, ob das Speichern die Anweisungen ändert, die anschließend abgerufen werden.
  • In einer Ausführungsform kann die Erfindung durch Software ausgeführt werden (die manchmal als lizenzierter interner Code, Firmware, Mikrocode, Millicode, Pikocode und dergleichen bezeichnet wird, von denen alle mit einem oder mehreren Aspekten konsistent wären). Unter Bezugnahme auf 11 kann auf Software-Programmcode, der einen oder mehrere Aspekte verkörpert, durch den Prozessor 5001 des Host-Systems 5000 von Langzeitspeicher-Medieneinheiten 5011 aus zugegriffen werden, wie beispielweise einem CD-ROM-Laufwerk, einem Bandlaufwerk oder einem Festplattenlaufwerk. Der Software-Programmcode kann auf einem beliebigen einer Vielfalt von bekannten Medien zur Verwendung mit einem Datenverarbeitungssystem verkörpert sein, wie beispielsweise einer Diskette, einem Festplattenlaufwerk oder einem CD-ROM. Der Code kann auf derartigen Medien verteilt werden oder kann an Benutzer vom Computer-Arbeitsspeicher 5002 oder einem Speicher eines Computersystems über ein Netzwerk 5010 an andere Computersysteme zur Verwendung durch Benutzer von derartigen anderen Systemen verteilt werden.
  • Der Software-Programmcode enthält ein Betriebssystem, das die Funktion und Interaktion der verschiedenen Computerkomponenten und von einem oder mehreren Anwendungsprogrammen steuert. Programmcode wird in der Regel von der Speichermedieneinheit 5011 auf den Computerspeicher 5002 mit relativ höherer Geschwindigkeit umgelagert, wo er für eine Verarbeitung durch den Prozessor 5001 verfügbar ist. Die Techniken und Verfahren zum Verkörpern von Software-Programmcode im Arbeitsspeicher, auf physischen Medien und/oder zum Verteilen von Software-Code über Netzwerke sind bekannt und werden hierin nicht weiter erörtert. Programmcode, der auf einem konkreten Medium erstellt und gespeichert wird (darunter elektronische Arbeitsspeichermodule (RAM), Flash-Arbeitsspeicher, CDs, DVDs, Magnetband und dergleichen, aber nicht darauf beschränkt), wird oft als „Computerprogrammprodukt” bezeichnet. Das Computerprogrammprodukt-Medium ist normalerweise durch eine Verarbeitungsschaltung für eine Ausführung durch die Verarbeitungsschaltung lesbar, die sich vorzugsweise in einem Computersystem befindet.
  • 12 veranschaulicht ein repräsentatives Workstation- oder Server-Hardwaresystem, in dem ein oder mehrere Aspekte ausgeführt werden können. Das System 5020 von 12 weist ein repräsentatives grundlegendes Computersystem 5021 auf, wie beispielsweise einen PC, eine Workstation oder einen Server einschließlich optionaler Peripherie-Einheiten. Das grundlegende Computersystem 5021 enthält einen oder mehrere Prozessoren 5026 und einen Bus, der zum Verbinden und Ermöglichen einer Datenübertragung zwischen dem bzw. den Prozessoren 5026 und den anderen Komponenten des Systems 5021 gemäß bekannten Techniken verwendet wird. Der Bus verbindet den Prozessor 5026 mit einem Arbeitsspeicher 5025 und einem Langzeitspeicher 5027, der ein Festplattenlaufwerk enthalten kann (darunter beliebige magnetische Medien, CD, DVD und Flash-Arbeitsspeicher) oder beispielsweise ein Bandlaufwerk. Das System 5021 könnte auch einen Benutzerschnittstellen-Adapter enthalten, der den Mikroprozessor 5026 über den Bus mit einer oder mehreren Schnittstelleneinheiten verbindet wie beispielsweise einer Tastatur 5024, einer Maus 5023, einem Drucker/Scanner 5030 und/oder weiteren Schnittstelleneinheiten, die jede Benutzerschnittstelleneinheit sein können, wie beispielsweise ein Berührungsbildschirm, ein Digitaleingabe-Pad usw. Der Bus verbindet auch eine Anzeigeeinheit 5022 wie beispielsweise einen LCD-Bildschirm oder Monitor mit dem Mikroprozessor 5026 über einen Anzeige-Adapter.
  • Das System 5021 kann mit anderen Computern oder Netzwerken von Computern mittels eines Netzwerkadapters, der datenübertragungsfähig 5028 ist, Daten mit einem Netzwerk 5029 austauschen. Beispielhafte Netzwerk-Adapter sind Datenübertragungskanäle, Token-Ring, Ethernet oder Modems. Alternativ kann das System 5021 unter Verwendung einer drahtlosen Schnittstelle Daten austauschen, wie beispielsweise einer CDPD-(Cellular Digital Packet Data)Karte. Das System 5021 kann weiteren derartigen Computern in einem lokalen Netzwerk (LAN) oder einem Weitverkehrsnetzwerk (WAN) zugehörig sein, oder das System 5021 kann ein Client in einer Client/Server-Anordnung mit einem weiteren Computer sein usw. Alle diese Konfigurationen sowie die entsprechende Datenübertragungs-Hardware und -Software sind im Fachgebiet allgemein bekannt.
  • 13 veranschaulicht ein Datenverarbeitungsnetzwerk 5040, in dem ein oder mehrere Aspekte ausgeführt werden können. Das Datenverarbeitungsnetzwerk 5040 kann eine Vielzahl von einzelnen Netzwerken enthalten, wie zum Beispiel ein drahtloses Netzwerk und ein drahtgebundenes Netzwerk, von denen jedes eine Vielzahl von einzelnen Workstations 5041, 5042, 5043, 5044 enthalten kann. Wie einem Fachmann klar sein wird, können zusätzlich ein oder mehrere LANs enthalten sein, wobei ein LAN eine Vielzahl von intelligenten Workstations aufweisen kann, die mit einem Host-Prozessor verbunden sind.
  • Unter weiterer Bezugnahme auf 13 können die Netzwerke auch Mainframe-Computer oder Server enthalten, wie beispielsweise Gateway-Computer (Client-Server 5046) oder Anwendungsserver (entfernt angeordneter Server 5048, der auf ein Datenrepository zugreifen kann und auf den auch direkt von einer Workstation 5045 zugegriffen werden kann). Ein Gateway-Computer 5046 dient als Eingangspunkt in jedes einzelne Netzwerk. Ein Gateway ist erforderlich, wenn ein Netzprotokoll mit einem anderen verbunden wird. Das Gateway 5046 kann vorzugsweise mittels einer Datenübertragungsverbindung mit einem anderen Netzwerk verbunden werden (zum Beispiel dem Internet 5047). Das Gateway 5046 kann auch direkt mit einer oder mehreren Workstations 5041, 5042, 5043, 5044 unter Verwendung einer Datenübertragungsverbindung verbunden werden. Der Gateway-Computer kann unter Verwendung eines IBM eServerTM System z-Servers umgesetzt werden, erhältlich von International Business Machines Corporation.
  • Unter gleichzeitiger Bezugnahme auf 12 und 13 kann auf Software-Programmcode, der einen oder mehrere Aspekte der vorliegenden Erfindung verkörpern kann, durch den Prozessor 5026 des Systems 5020 von Langzeitspeicher-Medien 5027 aus zugegriffen werden, wie beispielweise einem CD-ROM-Laufwerk oder einem Festplattenlaufwerk. Der Software-Programmcode kann auf einem beliebigen einer Vielfalt von bekannten Medien zur Verwendung mit einem Datenverarbeitungssystem verkörpert sein, wie beispielsweise einer Diskette, einem Festplattenlaufwerk oder einem CD-ROM. Der Code kann auf derartigen Medien verteilt werden oder kann an Benutzer 5050, 5051 von dem Arbeitsspeicher oder Speicher eines Computersystems über ein Netzwerk an andere Computersysteme zur Verwendung durch Benutzer von derartigen anderen Systemen verteilt werden.
  • Alternativ kann der Programmcode in dem Arbeitsspeicher 5025 verkörpert sein und ein Zugriff darauf durch den Prozessor 5026 unter Verwendung des Prozessorbusses erfolgen. Ein derartiger Programmcode enthält ein Betriebssystem, das die Funktion und Interaktion der verschiedenen Computerkomponenten und von einem oder mehreren Anwendungsprogrammen 5032 steuert. Programmcode wird in der Regel von Speichermedien 5027 auf einen Hochgeschwindigkeits-Arbeitsspeicher 5025 umgelagert, wo er für eine Verarbeitung durch den Prozessor 5026 verfügbar ist. Die Techniken und Verfahren zum Verkörpern von Software-Programmcode im Arbeitsspeicher, auf physischen Medien und/oder zum Verteilen von Software-Code über Netzwerke sind bekannt und werden hierin nicht weiter erörtert. Programmcode, der auf einem konkreten Medium erstellt und gespeichert wird (darunter elektronische Arbeitsspeichermodule (RAM), Flash-Arbeitsspeicher, CDs, DVDs, Magnetband und dergleichen, aber nicht darauf beschränkt), wird oft als „Computerprogrammprodukt” bezeichnet. Das Computerprogrammprodukt-Medium ist normalerweise durch eine Verarbeitungsschaltung für eine Ausführung durch die Verarbeitungsschaltung lesbar, die sich vorzugsweise in einem Computersystem befindet.
  • Der Zwischenspeicher, der am einfachsten für den Prozessor verfügbar ist (in der Regel schneller und kleiner als andere Zwischenspeicher des Prozessors) ist der niedrigste (L1 oder Ebene eins) Zwischenspeicher, und der Hauptspeicher (Hauptarbeitsspeicher) ist der Zwischenspeicher der höchsten Ebene (L3, wenn 3 Ebenen vorhanden sind). Der Zwischenspeicher der niedrigsten Ebene ist oft unterteilt in einen Anweisungs-Zwischenspeicher (I-Cache), der auszuführende Maschinenanweisungen enthält, und einen Daten-Zwischenspeicher (D-Cache), der Datenoperanden enthält.
  • Unter Bezugnahme auf 14 wird eine beispielhafte Prozessor-Ausführungsform für den Prozessor 5026 veranschaulicht. Normalerweise werden eine oder mehrere Ebenen des Zwischenspeichers 5053 verwendet, um Arbeitsspeicherblöcke zum Verbessern der Prozessorleistung zu puffern. Der Zwischenspeicher 5053 ist ein Hochgeschwindigkeitspuffer, der Zwischenspeicherzeilen mit Arbeitsspeicherdaten enthält, die wahrscheinlich verwendet werden. Typische Zwischenspeicherzeilen sind 64, 128 oder 256 Bytes von Arbeitsspeicherdaten. Separate Zwischenspeicher werden öfter zum Zwischenspeichern von Anweisungen als zum Zwischenspeichern von Daten verwendet. Eine Zwischenspeicher-Kohärenz (Synchronisierung von Kopien von Zeilen in Arbeitsspeicher und den Zwischenspeichern) wird oft durch verschiedene, im Fachgebiet bekannte „Snoop”-Algorithmen bereitgestellt. Der Haupt-Arbeitsspeicher 5025 eines Prozessorsystems wird oft als Zwischenspeicher bezeichnet. In einem Prozessorsystem mit 4 Ebenen des Zwischenspeichers 5053 wird der Hauptspeicher 5025 manchmal als der Ebene-5-(L5)Zwischenspeicher bezeichnet, da er normalerweise schneller ist und nur einen Teil des nicht flüchtigen Speichers (DASD, Band usw.) enthält, der für ein Computersystem verfügbar ist. Der Hauptspeicher 5025 fungiert als ”Zwischenspeicher” für Seiten mit Daten, die durch das Betriebssystem in den und aus dem Hauptspeicher 5025 umgelagert werden.
  • Ein Programmzähler (Anweisungszähler) 5061 verfolgt die Adresse der aktuellen Anweisung, die ausgeführt werden soll. Ein Programmzähler in einem z/Architecture-Prozessor beträgt 64 Bits und kann auf 31 oder 24 Bits abgeschnitten werden, um vorherige Adressierungsgrenzen zu unterstützen. Ein Programmzähler ist normalerweise in einem PSW (Programmstatuswort) eines Computers verkörpert, sodass es während eines Kontextwechsels bestehen bleibt. Daher kann ein in Bearbeitung befindliches Programm, das einen Programmzählerwert hat, zum Beispiel durch das Betriebssystem unterbrochen werden (Kontextwechsel von der Programmumgebung in die Betriebssystemumgebung). Das PSW des Programms verwaltet den Programmzählerwert, während das Programm nicht aktiv ist, und der Programmzähler (in dem PSW) des Betriebssystems wird verwendet, während das Betriebssystem ausgeführt wird. Normalerweise wird der Programmzähler um einen Betrag erhöht, der gleich der Anzahl von Bytes in der aktuellen Anweisung ist. RISC(Reduced Instruction Set Computing – Datenverarbeitung mit eingeschränktem Befehlsvorrat)Anweisungen haben normalerweise eine feste Länge, wogegen CISC(Complex Instruction Set Computing – Datenverarbeitung mit komplexem Befehlsvorrat)Anweisungen normalerweise eine variable Länge haben. Anweisungen der IBM z/Architecture sind CISC-Anweisungen mit einer Länge von 2, 4 oder 6 Byte. Der Programmzähler 5061 wird entweder durch eine Kontextwechseloperation oder zum Beispiel eine betroffene Verzweigungsoperation einer Verzweigungsanweisung modifiziert. In einer Kontextwechseloperaton wird der aktuelle Programmzählerwert in dem Programmstatuswort zusammen mit anderen Zustandsinformationen über das ausgeführte Pragramm gespeichert (wie beispielsweise Bedingungscodes), und ein neuer Programmzählerwert wird geladen, der auf eine Anweisung eines neuen Programmmoduls zeigt, die ausgeführt werden soll. Eine betroffene Verzweigungsoperation wird ausgeführt, um dem Programm zu gestatten, Entscheidungen zu treffen oder in dem Programm eine Schleife zu bilden, indem das Ergebnis der Verzweigungsanweisung in den Programmzähler 5061 geladen wird.
  • Normalerweise wird eine Anweisungsabrufeinheit 5055 verwendet, um Anweisungen für den Prozessor 5026 abzurufen. Die Abrufeinheit ruft entweder „nächste folgende Anweisungen”, Zielanweisungen von betroffenen Verzweigungsanweisungen oder erste Anweisungen eines Programms nach einem Kontextwechsel ab. Moderne Anweisungsabrufeinheiten verwenden Vorablesezugriffs-Techniken, um Anweisungen auf der Grundlage der Wahrscheinlichkeit, dass die vorab gelesenen Anweisungen verwendet werden könnten, spekulativ vorab zu lesen. Zum Beispiel kann eine Abrufeinheit 16 Bytes einer Anweisung abrufen, die die nächste folgende Anweisung und zusätzliche Bytes von weiteren folgenden Anweisungen enthalten.
  • Die abgerufenen Anweisungen werden dann durch den Prozessor 5026 ausgeführt. In einer Ausführungsform wird die abgerufene Anweisung bzw. werden die abgerufenen Anweisungen an eine Weiterleitungseinheit 5056 der Abrufeinheit übergeben. Die Weiterleitungseinheit entschlüsselt die Anweisung(en) und leitet Informationen über die verschlüsselte(n) Anweisung(en) an entsprechende Einheiten 5057, 5058, 5060 weiter. Eine Ausführungseinheit 5057 empfängt normalerweise Informationen über entschlüsselte arithmetische Anweisungen von der Anweisungsabrufeinheit 5055 und führt arithmetische Operationen an Operanden gemäß dem Operationscode der Anweisung aus. Operanden werden für die Ausführungseinheit 5057 vorzugsweise entweder vom Arbeitsspeicher 5025, von architekturgebundenen Registern 5059 oder von einem Direktfeld der Anweisung bereitgestellt, die ausgeführt wird. Wenn Ergebnisse der Ausführung gespeichert werden, werden sie entweder im Arbeitsspeicher 5025, in den Registern 5059 oder in einer anderen Maschinen-Hardware gespeichert (wie beispielsweise Steuerregistern, PSW-Registern und dergleichen).
  • Ein Prozessor 5026 hat normalerweise eine oder mehrere Einheiten 5057, 5058, 5060 zum Ausführen der Funktion der Anweisung. Unter Bezugnahme auf 15A kann eine Ausführungseinheit 5057 mit architekturgebundenen Allgemeinregistern 5059, einer Entschlüsselungs-/Weiterleitungseinheit 5056, eine Lade-/Speichereinheit 5060 und weiteren Prozessoreinheiten 5065 mittels einer Schnittstellenlogik 5071 in Datenaustausch stehen. Eine Ausführungseinheit 5057 kann mehrere Registerschaltungen 5067, 5068, 5069 verwenden, um Informationen zu verwalten, auf deren Grundlage die arithmetische Logikeinheit (ALU) 5066 ausgeführt wird. Die ALU führt arithmetische Operationen wie Addieren, Subtrahieren, Multiplizieren und Dividieren sowie logische Funktionen wie beispielsweise UND, ODER und Exklusiv-ODER (XOR), Drehen und Verschieben aus. Vorzugsweise unterstützt die ALU spezialisierte Operationen, die konstruktionsabhängig sind. Weitere Schaltungen können weitere architekturgebundene Einrichtungen 5072 bereitstellen, darunter zum Beispiel Bedingungscodes und Wiederherstellungs-Unterstützungslogik. Normalerweise wird das Ergebnis einer ALU-Operation in einer Ausgaberegisterschaltung 5070 verwaltet, die das Ergebnis zu einer Vielzahl von weiteren Verarbeitungsfunktionen weiterleiten kann. Es gibt viele Anordnungen von Prozessoreinheiten, die vorliegende Beschreibung ist nur dazu gedacht, für ein repräsentatives Verständnis einer Ausführungsform zu sorgen.
  • Eine Anweisung ADD würde zum Beispiel in einer Ausführungseinheit 5057 mit einer arithmetischen und logischen Funktionalität ausgeführt, wogegen eine Gleitkomma-Anweisung zum Beispiel in einer Gleitkomma-Ausführung mit einer speziellen Gleitkomma-Funktion ausgeführt würde. Vorzugsweise arbeitet eine Ausführungseinheit an Operanden, die von einer Anweisung identifiziert werden, indem eine durch einen Operationscode definierte Funktion an den Operanden ausgeführt wird. Zum Beispiel kann eine Anweisung ADD durch eine Ausführungseinheit 5057 an Operanden ausgeführt werden, die in zwei Registern 5059 zu finden sind, die durch Registerfelder der Anweisung identifiziert werden.
  • Die Ausführungseinheit 5057 führt die arithmetische Addition an zwei Operanden aus und speichert das Ergebnis in einem dritten Operanden, wobei der dritte Operand ein drittes Register oder eines der beiden Quellenregister sein kann. Die Ausführungseinheit verwendet vorzugsweise eine arithmetische Logikeinheit (ALU) 5066, die eine Vielfalt von logischen Funktionen ausführen kann wie beispielsweise Verschieben, Drehen, UND, ODER und XOR sowie eine Vielfalt von algebraischen Funktionen, darunter Addieren, Subtrahieren, Multiplizieren, Dividieren. Einige ALUs 5066 sind für skalare und einige für Gleitkomma-Operationen ausgelegt. Abhängig von der Architektur können Daten Big-Endian-Daten sein (bei denen das niedrigstwertige Byte an der höchsten Byte-Adresse steht) oder Little-Endian-Daten (bei denen das niedrigstwertige Byte an der niedrigsten Byte-Adresse steht). Die IBM z/Architecture ist Big Endian. Signierte Felder können architekturabhängig Vorzeichen und Größe, Einerkomplement oder Zweierkomplement sein. Eine Zweierkomplementzahl ist dadurch von Vorteil, dass die ALU keine Subtraktionsfunktion entwickeln muss, da entweder ein negativer Wert oder ein positiver Wert im Zweierkomplement nur eine Addition innerhalb der ALU erfordert. Zahlen werden im Allgemeinen in Kurzform beschrieben, wobei zum Beispiel ein 12-Bit-Feld eine Adresse eines 4.096-Byte-Blocks definiert und im Allgemeinen als ein 4-Kbyte-(Kilobyte)Block beschrieben wird.
  • Unter Bezugnahme auf 15B werden Verzweigungsanweisungsinformationen zum Ausführen einer Verzweigungsanweisung normalerweise an eine Verzweigungseinheit 5058 gesendet, die oft einen Verzweigungsvorhersage-Algorithmus verwendet, wie beispielsweise eine Verzweigungsverlaufstabelle 5082, um das Resultat der Verzweigung vorherzusagen, bevor weitere bedingte Operationen abgeschlossen sind. Das Ziel der aktuellen Verzweigungsanweisung wird abgerufen und spekulativ ausgeführt, bevor die bedingten Operationen abgeschlossen sind. Wenn die bedingten Operationen abgeschlossen sind, werden die spekulativ ausgeführten Verzweigungsanweisungen auf der Grundlage der Bedingungen der bedingten Operation und des vermuteten Resultats entweder abgeschlossen oder verworfen. Eine typische Verzweigungsanweisung kann Bedingungscodes prüfen und auf eine Zieladresse verzweigen, wenn die Bedingungscodes der Verzweigungsanforderung der Verzweigungsanweisung entsprechen, eine Zieladresse kann auf der Grundlage von mehreren Zahlen berechnet werden, darunter solchen, die zum Beispiel in Registerfeldern oder einem unmittelbaren Feld der Anweisung zu finden sind. Die Verzweigungseinheit 5058 kann eine ALU 5074 verwenden, die eine Vielzahl von Eingaberegisterschaltungen 5075, 5076, 5077 und eine Ausgaberegisterschaltung 5080 hat. Die Verzweigungseinheit 5058 kann zum Beispiel mit Allgemeinregistern 5059, der Entschlüsselungs-/Weiterleitungseinheit 5056 oder anderen Schaltungen 5073 Daten austauschen.
  • Die Ausführung einer Gruppe von Anweisungen kann aus einer Vielfalt von Gründen abgebrochen werden, darunter zum Beispiel ein Kontextwechsel, der durch ein Betriebssystem eingeleitet wird, eine Programmausnahme oder ein Fehler, die einen Kontextwechsel verursachen, ein E/A-Unterbrechungssignal, das einen Kontextwechsel verursacht oder eine Multithreading-Aktivität einer Vielzahl von Programmen (in einer Multithread-Umgebung). Vorzugsweise speichert eine Kontextwechselaktion Zustandsinformationen über ein aktuell ausführendes Programm und lädt dann Zustandsinformationen über ein weiteres Programm, das aufgerufen wird. Zustandsinformationen können zum Beispiel in Hardware-Registern oder im Arbeitsspeicher gespeichert werden. Statusinformationen weisen vorzugsweise einen Programmzählerwert auf, der auf eine nächste Anweisung, die ausgeführt werden soll, Bedingungscodes, Umsetzungsinformationen und auf architekturgebundenen Registerinhalt zeigt. Eine Kontextwechselaktivität kann durch Hardware-Schaltungen, Anwendungsprogramme, Betriebssystemprogramme oder Firmware-Code (Mikrocode, Pikocode oder lizenzierten internen Code (LIC)) alleine oder in Kombination ausgeführt werden.
  • Ein Prozessor greift gemäß anweisungsdefinierten Verfahren auf Operanden zu. Die Anweisung kann unter Verwendung des Werts eines Abschnitts der Anweisung einen unmittelbaren Operanden bereitstellen, kann ein oder mehrere Registerfelder bereitstellen, die explizit entweder auf Mehrzweckregister oder Sonderzweckregister (zum Beispiel Gleitkommaregister) zeigen. Die Anweisung kann implizite Register verwenden, die durch ein Operationscode-Feld als Operanden identifiziert werden. Die Anweisung kann Arbeitsspeicher-Speicherorte für Operanden verwenden. Ein Arbeitsspeicher-Speicherort eines Operanden kann durch ein Register, ein Direktfeld oder eine Kombination aus Registern und einem Direktfeld bereitgestellt werden, wie als Beispiel durch die lange Verschiebeeinrichtung der z/Architecture gezeigt, wobei die Anweisung zum Beispiel ein Basisregister, ein Indexregister und ein Direktfeld (Verschiebefeld) definiert, die zusammenaddiert werden, um die Adresse des Operanden im Arbeitsspeicher bereitzustellen. Ein Speicherort impliziert hierin normalerweise einen Speicherort im Hauptarbeitsspeicher (Hauptspeicher), es sei denn, es wird anderes angegeben.
  • Unter Bezugnahme auf 15C greift ein Prozessor unter Verwendung einer Lade-/Speichereinheit 5060 auf einen Speicher zu. Die Lade-/Speichereinheit 5060 kann eine Ladeoperation ausführen, indem sie die Adresse des Zieloperanden im Arbeitsspeicher 5053 erhält und den Operanden in ein Register 5059 oder einen anderen Speicherort des Arbeitsspeichers 5053 lädt, oder sie kann eine Speicheroperation ausführen, indem sie die Adresse des Zieloperanden im Arbeitsspeicher 5053 erhält und Daten, die von einem Register 5059 oder einem Speicherort eines anderen Arbeitsspeichers 5053 erhalten wurden, in dem Zieloperanden-Speicherort im Arbeitsspeicher 5053 speichert. Die Lade-/Speichereinheit 5060 kann spekulativ sein und auf Arbeitsspeicher in einer Folge zugreifen, die in Bezug auf die Anweisungsfolge nicht der Reihenfolge entspricht, doch muss die Lade-/Speichereinheit 5060 die äußere Erscheinung für Programme aufrechterhalten, dass die Anweisungen der Reihe nach ausgeführt wurden. Eine Lade-/Speichereinheit 5060 kann mit Allgemeinregistern 5059, einer Entschlüsselungs-/Weiterleitungseinheit 5056, einer Zwischenspeicher-/Arbeitsspeicher-Schnittstelle 5053 und weiteren Elementen 5083 Daten austauschen und weist verschiedene Registerschaltungen, ALUs 5085 und eine Steuerlogik 5090 auf, um Speicheradressen zu berechnen und eine Pipeline-Abfolge bereitzustellen, um die Operationen in Reihenfolge zu halten. Einige Operationen können sich außerhalb der Reihenfolge befinden, aber die Lade-/Speichereinheit stellt eine Funktionalität bereit, die nicht in der Reihenfolge ausgeführte Operationen für das Programm so aussehen lässt, als wären sie der Reihenfolge nach ausgeführt worden, wie im Fachgebiet bekannt ist.
  • Vorzugsweise werden Adressen, die ein Anwendungsprogramm „sieht”, oft als virtuelle Adressen bezeichnet. Virtuelle Adressen werden manchmal als „logische Adressen” und „effektive Adressen” bezeichnet. Diese virtuellen Adressen sind insofern virtuell, als sie auf einen physischen Arbeitsspeicher-Speicherplatz durch eine von einer Vielfalt von dynamischen Adressumsetzungs-(DAT)Technologien umadressiert werden, unter anderem durch einfaches Voranstellen eines Offset-Werts vor eine virtuelle Adresse, ein Umsetzen der virtuellen Adresse über eine oder mehrere Umsetzungstabellen, wobei die Umsetzungstabellen vorzugsweise mindestens eine Segmenttabelle und eine Seitentabelle alleine oder in Kombination aufweisen, wobei die Segmenttabelle einen Eintrag hat, der auf die Seitentabelle zeigt, sie sind aber nicht darauf beschränkt. In der z/Architecture wird eine Umsetzungsstruktur bereitgestellt, die eine Bereichsersttabelle, eine Bereichszweittabelle, eine Bereichsdritttabelle, eine Segmenttabelle und eine optionale Seitentabelle enthält. Die Leistung der Adressumsetzung wird oft durch die Verwendung eines Adressumsetzpufferspeichers (TLB) verbessert, der Einträge aufweist, die eine virtuelle Adresse einem zugehörigen physischen Arbeitsspeicher-Speicherplatz zuordnen. Die Einträge werden erstellt, wenn die DAT eine virtuelle Adresse unter Verwendung der Umsetzungstabellen umsetzt. Eine anschließende Verwendung der virtuellen Adresse kann dann statt der langsamen sequenziellen Zugriffe einer Umsetzungstabelle den Eintrag des schnellen TLB verwenden. TLB-Inhalt kann durch eine Vielfalt von Ersetzungsalgorithmen verwaltet werden, darunter LRU (Least Recently Used – am längsten nicht verwendet).
  • In dem Fall, in dem der Prozessor ein Prozessor eines Mehrfachprozessorsystems ist, ist jeder Prozessor dafür zuständig, gemeinsam genutzte Ressourcen wie E/A, Zwischenspeicher, TLBs und Arbeitsspeicher aus Kohärenzgründen ineinandergreifend zu halten. Normalerweise werden „Snoop”-Technologien zum Verwalten einer Zwischenspeicherkohärenz verwendet. In einer Snoop-Umgebung kann jede Zwischenspeicherzeile so markiert werden, als hätte sie irgendeinen eines gemeinsam genutzten Status, eines exklusiven Status, eines geänderten Status, eines ungültigen Status und dergleichen, um eine gemeinsame Nutzung zu erleichtern.
  • Die E/A-Einheiten 5054 (14) stellen dem Prozessor ein Mittel zum Verbinden mit peripheren Einheiten bereit, darunter zum Beispiel Band, Diskette, Drucker, Anzeigen und Netzwerke. E/A-Einheiten werden für das Computerprogramm oft als Software-Treiber dargestellt. In Mainframes wie dem System z von IBM® sind Kanaladapter und Adapter für offene Systeme E/A-Einheiten des Mainframe, die die Datenübertragung zwischen dem Betriebssystem und den peripheren Einheiten bereitstellen.
  • Ferner können weitere Typen von Datenverarbeitungsumgebungen von einem oder mehreren Aspekten profitieren. Als Beispiel kann eine Umgebung einen Emulator (z. B. Software oder andere Emulationsmechanismen) enthalten, durch den eine bestimmte Architektur (beispielsweise einschließlich Anweisungsausführung, in einer Architektur angeordnete Funktionen wie Adressübersetzung und in einer Architektur angeordnete Register) oder eine Untergruppe davon emuliert wird (z. B. auf einem nativen Computersystem mit einem Prozessor und Speicher). In einer derartigen Umgebung können eine oder mehrere Emulationsfunktionen des Emulators einen oder mehrere Aspekte der vorliegenden Erfindung emulieren, auch wenn ein Computer, der den Emulator ausführt, eine andere Architektur wie die emulierten Funktionen haben kann. Zum Beispiel wird im Emulationsmodus die spezifische emulierte Anweisung oder Operation entschlüsselt, und eine entsprechende Emulationsfunktion wird erstellt, um die einzelne Anweisung oder Operation umzusetzen.
  • In einer Emulationsumgebung enthält ein Host-Computer zum Beispiel einen Speicher zum Speichern von Anweisungen und Daten; eine Anweisungsabrufeinheit zum Abrufen von Anweisungen aus dem Speicher und zum optionalen Bereitstellen einer lokalen Pufferung für die abgerufene Anweisung; eine Anweisungsentschlüsselungseinheit zum Empfangen der abgerufenen Anweisungen und zum Ermitteln des Typs von Anweisungen, die abgerufen wurden; und eine Anweisungsausführungseinheit zum Ausführen der Anweisungen. Die Ausführung kann ein Laden von Daten aus dem Speicher in ein Register enthalten; ein Zurückspeichern der Daten aus dem Register in den Speicher; oder ein Ausführen eines arithmetischen oder logischen Operationstyps, wie durch die Entschlüsselungseinheit ermittelt, In einem Beispiel ist jede Einheit in Software umgesetzt. Zum Beispiel werden die Operationen, die durch die Einheiten ausgeführt werden als eine oder mehrere Subroutinen in der Emulator-Software umgesetzt.
  • Insbesondere werden in einem Mainframe architekturgebundene Maschinenanweisungen von Programmierern, heutzutage für gewöhnlich „C”-Programmierern, oft mittels einer Compiler-Anwendung verwendet. Diese in dem Speichermedium gespeicherten Anweisungen können nativ in einem z/Architecture IBM® Server oder alternativ in Maschinen ausgeführt werden, die weitere Architekturen ausführen. Sie können in den vorhandenen und in zukünftigen IBM® Mainframe-Servern und auf weiteren Maschinen von IBM® emuliert werden (z. B. Power SystemsTM Server und System x® Server). Sie können in Maschinen ausgeführt werden, die unter Linux unter Verwendung von Hardware, die von IBM®, Intel®, AMD und anderen hergestellt wird, auf einer großen Vielfalt von Maschinen ausgeführt werden. Abgesehen von einer Ausführung auf dieser Hardware unter einer z/Architecture kann Linux ebenso wie Maschinen verwendet werden, die eine Emulation durch Hercules, UMX oder FSI (Fundamental Software, Inc) verwenden, wobei die Ausführung im Allgemeinen in einem Emulationsmodus erfolgt. Im Emulationsmodus wird Emulations-Software durch einen nativen Prozessor ausgeführt, um die Architektur eines emulierten Prozessors zu emulieren.
  • Der native Prozessor führt normalerweise Emulations-Software aus, die entweder Firmware oder ein natives Betriebssystem aufweist, um eine Emulation des emulierten Prozessors auszuführen. Die Emulations-Software ist für ein Abrufen und Ausführen von Anweisungen der emulierten Prozessorarchitektur zuständig. Die Emulations-Software verwaltet einen emulierten Programmzähler, um Anweisungsgrenzen zu verfolgen. Die Emulations-Software kann gleichzeitig eine oder mehrere emulierte Maschinenanweisungen abrufen und die eine oder die mehreren emulierten Maschinenanweisungen in eine entsprechende Gruppe von nativen Maschinenanweisungen zur Ausführung durch den nativen Prozessor umwandeln. Diese umgewandelten Anweisungen können zwischengespeichert werden, sodass eine schnellere Umwandlung erreicht werden kann. Dennoch muss die Emulations-Software die Architekturregeln der emulierten Prozessorarchitektur beibehalten, um sicherzustellen, dass für den emulierten Prozessor geschriebene Betriebssysteme und Anwendungen richtig funktionieren. Ferner muss die Emulations-Software Ressourcen bereitstellen, die durch die emulierte Prozessorarchitektur identifiziert werden, darunter Steuerregister, Allgemeinregister, Gleitkommaregister, dynamische Adressumsetzungsfunktion einschließlich zum Beispiel Segmenttabellen und Seitentabellen, Unterbrechungsmechanismen, Kontextwechselmechanismen, Tageszeit-(TOD)Zeitgeber und architekturgebundene Schnittstellen zu E/A-Subsystemen, sodass ein Betriebssystem oder ein Anwendungsprogramm, die zur Ausführung auf dem emulierten Prozessor entwickelt wurden, auf dem nativen Prozessor mit der Emulations-Software laufen können, sie sind jedoch nicht darauf beschränkt.
  • Eine spezifische emulierte Anweisung wird entschlüsselt, und eine Subroutine wird aufgerufen, um die Funktion der bestimmten Anweisung auszuführen. Eine Emulations-Softwarefunktion, die eine Funktion eines emulierten Prozessors emuliert, wird zum Beispiel in einer „C”-Subroutine oder einem Treiber oder irgendeinem anderen Verfahren zum Bereitstellen eines Treibers für die spezifische Hardware implementiert, wie für einen Fachmann umsetzbar sein wird, nachdem er die Beschreibung von einer oder mehreren Ausführungsformen verstanden hat. Verschiedene Software- und Hardware-Emulationspatente, darunter, aber nicht darauf beschränkt, US-Patentschrift 5 551 013 mit dem Titel „Multiprocessor for Hardware Emulation” von Beausoleil et al.; und US-Patentschrift 6 009 261 mit dem Titel „Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor” von Scalzi et al; und US-Patentschrift 5 574 873 mit dem Titel „Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions” von Davidian et al; und US-Patentschrift 6 308 255 mit dem Titel „Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System” von Gorishek et al; und US-Patentschrift 6 463 582 mit dem Titel ”Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method” von Lethin et al; und US-Patentschrift 5 790 825 mit dem Titel „Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions” von Eric Traut, die jeweils durch Verweis hierin in ihrer Gesamtheit aufgenommen werden; und viele weitere veranschaulichen eine Vielfalt von bekannten Möglichkeiten, eine Emulation eines für eine andere Maschine architekturgebundenen Anweisungsformats für eine Zielmaschine zu erreichen, die für einen Fachmann verfügbar ist.
  • In 16 wird ein Beispiel eines emulierten Host-Computersystems 5092 bereitgestellt, das ein Host-Computersystem 5000' einer Host-Architektur emuliert. In dem emulierten Host-Computersystem 5092 ist der Host-Prozessor (CPU) 5091 ein emulierter Host-Prozessor (oder virtueller Host-Prozessor) und weist einen Emulationsprozessor 5093 auf, der eine andere native Anweisungsgruppenarchitektur hat als diejenige des Prozessors 5091 des Host-Computers 5000'. Das emulierte Host-Computersystem 5092 hat einen Arbeitsspeicher 5094, auf den vom Emulationsprozessor 5093 zugegriffen werden kann. In der Beispielausführungsform ist der Arbeitsspeicher 5094 in einen Abschnitt eines Host-Computerarbeitsspeichers 5096 und einen Abschnitt von Emulationsroutinen 5097 partitioniert. Der Host-Computerarbeitsspeicher 5096 ist für Programme des emulierten Host-Computers 5092 gemäß der Host-Computerarchitektur verfügbar. Der Emulationsprozessor 5093 führt native Anweisungen einer architekturgebundenen Anweisungsgruppe einer anderen Architektur als der des emulierten Prozessors 5091 aus, wobei die nativen Anweisungen vom Arbeitsspeicher 5097 der Emulationsroutinen erhalten werden, und kann auf eine Host-Anweisung zur Ausführung von einem Programm im Host-Computerarbeitsspeicher 5096 aus zugreifen, indem eine oder mehrere Anweisungen verwendet werden, die in einer Folge- und Zugriffs /Entschlüsselungsroutine erhalten werden, die die Host-Anweisung(en) entschlüsseln kann (können), auf die zugegriffen wurde, um eine native Anweisungs-Ausführungsroutine zum Emulieren der Funktion der Host-Anweisung zu bestimmen, auf die zugegriffen wurde. Weitere Einrichtungen, die für die Architektur des Host-Computersystems 5000' definiert werden, können durch architekturgebundene Einrichtungsroutinen emuliert werden, darunter zum Beispiel solche Einrichtungen wie Allgemeinregister, Steuerregister, dynamische Adressumsetzung und E/A-Subsystem-Unterstützung und Prozessor-Zwischenspeicher. Die Emulationsroutinen können auch Funktionen nutzen, die in dem Emulationsprozessor 5093 verfügbar sind (beispielsweise Allgemeinregister und dynamische Umsetzung von virtuellen Adressen), um die Leistung der Emulationsroutinen zu verbessern. Spezielle Hardware und Auslagerungs-Engines können ebenfalls bereitgestellt werden, um den Prozessor 5093 beim Emulieren der Funktion des Host-Computers 5000' zu unterstützen.
  • Die hierin verwendete Terminologie dient nur zum Zweck der Beschreibung von besonderen Ausführungsformen und soll die Erfindung keinesfalls einschränken. Wie hierin verwendet, sollen die Singularformen „ein”, „eine” und „der/die/das” auch die Pluralformen mit einschließen, es sei denn, der Kontext gibt eindeutig anderes vor. Es versteht sich des Weiteren, dass die Begriffe „weist auf” und/oder „aufweisend” bei Verwendung in dieser Patentschrift das Vorhandensein ausgewiesener Merkmale, Ganzzahlen, Schritte, Vorgänge, Elemente und/oder Komponenten angeben, das Vorhandensein oder die Hinzufügung von einem oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Vorgängen, Elementen, Komponenten und/oder Gruppen davon aber nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Handlungen und Entsprechungen aller Mittel oder Schritt-plus-Funktion-Elemente, in den nachstehenden Ansprüchen sollen, sofern vorhanden, alle Strukturen, Materialien oder Handlungen zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen enthalten, wie speziell beansprucht. Die Beschreibung von einem oder mehreren Aspekten wurde zum Zweck der Veranschaulichung und Beschreibung erstellt, sie soll aber keineswegs erschöpfend oder auf die offenbarte Form eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, ohne von dem Schutzumfang von einem oder mehreren Aspekten abzuweichen. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken von dem einem oder den mehreren Aspekten und die praktische Anwendung am besten zu erklären und es anderen Fachleuten zu ermöglichen, den einen oder die mehrere Aspekte für verschiedene Ausführungsformen mit verschiedenen Modifizierungen zu verstehen, die für die vorgesehene bestimmte Verwendung geeignet sind.

Claims (20)

  1. Computersystem für ein Ausführen einer Maschinenanweisung in einer Zentraleinheit, wobei das Computersystem aufweist: einen Arbeitsspeicher; und einen mit dem Arbeitsspeicher in Datenübertragung stehenden Prozessor, wobei das Computersystem so konfiguriert ist, dass es ein Verfahren ausführt, wobei das Verfahren aufweist: ein Erlangen einer Maschinenanweisung zur Ausführung durch einen Prozessor, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert wird, wobei die Maschinenanweisung aufweist: mindestens ein Operationscode-Feld zum Bereitstellen eines Operationscodes, wobei der Operationscode eine Operation „Vector Floating Point Test Data Class Immediate” identifiziert; ein erstes Registerfeld, das zum Angeben eines ersten Registers zu verwenden ist, wobei das erste Register einen ersten Operanden aufweist; und ein zweites Registerfeld, das zum Angeben eines zweiten Registers zu verwenden ist, wobei das zweite Register einen zweiten Operanden aufweist; und ein Ausführen der Maschinenanweisung, wobei das Ausführen aufweist: Bestimmen von Eigenschaften eines ausgewählten Elements des zweiten Operanden; Auswählen einer ausgewählten Dateneinheit, die die Eigenschaften des ausgewählten Elements darstellt, aus einer Eingabe in die Maschinenanweisung, wobei die Eingabe eine oder mehrere Dateneinheiten zum Darstellen von einer oder mehreren Eigenschaften enthält; Prüfen, ob die ausgewählte Dateneinheit auf einen bestimmten Wert gesetzt ist; und auf der Grundlage des Prüfens, Setzen eines Elements in dem ersten Operanden, das dem ausgewählten Element des zweiten Operanden entspricht, wobei das Setzen darauf beruht, ob die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist.
  2. Computersystem nach Anspruch 1, wobei der zweite Operand eine Vielzahl von Elementen aufweist, wobei das Bestimmen ein Bestimmen von Eigenschaften für jedes Element der Vielzahl von Elementen aufweist, und wobei das Setzen ein Setzen jedes Elements in dem ersten Operanden entsprechend jedem Element in dem zweiten Operanden aufweist auf der Grundlage, ob die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist.
  3. Computersystem nach Anspruch 1 wobei das Setzen ein Setzen des Elements in dem ersten Operanden auf Einsen aufweist auf der Grundlage des Prüfens, die angibt, dass die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist, und ein Setzen des Elements in dem ersten Operanden auf Null auf der Grundlage des Prüfens, die angibt, dass die ausgewählte Dateneinheit nicht auf den bestimmten Wert gesetzt ist.
  4. Computersystem nach Anspruch 1, wobei die Eingabe eine Vielzahl von Dateneinheiten aufweist, wobei jede Dateneinheit aus der Vielzahl von Dateneinheiten eine Klasse und ein Vorzeichen darstellt.
  5. Computersystem nach Anspruch 1, wobei die Maschinenanweisung ferner ein Feld aufweist, das die Eingabe enthält.
  6. Computersystem nach Anspruch 1, wobei die Maschinenanweisung ferner ein Erweiterungsfeld aufweist, das zum Angeben von einem oder mehreren Registern zu verwenden ist, und wobei das erste Registerfeld mit einem ersten Abschnitt des Erweiterungsfelds kombiniert wird, um das erste Register anzugeben, und das zweite Registerfeld mit einem zweiten Abschnitt des Erweiterungsfelds kombiniert wird, um das zweite Register anzugeben, und wobei die Maschinenanweisung ferner ein Maskenfeld aufweist, wobei das Maskenfeld angibt, ob ein oder mehrere Elemente des zweiten Operanden in die Bestimmung einzubeziehen sind, und wobei die Maschinenanweisung ferner ein weiteres Maskenfeld aufweist, wobei das weitere Maskenfeld eine Größe einer Gleitkommazahl in einem Element des zweiten Operanden angeben soll.
  7. Verfahren zum Ausführen einer Maschinenanweisung in einer Zentraleinheit, wobei das Verfahren aufweist: ein Erlangen einer Maschinenanweisung zur Ausführung durch einen Prozessor, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert wird, wobei die Maschinenanweisung aufweist: mindestens ein Operationscode-Feld zum Bereitstellen eines Operationscodes, wobei der Operationscode eine Operation „Vector Floating Point Test Data Class Immediate” identifiziert; ein erstes Registerfeld, das zum Angeben eines ersten Registers zu verwenden ist, wobei das erste Register einen ersten Operanden aufweist; und ein zweites Registerfeld, das zum Angeben eines zweiten Registers zu verwenden ist, wobei das zweite Register einen zweiten Operanden aufweist; und ein Ausführen der Maschinenanweisung, wobei das Ausführen aufweist: Bestimmen von Eigenschaften eines ausgewählten Elements des zweiten Operanden; Auswählen einer ausgewählten Dateneinheit, die die Eigenschaften des ausgewählten Elements darstellt, aus einer Eingabe in die Maschinenanweisung, wobei die Eingabe eine oder mehrere Dateneinheiten zum Darstellen von einer oder mehreren Eigenschaften enthält Prüfen, ob die ausgewählte Dateneinheit auf einen bestimmten Wert gesetzt ist; und auf der Grundlage des Prüfens, Setzen eines Elements in dem ersten Operanden, das dem ausgewählten Element des zweiten Operanden entspricht, wobei das Setzen darauf beruht, ob die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist.
  8. Verfahren nach Anspruch 7 wobei das Setzen ein Setzen des Elements in dem ersten Operanden auf Einsen aufweist auf der Grundlage des Prüfens, die angibt, dass die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist, und ein Setzen des Elements in dem ersten Operanden auf Null auf der Grundlage des Prüfens, die angibt, dass die ausgewählte Dateneinheit nicht auf den bestimmten Wert gesetzt ist.
  9. Verfahren nach Anspruch 7, wobei die Maschinenanweisung ferner ein Erweiterungsfeld aufweist, das zum Angeben von einem oder mehreren Registern zu verwenden ist, und wobei das erste Registerfeld mit einem ersten Abschnitt des Erweiterungsfelds kombiniert wird, um das erste Register anzugeben, und das zweite Registerfeld mit einem zweiten Abschnitt des Erweiterungsfelds kombiniert wird, um das zweite Register anzugeben, und wobei die Maschinenanweisung ferner ein Maskenfeld aufweist, wobei das Maskenfeld angibt, ob ein oder mehrere Elemente des zweiten Operanden in die Bestimmung einzubeziehen sind, und wobei die Maschinenanweisung ferner ein weiteres Maskenfeld aufweist, wobei das weitere Maskenfeld eine Größe einer Gleitkommazahl in einem Element des zweiten Operanden angeben soll.
  10. Computerprogrammprodukt für ein Ausführen einer Maschinenanweisung in einer Zentraleinheit, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Anweisungen zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren auszuführen, das aufweist: ein Erlangen einer Maschinenanweisung zur Ausführung durch einen Prozessor, wobei die Maschinenanweisung zur Computerausführung gemäß einer Computerarchitektur definiert wird, wobei die Maschinenanweisung aufweist: mindestens ein Operationscode-Feld zum Bereitstellen eines Operationscodes, wobei der Operationscode eine Operation „Vector Floating Point Test Data Class Immediate” identifiziert; ein erstes Registerfeld, das zum Angeben eines ersten Registers zu verwenden ist, wobei das erste Register einen ersten Operanden aufweist; und ein zweites Registerfeld, das zum Angeben eines zweiten Registers zu verwenden ist, wobei das zweite Register einen zweiten Operanden aufweist; und ein Ausführen der Maschinenanweisung, wobei das Ausführen aufweist: Bestimmen von Eigenschaften eines ausgewählten Elements des zweiten Operanden; Auswählen einer ausgewählten Dateneinheit, die die Eigenschaften des ausgewählten Elements darstellt, aus einer Eingabe in die Maschinenanweisung, wobei die Eingabe eine oder mehrere Dateneinheiten zum Darstellen von einer oder mehreren Eigenschaften enthält Prüfen, ob die ausgewählte Dateneinheit auf einen bestimmten Wert gesetzt ist; und auf der Grundlage des Prüfens, Setzen eines Elements in dem ersten Operanden, das dem ausgewählten Element des zweiten Operanden entspricht, wobei das Setzen darauf beruht, ob die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist.
  11. Computerprogrammprodukt nach Anspruch 10, wobei der zweite Operand eine Vielzahl von Elementen aufweist, wobei das Bestimmen ein Bestimmen von Eigenschaften für jedes Element der Vielzahl von Elementen aufweist, und wobei das Setzen ein Setzen jedes Elements in dem ersten Operanden entsprechend jedem Element in dem zweiten Operanden aufweist auf der Grundlage, ob die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist.
  12. Computerprogrammprodukt nach Anspruch 10 wobei das Setzen ein Setzen des Elements in dem ersten Operanden auf Einsen aufweist auf der Grundlage des Prüfens, die angibt, dass die ausgewählte Dateneinheit auf den bestimmten Wert gesetzt ist, und ein Setzen des Elements in dem ersten Operanden auf Null auf der Grundlage des Prüfens, die angibt, dass die ausgewählte Dateneinheit nicht auf den bestimmten Wert gesetzt ist.
  13. Computerprogrammprodukt nach Anspruch 10, wobei die Eigenschaften eine Klasse und ein Vorzeichen aufweisen.
  14. Computerprogrammprodukt nach Anspruch 10, wobei die Eingabe eine Vielzahl von Dateneinheiten aufweist, wobei jede Dateneinheit aus der Vielzahl von Dateneinheiten eine Klasse und ein Vorzeichen darstellt.
  15. Computerprogrammprodukt nach Anspruch 14, wobei die Vielzahl von Dateneinheiten eine Vielzahl von Bits aufweist, und wobei jedes Bit eine Elementklasse aus einer Vielzahl von Elementklassen darstellt, wobei die Vielzahl der Elementklassen Null, normale Zahl, subnormale Zahl, Unendlichkeit, stille Nichtzahl und Signalisierungs-Nichtzahl aufweist, und wobei jedes Bit ein positives oder negatives Vorzeichen darstellt.
  16. Computerprogrammprodukt nach Anspruch 10, wobei die Maschinenanweisung ferner ein Feld aufweist, das die Eingabe enthält.
  17. Computerprogrammprodukt nach Anspruch 10, wobei die Maschinenanweisung ferner ein Erweiterungsfeld aufweist, das zum Angeben von einem oder mehreren Registern zu verwenden ist, und wobei das erste Registerfeld mit einem ersten Abschnitt des Erweiterungsfelds kombiniert wird, um das erste Register anzugeben, und das zweite Registerfeld mit einem zweiten Abschnitt des Erweiterungsfelds kombiniert wird, um das zweite Register anzugeben.
  18. Computerprogrammprodukt nach Anspruch 10, wobei die Maschinenanweisung ferner ein Maskenfeld aufweist, wobei das Maskenfeld angibt, ob ein oder mehrere Elemente des zweiten Operanden in die Bestimmung einzubeziehen sind.
  19. Computerprogrammprodukt nach Anspruch 10, wobei die Maschinenanweisung ferner ein weiteres Maskenfeld aufweist, wobei das weitere Maskenfeld eine Größe einer Gleitkommazahl in einem Element des zweiten Operanden angibt.
  20. Computerprogrammprodukt nach Anspruch 10, wobei das Ausführen ferner ein Setzen eines Bedingungscodes für die Maschinenanweisung aufweist, wobei der Bedingungscode das Setzen der Elemente des ersten Operanden zusammenfasst.
DE112014000252.6T 2013-01-23 2014-01-07 Anweisung "Vector floating point test data class immediate" Pending DE112014000252T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/748,477 US9471308B2 (en) 2013-01-23 2013-01-23 Vector floating point test data class immediate instruction
US13/748,477 2013-01-23
PCT/IB2014/058089 WO2014115047A1 (en) 2013-01-23 2014-01-07 Vector floating point test data class immediate instruction

Publications (1)

Publication Number Publication Date
DE112014000252T5 true DE112014000252T5 (de) 2015-10-01

Family

ID=51208695

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014000252.6T Pending DE112014000252T5 (de) 2013-01-23 2014-01-07 Anweisung "Vector floating point test data class immediate"

Country Status (7)

Country Link
US (4) US9471308B2 (de)
JP (1) JP6410238B2 (de)
CN (1) CN104956319B (de)
DE (1) DE112014000252T5 (de)
GB (1) GB2525356B (de)
TW (1) TWI614679B (de)
WO (1) WO2014115047A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095620A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved insert instructions
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9841997B2 (en) * 2015-06-25 2017-12-12 Intel Corporation Method and apparatus for execution mode selection
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
US10133691B2 (en) * 2016-06-23 2018-11-20 International Business Machines Corporation Synchronous input/output (I/O) cache line padding
US10235170B2 (en) 2016-09-30 2019-03-19 International Business Machines Corporation Decimal load immediate instruction
US11281607B2 (en) * 2020-01-30 2022-03-22 Red Hat, Inc. Paravirtualized cluster mode for legacy APICs
US11748098B2 (en) 2021-05-05 2023-09-05 Apple Inc. Adler assist instructions
CN115390770B (zh) * 2022-10-31 2023-03-21 上海亿铸智能科技有限公司 一种用于简化sram输出数据多路选择方法及***

Family Cites Families (171)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ZA805329B (en) 1979-09-08 1981-08-26 Massey Ferguson Perkins Ltd Valve seats
US4569016A (en) 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
JPS60103482A (ja) 1983-10-24 1985-06-07 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション ベクトル処理能力を有するデ−タ処理装置
JPS60136872A (ja) 1983-12-26 1985-07-20 Hitachi Ltd ベクトル処理装置
US5021945A (en) 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
JPH0731669B2 (ja) 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
JPS62267869A (ja) 1986-05-15 1987-11-20 Fujitsu Ltd ベクトル・プロセツサにおける演算例外時の処理方式
JPH01120638A (ja) 1987-11-04 1989-05-12 Nec Corp 情報処理装置
US5113521A (en) 1988-03-18 1992-05-12 Digital Equipment Corporation Method and apparatus for handling faults of vector instructions causing memory management exceptions
US5043867A (en) 1988-03-18 1991-08-27 Digital Equipment Corporation Exception reporting mechanism for a vector processor
JP2809710B2 (ja) 1989-06-19 1998-10-15 富士通株式会社 プログラム例外コード制御回路
US5974522A (en) 1990-01-24 1999-10-26 Cornell Research Foundation, Inc. Machine for processing interrupted out-of-order instructions
US5053986A (en) 1990-02-21 1991-10-01 Stardent Computer, Inc. Circuit for preservation of sign information in operations for comparison of the absolute value of operands
US5247524A (en) 1990-06-29 1993-09-21 Digital Equipment Corporation Method for generating a checksum
CA2045735A1 (en) 1990-06-29 1991-12-30 Richard Lee Sites Computer performance by eliminating branches
GB2263987B (en) 1992-02-06 1996-03-06 Intel Corp End bit markers for instruction decode
US5388233A (en) 1993-04-30 1995-02-07 Intel Corporation Method and apparatus for counting instruction types using bit masks and a programmable bit map
AU6629894A (en) 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5487159A (en) 1993-12-23 1996-01-23 Unisys Corporation System for processing shift, mask, and merge operations in one instruction
US5673407A (en) * 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
JP3672634B2 (ja) 1994-09-09 2005-07-20 株式会社ルネサステクノロジ データ処理装置
US5680338A (en) 1995-01-04 1997-10-21 International Business Machines Corporation Method and system for vector processing utilizing selected vector elements
US5537606A (en) * 1995-01-31 1996-07-16 International Business Machines Corporation Scalar pipeline replication for parallel vector element processing
US5825678A (en) 1995-03-31 1998-10-20 International Business Machines Corporation Method and apparatus for determining floating point data class
US5663952A (en) 1995-07-07 1997-09-02 Sun Microsystems, Inc. Checksum generation circuit and method
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5742840A (en) 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5701316A (en) 1995-08-31 1997-12-23 Unisys Corporation Method for generating an internet protocol suite checksum in a single macro instruction
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
JP2904099B2 (ja) 1996-02-19 1999-06-14 日本電気株式会社 コンパイル装置およびコンパイル方法
US5768168A (en) 1996-05-30 1998-06-16 Lg Semicon Co., Ltd. Universal galois field multiplier
GB9627069D0 (en) 1996-12-30 1997-02-19 Certicom Corp A method and apparatus for finite field multiplication
US5832235A (en) 1997-03-26 1998-11-03 Hewlett-Packard Co. System and method for pattern matching using checksums
US5884071A (en) 1997-03-31 1999-03-16 Intel Corporation Method and apparatus for decoding enhancement instructions using alias encodings
US5960012A (en) 1997-06-23 1999-09-28 Sun Microsystems, Inc. Checksum determination using parallel computations on multiple packed data elements
US5953240A (en) 1997-06-23 1999-09-14 Sun Microsystems, Inc. SIMD TCP/UDP checksumming in a CPU
US6088782A (en) 1997-07-10 2000-07-11 Motorola Inc. Method and apparatus for moving data in a parallel processor using source and destination vector registers
US6047304A (en) 1997-07-29 2000-04-04 Nortel Networks Corporation Method and apparatus for performing lane arithmetic to perform network processing
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6223320B1 (en) 1998-02-10 2001-04-24 International Business Machines Corporation Efficient CRC generation utilizing parallel table lookup operations
US6105129A (en) 1998-02-18 2000-08-15 Advanced Micro Devices, Inc. Converting register data from a first format type to a second format type if a second type instruction consumes data produced by a first type instruction
US6173393B1 (en) 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
EP1105792B1 (de) 1998-08-24 2010-05-05 MicroUnity Systems Engineering, Inc. System mit breiter operandenarchitektur und verfahren
US6038652A (en) 1998-09-30 2000-03-14 Intel Corporation Exception reporting on function generation in an SIMD processor
US6760837B1 (en) 1998-10-06 2004-07-06 Texas Instruments Incorporated Bit field processor
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
JP2000172520A (ja) 1998-12-04 2000-06-23 Fujitsu Ltd ガロア体演算プロセッサ
JP2000207387A (ja) 1999-01-20 2000-07-28 Toshiba Corp 演算装置及び暗号処理装置
JP2000259579A (ja) 1999-03-11 2000-09-22 Hitachi Ltd 半導体集積回路
US6324670B1 (en) 1999-03-24 2001-11-27 Novell, Inc. Checksum generator with minimum overflow
JP2000294960A (ja) 1999-04-09 2000-10-20 Nec Kofu Ltd 基板固定ピン付smtコネクタ
FR2796736B1 (fr) 1999-07-20 2001-11-30 St Microelectronics Sa Procede pour effectuer une multiplication avec accumulation dans un corps de galois
US6675292B2 (en) 1999-08-13 2004-01-06 Sun Microsystems, Inc. Exception handling for SIMD floating point-instructions using a floating point status register to report exceptions
EP1102163A3 (de) 1999-11-15 2005-06-29 Texas Instruments Incorporated MIkroprozessor mit verbesserter Befehlsatzarchitektur
US6760742B1 (en) 2000-02-18 2004-07-06 Texas Instruments Incorporated Multi-dimensional galois field multiplier
US6711602B1 (en) 2000-02-18 2004-03-23 Texas Instruments Incorporated Data processor with flexible multiply unit
US6701424B1 (en) 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
US7847803B1 (en) 2000-07-26 2010-12-07 Ati Technologies Ulc Method and apparatus for interleaved graphics processing
US6748522B1 (en) 2000-10-31 2004-06-08 International Business Machines Corporation Performance monitoring based on instruction sampling in a microprocessor
US6643821B2 (en) 2000-11-30 2003-11-04 Stmicroelectronics, Inc. Method and device for computing incremental checksums
US6848074B2 (en) 2001-06-21 2005-01-25 Arc International Method and apparatus for implementing a single cycle operation in a data processing system
US6839828B2 (en) 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US20030037085A1 (en) 2001-08-20 2003-02-20 Sandbote Sam B. Field processing unit
US20040054877A1 (en) 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7013321B2 (en) 2001-11-21 2006-03-14 Sun Microsystems, Inc. Methods and apparatus for performing parallel integer multiply accumulate operations
US7082452B2 (en) 2001-11-30 2006-07-25 Analog Devices, Inc. Galois field multiply/multiply-add/multiply accumulate
UA76007C2 (en) 2001-12-11 2006-06-15 Reaper for a combine harvester
US7373483B2 (en) 2002-04-02 2008-05-13 Ip-First, Llc Mechanism for extending the number of registers in a microprocessor
US7403964B2 (en) 2002-10-22 2008-07-22 Broadcom Corporation Galois field multiplier array for use within a finite field arithmetic unit
US7313583B2 (en) 2002-10-22 2007-12-25 Broadcom Corporation Galois field arithmetic unit for use within a processor
JP2004151981A (ja) 2002-10-30 2004-05-27 Mitsumi Electric Co Ltd 無線式入力システム及びそのシステムで用いられる送信装置、受信装置
US20090199075A1 (en) 2002-11-25 2009-08-06 Victor Demjanenko Array form reed-solomon implementation as an instruction set extension
JP3818263B2 (ja) 2003-01-28 2006-09-06 日本電気株式会社 Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法
US7139900B2 (en) 2003-06-23 2006-11-21 Intel Corporation Data packet arithmetic logic devices and methods
US7917734B2 (en) 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
US7275148B2 (en) 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
US7096399B2 (en) 2003-09-11 2006-08-22 Intel Corporation Monitoring packet content
US7383483B2 (en) 2003-12-11 2008-06-03 International Business Machines Corporation Data transfer error checking
US7493481B1 (en) 2004-05-17 2009-02-17 Netxen, Inc. Direct hardware processing of internal data structure fields
US7363574B1 (en) 2004-10-12 2008-04-22 Nortel Networks Limited Method and system for parallel CRC calculation
US20060106910A1 (en) 2004-11-16 2006-05-18 Analog Devices, Inc. Galois field polynomial multiplication
US7512647B2 (en) 2004-11-22 2009-03-31 Analog Devices, Inc. Condensed Galois field computing system
US7461117B2 (en) 2005-02-11 2008-12-02 International Business Machines Corporation Floating point unit with fused multiply add and method for calculating a result with a floating point unit
US20060230409A1 (en) 2005-04-07 2006-10-12 Matteo Frigo Multithreaded processor architecture with implicit granularity adaptation
WO2006121444A1 (en) 2005-05-10 2006-11-16 Telairity Semiconductor, Inc. Vector processor with special purpose registers and high speed memory access
FR2885711B1 (fr) 2005-05-12 2007-07-06 Atmel Corp Procede et materiel modulaire et aleatoire pour la reduction polynomiale
US7400271B2 (en) 2005-06-21 2008-07-15 International Characters, Inc. Method and apparatus for processing character streams
US7333917B2 (en) 2005-08-11 2008-02-19 The University Of North Carolina At Chapel Hill Novelty detection systems, methods and computer program products for real-time diagnostics/prognostics in complex physical systems
US7421566B2 (en) 2005-08-12 2008-09-02 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
US9436468B2 (en) 2005-11-22 2016-09-06 Intel Corporation Technique for setting a vector mask
US7480787B1 (en) 2006-01-27 2009-01-20 Sun Microsystems, Inc. Method and structure for pipelining of SIMD conditional moves
US7925957B2 (en) 2006-03-20 2011-04-12 Intel Corporation Validating data using processor instructions
US7624237B2 (en) 2006-05-03 2009-11-24 International Business Machines Corporation Compare, swap and store facility with no external serialization
US20080021943A1 (en) 2006-07-20 2008-01-24 Advanced Micro Devices, Inc. Equality comparator using propagates and generates
US7600104B2 (en) 2006-08-15 2009-10-06 Peter Neumann Method and system for parallel vector data processing of vector data having a number of data elements including a defined first bit-length
JP4374363B2 (ja) 2006-09-26 2009-12-02 Okiセミコンダクタ株式会社 ビットフィールド操作回路
US7624251B2 (en) 2006-11-01 2009-11-24 Apple Inc. Instructions for efficiently accessing unaligned partial vectors
US8346839B2 (en) 2007-03-30 2013-01-01 Intel Corporation Efficient advanced encryption standard (AES) datapath using hybrid rijndael S-box
US8560591B2 (en) * 2007-04-25 2013-10-15 International Business Machines Corporation Detection of potential need to use a larger data format in performing floating point operations
US8055886B2 (en) 2007-07-12 2011-11-08 Texas Instruments Incorporated Processor micro-architecture for compute, save or restore multiple registers and responsive to first instruction for repeated issue of second instruction
US9529592B2 (en) 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8112691B1 (en) 2008-03-25 2012-02-07 Oracle America, Inc. Method for efficient generation of a Fletcher checksum using a single SIMD pipeline
US8255443B2 (en) * 2008-06-03 2012-08-28 International Business Machines Corporation Execution unit with inline pseudorandom number generator
US8051226B2 (en) 2008-06-13 2011-11-01 Freescale Semiconductor, Inc. Circular buffer support in a single instruction multiple data (SIMD) data processor
US8340280B2 (en) 2008-06-13 2012-12-25 Intel Corporation Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
JP5268469B2 (ja) 2008-07-23 2013-08-21 株式会社東芝 高可用システム及び実行状態制御方法
US8793472B2 (en) 2008-08-15 2014-07-29 Apple Inc. Vector index instruction for generating a result vector with incremental values based on a start value and an increment value
US8271832B2 (en) 2008-08-15 2012-09-18 Apple Inc. Non-faulting and first-faulting instructions for processing vectors
US8175265B2 (en) 2008-09-02 2012-05-08 Apple Inc. Systems and methods for implementing block cipher algorithms on attacker-controlled systems
RU2409840C2 (ru) 2008-09-26 2011-01-20 Государственное образовательное учреждение высшего профессионального образования "Ставропольский военный институт связи ракетных войск" (СВИСРВ) Устройство для преобразования из полиномиальной системы классов вычетов в позиционный код
GB2464292A (en) 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
CN101430881B (zh) 2008-11-10 2013-04-17 华为技术有限公司 一种编码、解码、编解码方法、编解码***以及相关装置
US8280040B2 (en) 2009-02-04 2012-10-02 Globalfoundries Inc. Processor instructions for improved AES encryption and decryption
US8458444B2 (en) 2009-04-22 2013-06-04 Oracle America, Inc. Apparatus and method for handling dependency conditions between floating-point instructions
CN101901127B (zh) 2009-05-31 2012-07-25 国际商业机器公司 一种迦罗华域乘法器
GB2470782B (en) 2009-06-05 2014-10-22 Advanced Risc Mach Ltd A data processing apparatus and method for handling vector instructions
US8918623B2 (en) 2009-08-04 2014-12-23 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
US20110047358A1 (en) 2009-08-19 2011-02-24 International Business Machines Corporation In-Data Path Tracking of Floating Point Exceptions and Store-Based Exception Indication
CN102122241A (zh) 2010-01-08 2011-07-13 复旦大学 一种适用于素域和多项式域的模乘模除器
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
GB2478731B (en) 2010-03-15 2013-08-21 Advanced Risc Mach Ltd Operand size control
US8417961B2 (en) 2010-03-16 2013-04-09 Oracle International Corporation Apparatus and method for implementing instruction support for performing a cyclic redundancy check (CRC)
US8645669B2 (en) 2010-05-05 2014-02-04 International Business Machines Corporation Cracking destructively overlapping operands in variable length instructions
US8539472B2 (en) 2010-06-09 2013-09-17 Lear Corporation Method and system of updating shared memory
US20110314263A1 (en) 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8903882B2 (en) 2010-12-13 2014-12-02 International Business Machines Corporation Method and data processing unit for calculating at least one multiply-sum of two carry-less multiplications of two input operands, data processing program and computer program product
CN104951277B (zh) 2011-04-01 2017-11-21 英特尔公司 向量友好指令格式及其执行
KR101877347B1 (ko) * 2011-09-26 2018-07-12 인텔 코포레이션 벡터 로드-op/저장-op에 스트라이드 기능을 제공하는 명령어 및 로직
CN106502624B (zh) * 2011-11-30 2019-10-18 英特尔公司 用于提供向量横向多数表决功能的处理器、设备和处理***
US9665371B2 (en) * 2011-11-30 2017-05-30 Intel Corporation Providing vector horizontal compare functionality within a vector register
CN104011670B (zh) * 2011-12-22 2016-12-28 英特尔公司 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令
WO2013095599A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing a double blocked sum of absolute differences
CN104025020B (zh) * 2011-12-23 2017-06-13 英特尔公司 用于执行掩码位压缩的***、装置以及方法
CN104137054A (zh) * 2011-12-23 2014-11-05 英特尔公司 用于执行从索引值列表向掩码值的转换的***、装置和方法
CN104169867B (zh) 2011-12-23 2018-04-13 英特尔公司 用于执行掩码寄存器至向量寄存器的转换的***、装置和方法
CN104011662B (zh) * 2011-12-23 2017-05-10 英特尔公司 用于提供向量混合和置换功能的指令和逻辑
CN104094221B (zh) 2011-12-30 2017-09-05 英特尔公司 基于零的高效解压缩
US9459864B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9715383B2 (en) * 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9588762B2 (en) * 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
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
CN102819710B (zh) 2012-08-22 2014-11-12 西北工业大学 基于渗透测试的跨站点脚本漏洞检测方法
US9606961B2 (en) * 2012-10-30 2017-03-28 Intel Corporation Instruction and logic to provide vector compress and rotate functionality
US9256427B2 (en) * 2012-12-11 2016-02-09 International Business Machines Corporation Tracking multiple conditions in a general purpose register and instruction therefor
US9411589B2 (en) * 2012-12-11 2016-08-09 International Business Machines Corporation Branch-free condition evaluation
US9152419B2 (en) * 2012-12-18 2015-10-06 Intel Corporation Instruction set for supporting wide scalar pattern matches
US9411592B2 (en) * 2012-12-29 2016-08-09 Intel Corporation Vector address conflict resolution with vector population count functionality
US9411584B2 (en) * 2012-12-29 2016-08-09 Intel Corporation Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality
US9372692B2 (en) * 2012-12-29 2016-06-21 Intel Corporation Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9886277B2 (en) * 2013-03-15 2018-02-06 Intel Corporation Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources
US9513907B2 (en) * 2013-08-06 2016-12-06 Intel Corporation Methods, apparatus, instructions and logic to provide vector population count functionality
US9495155B2 (en) * 2013-08-06 2016-11-15 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
US9552205B2 (en) * 2013-09-27 2017-01-24 Intel Corporation Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions
US9436434B2 (en) 2014-03-14 2016-09-06 International Business Machines Corporation Checksum adder
EP3001307B1 (de) * 2014-09-25 2019-11-13 Intel Corporation Bit-Shuffle-Prozessoren, Verfahren, Systeme und Anweisungen
US10761852B2 (en) * 2015-09-30 2020-09-01 International Business Machines Corporation Extending data range addressing
US9870305B2 (en) * 2015-09-30 2018-01-16 International Business Machines Corporation Debugging of prefixed code
US9921841B2 (en) * 2016-02-24 2018-03-20 Intel Corporation System and method for executing an instruction to permute a mask

Also Published As

Publication number Publication date
US20190155602A1 (en) 2019-05-23
JP6410238B2 (ja) 2018-10-24
US20150095624A1 (en) 2015-04-02
US10203956B2 (en) 2019-02-12
US20140208077A1 (en) 2014-07-24
GB201514700D0 (en) 2015-09-30
GB2525356A (en) 2015-10-21
US10671389B2 (en) 2020-06-02
US9436467B2 (en) 2016-09-06
CN104956319A (zh) 2015-09-30
TW201443779A (zh) 2014-11-16
TWI614679B (zh) 2018-02-11
GB2525356B (en) 2016-03-23
US20160357557A1 (en) 2016-12-08
WO2014115047A1 (en) 2014-07-31
US9471308B2 (en) 2016-10-18
JP2016512627A (ja) 2016-04-28
CN104956319B (zh) 2018-03-27

Similar Documents

Publication Publication Date Title
DE112014000252T5 (de) Anweisung &#34;Vector floating point test data class immediate&#34;
DE112013005466T5 (de) Anweisung &#34;Vector generate mask&#34;
DE112013005500T5 (de) Anweisung zum Drehen und Einfügen eines Vektorelements unter einer Maske
DE112013001941B4 (de) Eingeschränkte Anweisungen in Transaktionsgebundener Ausführung
DE112014000329T5 (de) Anweisung zum Ausführen einer Operation zum Generieren einer pseudozufälligen Zahl
DE112013001442T5 (de) Kopieren von Zeichendaten, die ein Abschlusszeichen aufweisen, von einer Speicherposition zu einer anderen
DE112013001466T5 (de) Vergleichen von Gruppen von Zeichendaten, die Abschlusszeichen aufweisen
DE112014000845T5 (de) Anweisung zum Ausführen einer Seed-Operation für eine pseudozufällige Zahl
DE112017001804T5 (de) Vorrichtung und Verfahren für träge synchrone Seitentabellenaktualisierungen mit geringem Aufwand
DE102020126212A1 (de) Vorrichtungen, Verfahren und Systeme für Anweisungen eines Matrixoperationsbeschleunigers
DE102016006400A1 (de) Hardware-prozessoren und verfahren für eng-gekoppelte heterogene datenverarbeitung
DE112012007058T5 (de) Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
DE112013003743T5 (de) Beschleunigte spurübergreifende Vektorreduzierungsbefehle
DE112012007119T5 (de) Threadmigration-Unterstützung für Kerne unterschiedlicher Architektur
DE112013003079T5 (de) Anweisungen für Transaktionsbeginn/-ende
DE112013002040T5 (de) Transaktionsabbruchverarbeitung
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE112014006508T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen für Fliesskommaaddition mit drei Quellenoperanden
DE112015000203T5 (de) &#34;Compare and Delay&#34;-Befehle
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE102018001229A1 (de) Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
DE112013002956T5 (de) Vorabladen von Verzweigungsvorhersagen
DE112013003735B4 (de) Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung
DE102014109083A1 (de) Bilden von Anweisungsgruppen basierend auf der Optimierung von Anweisungen bei der Dekodierung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R084 Declaration of willingness to licence
R085 Willingness to licence withdrawn