Forum: Offtopic Warum keine Logarithmentabellen in ASM-Code?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Torben G. (nudrun)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe das Zeitalter vor den erschwinglichen Taschenrechnern nicht 
miterlebt, aber ich habe mich vor kurzem mit Rechenschiebern befasst und 
mich deshalb in die Thematik eingelesen. Als guter Bastler dachte ich 
natürlich an die uns allen bekannten Maschinchen, die teilweise nichts, 
aber vor allem keine Gleitkommazahlen gut multiplizieren, dafür aber 
schnell addieren können.  Nun ging ich folgenden Gedankengang: Diese 
Multiplikationsunfähigkeit war ja früher, in der Zeit vor FPUs und GHz, 
noch schlimmer. Gleichzeitig muss doch der Beginn der Mikrochips in der 
Logarithmenadditionszeit liegen. Den ersten Assemblerprogrammierern sind 
solche Instrumente also noch bekannt gewesen. Diese haben quasi den 
Grundstein für die Assemblerkultur gelegt, es waren ja vor allem 
Professoren. Man scheint aber auf Logarithmentabellen verzichtet zu 
haben, sonst hätten die sich in dieser Sparte bis heute gehalten. Das 
haben sie aber nicht. Wo liegt mein Denkfehler, und warum nutzt man die 
nicht gerade heute, in der Zeit des mehr oder minder unbegrenzten 
Speichers?
Vielen Dank für Eure Antworten. Besonders interessieren mich natürlich 
die der Zeitzeugen.

: Verschoben durch Moderator
von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht lesenswert
Torben G. schrieb:
> Professoren. Man scheint aber auf Logarithmentabellen verzichtet zu
> haben, sonst hätten die sich in dieser Sparte bis heute gehalten. Das
> haben sie aber nicht. Wo liegt mein Denkfehler, und warum nutzt man die
> nicht gerade heute, in der Zeit des mehr oder minder unbegrenzten
> Speichers?

 Ganz einfach, wegen Nachkommastellen.

von Torben G. (nudrun)


Bewertung
-2 lesenswert
nicht lesenswert
Marc V. schrieb:
> Ganz einfach, wegen Nachkommastellen.

Ich bitte um eine ausführlichere Antwort. Gleitkommazahlenaddition ist 
halb so wild, und bei normalen Anwendungen reichen fünf Nachkommastellen 
völlig aus.

von (prx) A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Torben G. schrieb:
> natürlich an die uns allen bekannten Maschinchen, die teilweise nichts,
> aber vor allem keine Gleitkommazahlen gut multiplizieren, dafür aber
> schnell addieren können.

Halb so wild. Multiplizierer für 60 Bit Fliesskommaformat gab es schon 
in einer Zeit, in der sie noch aus Einzeltransistoren aufgebaut wurden. 
Interationsfrei, rein kombinatorisch. So ein Multiplizierer war 
natürlich ein wenig grösser als ein Taschenrechner, aber dafür hatte das 
Maschinchen gleich 2 davon.

