-
ALLGEMEINER STAND DER TECHNIK
-
Die vorliegende Erfindung betrifft ein System, ein Verfahren und ein Computerprogrammprodukt für einen Teiler, der zwei Zahlen dividiert, die in binärer Form dargestellt sind. Der Teiler kann in einer integrierten Schaltung umgesetzt sein.
-
Eine Division ist eine arithmetische Operation, die man als das Gegenteil einer Multiplikation ansehen kann, und wird benötigt, um viele verschiedene Probleme zu lösen. Konzeptuell kann ein Quotient angeben, wie oft ein Dividend einen Divisor ganz enthalten kann. Falls ein Dividend nicht geradzahlig durch einen Divisor teilbar ist, bleibt ein Rest übrig und kann verschiedenartig ausgedrückt werden. Somit gilt im Allgemeinen DIVIDEND = (QUOTIEN·DIVISOR) + REST. Das Vorzeichen eines Quotienten ist von den Vorzeichen des Dividenden und des Divisors abhängig, d. h. der Quotient ist positiv, falls der Dividend und der Divisor die gleichen Vorzeichen aufweisen, doch der Quotient ist negativ, falls sie entgegengesetzte Vorzeichen aufweisen. Eine Division durch Null ist undefiniert.
-
Die bekannte manuelle Operation des Dividierens von zwei Zahlen umfasst die wiederholte Subtraktion des Divisors vom Dividenden. Der Quotient dient im Wesentlichen als Zähler dafür, wie oft der Divisor ganz von dem Dividenden subtrahiert werden kann. Die Division der Eingangszahlen kann aufhören, wenn der Rest kleiner als der Divisor ist, doch im Allgemeinen kann der Prozess fortfahren, um den Rest als Bruchzahl auszuwerten.
-
Die Division von Zahlen, die in binärer Form dargestellt werden, ist ebenfalls für diverse Zwecke erforderlich. Beispielsweise verfügen digitale Computer über Mikroprozessoren, die unter anderen Operationen eine binäre Division in ihren arithmetischen Logikeinheiten ausführen. Die digitalen Signalverarbeitungsschaltungen erfordern häufig ebenfalls eine binäre Division. Herkömmliche binäre Teiler befolgen den bekannten Algorithmus der „wiederholten Subtraktion” und weisen daraufhin eine Reihe von Nachteilen auf, und zwar hauptsächlich die Tatsache, dass ihr Betrieb sehr zeitraubend sein kann.
-
Entsprechend hat der Erfinder einen Bedarf für einen verbesserten binären Teiler in der Technik identifiziert.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Es zeigen:
-
1 ein Schema, das ein Schaltbild eines beispielhaften schnellen Teilers gemäß einem Aspekt der vorliegenden Erfindung abbildet.
-
2 ein Ablaufschema, das eine Methodik eines beispielhaften schnellen Teilers gemäß einem Aspekt der vorliegenden Erfindung abbildet.
-
3 ein Schema, das ein Schaltbild eines beispielhaften Teilerkerns gemäß einem Aspekt der vorliegenden Erfindung abbildet.
-
4 ein Schema, das ein Schaltbild eines beispielhaften mehrformatigen ganzen Teilers gemäß einem Aspekt der vorliegenden Erfindung abbildet.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die Ausführungsformen der Erfindung stellen ein System, ein Verfahren und ein Computerprogrammprodukt zum Dividieren von zwei binären Zahlen bereit. In manchen Fällen kann es sein, dass gar kein ganzer Quotient berechnet werden muss, da ein Teilquotient für manche Zwecke ausreichen kann. Die schnelle Erzeugung eines Teilquotienten kann bei bestimmten Anwendungen, wie etwa bei der digitalen Signalverarbeitung, besonders nützlich sein.
-
Es wird daher eine Ausführungsform eines schnellen Teilers bereitgestellt, der schnell einen Teilquotienten berechnen kann, der nur eine Näherung des ganzen Quotientenwertes ist. Beispielsweise kann man nur 24 Bits eines ganzen 64-Bit-Quotienten berechnen, doch sind diese 24 Bits die höchstwertigen. Eine derartige Ausführungsform kann ein schnelles Ergebnis begrenzter Genauigkeit, jedoch mit einem großen dynamischen Bereich bereitstellen. Es wird auch eine alternative Ausführungsform beschrieben, die einen ganzen Quotienten in diversen binären Formaten bereitstellt.
-
Wie es nachstehend beschrieben wird, kann der schnelle Teiler eine Festkomma-Divisionsfunktion unter Verwendung einer Gleitkomma-Normierungsarchitektur umsetzen, um die nächstgelegene anfängliche Näherung des Quotienten zu ergeben. Kurz gesagt kann der schnelle Teiler seine Eingaben normieren, eine 24-Bit-Divisionsoperation ausführen, und die Ausgabe zu ihrem richtigen Wert multiplizieren/verschieben. Das Normieren der Eingaben ermöglicht einen hoch optimierten Teilerkern, da die Eingaben, die er handhabt, auf den Bereich [0,5, 1,0), d. h. von einschließlich der Hälfte bis zu nahezu Eins, eingeschränkt sein können.
-
Ferner kann der Quotient gewünschter Präzision von einem Teilerkern berechnet werden, der Ergebnisse in Teilen oder Quotienten-Teilmengen ausgibt. Eine schnelle Generierung selbst eines anfänglichen Teils eines Teilquotienten kann unter Umständen sehr nützlich sein. Die beschriebenen Ausführungsformen des Teilers können daher schnell die höchstwertigen Bits einer Quotienten-Teilmenge erzeugen und dann damit fortfahren, zusätzliche Quotientenbits geringerer Wertigkeit in weiteren Taktzyklen zu generieren, bis eine vorbestimmte Quotientenpräzision erreicht ist.
-
1 ist ein Funktionsschema, das einen beispielhaften schnellen Teiler 100 gemäß einem Aspekt der vorliegenden Erfindung abbildet. Der schnelle Teiler 100 kann als integrierte Schaltung hergestellt werden. Der Dividend 102 und Divisor 104 sind die Eingaben für den schnellen Teiler. Bei einer beispielhaften Ausführungsform kann der Dividend eine 64-Bit-Binärzahl sein, und der Divisor kann eine 32-Bit-Binärzahl sein. Die Tatsache, dass der Divisor dem schnellen Teiler 100 vorgelegt wird, kann bei einer Ausführungsform die Operation des schnellen Teilers auslösen.
-
Bei einer Ausführungsform können der Dividend 102 und der Divisor 104 Zahlen mit Vorzeichen sein, so dass der schnelle Teiler 100 dann den absoluten Wert jeder Eingabe an den Blöcken 106 und 108 nehmen kann und ein Dividenden-Vorzeichenbit 110 und ein Divisor-Vorzeichenbit 112 zur weiteren Verwendung abtrennen kann. Die Vorzeichenbits 110 und 112 können das geeignete Vorzeichen des Quotienten bestimmen, was noch beschrieben wird.
-
Der schnelle Teiler 100 kann die Blöcke 114 und 116 umfassen, um jeweils den Dividenden 102 und den Divisor 104, nun ohne Vorzeichen, zu normieren, so dass jede Zahl einen Wert in einem Bereich von [0,5, 1,0), d. h. einschließlich der Hälfte bis zu, jedoch ausschließlich Eins, aufweisen kann. Bei einer Ausführungsform können die Eingaben dadurch normiert werden, dass jede Zahl um einen notwendigen Faktor Zwei skaliert wird, bis eine höchstwertige Bitposition jeder Zahl eine „1” ist. Die binären Zahlen können ohne Weiteres im Wert um einen Faktor Zwei geändert werden, indem die Stellen um ein Bit verschoben werden. Die Schaltungsblöcke 114 und 116 können somit den Dividenden 102 und den Divisor 104 je nach Bedarf verschieben, so dass der skalierte Wert jeweils in dem gewünschten Bereich liegt. Die Daten, die Exponenten beschreiben, die daraus erzielt werden, können an einen Addierer 118 weitergegeben werden. Der Addierer 118 kann die Exponenten (z. B. Zweierpotenzen), die bei jeder Normierung verwendet wurden, subtrahieren (z. B. den Skalierungsfaktor 120 für den Dividenden 102 von dem Skalierungsfaktor 122 für den Divisor 104), um einen Quotienten-Umskalierungsfaktor 124 zu ergeben, der noch beschrieben wird.
-
Bei einer Ausführungsform kann der normierte Dividend eine 45-Bit-Zahl sein, während der normierte Divisor eine 23-Bit-Zahl sein kann. Die normierten Eingaben können einem Teilerkern 126 vorgelegt werden, der die Division ausführt. Es werden nachstehend mit Bezug auf 4 verschiedene Ausführungsformen des Teilerkerns 126 beschrieben. Verschiedene Ausführungsformen können verschiedene Divisorbreiten und verschiedene Durchsätze (z. B. berechnete Quotientenbits) pro Taktzyklus aufweisen. Ein Nulldivisions-Flag BY0, 128, kann von dem Teilerkern generiert werden; eine Nulldivision ist undefiniert und kann als Fehlerzustand behandelt werden, der die Operation anhalten und eine Ausgabe eines bestimmten vorbestimmten Quotientenwertes auslösen kann. Bei einer Ausführungsform kann der Teilerkern 126 mit seiner Operation beginnen, wenn er ein Taktsignal 130 empfängt, das ein Taktsignal eines fortgeschrittenen Hochleistungsbusses (AHB) sein kann. Der AHB ist Teil des Protokolls der fortgeschrittenen Mikrocontroller-Busarchitektur (AMBA), einer Offenstandard-, On-Chip-Zusammenschaltungsspezifikation, die auf dem Gebiet des Mikrocontroller-Designs wohlbekannt ist.
-
Die Ausgabe 132 des Teilerkerns 126 ist ein Quotient des normierten Dividenden und des normierten Divisors. Bei einer Ausführungsform kann die Ausgabe des Systems eine 24-Bit-Zahl sein, die einen Quotienten der normierten Eingaben darstellt. Der Quotient kann aus einer Speichereinheit innerhalb des Teilerkerns 126 abgerufen werden, die den Quotienten speichert. Bei anderen Ausführungsformen kann die Ausgabe 132 des Teilerkerns über mehrere Operationstaktzyklen ermittelt werden, wobei eine vorbestimmte Anzahl bzw. ein „Teil” der gesamten Anzahl gewünschter Quotientenbits pro Taktzyklus berechnet werden kann.
-
Wie es noch beschrieben wird, kann ein erster Teil der zu berechnenden Quotientenbits von dem Teilerkern 126 recht schnell generiert werden, z. B. innerhalb eines einzigen Bustaktzyklus. Diese Teilmenge der Quotientenbits kann die höchstwertigen Quotientenbits umfassen, so dass eine möglichst genaue Näherung des Quotienten als anfängliche Ausgabe erzeugt werden kann. Zusätzliche Bits geringerer Wertigkeit können später generiert werden, wobei dieser Prozess fortfahren kann, bis ein gewünschtes Niveau der Quotientenpräzision erreicht ist. Der Teilerkern 126 kann somit ausgelegt sein, um bestimmte Bedürfnisse zu erfüllen, indem die Quotientenbits nach und nach in abnehmender Wertigkeitsfolge ausgegeben werden. In einem System, das beispielsweise sechs Quotientenbits pro Taktzyklus berechnet, wären die sechs höchstwertigen Bits nach einem Taktzyklus verfügbar, die zwölf höchstwertigen Bits nach zwei Taktzyklen, und so weiter. Alle vierundzwanzig beispielhaften Quotientenbits wären nach vier Taktzyklen verfügbar.
-
Die Ausgabe 132 des Teilerkerns 126 kann um den Quotienten-Umskalierungsfaktor 124 skaliert werden, um eine eventuelle frühere Eingangsskalierung während der Normierung auszugleichen. Wie bei den zuvor definierten Normierungsschaltungen kann ein Schieberegister 134 die Teilerkernausgabe um Zweierpotenzen skalieren, indem es die Ausgabe um eine geeignete Bitanzahl in die entsprechende Richtung verschiebt. Bei einer Ausführungsform kann die skalierte Ausgabe eine 64-Bit-Zahl sein.
-
Die skalierte Ausgabe kann in eine Zahl mit Vorzeichen konvertiert werden, wie es für eine Vorzeichenschaltung 136 basierend auf dem Dividenden-Vorzeichenbit 110 und dem Divisor-Vorzeichenbit 112 notwendig ist. Bei einer Ausführungsform führt die Logik 138 eine Exklusiv-ODER-Operation an dem Dividenden-Vorzeichenbit 110 und dem Divisor-Vorzeichenbit 112 aus, um das Quotienten-Vorzeichen zu bestimmen, z. B. falls nur einer von dem Dividenden und dem Divisor negativ ist, dann muss der Quotient negativ sein, ansonsten ist er positiv. Die skalierte Ausgabe mit Vorzeichen kann in einem Register 140 gespeichert werden.
-
Die skalierte Ausgabe mit Vorzeichen kann auch in einen Sättigungs-Akkumulator 142 zur Ausgabe als Quotient geladen werden. Die Sättigungs-Arithmetik begrenzt oder „blockiert” die Werte der verarbeiteten Zahlen auf maximale oder minimale Bereichsgrenzen während der arithmetischen Operationen. Dieses Verhalten kann die häufig unrealistisch drastischen Änderungen des numerischen Wertes verhindern, die sich aus dem modularen arithmetischen „Übertrag” ergeben können. Beispielsweise stehen in einem 8-Bit-Register 256 numerische Werte zur Verfügung, um eine physische Messung zu beschreiben, die normalerweise von Null bis höchstens 255 reicht. Falls die Messung über den erwarteten Bereich hinausgeht, kann das Register beispielsweise bei einem Überlauf auf Null „umschlagen”, wodurch eine höchst irreführende numerische Beschreibung erzeugt wird, weil das wahre höchstwertige Bit abgestrichen wird. Ähnliche Probleme können mit einem Unterlauf und dem Speichern von negativen numerischen Werten auftreten. Der Sättigungs-Akkumulator 142 kann daher die skalierte Ausgabe mit Vorzeichen effektiv umformatieren, um den Quotientenwert mit der verfügbaren Registergröße am besten darzustellen. Die Verwendung des Sättigungs-Akkumulators ist optional.
-
1 stellt ein Funktionsschema dar, das Schaltungen aufweisen kann, die jedem Block gewidmet sind. Die Schaltungen können je nach Bedarf zusammengefasst werden, wie etwa für Geschwindigkeit und Leistungseffizienz. Einige Funktionen können von Controllern ausgeführt werden, wie es in der Technik bekannt ist.
-
Es wird nun mit Bezug auf 2 ein Ablaufschema gezeigt, das eine beispielhafte schnelle Teilermethodik 200 gemäß einem Aspekt der vorliegenden Erfindung abbildet. Der Dividend und der Divisor können in Schritt 202 eingegeben werden. Diese Eingaben können in getrennten Schritten erfolgen, und die Eingabe des Divisors kann bei einigen Ausführungsformen den Beginn der Methodik auslösen.
-
In Schritt 204 kann der absolute Wert des Divisors genommen werden, wobei die Vorzeicheninformationen zur späteren Verwendung bei der Berechnung des Quotienten-Vorzeichens behalten werden. In Schritt 206 kann der absolute Wert des Dividenden genommen werden, wobei die Divisor-Vorzeicheninformationen ähnlich behalten werden. Die Verarbeitung der Vorzeichen kann bei einigen Ausführungsformen gleichzeitig ausgeführt werden.
-
Der Divisor kann in Schritt 208 normiert werden, wozu das Bitverschieben des Divisors um eine ausreichende Zweierpotenz gehören kann, so dass sein skalierter Wert in dem Bereich von [0,5, 1,0), d. h. von einschließlich der Hälfte bis zu Eins, ohne diese jedoch tatsächlich einzuschließen, liegt. Ähnlich kann der Dividend in Schritt 210 normiert werden; das Normieren des Divisors und des Dividenden muss nicht in der beschriebenen beispielhaften Reihenfolge erfolgen und kann in der Tat gleichzeitig ausgeführt werden.
-
In Schritt 212 kann der Teilerkern damit beginnen, die Division des verarbeiteten Dividenden und des Divisors zu berechnen. Der Teilerkern kann in Schritt 214 ein Nulldivisions-Flag generieren, das eine spezielle Handhabung der Ausgabe auslösen kann, um einen Fehlerzustand zu bezeichnen. Beispielsweise kann der Teiler 200 einen bestimmten endgültigen Wert ausgeben, um den Nulldivisions-Fehlerzustand zu bezeichnen. Der Teilerkern kann ansonsten in Schritt 216 einen Quotienten oder einen Quotiententeil generieren.
-
In Schritt 218 kann das Verfahren die Normierungsfaktoren des Dividenden und des Divisors kombinieren, um einen Umskalierungs- oder Denormierungs-Faktor zu generieren, der auf den Quotienten anzuwenden ist. In Schritt 220 kann der Quotient beispielsweise um eine geeignete Zweierpotenz durch Bitverschiebung skaliert werden. In Schritt 222 kann das Vorzeichen des Quotienten aus dem Vorzeichen des Divisors und dem Vorzeichen des Dividenden berechnet werden, z. B. ergeben unterschiedliche Zeichen einen negativen Quotienten. In Schritt 224 kann der Quotient (oder ein Quotienten- „Teil”, z. B. eine nach und nach generierte Quotienten-Teilmenge) mit dem richtigen Vorzeichen ausgegeben werden.
-
In Schritt 226 kann das Verfahren bestimmen, ob alle erforderlichen Quotientenbits berechnet wurden. Bei einer Ausführungsform kann eine erste Teilmenge der zu berechnenden Quotientenbits innerhalb eines Bustaktzyklus generiert werden; dabei kann es sich um die höchstwertigen Quotientenbits handeln. Zusätzliche erforderliche Bits, im Allgemeinen geringerer Wertigkeit, können generiert werden, wenn das Verfahren die Operation selektiv zu dem Teilerkern zurückbringen kann, um in Schritt 226 zusätzliche Berechnungen auszuführen. Dieser Berechnungsprozess kann fortfahren, bis ein gewünschtes Präzisionsniveau des ausgegebenen Quotienten erreicht ist.
-
Es wird nun mit Bezug auf
3 ein Schema gezeigt, das einen beispielhaften Teilerkern gemäß einem Aspekt der vorliegenden Erfindung abbildet. Dieser Teilerkern
300 kann mit der zuvor beschriebenen Ausführungsform des schnellen Teilers oder mit einer alternativen Ausführungsform des Teilers, die noch mit Bezug auf
4 beschrieben wird, verwendet werden. Andere Teilerkerne, wie sie auf diesem Gebiet bekannt sein können, können ebenfalls verwendet werden, wie etwa die iterative Array-Teiler-(IAD)Schaltung, die in
"An Augmented Iterative Array for High-Speed Binary Division" von Maurus Cappa und V. Carl Hamacher in IEEE Transactions on Computers, Bd. C-22, Nr. 2, Februar 1973, beschrieben wird, die hiermit zur Bezugnahme vollständig übernommen wird.
-
Der Teilerkern
300 kann eine Reihe von Verschiebe-/Addier-Blöcken
302 umfassen. Jeder Verschiebe-/Addier-Block
302 kann diese Operation ausführen:
-
Jeder Verschiebe-/Addier-Block 302 berechnet somit ein Ausgangsübertragsbit carry_out und ein Ausgangssummenbit sum_out. Die Bits carry_out und sum_out werden aus einem Eingangsübertragsbit carry_in, einem Eingangssummenbit sum_in, einem Dividendenbit und dem Divisor berechnet. Falls das Bit carry_in gleich Eins ist, dann wird der Divisor zu dem Dividendenbit und zweimal dem Bit sum_in addiert. Falls ansonsten das Bit carry_in gleich Null ist, dann wird der Divisor von dem Dividendenbit und zweimal dem Bit sum_in subtrahiert.
-
Das Bit carry_out aus einem Verschiebe-/Addier-Block 302 kann ein Quotientenbit sein. Somit wären zur Verarbeitung eines 64-Bit-Quotienten in einer einzigen Schaltung 64 Verschiebe-/Addier-Blöcke notwendig. Bei einer beispielhaften Umsetzung können nur sechs Verschiebe-/Addier-Blöcke ihre Operation innerhalb eines einzigen Taktzyklus beenden. Daher umfasst bei dieser Ausführungsform der Teilerkern 300 eine sequenzielle Maschine, die wie gezeigt mit einem Satz von sechs Verschiebe-/Addier-Blöcken 302, um einen Teil von sechs Quotientenbits während eines Taktzyklus zu generieren, und den Registern 308 und 310 zum Enthalten der endgültigen Übertrags- und Summenwerte vom Ende jedes Durchgangs aufgebaut ist.
-
Zu Beginn jeder nachfolgenden Taktperiode können die vorherigen endgültigen Übertrags- und Summenwerte zurück in den Satz von Verschiebe-/Addier-Blöcken 302 gegeben werden, so dass ein weiterer Teil von sechs weiteren Quotientenbits berechnet werden kann. Die richtigen Dividendenbits und Quotientenbits können nacheinander durch die Schieberegister 304 und 306 gegeben werden. Die Register können alle durch eine einfache (nicht gezeigte) Zustandsmaschine gesteuert werden.
-
Es wird nun mit Bezug auf 4 ein Schema gezeigt, das einen beispielhaften mehrformatigen ganzen Teiler gemäß einem Aspekt der vorliegenden Erfindung abbildet. Diese Ausführungsform ist ähnlich wie die zuvor besprochene Ausführungsform des schnellen Teilers, erfordert jedoch eine größere Anzahl von Taktzyklen, um den gesamten Quotienten gegenüber einer einfachen Näherung des richtigen ganzen Quotientenwertes zu berechnen. Der Teilerkern mit einer Verschiebe-/Addier-Architektur von sechs Bits pro Taktzyklus aus 3 kann mit diesem Teiler verwendet werden.
-
Die Eingangsbussignale 402 können von einem Decodierer 404 verarbeitet werden, um einen Dividenden und einen Divisor zu ergeben, die jeweils in den Registern 406 und 408 gespeichert werden. Der AHB ist eine beispielhafte Art von Bus, obwohl auch andere Busse, die auf diesem Gebiet bekannt sind, anwendbar sind. Die Betriebsart des ganzen Teilers 400 kann von der Steuerlogik 410 gemäß der Reihenfolge ausgewählt werden, in der die Register beschrieben werden, z. B. kann das zuletzt beschriebene Dividendenregister bestimmen, welche Daten für den Dividenden 412 verwendet werden. Ähnlich kann das Schreiben in dem Divisorregister 408 ein Startsignal 414 auslösen, um den Teilerkern 416 anzuweisen, mit seinen Operationen zu beginnen.
-
Der Teilerkern
416 kann den Dividenden und den Divisor berechnen und einen Quotienten sowie einen Rest, ein Divisionsende-Signal und ein mögliches Nulldivisions-Fehlersignal ergeben. Die beispielhaften Ein- und Ausgänge des Teilerkerns, die entsprechenden Registernamen und die Datenformate können in der folgenden Tabelle zusammengefasst werden:
NAME | FUNKTION | ADRESSE | BREITE | ZUGRIFF |
DIV_DIVIDEND_DP | DOPPELTGENAUER DIVIDEND FÜR FESTKOMMA-DIVISION | 0 | 8,56 | R/W |
DIV_DIVIDEND_SP | EINFACHGENAUER DIVIDEND FÜR FESTKOMMA-DIVISION | 4 | 8,24 | R/W |
DIV_DIVISOR_SP | EINFACHGENAUER DIVISOR | 5 | 8,24 | R/W |
DIV_REMAINDER | GANZZAHLIGER REST | 18 | 32 | R |
DIV_QUOTIENTEN_SP | GESÄTTIGER EINFACHGENAUER QUOTIENT | 7 | 8,24 | R |
DIV_QUOTIENTEN_INT | GANZZAHLIGER QUOTIENT | 8 | 64 | R |
DIV_QUOTIENTEN_DP | GESÄTTIGTER DOPPELTGENAUER QUOTIENT | 10 | 8,56 | R |
DIV_QUOTIENTEN_ACC | QUOTIENT MIT GESÄTTIGTER AKKUMULATORPRÄZISION | 12 | 23,56 | R |
DIV_DONE | DIVISION BEENDET | 17 | 1 | R |
DIV_BY0 | NULLDIVISION ERFOLGT | 16 | 1 | R |
-
Der mehrformatige ganze Teiler 400 kann in Festkomma-Divisionsbetriebsarten oder in einer ganzzahligen Divisionsbetriebsart funktionieren. In der Festkomma-Betriebsart kann der ganze Teiler die Division entweder von zwei einfachgenauen (SP) Zahlen oder die Division einer doppeltgenauen (DP) Zahl durch eine einfachgenaue Zahl unterstützen, wobei die Ergebnisse in ein erweitertes doppeltgenaues Register (ACC) gesetzt werden.
-
FESTKOMMA-DIVISION:
-
Wenn er eine einfachgenaue Division ausführt, kann der ganze Teiler 400 Operationen in den folgenden Formaten unterstützen, wobei x, y die Anzahl der Bits x vor dem Binärkomma und die Anzahl der Bits nach dem Binärkomma angibt:
8,24 = 8,24/8,24
8,56 = 8,24/8,24
24,56 = 8,24/8,24
-
Wenn er eine doppeltgenaue Division ausführt, kann der ganze Teiler 400 Operationen in den folgenden Formaten unterstützen:
8,24 = 8,56/8,24
8,56 = 8,56/8,24
24,56 = 8,56/8,24
-
Die Ausführung einer Division 8,24/8,24 ergibt möglicherweise eine Zahl 33,28. Die sich ergebende Zahl kann somit in einem Sättigungs-Akkumulator (24,56), einem gesättigten doppeltgenauen Registerformat (8,56) und einem gesättigten einfachgenauen Registerformat (8,24) abgebildet werden. In dem einfachgenauen Register können eventuelle überflüssige Bruchzahlbits gekürzt werden.
-
Das Ausführen einer Division 8,56/8,24 ergibt möglicherweise eine Zahl 33,28. Wie für den Fall des Dividierens von zwei einfachgenauen Zahlen kann die sich ergebende Zahl somit in einem Sättigungs-Akkumulator (24,56), einem gesättigten doppeltgenauen Register (8,56) und einem gesättigten einfachgenauen Registerformat (8,24) abgebildet werden. Bei dem einfachgenauen Register können eventuelle überflüssige Bruchzahlbits wieder gekürzt werden. Bei der Festkomma-Betriebsart kann es einen Rest geben.
-
GANZZAHLIGE DIVISION:
-
Bei einer Betriebsart der ganzzahligen Division kann der ganze Teiler 400 die Division einer 64-Bit-Zahl mit Vorzeichen mit einer 32-Bit-Zahl mit Vorzeichen unterstützen. Das Ergebnis kann eine 64-Bit-Zahl sein. In der ganzzahligen Betriebsart kann es einen 32-Bit-Rest geben.
-
VERWENDUNG UND HANDHABUNG VON NULLDIVISIONEN:
-
Der ganze Teiler kann als Teiler mit Vorzeichen konfiguriert sein. Die verschiedenen Betriebsarten des ganzen Teilers können als eine Anzahl von virtuellen Registern abgebildet sein, die auf einer kleineren Anzahl von reellen Registern liegen.
-
Für den Fall einer Nulldivision kann das Ergebnis ein gesättigter Ausgangsquotient von mehr oder weniger einem maximalen numerischen Wert sein, mit einem Rest gleich Null. In der ganzzahligen Betriebsart kann eine derartige Ausgabe eine von 263–1 und –263 sein. In der Festkomma-Betriebsart kann eine derartige gesättigte Ausgabe mehr oder weniger der maximale Wert einer formatierten Zahl 8,56 oder 24,56 sein.
-
Das Quotientenregister 418 und das Restregister 420 können nur aktualisiert werden, wenn der ganze Teiler meldet, dass er seine Operationen beendet hat. Die zuletzt geschriebenen Dividendendaten können behalten werden, wenn eine Division beendet ist, so dass falls sich die Dividendendaten nicht geändert haben, der Benutzer den Dividenden für die nächste Divisionsoperation nicht neu schreiben muss.
-
Obwohl bestimmte Ausführungsformen der vorliegenden Erfindung beschrieben wurden, versteht es sich, dass diverse andere Änderungen in Umfang und Geist der Erfindung möglich sind. Die Erfindung ist nur durch den Umfang der beiliegenden Ansprüche eingeschränkt.
-
Wie zuvor beschrieben betrifft ein Aspekt der vorliegenden Erfindung einen schnellen binären Teiler. Die bereitgestellte Beschreibung wird vorgelegt, um es einem Fachmann auf dem Gebiet zu ermöglichen, die Erfindung umzusetzen und zu verwenden. Zum Zweck der Erklärung werden spezifische Fachausdrücke dargelegt, um ein umfassendes Verständnis der vorliegenden Erfindung bereitzustellen. Die Beschreibungen spezifischer Anwendungen und Verfahren werden rein beispielhaft bereitgestellt. Diverse Änderungen an den bevorzugten Ausführungsformen werden für den Fachmann auf diesem Gebiet ohne Weiteres hervorgehen, und die hier definierten allgemeinen Grundlagen sind auf andere Ausführungsformen und Anwendungen anwendbar, ohne Geist und Umfang der Erfindung zu verlassen. Somit ist die vorliegende Erfindung nicht dazu gedacht, auf die gezeigten Ausführungsformen eingeschränkt zu sein, sondern ist in Übereinstimmung mit den hier offenbarten Grundlagen und Schritten im weitesten Sinne zu verstehen.
-
Wie sie hier verwendet werden, bedeuten die Begriffe „ein, eine, ein” ein oder mehr als ein Element. Der Begriff „Vielzahl” bedeutet zwei oder mehr als zwei Elemente. Die Begriffe „ein anderer, eine andere, ein anderes” werden als ein zweites oder weitere Elemente definiert. Die Begriffe „umfassend” und/oder „aufweisend” sind unbestimmt (z. B. einschließend). In der gesamten vorliegenden Druckschrift wird auf „eine Ausführungsform” oder „bestimmte Ausführungsformen” Bezug genommen, wobei „eine Ausführungsform” oder ähnliche Begriffe bedeuten, dass ein bestimmtes Merkmal, eine Struktur oder ein Kennzeichen, die in Verbindung mit der Ausführungsform beschrieben werden, in mindestens einer Ausführungsform enthalten sind. Somit bezieht sich das Vorkommen derartiger Ausdrücke an verschiedenen Stellen in der gesamten vorliegenden Beschreibung nicht unbedingt immer auf die gleiche Ausführungsform. Ferner können die bestimmten Merkmale, Strukturen oder Kennzeichen auf beliebige geeignete Art und Weise bei einer oder mehreren Ausführungsformen ohne Einschränkung kombiniert werden. Der Begriff „oder”, wie er hier verwendet wird, ist als einschließlich oder eine beliebige oder jede Kombination bedeutend auszulegen. Daher bedeutet „A, B oder C” eines von „A; B; C; A und B; A und C; B und C; A, B und C”. Eine Ausnahme dieser Definition besteht nur, wenn in einer Kombination Elemente, Funktionen, Schritte oder Aktionen auf bestimmte Art und Weise an sich gegenseitig ausschließlich ist.
-
In Übereinstimmung mit den Gewohnheiten der Fachleute auf dem Gebiet der Computerprogrammierung werden die Ausführungsformen mit Bezug auf Operationen beschrieben, die von einem Computersystem oder einem ähnlichen elektronischen System ausgeführt werden können. Solche Operationen werden manchmal als computerausgeführt bezeichnet. Es versteht sich, dass die Operationen, die symbolisch dargestellt werden, die Handhabung durch einen Prozessor, wie etwa eine Zentraleinheit, von elektrischen Signalen, die Datenbits darstellen, und das Pflegen von Datenbits an Speicherstellen, wie etwa in einem Systemspeicher, sowie eine andere Verarbeitung von Signalen umfassen. Die Speicherstellen, an denen die Datenbits gepflegt werden, sind physische Stellen, die bestimmte elektrische, magnetische, optische oder organische Eigenschaften aufweisen, die den Datenbits entsprechen.
-
Wenn sie als Software umgesetzt werden, sind die Elemente der Ausführungsformen im Wesentlichen Code-Segmente, um die notwendigen Aufgaben auszuführen. Die nicht vorübergehenden Code-Segmente können in einem prozessorlesbaren Medium oder einem computerlesbaren Medium gespeichert werden, das ein beliebiges Medium umfassen kann, das Informationen speichern oder übertragen kann. Beispiele derartiger Medien umfassen eine elektronische Schaltung, eine Halbleiter-Speichervorrichtung, einen Festspeicher (ROM), einen Flash-Speicher oder einen anderen nicht flüchtigen Speicher, eine Diskette, eine CD-ROM, eine optische Platte, eine Festplatte, ein Lichtleitfasermedium usw. Die Benutzereingabe kann eine beliebige Kombination aus einer Tastatur, einer Maus, einem Berührungsbildschirm, einer Sprachsteuerung usw. umfassen. Die Benutzereingabe kann ähnlich verwendet werden, um eine Browser-Anwendung, die auf einer Computervorrichtung des Benutzers abläuft, auf ein oder mehrere Netzwerk-Ressourcen, wie etwa Web-Seiten, zu richten, von denen man auf Computer-Ressourcen zugreifen kann.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- ”An Augmented Iterative Array for High-Speed Binary Division” von Maurus Cappa und V. Carl Hamacher in IEEE Transactions on Computers, Bd. C-22, Nr. 2, Februar 1973 [0031]