DE19730727C2 - Verfahren und Schaltung zum Abschneiden von Ganzzahlen unter Verwendung einer Maske - Google Patents
Verfahren und Schaltung zum Abschneiden von Ganzzahlen unter Verwendung einer MaskeInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 27
- 238000005520 cutting process Methods 0.000 claims description 17
- 230000000873 masking effect Effects 0.000 claims description 7
- 238000013461 design Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 241000153282 Theope Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 150000001768 cations Chemical class 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/764—Masking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
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 < 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:
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:
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 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)).
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:
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:
Die äquivalente Maske zum Abschneiden einer vorzeichenbehaf
teten Eingabe zu einem vorzeichenbehafteten Byteergebnis ist
nachfolgend gezeigt:
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):
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):
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):
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.
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.
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.
A: Eingabetyp; A = 0, vorzeichenbehaftet;
A = 1, vorzeichenlos;
Der Vervollständiger z in dem Operations code steuert die Wahl des Ausgabetyps.
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.
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.
Maske: AXXX XXXX XXXX XXXX;
A: Ausgabetyp; A = 0, vorzeichenbehaftet;
A = 1, vorzeichenlos;
Vervollständiger y im Operationscode für die Eingabetyp-Auswahl.
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.
Das Vorzeichenbit der Maske gibt an, ob die Eingabe als vor
zeichenbehaftet oder vorzeichenlos behandelt wird. Der fol
gende Pseudocode beschreibt die Abschneideoperation:
Das folgende Beispiel stellt das Abschneiden für den vorzei
chenlosen Fall unter Verwendung eines Vervollständigungsbits
dar:
Der entsprechende Pseudocode ist nachfolgend gezeigt:
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:
Der folgende Pseudocode zeigt die Funktionsweise der Ab
schneideoperation, wobei 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:
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:
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:
Um eine Eingabe zu einem vorzeichenbehafteten 8-Bit-Bereich
abzuschneiden, wird das folgende Masken-Bitmuster angewen
det:
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.
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.
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.
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.
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:
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.
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)
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)
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)
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 | 日本電気株式会社 | リミッタ装置 |
-
1997
- 1997-04-07 US US08/826,817 patent/US5801977A/en not_active Expired - Lifetime
- 1997-07-17 DE DE19730727A patent/DE19730727C2/de not_active Expired - Fee Related
Patent Citations (1)
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 |