Forum: PC Hard- und Software Warum eigentlich immer 2er-Potenzen?


von Seb E. (smokyjay)


Lesenswert?

Hey!

Unser Lehrer hat uns heute in der Schule eine Vortrag gehalten über 
Rechner-Architekturen und deren Entwicklung usw.
Dann ging es halt auch um die Zahlendarstellung. Er meinte halt, dass 
sich das 2er-System so eingebürgert hätte (wegen "Strom an" -> "Strom 
aus"). Aber ist das wirklich so?

Wieso gibt es nicht einfach noch einen dritten, vierten, etc Zustand 
bzw. einfach eine andere Basis statt der zwei?
Und warum sind diese Architekturen immer 32bit oder dann 64bit? Wiso 
gibt es keine 50bit-Architektur?
Habe das so verstanden, dass die bits immer die breite des Busses 
angeben bzw die größe der Datenmenge, die aus dem Speicher in die CPU 
geladen wird. Aber wieso darf diese nicht einfach z.B. 50bit groß sein? 
Warum 8, 16,32, 64, 128?

Da muss doch mehr dahinter stecken, als die Aussage: "das wurd' damals 
so entwickelt und wird deshalb heute noch so angewendet."

Vielen Dank für eure Erklärungen!

von Miniatur (Gast)


Lesenswert?

Es fing an mit einem Schalter, der kann an oder aus also 0 oder 1. Dann 
hat man es mit einem Relais versucht, das kann an oder aus. Dann kommt 
der Transistor, der kann an oder aus. Und so ging es weiter.

Zumindest in der digital Elektronik. Es gibt bzw. gab auch die Variante 
mit Analog-Rechnern und manche versuchen sich an Fuzzy-Logic das gibt es 
noch mehr als 1 und 0.

Wie so oft im Leben, die einen sehen alles Schwarz und Weiss. Andere 
sehen auch noch was dazwischen...

von Falk B. (falk)


Lesenswert?

@Seb Er (smokyjay)

>sich das 2er-System so eingebürgert hätte (wegen "Strom an" -> "Strom
>aus"). Aber ist das wirklich so?

Ja.

>Wieso gibt es nicht einfach noch einen dritten, vierten, etc Zustand

Wei es dann analog würde, was fehleranfälliger und ggf. langsamer ist. 
Binär EIN/AUS ist sehr robust und schnell.

>bzw. einfach eine andere Basis statt der zwei?

Z.B. acht, oktal. Gibt es aber nur in der Software, bei UNIX. Hardware 
ist immer binär.

>Und warum sind diese Architekturen immer 32bit oder dann 64bit?

Weil sich das so eingebürgert hat. Irgendwann wurden mal 8 Bit als Byte 
definiert. Das Doppelte (Basis zwei!) sind halt 16. Und dann das 
Doppelte, des Doppelten, des doppelten.

> Wiso
>gibt es keine 50bit-Architektur?

Ist zu exotisch, lohnt nicht. Es gibt ein paar DSPs mit 24 Bit. Einige 
alte PICs mit 10, 12 und 14 Bit.

>Habe das so verstanden, dass die bits immer die breite des Busses
>angeben bzw die größe der Datenmenge, die aus dem Speicher in die CPU
>geladen wird.

Das ist im wesentlichen auch so.

> Aber wieso darf diese nicht einfach z.B. 50bit groß sein?

Darf schon lohnt aber nicht. Wenn dann schon 48, das ist durch 8 
teilbar.

>Warum 8, 16,32, 64, 128?

Siehe oben.

MfG
Falk

Da muss doch mehr dahinter stecken, als die Aussage: "das wurd' damals
so entwickelt und wird deshalb heute noch so angewendet."

Vielen Dank für eure Erklärungen!

von Detlev T. (detlevt)


Lesenswert?

Elektrisch hat man mit nur zwei erlaubten Zuständen den größtmöglichen 
Störabstand zwischen Zuständen. Logisch ist das Vorhandensein eines 
Zustandes - oder gerade sein Gegenteil - am einfachsten zu verarbeiten. 
Systematisch lässt sich jeder komplizierte Zusammenhang auf diese 1-0 
abbilden, etwas anderes ist daher auch nicht nötig.

Es gab in der Geschichte durchaus Wordlängen, die keine Zweier-Potenz 
sind. Auch heute noch, siehe z.B. die PIC-Controller.

von (prx) A. K. (prx)


Lesenswert?

Seb Er schrieb:

> Dann ging es halt auch um die Zahlendarstellung. Er meinte halt, dass
> sich das 2er-System so eingebürgert hätte (wegen "Strom an" -> "Strom
> aus"). Aber ist das wirklich so?

Ja.

> Wieso gibt es nicht einfach noch einen dritten, vierten, etc Zustand
> bzw. einfach eine andere Basis statt der zwei?

Gibt es teilweise auch: in Flash-Speichern werden pro Zelle oft mehr als 
2 Zustände gespeichert. Allerdings ist das eine Sache, die das Flash mit 
sich selbst ausmachen muss, das Interface ist wie üblich binär. Folglich 
kommen auch hier nur Zweierpotenzen in Frage, also beispielsweise 2 Bits 
pro Zelle. Bei anderen Werten müsse man multiplizieren/dividieren um mit 
den binären Werten des Interface konform zu gehen.

Allerdings gibt es das auch nur an derart speziellen Ecken. Verarbeitet 
und gerechnet wird binär, weil das die einfachste und effizienteste 
Methode ist.

In der Anfangszeit waren Rechner sehr verbreitet, die dekadisch 
rechneten. Zwar auch mit 2 Zustanden pro Leitung/Speicherelement, aber 4 
Bits bildeten eine Dezimalstelle und gerechnet wurde effektiv dezimal. 
Das machte es zwar einfacher, die Werte direkt abzulesen und einzugeben, 
aber in den 40 Bits von 10 Dezimalstellen sind binär ca. 1000 Mrd Werte 
codierbar, was 12 Dezimalstellen entspricht. Man verschenkt also 
erheblich Genauigkeit. Und technisch ist diese Dezimalrechnung zudem 
komplizierter.

> Und warum sind diese Architekturen immer 32bit oder dann 64bit? Wiso
> gibt es keine 50bit-Architektur?

Ich weiss von alten Architekturen mit 12, 18, 24, 36, 48 und 60 Bits. 
Allerdings sind Zweierpotenzen im Vorteil, weil man sie in Komponenten 
bis runter aus einzelne Bits zerlegen kann, ohne bei der damit 
verbundenen Rechnung mehr tun zu müssen, als Bits links/rechts zu 
schieben. Denn dazu muss man multiplizieren/dividieren, was arg teure 
Operationen sind, wenn sie nicht auf besagte Schiebeoperationen 
rauslaufen.

Wenn man Texte in 8-Bit Bytes byteweise sequentiell auf einem 48-Bit 
Rechner speichert, dann muss man, um an das ein Byte enthaltene Wort zu 
kommen, durch 6 dividieren. Das ist oft die teuerste Operation, die ein 
Rechner hat. Infolgedessen kamen solche Bitbreiten praktisch nur bei 
Rechnern vor, die für den technisch/wissenschaftlichen Sektor vorgesehen 
waren, deren Hauptaufgabe also in Rechenoperationen bestand. Da konnten 
48 Bits mit weniger Aufwand ausreichen, wo bei 32-36 Bits die 
Genauigkeit zu gering und bei 64 Bits der Aufwand zu gross war.

Mit der IBM 360 Linie, die die davor in getrennten Systemen 
stattfindende technisch/wissenschaftliche und kaufmännische Verarbeitung 
im gleichen System integrierte setzte sich die ausschliesslich binäre 
Technik mit Zweierpotenzen als Verarbeitungsbreite endgültig durch.

> Habe das so verstanden, dass die bits immer die breite des Busses
> angeben bzw die größe der Datenmenge, die aus dem Speicher in die CPU
> geladen wird.

Es gibt keine von allen akzeptierte Definition dafür, weil bei vielen 
Prozessoren mehrere verschieden breite Busse existieren, die zudem auch 
noch von der Breite der Recheneinheit verschieden sind. Folglich ist es 
bei manchen Prozessoren recht umstritten, ob es sich bei ihnen um 8-, 
16- oder 32-Bit Prozessoren handelt (68008: 8-Bit Bus, 16-Bit 
Verarbeitung, 32-Bit Adressen und Register).

von Tom M. (tomm) Benutzerseite


Lesenswert?

Seb Er schrieb:
> Wieso gibt es nicht einfach noch einen dritten, vierten, etc Zustand
> bzw. einfach eine andere Basis statt der zwei?

Auch diese Ansätze wurden in der Vergangenheit ausprobiert, aber das 
binäre System hat etliche Vorteile gegenüber anderen, "analogen" 
Systemen. Schon Babbage hatte das erkannt und seine Rechenmaschinen als 
binäre Rechenmaschinen konzipiert. Das "digitale" Konzept war auch da 
schon nichts Neues; schon im 16. udn 17. Jahrhundert hatten Mathematiker 
oder Universalgelehrte wie Leibnitz und Pascal das Dualsystem (und auch 
Systeme mit anderen Basen) systematisch beschrieben und z.B. gezeigt, 
dass sich alle Rechenoperationen auch auf Zahlen mit anderen Basen 
anwenden lassen.

Vermutlich war auch die Erfindung des Transistors in der Telekom-Ecke 
ein Wegbereiter für digitale Systeme. Die gesamte Telefonie 
(Vermittlung) arbeitete ja lange Zeit mit Schaltern bzw. 
Steckverbindungen; erstmal die Damen, die Verbindungen stöpseln mussten, 
später dann automatisierte Systeme mit Relais und Frequenz- und/oder 
Pulssteuerung (Wählscheibentelefon).

Die erste CPU (Intel 4004) war noch eine vier-bit-Maschine, wohl einfach 
aus dem Grund, dass sie für ein Taschenrechner konzipiert war. 
Dezimalzahlen benötigen nun mal 4 Bit pro Ziffer, auch wenn diese dann 
nicht voll ausgenutzt werden. Noch heute gibt es BCD Rechenmodi auf 
vielen CPUs, auch wenn die Register 32 oder 64 Bit breit sind. Die jew. 
Verdoppelung von 4 auf 8, auf 16, 32 und 64 bit war erstmal einfach 
praktisch, und erleichtert zweitens das Arbeiten mit bestehenden 
Datenbeständen. Aber es geht auch anders, wie man bei den PDP sehen kann 
(da gab's 12, 16, 18 und 36 Bit Systeme).

So ist für mich nachvollziehbar, dass die digitalen Systeme das "Rennen" 
gemacht haben, weil sie kostengünstiger, zuverlässiger und leichter 
beherrschbar sind als analoge Systeme.

von Tom M. (tomm) Benutzerseite


Lesenswert?

A. K. schrieb:
> Allerdings sind Zweierpotenzen im Vorteil, weil man sie in Komponenten
> bis runter aus einzelne Bits zerlegen kann, ohne bei der damit
> verbundenen Rechnung mehr tun zu müssen, als Bits links/rechts zu
> schieben. Denn dazu muss man multiplizieren/dividieren, was arg teure
> Operationen sind, wenn sie nicht auf besagte Schiebeoperationen
> rauslaufen.

Das gilt für das Binärsystem generell, nicht (nur) für Zweierpotenzen. 
Schieben (shift) funktioniert genau so gut bei einem 8 wie bei einem 123 
bit Wort.

von (prx) A. K. (prx)


Lesenswert?

Tom M. schrieb:

> Das gilt für das Binärsystem generell, nicht (nur) für Zweierpotenzen.
> Schieben (shift) funktioniert genau so gut bei einem 8 wie bei einem 123
> bit Wort.

Ich hatte damit keine Bitfelder wie in C gemeint, sondern indizierbare 
Komponenten. Zugegeben, im zitierten Absatz nicht eindeutig formuliert, 
daher hatte ich das Beispiel mit der Textspeicherung angehängt.

Wenn du deine 123-Bit Worte verwendest, um ein gepacktes Array aus 
100000 Bits zu speichern, dann ist das mit Schieben allein nicht 
wirklich sinnvoll.

von (prx) A. K. (prx)


Lesenswert?

Tom M. schrieb:

> Steckverbindungen; erstmal die Damen, die Verbindungen stöpseln mussten,
> später dann automatisierte Systeme mit Relais und Frequenz- und/oder
> Pulssteuerung (Wählscheibentelefon).

Wobei die Frequenzsteuerung in der Telefonie ein Beispiels für nicht 
binäre Signalisierung ist, weil 16 Zustände in einem aus 2 Frequenzen 
mit je 4 Varianten gemixten Signal codiert werden. Insofern ist das 
verwandt mit der moderneren Datenübertragung wie in Modems oder 
Digitalfernsehen, die beispielsweise in jedem Signalschritt 64 Zustände 
also 6 Bits codieren.

Die älteste verbreitete elektrische Signalisierung ist wohl das Morsen, 
zunächst im 19. Jahrhundert per Telegraph, später per Funk. Und das ist 
auf unterster Ebene binär.

von Detlev T. (detlevt)


Lesenswert?

A. K. schrieb:
> Die älteste verbreitete elektrische Signalisierung ist wohl das Morsen,
> Und das ist auf unterster Ebene binär.

Wie meinst du das? Es gibt hier doch drei Symbole: Punkt, Strich und die 
Pause zwischen den Zeichen.

von W.S. (Gast)


Lesenswert?

Es sind nicht immer Zweierpotenzen. So ein PIC (ein Microcontroller von 
MicroChip) kommt je nach Typ mit 12 oder 14 Bit im Befehlswort daher.
Und für Video-Zwecke gibt es RAM's mit 'krummen' Bitanzahlen, ich glaub 
18 oder so. Auch bei AD-Wandlern und anderem Zeugs gibt es 10, 12, 13 
Bit und noch anderes. Also wenn man genau hinschaut, dann sind es eben 
nicht immer nur Zweierpotenzen. Aber Schaltkreise, die möglichst 
universell seien sollen, also RAM's, Bustreiber usw. werden eben immer 
in Zweierpotenzen gebaut, weil das im Allgemeinen die günstigste Version 
ist.

W.S.

von (prx) A. K. (prx)


Lesenswert?

Detlev T. schrieb:

> Wie meinst du das? Es gibt hier doch drei Symbole: Punkt, Strich und die
> Pause zwischen den Zeichen.

Das ist bereits die zweitunterste Ebene. Die unterste ist an/aus. Darauf 
sitzt dein Code mit den 3 Werten, darauf dann einer mit einigen zig 
Werten.

von Rolf Magnus (Gast)


Lesenswert?

Falk Brunner schrieb:
>>Und warum sind diese Architekturen immer 32bit oder dann 64bit?
>
> Weil sich das so eingebürgert hat. Irgendwann wurden mal 8 Bit als Byte
> definiert.

Tatsächlich ist das Byte eigentlich nicht so definiert, auch wenn es 
heute fast überall synonom verwendet wird. Das Byte wurde eher definiert 
als die kleinste einzeln adressierbare Speichereinheit und zugleich die 
Speichereinheit, die man brauchte, um ein Zeichen des 
System-Zeichensatzes zu speichern. Damals waren die Bytes auch eher 5 
oder 6 Bit breit und nicht 8. Heutzutage ist eben bei der überwiegenden 
Mehrheit der Systeme die kleinste Einheit 8 Bit breit. Den 
"Systemzeichensatz" gibt es heute so nicht mehr. Es können viele 
Zeichensätze gleichzeitig mit teils unterschiedlicher Bitbreite auf 
einem System in Verwendung sein.

von Axel (Gast)


Lesenswert?

Nur ein Gedanke: Bei 4 Bit , 8 Bit, 16 Bit usw Busbreiten kann ich die 
Bits innerhalb der Busse optimal adressieren, brauche also bei 8 Bit 
breiten Daten z. B. 3 Bits um jedes der Bits im Datum zu adressieren.

Bei 12 Bit breiten Bussen, brauche ich 4 Bits, womit 4 mögliche weitere 
Bits verschwendet würden.

In den Befehlssätzen der 8 Bit Controller war das durchaus relevant.

Gruss
Axel

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? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.