DE19730727C2 - Verfahren und Schaltung zum Abschneiden von Ganzzahlen unter Verwendung einer Maske - Google Patents

Verfahren und Schaltung zum Abschneiden von Ganzzahlen unter Verwendung einer Maske

Info

Publication number
DE19730727C2
DE19730727C2 DE19730727A DE19730727A DE19730727C2 DE 19730727 C2 DE19730727 C2 DE 19730727C2 DE 19730727 A DE19730727 A DE 19730727A DE 19730727 A DE19730727 A DE 19730727A DE 19730727 C2 DE19730727 C2 DE 19730727C2
Authority
DE
Germany
Prior art keywords
input
mask
output
bit
circuit
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 - Fee Related
Application number
DE19730727A
Other languages
English (en)
Other versions
DE19730727A1 (de
Inventor
Alan H Karp
Dennis Brzezinski
Rajiv Gupta
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE19730727A1 publication Critical patent/DE19730727A1/de
Application granted granted Critical
Publication of DE19730727C2 publication Critical patent/DE19730727C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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
    • 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
    • G06F9/30014Arithmetic instructions with variable precision
    • 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

Description

Die vorliegende Erfindung bezieht sich auf Datenverarbei­ tungssysteme und insbesondere auf ein Verfahren und eine Schaltung zum parallelen Abschneiden von Ganzzahlen unter Verwendung einer Maske.
Seit ihrer ersten Verwendung haben sich Computer dramatisch entwickelt. Die ersten Computer wurden hauptsächlich für nu­ merische Berechnungen verwendet. Sowie sich die Speiche­ rungs- und Wiedergewinnungs-Fähigkeiten von Computern ver­ besserten, wurden Computer häufig zur Datenverwaltung ver­ wendet. Während die Computerspeicherung in der Vergangenheit hauptsächlich zum Speichern von Text und numerischen Infor­ mationen verwendet wurde, weisen moderne Computer Speicher­ möglichkeiten auf, die ausreichend groß sind, um große Men­ gen von Bilddaten zu speichern.
Eine weitere dramatische Veränderung bei Computern ist die umfassende Verbesserung der Prozessorgeschwindigkeit. Eine erhöhte Prozessorgeschwindigkeit führte ebenfalls zu vielen neuen Anwendungen.
Parallel zur Entwicklung von Computern fand ebenfalls die Entwicklung der Video- und Tontechnologie sowie der Kommuni­ kationstechnologie statt. Diese Technologien wurden zuneh­ mend computerisiert.
Ein Ergebnis der parallelen Entwicklung dieser Technologien ist die Vermischung von Anwendungen, wobei beispielsweise ein Benutzer in die Lage versetzt wird, mit gespeicherten Bildern und Ton zu interagieren. Die Verschmelzung von Vi­ deo- und Audiotechnologien mit der Computertechnik wird oft "Multimedia" genannt. Multimedia baut auf den Fähigkeiten moderner Computer auf, sowohl große Datenmengen zu speichern als auch schnelle Berechnungen durchzuführen.
Eine wichtige Funktionalität für Multimedia-Anwendungen ist die Fähigkeit, Bilder und Sequenzen von Bildern über exi­ stierende Kommunikationsnetze, z. B. Telefonnetze, von einem Computer zu einem anderen zu übertragen. Die Datenmenge, die übertragen werden muß, ist riesig. Ein Farbbild auf einem SVGA-Endgerät benötigt beispielsweise eine Datenmenge von 780 Kilobyte. Eine Bildsequenz, wie z. B. eine Filmaufnahme, kann Milliarden von Bytes enthalten. Ungüngstigerweise ten­ diert die Bandbreite gegenwärtig existierender Netze dahin, sehr schmal zu sein. Um das Problem des Übertragens großer Mengen von Daten über Netze mit schmaler Bandbreite zu lö­ sen, wurden mehrere Industriestandard-Bildkompressionstech­ niken entworfen, wie z. B. MPEG, JPEG und H.261. Diese Tech­ niken werden durchgehend verändert. Obwohl es möglich ge­ wesen ist, Prozessoren zu entwerfen, um spezielle Kompres­ sionstechniken auszuführen, ist es daher sehr schwierig, ei­ nen Prozessor zu entwerfen, der programmiert werden kann, um beliebige der gegenwärtigen und zukünftigen Kompressions­ techniken handzuhaben.
MPEG, JPEG, H.261 und weitere Kompressionstechniken haben gemein, daß sie ganzzahlige arithmetische Operationen auf die numerische Darstellung der Bilder ausführen, die sie komprimieren. Diese Operationen können in numerischen Größen resultieren, die sich außerhalb des zulässigen Bereichs der Hardware befinden. Es wird beispielsweise der Fall betrach­ tet, daß bestimmte Standards nur acht Bits pro Pixel zu­ lassen. Es würde nicht ungewöhnlich für Kompressionsopera­ tionen sein, Pixelwerte mit 11 bis 12 wertigen Bits zu er­ zeugen. Wenn der Versuch unternommen wird, solche Werte auf einer Hardwareanzeige mit einer Grenze von acht Bit pro Pixel anzuzeigen, ist das Ergebnis nicht vorhersagbar. Daher ist es nötig, die Ergebnisse auf einen annehmbaren Bereich abzuschneiden.
Im Stand der Technik wurde das Abschneiden (sog. "clipping") von Bytes für vorzeichenlose Ganzzahlwerte durch Verwendung der folgenden Sequenz erreicht.
wenn (ix < 0) ix := 0;
wenn (ix < 255) ix := 255.
Ungünstigerweise resultiert diese einfache Sequenz, wenn sie in einen Maschinencode übersetzt wird, in einem Code mit zwei Vergleichsoperationen und zwei Verzweigungen. Ferner müßte die Sequenz, obwohl Mehrfach-Prozessoren verwendet werden, sequentiell auf alle Pixel in einem Bild ausgeführt werden. Da die Busbreite und die Registerbreite der meisten modernen Computer viel größer als 8 oder 16 Bit ist, nützt das Durchführen der Abschneideoperation bei einem Pixel zu einem Zeitpunkt die gesamte Leistungsfähigkeit des Computers nicht aus.
Die DE 43 04 198 A1 offenbart ein Verfahren und eine Vorrich­ tung zur Beschleunigung der Datenverarbeitung eines Signal­ prozessors. Die Signalverarbeitungsarbeitseinheit umfaßt einen Multiplizierer und eine arithmetische und logische Einheit in welche Eingangssignale eingegeben werden. Diese Eingangssignale werden von Speicher- oder Eingabe/Ausgabe- Geräten empfangen. Zwischen Eingängen der Signalverarbei­ tungseinheit und dem Multiplizierer und der arithmetischen und logischen Einheit sind zwei Maskierungseinheiten ange­ ordnet, um eine Vorverarbeitung der Bit-Weise empfangenen Eingangssignale durchzuführen. Jede Maskierungseinheit ist mit zwei Registern verbunden, die über einen Datenbus ge­ steuert werden, um entsprechende, vordefinierte Werte von einem Befehlsdekodierer zu empfangen. Eine Möglichkeit, um die Maskierungseinheiten zu verwenden besteht darin, daß die Datenbusbreite 16 Bits beträgt, und z. B. Signale empfangen werden, die eine Breite von nur 8 Bits haben. Um sicherzu­ stellen, daß die Verarbeitungseinheit korrekt arbeitet, werden diejenigen Bits in dem 16-Bit-Eingangswort, die nicht verwendet werden, durch die Maskierungseinheit maskiert. Eine weitere Möglichkeit zur Verwendung der Maskierungsein­ heiten besteht in der Bitweisen Manipulation der Eingangs­ daten, die dem Multiplizierer oder der arithmetischen und logischen Einheit zugeführt werden sollen.
Bestimmte Architekturen, wie z. B. RISC (RISC = Reduced Instruction Set Computer = Computer mit reduziertem Befehls­ satz) weisen nur eine begrenzte Anzahl von Operationscodes auf. Bei diesen Architekturen ist es daher wichtig, eine neue Funktionalität zu schaffen, ohne die Anzahl der Opera­ tionscodes, die in den Prozessoren verwendet werden, wesent­ lich zu erhöhen. Eine solche Funktionalität ist das Ab­ schneiden von Ganzzahlen auf spezifizierte Bereiche. Es ist daher wünschenswert, diese Computer oder Prozessoren mit der Fähigkeit des Abschneidens von Ganzzahlen auf einen spezifi­ zierten Bereich unter Verwendung von nur einem Maschinenbe­ fehl zu versehen.
Die Aufgabe der vorliegenden Erfindung besteht demnach da­ rin, ein Verfahren zum Betreiben eines digitalen Prozessors und eine Schaltung zum Abschneiden von Ganzzahlen zu schaf­ fen, um ein schnelles und flexibles Abschneiden von Ganzzah­ len auszuführen.
Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 und 13 und durch eine Schaltung gemäß Anspruch 18 gelöst.
Es ist wünschenswert, einen Allzweckcomputer oder einen Bildprozessor mit der Fähigkeit des schnellen Abschneidens von Ganzzahlen zu versehen. Es ist ferner wünschenswert, einen Computer oder Prozessor mit der Fähigkeit des Ab­ schneidens von Ganzzahlen auf parallele Art und Weise zu versehen.
Es besteht somit ein wesentlicher Bedarf nach einer verbes­ serten Technik zum schnellen Abschneiden von Ganzzahlen.
Allgemein gesprochen erlaubt die Erfindung das parallele Ab­ schneiden von ganzzahligen Werten. Eine Hardware, die die Erfindung aufnimmt, enthält eine Einrichtung zum Speichern von Eingabedaten, die abgeschnitten werden sollen. Die Ein­ gabedaten werden in einen oder mehrere Eingabeblöcke unter­ teilt, welche auf parallele Art und Weise abgeschnitten wer­ den. Die Hardware enthält ferner eine Einrichtung zum Spei­ chern einer Maske. Die Maske wird auf die Eingabedaten ange­ wendet, derart, daß Ganzzahlen, die größer als die größte Ganzzahl eines spezifizierten Ausgabebereichs sind, durch diese größte Ganzzahl ersetzt werden, wohingegen Ganzzahlen, die kleiner als die kleinste Ganzzahl des Ausgabebereiches sind, durch diese kleinste Zahl ersetzt werden. Bei dem be­ vorzugten Ausführungsbeispiel werden alle Bit des Eingabeda­ tenwortes parallel verarbeitet.
Die Maske definiert den Bereich der Ausgabedaten. Die Not­ wendigkeit des Abschneidens einer Ganzzahl wird durch Ver­ gleichen der Maske mit entsprechenden Datenbits bestimmt. Wenn mindestens ein eingestelltes Maskenbit einem einge­ stellten Datenbit entspricht, ist allgemein das Abschneiden notwendig. Wenn das Abschneiden nicht notwendig ist, wird der Eingabedatenblock zu dem Ausgabedatenblock mit einer beliebigen benötigten Bewegung eines Vorzeichenbits weiter­ geleitet. Wenn das Abschneiden notwendig ist, wird ein Ab­ schneidesignal eingestellt, um der Hardware anzuzeigen, die benötigte kleinste oder größte Anzahl in den Ausgabeblock zu zwingen.
Die Erfindung erlaubt das Abschneiden sowohl vorzeichenbe­ hafteter als auch vorzeichenloser Eingabedaten zu sowohl vorzeichenbehafteten als auch vorzeichenlosen Ausgabedaten in einer beliebigen Kombination. Es wird jedoch allgemein nicht bevorzugt, eine vorzeichenlose Eingabe zu einer vor­ zeichenbehafteten Ausgabe abzuschneiden. Der Datentyp der Eingabe und der Ausgabe kann entweder in dem Abschneide-Ope­ rationscode, in der Maske oder in der Kombination des Opera­ tionscodes und der Maske codiert sein.
Ein Ziel der Erfindung besteht darin, ein paralleles Ab­ schneiden von Ganzzahlen zu ermöglichen.
Ein weiteres Ziel der Erfindung besteht darin, für das pa­ rallele Ganzzahlen-Abschneiden zu sorgen und alternative Ausführungsbeispiele zu schaffen, welche die parallele Ab­ schneidefunktion mit der minimalen Anzahl von Operations­ codes, die in einem Prozessor verwendet werden, durchführen.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend bezugnehmend auf die beiliegenden Zeich­ nungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm eines Prozessors mit einer Ganz­ zahlen-Abschneideschaltung gemäß einem bevorzugten Ausführungsbeispiel der Erfindung;
Fig. 2 ein Blockdiagramm, das die Baublöcke der Abschnei­ de-Schaltung gemäß einem bevorzugten Ausführungsbei­ spiel der Erfindung und die Daten-, Masken- und Aus­ gabe-Register zeigt;
Fig. 3 ein Blockdiagramm, das eine Schaltungsanordnung zum Bestimmen des Wertes des Vorzeichenbits des Einga­ be-Speicherbereiches zeigt, der jedem Byte von Aus­ gabedaten entspricht;
Fig. 4 ein Blockdiagramm, das Details der Halbwort- und Byte-Logikschaltungen der Abschneideschaltung von Fig. 2 zeigt;
Fig. 5 ein Blockdiagramm, das das Größenauswahlgatter jeder Byte-Logikschaltung von Fig. 4 zeigt;
Fig. 6 ein Logikdiagramm der Bit-Logikschaltung der Byte- Logikschaltungen von Fig. 4.
Es ist beabsichtigt, die Erfindung in einem Allzweck-Compu­ terprozessor oder in einem beliebigen anderen programmierba­ ren Prozessor zu verwenden. Die Erfindung ermöglicht es, daß der Prozessor Ganzzahlen abschneidet, indem er einen einzi­ gen Assemblersprache-Befehl verwendet. Darüber hinaus er­ laubt die Erfindung bei Prozessoren mit einer Busbreite, die breiter als die Breite der nicht-abgeschnittenen Ganzzahlen ist, das parallele Abschneiden von mehreren Ganzzahlen.
Fig. 1 ist ein Blockdiagramm eines Mikroprozessors 100 mit einer Registerdatei 101, einem Addierer 103 und einer Ganz­ zahlen-Abschneideschaltungsanordnung 105. Der Addierer 103 und die Ganzzahlen-Abschneideschaltung 105 sind beide mitei­ nander verbunden, um von der Registerdatei 100 eine Eingabe zu empfangen und Ergebnisse zu der Registerdatei 101 zurück­ zugeben. Die Registerdatei 101 ist ferner mit einem Speicher 107 verbunden. Die Registerdatei 101 ist betreibbar, um se­ lektiv ihre Register von dem Speicher 107 zu laden, und um den Inhalt der Register zurück in den Speicher 107 zu spei­ chern.
Der Mikroprozessor 100 umfaßt eine Steuerungseinheit 109, die mit einem Mikrocode-Speicher 111 verbunden ist. Die Steuerungseinheit ist über einen Signalweg 113 mit der Regi­ sterdatei 101, dem Addierer 102, der Abschneideschaltung 105 sowie mit weiteren nicht gezeigten Komponenten verbunden. Der Mikrocode-Speicher 111 enthält Befehle zum Steuern des Betriebs der verschiedenen Komponenten des Mikroprozessors 100. Die Steuerungseinheit ist betreibbar, um Befehle von einem Programmspeicher, beispielsweise von dem Speicher 107, zu empfangen. Die Steuerungseinheit decodiert diese Befehle und ruft ein entsprechendes Mikrocodeprogramm von dem Mikro­ code-Speicher 111 ab. Als Reaktion auf die Mikrocodebefehle, welche dieses Mikrocodeprogramm bilden, sendet die Steue­ rungseinheit 109 über den Signalweg 113 Signale zu den ver­ schiedenen Komponenten des Prozessors einschließlich der Re­ gisterdatei 101, des Addierers 103 und der Abschneideschal­ tungsanordnung 105.
Für einen Fachmann ist es offensichtlich, daß der Mikropro­ zessor 100 über einen Bus mit weiteren Prozessoren und/oder Peripheriegeräten verbunden ist. Diese Komponenten sind Fachleuten bekannt und werden daher nicht gezeigt.
Bei dem bevorzugten Ausführungsbeispiel enthält der Speicher 107 adressierbare Positionen, von denen jede 64 Bit breit ist. Ferner sind die Register in der Registerdatei 100 min­ destens 64 Bit breit, wobei die Wege zwischen dem Speicher 107 und der Registerdatei 101, zwischen der Registerdatei 101 und dem Addierer 103 und zwischen der Registerdatei 101 und der Abschneideschaltung 105 mindestens 64 Bit breit sind.
Bei einer Anwendung der Erfindung enthält der Speicher 107 digitalisierte Bilder. Es ist bekannt, daß bei der Bild­ verarbeitung arithmetische Operationen mit den Ganzzahlen durchgeführt werden, die die Daten darstellen, die einem gegebenen Bildelement (einem Pixel) zugeordnet sind. Diese Operationen erstrecken sich häufig über den dynamischen Be­ reich der Daten hinaus, der von der Grafikhardware unter­ stützt wird. Um ein unvorhersehbares Verhalten zu verhin­ dern, werden die Daten abgeschnitten, um in den Bereich zu fallen, der von der Anzeigehardware erwartet wird.
Ein Gerät beispielsweise, das in der Lage ist, 256 Inten­ sitätswerte darzustellen, würde 8-Bit- (1-Byte-) Pixel auf­ weisen. Eine Modifikation des Bildes, wie z. B. eine Kantenverbesserung, die mit einer normalen 4-Byte-Ganzzahlarith­ metik durchgeführt wird, würde in einigen Werten resultie­ ren, die kleiner als 0 oder größer als 255 sind.
Aus Darstellungsgründen werden die folgenden 64 Bit betrach­ tet:
Beispiel 1
Diese 64 Bit stellen beispielhaft dar, was in einer Spei­ cherposition in dem Speicher 107 gespeichert werden kann. Bei diesem Beispiel enthält jedes Halbwort (16 Bit) den nu­ merischen Wert für die Lichtintensität, die durch ein Pixel angezeigt werden soll. Jeder Pixelwert wird in einem Byte gehalten, während das andere Byte Nullen enthält. Bestimmte arithmetische Operationen, beispielsweise die, die Bildkom­ pressionsprotokollen, wie z. B. MPEG, zugeordnet sind, können bewirken, daß die Pixelwerte über die 8 Bit des niederstwer­ tigen Bytes seines Halbworts überlaufen. Eine arithmetische Operation (oder eine Serie von Operationen) kann beispiels­ weise das folgende Ergebnis bewirken:
Beispiel 2
Wenn der dynamische Bereich für Pixelwerte eines Geräts der Bereich von 0 bis 255 ist, werden die Werte in den Halbwor­ ten abgeschnitten, um mit dem annehmbaren Bereich überein­ zustimmen, um die unvorhersagbaren Ausgaben von diesen Halb­ worten, die kleiner als 0 und größer als 255 sind, zu ver­ hindern. Das Abschneiden wird derart durchgeführt, daß ne­ gative Werte durch 0 (00000000) und die, die größer als 255 sind, durch 255 (11111111) ersetzt werden.
Es existieren binäre Datenformate zum Darstellen vorzeichenbehafteter und vorzeichenloser Ganzzahlen. Das Zweierkomple­ mentformat ist die gebräuchlichste Darstellung für vorzei­ chenbehaftete Ganzzahlen und wird in dieser Beschreibung der bevorzugten Ausführungsbeispiele der Erfindung verwendet. Dies ermöglicht drei verschiedene Arten des Abschneidens ab­ hängig von dem Eingabe- und dem Ausgabetyp, nämlich das Ab­ schneiden einer vorzeichenlosen Eingabe zu einer vorzeichen­ losen Ausgabe, das Abschneiden einer vorzeichenbehafteten Eingabe zu einer vorzeichenlosen Ausgabe und das Abschneiden einer vorzeichenbehafteten Eingabe zu einer vorzeichenbehaf­ teten Ausgabe. Eine vierte Möglichkeit besteht darin, eine vorzeichenlose Eingabe zu einer vorzeichenbehafteten Ausgabe abzuschneiden. Gemäß dem bevorzugten Ausführungsbeispiel ist ein solches Abschneiden jedoch nicht erlaubt, wobei ein Ver­ such, ein solches Abschneiden durchzuführen, im Zurückgeben der Eingabedaten als das Ergebnis resultiert. Natürlich könnten alternative Ausführungsbeispiele ebenfalls das Ab­ schneiden einer vorzeichenlosen Eingabe zu einer vorzeichen­ behafteten Ausgabe erlauben.
Ein Befehl CLIP (CLIP = Abschneiden) leitet den Prozessor 100 an, um Ganzzahlwerte, die in einem Register in der Re­ gisterdatei 101 gespeichert sind, abzuschneiden. Der Befehl CLIP besitzt das folgende Format:
CLIP, xyz Quelle, Maske, Ziel
x gibt die Größe der Eingabedaten, d. h. D (D = Doppelwort) für 64 Bit, W (W = Wort) für 32 Bit, H (H = Halbwort) für 16 Bit und B (B = Byte) für 8 Bit an. y gibt an, ob die Eingabe vorzeichenlos (U; U = Unsigned) oder vorzeichenbehaftet (S; S = Signed) ist. Die Flag z gibt an, ob die Ausgabe zu einer vorzeichenlosen (U) oder zu einer vorzeichenbehafteten (S) Ganzzahl abgeschnitten werden soll. Die Maske erlaubt es, daß die Ganzzahlen, die in dem Quellenregister gespeichert sind, zu einem beliebigen Bereich abgeschnitten werden. Fer­ ner erlaubt die Maske das parallele Abschneiden aller Pixel­ werte, die in dem Register gespeichert sind. Bei einem Ausführungsbeispiel beträgt y = 0 für eine vorzeichenlose Ein­ gabe und y = 1 für eine vorzeichenbehaftete Eingabe. Auf ähnliche Weise beträgt z = 0 für eine vorzeichenlose Ausgabe und z = 1 für eine vorzeichenbehaftete Ausgabe.
Die Maske enthält eine 1 für jedes Bit, das sich außerhalb des Bereichs befindet, und eine 0 für jedes Bit, das sich innerhalb des Bereichs befindet.
Fig. 2 ist ein Blockdiagramm bestimmter Komponenten des Mi­ kroprozessors 100. Es zeigt die Baublöcke der Abschneide­ schaltung 100 und das Daten-, das Masken- und das Ausgabe­ register. Der Mikroprozessor 100 enthält ein Maskenregister 201, ein Datenregister 203 und ein Ausgaberegister 205. Je­ des Register 201 bis 205 ist in der Registerdatei 101 ent­ halten. Der Befehl CLIP zeigt dem Prozessor 100, welches Re­ gister in der Registerdatei er als Daten-, Masken- bzw. Aus­ gaberegister verwenden soll.
Der Mikroprozessor 100 enthält ferner die Abschneidelogik 105. Die Abschneidelogik 105 ist mit jedem Register 201 bis 205 verbunden.
Die Abschneidelogik 105 ist aus einem Satz wiederholter Schaltungsanordnungen aufgebaut. Die Abschneidelogik 105 enthält eine Doppelwort-Logikschaltung 207, zwei Wort-Logik­ schaltungen 209a-b, vier Halbwort-Logikschaltungen 211a-d, acht Byte-Logikschaltungen 213a-h und 64 Bit-Logikschaltun­ gen 215 (nicht einzeln benannt). Die Wort-Logikschaltungen 209 sind zueinander identisch, die Halbwort-Logikschaltungen 211 sind zueinander identisch, die Byte-Logikschaltungen 213 sind zueinander identisch und die Bit-Logikschaltungen 215 sind zueinander identisch. Was die verschiedenen wiederhol­ ten Schaltungen voneinander unterscheidet, besteht darin, wie sie mit anderen Schaltungskomponenten verbunden sind. Diese Verbindungen werden nachfolgend in Verbindung mit den Fig. 3-5 erörtert. Jedes Bit des Maskenregisters 201 und des Datenregisters 203 ist als Eingabe mit einer entsprechenden Bit-Logik 215 verbunden. Auf ähnliche Weise ist jedes Bit des Ausgaberegisters als Ausgabe mit der entspre­ chenden Bit-Logik 215 verbunden.
Die parallelen Ganzzahlen-Eingabedaten sind in einen oder mehrere Eingabeblöcke aufgeteilt. Jeder Eingabeblock könnte beispielsweise ein Halbwort sein, wobei in diesem Fall unter der Voraussetzung von 64-Bit-breiten Eingabedaten vier Ein­ gabeblöcke existieren würden, von denen jeder 16 Bit breit ist.
Fig. 3 ist ein Blockdiagramm der Doppelwort-Logik 207. Die­ se Figur zeigt die Schaltungsanordnung zum Bestimmen das Werts des Vorzeichenbits des Eingabedatenblocks, das jedem Byte der Ausgabedaten entspricht. Das vorderste Bit jedes Bytes in dem Datenregister ist mit einem oder mehreren Mul­ tiplexern (MUX) 301a-301h verbunden. Das Bit 63 ist bei­ spielsweise mit allen Multiplexern verbunden, während das Bit 7 lediglich mit dem Multiplexer 301a verbunden ist. Je­ der Multiplexer wird ausgewählt, indem die BHWD-Steuerungs­ leitungen verwendet werden (BHWD = Byte Half-word Word Double-Word = Byte Halbwort Wort Doppelwort). Die BHWD- Steuerungsleitungen sind durch den Wert des Feldes X des Befehls CLIP eingestellt. Ausgaben DB0-DB7 sind Eingaben in die Logik 105 in Fig. 2 und insbesondere in einen Eingang VORZEICHEN in der Logik 215 in Fig. 6. Die Ausgaben DB0-DB7 steuern diese Vorzeicheneingaben auf B0 bis B7 in der Logik 213 in Fig. 2. (Bei dem bevorzugten Ausführungsbeispiel sind DB0 bis DB7 für eine vorzeichenlose Eingabe auf Null eingestellt).
Die folgende Tabelle zeigt für jeden Multiplexer, von wel­ chem Bit des Datenregisters 203 die Ausgabe dieses Multi­ plexers abhängig von dem Wert der BHWD-Steuerungsleitungen genommen wird.
Tabelle 1
Tabelle 2, welche unten gezeigt ist, enthält einen Pseudo­ code für jeden Typ einer Abschneideoperation. Der Pseudocode bezieht sich auf jede Dateneinheit (z. B. Byte, Halbwort, Wort, Doppelwort) in dem Datenregister 203. In Tabelle 2 bedeutet die Bezeichnung "ODER (M(i)D(i))", daß "für alle Werte i, M(i) und D(i) UND-mäßig verknüpft werden, und die Ergebnisse ODER-mäßig verknüpft werden" (wenn z. B. M = 0000 und D = 0101 sind, ergibt ODER M(i)D(i)) Null (0), wenn da­ gegen M = 0100 und D = 0101 gelten, ergibt ODER (M(i)D(i)) Eins (1)).
Abschneidetyp
Für jede Dateneinheit k (z. B. für ein Byteabschneiden für jedes Byte; für ein Wortabschneiden, für jedes Wort),
wobei DB(k) = das Vorzeichenbit für die Dateneinheit k ist (es wird angenommen, daß für eine vorzeichenlose Eingabe DB(k) = 0 gilt); und
wobei D(i) das Datenbit für das i-te Bit ist, M(i) das Maskenbit für das i-te Bit ist, und M Maskenbits sind, die den Wert 1 haben, gilt fogendes:
Bei diesem Ausführungsbeispiel, bei dem der Typ der Eingabe und der Ausgabe von dem Abschneidebefehl-Operationscode er­ halten wird, sind keine Datentypinformationen in der Maske codiert. Daher hängt die Maske nicht von dem Datentyp der Eingaben und Ausgaben ab, mit Ausnahme davon, daß bei einer vorzeichenbehafteten Ausgabe die Maske ebenfalls eine 1 für das Vorzeichenbit jeder Dateneinheit enthält. Die Maske, die verwendet wird, um entweder vorzeichenbehaftete oder vorzei­ chenlose Halbwort-(16-Bit-)Ganzzahleneingaben in eine vor­ zeichenlose Byte-(8-Bit-)Ganzzahlenausgabe abzuschneiden, ist nachfolgend gezeigt:
Beispiel 3(a)
Die äquivalente Maske zum Abschneiden einer vorzeichenbehaf­ teten Eingabe zu einem vorzeichenbehafteten Byteergebnis ist nachfolgend gezeigt:
Beispiel 3(b)
Wenn die als das Bitmuster von Beispiel 3(a) gezeigte Maske auf das vorzeichenlose Eingabewort, das als Bitmuster (2) gezeigt ist, angewendet wird, wird das folgende vorzeichen­ lose Ganzzahlergebnis erhalten (die erste Zeile ist das Ein­ gabebitmuster von Beispiel 2, die zweite Zeile ist das Maskenbitmuster von Beispiel 3(a) und die dritte Zeile ist das Ergebnis):
Beispiel 4
Wenn die als das Bitmuster von Beispiel 3(b) gezeigte Maske auf das vorzeichenbehaftete Eingabewort, das als Bitmuster (2) gezeigt ist, angewendet wird, wird das folgende vorzei­ chenbehaftete Ganzzahlergebnis erhalten (die erste Zeile ist das Eingabebitmuster von Beispiel 2, die zweite Zeile ist das Maskenbitmuster von Beispiel 3(b), und die dritte Zeile ist das Ergebnis):
Beispiel 5
Wenn die als das Bitmuster von Beispiel 3(a) gezeigte Maske auf das vorzeichenbehaftete Eingabewort, das als Bitmuster (2) gezeigt ist, angewendet wird, wird das folgende vorzei­ chenlose Ganzzahlergebnis erhalten (die erste Linie ist das Eingabebitmuster von Beispiel 2, die zweite Linie ist das Maskenbitmuster von Beispiel 3(a), und die dritte Zeile ist das Ergebnis):
Beispiel 6
Fig. 4 ist ein Schaltbild einer der Halbwort-Logikschaltun­ gen, nämlich der Halbwort-Logikschaltung 211d. Die Halb­ wort-Logik 211d enthält die zwei Byte-Logikschaltungen 213g und 213h. Die Byte-Logikschaltung 213h entspricht den Bits 0 bis 7 des Daten-, des Masken- und des Ausgabeworts. Auf ähn­ liche Weise entspricht die Byte-Logikschaltung 213g den Bits 8 bis 15. Jede der Byte-Logikschaltungen 213 enthält Bit-Lo­ gikschaltungen 215 für jedes Bit, das ihr entspricht.
Das Daten- und das Maskenregister sind mit der Abschneidelo­ gik derart verbunden, daß die Bit in dem Daten- und in dem Maskenregister, die einander entsprechen, in die Byte-Logik­ schaltungen 213 eingegeben werden, der diese Bit entspre­ chen. Die Byte-Logikschaltungen enthalten alle acht XOR-Gat­ ter 401 (XOR = EXKLUSIV-ODER-Verknüpfung), wobei jede einem Datenbit entspricht. Jedes der XOR-Gatter 401 weist zwei Eingaben auf, nämlich das Datenbit, dem es entspricht, und das Vorzeichenbit, welches für das entsprechende Byte be­ stimmt wird, wie es in Fig. 3 gezeigt ist.
Die Ausgaben von den XOR-Gattern 401 werden bitweise mit ih­ ren entsprechenden Maskenbit in AND-Gattern 403 (AND = UND- Verknüpfung) mittels der logischen UND-Verknüpfung ver­ knüpft. Die Ausgaben dieser UND-Verknüpfungsoperation werden zusammen mit der Ausgabe aus einem Größenauswahlgatter 407 mittels der ODER-Verknüpfung verknüpft (in einem Gatter 405). Die Ausgabe des OR-Gatters (OR = ODER-Verknüpfung) ist das Signal CLIP des Pseudocodes von Tabelle 2. Das Signal CLIP zeigt an, ob die Daten abgeschnitten werden müssen, oder ob sie zu den Ausgaberegistern 205 weitergeleitet wer­ den können. Das Signal CLIP wird in jede der Bit-Logikschal­ tungen 215 eingegeben.
Jede Byte-Logikschaltung 213 mit Ausnahme der vordersten Byte-Logikschaltung 213a weist ein Größenauswahlgatter 407 auf. Jedes Größenauswahlgatter 407 ist ein AND-Gatter. Eine Eingabe in jedes Größenauswahlgatter 407 ist der Wert des Signals CLIP für die nächste höhere Byte-Logikschaltung 213. Jedes Größenauswahlgatter 407 empfängt ferner als Eingabe ein Signal 409, das anzeigt, ob das nächste höhere Byte ein Teil derselben Eingabedaten wie das vorliegende Byte ist. Das Signal 409 hängt von der Größe des Eingabeblocks ab und wo das spezielle fragliche Byte in das Eingaberegister 203 paßt. Fig. 5 zeigt die Eingaben in die verschiedenen Größenauswahlgatter 407 für die acht Byte in einem 64-Bit- Register. Für jede der Byte-Logikschaltungen 213b, 213d, 213f und 213h weist das Signal 409 den Wert "H oder W oder D" auf, wobei H = 1 ist, wenn das Eingaberegister in Halb­ wort-Grenzen aufgeteilt ist, W = 1 ist, wenn das Eingabe­ register in Wort-Grenzen aufgeteilt ist, und D = 1 ist, wenn das Eingaberegister in Doppelwort-Grenzen aufgeteilt ist (d. h., daß das Register nur eine Eingabe aufweist). Wenn H, W und D alle 0 sind, ist das Eingaberegister in Byte-Grenzen aufgeteilt. Für jede der Byte-Logikschaltungen 213c, 213e und 213g ist das Signal 409 "W oder D".
Die nachfolgende Tabelle 3 ist eine Wahrheitstabelle für die Operation der Bit-Logikschaltungen 215 in Fig. 6. Tabelle 3 ist in drei Teiltabellen unterteilt, wobei Tabelle 3a den Fall vorzeichenbehaftete Eingabe/vorzeichenbehaftete Ausga­ be, Tabelle 3b den Fall vorzeichenbehaftete Eingabe/vorzei­ chenlose Ausgabe und Tabelle 3c den Fall vorzeichenlose Ein­ gabe/vorzeichenlose Ausgabe beschreibt.
Tabelle 3a
Wahrheitstabelle für die Bit-Logik 215 für den Fall vorzeichenbehaftete Eingabe/vorzeichenbehaftete Ausgabe
Tabelle 3b
Wahrheitstabelle für die Bit-Logik 215 für den Fall vorzeichenbehaftete Eingabe/vorzeichenlose Ausgabe
Tabelle 3c
Wahrheitstabelle für die Bit-Logik 215 für den Fall vorzeichenlose Eingabe/vorzeichenlose Ausgabe
Fig. 6 ist ein Schaltbild der Bit-Logikschaltungen 215, die den Wahrheitstabellen von Tabelle 3 entsprechen.
Bei dem in Verbindung mit den Fig. 1 bis 6 erörterten Ausführungsbeispiel wird der Typ des Abschneidens durch den Befehl selbst mittels zweier Operationscode-Vervollständi­ gungsbit y und z angezeigt und zu der Abschneideschaltung als Signale EIN_TYP und AUS_TYP geleitet.
Es existieren drei alternative Ausführungsbeispiele, die Bit in dem Maskenregister verwenden, um bestimmte oder alle An­ forderungen nach den Operationscode-Vervollständigungsbit y (vorzeichenbehaftete/vorzeichenlose Eingabe) und/oder z (vorzeichenbehaftete/vorzeichenlose Ausgabe) zu entfernen.
Die drei alternativen Ausführungsbeispiele sind in Tabelle 4 zusammengefaßt.
Tabelle 4 Verwendung der Masken- und Vervollständiger-Bits, um den Datentyp der Eingabe und Ausgabe bei al­ ternativen Ausführungsbeispielen anzuzeigen Ausführungsbeispiel II
Maske: AXXX XXXX XXXX XXXX;
A: Eingabetyp; A = 0, vorzeichenbehaftet;
A = 1, vorzeichenlos;
Der Vervollständiger z in dem Operations­ code steuert die Wahl des Ausgabetyps.
Ausführungsbeispiel III
Maske: ABXX XXXX XXXX XXXX;
A: Eingabetyp; A = 0, vorzeichenbehaftet;
A = 1, vorzeichenlos;
wenn A = 1, dann ist B nicht steuerbar;
B: Ausgabe, wenn A eine vorzeichenbe­ haftete Eingabe anzeigt:
B = 0, vorzeichenbehaftete Ausgabe;
B = 1, vorzeichenlose Ausgabe.
Ausführungsbeispiel IV
Maske: AXXX XXXX XXXX XXXX;
A: Ausgabetyp; A = 0, vorzeichenbehaftet;
A = 1, vorzeichenlos;
Vervollständiger y im Operationscode für die Eingabetyp-Auswahl.
Bei dem zweiten Ausführungsbeispiel wird das höchstwertige Bit der Maske, d. h. Bit A, verwendet, um anzuzeigen, ob die Eingabedaten vorzeichenbehaftet oder vorzeichenlos sind (ein Operationscode-Vervollständiger z enthält die Ausgabedaten­ typ-Auswahl). Dies kann durchgeführt werden, da kein Grund besteht, eine vorzeichenbehaftete 16-Bit-Eingabe zu einer vorzeichenbehafteten 16-Bit-Ausgabe abzuschneiden, wobei bei vorzeichenbehafteten 16-Bit-Eingabedaten das sechzehnte Bit das Vorzeichenbit sein muß und daher niemals wegmaskiert werden würde. Bei dem nachfolgend beschriebenen Ausführungs­ beispiel beträgt A für vorzeichenbehaftete Eingabedaten 0 und für vorzeichenlose Eingabedaten 1.
Bei dem dritten Ausführungsbeispiel wird das höchstwertige Bit in der Maske, d. h. Bit A, verwendet, um anzuzeigen, ob die Eingabedaten vorzeichenbehaftet oder vorzeichenlos sind. Wenn die Eingabedaten vorzeichenbehaftet sind, teilt das Maskenbit B der Hardware-Zustandsmaschine mit, ob die Aus­ gabe zu einem vorzeichenbehafteten oder vorzeichenlosen Wert abgeschnitten werden soll, wodurch der Bedarf nach dem Ope­ rationscode-Vervollständiger z entfällt. wird. Wenn B gleich 0 ist, schneidet die Hardware die Ausgabe zu vorzeichenbe­ hafteten Ganzzahlen ab, und wenn B gleich 1 ist, schneidet die Hardware zu vorzeichenlosen Ganzzahlen ab. Es ist mög­ lich, das Bit B zu verwenden, um den Ausgabedatentyp zu co­ dieren, da, wenn auf eine vorzeichenbehaftete 15-Bit-Ausgabe abgeschnitten wird, das 15. Bit, welches das Bit ist, das sich unter der Steuerung des Maskenbits B befindet, das Vor­ zeichenbit ist und somit nicht abgeschnitten werden braucht.
Bei dem vierten Ausführungsbeispiel steuert das Operations­ code-Vervollständigungsbit y den Eingabedatentyp und das Maskenbit A steuert die Ausgabe. Wenn A gleich 0 ist, schneidet die Hardware zu einer vorzeichenbehafteten Ausgabe ab, und wenn A gleich 1 ist, schneidet die Hardware zu einer vorzeichenlosen Ausgabe ab. Die Verwendung des Operations­ code-Vervollständigers y bei der Eingabespezifikation liefert der Hardware ein früheres Wissen über den Eingabetyp, um die Zeitgebung zu erleichtern.
Tabelle 4a enthält Beispiele für das vierte Ausführungsbei­ spiel und den Fall, bei dem die Eingabe ein Halbwort ist, für den Fall einer vorzeichenbehafteten Ausgabe.
Tabelle 4a
Beispiele des Abschneidens unter Verwendung ei­ nes Vervollständigungsbits und der vorzeichen­ behafteten Ausgabe
Das Vorzeichenbit der Maske gibt an, ob die Eingabe als vor­ zeichenbehaftet oder vorzeichenlos behandelt wird. Der fol­ gende Pseudocode beschreibt die Abschneideoperation:
Tabelle 4b
Pseudocode zum Abschneiden zu einer vorzeichen­ behafteten Ausgabe unter Verwendung eines Vervollständigungsbits
Das folgende Beispiel stellt das Abschneiden für den vorzei­ chenlosen Fall unter Verwendung eines Vervollständigungsbits dar:
Tabelle 4c
Abschneiden zu einem vorzeichenlosen Ergebnis unter Verwendung eines Vervollständigungsbits
Der entsprechende Pseudocode ist nachfolgend gezeigt:
Tabelle 4d
Pseudocode zum Abschneiden zu einem vorzeichen­ losen Ergebnis unter Verwendung eines Vervoll­ ständigungsbits
Das dritte Ausführungsbeispiel verwendet die Tatsache, daß das führende Bit der Maske für den vorzeichenlosen Fall im­ mer 1 ist. Dies ist aufgrund der Tatsache der Fall, daß das Abschneiden zu der vollen Breite der Eingabedaten nicht not­ wendig ist, z. B. für Halbworte wird das Abschneiden auf den vollen 16-Bit-Bereich niemals durchgeführt. Auf ähnliche Weise macht es für eine vorzeichenbehaftete Ausgabe keinen Sinn, zu einem vorzeichenbehafteten 15-Bit-Bereich abzu­ schneiden. Daher ist es möglich, die zwei führenden Bit der Maske zu verwenden, um die Fälle zu unterscheiden.
Die folgenden Halbwort-Beispiele veranschaulichen das dritte Ausführungsbeispiel:
Tabelle 5
Beispiele des Abschneidens, wobei der Abschneidetyp in den ersten beiden Bit der Maske codiert ist
Der folgende Pseudocode zeigt die Funktionsweise der Ab­ schneideoperation, wobei der Typ des Abschneidens in den ersten beiden Bit der Maske codiert ist:
Tabelle 5b
Pseudocode zum Abschneiden, bei dem der Typ des Abschneidens in den ersten beiden Bit der Maske codiert ist
Die Abschneidelogik 105 ist betreibbar, um eines der drei alternativen Ausführungsbeispiele zu verwenden.
Ein alternatives Ausführungsbeispiel läßt Ganzzahlen mit variabler Breite zu. Bei dem alternativen Ausführungsbei­ spiel kann jede Ganzzahl, die abgeschnitten werden soll, eine andere Breite als jede andere Ganzzahl aufweisen, die in einem gemeinsamen Register gespeichert ist, wobei jede Ganzzahl zu einem anderen Bereich abgeschnitten werden kann.
Als Beispiel enthält das folgende 64-Bit-Bitmuster sechs Eingabeelemente, von denen jedes 10 Bit breit ist:
Beispiel 7
Die Zahlen 1 und 6 sind positive Zahlen, die in den Aus­ gabebereich passen. Die Zahlen 2 und 5 sind positive Zahlen, die nicht in den Ausgabebereich passen. Die Zahl 4 ist eine negative Zahl, die in den Ausgabebereich paßt und die Zahl 3 ist eine negative Zahl, die nicht in den vorzeichenbehafte­ ten Ausgabebereich paßt. Der Pseudocode des ersten Ausfüh­ rungsbeispiels wird zum Abschneiden verwendet. Das folgende Bitmuster wird verwendet, um sechs 10-Bit-Zahlen zu einem vorzeichenlosen 8-Bit-Bereich abzuschneiden:
Beispiel 8
Der Pseudocode von Tabelle 1 wird verwendet, um die Ab­ schneideoperation durchzuführen. Das Anwenden des Bitmusters von Beispiel 8 auf das Bitmuster von Beispiel 7 unter Ver­ wendung des Verfahrens des Pseudocodes von Tabelle 1 resul­ tiert in der folgenden Ausgabe:
Beispiel 9
Um eine Eingabe zu einem vorzeichenbehafteten 8-Bit-Bereich abzuschneiden, wird das folgende Masken-Bitmuster angewen­ det:
Beispiel 10
Das Anwenden der Maske von Beispiel 10 auf die Eingabe von Beispiel 7 unter Verwendung des Pseudocodes von Tabelle 1 für eine vorzeichenbehaftete Ausgabe erzeugt das folgende Ergebnis:
Der Abschneidebefehl für das vorzeichenlose und das vorzei­ chenbehaftete Abschneiden von Ganzzahlen des alternativen Ausführungsbeispiels lautet folgendermaßen:
CLIP, t Quelle, Maske, Ziel,
wobei t entweder U für den vorzeichenlosen Fall oder S für den vorzeichenbehafteten Fall ist.
Es wird angemerkt, daß der Befehl keine Angabe bezüglich der Eingabedatengröße enthält, oder ob eine parallele Ausführung verwendet werden soll. Die Hardware leitet diese Informati­ onen automatisch von der Maske ab. Es wird angenommen, daß die Daten in dem Register rechts ausgerichtet sind. Die er­ ste 1 in der Maske gibt die Position des Vorzeichenbits des ersten Datenelements an. Die erste 0 gibt die Position des vordersten Bits in dem Ausgabefeld an. Die nächste 1 gibt das Vorzeichen der nächsten Zahl an. Die nächste 0 gibt das vorderste Bit in dem nächsten Ausgabefeld an, usw., bis das Ende des Maskenworts erreicht ist.

