Die Goldschmidt-Division ist ein Verfahren, um eine Division in einer digitalen Schaltung schnell und mit geringem Hardwareaufwand zu realisieren. Dabei wird die Division auf eine Multiplikation zurückgeführt, womit bereits evtl. vorhandene Multiplizierer mitverwendet werden können.

Der Ansatz der Goldschmidt-Division ist die Betrachtung der Division als Bruch Z N {\displaystyle {\tfrac {Z}{N}}} , welcher so lange mit dem Faktor F i {\displaystyle F_{i}} erweitert wird, bis der Nenner nahe genug an den Wert 1 konvergiert ist. Der Wert des Zählers entspricht somit dann dem Ergebnis der Division.

Q = Z N F 1 F 1 F 2 F 2 F F . {\displaystyle Q={\frac {Z}{N}}{\frac {F_{1}}{F_{1}}}{\frac {F_{2}}{F_{2}}}{\frac {F_{\ldots }}{F_{\ldots }}}.}

Die auszuführenden Schritte sind:

  1. Wähle einen geeigneten Faktor Fi.
  2. Multipliziere Zähler und Nenner mit Fi.
  3. Wenn der Nenner nahe genug an 1 herangekommen ist, gib den Zähler zurück, andernfalls fahre mit Schritt 1 fort.

Sind Z {\displaystyle Z} und N {\displaystyle N} so skaliert, dass 0 < N < 1 {\displaystyle 0 , dann können die Erweiterungsfaktoren F i {\displaystyle F_{i}} einfach berechnet werden:

F i 1 = 2 N i . {\displaystyle F_{i 1}=2-N_{i}.}

Damit ergibt sich:

Z 0 N 0 = Z N , Z i 1 N i 1 = Z i F i 1 N i F i 1 . {\displaystyle {\frac {Z_{0}}{N_{0}}}={\frac {Z}{N}},{\frac {Z_{i 1}}{N_{i 1}}}={\frac {Z_{i}F_{i 1}}{N_{i}F_{i 1}}}.}

Nach einer genügend großen Zahl von Iterationen k {\displaystyle k} ist der gesuchte Quotient Q = Z k {\displaystyle Q=Z_{k}} .

Bei der Umsetzung als Schaltung können die Multiplikationen von Nenner und Zähler parallel durchgeführt werden, was eine schnelle Abarbeitung des Algorithmus ermöglicht. Die Goldschmidt-Division wird in den AMD-Athlon-CPUs und späteren Modellen verwendet.

Binomische Formel

Die Faktoren der Goldschmidt-Division können so gewählt werden, dass eine Vereinfachung mit der binomischen Formel möglich ist.

Angenommen Z N {\displaystyle {\tfrac {Z}{N}}} wurde mit einer Zweierpotenz so skaliert, dass N ( 1 2 , 1 ] {\displaystyle N\in ({\tfrac {1}{2}},1]} .

Wir setzen N = 1 x {\displaystyle N=1-x} und F i 1 = 1 x ( 2 i ) {\displaystyle F_{i 1}=1 x^{(2^{i})}} .

Dann gilt:

Z 1 x = Z ( 1 x ) 1 x 2 = Z ( 1 x ) ( 1 x 2 ) 1 x 4 = Z ( 1 x ) ( 1 x 2 ) ( 1 x ( 2 n 1 ) ) 1 x ( 2 n ) {\displaystyle {\begin{aligned}{\frac {Z}{1-x}}&={\frac {Z\cdot (1 x)}{1-x^{2}}}\\&={\frac {Z\cdot (1 x)\cdot (1 x^{2})}{1-x^{4}}}\\&\vdots \\&={\frac {Z\cdot (1 x)\cdot (1 x^{2})\dotsm (1 x^{(2^{n-1})})}{1-x^{(2^{n})}}}\end{aligned}}}

Da x [ 0 , 1 2 ) {\displaystyle x\in [0,{\tfrac {1}{2}})} können wir nach n {\displaystyle n} Schritten 1 x ( 2 n ) {\displaystyle 1-x^{(2^{n})}} zu 1 runden. Der maximale relative Fehler ist dabei 2 ( 2 n ) {\displaystyle 2^{-(2^{n})}} , und wir erhalten eine Genauigkeit von 2 n {\displaystyle 2^{n}} Digitalstellen. Dieser Algorithmus wird auch als die IBM-Methode bezeichnet.

Ähnliche Verfahren

  • SRT-Division
  • Newton-Raphson-Division

Einzelnachweise


Goldschmidt Program

Career Goldschmidt

Hamburg & SchleswigHolstein Goldschmidt Atomkraft in CDUProgramm

Hamburg & SchleswigHolstein Goldschmidt begrüßt Gewinnabschöpfung

Bjergtagen I af M. A. Goldschmidt Gyserbiblioteket