von Mike (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Torben G. schrieb:
> Man scheint aber auf Logarithmentabellen verzichtet zu
> haben, sonst hätten die sich in dieser Sparte bis heute gehalten. Das
> haben sie aber nicht.

Selbst die ersten Taschenrechner rechneten schon mit mindestens 8 
Dezimalen. Eine Logarithmentafel müsste daher 10^8 Einträge haben. Sie 
wäre bei 32Bit pro Eintrag knapp 400MB groß. In Silizium gegossen hätte 
die Tafel damals eine ganze Halle gefüllt.

Und eine binäre Multiplikation aus Additions- und Schiebeoperationen 
zusammenzubasteln ist auch nicht so aufwändig. Bei Taschenrechnern kommt 
es nun mal kaum auf die Geschwindigkeit an.

von Torben G. (nudrun)


Bewertung
0 lesenswert
nicht lesenswert
Werden denn heute noch Logarithmustabellen genutzt? Als Anwendung fielen 
mir spontan Echtzeitsysteme mit Sensoren ein, wie im Automotive. 
Speicherplatz ist ja heute nicht mehr so wichtig, solange es keine 400MB 
sind.

von Nils P. (torus)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe zu 286'er und 386'er zeiten mit der Idee experimentiert. Wollte 
3D Grafik Berechungen beschleunigen.

Im Prinzip funktionierte das natürlich, aber in der Praxis war es 
langsamer als es einfach direkt zu berechnen. Schuld war die Latenz der 
Speicherzugriffe.

von avr (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Torben G. schrieb:
> Werden denn heute noch Logarithmustabellen genutzt?

Was willst du denn beschleunigen, wenn eine Gleitkommamultiplikation auf 
modernen Systemen die gleiche Zeit wie eine einfache Addition benötigt?

von Egon D. (egon_d)


Bewertung
1 lesenswert
nicht lesenswert
Torben G. schrieb:

> Als guter Bastler dachte ich natürlich an die uns allen
> bekannten Maschinchen, die teilweise nichts, aber vor
> allem keine Gleitkommazahlen gut multiplizieren, dafür
> aber schnell addieren können.

Naja, Ansichtssache.

Addition der Strecken ergibt Multiplikation der Zahlen.
Ist das nun "in Wahrheit" Addition oder Multiplikation?

Aber egal.


> Nun ging ich folgenden Gedankengang: Diese
> Multiplikationsunfähigkeit war ja früher, in der Zeit vor
> FPUs und GHz, noch schlimmer.

Hmm.


> Gleichzeitig muss doch der Beginn der Mikrochips in der
> Logarithmenadditionszeit liegen.

Nein, nicht wirklich.

Der Beginn der Mikrochips lag in der Zeit der Großrechner.
Zu dieser Zeit gab es mechanische Addiermaschinen in großer
Zahl, elektromechanische Tischrechner, Lochkartentechnik,
Buchungs- und Tabelliermaschinen in allen Ausführungen.


> Den ersten Assemblerprogrammierern sind solche
> Instrumente also noch bekannt gewesen. Diese haben
> quasi den Grundstein für die Assemblerkultur gelegt,
> es waren ja vor allem Professoren.

Soweit ich weiss, waren weder Herman Hollerith noch
Konrad Zuse Professoren.


> Man scheint aber auf Logarithmentabellen verzichtet zu
> haben, sonst hätten die sich in dieser Sparte bis heute
> gehalten. Das haben sie aber nicht. Wo liegt mein
> Denkfehler,

Welcher Denkfehler?

Deine Überlegung fußt auf der falschen Voraussetzung, die
Ursprünge der automatisierten Datenverarbeitungsanlagen
lägen in den theoretischen Ideen irgendwelcher Professoren.

Tun sie aber nicht.

Die tatsächlichen Ursprünge liegen in Geschäftszweigen
wie der Textilindustrie, der Eisenbahn, der Buchhaltung
und ähnlichen. Die Idee, Lochkarten zur Steuerung von
Webstühlen zu verwenden, war deutlich vor 1900 in
Frankreich populär. Laut Wikipädie kam Herman Hollerith
durch mehrfach gelochte Karten, die seinerzeit bei der
Eisenbahn als Fahrkarten verwendet wurden, auf die Idee,
"Lochkarten" für die automatisierte Datenverarbeitung
zu verwenden.
Feynman beschreibt sehr amüsant, wie seine Untergebenen
beim Manhattan-Project die zur Verfügung stehenden
Lochkarten-Tabelliermaschinen als Datenflussmaschine
verwendeten, indem sie große Stapel mit verschiedenfarbigen
Lochkarten nach einem ausgeklügelten System zwischen den
Maschinen hin- und hertrugen und zeitversetzt bearbeiten
ließen. Auf diese Weise sind numerische Simulationen für
die Bombe gemacht worden, deren Umfang auf andere Weise
nicht zu bewältigen gewesen wäre.


Was ich damit sagen will: Turing, Neumann, Zuse usw. sind
"nur" den Schritt zur SPEICHERPROGRAMMIERBAREN Maschine
gegangen -- automatisierte Datenverarbeitung, maschinelles
Rechnen usw. gab es aber schon lange vorher, nur waren diese
Vorläufer nicht unbedingt "turing-vollständig" und auch nicht
unbedingt speicherprogrammierbar.
Bekanntermaßen waren viele der Spezialmaschinen, die in
Bletchley Park verwendet wurden, verbindungsprogrammiert.

Die Erfindung des Computers markiert NICHT den Beginn der
maschinellen Datenverarbeitung. Das Neue ist nur, dass der
Computer "frei programmierbar" (=speicherprogrammierbar)
ist, also ohne Hardware-Änderung für JEDES FORMULIERBARE
PROBLEM verwendet werden kann. Das ging vorher nicht.


Wesentlicher Vorläufer der modernen Computer sind die Geräte
in der Tradition Holleriths, die von der "Internationalen
Buchungs-Maschinen-Vereinigung" -- besser bekannt als "IBM" --
hergestellt wurden :)

Die moderne Informatik (wie auch die Atombombe) fußt auf
der Faulheit der Buchhalter :)


