-
Die vorliegende Erfindung betrifft betrifft eine Schaltungsanordnung, ein Verfahren und ein Computerprogramm zur schnellen und einfachen Approximation von Funktionswerten der Logarithmusfunktion sowie ein maschinenlesbares Speichermedium mit Programmcodemitteln, die eine Recheneinheit zu einer derartigen Approximation veranlassen.
-
Stand der Technik
-
Mit Hilfe der Logarithmusfunktion können ganzzahlige wie allgemeine Potenzen (z.B. Wurzeln) von Zahlen bestimmt werden. Neben einer Vielzahl von weiteren Anwendungen treten solche Potenzfunktionen beispielsweise bei der Temperaturkompensation von Sensoren auf. Zudem können Logarithmen dazu dienen, Multiplizierer, Dividierer oder Wurzelberechner im Betrieb auf korrekte Funktion zu überprüfen, was in sicherheitskritischen Anwendungen relevant ist. Eine kostengünstige Berechnung von Logarithmenwerten in der Festkommaarithmetik ist daher von großer Bedeutung.
-
Die Berechnung von Funktionswerten der Logarithmusfunktion ist seit etwa 1990 in vielen Fließkommaprozessoren als eingebaute Hardwarefunktion verfügbar. Zumeist wird sie durch einen integrierten Gleitkomma-Coprozessor erledigt. Alternativ erfolgt die Logarithmenberechnung durch Software (sogenannte „Gleitkomma-Emulation“), was naturgemäß deutlich langsamer geschieht. In der Regel werden zur näherungsweisen Berechnung des Logarithmus Potenzreihen oder Kettenbrüche herangezogen. Dazu sind jeweils mehrere Multiplikationen, Divisionen und Additionen durchzuführen, was einen hohen Rechen- und Zwischenspeicheraufwand bedeutet.
-
Alternativ lassen sich Logarithmen iterativ berechnen (siehe z.B. J.-C. Bajard, S. Kla und J.-M. Muller: „BKM: A new hardware algorithm for complex elementary functions" in: IEEE transactions on computers, vol. 43, no. 8, August 1994). Die Anwendung dieses Verfahrens auf Logarithmen reeller Zahlen beruht im Kern auf einem Algorithmus, der im Wesentlichen bereits 1624 von Henry Briggs in dessen Buch „Arithmetica Logarithmica“ veröffentlicht wurde.
-
Aufgabe der vorliegenden Erfindung ist die Bereitstellung eines Verfahrens und einer Schaltungsanordnung zur schnellen und einfachen Berechnung von Näherungen von Funktionswerten der Logarithmusfunktion zur Basis zwei.
-
Offenbarung der Erfindung
-
Erfindungsgemäß wird eine Schaltungsanordnung, ein Verfahren, ein Computerprogramm und ein maschinenlesbares Speichermedium gemäß den unabhängigen Patentansprüchen vorgeschlagen. Bevorzugte Ausführungsformen sind in den Unteransprüchen offenbart.
-
Die erfindungsgemäße Schaltungsanordnung dient der Bestimmung eines Näherungswertes YN für den binären Logarithmus log2(x) einer (beliebig) gewählten positiven reellen Zahl x. Die positive Zahl x kann der Schaltungsanordnung beispielsweise vom Nutzer oder automatisch von einer anderen Einheit zugeführt werden. Analog kann der Wert N von einem Anwender oder von einem Prozess in einem Rechnersystem, in dem die Schaltungsanordnung eingebunden ist, vorgegeben werden oder worden sein.
-
Die Schaltungsanordnung umfasst eine Normierungseinheit, die eingerichtet ist, eine Zahl k Є Z derart zu bestimmen, dass für x‘ := 2–kx gilt ½ ≤ x‘ < 1. (Hier und im Folgenden seien N := {1, 2, 3, ....} die Menge der natürlichen Zahlen und Z die Menge der ganzen Zahlen.)
-
Für die als Binärzahl dargestellte Zahl x entspricht die Normierung von x auf den Wert x‘ Є [1/2, 1] einer Verschiebung um k Stellen, und zwar nach rechts, falls k positiv ist und nach links, wenn k ≤ 0 ist. Die Verschiebung erfolgt so, dass die erste Nachkommastelle der Zahl x‘, wenn diese als (nichtperiodische) Binärzahl dargestellt ist, eine Eins ist und alle Vorkommastellen null sind.
-
Verfahren zur Bestimmung von k sind beispielsweise auch aus der kombinatorischen Logik bekannt. Eine solche kombinatorische Lösung (d.h. eine logische Beschreibung mit AND, OR und NOT) lässt sich in Gatter umsetzen und kostet nur die Gatterlaufzeit (keine Taktung).
-
Die erfindungsgemäße Schaltungsanordnung umfasst weiterhin eine Recheneinheit, die eingerichtet ist, die Zahl YN als Näherungswert für log2(x) zu berechnen. YN ist als N-tes Folgenglied der Folge (Yn)nЄN definiert, die zusammen mit der reellen Zahlenfolge (Ln)nЄN gegeben ist durch
L1 := x‘ und Y1 := k
sowie rekursiv
Ln+1 := Ln(1 + 2–n) und Yn+1 := Yn -log2(1 + 2–n) falls Ln(1 + 2–n) < 1
und
Ln+1 := Ln und Yn+1 := Yn sonst.
-
Es versteht sich, dass hier und im Folgenden die Zahlen log2(1 + 2–n) gegebenenfalls durch geeignete Näherungen zu ersetzen sind, wie es für die konkrete Arithmetik mit endlich vielen Stellen erforderlich ist. Beispielsweise werden die Werte nur auf 8 oder 16 Nachkommastellen genau bestimmt. Die Bezeichnung log2(1 + 2–n) wird für diese Näherungswerte beibehalten.
-
Nach Definition von x‘ ist log2 x = k + log2 x‘ = Y1 + log2 L1. Damit ist log2L1 = log2x – Y1.
-
Induktiv ergibt sich (unter Verwendung des Logarithmengesetzes log2(ab) = log2a + log2b für a, b >0) weiter log2Ln = log2x – Yn für alle n Є N
-
Wie unten gezeigt wird, konvergiert die Folge (L
n)
nЄN gegen eins. Aufgrund der Stetigkeit der Logarithmusfunktion folgt daraus, dass
also
Somit ist Y
N in der Tat ein Näherungswert für log
2x.
-
Analog kann das erfindungsgemäße Verfahren zur automatischen Bestimmung eines Näherungswertes für einen Logarithmus die genannten und nachfolgend beschriebenen Schritte umfassen.
-
Das erfindungsgemäße Verfahren erlaubt eine besonders einfache Umsetzbarkeit in digitale Hardware; entsprechend ist die erfindungsgemäße Schaltungsanordnung besonders einfach. Anders als bei der oben erwähnten Methode von Briggs sind nämlich keinerlei Divisionen notwendig. Im Gegensatz zur oben genannten BKM-Methode, bei der jeweils zwei komplette Datenworte miteinander verglichen werden, muss erfindungsgemäß während der Iteration immer nur ein einziges Bit geprüft werden. Außerdem bestehen einige Unterschiede in der Initialisierung und in der Steuerung der Iterationen.
-
Die durchzuführenden Berechnungen sind einfach zu realisieren, weil nur bedingte Additionen und Verschiebungen von Datenwörtern („shifts“) durchzuführen sind. Die bedingten Additionen werden jeweils nur durch ein einziges Bit gesteuert.
-
Beispielsweise lassen sich die Zahlen Ln+1 wegen Ln+1 = Ln(1 + 2–n) = Ln + Ln2–n aus Ln durch eine einfache Addition und eine Stellenverschiebung um n Stellen nach rechts realisieren.
-
Je höher die Ordnung N, desto höher ist die Genauigkeit des Ergebnisses. Mittelt man bei der Berechnung des Logarithmus in N Schritten den Fehler über alle möglichen Werte für x‘, so halbiert beispielsweise eine Erhöhung von N um 1 diesen mittleren Fehler.
-
Die Erfindung erlaubt eine schnelle (näherungsweise) Logarithmusberechnung schon bei beschränkten Systemkapazitäten, wie sie beispielsweise in einem Kraftfahrzeug vorliegen. Sie bietet die Möglichkeit, in ASICS (anwendungsspezifische integrierte Schaltung) die Berechnung von Potenzfunktionen über Logarithmen kostengünstig umzusetzen.
-
Wie oben erwähnt wurde, ist L
1 = x‘ so gewählt, dass seine erste binäre Nachkommastelle eins ist. Aus den Ausführungen weiter unten ergibt sich weiterhin, dass die Länge der mit der ersten Nachkommastelle beginnenden, nicht von einer Null unterbrochenen Einserketten nach Konstruktion der L
n monoton mit n wächst. Im Grenzübergang erhält man dabei die Binärzahl 0,
1 bin = 1. Dies erklärt die verwendete, oben angegebene Beziehung
die auch durch Simulation nachgewiesen werden kann.
-
Mathematisch-analytisch lässt sich
Beispiel folgendermaßen beweisen: Zunächst wird eine äquivalente Definition der Folge (L
n)
nЄN verwendet, bei der eine Folge (d
n)
nЄN eingeführt wird: Es ist L
1 = x‘ und rekursiv für n ≥ 1: L
n+1 = L
n+1(1 + d
n2
–n) = x‘(1 + d
12
–1)(1 + d
22
–2)...(1 + d
n2
–n), wobei jeweils d
j := 1 falls L
j(1 + 2
–j) < 1 und d
j := 0 sonst.
-
Behauptung: Die Folge (Ln)n konvergiert gegen 1.
-
Beweis: Zunächst ist die Folge (L
n)
n monoton wachsend und durch 1 beschränkt, also konvergent gegen einen Grenzwert
-
Annahme: a < 1. Dann existiert ein m Є N derart, dass a(1 + 2–m) < 1; dabei kann man m ≥ 3 annehmen. Wegen 0 < Lm ≤ a und 0 < Lm+1 ≤ a gilt damit auch Lm(1 + 2–m) < 1 und Lm+1(1 + 2–m) < 1.
-
Die erste dieser Ungleichungen liefert dm = 1 und also Lm+1 = Lm (1 + 2–m) nach Definition der Folge. Damit folgt aus der zweiten Ungleichung Lm(1 + 2–m) = Lm+1(1 + 2–m) < 1 (1).
-
Zwischenbehauptung: Für alle j = 1, ..., m – 1 ist dm-j = 1 und Lm-j(1 + 2–(m–j))2 < 1.
-
Damit folgt dann insbesondere d1 = d2 = d3 = 1 und daher a ≥ L4 = x‘ (1 + 2–1)(1 + 2–2)(1 + 2–3) = x‘·3/2·5/4·9/8 ≥ 1/2·135/64 ≥ 1 im Widerspruch zur Annahme a < 1.
-
Beweis der Zwischenbehauptung:
-
Zunächst ist 1 + 2–(m–1) ≤ 1 + 2–(m–1) + 2–2m = (1 + 2–m)2 (2).
-
Wegen 0 < Lm–1 ≤ Lm folgt Lm-1(1 + 2–(m–1)) ≤ Lm(1 + 2–(m–1)) ≤ Lm(1 + 2–m)2 < 1; bei der letzten Ungleichung wurde dabei die Ungleichung (1) verwendet. Nach Definition ergibt sich dm-1 = 1 und daher Lm = Lm-1(1 + 2–(m–1)). Erneute Verwendung von (2) liefert dann mit (1) Lm-1(1 + 2–(m–1))2 = Lm(1 + 2–(m–1)) ≤ Lm(1 + 2–m) < 1.
-
Sukzessive ergibt sich mit m – 1 (bzw. m – 2, ..., 2) in den Ungleichung (1) und (2) anstelle von m die Zwischenbehauptung. Das beendet den Beweis.
-
In einer bevorzugten Ausführungsform umfasst die Schaltungsanordnung der Erfindung eine Speichereinheit, in der für verschiedene Werte von n Є N die Werte -log2(1 + 2–n) abgelegt sind. Diese Werte hängen nicht von der Zahl x ab und können daher im Voraus berechnet und bei der Berechnung eines Approximationswertes einer beliebigen positiven Zahl x herangezogen werden. Die Berechnung des Näherungswertes wird dadurch beschleunigt.
-
Vorzugsweise sind mindestens für n = 1, 2, ... N – 1 die Werte -log2(1 + 2–n) abrufbar. Damit stehen alle für eine Bestimmung von Yn, n = 2, 3, ... N erforderlichen Faktoren bereits vorab zur Verfügung.
-
Vorteilhaft ist es, wenn die Werte in Form einer Tabelle gespeichert sind, in der jeder gespeicherte Wert -log2(1 + 2–n) mit dem zugehörigen n assoziiert ist. Auf diese Weise können die Werte bei Kenntnis von n besonders leicht abgerufen werden. Alternativ können die Werte in einer vorbestimmten Reihenfolge beispielsweise in einer Liste gespeichert werden. In dieser Reihenfolge werden die Werte dann vorzugsweise abgerufen bzw. (im Falle Ln(1 + 2–n) < 1) verworfen.
-
Geeignet als Speichereinheit sind beispielsweise Permanentspeichermedien wie eine ROM(read only memory)- eine PROM(programable read only memory)- oder eine EPROM(erasable programmable read-only memory)-Einheit. Die Verwendung einer anderen Speichereinheit ist jedoch ebenfalls möglich.
-
Es ist möglich, anhand der binären Darstellung der Zahl L
n auf die kleinste Zahl j Є N
0 := N ∪ {0} zu schließen, für die L
n(1 + 2
–(n+j))<1 ist. Sind nämlich beispielsweise mit v ≥ 1 die ersten n + v binären Nachkommastellen von L
n gleich 1, so folgt
und daher
für alle m mit 0 ≤ m < v.
-
Also ist Ln = Ln+1 = ... = Ln+v-1 = Ln+v und entsprechend Yn = Yn+1 = ... = Yn+v-1 = Yn+v.
-
Ist umgekehrt für k ≤ n die k-te binäre Nachkommastelle von L
n gleich null, so folgt
und damit L
n(1 + 2
–n)<1.
-
Auf diese Weise lassen sich Rechenschritte durch eine Betrachtung der binären Nachkommastellen vermeiden. Beispielsweise kann der Index im ersteren Fall direkt von n auf n + ν hochgesetzt werden, ohne dass für m = 1, ... v – 1 die Zahlen
ausgerechnet werden.
-
In einer alternativen bevorzugten Ausführungsform bestimmt die Recheneinheit den Wert YN, indem iterativ für jedes n = 2, 3, ..., N – 1 der Wert Ln(1 + 2–n) bestimmt wird. Der zugehörige Index n wird vorzugsweise von einer Ablaufsteuerung bereitgestellt. Diese kann getaktet sein und dadurch den zeitlichen Ablauf des Verfahrens steuern.
-
Jeder Iterationsschritt kann dann eine Vergleichsoperation umfassen, in der die Gültigkeit der Ungleichung Ln(1 + 2–n) < 1 geprüft wird. Vorteilhafterweise wird dabei lediglich die erste binäre Vorkommastelle des Produkts Ln(1 + 2–n) betrachtet, also dasjenige Bit, das der Stelle 20 entspricht: Da das Produkt jedenfalls kleiner ist als zwei, ist die Ungleichung genau dann nicht erfüllt, wenn seine erste binäre Vorkommastelle gleich eins ist. Durch die Betrachtung nur der ersten Vorkommastelle kann also die Operation beschleunigt und vereinfacht werden.
-
In einer bevorzugten Ausführungsform werden die Werte Ln und/oder Yn in einem jeweils eigenen oder auch in einem gemeinsamen Speicherbereich gespeichert, beispielsweise in einem jeweiligen Register. Dies erlaubt einen unmittelbaren und schnellen Zugriff auf die Werte. Die Register können getaktet sein, beispielsweise synchronisiert mit der oben erwähnten Ablaufsteuerung.
-
Wenn ein höherer Index n einen geänderten Wert für Ln und/oder Yn ergibt, werden die jeweiligen Werte vorteilhafterweise überschrieben. Durch das Überschreiben kann Speicherplatz gespart werden, da beispielsweise für alle Ln ein einziges Register verwendet werden kann.
-
Die Schaltungsanordnung der vorliegenden Erfindung kann in eine Schaltungseinrichtung zur punktweisen Approximation des Logarithmus zu einer beliebig gewählten Basis a > 0, a ≠ 1 eingebunden sein. Dabei kann die Schaltungseinrichtung Mittel umfassen, mit denen ein Anwender oder ein anderes System die Basis a festlegen kann. Bekanntlich gilt
Um einen Näherungswert von log
ax zu berechnen, können die Logarithmenwerte auf der rechten Seite dieser Gleichung jeweils durch Näherungswerte ersetzt werden, die durch eine Schaltungsanordnung der oben beschriebenen Ausführungsformen bestimmt werden oder wurden. Soll log
ax für verschiedene Zahlen x näherungsweise berechnet werden, umfasst die Schaltungseinrichtung vorzugsweise eine Speichereinheit, in der ein geeigneter Näherungswert für log
2a abgelegt ist. Damit muss der genannte approximierte Wert für log
2a für mehrere x-Werte nur einmal berechnet werden.
-
Gegenstand der Erfindung ist weiterhin das bereits oben erwähnte entsprechende Verfahren zur automatischen Bestimmung eines Näherungswertes für log2x.
-
Zu Ausgestaltungen dieses Verfahren sei ausdrücklich auf die obigen Ausführungen verwiesen.
-
Die oben beschriebenen Möglichkeiten der Berechnung eines Näherungswertes YN für einen Logarithmuswert können in Programmcodemitteln festgelegt sein, die auf einem oder mehreren computerlesbaren Datenträger(n) gespeichert sind.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Es versteht sich, dass die vorstehend genannten und die nachfolgend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.
-
Die Erfindung ist anhand von Ausführungsbeispielen in den Zeichnungen schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnungen ausführlich beschrieben.
-
Kurze Beschreibung der Zeichnungen
-
1 stellt eine beispielhafte Schaltungsanordnung gemäß einer Ausführungsform der vorliegenden Erfindung schematisch dar.
-
2 zeigt ein Ablaufdiagramm für eine Logarithmusapproximation gemäß einer Ausführungsform der vorliegenden Erfindung.
-
Ausführungsform(en) der Erfindung
-
In der in 1 gezeigten Schaltungsanordnung 1 steuert eine getaktete Ablaufsteuerung 111 den zeitlichen Ablauf des Näherungsverfahrens. Ebenso werden die dargestellten Register 12 und 14 getaktet.
-
Eine mit einem Eingabemittel 101 bereitgestellte Zahl x>0 wird einer Normierungseinheit 10 zugeführt. Dort wird aus x der normierte Wert x‘ gewonnen und die dazu erforderliche Anzahl k von Verschiebungen bestimmt.
-
Die Ablaufsteuerung 111 sorgt zunächst dafür, dass der links dargestellte Multiplexer 11 in der Position B steht, bei der er den Wert x‘ an das links dargestellte Register 12 weiterleitet, in dem x‘ gespeichert wird. Gleichzeitig steht der rechts dargestellte Multiplexer 13 in der Stellung D, wobei der Verschiebewert k an das nachfolgende Register 14 weitergeleitet und dort gespeichert wird.
-
In den nachfolgenden N – 1 Ablaufschritten (wobei z.B. N = 17 ist) steht der Multiplexer 13 stets in der Stellung E. Der links dargestellte Addierer 15 berechnet bei der j-ten Iteration jeweils das (1 + 2j)-fache des Inhalts des Registers 12. Hierbei wird der jeweilige Wert j von der Ablaufsteuerung 100 geliefert. Ist das Ergebnis kleiner als 1, so wird dies vom Vergleicher 16 erkannt. Der Vergleich ist sehr einfach zu realisieren, indem beim Ergebnis des Addierers das Bit mit der Wertigkeit 20 = 1 betrachtet wird.
-
Ist das Ergebnis des Addierers kleiner als eins, so wird der Multiplexer 11 so gesteuert, dass er den Eingang A (d.h. das Ergebnis) an das Register 12 weiterleitet, wo das Ergebnis gespeichert wird. Ist das Ergebnis hingegen größer oder gleich 1, so wird stattdessen der Eingang C des Multiplexers 11 zum Register 12 durchgeschaltet, so dass der Registerinhalt unverändert bleibt.
-
Gleichzeitig wird unter Verwendung des von der Ablaufsteuerung 111 gelieferten Wertes j eine Tabelle 17 (z.B. in einem ROM) adressiert, in der die Werte log2(1 + 2–j) mindestens für j = 1, ... N – 1 abgelegt sind.
-
Der entsprechende Wert wird ausgelesen und über eine bitweise AND-Verknüpfung dem rechts dargestellten Addierer 18 zugeführt. War das Ergebnis des Addierers 15 kleiner als eins, so werden die AND-Gatter 19 aktiviert und bewirken eine Addition des Tabellenwertes zum vorherigen Inhalt des Registers 14, andernfalls wird die Zahl Null addiert.
-
Nach N – 1 Schritten steht am Ausgang der gesuchte Approximationswert YN für log2x zur Verfügung.
-
Das in 2 schematisch dargestellte Verfahren dient der automatischen Bestimmung eines Näherungswertes für log2x, wobei x > 0 ist.
-
In Schritt 20 wird zunächst der Wert x normiert. Dies umfasst ein Bestimmen eines k Є Z derart, dass für x‘ := 2–kx gilt ½ ≤ x‘ < 1. Der Wert x‘ wird vorzugsweise gespeichert, beispielsweise in einem Register.
-
In Schritt 21 wird n = 1 gesetzt. Mit L1 := x‘ und Y1 := k wird dann eine Iteration begonnen. Darin wird für jedes n = 1, 2, ... N zunächst im Schritt 22 der Wert Ln(1 + 2–n) berechnet, beispielsweise durch Addition von Ln und der Zahl, die sich aus Ln durch Verschiebung des Kommas um n Stellen nach links ergibt. Im Schritt 23 wird geprüft, ob das so bestimmte Produkt kleiner ist als eins. Ist dies der Fall, wird in Schritt 24 der Wert Ln+1 := Ln(1 + 2–n) bestimmt. Analog wird in Schritt 24 der Wert Yn+1 := Yn -log2(1 + 2–n) berechnet.
-
Ergibt die Prüfung in Schritt 23, dass Ln(1 + 2–n) ≥ 1 ist, so wird in Schritt 25 Ln+1 := Ln und Yn+1 := Yn gesetzt. In beiden Fällen wird das Verfahren mit Schritt 26 fortgesetzt, in dem der Index durch die Zuordnung n → n + 1 um eins erhöht wird. In Schritt 27 wird geprüft, ob das neu erhaltene n noch kleiner ist als N. Ist dies der Fall, wird die Iteration 2 fortgesetzt, indem in Schritt 22 für das nun aktuelle n durchgeführt wird.
-
Ist hingegen n = N, so ist der aktuelle Wert Yn = YN der gesuchte Näherungswert für log2x und wird in Schritt 28 vorzugsweise ausgegeben oder in einem weiteren Rechenschritt verwendet.
-
Wie oben erläutert wurde, kann anstelle der Schritte 22 und 23 die Anzahl der unmittelbar aufeinanderfolgenden ersten binären Nachkommastellen (Bits) von Ln bestimmt werden, die gleich eins sind. Der Index n kann dann unmittelbar um die jeweilige Anzahl heraufgesetzt werden, ohne dass die zugehörigen Produkte Ln(1 + 2–n) berechnet werden müssen.
-
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
-
- J.-C. Bajard, S. Kla und J.-M. Muller: „BKM: A new hardware algorithm for complex elementary functions“ in: IEEE transactions on computers, vol. 43, no. 8, August 1994 [0004]