Claims (27)

1. Verfahren zum Betreiben eines digitalen Prozessors (100), um binäre Ganzzahlen unter Verwendung eines Be­ fehls unter Verwendung einer Bitmaske zu einem spezifi­ zierten Bereich abzuschneiden, mit folgenden Schritten:
  • a) Definieren eines Abschneidebefehls, der ein Masken­ feld aufweist;
  • b) Annehmen einer Maske von dem Maskenfeld, wobei für jedes Bit, das sich außerhalb des Bereichs befindet, ein Bit in der Maske eingestellt ist, und wobei für Bits, die sich innerhalb des Bereichs befinden, Bits in der Maske nicht eingestellt sind; und
  • c) Bestimmen, ob die Eingabe außerhalb des Bereichs für die Ausgabe ist, aus den Maskenbits und den Daten­ bits;
  • d) unter Verwendung einer definierten Bool'schen Be­ ziehung, Anwenden der Maske auf Eingabeganzzahlen, derart, daß alle Eingabeganzzahlen außerhalb des Be­ reichs auf die Größe in dem Bereich abgeschnitten werden, die der Ganzzahl am nächsten liegt, wodurch Ausgabeganzzahlen innerhalb eines Bereichs erzeugt werden, der durch die Maske spezifiziert ist.
2. Verfahren gemäß Anspruch 1, bei dem die Maskierungsope­ ration gemäß folgender Schritte durchgeführt wird:
Verwenden der Maske, um für jedes Byte zu bestimmen, ob ein Abschneiden notwendig ist;
wenn das Abschneiden notwendig ist, Verwenden der Maske, um zu definieren, wo die Ausgabe auf 0 eingestellt wird, und wo die Ausgabe auf 1 eingestellt wird.
3. Verfahren gemäß Anspruch 2, bei dem der Schritt des Be­ stimmens, ob ein Abschneiden notwendig ist, ferner fol­ genden Schritt enthält:
Erhalten eines Abschneidesignals eines Bytes nächst­ höherer Ordnung und UND-mäßiges Verknüpfen des Abschnei­ designals höherer Ordnung mit einem Größenausdruck für das Byte, wodurch ein Größenauswahlsignal für das Byte erzeugt wird.
4. Verfahren gemäß Anspruch 3, das ferner den Schritt des UND-mäßigen Verknüpfens der Eingabebits in dem Byte mit ihren entsprechenden Maskenbits umfaßt.
5. Verfahren gemäß Anspruch 4, das ferner den Schritt des ODER-mäßigen Verknüpfens der Ergebnisse der UND-Ver­ knüpfung der Eingabebits und der Maskenbits mit dem Größenauswahlsignal für das Byte umfaßt.
6. Verfahren gemäß Anspruch 1, bei dem der Abschneidebefehl bewirkt, daß der digitale Prozessor Eingabeganzzahlen mit einem ersten Datentyp auf Ausgabeganzzahlen mit ei­ nem zweiten Datentyp abschneidet.
7. Verfahren gemäß Anspruch 6, bei dem der erste Datentyp und der zweite Datentyp aus der Gruppe ausgewählt sind, die die Elemente vorzeichenbehaftete Daten und vorzei­ chenlose Daten umfaßt.
8. Verfahren gemäß Anspruch 7, bei dem der Abschneidebefehl Eingabedaten von sowohl vorzeichenbehafteten als auch vorzeichenlosen Ganzzahlen und abgeschnittene Ausgabe­ daten sowohl vorzeichenbehafteter als auch vorzeichen­ loser Ganzzahlen anzeigen kann, und bei dem Operations­ code-Vervollständigerbits des Befehls die Datentypen der Ganzzahlen in den Eingabedaten und in den Ausgabedaten anzeigen.
9. Verfahren gemäß Anspruch 8, bei dem der Abschneidebefehl Operationscode-Vervollständigerbits zum Spezifizieren der Datentypen enthält.
10. Verfahren gemäß Anspruch 8, bei dem die Maske Codes zum Spezifizieren der Datentypen enthält.
11. Verfahren gemäß Anspruch 7, bei dem der Abschneidebefehl Eingabedaten sowohl vorzeichenbehafteter als auch vor­ zeichenloser Ganzzahlen und abgeschnittene Ausgabedaten sowohl vorzeichenbehafteter als auch vorzeichenloser Ganzzahlen anzeigen kann, und bei dem die Maske die Da­ tentypen von Ganzzahlen in den Eingabedaten und in den Ausgabedaten anzeigt.
12. Verfahren gemäß einem der vorhergehenden Ansprüche 1 bis 11, bei dem die Maskierungsoperation gemäß der folgenden Schrit­ te durchgeführt wird:
  • - Bestimmen für jedes Byte in der Ausgabe, ob das Ab­ schneiden notwendig ist;
  • - Bestimmen des Abschneidetyps;
  • - für vorzeichenbehaftete Eingabe zu vorzeichenbehafteter Ausgabe:
    wenn das Abschneiden nicht notwendig ist;
    für jedes eingestellte Maskenbit:
    stelle das Ausgabebit zu dem Vorzeichen­ bit des Eingabedatenblocks ein;
    für jedes andere Bit:
    stelle das Ausgabebit zu dem Datenbit ein;
    wenn das Abschneiden notwendig ist;
    wo die Maske eingestellt ist;
    stelle das Ausgabebit auf das Vorzeichen­ bit des Eingabedatenblocks ein;
    wo die Maske nicht eingestellt ist;
    stelle das Ausgabebit zu dem Inversen des Vorzeichenbits des Eingabedatenblocks ein;
  • - für vorzeichenbehaftete Eingabe zu vorzeichenloser Aus­ gabe:
    wenn das Abschneiden nicht notwendig ist;
    wenn die Eingabe negativ ist;
    stelle die Ausgabe auf 0 ein;
    wenn die Eingabe positiv ist;
    wo die Maske 0 ist,
    kopiere die Eingabe zu der Ausgabe, und
    wo die Maske 1 ist,
    stelle die Ausgabe zu 0 ein;
    außerdem wenn das Abschneiden notwendig ist;
    wenn die Eingabe negativ ist,
    stelle die Ausgabe zu 0 ein; sonst
    stelle die Ausgabe auf NICHT-Maskieren ein;
  • - für vorzeichenlose Eingabe zu vorzeichenloser Ausgabe:
    wenn das Abschneiden nicht notwendig ist;
    schreibe das Eingabebyte in das Ausgabeziel;
    außerdem wenn das Abschneiden notwendig ist,
    wo die Maske eingestellt ist,
    stelle die Ausgabe zu 0 ein, und
    wo die Maske nicht eingestellt ist,
    stelle die Ausgabe zu 1 ein.
