DE19601575A1 - System und Verfahren zum Abschneiden von Ganzzahlen - Google Patents
System und Verfahren zum Abschneiden von GanzzahlenInfo
- Publication number
- DE19601575A1 DE19601575A1 DE19601575A DE19601575A DE19601575A1 DE 19601575 A1 DE19601575 A1 DE 19601575A1 DE 19601575 A DE19601575 A DE 19601575A DE 19601575 A DE19601575 A DE 19601575A DE 19601575 A1 DE19601575 A1 DE 19601575A1
- Authority
- DE
- Germany
- Prior art keywords
- bit
- input
- mask
- circuit
- clipping
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
Die vorliegende Erfindung bezieht sich auf Datenverarbei
tungssysteme und insbesondere auf ein Verfahren und eine
Vorrichtung zum parallelen Abschneiden von Ganzzahlen.
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ünstigerweise 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.
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.
Bestimmte Architekturen, wie z. B. RISC (RISC = Reduced In
struction 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
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 Kanten
verbesserung, 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 vorzeichen
behafteter 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 Aus
fü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 ent
sprechenden 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 des
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.
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.
Die folgende Tabelle enthält einen Pseudocode für jeden Typ
einer Abschneideoperation. Der Pseudocode bezieht sich auf
jedes Byte in dem Datenregister 203.
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. Die Maske, die verwendet wird, um
beispielsweise entweder vorzeichenbehaftete oder vorzeichen
lose Halbwort-(16-Bit-)Ganzzahleingaben zu entweder einer
vorzeichenbehafteten oder vorzeichenlosen Byte-(8-Bit-)
Ganzzahlausgabe abzuschneiden, ist nachfolgend gezeigt:
Wenn die als das Bitmuster von Beispiel 3 gezeigte Maske auf
das vorzeichenlose Eingabewort angewendet wird, das als Bit
muster (2) gezeigt ist, wird das folgende vorzeichenlose
Ganzzahlergebnis erhalten (die erste Zeile ist das Eingabe
bitmuster von Beispiel 2, die zweite Zeile ist das Masken
bitmuster von Beispiel 3, und die dritte Zeile ist das Er
gebnis):
Wenn die als das Bitmuster von Beispiel 3 gezeigte Maske auf
das vorzeichenbehaftete Eingabewort, das als Bitmuster (2)
gezeigt ist, angewendet wird, wird das folgende vorzeichen
behaftete Ganzzahlergebnis erhalten (die erste Zeile ist das
Eingabebitmuster von Beispiel 2, die zweite Zeile ist das
Maskenbitmuster von Beispiel 3 und die dritte Zeile ist das
Ergebnis):
Wenn die Maske, die als das Bitmuster von Beispiel 3 gezeigt
ist, auf das vorzeichenbehaftete Eingabewort, das als Bitmu
ster (2) gezeigt ist, angewendet wird, wird das folgende
vorzeichenlose Ganzzahlergebnis erhalten (die erste Zeile
ist das Eingabebitmuster von Beispiel 2, die zweite Zeile
ist das Maskenbitmuster von Beispiel 3 und die dritte Zeile
ist das Ergebnis):
Fig. 4 ist ein Schaltbild einer der Halbwort-Logikschal
tungen, 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
ihren 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.
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 lie
fert 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:
0000 1100000000 1100000000 1100000000 1100000000 1100000000 1100000000
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:
0000 0000011010 0011111111 0000000000 0000000000 0011111111 0010101001
Um eine Eingabe zu einem vorzeichenbehafteten 8-Bit-Bereich
abzuschneiden, wird das folgende Masken-Bitmuster angewen
det:
0000 1110000000 1110000000 1110000000 1110000000 1110000000 1110000000
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:
0000 0000011010 0001111111 1110111000 1110000000 0011111111 0010101001
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 (12)
1. Verfahren zum Betreiben eines digitalen Prozessors
(100), um binäre Ganzzahlen unter Verwendung eines Be
fehls zu einem spezifizierten 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) Anwenden der Maske auf die Eingabe-Ganzzahlen, der art, daß alle Ganzzahlen außerhalb des Bereichs auf die Größe in dem Bereich abgeschnitten werden, die der Ganzzahl am nächsten liegt, wodurch Ausgabe- Ganzzahlen 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 1 oder 2,
bei dem der Abschneidebefehl bewirkt, daß der digitale
Prozessor (100) Eingabe-Ganzzahlen, die einen ersten
Datentyp aufweisen, zu Ausgabe-Ganzzahlen, die einen
zweiten Datentyp aufweisen, abschneidet.
4. Verfahren gemäß Anspruch 3,
bei dem der erste Datentyp und der zweite Datentyp aus
der Gruppe gewählt werden, die die Elemente vorzeichen
behaftete Daten und vorzeichenlose Daten enthält.
5. Verfahren gemäß einem beliebigen der Ansprüche 1, 3 oder
4,
bei dem der Abschneidebefehl Eingabedaten von sowohl vorzeichenbehafteten als auch vorzeichenlosen Ganzzahlen und abgeschnittene Ausgabedaten von sowohl vorzeichenbe hafteten als auch vorzeichenlosen Ganzzahlen anzeigen kann; und
bei dem Operationscode-Vervollständigungsbits des Be fehls die Datentypen von Ganzzahlen in den Eingabedaten und in den Ausgabedaten anzeigen.
bei dem der Abschneidebefehl Eingabedaten von sowohl vorzeichenbehafteten als auch vorzeichenlosen Ganzzahlen und abgeschnittene Ausgabedaten von sowohl vorzeichenbe hafteten als auch vorzeichenlosen Ganzzahlen anzeigen kann; und
bei dem Operationscode-Vervollständigungsbits des Be fehls die Datentypen von Ganzzahlen in den Eingabedaten und in den Ausgabedaten anzeigen.
6. Verfahren gemäß einem beliebigen der Ansprüche 1, 3 oder
4,
bei dem die Maske Codes zum Spezifizieren der Datentypen enthält.
bei dem die Maske Codes zum Spezifizieren der Datentypen enthält.
7. Verfahren gemäß Anspruch 1, bei dem die Maskierungsope
ration gemäß der folgenden Schritte durchgeführt wird:
8. Schaltung (100) zum Abschneiden von Ganzzahlen, die in
einer Eingabequelle (203) gespeichert sind, die in min
destens einen Eingabedatenblock logisch aufgeteilt ist,
wobei jeder Eingabedatenblock eine Größe aufweist, um
ein abgeschnittenes Ergebnis zu erzeugen, das in einem
Ausgabeziel (205) gespeichert wird, mit folgenden Merk
malen:
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 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.
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 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.
9. Die Schaltung gemäß Anspruch 8,
bei der jeder Eingabeblock und jeder Ausgabeblock ein Byte ist, und
bei der die Abschneidebestimmungsschaltung (401, 403, 405, 407, 409) ein Abschneidesignal für jedes Byte in dem Ausgabeziel erzeugt.
bei der jeder Eingabeblock und jeder Ausgabeblock ein Byte ist, und
bei der die Abschneidebestimmungsschaltung (401, 403, 405, 407, 409) ein Abschneidesignal für jedes Byte in dem Ausgabeziel erzeugt.
10. Die Schaltung gemäß Anspruch 9, wobei der Abschneidebe
fehl spezifiziert, daß jeder Eingabedatenblock aus dem
Satz Doppelwort, Wort, Halbwort und Byte gewählt wird
und die Schaltung zum Abschneiden der Ganzzahlen, wobei
jede Ganzzahl in der Eingabequelle gespeichert ist, ein
Vorzeichenbit aufweist, wobei die Schaltung hierarchisch
organisiert ist und ferner folgende Merkmale 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.
11. Die Schaltung gemäß Anspruch 10,
bei der die Abschneidebestimmungsschaltung (401, 403,
405, 407, 409) über die Byteebene-Schaltungen aufgeteilt
ist, derart, daß jede Byteebene-Schaltung (213) mit Aus
nahme der vordersten Byteebene-Schaltung (213a) ein
Größenauswahl-UND-Gatter aufweist, bei dem ein Eingang
mit dem Abschneidesignal der nächsten höheren Byteebe
ne-Schaltung (213) verbunden ist und ein zweiter Eingang
mit einer Signalleitung verbunden ist, deren Wert von
der Größe des Eingabedatenblocks und von der Position
der Byteebene-Schaltung (213) bezüglich der anderen
Byteebene-Schaltungen (213) abhängt.
12. Die Schaltung gemäß Anspruch 10,
bei der jede Bitebene-Schaltung (215) mit dem Byteebe ne-Abschneidesignal (c), mit der Bytevorzeichen-Auswahl schaltung (db), mit einem Maskenbit in der Maske, das der Bitebene-Schaltung (m) entspricht, mit einem Daten bit 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 Logik gattern aufweist, welche ein Ausgabebit (o) gemäß einer Wahrheitstabelle erzeugen.
bei der jede Bitebene-Schaltung (215) mit dem Byteebe ne-Abschneidesignal (c), mit der Bytevorzeichen-Auswahl schaltung (db), mit einem Maskenbit in der Maske, das der Bitebene-Schaltung (m) entspricht, mit einem Daten bit 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 Logik gattern aufweist, welche ein Ausgabebit (o) gemäß einer Wahrheitstabelle erzeugen.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US37373995A | 1995-01-17 | 1995-01-17 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| DE19601575A1 true DE19601575A1 (de) | 1996-07-18 |
Family
ID=23473674
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE19601575A Withdrawn DE19601575A1 (de) | 1995-01-17 | 1996-01-17 | System und Verfahren zum Abschneiden von Ganzzahlen |
Country Status (3)
| Country | Link |
|---|---|
| JP (1) | JPH08272591A (de) |
| DE (1) | DE19601575A1 (de) |
| GB (1) | GB2300054A (de) |
Families Citing this family (2)
| 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 |
| JP2015143949A (ja) * | 2014-01-31 | 2015-08-06 | 富士通株式会社 | 演算プログラム、演算装置および演算方法 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2269922A (en) * | 1992-08-21 | 1994-02-23 | Sony Corp | Digital data rounding. |
| DE4304198A1 (de) * | 1993-02-12 | 1994-08-18 | Itt Ind Gmbh Deutsche | Verfahren zur Beschleunigung der Datenverarbeitung eines Signalprozessors |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0540155A3 (en) * | 1991-10-29 | 1993-07-21 | Advanced Micro Devices, Inc. | Digital limit checking system |
| ATE180907T1 (de) * | 1991-10-29 | 1999-06-15 | Advanced Micro Devices Inc | Arithmetik-logik-einheit |
| US5448509A (en) * | 1993-12-08 | 1995-09-05 | Hewlett-Packard Company | Efficient hardware handling of positive and negative overflow resulting from arithmetic operations |
| JP2591463B2 (ja) * | 1993-12-27 | 1997-03-19 | 日本電気株式会社 | リミッタ装置 |
| JP3105738B2 (ja) * | 1994-06-10 | 2000-11-06 | 日本電気株式会社 | 情報処理装置 |
-
1996
- 1996-01-15 GB GB9600781A patent/GB2300054A/en not_active Withdrawn
- 1996-01-16 JP JP8005152A patent/JPH08272591A/ja active Pending
- 1996-01-17 DE DE19601575A patent/DE19601575A1/de not_active Withdrawn
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB2269922A (en) * | 1992-08-21 | 1994-02-23 | Sony Corp | Digital data rounding. |
| 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 |
|---|---|
| GB9600781D0 (en) | 1996-03-20 |
| JPH08272591A (ja) | 1996-10-18 |
| GB2300054A (en) | 1996-10-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE69622676T2 (de) | Datenverarbeitungsanordnung mit Erweiterung des Befehlssatzes | |
| DE3688824T2 (de) | Datenverarbeitungssystem. | |
| DE69030128T2 (de) | Signalprozessor | |
| DE69233361T2 (de) | Ein-Chip-Mikrocomputer | |
| DE69428303T2 (de) | Verfahren und Vorrichtung zum Datenarbeiten mit mehreren Statusbitgruppen | |
| DE69503046T2 (de) | Mehrfachbefehlssatzabbildung | |
| DE69900980T2 (de) | Verfahren und vorrichtung zur ausführung von verschiebungsoperationen mit gepackten daten | |
| DE2935906C2 (de) | Mikroprozessor | |
| DE69324730T2 (de) | Multiplizier-Akkumulator | |
| DE2230102A1 (de) | Rechenwerk fuer variable wortlaengen | |
| 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) | ||
| DE2718110A1 (de) | Datenverarbeitungseinheit | |
| DE3856139T2 (de) | Mikroprozessor | |
| DE4403917A1 (de) | Vorrichtung zum Berechnen einer Besetzungszählung | |
| DE69231237T2 (de) | Datenverarbeitungsvorrichtung | |
| DE3620982A1 (de) | Ein-befehl, mehrfach-datenstrom (simd) computersystem | |
| DE19730727C2 (de) | Verfahren und Schaltung zum Abschneiden von Ganzzahlen unter Verwendung einer Maske | |
| DE69823302T2 (de) | Verfahren und Vorrichtung zum Verschieben von Daten | |
| DE3876887T2 (de) | Erzeugung von linien in einem anzeigesystem. | |
| DE2458286A1 (de) | Datenverarbeitungssystem zum verschieben von datenfeldern mit verschiedenen strukturen | |
| DE69315192T2 (de) | Datenverarbeitungssystem und -Verfahren mit einem erweitbaren Register | |
| DE3855066T2 (de) | Operationsvorrichtung zur Verarbeitung von Daten willkürlicher Länge | |
| DE10210663A1 (de) | Vorrichtung und Verfahren für Anzeige- und/oder Präzisionsoperationen von numerischen Werten in binären Systemen |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| OP8 | Request for examination as to paragraph 44 patent law | ||
| 8130 | Withdrawal |