Worauf ich hinauswill: Jeder Buchhalter beherrscht die
Multiplikation mittels Verschieben und selektiven
Addierens -- aber nicht alle Buchhalter beherrschen die
Logarithmenrechnung.


> und warum nutzt man die nicht gerade heute, in der Zeit
> des mehr oder minder unbegrenzten Speichers?

Was hat das miteinander zu tun?


> Vielen Dank für Eure Antworten. Besonders interessieren
> mich natürlich die der Zeitzeugen.

Zeitzeugen? Von Hollerith?

von Egon D. (egon_d)


Bewertung
0 lesenswert
nicht lesenswert
avr schrieb:

> Torben G. schrieb:
>> Werden denn heute noch Logarithmustabellen genutzt?
>
> Was willst du denn beschleunigen, wenn eine
> Gleitkommamultiplikation auf modernen Systemen die
> gleiche Zeit wie eine einfache Addition benötigt?

Naja, es soll gerüchteweise auch Maschinen unterhalb
der GHz-Mehrkern-Klasse geben.

Zahldarstellung im Vorzeichen-Logarithmus-System,
Additionslogarithmen u.ä. sind zwar exotisch, aber
prinzipiell machbar. Ob der Aufwand auf Gatterebene
wirklich so viel höher ist, wäre abzuwarten.

In Spezialfällen u.U. nützlich, für allgemeine
Verwendung aber eher unpraktisch.
Logarithmenrechnung lohnt sich nur dann wirklich,
wenn man sehr viel Punktrechnung und anteilig nur
sehr wenig Strichrechnung hat -- ansonsten überwiegt
der Konvertierungsaufwand.

von Egon D. (egon_d)


Bewertung
0 lesenswert
nicht lesenswert
Torben G. schrieb:

> Werden denn heute noch Logarithmustabellen genutzt?

Unwahrscheinlich -- weil unpraktisch. CORDIC wurde
ja schon erfunden.


> Als Anwendung fielen mir spontan Echtzeitsysteme mit
> Sensoren ein, wie im Automotive.

Das geht schon.

Der Punkt ist nur, dass das sehr ungewohnt wird, weil die
Zahlen dann sinnvollerweise nicht mehr als Fließkomma-
zahlen dargestellt werden, sondern in einer Vorzeichen-
Logarithmus-Codierung.

Außerdem braucht man Vorkehrungen, damit man, ohne ständig
hinundherkonvertieren zu müssen, auch addieren und sub-
trahieren kann. Geht auch (Additionslogarithmen), ist aber
zusätzlicher Aufwand.

Alles in allem bringt es schätzungsweise nur etwas, wenn man
es direkt in Hardware gießt. Diverse Yamaha-Synthesizer sollen
das System verwendet haben.


> Speicherplatz ist ja heute nicht mehr so wichtig, [...]

Aber Geschwindigkeit und Energieverbrauch.
Tabellenzugriffe auf großen externen Speicher ist langsam,
also unpraktisch.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mike schrieb:
> Eine Logarithmentafel müsste daher 10^8 Einträge haben. Sie
> wäre bei 32Bit pro Eintrag knapp 400MB groß. In Silizium gegossen hätte
> die Tafel damals eine ganze Halle gefüllt.

Wahrscheinlich hast du nie eine Logarithmentafel benutzt. In Zeiten zu 
denen 400MB eine "ganze Halle gefüllt" hätten, hat man schon gewusst, 
dass die Logarithmus-Funktion stetig ist und sich friedlich benimmt. Bei 
Nutzung der Tafeln hat man das schon immer ausgenutzt und zwischen 
Tabellenwerten interpoliert.

von M. K. (sylaina)


Angehängte Dateien:

Bewertung
-1 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Mike schrieb:
>> Eine Logarithmentafel müsste daher 10^8 Einträge haben. Sie
>> wäre bei 32Bit pro Eintrag knapp 400MB groß. In Silizium gegossen hätte
>> die Tafel damals eine ganze Halle gefüllt.
>
> Wahrscheinlich hast du nie eine Logarithmentafel benutzt. In Zeiten zu
> denen 400MB eine "ganze Halle gefüllt" hätten, hat man schon gewusst,
> dass die Logarithmus-Funktion stetig ist und sich friedlich benimmt. Bei
> Nutzung der Tafeln hat man das schon immer ausgenutzt und zwischen
> Tabellenwerten interpoliert.

Ich frag mich auch grad, wo auf meinem Rechenschieber 10^8 Werte 
versteckt sind ;)

von Gee (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Torben G. schrieb:
> Als Anwendung fielen
> mir spontan Echtzeitsysteme mit Sensoren ein, wie im Automotive.
> Speicherplatz ist ja heute nicht mehr so wichtig, solange es keine 400MB
> sind.

Für Automotive muss ich dir da widersprechen. RAM/ROM ist (neben CPU 
Load) enorm wichtig, da kein Zulieferer auch nur einen Cent für einen 
Wechsel auf das größere Controllerderivat drauflegen will, damit 
irgendwas noch reinpasst. Externer Speicher wird sowieso vermieden 
(PCB-Platz, Security, Kosten).

von Anti-Nostalgiker (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Egon D. schrieb:
> Worauf ich hinauswill: Jeder Buchhalter beherrscht die
> Multiplikation mittels Verschieben und selektiven
> Addierens -- aber nicht alle Buchhalter beherrschen die
> Logarithmenrechnung.

Beherrschten. Vor >50 Jahren. Heute nehmen die Excel. Oder einen 
Taschenrechner, aber das tun sie schon seit 50 Jahren.

Warum man im Controller keine Logarithmustabellen hat:
Wir haben heute im Normalfall einen Hardware-Multiplizierer (zumindest 
in den Controllern, die ich verwende), der genau gleich schnell ist wie 
ein Speicherzugriff. Also genau einen Taktzyklus. Das ist effizienter 
und genauer als Tabellengehampel, logischerweise.

Und da rede ich nicht von dicken Luxusgeräten, sondern z.B. auch die 
kleinen STM32 für <1€ haben das. So zum Beispiel der hier einen 
STM32F031.
Mein Arbeitgeber kauft die um 0,4€ pro Stück.

Die numerischen Operationen sind daher nicht das, woran es scheitert ;-)

von M. K. (sylaina)


Bewertung
0 lesenswert
nicht lesenswert
Anti-Nostalgiker schrieb:
> Und da rede ich nicht von dicken Luxusgeräten

Nicht nur STM, sowas haben ja schon die 0815-Atmegas drin, warum also 
mit Tabellen rumhampeln? Macht da keinen Sinn, da geb ich dir völlig 
recht. Mit Logarithmus wirklich Arbeiten war schon vor 30 Jahren nicht 
mehr IN, ich hab mir den Rechenschieberkram auch selbst beigebracht und 
dachte mir nur, dass ich Mathe damals so besser verstanden hätte statt 
stumpf Werte in nen Taschenrechner zu tippen.

von A. S. (achs)


Bewertung
1 lesenswert
nicht lesenswert
M. K. schrieb:
> Ich frag mich auch grad, wo auf meinem Rechenschieber 10^8 Werte
> versteckt sind ;)

Naja, hat er doch gerade nicht. Mehr als 3 Stellen (also 10^3) sinds ja 
nicht, und die sind auch noch analog und interpoliert.

von M. K. (sylaina)


Bewertung
0 lesenswert
nicht lesenswert
10^3 Stellen hat er auch nicht. Wenn ich so nen Blick drauf werfe: 
Vielleicht so 3-4 10^2 Stellen. Zum Zählen bin ich zu faul. ;)

von A. S. (achs)


Bewertung
1 lesenswert
nicht lesenswert
Egon D. schrieb:
> Worauf ich hinauswill: Jeder Buchhalter beherrscht die Multiplikation
> mittels Verschieben und selektiven Addierens -- aber nicht alle
> Buchhalter beherrschen die Logarithmenrechnung.

Buchhalter können genauso wenig mit Logarithmen anfangen wie mit 
floating Point oder Rechenschieber. Die Mathematik, bzw. Die Auflösung 
ist für Ingenieure mit Sicherheitsfaktor 3 eine andere wie  Cent-genaue 
Millionenbeträge.