13. Verfahren zum Betreiben eines digitalen Prozessors (100), um binäre Eingabeganzzahlen unter Verwendung einer Bitmaske parallel abzuschneiden, mit folgenden Schritten:
  • a) Annehmen von Eingabedaten mit zumindest einem Einga­ bedatenblock;
  • b) Annehmen einer Maske mit einem Bit, das jedem Bit in den Eingabedaten entspricht;
  • c) unter Verwendung einer definierten logischen Bezieh­ ung, Bestimmen, ob jede Eingabedateneinheit in jedem Datenblock ein Dateneinheit außerhalb eines Bereichs darstellt, aus der Maske und den Daten; und
  • d) unter Verwendung einer zweiten definierten logischen Beziehung, Anwenden der Maske auf die Eingabedaten, derart, daß jeder Eingabedatenblock in den Eingabe­ daten parallel abgeschnitten wird, um Ausgabedaten zu erzeugen, die die abgeschnittenen Ganzzahlen ent­ halten.
14. Verfahren gemäß Anspruch 13, bei dem der digitale Pro­ zessor (100) die Ganzzahlen als Reaktion auf einen ein­ zelnen Befehl mit einem Maskenfeld, einem Datenfeld und einem Ausgabefeld abschneidet, und bei dem das Masken­ feld auf die Maske zeigt, das Datenfeld auf die Eingabe­ daten zeigt, und das Ausgabefeld auf eine Speicherposi­ tion für die Ausgabedaten zeigt.
15. Verfahren gemäß Anspruch 14, bei dem die Eingabeganzzah­ len und die abgeschnittenen Ausgabeganzzahlen spezifi­ zierte Datentypen aus dem Satz von vorzeichenlosen Ganz­ zahlen und von vorzeichenbehafteten Ganzzahlen sind.
16. Verfahren gemäß Anspruch 15, bei dem die Datentypen der Eingabeganzzahlen und der Ausgabeganzzahlen durch Opera­ tionscode-Vervollständigerbits angezeigt sind.
17. Verfahren gemäß Anspruch 15, bei dem zumindest einer der Datentypen der Eingabeganzzahlen und der Ausgabeganzzah­ len durch Codes, die in der Maske enthalten sind, ange­ zeigt wird.
18. Schaltung (100) zum Abschneiden von Ganzzahlen, die in einer Eingabequelle (203) gespeichert sind, die in min­ destens einen Eingabedatenblock logisch aufgeteilt ist, unter Verwendung einer Bitmaske, wobei jeder Eingabe­ datenblock eine Größe aufweist, um ein abgeschnittenes Ergebnis zu erzeugen, das in einem Ausgabeziel (205) gespeichert wird, mit folgenden Merkmalen:
  • - einer Steuerungsschaltung (109), die betreibbar ist, um einen Abschneidebefehl als Eingabe anzunehmen, wobei der Abschneidebefehl die Größe des Eingabedatenblocks defi­ niert und jeder Eingabedatenblock eine Ganzzahl enthält;
  • - einer Maskenquelle (201), die mit der Steuerungsschal­ tung zum Speichern einer Maske, die jedem Eingabedaten­ block entspricht, verbunden ist;
  • - einer Abschneidebestimmungsschaltung (401, 403, 405, 407, 409) die betreibbar ist, um die Maske mit der Ein­ gabe, die in der Eingabequelle gespeichert ist, zu ver­ gleichen, wodurch bestimmt wird, ob das Abschneiden für jeden Ausgabeblock benötigt wird, und um ein Abschnei­ designal zu erzeugen, dessen Wert von der Abschneide­ bestimmung abhängt; und
  • - mindestens eine Bitebene-Abschneideschaltung (215), die mit der Abschneide-Bestimmungsschaltung, mit der Einga­ bequelle (203), mit der Maskenquelle (201) und mit dem Ausgabeziel (205) verbunden ist, derart, daß jede Bit­ ebene-Abschneideschaltung (215) eine 1-zu-1-Abbildung zwischen der Eingabequelle (203) und dem Ausgabeziel (205) schafft; und
  • - wobei alle Bitebene-Abschneideschaltungen (215), die einem Eingabedatenblock entsprechen, kollektiv selektiv als Reaktion auf das Abschneidesignal betreibbar sind, um die Maske gemäß einer zweiten definierten logischen Beziehung auf die Eingabe anzuwenden, derart, daß die Bits, die Bits innerhalb des Bereichs entsprechen, in dem Ausgabeziel zu einem Bitmuster eingestellt werden, das eine Zahl, die sich in dem Bereich befindet, dar­ stellt, die bezüglich ihres Wertes dem Wert der Ganz­ zahl, die in dem Eingabedatenblock enthalten ist, am nächsten liegt.
