-
Stand der Technik
-
Die vorliegende Erfindung bezieht sich auf ein Verfahren zur Berechnung eines Ergebniswertes einer Division aus einem Dividenden und einem Divisor, auf eine entsprechende Vorrichtung sowie auf ein entsprechendes Computerprogrammprodukt.
-
Für die Berechnung der Division existieren verschiedene Verfahren. Grundsätzlich kann hier unterschieden werden, ob die Division in Software oder in Hardware berechnet wird. In Mikroprozessoren bzw. Signalprozessoren, welche keine Hardware-Einheit (d. h. keinen Divisions-Befehl) zur Berechnung der Division besitzen kann die Division durch Software, d. h. durch eine Abfolge von Maschinenbefehlen (Addition, Subtraktion, Sprünge, ...) berechnet werden, was naturgemäß sehr langsam ist. Mikroprozessoren mit Hardware-Einheit für Division können die Division sehr viel schneller berechnen. Beispiele für Hardware-Dividierer sind sog. Restoring Dividierer und Nonrestoring Dividierer [siehe beispielsweise I. Koren, Computer Arithmetic Algorithms. AK Peter, 2001 oder B. Parhami, Computer Arithmetic – Algorithms and Hardware Designs. Oxford University Press, 200].
-
Diese sind in Bezug auf die benötigte Chipfläche sehr effizient allerdings dauert die Berechnung der Division länger als bei schnelleren Dividierern. Restoring bzw. Nonrestoring Dividierer benötigen zur Berechnung der Division eines binären 2n Bit Wortes durch ein binäres n Bit Wort n Takte.
-
Eine Klasse von schnelleren Dividierern sind sogenannte High-Radix Dividierer wie sie in den vorstehend genannten Schriften beschrieben wurden. Diese benötigen je nach Wahl des Radix m (m = 2k, z. B. m = 4,8,16, etc.) zur Berechnung der Division eines 2n Bit Wortes durch ein n Bit Wort ⌈ n / k ⌉ Takte.
-
Dementsprechend sind die Anforderungen an die Chipfläche verglichen mit den Restoring/Nonrestoring Dividierern größer. Je nach Implementierung benötigen High-Radix Dividierer zusätzliche ROMs zur Berechnung der Division.
-
Eine weitere Klasse von Algorithmen zur Divisionsberechnung benutzt Hardware welche in den meisten Mikroprozessoren vorhanden ist: Multiplizierer bzw. Multiplizier-Akkumulier-Einheiten (sog. MACs). Werden diese Algorithmen in Hardware implementiert, so hat dies den Vorteil, dass der zusätzliche Hardware-Aufwand verglichen mit schnellen Dividierern klein ist, diese Algorithmen aber dennoch eine sehr schnelle Divisionsberechnung ermöglichen. Diese Verfahren sind z. B. Division durch Multiplikative Normalisierung und Division durch Kehrwertbildung, wie sie beispielsweise in den vorstehend genannten Schriften offenbart sind. Beide Verfahren haben eine sehr schnelle Konvergenz allerdings haben beide Verfahren den Nachteil, dass das Ergebnis nicht exakt (beispielsweise nach Tabelle 1) berechnet wird, sondern Restfehler von –1 LSB im Ergebnis des Quotienten Q auftreten können, selbst wenn die Rechnung mit unbegrenzter Wortbreite ausgeführt wird.
-
-
Tabelle 1 zeigt dabei das korrekte Vorzeichen des Quotienten Q und des Divisionsrests R bei Division von Zahlen mit Vorzeichen (signed integer).
-
Werden die Verfahren auf Multiplizierern mit begrenzter Wortbreite ausgeführt (z. B. auf einem n·n → 2n Bit Multiplizierer für die Division von 2n / n Bit) so sind betragsmäßig größere Restfehler möglich. Einen Divisionsrest liefern diese Verfahren nicht direkt, er muss eventuell getrennt berechnet werden. Des Weiteren müssen die Operanden auf bestimmte Art normiert werden, bevor die Division berechnet werden kann.
-
Offenbarung der Erfindung
-
Vor diesem Hintergrund wird mit dem hier vorgestellten Ansatz ein Verfahren zur Berechnung eines Ergebniswertes einer Division aus einem Dividenden und einem Divisor, weiterhin eine Vorrichtung, die das dieses Verfahren verwendet sowie schließlich ein entsprechendes Computerprogrammprodukt gemäß den Hauptansprüchen vorgestellt. Vorteilhafte Ausgestaltungen ergeben sich aus den jeweiligen Unteransprüchen und der nachfolgenden Beschreibung.
-
Der vorliegende Ansatz schafft ein Verfahren zur Berechnung eines Ergebniswertes einer Division aus einem Dividenden und einem Divisor, wobei das Verfahren die folgenden Schritte aufweist:
- – Setzen eines Quotientenwertes auf einen Initialwert und eines Restwertes auf einen vom Dividenden abhängigen Initialwert;
- – Bestimmen eines Divisionswertes unter Verwendung des Restwertes und des Divisors unter Verwendung zumindest einer Logarithmusfunktion;
- – Bilden eines veränderten Quotientenwertes und eines veränderten Restwertes unter Verwendung des Quotientenwertes und des Divisionswertes; und
- – Ermitteln des Ergebniswertes in Abhängigkeit vom veränderten Quotientenwert, wenn der veränderte Restwert in einer vorbestimmten Beziehung zu dem Divisor steht.
-
Unter einem Quotientenwert kann ein Wert einer Division verstanden werden. Dabei kann der Quotientenwert zunächst auf einen Initialwert von beispielsweise 0 gesetzt werden. Unter einem Restwert kann beispielsweise ein Wert verstanden werden, der eine Differenz zwischen dem Dividenden und einem Produkt aus dem Quotientenwert und dem Divisor repräsentiert. Dabei kann der Restwert als verbleibender Fehler verstanden werden, wenn der Quotientenwert als tatsächliches Ergebnis der Division zwischen dem Dividenden und dem Divisor betrachtet wird. Unter einem veränderten Restwert oder einem veränderten Quotientenwert kann ein Restwert oder ein Quotienten verstanden werden, der unter Verwendung eines zuvor bestimmten Wertes aktualisiert oder angepasst wurde. Unter einem Ergebniswert kann ein Wert verstanden werden, der vom veränderten Quotientenwert abhängig ist. Dabei wird der Ergebniswert dann ermittelt, wenn der veränderte Restwert in einer vorbestimmten Beziehung zu dem Divisor steht.
-
Der hier vorgeschlagene Ansatz basiert auf der Erkenntnis, dass durch die Anpassung oder Veränderung des Quotientenwerts und einer nachfolgenden Verwendung dieses Quotientenwerts zur Bestimmung des Ergebniswerts eine sehr präzise und schnelle Berechnung eines Ergebnisses der Division aus dem Dividenden und dem Divisor möglich ist. Insbesondere lässt sich durch rekursive Ausführung von einzelnen Schritten unter entsprechender Anpassung des Restwerts und/oder des Quotientenwerts numerisch oder schaltungstechnisch sehr einfach die Berechnung einer Division durchführen. Auch lässt sich mit dem hier vorgestellten Ansatz eine für die Implementierung einer Vorrichtung zur Berechnung eines Ergebniswertes einer Division aus einem Dividenden und einem Divisor erforderliche Chipfläche in einer integrierten Schaltung sehr gering halten. In diesem Zusammenhang kann insbesondere eine Filtereinheit besonders effizient implementiert werden, die in Anwendungen der Signalverarbeitung oftmals einen zentralen Baustein darstellt. Eine solche Filtereinheit bietet in diesem Fall den Vorteil, ein sehr präzises Filterergebnis in sehr kurzer Verarbeitungszeit bereitstellen zu können.
-
Günstig ist eine Ausführungsform der vorliegenden Erfindung, bei der im Schritt des Ermittelns als Ergebniswert der veränderte Quotientenwert ermittelt wird, wenn der veränderte Restwert gleich null ist und/oder wenn der veränderte Restwert größer als Null und ein Absolutwert des veränderten Restwertes kleiner als ein Absolutwert des Divisors ist. Eine solche Ausführungsform der vorliegenden Erfindung bietet den Vorteil, dass eine weitere Verarbeitung des veränderten Quotientenwert nicht erforderlich ist, sodass der Ergebniswert mit einer sehr kurzen Verarbeitungszeit bereitgestellt werden kann.
-
Gemäß einer anderen Ausführungsform der vorliegenden Erfindung kann im Schritt des Ermittelns als Ergebniswert ein um den Wert von eins verminderter veränderter Quotientenwert ermittelt werden, wenn der veränderte Restwert kleiner als Null und ein Absolutwert des veränderten Restwertes kleiner oder gleich einem Absolutwert des Divisors ist und/oder wobei als Ergebniswert ein um den Wert von eins vergrößerter veränderter Quotientenwert ermittelt wird, wenn der veränderte Restwert größer als Null und ein Absolutwert des veränderten Restwertes gleich einem Absolutwert des Divisors ist. Eine solche Ausführungsform der vorliegenden Erfindung bietet den Vorteil, dass der veränderte Quotientenwert in bestimmten Situationen lediglich geringfügig geändert werden braucht, um als Ergebniswert der Division zwischen dem Dividenden und dem Divisor verwendet werden zu können. Auf diese Weise lässt sich ebenfalls eine sehr schnell arbeitende Divisionseinheit zu Bereitstellung des Ergebniswerts vorteilhaft realisieren.
-
Besonders präzise ist eine Ausführungsform der vorliegenden Erfindung, bei der ein Schritt des Neuzuweisens des Restwertes auf den Wert des veränderten Restwertes und des Quotientenwertes auf einen Wert des veränderten Quotientenwertes vorgesehen ist, wonach die Schritte des Bestimmens und des Bildens erneut ausgeführt werden. Eine solche Ausführungsform der vorliegenden Erfindung ermöglicht die rekursive Ausführung von einzelnen Schritten eines hier vorgestellten Verfahrens, insbesondere unter Verwendung von geänderten Eingangsparametern dieser Schritte, sodass mit diesem Rekursionszyklus eine weitere Verbesserung der Präzision bzw. Genauigkeit des Ergebnisses der Division realisiert werden kann.
-
In einer anderen Ausführungsform der vorliegenden Erfindung kann der Schritt des Neuzuweisens, des Bestimmens und des Bildens dann ausgeführt werden, wenn vor dem Schritt des Neuzuweisens der veränderte Restwert kleiner als Null und ein Absolutwert des veränderten Restwertes größer als ein Absolutwert des Divisors ist und/oder wenn vor dem Schritt des Neuzuweisens der veränderte Restwert größer als Null und ein Absolutwert des veränderten Restwertes größer als ein Absolutwert des Divisors ist. Eine solche Ausführungsform der vorliegenden Erfindung bietet den Vorteil, die erforderliche rekursive Ausführung von Teilschritten des Verfahrens lediglich dann durchzuführen, wenn diese anhand einer vordefinierten Bedingung auch zu einer Verbesserung der Präzision oder Genauigkeit des Ergebnisses der Division führt.
-
Gemäß einer besonders günstigen Ausführungsform der vorliegenden Erfindung können die Schritte des Neuzuweisens, des Bestimmens und des Bildens mehrfach hintereinander ausgeführt werden. Auf diese Weise kann vorteilhaft erreicht werden, dass mit jedem Ausführungszyklus der genannten Teilschritte die Präzision oder Genauigkeit des Ergebnisses der Division erhöht werden kann, bis beispielsweise ein exaktes Ergebnis der Division getroffen ist oder ein verbleibender Restfehler unterhalb einer bestimmten Schwelle liegt.
-
Technisch besonders effizient ist eine Ausführungsform der vorliegenden Erfindung umsetzbar, wenn im Schritt des Bestimmens ein Differenzwert unter Bildung eines Logarithmuswert des Dividenden und eines Logarithmuswerts des Divisors gebildet wird, wobei der Divisionswert unter Verwendung des Differenzwertes als Exponenten einer Basiszahl gebildet wird. Durch die Verwendung der Logarithmusfunktion lässt sich somit eine Division auf eine technisch sehr einfach umzusetzende Differenzbildung reduzieren.
-
Gemäß einer Ausführungsform der vorliegenden Erfindung kann auch im Schritt des Bildens der veränderte Quotientenwert durch Addition des Divisionswertes und des Quotientenwerts oder durch Subtraktion des Divisionswertes von dem Quotientenwert gebildet werden und/oder wobei der veränderte Restwert durch eine Subtraktion eines Produktes aus dem veränderten Quotientenwert und dem Divisor von dem Dividenden gebildet wird. Eine solche Ausführungsform der vorliegenden Erfindung bietet den Vorteil einer numerisch oder schaltungstechnisch sehr einfachen Bildung des veränderten Quotientenwertes, der nachfolgend als Basis zur Ermittlung des Ergebniswerts verwendet werden kann.
-
Günstig ist ferner eine Ausführungsform der vorliegenden Erfindung als Vorrichtung zur Berechnung eines Ergebniswertes einer Division aus einem Dividenden und einem Divisor, wobei das Verfahren die folgenden Schritte aufweist:
- – einer Einheit zum Setzen eines Quotientenwertes auf einen Initialwert und eines Restwertes auf einen vom Dividenden abhängigen Initialwert;
- – einer Einheit zum Bestimmen eines Divisionswertes unter Verwendung des Restwertes und des Divisors unter Verwendung zumindest einer Logarithmusfunktion;
- – einer Einheit zum Bilden eines veränderten Quotientenwertes und eines veränderten Restwertes unter Verwendung des Quotientenwertes und des Divisionswertes; und
- – einer Einheit zum Ermitteln des Ergebniswertes in Abhängigkeit vom veränderten Quotientenwert, wenn der veränderte Restwert in einer vorbestimmten Beziehung zu dem Divisor steht.
-
Beispielsweise kann eine solche Vorrichtung Teil einer Filtereinheit sein, in der eine besonders schnelle und genaue Verarbeitung von Signalen erforderlich ist, insbesondere wobei ein Signal als Dividend mit einem anderen Signal als Divisor verknüpft wird, um ein gefiltertes Signal zu erhalten. Auch durch eine solche Ausführungsform der vorliegenden Erfindung lässt sich der hier vorgestellte Ansatz effizient und kostengünstig implementieren.
-
Der hier vorgestellte Ansatz schafft somit eine Vorrichtung, die ausgebildet ist, um die Schritte einer Variante eines hier vorgestellten Verfahrens in entsprechenden Einrichtungen durchzuführen bzw. umzusetzen. Auch durch diese Ausführungsvariante der Erfindung in Form einer Vorrichtung kann die der Erfindung zugrunde liegende Aufgabe schnell und effizient gelöst werden.
-
Unter einer solchen Vorrichtung kann vorliegend ein elektrisches Gerät verstanden werden, das Sensor- und/oder Datensignale verarbeitet und in Abhängigkeit davon Steuer- und/oder Datensignale ausgibt. Die Vorrichtung kann eine Schnittstelle aufweisen, die hard- und/oder softwaremäßig ausgebildet sein kann. Bei einer hardwaremäßigen Ausbildung können die Schnittstellen beispielsweise Teil eines sogenannten System-ASICs sein, der verschiedenste Funktionen der Vorrichtung beinhaltet. Es ist jedoch auch möglich, dass die Schnittstellen eigene, integrierte Schaltkreise sind oder zumindest teilweise aus diskreten Bauelementen bestehen. Bei einer softwaremäßigen Ausbildung können die Schnittstellen Softwaremodule sein, die beispielsweise auf einem Mikrocontroller neben anderen Softwaremodulen vorhanden sind.
-
Von Vorteil ist auch ein Computerprogrammprodukt mit Programmcode, der auf einem maschinenlesbaren Träger wie einem Halbleiterspeicher, einem Festplattenspeicher oder einem optischen Speicher gespeichert sein kann und zur Durchführung des Verfahrens nach einer der vorstehend beschriebenen Ausführungsformen verwendet wird, wenn das Programmprodukt auf einem Computer oder einer Vorrichtung ausgeführt wird.
-
Auch wird mit dem hier vorgestellten Ansatz eine Signalverarbeitungsvorrichtung mit folgenden Merkmalen vorgestellt:
- – einer Einleseschnittstelle zur Einlesen eines Signals, das eine physikalische Größe repräsentiert;
- – einer Vorrichtung gemäß einer hier vorgestellten Variante, wobei von der Vorrichtung ausgebildet ist, um die physikalische Größe oder einen von der physikalischen Größe abgeleiteten Wert als Dividenden und/oder als Divisor zu verarbeiten; und
- – eine Steuer- und/oder Signalisierungseinheit, die ausgebildet ist, um ein Steuersignal und/oder ein Datensignal unter Verwendung des Ergebniswertes bereitzustellen.
-
Die Einleseschnittstelle kann hierbei das die physikalische Größe repräsentierende Signal von einem Sensor einlesen. Unter einer physikalischen Größe kann vorliegend eine gemessene Spannung, ein gemessener Strom, ein gemessener Druck, eine gemessene Beschleunigung oder eine andere Größe verstanden werden, die mittels eines Sensors erfassbar ist und in einem entsprechenden Signal abgebildet ist. Auch kann in einer Ausführungsform der hier vorgestellten Vorrichtung der Sensor selbst Teil der Signalverarbeitungsvorrichtung sein. Denkbar ist beispielsweise ein Einsatz von einer Ausführungsform der vorliegenden Erfindung in Mikroprozessoren, Auch kann eine Ausführungsform der vorliegenden Erfindung einen Einsatz zur Filterberechnung finden. Somit kann ein Einsatz des Dividierers in modernen Signalverarbeitungsalgorithmen (z. B. Kalman-Filter) erfolgen. Auch kann ein Einsatz einer solchen Vorrichtung in Mikroprozessoren erfolgen, welche eine MAC besitzen und für eine bestimmte Anwendung mit einem Dividierer ausgerüstet werden sollen. Solche beispielhaften Ausführungsformen der vorliegenden Erfindung bieten ebenfalls den Vorteil, dass eine Signal- und/oder Datenverarbeitung auf der Basis der physikalischen Größe schnell, schaltungstechnisch und/oder numerisch einfach und zugleich kostengünstig ausgeführt werden kann.
-
Der hier vorgestellte Ansatz wird nachstehend anhand der beigefügten Zeichnungen beispielhaft näher erläutert. Es zeigen:
-
1 ein Blockschaltbild einer Vorrichtung zur Berechnung der Division gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
-
2 ein Blockschaltbild einer weiteren Vorrichtung zur Berechnung der Division gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
-
3 ein Blockschaltbild einer Einheit zur Implementierung einer Ablaufsteuerung zur Verwendung in einem Ausführungsbeispiel der vorliegenden Erfindung; und
-
4 ein Ablaufdiagramm eines Verfahrens gemäß einem Ausführungsbeispiel der vorliegenden Erfindung
-
In der nachfolgenden Beschreibung günstiger Ausführungsbeispiele der vorliegenden Erfindung werden für die in den verschiedenen Figuren dargestellten und ähnlich wirkenden Elemente gleiche oder ähnliche Bezugszeichen verwendet, wobei auf eine wiederholte Beschreibung dieser Elemente verzichtet wird.
-
Ein Ziel des hier vorgestellten Ansatzes ist die Bereitstellung eines Verfahrens und einer Schaltung zur schnellen Berechnung der Division unter Einsatz einer vorhandenen MAC-Einheit. Das Ergebnis der Berechnung von X / D ist exakt und besteht sowohl aus dem Quotient Q als auch aus dem Divisionsrest R, so dass Gleichung (1) erfüllt ist. X = Q·D + R (1)
-
Sind X und D ganze Zahlen mit Vorzeichen (signed integer), so sind der Quotient Q und der Divisionsrest D wie in Tabelle 1 dargestellt definiert. Ein Zahlenbeispiel für unterschiedliche Werte bei der Division von signed integer Zahlen ist in Tabelle 2 gegeben.
X | D | Q | R | Fall |
234 | 12 | 19 | 6 | I |
–234 | 12 | –19 | –6 | II |
234 | –12 | –19 | 6 | III |
–234 | –12 | 19 | –6 | IV |
Tabelle 2
-
Der Vorteil des hier vorgestellten Ansatzes besteht darin, dass im Unterschied zu den zwei Verfahren welche Multiplizierer zur Berechnung der Division einsetzen (siehe beispielsweise die vorstehend genannten Schriften) das Ergebnis exakt berechnet wird. Des Weiteren ist am Ende der Berechnung der Divisionsrest in einem Register gespeichert, er liegt also als Ergebnis direkt vor. Des Weiteren müssen die Operanden nicht normiert vorliegen. Die Anzahl der Takte zur Berechnung kann durch die Genauigkeit der Log2-Approximation beeinflusst werden, somit ist die Geschwindigkeit der Divisionsberechnung einstellbar und schnell. Im Vergleich zu High-Radix-Dividierern ist der Bedarf an zusätzlicher Chip-Fläche klein.
-
Formel (2) zeigt eine bekannte Rechenregel für Logarithmen welche zur Berechnung einer Division, d. h. der Berechnung eines Quotienten Q = X / D (mit X > 0 und D > 0) herangezogen werden kann. log2(Q) = log2( X / D) = log2(X) – log2(D) (2)
-
Mit dieser Rechenregel lässt sich die Division in drei Schritten berechnen:
- 1. Logarithmierung: Berechnung der Logarithmusfunktion (zur Basis 2) des Dividenden X und des Divisors D.
- 2. Berechnung der Differenz Diff der Logarithmen: Diff = log2(X) – log2(D).
- 3. Delogarithmierung: Berechnung der Exponentialfunktion (zur Basis 2) der Differenz Diff: Q = exp2(Diff) = 2Diff.
-
Die Realisierung der Logarithmusfunktion und der Exponentialfunktion durch Schaltungen, welche das Ergebnis in einem Takt bereitstellen, ist nur durch Einsatz von Näherungsverfahren möglich. Ein Beispiel für ein Näherungsverfahren zur Berechnung des log2 ist die sog. Mitchell-Approximation. Für dieses Näherungsverfahren existieren sehr effiziente Realisierungen als kombinatorische Schaltung. Aufgrund der Fehler der Näherungsverfahren sind mit dem oben dargestellten Divisionsverfahren berechnete Quotienten Q nicht exakt. Der Einsatz dieses Divisionsverfahrens wird im Folgenden als Logarithmische Division bezeichnet und in Gleichungen durch den Operator Log2-Div(X, D) ausgedrückt (Log2-Div(X, D) ≈ X / D ).
-
Das Prinzip des hier vorgestellten neuen Verfahrens sieht nun vor durch geschickte Kombination der oben dargestellten näherungsweisen Berechnung des Quotienten mittels Logarithmischer Division und dem Einsatz einer MAC-Einheit den Quotient exakt zu berechnen.
-
Eine MAC-Einheit (Multiply Accumulate Einheit) ist eine arithmetische Einheit, welche Bestandteil der meisten digitalen Signalprozessoren ist. Mit Hilfe einer MAC können Multiplikationen zweier Zahlen (B, C) ausgeführt werden und das Ergebnis zu einem bereits (im Akkumulator A) gespeicherten Wert hinzuaddiert und meist auch subtrahiert werden (siehe Formel (3)). A = A ± B·C (3)
-
Im Folgenden wird das neue Divisionsverfahren anhand der Division zweier positiver Zahlen X und D erläutert.
-
Als Startwert für den gesuchten Quotienten Q wird Q0 = 0 gewählt. Mit der MAC-Einheit kann geprüft werden ob Q0 dem exakten Quotienten entspricht, hierzu wird die Berechnung X = Q0·D in der MAC durchgeführt, siehe Formel (4). Das Ergebnis der Berechnung wird als Rest r0 bezeichnet und gibt Auskunft, ob der exakte Wert für Q gefunden wurde. Q0 = 0
r0 = X – Q0·D = X (4)
-
Ist |r
0| > |D|, so ist der exakte Quotient noch nicht gefunden, ist dagegen |r
0| ≤ |D|, so ist der Quotient gefunden. Die Bedeutung der verschiedenen Werte der Reste r ist in Tabelle 3 allgemein für den Rest r
i im Rechenschritt i dargestellt (hier: i = 0).
ri | Bedeutung |
ri < 0 und |ri| ≤ |D| | Quotient ist gefunden: Q = Qi – 1 |
ri < 0 und |ri| > |D| | Quotient ist noch nicht gefunden: Q < Qi |
ri = 0 | Quotient ist gefunden: Q = Qi |
ri > 0 und |ri| < |D| | Quotient ist gefunden: Q = Qi |
ri > 0 und |ri| = |D| | Quotient ist gefunden: Q = Qi + 1 |
ri > 0 und |ri| > |D| | Quotient ist noch nicht gefunden: Q > Qi |
Tabelle 3
-
Ist der Quotient noch nicht gefunden, so wird der Rest r
0 mittels Logarithmischer Division durch D geteilt und das Ergebnis zum aktuellen Quotient Q
0 hinzuaddiert bzw. subtrahiert um diesen zu korrigieren. Die Entscheidung ob subtrahiert oder addiert wird hängt vom Vorzeichen des aktuellen Rests r
0 ab. Ist der Rest r
0 > 0, so bedeutet dies, dass der Quotient Q
0 noch zu klein ist, d. h. das Ergebnis der Logarithmischen Division wird zu Q
0 hinzuaddiert, ist r
0 < 0, so wird subtrahiert (siehe Tabelle 3). Somit ergibt sich für den nächsten Berechnungsschritt:
-
Nun kann wieder mit der MAC geprüft werden, ob der Quotient Q gefunden wurde, hierzu wird r1 berechnet und anschließend mit den Bedingungen in Tabelle 3 verglichen. r1 = X – Q1·D (6)
-
Ist der Quotient noch nicht gefunden, so werden die zwei Berechnungsschritte solange weitergeführt, bis der Quotient gefunden ist. Die allgemeine Formulierung der zwei Rechenschritte ist hierfür durch Formel (7) gegeben. Jeweils nach Berechnung der beiden Schritte wird mit Hilfe der Bedingungen in Tabelle 3 geprüft, ob der Quotient gefunden ist.
-
-
Die Berechnung erfolgt also abwechselnd durch eine Korrektur des aktuellen Quotienten Qi (Berechnung von Qi+1 siehe Formel (7)) und einer anschließenden Überprüfung von Qi+1 durch die Berechnung des Rests ri+1 in der MAC. Durch Prüfen der Abbruchbedingungen (Tabelle 3) wird festgestellt, ob die Berechnung des Quotient Q abgeschlossen ist. Die Startwerte Q0 und r0 sind durch Formel (4) gegeben.
-
1 zeigt ein Blockschaltbild einer Vorrichtung 100 zur Realisierung des hier vorgestellten Verfahrens als Schaltung. Dabei ist in der 1 eine Schaltung zur Realisierung eines beispielhaften Ablaufs der Division (mit X > 0 und D > 0) wiedergegeben. Im Folgenden wird somit der beispielhafte Ablauf der Division zweier positiver Zahlen X und D (siehe Tabelle 1 Fall I) anhand der Schaltung in 1 beschrieben.
-
Zu Beginn wird Register MX mit dem Wert 0 initialisiert, Register MY mit dem Wert des Divisors D und Register MZ mit dem Wert des Dividenden X. Somit enthält das Register MX den Startwert für den Quotient Q
0 = 0 und Register MZ den Startwert des Restes r
0 = X – Q
0·D = X. Die Steuerleitungen der Multiplexer und der anderen Blöcke werden vom Block Ablaufsteuerung AS erzeugt. Im ersten Takt der Berechnung befindet sich Multiplexer A in Stellung 0, sodass der Block Log2-Div mittels Logarithmischer Division eine Approximation für die Division
berechnet. Der Block Quotient-Korrektur QK ist ein gesteuerter Addierer/Subtrahierer bzw. Inkrementer/Dekrementer, d. h. abhängig von den Steuerleitungen kann dieser Block die in Tabelle 4 dargestellten Operationen durchführen. Tabelle 4 erläutert dabei die Werte auf Steuerleitungen und die Operation des Blocks Quotient-Korrektur QK.
Steuerleitungen S | Operation |
A | A + B |
S | A – B |
I | A + 1 |
D | A – 1 |
Tabelle 4
-
Die Steuerleitungen haben im ersten Takt den Wert A, d. h. es wird die Summe der Logarithmischen Division Log2-Div(|r0|, D) und dem im Register MX gespeicherten Wert Q0 = 0 gebildet und am Ausgang bereitgestellt. Der Ausgangswert ist somit der erste korrigierte Quotient Q1 = Q0 + Log2-Div(|r0|, D). Der Enable-Eingang EN des Registers MX ist auf den Wert 1 gesetzt, somit wird am Ende des ersten Taktes Q1 in Register MX übernommen.
-
Im zweiten Takt wird überprüft, ob die erste Approximation Q
1 schon dem gesuchten Quotienten Q entspricht. Die MAC berechnet hierzu die Operation: MZ – MX··MY = X – Q
1·D gesteuert durch den Steuereingang Op der MAC. Das Ergebnis der Operation ist der Rest r
1 = X – Q
1·D, welcher darüber Auskunft gibt ob der exakte Quotient bereits gefunden ist (siehe Tabelle 3). Ist zum Beispiel der Fall r
1 > 0, |r
1| > IDI eingetreten, so bedeutet dies, dass Q, noch zu niedrig ist. Im dritten Takt wird deshalb Multiplexer A auf Stellung 1 gebracht, d. h. es wird durch den Block Log2-Div nun ein approximativer Wert für die Division
berechnet. Das Ergebnis wird zu Q
1 hinzuaddiert, die Steuerleitung für den Block Quotient-Korrektur QK werden deshalb auf Wert A gestellt (siehe Tabelle 4). Das Ergebnis stellt eine zweite Approximation Q
2 für den Quotient Q dar und wird in Register MX übernommen.
-
Analog zum zweiten Takt wird im vierten Takt nun geprüft, ob der exakte Quotient Q nun gefunden ist. Wieder wird durch die MAC-Operation MZ – MX··MY der Rest berechnet: r2 = X – Q2·D. Nun ist z. B. der Fall r2 > 0, |r2| = IDI eingetreten, d. h. Q2 ist genau um 1 LSB zu klein (siehe Tabelle 3) und sollte korrigiert werden, der exakte Quotient Q ist dadurch gefunden.
-
Die Korrektur von Q
2 wird im nächsten Takt, welcher somit der letzte Takt der Berechnung ist, gemacht. Die Steuerleitung für den Block Quotient-Korrektur QK hat den Wert I, sodass am Ausgang der Wert A + 1 = Q
2 + 1 erzeugt wird. Dieser Wert wird in das Register MX übernommen. Um den korrekten Divisionsrest zu berechnen soll der Block Rest-Korrektur RK den Wert r
2 am Ausgang der MAC korrigieren. Der Block Rest-Korrektur RK ist ein gesteuerter Addierer/Subtrahierer, dessen Operation in Tabelle 5 dargestellt ist. Tabelle 5 beschreibt dabei Werte auf Steuerleitungen und die zugehörigen Operation eines gesteuerten Addieres/Subtrahierers.
Steuerleitung S | Operation |
1 | A + B |
0 | A – B |
Tabelle 5
-
Da der Quotient Q2 um 1 erhöht wurde, soll der Wert am Ausgang der MAC r2 = X – Q2·D um den Wert des Divisors D erniedrigt werden um den korrekten Divisionsrest zu erhalten. Die Steuerleitung des Blocks Rest-Korrektur RK wird daher auf 0 gestellt und R = X – Q2·D – D berechnet. Multiplexer B ist in Stellung 1, der Enable-Eingang EN des Registers MZ ist 1 und das Ergebnis wird gespeichert. Somit ist der korrekte Quotient Q in Register MX und der korrekte Divisionsrest R in Register MZ gespeichert.
-
Die Schnelligkeit, d. h. die Anzahl der Takte, welche zur Berechnung der Division nötig sind hängen beim dargestellten Verfahren von der Genauigkeit der Logarithmischen Division und somit von den eingesetzten Näherungsverfahren zur Log2- und Exp2-Berechnung ab. Damit ist es möglich den Hardware-Bedarf der Schaltung an die benötigte Schnelligkeit der Division anzupassen.
-
Nachfolgend wird näher auf den zeitlichen Ablauf der Berechnung einer Division eingegangen. Wie im Ablauf der Berechnung oben dargestellt besteht die Berechnung aus jeweils 2 Schritten, welche in aufeinanderfolgenden Takten bearbeitet werden. In einem Takt wird durch die Blöcke Logarithmische Division und Quotient-Korrektur QK ein Wert für den Quotient Q
i+1 berechnet. Im darauffolgenden Takt wird der Quotient Q
i+1 durch Berechnung des Restes r
i+1 in der MAC überprüft, gleichzeitig werden durch den Block Ablaufsteuerung AS die Abbruchbedingungen geprüft. Sind die Bedingungen noch nicht erfüllt, so wird ein weiterer Durchlauf durch die 2 Berechnungsschritte gestartet. Tabelle 6 zeigt den zeitlichen Ablauf der Berechnung und der Wertübernahme in die Register.
Takt | Beschreibung | Aktualisierte Register I |
0 | Anlegen der Werte an Register MX, MY und MZ | MX, MY, MZ |
1 | Berechnung des Blocks Log2-Div und Quotient-Korrektur: → Q1 | MX |
2 | Berechnung der MAC: → r1 | - |
3 | Berechnung des Blocks Log2-Div und Quotient-Korrektur: → Q2 | MX |
4 | Berechnung der MAC: → r2 | - |
... | ... | ... |
2k | Berechnung der MAC: → rk | - |
2k + 1 | Berechnung des Blocks Quotient-Korrektur und Rest-Korrektur: → Q, R | MX, MZ |
Tabelle 6
-
Nachfolgend wird die Implementierung des vorstehend beschriebenen Ansatzes für signed integer Zahlen vorgestellt. Eine Implementierung des beschriebenen Verfahrens für die Division zweier signed integer Zahlen X und D (beliebige Vorzeichen) ist in dem Blockschaltbild aus 2 dargestellt. Analog zu 1 sind rechts die Eingangsregister MX 1 und MY 2 der MAC 3 dargestellt. Beide Register haben beispielsweise eine Wortlänge von n Bit. Das Ausgangsregister der MAC ist MZ 4 und besitzt eine Wortlänge von beispielsweise 2n Bit. Die MAC kann die Operation MZ – MX··MY ausführen, gesteuert durch den Steuereingang Op. Multiplexer A aus 1 ist in 2 durch Block 5 dargestellt. Die Berechnung der Logarithmischen Division (Block Log2-Div in 1) ist in 2 durch die Blöcke 6 bis 11 dargestellt. Blöcke 6 und 7 berechnen je die Absolutbeträge der an ihren Eingängen anliegenden Werte, z. B. durch 2er-Komplementbildung, für den Fall dass die Eingangswerte negativ sind. Blöcke 8 und 9 berechnen eine Approximation für Funktionswerte der Log2-Funktion für die an den Blöcken anliegenden positiven Werte. Beispielsweise kann hierfür die sog. Mitchell-Approximation eingesetzt werden, welche sich leicht als kombinatorische Schaltung realisieren lässt. Block 10 bildet die Differenz seiner Eingänge A und B: A–B, z. B. durch Addition des 2er-Komplements von B zu A. Block 11 berechnet einen Approximation für den Funktionswert der Exponentialfunktion zur Basis 2 (2X). Der Eingangswert ist die durch Block 10 berechnete Differenz Diff. Abhängig von dem eingesetzten Verfahren zur Log2-Berechnung in den an Blöcken 8 und 9 werden in Block 11 beispielsweise die hierzu inversen Rechenoperationen durchgeführt. Der Block Quotient-Korrektur QK aus 1 ist in 2 durch die Blöcke 12 bis 14 dargestellt. Block 12 ist eine binär dargestellte Konstante mit dem Wert 1 LSB. Multiplexer 13 wählt aus, ob der Wert 1 LSB oder der Ausgang der Logarithmischen Division (Blöcke 6 bis 11) dem Eingang B des gesteuerten Addierers/Subtrahierers 14 zugeführt werden. Die Funktion des gesteuerten Addierers/Subtrahierers 14 ist in Tabelle 5 dargestellt. Der Block Rest-Korrektur aus 1 ist in 2 durch den gesteuertem Addierer/Subtrahierer 15 (siehe Tabelle 5) und den Multiplexer 16 realisiert. Die Steuerung der Multiplexer, der Addierer/Subtrahierer und der Wertübernahme in die Register übernimmt die Ablaufsteuerung AS 17. Sie besitzt vier Eingänge die jeweils mit den folgenden Komponenten verbunden sind: dem Register MY 2, dem Register MZ 4, dem Ausgang der MAC 3 und dem Ausgang des Subtrahierers 10. Die Ausgänge der Ablaufsteuerung AS sind die Steuersignale s0...s7. Eine mögliche Realisierung der Ablaufsteuerung AS ist im Blockschaltbild in 3 dargestellt.
-
Aus den Eingangssignalen werden drei Zwischensignale erzeugt, mit deren Hilfe sich die Funktionsweise sehr leicht darstellen lässt. Die Bezeichnungen der drei Zwischensignale sind Fall, Operation und Konvergenz. Die genaue binäre Codierung der Zustände der Zwischensignale wird im Folgenden nicht angegeben, da diese der Darstellung der Funktionsweise der Ablaufsteuerung dienen und nicht zwangsläufig exakt so realisiert werden brauchen. Der Block Fall-Überprüfung
17a ermittelt anhand der Vorzeichen des Dividenden X in Register MZ
4 und des Divisors D in Register MY
2 um welchen Fall aus Tabelle 1 es sich handelt. Der Ausgang des Blocks ist das Signal „Fall”, welches vier verschiedene Zustände annehmen kann (siehe Tabelle 7). Tabelle 7 beschreibt dabei die Funktion des Blocks Fall-Überprüfung
17a.
MSB von MY | MSB von MZ | Fall |
0 | 0 | I |
0 | 1 | II |
1 | 0 | III |
1 | 1 | IV |
Tabelle 7
-
Das Ausgangssignal des Blocks ist in Tabelle 7 durch die doppelt eingefasste Spalte markiert. Der Block Vorzeichen-/Null-Überprüfung
17b ermittelt anhand des Ausgangswerts der MAC und dem Ausgang des Blocks Fall-Überprüfung
17a, ob der aktuell berechnete Rest r
i der Division kleiner, größer oder gleich 0 ist und ob folglich der Wert der nächsten Logarithmischen Division vom aktuellen Wert in Register MX
1 subtrahiert oder addiert werden soll oder aber ob der Quotient schon exakt gefunden wurde. Das Ausgangssignal des Blocks kann drei Zustände annehmen und ist mit Operation bezeichnet, die Funktion ist in Tabelle 8 dargestellt. Tabelle 8 beschreibt dabei die Funktion des Blocks Vorzeichen/Null-Überprüfung
17b.
Ausgang der MAC | Fall | Operation | Erläuterung |
= 0 | don't care | Nop | Qi·D = X |
> 0 | I oder II | Add | Qi·D < X |
< 0 | I oder II | Sub | Qi·D > X |
> 0 | III oder IV | Sub | Qi·D > X |
< 0 | III oder IV | Add | Qi·D < X |
Tabelle 8
-
Die Überprüfung, ob das aktuell in Register MX
1 gespeicherte Wort exakt dem Quotienten Q entspricht wird mit Hilfe der Signale Operation, Fall und Diff (Ausgang des Subtrahierers
10 in
2) durch den Block Konvergenz-Überprüfung
17c durchgeführt. Das Signal „Konvergenz” gibt somit an, ob die Berechnung des Quotienten (nach der eventuellen abschließenden Korrektur) abgeschlossen ist, siehe Tabelle 9. Tabelle 9 beschreibt dabei die Funktion des Blocks Konvergenz-Überprüfung.
Operation | Diff | Fall | Konvergenz | Korrektur MX |
Nop | don't care | don't care | 1 | - |
Add | = 0 | I oder IV | 1 | MX = MX + 1 |
Add | < 0 | I oder IV | 1 | - |
Sub | = 0 | I oder IV | 1 | MX = MX – 1 |
Sub | < 0 | I oder IV | 1 | MX = MX – 1 |
Add | = 0 | II oder III | 1 | MX = MX + 1 |
Add | < 0 | II oder III | 1 | MX = MX + 1 |
Sub | = 0 | II oder III | 1 | MX = MX – 1 |
Sub | < 0 | II oder III | 1 | - |
Add oder Sub | > 0 | don't care | 0 | weiterer Durchlauf nötig |
Tabelle 9
-
Somit lassen sich die Steuersignale s0...s7 mithilfe der drei Signale folgendermaßen realisieren.
-
Steuersignal s0 steuert Multiplexer
5. Im ersten Takt der Berechnung wird der in Register MZ
4 gespeicherte Dividend X auf den Eingang der Logarithmischen Divisionsschaltung (Blöcke
6 bis
11) gelegt. In allen weiteren Takten wird jeweils der Ausgang der MAC auf diesen Eingang gelegt, siehe Tabelle 10. Tabelle 10 beschreibt dabei die Werte des Steuersignals s0 im jeweiligen Takt.
Takt | s0 |
1 | 0 |
alle anderen | 1 |
Tabelle 10
-
Mit Steuerleitung s1 wird ausgewählt, ob zur Korrektur des Wertes in Register MX
1 der Ausgang der logarithmischen Divisionsschaltung (Blöcke
6 bis
11) oder aber die Konstante 1 LSB benutzt werden soll, siehe Tabelle 11. Tabelle 11 beschreibt dabei die Werte des Steuersignals s1 sowie den zugehörigen Wert Diff.
Tabelle 11
-
Steuerleitung s2 bestimmt ob die Korrektur des Wertes in Register MX
1 durch Addition oder durch Subtraktion des Wertes am Ausgang von Multiplexer
13 geschieht, siehe Tabelle 12. Tabelle 12 beschreibt dabei die Werte des Steuersignals s2 sowie die entsprechende Operation.
Operation | s2 |
Add | 1 |
Sub | 0 |
Nop | don't care |
Tabelle 12
-
Steuerleitungen s3 und s4 dienen der Korrektur des Divisionsrests im letzten Takt der Berechnung. s3 wählt den korrekten Divisionsrest abhängig von der nötigen Korrektur des Registers MX
1 aus (siehe Tabelle 9 und Tabelle 13). Tabelle 13 beschreibt dabei die Werte des Steuersignals s3 in Abhängigkeit von den Signalen Operation, Fall und Diff.
Operation | Fall | Diff | s3 |
Nop | don't care | don't care | 0 |
Add | I oder IV | < 0 | 0 |
Add | alle anderen möglichen Kombinationen | 1 |
Sub | II oder III | < 0 | 0 |
Sub | alle anderen möglichen Kombinationen | 1 |
Tabelle 13
-
Steuerleitung s4 steuert den gesteuerten Addierer/Subtrahierer
15 abhängig vom Wert des Signals „Operation”, siehe Tabelle 14. Tabelle 14 zeigt dabei die Werte des Steuersignals s4 in Abhängigkeit von der gewählten Operation.
Operation | s4 |
Add | 0 |
Sub | 1 |
Nop | don't care |
Tabelle 14
-
Steuerleitung s5 steuert die Wertübernahme in das Register MZ
4, siehe Tabelle 15. Tabelle 15 zeigt dabei Werte des Steuersignals s5 in Abhängigkeit vom Signal Konvergenz.
Tabelle 15
-
Wenn der Block Konvergenz-Überprüfung anzeigt, dass das korrekte Ergebnis gefunden wurde, dann kann der Divisionsrest in Register MZ
4 übernommen werden, d. h. Steuerleitung s5 ist identisch mit dem Signal Konvergenz. Steuerleitung s6 steuert die Wertübernahme in das Register MX
1. In jedem zweiten Takt (1, 3, ... ) wird ein korrigierter Wert in MX
1 übernommen, siehe auch Tabelle 6. Tabelle 16 zeigt die Werte des Steuersignals s6 in Abhängigkeit vom Takt, der Operation, dem Signal Diff sowie dem Fall.
Takt | Operation | Diff | Fall | s6 |
ungerade | Nop | don't care | don't care | 0 |
ungerade | Add | < 0 | I oder IV | 0 |
ungerade | Sub | < 0 | II oder III | 0 |
ungerade | Add oder Sub | alle anderen möglichen Kombinationen | 1 |
gerade | don't care | don't care | don't care | 0 |
Tabelle 16
-
Steuerleitung s7 wählt die Operation der MAC 3 aus und ist deshalb konstant, da ausschließlich die Operation MZ – MX··MY benötigt wird. Falls diese Operation in der MAC nicht verfügbar sein sollte, d. h. falls z. B. in der MAC ausschließlich die Operation MZ + MX··MY berechnet werden kann, so wäre das dargestellte Verfahren dennoch einsetzbar, wenn in Register MZ 4 der negierte Dividend –X geladen wird. In diesem Falle würde die Berechnung des Restes ri dann durch die Operation –X + Qi·D geschehen.
-
Für die weitere Verarbeitung mit den oben dargestellten Blöcken könnte dieser Rest ri dann z. B. durch 2er-Komplementbildung negiert werden. Das Verfahren ist somit auch in diesem Fall einsetzbar.
-
Der hier vorgestellte Ansatz kann dazu dienen in ASICs welche über eine MAC verfügen ein Verfahren bereitzustellen um mit einem kleinen Zusatzmodul (für die Logarithmische Division) die Berechnung der Division schnell und kosteneffizient zu lösen. Divisionsberechnungen werden insbesondere bei der Berechnung von aktuellen Algorithmen der Signalverarbeitung (z. B. Kalman-Filter) benötigt.
-
Die beschriebenen und in den Figuren gezeigten Ausführungsbeispiele sind nur beispielhaft gewählt. Unterschiedliche Ausführungsbeispiele können vollständig oder in Bezug auf einzelne Merkmale miteinander kombiniert werden. Auch kann ein Ausführungsbeispiel durch Merkmale eines weiteren Ausführungsbeispiels ergänzt werden.
-
Ferner können die hier vorgestellten Verfahrensschritte wiederholt sowie in einer anderen als in der beschriebenen Reihenfolge ausgeführt werden.
-
Umfasst ein Ausführungsbeispiel eine „und/oder”-Verknüpfung zwischen einem ersten Merkmal und einem zweiten Merkmal, so ist dies so zu lesen, dass das Ausführungsbeispiel gemäß einer Ausführungsform sowohl das erste Merkmal als auch das zweite Merkmal und gemäß einer weiteren Ausführungsform entweder nur das erste Merkmal oder nur das zweite Merkmal aufweist.
-
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
-
- I. Koren, Computer Arithmetic Algorithms. AK Peter, 2001 [0002]
- B. Parhami, Computer Arithmetic – Algorithms and Hardware Designs. Oxford University Press, 200 [0002]