von Peter D. (peda)


Bewertung
1 lesenswert
nicht lesenswert
Torben G. schrieb:
> Diese
> Multiplikationsunfähigkeit war ja früher, in der Zeit vor FPUs und GHz,
> noch schlimmer.

Das war noch nie ein Problem gewesen. Die CPUs konnten doch schieben, 
addieren und subtrahieren. Das reicht völlig, um sich ne kleine 
Mul-/Div-Lib zu schreiben.
Als ich mit dem 8051 angefangen hatte, hab ich mir auch eine Lib für die 
Grundrechenarten geschrieben, ganz nach Lehrbuch, die für 2..80 Byte (= 
192 Dezimalstellen) skalierbar war.

von Dergute W. (derguteweka)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

Hier:
Beitrag "VU-Meter mit Attiny13a statt LM3916"

muss ich einen Logarithmus (ungenau reicht) berechnen und auch quadieren 
(Spezialfall der Multiplikation).
"Verwirrenderweise" (aus Performancegruenden) nehm' ich fuer's 
Quadrieren eine Lookuptable und "berechne" den Logarithmus durch 
schieben und vergleichen...

Gruss
WK

von Frank W. (frank_w)


Bewertung
0 lesenswert
nicht lesenswert
M. K. schrieb:
> Ich frag mich auch grad, wo auf meinem Rechenschieber 10^8 Werte
> versteckt sind ;)

Das ist doch ganz einfach wenn man mit dem Rechenschieber umgehen kann.

Überschlagsrechnung und Potenzen sollte man schon gelernt haben.

Gruß Frank

von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht lesenswert
M. K. schrieb:
> Ich frag mich auch grad, wo auf meinem Rechenschieber 10^8 Werte
> versteckt sind ;)

 10^8 x Zoomen.
 Hast du das nicht gewusst?

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
Frank W. schrieb:
> Das ist doch ganz einfach wenn man mit dem Rechenschieber umgehen kann.

Dann hast Du es entweder nicht, oder die Aussage nicht verstanden.

von georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
M. K. schrieb:
> Ich frag mich auch grad, wo auf meinem Rechenschieber 10^8 Werte
> versteckt sind ;)

Das ist ein analoges Gerät, der enthält nicht nur 10^8, sondern 
unendlich viele Werte. Man muss nur genau genug draufschauen.

Oder ist heute der Unterschied zwischen analog und digital nicht mehr 
geläufig, weil angeblich die ganze Welt digital ist? Das Universum ist 
nicht gepixelt, nur die Bilder davon.

Georg

von Percy N. (vox_bovi)


Bewertung
0 lesenswert
nicht lesenswert
Frank W. schrieb:
> M. K. schrieb:
>> Ich frag mich auch grad, wo auf meinem Rechenschieber 10^8 Werte
>> versteckt sind ;)
>
> Das ist doch ganz einfach wenn man mit dem Rechenschieber umgehen kann.
>
> Überschlagsrechnung und Potenzen sollte man schon gelernt haben.
>
 ... und schon kann man achtstellige Numeri einstellen und auch ablesen. 
Toll!

Allerdings bleibt die Frage, was man in der realen Welt, also außerhalb 
des Zugriffs von Finanzjongleuren, damit anfangen will.

von A. S. (achs)


Bewertung
-1 lesenswert
nicht lesenswert
georg schrieb:
> Oder ist heute der Unterschied zwischen analog und digital nicht mehr
> geläufig, weil angeblich die ganze Welt digital ist? Das Universum ist
> nicht gepixelt, nur die Bilder davon.

Oh Oh,.. ich sag nur: Max Heisenberg ;-)

von Uhu U. (uhu)


Bewertung
0 lesenswert
nicht lesenswert
georg schrieb:
> Oder ist heute der Unterschied zwischen analog und digital nicht mehr
> geläufig, weil angeblich die ganze Welt digital ist? Das Universum ist
> nicht gepixelt, nur die Bilder davon.

Nicht gepixelt, aber gequantelt…

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail, Yahoo oder Facebook? Keine Anmeldung erforderlich!
Mit Google-Account einloggen | Mit Facebook-Account einloggen
Noch kein Account? Hier anmelden.