19. Schaltung gemäß Anspruch 18, bei der jeder Ausgabeblock ein Byte ist, und bei der die Abschneidebestimmungs­ schaltung ein Abschneidesignal für jedes Byte in dem Ausgabeziel erzeugt.
20. Schaltung gemäß Anspruch 18, bei der der Abschneide­ befehl spezifiziert, daß jeder Eingabedatenblock aus dem Satz Doppelwort, Wort, Halbwort und Byte ausgewählt ist.
21. Schaltung gemäß Anspruch 20, die zum Abschneiden der Ganzzahlen, wobei jede Ganzzahl in der Eingabequelle gespeichert ist, ein Vorzeichenbit aufweist, und die hierarchisch organisiert ist und ferner folgende Merk­ male aufweist:
eine Bytevorzeichen-Auswahlschaltung;
mindestens eine Byteebene-Schaltung (213), die mit der Vorzeichen-Auswahlschaltung verbunden ist, derart, daß die Vorzeichen-Auswahlschaltung den Wert des Vorzeichen­ bits der Ganzzahl, die der Byteebene-Schaltung ent­ spricht, zu der Byteebene-Schaltung liefert, wobei die Byteebene-Schaltung eine Mehrzahl der Bitebene-Schaltun­ gen (215) enthält.
22. Schaltung gemäß Anspruch 21, welche ferner zumindest eine zusätzliche Ebene hierarchischer Schaltungen auf­ weist, von denen jede zumindest eine Byteebenenschaltung umfaßt, wobei Steuersignale von den zusätzlichen Ebenen hierarchischer Schaltungen durch die Byteebenenschaltun­ gen zu den Bitebenenschaltungen geleitet werden, derart, daß jede Bitebenenschaltung auf das Abschneidesignal an­ spricht, um die Maske selektiv auf ein Bit in den Einga­ bedaten, das der Bitebenenschaltung entspricht, anzuwen­ den.
23. Schaltung gemäß Anspruch 21, bei der die Abschneidebe­ stimmungsschaltung (401, 403, 405, 407, 409) über die Byteebene-Schaltungen aufgeteilt ist, derart, daß jede Byteebene-Schaltung (213) mit Ausnahme der vordersten Byteebene-Schaltung (213a) ein Größenauswahl-UND-Gatter aufweist, bei dem ein Eingang mit dem Abschneidesignal der nächsten höheren Byteebene-Schaltung (213) verbunden ist und ein zweiter Eingang mit einer Signalleitung ver­ bunden ist, deren Wert von der Größe des Eingabedaten­ blocks und von der Position der Byteebene-Schaltung (213) bezüglich der anderen Byteebene-Schaltungen (213) abhängt.
24. Schaltung gemäß Anspruch 21, bei der jede Bitebene- Schaltung (215) mit dem Byteebene-Abschneidesignal (c), mit der Bytevorzeichen-Auswahlschaltung (db), mit einem Maskenbit in der Maske, das der Bitebene-Schaltung (m) entspricht, mit einem Datenbit in der Eingabequelle, das der Bitebene-Schaltung (215) (d) entspricht, und mit einem Abschneidetypsignal verbunden ist; und bei der die Bitebene-Schaltung eine Mehrzahl von Logikgattern auf­ weist, welche ein Ausgabebit (o) gemäß einer Wahrheits­ tabelle erzeugen
25. Schaltung gemäß Anspruch 24, bei der die Wahrheits­ tabelle folgende Werte für ein Abschneiden einer vor­ zeichenbehafteten Eingabe zu einer vorzeichenbehafteten Ausgabe aufweist:
bei der die Wahrheitstabelle die folgenden Werte für ein Abschneiden einer vorzeichenbehafteten Eingabe zu einer vorzeichenlosen Ausgabe aufweist:
und bei der die Wahrheitstabelle die folgenden Werte für ein Abschneiden einer vorzeichenlosen Eingabe zu einer vorzeichenlosen Ausgabe aufweist:
26. Schaltung gemäß Anspruch 18, bei der das Abschneiden ge­ mäß einem Abschneidetyp ausgeführt wird, der aus der Gruppe ausgewählt wird, die folgende Mitglieder auf­ weist: Abschneiden einer vorzeichenbehafteten Eingabe zu einer vorzeichenbehafteten Ausgabe, Abschneiden einer vorzeichenbehafteten Eingabe zu einer vorzeichenlosen Ausgabe, und Abschneiden einer vorzeichenlosen Eingabe zu einer vorzeichenlosen Ausgabe.
27. Schaltung gemäß Anspruch 26, bei der der Abschneidetyp in der Maske codiert ist.
DE19730727A 1997-04-07 1997-07-17 Verfahren und Schaltung zum Abschneiden von Ganzzahlen unter Verwendung einer Maske Expired - Fee Related DE19730727C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/826,817 US5801977A (en) 1995-01-17 1997-04-07 System and method for clipping integers

