DE69900980T2 - Verfahren und vorrichtung zur ausführung von verschiebungsoperationen mit gepackten daten - Google Patents

Verfahren und vorrichtung zur ausführung von verschiebungsoperationen mit gepackten daten

Info

Publication number
DE69900980T2
DE69900980T2 DE69900980T DE69900980T DE69900980T2 DE 69900980 T2 DE69900980 T2 DE 69900980T2 DE 69900980 T DE69900980 T DE 69900980T DE 69900980 T DE69900980 T DE 69900980T DE 69900980 T2 DE69900980 T2 DE 69900980T2
Authority
DE
Germany
Prior art keywords
input
mask
bit
gate
packed data
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.)
Expired - Lifetime
Application number
DE69900980T
Other languages
English (en)
Other versions
DE69900980D1 (de
Inventor
G. Lemay
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies North America 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 Infineon Technologies North America Corp filed Critical Infineon Technologies North America Corp
Application granted granted Critical
Publication of DE69900980D1 publication Critical patent/DE69900980D1/de
Publication of DE69900980T2 publication Critical patent/DE69900980T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Description

    HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung zur Durchführung von Verschiebungsoperationen an gepackten Daten. Moderne Mikrocomputer und Mikrocontroller stellen Daten mit einer Breite von 32 Bit, 64 Bit oder noch mehr bereit. In einer Vielzahl von Anwendungen haben die verarbeiteten Daten jedoch immer noch eine Breite von lediglich 8 Bit. Daher liefern die oben angegebenen, mit 32 Bit oder mehr arbeitenden Mikroprozessoren sogenannte Anweisungen für gepackte Daten. Diese Anweisungen für gepackte Daten behandeln den Inhalt eines 32 Bit- oder 64 Bit-Registers unterschiedlich je nach der Größe der Daten. Wenn beispielsweise die Datengröße gepackte Daten von 8 Bit angibt, wird ein 32 Bit-Wort in vier Datenteile zu 8 Bit bzw. ein 64 Bit-Wort wird in acht Datenteile zu 8 Bit aufgespaltet, wobei diese gewöhnlich unabhängig voneinander von einer Verarbeitungseinheit verarbeitet werden. Sofern die Datengröße gepackte Daten zu 16 Bit angibt, wird ein 32 Bit-Wort in zwei Datenteile von 16 Bit aufgespaltet usw. Die Verarbeitungseinheit umfasst im Allgemeinen die entsprechende Anzahl von unabhängigen Einheiten, um die jeweiligen Teile eines gepackten Wortes unabhängig voneinander zu verarbeiten. Die unabhängigen Teile des Ergebnisses eines solchen Prozesses werden dann - z. B. in einem anderen Register - wieder als gepackte Daten gespeichert.
  • US-A-5 666 298 beschreibt eine derartige Vorrichtung und das zugehörige Verfahren, um eine Verschiebungsoperation an gepackten Daten durchzuführen. Die Abb. 8 von US-A-5 666 298 zeigt eine Vielzahl von unabhängig arbeitenden Verschiebungseinheiten, um z. B. bis zu acht Verschiebungsoperationen unabhängig voneinander an einem gepackten Datenwort von 64 Bit durchzuführen. Diese Vielzahl von Einheiten erfordert einen bestimmten Umfang an Siliziumplatz, der in hoch integrierten Geräten nicht immer verfügbar ist.
  • EP-A-0 743 593 beschreibt ein Verfahren und eine Vorrichtung zur Replikation einer Sequenz von Datenbits in einer Rechneranweisung, um eine Datenfolge zu generieren, die nur aus einer Vielzahl der replizierten Datenbitsequenzen besteht. Dies wird in einem Registerspeicher durchgeführt, der eine vorher festgelegte Bitkapazität hat, welche von einer einzelnen Adresse aufgerufen werden kann. Das Verfahren umfasst die Identifikation einer Bitkette, die wenigstens eine Bitsequenz hat, wobei die Länge des ersten Bits kleiner ist als die vorher festgelegte Bitkapazität, weiterhin die Auswahl der Bitsequenz und die Replikation der ausgewählten Bitsequenz an sukzessiven Speicherzellen in dem Registerspeicher, um die Datenkette mit einer Bitlänge zu generieren, die der Bitkapazität entspricht. Verschiedene Operanden werden verwendet, um die Replikation einschließlich der Verschiebung der gepackten Daten durchzuführen.
  • EP-A-0 130 380 beschreibt einen Satz von Anweisungen, welche die Funktionen der Rotation, Verschiebung und Zusammenführung unter einer Maske sowie einen Mechanismus verwenden, um diese Funktionen in einem einzigen Rechnerzyklus durchzuführen. Der Mechanismus befähigt einen einzelnen Rechnerzyklus zu einer parallelen Verschiebung und Rotation bis zu einer vollständigen Rechnerwortbreite von 32 Bits. Die erzeugte Maske umfasst eine feste Anzahl von Bits in dem Anweisungsregister, und die Maskenerzeugungseinheit generiert nur eine einzelne Maske in Übereinstimmung damit.
  • US-A-5 729 482 beschreibt einen Umsetzer zur Verwendung in Mikroprozessoren, der die Operationen einer Verschiebung nach rechts, einer Verschiebung nach links und einer arithmetischen Verschiebung nach rechts durchführen kann, wobei das Vorzeichenbit eines verschobenen Datenworts in die freigemachten Bitpositionen, die sich durch die Verschiebung nach rechts ergeben, repliziert wird. Der Umsetzer enthält eine Rotationszähleinheit, eine Rotationseinheit, einen Maskendekodierer und eine Logikeinheit für Hochgeschwindigkeitsoperationen und belegt eine minimale Fläche in einem integrierten Schaltkreis. Der Maskendekodierer generiert Maskierungsbits, die 32 Bits umfassen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist daher ein Ziel der vorliegenden Erfindung, ein Verfahren und eine Vorrichtung bereitzustellen, die weniger Ressourcen als der vorherige Stand der Technik in Anspruch nehmen.
  • In Übereinstimmung mit einem Aspekt der vorliegenden Erfindung wird eine Vorrichtung zur Verschiebung von m Bit großen, gepackten Datenwörtern mit einer Vielzahl von aus 8 Bit bestehenden Bytes bereitgestellt, wobei diese eine Vielzahl von teilweisen Datenwörtern bilden und jedes teilweise Datenwort n Byte mit n > 1 hat und dem Typ der gepackten Daten entspricht. Die Vorrichtung umfasst: Dekodiermittel, um eine empfangene, gepackte Datenanweisung zu dekodieren und ein m Bit großes Datenwort als. Eingabe, einen Verschiebungskode als Eingabe und einen Kode für den Typ der gepackten Daten als Eingabe für das m Bit große Datenwort bereitzustellen; Verschiebungsmittel, um die gepackten Daten um eine vorher festgelegte Anzahl von Bits in Übereinstimmung mit dem als Eingabe dienenden Verschiebungskode zu verschieben; einen Maskengenerator, um eine Maske in Übereinstimmung mit dem als Eingabe dienenden Verschiebungskode zu erzeugen; und eine logische Einheit, um die erzeugte Maske mit dem verschobenen, m Bit großen, gepackten Datenwort zu kombinieren und individuell verschobene, teilweise Datenwörter zu erzeugen; dadurch gekennzeichnet, dass der Maskengenerator eine Vielzahl von Masken erzeugt, wobei jede Maske eine n Byte große Maske enthält, die mit der Größe des gepackten Datenworts verkettet ist, und der Maskengenerator Auswahlmittel enthält, um eine der Vielzahl von Masken in Übereinstimmung mit dem als Eingabe dienenden Kode für den Typ der gepackten Daten auszuwählen.
  • In Übereinstimmung mit einem anderen Aspekt der vorliegenden Erfindung wird ein Verfahren zur Verschiebung von m Bit großen, gepackten Datenwörtern mit einer Vielzahl von aus 8 Bit bestehenden Bytes bereitgestellt, wobei diese eine Vielzahl von teilweisen Datenwörtern bilden und jedes teilweise Datenwort n Byte mit n ≥ 1 hat und dem Typ der gepackten Daten entspricht. Das Verfahren umfasst folgende Schritte: Dekodierung einer empfangenen, gepackten Datenanweisung und Bereitstellung eines m Bit großen Datenwort als Eingabe, eines Verschiebungskodes als Eingabe und eines Kodes für den Typ der gepackten Daten als Eingabe für das m Bit große Datenwort; Verschiebung der gepackten Daten um eine vorher festgelegte Anzahl von Bits in Übereinstimmung mit dem als Eingabe dienenden Verschiebungskode; Erzeugung einer Maske in Übereinstimmung mit dem als Eingabe dienenden Verschiebungskode; und Kombination der erzeugten Maske mit dem verschobenen m Bit breiten, gepackten Datenwort, um individuell verschobene, teilweise Datenwörter zu erzeugen; dadurch gekennzeichnet, dass die erzeugte Maske eine Vielzahl von Masken umfasst, wobei jede Maske eine n Byte große Maske enthält, die mit der Größe des gepackten Datenworts verkettet ist, und dadurch, dass das Verfahren weiterhin die Auswahl einer der Vielzahl von Masken in Übereinstimmung mit dem als Eingabe dienenden Kode für den Typ der gepackten Daten umfasst.
  • Dieses Ziel wird durch eine Vorrichtung zur Verschiebung von gepackten Daten mit mehreren Bytes, die teilweise Daten mit n Byte bilden, erreicht, wobei n eine ganze Zahl größer als 1 ist. Die Vorrichtung umfasst einen Umsetzer zur Verschiebung der besagten, gepackten Daten um eine vorher festgelegte Anzahl von Bits, einen Maskengenerator zur Erzeugung einer mehrfachen Maske mit jeweils n Byte, wobei jede aus n Byte bestehende Maske den verschobenen teilweisen Daten entspricht, und eine logische Einheit zur logischen Kombination der besagten, mehrfachen Maske mit jeweils n Byte mit den besagten, gepackten Daten, um individuell verschobene, teilweise Daten zu erzeugen. Der Vorteil einer solchen Vorrichtung liegt darin, dass ein Ausgangsschieberegister, das für andere Zwecke in einem Mikrocontroller oder einem Mikroprozessor verwendet ist und daher bereits vorhanden ist, nicht neu konzipiert oder geändert werden muss. Es ist lediglich eine einfache Logikschaltung erforderlich, um die unterschiedlichen Aufgaben durchzuführen, die von den verschiedenen Typen von Verschiebungsanweisungen für die gepackten Daten erfordert werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Abb. 1 ist ein Blockdiagramm, das die wichtigsten Bestandteile der vorliegenden Erfindung zeigt.
  • Abb. 2 ist ein Blockdiagramm, das eine Ausführungsform des Maskengenerators gemäß Abb. 1 zeigt.
  • Abb. 3 ist eine Ausführungsform eines Byte- Maskengenerators gemäß Abb. 2.
  • Abb. 4 ist eine weitere Ausführungsform eines Byte-Maskengenerators gemäß Abb. 2.
  • Abb. 5 ist noch eine weitere Ausführungsform eines Byte-Maskengenerators gemäß Abb. 2.
  • Abb. 6 ist eine Ausführungsform der logischen Einheit gemäß Abb. 1.
  • Die Abb. 7-9 zeigen schematische Flussdiagramme der drei unterschiedlichen Anweisungen, die von einer Ausführungsform gemäß Abb. 1 in Kombination mit Abb. 6 durchgeführt werden.
  • KURZE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Die bevorzugte Ausführungsform wird als ein 32 Bit- Mikrokontroller erläutert, der in der Lage ist, unterschiedliche Verschiebungsoperationen an gepackten Daten durchzuführen. Somit haben gepackte Daten eine Breite von 32 Bit und können vier verkettete Bytes zu je acht Bit oder zwei verkettete Halbwörter mit je sechzehn Bit oder ein Wort zu zweiunddreißig Bit enthalten. Die vorliegende Erfindung ist selbstverständlich für jede Art von Prozessor anwendbar, der irgendeine Bitgröße wie beispielsweise 64 Bit, 128 Bit oder höher hat, bzw. ist sogar auf einem 16 Bit-Mikroprozessor anwendbar. In der gesamten folgenden Beschreibung wird der Begriff Byte für 8 Bit, der Begriff Halbwort für 16 Bit und der Begriff Wort für 32 Bit verwendet.
  • Um eine Verschiebungsoperation an gepackten Daten gemäß der vorliegenden Erfindung durchzuführen, umfasst ein Mikrocontroller im Allgemeinen einen Dekodierer, der entsprechende Steuersignale enthält, wobei diese die Durchführung einer spezifischen Anweisung für gepackten Daten veranlassen. Die Steuersignale geben beispielsweise ein spezifischen Register an, das die zu verschiebenden, gepackten Daten enthält, ein Zielregister zur Speicherung des Ergebnisses der jeweiligen Operation, mehrere Daten oder Quellen, die den Verschiebungstyp enthalten, zum Beispiels logisch oder arithmetisch, den Umfang der Verschiebung und die Richtung wie beispielsweise links oder rechts, und Steuerelemente, welche den Typ der gepackten Daten angeben (Byte, Halbwort usw.). Wenn eine Anweisung für gepackte Daten von dem Dekodierer dekodiert wird, führt die Zentralverarbeitungseinheit des Mikroprozessors/Mikrocontrollers an den von dem Dekodierer dekodierten Daten die entsprechende Verarbeitung der gepackten Daten durch. Da die Dekodierung und Verteilung von Steuer- und Datensignalen nicht Bestandteil der vorliegenden Erfindung sind und in vielerlei Weise durchgeführt werden können, zeigen die beigefügten Zeichnungen nur die relevanten Bestandteile der jeweiligen Durchführungseinheit eines 32 Bit- Mikrocontrollers.
  • Abb. 1 zeigt ein Ausgangsschieberegister 100, das den zentralen Bestandteil der Durchführungseinheit bildet, welche die Anweisung für die gepackten Daten durchführt. Das Ausgangsschieberegister 100 empfängt als Eingabe 32 Bit-Daten von dem Anschluss D und gibt als Ausgabe 32 Bit-Daten aus. Das Ausgangsschieberegister verschiebt das Datenwort um eine Anzahl von Positionen nach links oder nach rechts und bricht den überlaufenden Teil automatisch um. In einer anderen Ausführungsform kann das Ausgangsschieberegister nur nach links oder nach rechts verschieben. Durch die Umlauffunktion wird eine Verschiebung in die jeweilige andere Funktion durchgeführt. Das Ausgangsschieberegister 100 wird von wenigstens sechs Steuerleitungen gesteuert, deren Signale von einer Steuereinheit 300 erzeugt werden. Die Steuereinheit 300 erhält beispielsweise sechs Steuersignale S1-S6 von einem Anschluss S. Der Anschluss S hat sechs einzelne Anschlüsse, welche Steuersignale übertragen, mit denen der Umfang der Verschiebung sowie die Richtung der Verschiebung der jeweiligen Verschiebungsanweisung festgelegt werden, Die Größe kann beispielsweise ein Byte, ein Halbwort oder ein Wort sein. Weiterhin wird ein Maskengenerator 200 bereitgestellt, der ebenfalls mit den Anschlüssen S verbunden ist. Der Maskengenerator 200 erzeugt drei unterschiedliche 32 Bit-Masken, die einer Schalteinheit 400 zugeleitet werden, wobei diese von dem Anschluss W gesteuert wird. Der Anschluss W besteht beispielsweise aus zwei separaten, einzelnen Anschlüssen und überträgt Daten, welche die Größe der jeweiligen, an dem Anschluss D bereitgestellten Daten angeben. Die Schalteinheit 400 wählt einen der drei 32 Bit- Leitungssätze aus und verbindet sie mit einer logischen Einheit 500, wo der Ausgang des Maskengenerators 200 in logischer Form mit dem Ausgang des Ausgangsschieberegisters 100 kombiniert wird. Die logische Einheit 500 kann von einer Vielzahl von Steuerleitungen, die von dem Anschluss C kommen, gesteuert werden. Die logische Einheit 500 gibt ein 32 Bit-Wort als Ergebnis der Anweisung für die gepackten Daten aus, wobei diese Anweisung dem Anschluss R zugeleitet wird.
  • Um eine Anweisung für gepackte Daten durchzuführen, dekodiert der Dekodierer der Zentralverarbeitungseinheit eine entsprechende Anweisung für gepackte Daten, wobei die unterschiedlichen Parameter, die für die Anweisungen verwendet werden, getrennt werden. Der Dekodierer liefert Adresszeiger für die jeweiligen Datenregister, welche die in Abb. 1 gezeigte Durchführungseinheit bereitstellen, wobei beispielsweise ein 32 Bit- Datenwort zu den Anschlüssen D geleitet wird, weiterhin einen Verschiebungsbetrag um sechs Bits und ein Wort für die Verschiebungsrichtung, die den Wert und die Richtung der Verschiebung angeben, welche an die Anschlüsse S übertragen werden, und ein Datenelement von zwei Bit, das den Typ der gepackten Daten der Anweisung angibt, die den Anschlüssen W zugeleitet werden. Der Maskengenerator erzeugt eine Maske, so wie sie in Tabelle 1 dargestellt ist. Das werthöchste Bit S6 des Eingangs S gibt die Richtung der Verschiebung an, und die fünf niedrigeren Bits S5-S1 geben den Umfang der Verschiebung an. Die jeweiligen drei unterschiedlichen 32 Bit-Ausgaben sind in der Tabelle 1 dargestellt. Tabelle 1
  • Eine Verschiebung nach links wird durch das werthöchste Bit S6 des Eingangs S angezeigt, und der Betrag der Verschiebung, der durch die fünf niedrigeren Bits S5- S1 des Eingags S angezeigt wird, bestimmt die jeweiligen Maskenwörter. Beispielsweise zeigt die Zeile 3 der Tabelle 1 eine Verschiebung nach links um den Betrag von zwei Bitpositionen an. Daher würde die Wortausgabe eine Maske erzeugen, die aus 11111111111111111111111111111100 besteht. Die Halbwortausgabe erzeugt ein Ausgangswort, das aus 11111111111111001111111111111100 besteht. Schließlich würde die Byteausgabe eine Datenmaske erzeugen, die aus 11111100111111001111110011111100 besteht. Das Ausgangsschieberegister 100 verschiebt das eingehende Datenwort um den Betrag, der von den Daten, welche den Anschlüssen S zugeleitet werden, angegeben wird. Der Ausgang des Ausgangsschieberegisters 100 wird dann in logischer Form mit der Ausgabe des ausgewählten Ausgangs des Maskengenerators verbunden. Das folgende Beispiel zeigt, wie die Durchführungseinheit arbeitet, während sie eine logische Verschiebung an einem gepackten Datenwort von einem Byte durchführt. Es wird dabei angenommen, dass das Datenwort an den Anschlüssen D ein Datenwort überträgt, das durch "11110110011110011011111011101101" dargestellt wird. Die sechs Bits an den Anschlüssen S sind beispielsweise 00010D. Daher sollte eine Verschiebung nach links um vier Positionen durchgeführt werden. Das Ausgangsschieberegister verschiebt das gesamte 32 Bit- Wort um vier, so dass das Datenwort "01100111100110111110111011011111" ausgegeben wird. Der Maskengenerator 200 erzeugt drei unterschiedliche 32 Bit-Maskenwörter. Es wird angenommen, dass die gepackten Daten durch das Steuersignal W als Bytetyp angegeben werden. Das ausgewählte Maskenwort wäre folglich, 11110000111100001111000011110000". Die logische Einheit kombiniert diese zwei 32 Bit-Wörter. Zum Beispiel wird eine logische UND-Operation durchgeführt. Das Ergebnis der Operation, das an den Anschlüssen R anliegt, wäre demzufolge "01100000100100001110000011010000". Das Ergebnis der Operation ist gleich einer unabhängigen, logischen Verschiebungsoperation an jeweils acht Bit der vier verketteten Bytes in dem aus Byte gepackten 32 Bitwort.
  • Abb. 2 zeigt eine Ausführungsform des Maskengenerators 200. Ein Byte-Maskengenerator 210 wird bereitgestellt, der mit den drei Anschlüssen S1, S2 und S3 verbunden ist, welche die wertniedrigsten drei Bits des Steuerworts S sind. Der Byte-Maskengenerator 210 erzeugt eine Ausgabe gemäß Tabelle 2. Tabelle 2
  • Diese acht Bits werden einer steuerbaren Invertereinheit 260 zugeführt. Die Ausgabe der Invertereinheit 260 wird viermal expandiert, um vier identische 8 Bit-Leitungen zu bilden, die miteinander verkettet werden, um eine 32 Bit-Maske zu bilden. Die 8 Bit-Ausgabe des Byte-Maskengenerators 210 wird ebenfalls einer ersten UND-Einheit 220 und einer ersten ODER-Einheit 230 zugeführt. Die UND-Einheit 220 besteht aus acht UND-Gattern, und die ODER-Einheit 230 besteht aus acht ODER-Gattern. Der erste Eingang jedes UND- Gatters und jedes ODER-Gatters wird mit einer der 8 Bit-Leitungen des Byte-Maskengenerators 210 verbunden. Die anderen Eingänge jedes UND-Gatters und jedes ODER-Gatters in der Einheit 220 und der Einheit 230 werden mit dem Anschluss S4 des Steuerworts S verbunden. Die UND-Einheit 220 liefert daher acht Ausgangssignale, und die ODER-Einheit 230 liefert weitere acht Ausgaben, die zu einem 16 Bit-Wort verkettet werden, welches zu einer steuerbaren Invertereinheit 270 geleitet wird. Diese 16 Bit- Leitungen werden ebenfalls mit einer zweiten UND- Einheit 240 und einer zweiten ODER-Einheit 250 verbunden. Die UND-Einheit 240 besteht aus sechzehn UND-Gattern. Der erste Eingang jedes UND-Gatters in der UND-Einheit 240 wird jeweils mit einer der 16 Bit- Leitungen verbunden. In der gleichen Weise wird der erste Eingang jedes ODER-Gatters in der ODER-Einheit 250 jeweils mit einer der sechzehn Eingangsbitleitungen verbunden. Der zweite Eingang jedes UND-Gatters und jedes ODER-Gatters der UND-Einheit 240 und der ODER- Einheit 250 wird mit dem Anschluss S5 verbunden. Die UND-Einheit 240 gibt sechzehn Bits aus, und die ODER- Einheit 250 gibt ebenfalls sechzehn Bits aus, die zu einem 32 Bit-Ausgangswort verkettet werden. Dieses Ausgangswort wird ebenfalls mit einem steuerbaren Inverter 280 zusammengeschaltet. Alle drei Inverter 260, 270 und 280 werden durch das werthöchste Bit S6 des Steuerworts S gesteuert. Der Ausgang des steuerbaren Inverters 260 ist mit vier Sätzen von 8 Bit-Leitungen zusammengeschaltet, die ein 32 Bit-Wort mit vier gleichen Sätzen von Maskenbytes bilden. Dieses gepackte 32 Bit-Maskenwort wird durch die Nummer M8 angegeben. Die sechzehn Ausgangsbits des Inverters 270 sind mit zwei Sätzen von 16 Bit-Leitungen zusammengeschaltet, die ein gepacktes 32 Bit-Wort des Halbworttyps bilden, wobei beide Sätze der 16 Bit- Leitungen die identische 16 Bit-Maske übertragen. Das resultierende 32 Bit-Maskenwort wird durch die Nummer M16 angegeben. Schließlich ist der 32 Bit-Ausgang des Inverters 280 mit den 32 Bit-Leitungen verbunden, die ein 32 Bit-Maskenwort des Worttyps bilden, der durch die Nummer M32 angegeben wird.
  • Die drei Inverter 260, 270 und 280 werden von dem werthöchsten Bit S6 des Steuerworts S gesteuert. Falls S6 auf 0 gesetzt wird, dann werden die jeweiligen 8 Bit, 16 Bit oder 32 Bit an dem Eingang des Inverters 260, 270 oder 280 invertiert, und falls S6 auf 1 gesetzt wird, dann werden all drei Inverter übersprungen. So wird die jeweilige Maske gemäß der Tabelle 1 erzeugt. Der Ausgang des Byte- Maskengenerators 210 gemäß der Tabelle 2 wird durch die UND-Einheit 220 und die ODER-Einheit 230 zu einem 16 Bit-Ausgang erweitert. Sofern S4 gleich 0 ist, werden die oberen acht Bits des erzeugten 16 Bit- Maskenworts automatisch von der UND-Einheit 220 auf 0 gesetzt. Die ODER-Einheit 230 leitet dann einfach die erzeugte 8 Bit-Maske durch, welche den unteren 8 Bit- Teil der 16 Bit-Maske bildet. Falls S4 auf 1 gesetzt wird, dann setzt die ODER-Einheit 230 automatisch all unteren acht Bits auf 1, und die UND-Einheit 220 leitet die 8 Bit-Maske, die von dem Byte-Maskengenerator 210 erzeugt worden ist, effektiv durch zu den oberen acht Bits der 16 Bit-Maske. In der gleichen Weise erzeugt das Bit S5 eine 32 Bit-Maske aus einer 16 Bit-Maske mittels einer UND-Einheit 240 und einer ODER-Einheit 250.
  • Abb. 3 zeigt eine Ausführungsform eines Byte- Maskengenerators 210 gemäß der Abb. 2. Das Signal an dem Anschluss S1 ist mit einer "0" kombiniert, so dass ein 2 Bit-Signal entsteht, das zu einer UND- Einheit 211 und einer ODER-Einheit 212 geleitet wird. Die UND-Einheit 211 besteht aus zwei separaten UND- Gattern, von denen jedes zwei Eingänge und einen Ausgang hat. Jeweils der erste Eingang der UND-Gatter in der UND-Einheit 211 ist mit einem der kombinierten 2 Bit-Signale verbunden, und der zweite Eingang jedes UND-Gatters der UND-Einheit 211 ist mit dem Anschluss S2 verbunden. In der gleichen Weise ist der erste Eingang jedes ODER-Gatters in der ODER-Einheit 212 mit einem der 2 Bit-Signale verbunden, und der zweite Eingang jedes ODER-Gatters der ODER-Einheit 212 ist mit dem Anschluss S2 zusammengeschaltet. Die zwei Ausgangssignale der UND-Einheit 211 und der ODER- Einheit 212 werden zu einem 4 Bit-Signal kombiniert, das zu einer UND-Einheit 213 und einer ODER-Einheit 214 geleitet wird. Die UND-Einheit 213 besteht aus vier UND-Gattern, von denen jedes zwei Eingänge und einen Ausgang hat, und die ODER-Einheit 214 besteht aus vier ODER-Gattern, von denen jedes zwei Eingänge und einen Ausgang hat. Der erste Eingang jedes UND-Gatters in der UND-Einheit 213 ist jeweils mit einer der vier Bitleitungen zusammengeschaltet. Der andere Eingang jedes UND-Gatters der UND-Einheit 213 ist mit dem Anschluss S3 verbunden. In der gleichen Weise ist der erste Eingang jedes ODER-Gatters in der ODER-Einheit 214 mit jeweils einer der vier Bitleitungen zusammengeschaltet. Der andere Eingang jedes ODER- Gatters der ODER-Einheit 214 ist mit dem Anschluss S3 verbunden. Die vier Ausgänge der UND-Einheit 213 und der ODER-Einheit 214 werden zu einem 8 Bit-Signal kombiniert, das den Ausgang 215 des Byte Maskengenerators 210 bildet.
  • Die UND-Einheit 211 und die ODER-Einheit 212 fungieren als eine Erweiterungseinheit ähnlich wie die UND- Einheit 220 und die ODER-Einheit 230 der Abb. 2. Die zwei Bits an dem Eingang des Maskengenerators 210 bilden im Grunde entweder das Eingangssignal "00" oder "01". Über den Anschluss S2 und die UND-Einheit 211 sowie die ODER-Einheit 212 werden diese zwei unterschiedlichen Eingangssignale zu vier unterschiedlichen Ausgangssignalen erweitert, von denen jedes aus vier Bits besteht. In der gleichen Weise erzeugen die UND-Einheit 213 und die ODER-Einheit 214 in Kombination mit dem Anschluss S3 ein 8 Bit- Ausgangswort gemäß der Tabelle 2.
  • Abb. 4 zeigt eine weitere Ausführungsform eines Byte-Maskengenerators 210 gemäß der Abb. 2. Der Anschluss S1 ist mit dem ersten Eingang eines UND- Gatters 401 und eines ODER-Gatters 402 verbunden. Der jeweils zweite Eingang des UND-Gatters 401 und des ODER-Gatters 402 ist mit dem Anschluss S2 zusammengeschaltet. Weiterhin ist S2 mit jeweils dem ersten Eingang eines UND-Gatters 404 und eines ODER- Gatters 407 zusammengeschaltet. Der Ausgang des UND- Gatters 401 ist jeweils mit dem ersten Eingang eines UND-Gatters 403 und eines ODER-Gatters 406 zusammengeschaltet. Der Ausgang des ODER-Gatters 402 ist jeweils mit dem ersten Eingang eines UND-Gatters 405 und eines ODER-Gatters 408 verbunden. Der Anschluss S3 ist mit jedem zweiten Eingang des UND-Gatters 403, 404 und 405 sowie mit jedem zweiten Eingang des ODER- Gatters 406, 407 und 408 zusammengeschaltet. Die erzeugte Byte-Maske ist an den Anschlüssen 409-416 zugänglich. Der Anschluss 416 ist mit dem Ausgang des ODER-Gatters 408 zusammengeschaltet, der Anschluss 415 ist mit dem Ausgang 407 zusammengeschaltet, und der Anschluss 414 ist mit dem Ausgang des ODER-Gatters 406 zusammengeschaltet. Der Anschluss 413 ist mit dem Anschluss S3 zusammengeschaltet. Die Anschlüsse 412, 411 und 410 sind jeweils mit den Ausgängen des UND- Gatters 405, des UND-Gatters 404 und des UND-Gatters 403 zusammengeschaltet. Schließlich ist der Anschluss 409 mit einem festen Signal, das den Wert 0 hat, zusammengeschaltet.
  • Abb. 5 zeigt eine weitere Ausführungsform eines Byte-Maskengenerators 210 gemäß der Abb. 2. Der Anschluss S1 ist jeweils mit dem ersten Eingang eines UND-Gatters 505, eines UND-Gatters 501, eines UND- Gatters 503 und eines ODER-Gatters 508 verbunden. Der Anschluss S2 ist mit einem ersten Eingang eines UND- Gatters 502, einem zweiten Eingang eines UND-Gatters 503 und einem ersten Eingang eines ODER-Gatters 504 zusammengeschaltet. Der Anschluss S3 ist mit dem zweiten Eingang des UND-Gatters 501, dem zweiten Eingang des UND-Gatters 502, einem Anschluss 513, dem ersten Eingang eines ODER-Gatters 507 und dem zweiten Eingang des ODER-Gatters 504 zusammengeschaltet. Der Ausgang des UND-Gatters 501 ist mit dem ersten Eingang des ODER-Gatters 506 zusammengeschaltet. Der Ausgang des UND-Gatters 502 ist mit dem zweiten Eingang des ODER-Gatters 506, dem Anschluss 511 und dem zweiten Eingang des UND-Gatters 505 verbunden. Der Ausgang des UND-Gatters 503 ist mit dem zweiten Eingang des ODER- Gatters 507 verbunden. Der Ausgang des ODER-Gatters 504 ist mit dem zweiten Eingang des ODER-Gatters 508 und mit dem Anschluss 516 zusammengeschaltet. Der Ausgang des ODER-Gatters 508 ist mit dem Anschluss 517 zusammengeschaltet, der Ausgang des ODER-Gatters 507 ist mit dem Anschluss 514 zusammengeschaltet, der Ausgang des ODER-Gatters ist mit dem Anschluss 512 zusammengeschaltet, und der Ausgang des UND-Gatters 505 ist mit dem Anschluss 510 verbunden. Schließlich ist der Anschluss 509 mit einem festen Signal, das den Wert 0 hat, zusammengeschaltet. Die Byte-Maske ist an den Anschlüssen 509 bis 517 zugänglich.
  • Abb. 6 zeigt eine Ausführungsform einer logischen Einheit 500 gemäß der Abb. 1. Diese Ausführungsform verwendet als Steuersignale C - gemäß der Abb. 1 - vier Bitsignale, die von dem Datenwort D, welches aus den Bitleitungen D31 - D0 besteht, extrahiert werden, wobei diese vier Bitsignale die Bitleitungen D31, D23, D15 und D7 sind. Diese vier Bitsignale sind die werthöchsten Bits eines Worts (D31), der beiden Halbwörter (D31, D15) und der vier Bytes (D31, D23, D15 und D7). Diese vier Bitsignale bilden einen Satz, der zu vier Eingängen von vier 4 · 1-Multiplexern 601, 602, 603 und 604 übertragen wird. Alle vier Multiplexer 601, 602, 603 und 604 werden durch eine Steuereinheit 610 gesteuert, die mit den zwei Bitleitungen des Steuersignals W verbunden ist. Jeder Multiplexer 601, 602, 603 und 604 wählt in Übereinstimmung mit dem Steuersignal W eines der vier Eingangssignale D31, D23, D15 oder D7 aus. Jedes Ausgangssignal der Multiplexer 601, 602, 603 und 604 wird jeweils zu dem ersten Eingang eines UND-Gatters 605, 606, 607 und 608 geleitet. Der jeweils zweite Eingang des UND-Gatters 605, 606, 607 und 608 ist mit einem Anschluss Z zusammengeschaltet, das ein Signal überträgt, welches angibt, ob eine mit Null gefüllte (logische) Anweisung oder eine mit einem Vorzeichen erweiterte (arithmetische) Anweisung verwendet wird, wie weiter unten beschrieben ist. Die Ausgänge der UND- Gatter 605, 605, 607 und 608 werden jeweils auf acht Bits erweitert und zu einem 32 Bit-Wort verkettet, das zu einer Multiplexereinheit 609 geleitet wird. Mit anderen Worten, trägt jede Leitung in einem Satz aus 8 Bit-Leitungen das gleiche Signal, und es gibt vier unterschiedliche Sätze, die zu einem Wort verkettet werden. Die Multiplexereinheit 609 enthält 32 2 · 1- Multiplexer. Der erste Eingang jedes Multiplexers in der Multiplexereinheit 609 ist mit einer der 32 Bit- Leitungen des erweiterten Ausgangs der vier UND-Gatter 605, 606, 607 und 608 zusammengeschaltet. Der zweite Eingang jedes Multiplexers in der Multiplexereinheit 609 ist mit einer der 32 Bit-Leitungen des Ausgangs des Ausgangsschieberegisters 100 zusammengeschaltet. Die 32 Steuerleitungen, die jeden 2 · 1-Multiplexer in der Multiplexereinheit 609 steuern, sind mit dem Ausgang der Schalteinheit 400 zusammengeschaltet. Der Ausgang der Multiplexereinheit 609 ist mit dem Anschluss R zusammengeschaltet.
  • Jeder 2 · 1-Multiplexer in der Multiplexereinheit 609 wird durch eine der 32 Bitleitungen der Schalteinheit 400 gesteuert und wählt entweder eine der 32 Bitleitungen des Ausgangs des Ausgangsschieberegisters 100 oder eine der 32 Bitleitungen des Ausgangs der UND- Gatter 605-608 aus.
  • Diese Ausführungsform macht es möglich, eine Vielzahl von unterschiedlichen Verschiebungsanweisungen für gepackte Daten durchzuführen. Die Steuersignale W legen fest, welcher Typ von gepackten Daten verwendet wird, wie beispielsweise Byte, Halbwort oder Wort. Das Signalsteuerbit Z, das ebenfalls durch die (hier nicht dargestellte) Dekodierereinheit erzeugt wird, bestimmt, ob eine mit Null gefüllte oder eine mit einem Vorzeichen erweiterte Anweisung durchgeführt wird. In Kombination mit der Verschiebungsrichtung, die von dem Anschluss S6 der Steuerdaten S angezeigt wird, können vier unterschiedliche Typen von Verschiebungsanweisungen durchgeführt werden. Eine mit Null gefüllte Verschiebungsanweisung nach rechts ist auch als eine logische Verschiebung nach rechts bekannt. Eine mit einem Vorzeichen erweiterte Verschiebung nach rechts ist dagegen als eine arithmetische Verschiebungsanweisung nach rechts bekannt. Weiterhin können mit Null gefüllte oder mit einem Vorzeichen erweiterte Verschiebungsanweisungen nach links durchgeführt werden. Immer wenn die erzeugte Maske des Maskengenerators 400 gleich 1 ist, wählt der entsprechende 2 · 1-Multiplexer in der Multiplexereinheit 609 den Ausgang des Ausgangsschieberegisters 100. Immer wenn eine Bitleitung des Ausgangs der Schalteinheit 400 gleich Null ist, wählt der entsprechende Multiplexer der Multiplexereinheit 609 die Bitleitung der erweiterten Ausgänge der UND-Gatter 605-608. Die Steuereinheit 610 steuert die Multiplexer 601-604 derart, dass die Multiplexer 601-604 D31 als Ausgangssignal für jeden Multiplexer wählen, falls ein Worttyp ausgewählt ist. Darüber hinaus wählen die Multiplexer 601 und 602 die Bitleitung D31, und die Multiplexer 603 und 604 wählen die Bitleitung D15, falls ein Halbworttyp ausgewählt ist. Schließlich, falls ein Bytetyp durch das Steuerwort W ausgewählt wird, steuert die Steuereinheit 610 den Multiplexer 601, um die Bitleitung D31 als Ausgangssignal auszuwählen, den Multiplexer 602, um die Bitleitung D23 als Ausgangssignal auszuwählen, den Multiplexer 603, um die Bitleitung D15 als Ausgangssignal auszuwählen, und den Multiplexer 604, um die Bitleitung D7 als Ausgangssignal auszuwählen. Diese Ausgangssignale werden durch die logische Einheit 605- 608 mit dem aus einem Vorzeichen/einer Null bestehenden Steuersignal Z kombiniert. Daher kann jedes Byte des erweiterten 32 Bit-Ausgangs des UND-Gatters 605-608 auf 0 oder 1 gesetzt werden, und zwar gemäß dem werthöchsten Bit jedes Bytes, Halbworts oder Worts der Eingangsdaten D.
  • Die Abb. 7 bis 9 zeigen vier unterschiedliche. Typen von Verschiebungsanweisungen für gepackte Daten mittels eines schematischen Flussdiagramms. In Abb. 7 wird eine Verschiebungsanweisung für gepackte Daten als eine mit einem Vorzeichen gefüllte Verschiebung um vier nach rechts dekodiert, wobei diese Verschiebung an vier Bytes, die zu einem 32 Bit-Wort D verkettet sind, durchgeführt wird. In Abb. 8 wird eine Verschiebungsanweisung für gepackte Daten als eine mit Null gefüllte Verschiebung um fünf nach rechts dekodiert, wobei diese Verschiebung an zwei Halbwörtern durchgeführt wird, die zu einem 32 Bit-Wort D verkettet worden sind. Schließlich wird in der Abb. 9 eine Verschiebungsanweisung für gepackte Daten als eine mit Null gefüllte Verschiebung um 9 nach links dekodiert, wobei diese Verschiebung an einem 32 Bit-Wort D durchgeführt wird.
  • Das Prinzip der vorliegenden Erfindung kann in vielen unterschiedlichen Weisen realisiert werden. Zum Beispiel kann das Prinzip der vorliegenden Erfindung mit jedem Prozessortyp verwendet werden, und es kann leicht auf 64 Bit-Prozessoren, 128 Bit-Prozessoren usw. erweitert werden. Die Invertereinheiten 260, 270 und 280 können in die Multiplexereinheit 609 integriert werden, indem die Schalter gemäß dem Steuerbit 56 gesteuert werden. Sofern nur eine logische Verschiebungsanweisung durchgeführt werden soll, kann die logische Einheit 500 einfach durch 32 UND-Gatter realisiert werden. Andere Realisierungen der logischen Einheit sind möglich und für jeden Fachmann, der mit der Materie vertraut ist, offensichtlich.

Claims (13)

1. Vorrichtung zur Verschiebung von m Bit großen, gepackten Datenwörtern mit einer Vielzahl von aus 8 Bit bestehenden Bytes, die eine Vielzahl von teilweisen Datenwörtern bilden, wobei jedes teilweise Datenwort n Bytes mit n ≥ 1 hat und dem Typ der gepackten Daten entspricht, und die Vorrichtung umfasst:
- Dekodiermittel, um eine empfangene, gepackte Datenanweisung zu dekodieren und ein m Bit großes Datenwort als Eingabe (D), einen Verschiebungskode als Eingabe (S) und einen Kode für den Typ der gepackten Daten als Eingabe (W) für das m Bit große Datenwort bereitzustellen;
- Verschiebungsmittel (100), um die gepackten Daten um eine vorher festgelegte Anzahl von Bits in Übereinstimmung mit dem als Eingabe dienenden Verschiebungskode (S) zu verschieben;
- einen Maskengenerator (200, 210, 400), um eine Maske in Übereinstimmung mit dem als Eingabe dienenden Verschiebungskode (S) zu erzeugen; und
- eine logische Einheit (500), um die erzeugte Maske mit dem verschobenen, m Bit großen, gepackten Datenwort zu kombinieren und individuell verschobene, teilweise Datenwörter zu erzeugen;
dadurch gekennzeichnet, dass der Maskengenerator (200, 210, 400) eine Vielzahl von Masken erzeugt, wobei jede Maske eine n Byte große Maske enthält, die mit der Größe des gepackten Datenworts verkettet ist, und
der Maskengenerator (200, 210, 400) wahlmittel (400) enthält, um eine der Vielzahl von Masken in Übereinstimmung mit dem als Eingabe dienenden Kode für den Typ der gepackten Daten (W) auszuwählen.
2. Vorrichtung nach Anspruch 1, worin der Maskengenerator (200, 210, 400) einen Generator von n Byte-Masken (210, 211, 212, 213, 214), der die Vielzahl von n Byte großen Masken (M8, M16) in Übereinstimmung mit den niedrigstwertigen Bits des als Eingabe dienenden Verschiebungskodes (S) erzeugt, und wenigstens eine Erweiterungsschaltung (220, 230, 240, 250) enthält, um die n Byte große Maske (M8, M16) in eine 2n Byte große Maske (M16, M32) zu erweitern.
3. Vorrichtung nach Anspruch 2, worin jede Erweiterungsschaltung (220, 230, 240, 250) eine logische UND-Einheit (220, 240) und eine logische ODER-Einheit (230, 250) umfasst, wobei die logische UND-Einheit (220, 240) und die ODER- Einheit (230, 250) ein Bit der n Byte großen Maske (M8, M16) mit einem weiteren Bit des als Eingabe dienenden Verschiebungskodes (S) verknüpfen, um die 2n Byte große Maske (M16, M32) bereitzustellen.
4. Vorrichtung nach Anspruch 3, worin der Maskengenerator (200, 210, 400) eine Vielzahl von Erweiterungsschaltungen (220, 230, 240, 250) umfasst, die in Serienschaltung gekoppelt sind, wobei die letzteren Erweiterungsschaltungen (240, 250) der Serienschaltung eine Maske ausgeben, die zweimal die Bitbreite der ersteren Erweiterungsschaltungen (220, 230) hat.
5. Vorrichtung nach Anspruch 4, worin die Erweiterungsschaltungen (220, 230, 240, 250) die Bytemaske (M8) in eine Wortmaske (M32) erweitern.
6. Vorrichtung nach Anspruch 4, worin die Erweiterungsschaltungen (220, 230) die Bytemaske (M8) in eine Halbwortmaske (M16) erweitern.
7. Vorrichtung nach Anspruch 2, worin der Generator von n Byte großen Masken (210) von mindestens drei Bitleitungen (S1, S2, S3) gesteuert wird und vier UND-Gatter (401, 403, 404, 405) und vier ODER- Gatter (402, 406, 407, 408) umfasst, wobei jedes Gatter (401, 402, 403, 404, 405, 406, 407, 408) zwei Eingänge und einen Ausgang hat, und worin:
- die Eingänge des ersten UND-Gatters (401) und des ersten ODER-Gatters (402) jeweils mit der ersten und der zweiten Bitleitung (S1, S2) verbunden sind;
- die dritte Bitleitung (53) mit dem ersten Eingang des zweiten, dritten und vierten UND-Gatters (402, 403, 404) und mit dem ersten Eingang des zweiten, dritten und vierten ODER-Gatters (406, 407, 408) verbunden ist;
- der Ausgang des ersten UND-Gatters (401) mit dem zweiten Eingang des zweiten UND-Gatters (402) und mit dem zweiten Eingang des zweiten ODER-Gatters (406) verbunden ist;
- die zweite Bitleitung (52) mit dem zweiten Eingang des dritten UND-Gatters (404) und mit dem zweiten Eingang des dritten ODER-Gatters (407) verbunden ist;
- der Ausgang des ersten ODER-Gatters (402) mit dem zweiten Eingang des vierten UND-Gatters (405) und mit dem zweiten Eingang des vierten ODER-Gatters (408) verbunden ist;
- die Ausgänge (414, 415, 416) des vierten, dritten und zweiten ODER-Gatters (406, 407, 408) die ersten drei Bits der Maske bilden;
- die dritte Bitleitung (53) das vierte Bit der Maske bildet; und
- die Ausgänge (410, 411, 412) des vierten, dritten und zweiten UND-Gatters (403, 404, 405) das fünfte, sechste und siebte Bit der Maske bilden.
8. Vorrichtung nach Anspruch 2, worin der Generator von n Byte großen Masken (210) von mindestens drei Bitleitungen gesteuert wird und vier UND-Gatter (501, 502, 503, 505) und vier ODER-Gatter (504, 506, 507, 508) umfasst, wobei jedes Gatter (501, 502, 503, 504, 505, 506, 507, 508) zwei Eingänge und einen Ausgang hat, und worin:
- der erste Eingang des ersten, zweiten und vierten UND-Gatters (501, 502, 503) und der erste Eingang des dritten ODER-Gatters (508) mit der ersten Bitleitung (S1) verbunden sind;
- der zweite Eingang des dritten und vierten UND- Gatters (502, 503) und der erste Eingang des Vierten. ODER-Gatters (504) mit der zweiten Bitleitung (S2) verbunden sind;
- der zweite Eingang des ersten UND-Gatters und der zweite Eingang des vierten ODER-Gatters (504) sowie der erste Eingang des dritten UND-Gatters (502) und der erste Eingang des zweiten ODER-Gatters (507) mit der dritten Bitleitung (S3) verbunden sind;
- der Ausgang des vierten ODER-Gatters (504) mit dem zweiten Eingang des dritten ODER-Gatters (508) verbunden ist;
- der Ausgang des vierten UND-Gatters (503) mit dem zweiten Eingang des zweiten ODER-Gatters (507) verbunden ist;
- der Ausgang des dritten UND-Gatters (502) mit dem zweiten Eingang des ersten ODER-Gatters (505) und mit dem zweiten Eingang des zweiten UND-Gatters (505) verbunden ist;
- die Ausgänge (514, 516, 517) des dritten, vierten und zweiten ODER-Gatters (504, 507, 508) die ersten drei Bits der Maske bilden;
- die dritte Bitleitung (S3) das vierte Bit der Maske bildet; und
- die Ausgänge (510, 511, 512) des ersten ODER- Gatters (506) und des dritten und zweiten UND- Gatters (502, 510) das fünfte, sechste und siebte Bit der Maske bilden.
9. Vorrichtung nach Anspruch 1, worin die Auswahlmittel (400) wenigstens zwischen der Größe eines Bytes und der Größe eines Worts auswählen und der Maskengenerator (200, 210, 400) wenigstens eine Bytemaske und eine Wortmaske erzeugt.
10. Vorrichtung nach Anspruch. 1, worin die logische Einheit (500) Folgendes umfasst:
- eine erste Multiplexereinheit, die einen Multiplexer (601, 602, 603, 604) für jedes Byte der gepackten Daten enthält, wobei das höchstwertige Bit (D7, D15, D23, D31) von einem der Bytes in Übereinstimmung mit einem Steuersignal (W) ausgewählt wird;
- und eine UND-Einheit, die ein UND-Gatter (605, 606, 607, 608) mit je zwei Eingängen und einem Ausgang für jedes Byte der gepackten Daten enthält, wobei jedes UND-Gatter (605, 606, 607, 608) die Ausgabe von einem der Multiplexer (601, 602, 603, 604) mit einem weiteren Steuersignal (Z) kombiniert und die Ausgabe von jedem UND-Gatter (605, 606, 607, 608) mit acht sequenziellen Bitleitungen verknüpft ist und damit die Daten der UND-Ausgabe bildet, wobei diese die Größe der gepackten Daten haben; und
- eine zweite Multiplexereinheit (609), die einen 2 · 1-Multiplexer für jedes Bit der gepackten Daten umfasst, wobei der erste Eingang jedes 2 · 1- Multiplexers mit einer der Ausgangsleitungen für die Daten der UND-Ausgabe verbunden ist und der zweite Eingang jedes 2 · 1-Multiplexers mit einer der Ausgangsleitungen der Verschiebungsmittel (100) verbunden ist und jeder 2 · 1-Multiplexer einen Steuereingang hat, der mit einer der Ausgangsleitungen des Maskengenerators (200, 210, 400) verbunden ist.
11. Verfahren zur Verschiebung von m Bit breiten, gepackten Datenwörtern mit einer Vielzahl aus acht Bit bestehenden Bytes, die eine Vielzahl von teilweisen Datenwörtern bilden, wobei jedes teilweise Datenwort n Bytes hat, n ≥ 1 ist und dem Typ der gepackten Daten entspricht, und das Verfahren folgende Schritte umfasst:
- Dekodierung einer empfangenen, gepackten Datenanweisung und Bereitstellung eines m Bit großen Datenwort als Eingabe (D), eines Verschiebungskodes als Eingabe (S) und eines Kode für den Typ der gepackten Daten als Eingabe (W) für das m Bit große Datenwort;
- Verschiebung der gepackten Daten um eine vorher festgelegte Anzahl von Bits in Übereinstimmung mit dem als Eingabe dienenden Verschiebungskode (S);
- Erzeugung einer Maske in Übereinstimmung mit dem als Eingabe dienenden Verschiebungskode (S); und
- Kombination der erzeugten Maske mit dem verschobenen m Bit breiten, gepackten Datenwort, um individuell verschobene, teilweise Datenwörter zu erzeugen;
dadurch gekennzeichnet, dass die erzeugte Maske eine Vielzahl von Masken umfasst, wobei jede Maske eine n Byte große Maske enthält, die mit der Größe des gepackten Datenworts verkettet ist, und dass das Verfahren weiterhin die Auswahl einer der Vielzahl von Masken in Übereinstimmung mit dem als Eingabe dienenden Kode für den Typ der gepackten Daten (W) umfasst.
12. Verfahren nach Anspruch 11, das darüber hinaus den Schritt der Steuerung der Datenmaske in Übereinstimmung mit der Bytegröße der gepackten Daten umfasst.
13. Verfahren nach Anspruch 11, das darüber hinaus den Schritt der Erzeugung eines Signals/Nullwortes umfasst, welches die Größe der gepackten Daten hat, wobei jedes Bit eines teilweisen Datenelements des Signals/Nullwortes entweder aus Nullen oder dem Signal für jedes teilweise Datenelement besteht und der Auswahlschritt auf der Maske in Übereinstimmung mit entweder dem Bit der verschobenen, gepackten Daten oder dem Signal/Nullwort steht.
DE69900980T 1998-04-23 1999-03-19 Verfahren und vorrichtung zur ausführung von verschiebungsoperationen mit gepackten daten Expired - Lifetime DE69900980T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/065,759 US6098087A (en) 1998-04-23 1998-04-23 Method and apparatus for performing shift operations on packed data
PCT/US1999/005916 WO1999054812A1 (en) 1998-04-23 1999-03-19 Method and apparatus for performing shift operations on packed data

Publications (2)

Publication Number Publication Date
DE69900980D1 DE69900980D1 (de) 2002-04-11
DE69900980T2 true DE69900980T2 (de) 2002-10-31

Family

ID=22064904

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69900980T Expired - Lifetime DE69900980T2 (de) 1998-04-23 1999-03-19 Verfahren und vorrichtung zur ausführung von verschiebungsoperationen mit gepackten daten

Country Status (6)

Country Link
US (1) US6098087A (de)
EP (1) EP1073950B1 (de)
JP (1) JP2002512398A (de)
KR (1) KR20010042931A (de)
DE (1) DE69900980T2 (de)
WO (1) WO1999054812A1 (de)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738793B2 (en) * 1994-12-01 2004-05-18 Intel Corporation Processor capable of executing packed shift operations
US6275834B1 (en) * 1994-12-01 2001-08-14 Intel Corporation Apparatus for performing packed shift operations
US6260055B1 (en) * 1997-10-15 2001-07-10 Kabushiki Kaisha Toshiba Data split parallel shifter and parallel adder/subtractor
EP1046100A1 (de) * 1998-08-06 2000-10-25 Trimedia Technologies, Inc. Datenprozessor und datenverarbeitungsverfahren
US6243728B1 (en) * 1999-07-12 2001-06-05 Sony Corporation Of Japan Partitioned shift right logic circuit having rounding support
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
US6629115B1 (en) * 1999-10-01 2003-09-30 Hitachi, Ltd. Method and apparatus for manipulating vectored data
US6718492B1 (en) * 2000-04-07 2004-04-06 Sun Microsystems, Inc. System and method for arranging bits of a data word in accordance with a mask
US6622242B1 (en) * 2000-04-07 2003-09-16 Sun Microsystems, Inc. System and method for performing generalized operations in connection with bits units of a data word
US6618804B1 (en) * 2000-04-07 2003-09-09 Sun Microsystems, Inc. System and method for rearranging bits of a data word in accordance with a mask using sorting
US6629239B1 (en) * 2000-04-07 2003-09-30 Sun Microsystems, Inc. System and method for unpacking and merging bits of a data world in accordance with bits of a mask word
US6654774B1 (en) * 2000-09-26 2003-11-25 Fujitsu Limited Generation of sign extended shifted numerical values
GB0024312D0 (en) * 2000-10-04 2000-11-15 Advanced Risc Mach Ltd Single instruction multiple data processing
US6738792B1 (en) * 2001-03-09 2004-05-18 Advanced Micro Devices, Inc. Parallel mask generator
JP3763516B2 (ja) * 2001-03-30 2006-04-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 変換プログラム、コンパイラ、コンピュータ装置およびプログラム変換方法
US6611211B2 (en) * 2001-05-04 2003-08-26 International Business Machines Corporation Data mask coding
US20040054877A1 (en) * 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
US6877019B2 (en) * 2002-01-08 2005-04-05 3Dsp Corporation Barrel shifter
AU2003301920A1 (en) * 2002-11-12 2004-06-03 International Business Machines Corporation Device and method for performing shift/rotate operations
US7282950B1 (en) 2004-11-08 2007-10-16 Tabula, Inc. Configurable IC's with logic resources with offset connections
US7743085B2 (en) 2004-11-08 2010-06-22 Tabula, Inc. Configurable IC with large carry chains
US7825684B2 (en) 2005-03-15 2010-11-02 Tabula, Inc. Variable width management for a memory of a configurable IC
US7298169B2 (en) * 2005-03-15 2007-11-20 Tabula, Inc Hybrid logic/interconnect circuit in a configurable IC
US7530033B2 (en) 2005-03-15 2009-05-05 Tabula, Inc. Method and apparatus for decomposing functions in a configurable IC
US20070088772A1 (en) * 2005-10-17 2007-04-19 Freescale Semiconductor, Inc. Fast rotator with embedded masking and method therefor
US7694083B1 (en) * 2006-03-08 2010-04-06 Tabula, Inc. System and method for providing a virtual memory architecture narrower and deeper than a physical memory architecture
US7797497B1 (en) 2006-03-08 2010-09-14 Tabula, Inc. System and method for providing more logical memory ports than physical memory ports
GB2443439B (en) * 2006-10-30 2009-06-03 Imagination Tech Ltd Digital electronic binary rotator and reverser
US7930666B1 (en) 2006-12-12 2011-04-19 Tabula, Inc. System and method of providing a memory hierarchy
US8285766B2 (en) 2007-05-23 2012-10-09 The Trustees Of Princeton University Microprocessor shifter circuits utilizing butterfly and inverse butterfly routing circuits, and control circuits therefor
WO2013071183A1 (en) 2011-11-11 2013-05-16 Tabula, Inc. Content addressable memory in integrated circuit
US10564966B2 (en) 2011-12-22 2020-02-18 Intel Corporation Packed data operation mask shift processors, methods, systems, and instructions
WO2013101232A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Packed rotate processors, methods, systems, and instructions
US20150186137A1 (en) * 2013-12-27 2015-07-02 Tal Uliel Systems, apparatuses, and methods for vector bit test

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4194241A (en) * 1977-07-08 1980-03-18 Xerox Corporation Bit manipulation circuitry in a microprocessor
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
US5673427A (en) * 1994-03-01 1997-09-30 Intel Corporation Packing valid micro operations received from a parallel decoder into adjacent locations of an output queue
ZA9510127B (en) * 1994-12-01 1996-06-06 Intel Corp Novel processor having shift operations
WO1996017293A1 (en) * 1994-12-01 1996-06-06 Intel Corporation A microprocessor having a multiply operation
GB9509983D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Replication of data
US5729482A (en) * 1995-10-31 1998-03-17 Lsi Logic Corporation Microprocessor shifter using rotation and masking operations
US5621674A (en) * 1996-02-15 1997-04-15 Intel Corporation Computer implemented method for compressing 24 bit pixels to 16 bit pixels
US5822231A (en) * 1996-10-31 1998-10-13 Samsung Electronics Co., Ltd. Ternary based shifter that supports multiple data types for shift functions

Also Published As

Publication number Publication date
EP1073950A1 (de) 2001-02-07
WO1999054812A1 (en) 1999-10-28
US6098087A (en) 2000-08-01
KR20010042931A (ko) 2001-05-25
JP2002512398A (ja) 2002-04-23
EP1073950B1 (de) 2002-03-06
DE69900980D1 (de) 2002-04-11

Similar Documents

Publication Publication Date Title
DE69900980T2 (de) Verfahren und vorrichtung zur ausführung von verschiebungsoperationen mit gepackten daten
DE2712224C2 (de) Datenverarbeitungsanlage
DE2714805C2 (de)
DE2755273C2 (de)
DE60018078T2 (de) Einstellung von bedingungswerten in einem rechner
DE3687666T2 (de) Verzweigungssteuerung in einem dreiphasen-pipeline-signalprozessor.
DE1499722C2 (de) Einrichtung zur Modifizierung von Informationswörtern
DE69428303T2 (de) Verfahren und Vorrichtung zum Datenarbeiten mit mehreren Statusbitgruppen
DE2616717C2 (de) Digitales Addierwerk
DE69613071T2 (de) Prozessor und Kontrollverfahren zur Ausführung richtiger Saturationsoperation
DE69530520T2 (de) Computerprogrammprodukt zur Verwendung von Mehrfachbefehlssätzen
DE2846117C2 (de) Datenprozessor
EP0097725B1 (de) Einrichtung im Befehlswerk eines mikroprogrammgesteuerten Prozessors zur direkten hardwaregesteuerten Ausführung bestimmter Instruktionen
DE69622676T2 (de) Datenverarbeitungsanordnung mit Erweiterung des Befehlssatzes
DE3854701T2 (de) Methode und Vorrichtung zum Verändern von Mikrobefehlen mit einer Makrobefehlspipeline.
DE3689595T2 (de) Datenverarbeitungssystem.
DE2935906C2 (de) Mikroprozessor
DE2847934A1 (de) Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher
DE2505384A1 (de) Steuerteil fuer eine elektronische datenverarbeitungsanlage
DE1237363B (de) Arithmetisch-Logische-Einheit
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE2421130C2 (de)
EP0010185A1 (de) Virtuell-Adressiervorrichtung für einen Computer
DE2718110A1 (de) Datenverarbeitungseinheit
DE3856139T2 (de) Mikroprozessor

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: INFINEON TECHNOLOGIES CORPORATION, SAN JOSE, CALIF

8327 Change in the person/name/address of the patent owner

Owner name: INFINEON TECHNOLOGIES NORTH AMERICA CORP. (N.D.GES

8380 Miscellaneous part iii

Free format text: DER ANMELDER IST ZU AENDERN IN: INFINEON TECHNOLOGIES NORTH AMERICA CORP. (N.D.GES.D. STAATES DELAWARE), SAN JOSE, CALIF., US

8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 1073950

Country of ref document: EP

Representative=s name: EPPING HERMANN FISCHER, PATENTANWALTSGESELLSCH, DE

R081 Change of applicant/patentee

Ref document number: 1073950

Country of ref document: EP

Owner name: INFINEON TECHNOLOGIES AG, DE

Free format text: FORMER OWNER: INFINEON TECHNOLOGIES NORTH AMERICA CORP. (N.D.GES.D. STAATES DELAWARE), SAN JOSE, US

Effective date: 20121128

R082 Change of representative

Ref document number: 1073950

Country of ref document: EP

Representative=s name: EPPING HERMANN FISCHER, PATENTANWALTSGESELLSCH, DE

Effective date: 20121128