Publications (2)

Publication Number Publication Date
DE19730727A1 DE19730727A1 (de) 1998-10-08
DE19730727C2 true DE19730727C2 (de) 2001-06-07

Family

ID=25247613

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19730727A Expired - Fee Related DE19730727C2 (de) 1997-04-07 1997-07-17 Verfahren und Schaltung zum Abschneiden von Ganzzahlen unter Verwendung einer Maske

Country Status (2)

Country Link
US (1) US5801977A (de)
DE (1) DE19730727C2 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0845741B1 (de) 1996-11-29 2003-04-16 Matsushita Electric Industrial Co., Ltd. Prozessor mit verbessertem Rundungsprozess
ITRM20030354A1 (it) * 2003-07-17 2005-01-18 Micron Technology Inc Unita' di controllo per dispositivo di memoria.
US7610407B2 (en) * 2003-12-11 2009-10-27 Hewlett-Packard Development Company, L.P. Method for exchanging information between at least two participants via at least one intermediary to limit disclosure between the participants
US7958177B2 (en) * 2006-11-29 2011-06-07 Arcsoft, Inc. Method of parallelly filtering input data words to obtain final output data words containing packed half-pel pixels
US8437410B1 (en) 2007-11-21 2013-05-07 Marvell International Ltd. System and method to execute a clipping instruction
US8194977B2 (en) * 2008-12-09 2012-06-05 Microsoft Corporation Remote desktop protocol compression acceleration using single instruction, multiple dispatch instructions

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4304198A1 (de) * 1993-02-12 1994-08-18 Itt Ind Gmbh Deutsche Verfahren zur Beschleunigung der Datenverarbeitung eines Signalprozessors

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4402368A (en) * 1977-12-01 1983-09-06 Frank Moberly Earth scraper and ground support therefor
US5164914A (en) * 1991-01-03 1992-11-17 Hewlett-Packard Company Fast overflow and underflow limiting circuit for signed adder
KR950004124B1 (ko) * 1992-05-19 1995-04-25 주식회사금성사 영상 움직임 보상정보 출력 처리장치
JP3081710B2 (ja) * 1992-08-18 2000-08-28 株式会社東芝 オーバーフロー検出機能付き乗算装置
JP3103914B2 (ja) * 1992-08-21 2000-10-30 ソニー株式会社 データの丸め処理回路およびデータの復元回路
JP2591463B2 (ja) * 1993-12-27 1997-03-19 日本電気株式会社 リミッタ装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4304198A1 (de) * 1993-02-12 1994-08-18 Itt Ind Gmbh Deutsche Verfahren zur Beschleunigung der Datenverarbeitung eines Signalprozessors

Also Published As

Publication number Publication date
DE19730727A1 (de) 1998-10-08
US5801977A (en) 1998-09-01

Similar Documents

Publication Publication Date Title
DE60018078T2 (de) Einstellung von bedingungswerten in einem rechner
DE19581873C2 (de) Prozessor zum Ausführen von Schiebeoperationen an gepackten Daten
DE60210494T2 (de) Hochgeschwindigkeitsberechnung in einer arithmetik- und logikschaltung
DE69432659T2 (de) Rotationsregister zur orthogonalen Datentransformation
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE2935906C2 (de) Mikroprozessor
DE19920214A1 (de) Verfahren und Einrichtung zum Konvertieren einer Zahl zwischen einem Gleitkommaformat und einem Ganzzahlformat
DE112004001648T5 (de) Verfahren, Vorrichtung und Befehle für parallele Datenumwandlung
DE3709675C2 (de)
DE2517276A1 (de) Datenverarbeitungssystem
DE69722859T2 (de) Formatumwandlung von Datenwörtern graphischer Bilder
DE2421130C2 (de)
DE2718110A1 (de) Datenverarbeitungseinheit
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE4403917A1 (de) Vorrichtung zum Berechnen einer Besetzungszählung
DE2746505A1 (de) Dv-system mit einer einrichtung zum adressieren in einem festwertspeicher abgelegter mikroprogramme
DE19730727C2 (de) Verfahren und Schaltung zum Abschneiden von Ganzzahlen unter Verwendung einer Maske
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE2830334C2 (de)
DE2212967B2 (de) Einrichtung zur Speicherung und Verarbeitung einer Zahl in Gleitkommadarstellung
WO2002017063A2 (de) Programmkopplungsmethode
DE10210663A1 (de) Vorrichtung und Verfahren für Anzeige- und/oder Präzisionsoperationen von numerischen Werten in binären Systemen
DE2336676B2 (de) Einrichtung zur Modifizierung von Mikroprogrammbefehlen
DE19601575A1 (de) System und Verfahren zum Abschneiden von Ganzzahlen
DE2440390C3 (de)

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8339 Ceased/non-payment of the annual fee