PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warum keine 10-Bit-CPUs?


aths
2006-10-18, 16:05:14
Gibt es gute Gründe, warum die CPUs mit 8, 16 und 32 Bit Breite arbeiten? Eine CPU mit 10 Bit (also mit 10-Bit-Bytes und 10-Bit-Registern) hätte diverse Vorteile, ohne dass der Transistor-Count gleich zu stark in die Höhe ginge. So zum Beispiel dass man gleich bis 1000 zählen kann. Und dass 1024 Zellen à 10-Bit-Bytes deutlich mehr umfassen als 256 Zellen à 8-Bit-Bytes. Beim Verdoppeln auf Adressen mit 20 Bits könnte man gleich (reichlich) eine Millionen Bytes adressieren und nicht nur (reichlich) 65 Tausend.

Davon abgesehen umfassen 2^10 Bit eben schon drei Dezimalstellen. 2^8 Bit sind nicht Fisch und nicht Fleisch.

Gast
2006-10-18, 16:48:47
Nö. Es wurde halt mal so definiert und die Daten die man von jeglichen externen Quellen bekommt sind eben 8 Bit/Byte.

anorakker
2006-10-18, 17:25:31
aber warum denn nun genau 10bit? das würd doch nur ein riesiges formatchaos geben und das auf allen ebenen..

Brillus
2006-10-18, 17:34:12
Mir würden ansich 2 Sachen dazu einfallen.
1. 8,16,32 sind 2er-Potzenen normalerweise wurde in der Informatik neue Breiten der CPUs dadurch hinbekommen das man die Breite des Vorgängers verdoppelt hat.

4004(4Bit)->8008(8Bit)->8086(16Bit)->80386(32Bit)->Athlon64(64Bit)

Auch kann man darin Binär alle Bits Addrssiern ohne das man Lücken hat.

2. 4Bit lassen sich einfach hexadezimal darstellen sowie alle vielfache davon.

Aber eigentlcih ist es einfahc so gewachsen

ollix
2006-10-18, 17:41:11
Ich denke mal, daß es so gewachsen ist. Ein Byte wurde definiert, um eben ein Zeichen zu speichern. Dafür braucht man dann eben 8Bit (habe aber auch schon mal von anderen Bytegrößen gehört). Wenn dann in Bytes gespeichert wird, holt man sich mit einer Adresse, die eben Vielfache von ganzen Bytes ist, eben den maximalen Raum, den man in einer Adresse in ganzen Byte abbilden kann.

DerRob
2006-10-18, 17:43:46
aber warum denn nun genau 10bit? das würd doch nur ein riesiges formatchaos geben und das auf allen ebenen..
wenn man gleich damit angefangen hätte, dann würden wir garnix anderes kennen ;)

ursprünglich hatte ein byte sogar nur bis zu 6 bit, bzw. war die bitmenge garnicht genau festgelegt. erst ab 1956 waren dann 8 bit im gebrauch, welche dann 1970 iso-normiert wurden.

http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht6Ht/code_byte_de

aths
2006-10-18, 19:05:41
aber warum denn nun genau 10bit? das würd doch nur ein riesiges formatchaos geben und das auf allen ebenen..Nicht, wenn sich 10 Bit durchgesetzt hätten.


Mir würden ansich 2 Sachen dazu einfallen.
1. 8,16,32 sind 2er-Potzenen normalerweise wurde in der Informatik neue Breiten der CPUs dadurch hinbekommen das man die Breite des Vorgängers verdoppelt hat.

4004(4Bit)->8008(8Bit)->8086(16Bit)->80386(32Bit)->Athlon64(64Bit)

Auch kann man darin Binär alle Bits Addrssiern ohne das man Lücken hat.

2. 4Bit lassen sich einfach hexadezimal darstellen sowie alle vielfache davon.

Aber eigentlcih ist es einfahc so gewachsenJa, mit 4 Bit kann man schon bis 10 zählen, eine 5-Bit-CPU böte da keine entscheidende Vorteile. Anders sieht es imo aus bei 10 vs 8 Bit (bzw 20 vs 16 Bit.) Je länger ich darüber nachdenke, umso mehr gefällt mir eine 10-Bit-Architektur (bzw. 20- oder 40-Bit-Architektur.)

DerRob
2006-10-18, 19:23:50
Ja, mit 4 Bit kann man schon bis 10 zählen, eine 5-Bit-CPU böte da keine entscheidende Vorteile. Anders sieht es imo aus bei 10 vs 8 Bit (bzw 20 vs 16 Bit.) Je länger ich darüber nachdenke, umso mehr gefällt mir eine 10-Bit-Architektur (bzw. 20- oder 40-Bit-Architektur.)
10 ist kein vielfaches von 2. vielleicht gabs irgendwelche adressierungsprobleme, die sich damals nicht so ohne weiteres lösen ließen?

um 8 bit einzeln zu adressieren, benötige ich 3 bits. für 10 bit sind schon 4 bit notwendig, aber dann hab ich 6 bit "zuviel" (nur ein verzweifelter versuch, das logisch zu erklären :redface: )

aths
2006-10-18, 19:28:24
10 ist kein vielfaches von 2. vielleicht gabs irgendwelche adressierungsprobleme, die sich damals nicht so ohne weiteres lösen ließen?

um 8 bit einzeln zu adressieren, benötige ich 3 bits. für 10 bit sind schon 4 bit notwendig, aber dann hab ich 6 bit "zuviel" (nur ein verzweifelter versuch, das logisch zu erklären :redface: )Um 8 Bit einzeln zu adressieren braucht man 3 Bit, also nicht mal ein Nibble. Auch so hat man Verschnitt.

#44
2006-10-18, 20:00:11
10 ist kein vielfaches von 2. Und was ist dann 2 x 5??

Es ist nur keine 2er-Potenz

€: Fragen wir mal sorum: Welche Vorteile siehst du denn darin das man nun einfacher bis 1000 zählen kann? Nur der Transistorcount?

aths
2006-10-18, 20:55:01
€: Fragen wir mal sorum: Welche Vorteile siehst du denn darin das man nun einfacher bis 1000 zählen kann? Nur der Transistorcount?Eine reine 8-Bit-CPU kann nur 256 Byte Speicher adressieren. Mit 10 Bit kann man schon 1024 Bytes adressieren, was deutlich entspannter ist. Während man bei 16-Bit-Adressen auf 64 kiB begrenzt ist, kommt man bei 20-Bit-Adressen schon auf 1 Mi"B10" ("Byte mit 10 Bits").

Mit 8 Bit pro Zeichen benötigt man Codetables, um unterschiedliche Sprachen zu unterstützen. Mit 10 Bit ließen sich viele Alphabete in einer einzigen Codetabelle unterbringen.

Und mit 10 Bits hat man eben gerade drei Dezimalstellen Genauigkeit.

Avalox
2006-10-18, 21:17:31
Es wird aus der Geschichte heraus entstanden sein. Eben aus dem Wunsch 1 Byte in einem Durchgang komplett verarbeiten zu können.

In den Anfängen der Computerei hatte ein Byte noch nicht 8 Bit. Die 8Bit sind aus einer Praxisrelevanz entstanden. Ein Byte mit 6Bit hat nicht mehr ausgereicht, um die benötigten Anzahl von Zeichen einfach zu verarbeiten. Man erhöhte die Anzahl der Bits in einem Byte auf 8 Bit. Erst 8 Bit ermöglichten das einfache Verwalten des benötigten Zeichenumfangs. Mit dem 8Bit Byte war die 8Bit CPU nicht mehr weit. Das liegt so lange zurück, dass sich eh niemand mehr so recht dran erinnern kann, dass ein Byte durchaus mal weniger als 8Bit beinhalten kann. Ein Byte wird heute eben mit 8Bit definiert. Es hat sich als Normalzustand durchgesetzt. Ein Folgegeneration hatte eben den Anspruch möglichst binär kompatibel zu bleiben.


UNIVAC hatte 36Bit Computer. Dazu passend das 9Bit Byte und 18Bit Register. Allerdings kannten diese Computer noch keine CPU.

pnume
2006-10-18, 22:02:12
Vieleicht hatte "Der Mensch" nur acht Finger und war deshalb zufrieden damit. *g*

DerRob
2006-10-18, 22:06:54
Vieleicht hatte "Der Mensch" nur acht Finger und war deshalb zufrieden damit. *g*
jep, 8 finger und 2 daumen. hast du mehr? :tongue:

pnume
2006-10-18, 22:14:13
8 und 2 passt doch wieder.

BAGZZlash
2006-10-19, 00:51:43
Ich denke, es ging einfach darum, möglichst ein ganzes Alphabet erfassen zu können. Alle Ziffern, alle Buchstaben (in groß und in klein), sind schonmal 62 verschiedene "Zustände".
Mit 6 bit (64 "Zustände") wär' das etwas eng. Dann noch Satzzeichen, sprachspezifische Sonderzeichen (im Deutschen etwa äöü/ÄÖÜ und ß, französisch etc. kommen ja auch noch dazu), Steuerzeichen etc.
7 bit (128 "Zustände") würde da vielleicht knapp reichen, aber mit 8 bit mit seinen 256 "Zuständen" ist man einfach auf der sicheren Seite. Schaut Euch an, was für'n Unsinn alles in so 'ner ASCII-Tabelle drin ist...

Arokh
2006-10-19, 11:48:18
10 ist kein vielfaches von 2. vielleicht gabs irgendwelche adressierungsprobleme, die sich damals nicht so ohne weiteres lösen ließen?

um 8 bit einzeln zu adressieren, benötige ich 3 bits. ich dachte, Adressierung betrifft den Hauptspeicher, nicht die CPU-Register? Ich habe jedenfalls noch keinen Assembler-Code gesehen, in dem ein Register addressiert worden wäre ;)

aevil
2006-10-19, 14:01:26
ich dachte, Adressierung betrifft den Hauptspeicher, nicht die CPU-Register? Ich habe jedenfalls noch keinen Assembler-Code gesehen, in dem ein Register addressiert worden wäre ;)
Die Register muessen auch ueber Leitungen angesprochen werden, das geht bei 2^n Leitungen am effizientesten, da sonst ein bit nur vielleicht gebraucht wird. Und "vielleicht" sind nie so toll :]

pancho
2006-10-19, 21:22:01
ich dachte, Adressierung betrifft den Hauptspeicher, nicht die CPU-Register? Ich habe jedenfalls noch keinen Assembler-Code gesehen, in dem ein Register addressiert worden wäre ;)
Die "Adressierung" der Register findet im Opcode statt.
Die Register muessen auch ueber Leitungen angesprochen werden, das geht bei 2^n Leitungen am effizientesten, da sonst ein bit nur vielleicht gebraucht wird. Und "vielleicht" sind nie so toll :]
Das ist vielleicht eine Erklärung für die Anzahl der Register, nicht für deren Breite. Mit n bits im Opcode kann man 2^n Register direkt adressieren.

crusader4
2006-10-19, 22:04:55
Ich könnte mir auch vorstellen, das es gar keine technischen, sondern betriebswirtschaftliche Gründe hatte, das es keine 10bit-CPUs gibt. Vielleicht gab es die Idee ja, aber man hat zum Zeitpunkt x festgestellt, das für 90% aller Aufgaben 8bit reichen und 10bit eine Kostenverdopplung bedeuten*.
Aufgrund der schnellen Entwicklung in dem Bereich war es kurze Zeit später evtl. günstig genug, gleich die Breite zu verdoppeln, als einen kleinen Schritt auf 10bit zu gehen. Alles reine Spekulation, ist nur ne Idee. Ich kam drauf, weil ich mich beim Lesen des Themas fragte: "Interessante Ideen hast du immer, aths. Aber warum nimmst du nicht einfach nen 16bit-Rechner wenn du mehr als 8bit brauchst?" Mir wurde natürlich schnell klar, das es hier um die Diskussion an sich geht.

*Zahlen sind alle ausgedacht, sie dienen nur der Veranschaulichung

Grüße, Crusader

Gast
2006-10-19, 22:05:50
Das ist vielleicht eine Erklärung für die Anzahl der Register, nicht für deren Breite. Mit n bits im Opcode kann man 2^n Register direkt adressieren.

aevils Anmerkung würde stimmen, müsste man einzelne Bits jedes Registers explizit adressieren können. Dann benötigte man für Register der Länge 2^n folglich n Leitungen, um jedes Bit einzeln adressieren zu können.

Gast
2006-10-20, 19:40:06
aevils Anmerkung würde stimmen, müsste man einzelne Bits jedes Registers explizit adressieren können.

muss man aber nicht, die kleinste adressierbare einheit im rechner ist 1 byte.

RavenTS
2006-10-21, 13:12:21
Ich denke, es ging einfach darum, möglichst ein ganzes Alphabet erfassen zu können. Alle Ziffern, alle Buchstaben (in groß und in klein), sind schonmal 62 verschiedene "Zustände".
Mit 6 bit (64 "Zustände") wär' das etwas eng. Dann noch Satzzeichen, sprachspezifische Sonderzeichen (im Deutschen etwa äöü/ÄÖÜ und ß, französisch etc. kommen ja auch noch dazu), Steuerzeichen etc.
7 bit (128 "Zustände") würde da vielleicht knapp reichen, aber mit 8 bit mit seinen 256 "Zuständen" ist man einfach auf der sicheren Seite. Schaut Euch an, was für'n Unsinn alles in so 'ner ASCII-Tabelle drin ist...

Naja, aber 7bit ASCII ist wenigstens n schöner Standard der eigentlich auch überall gleich dargestellt wird, 8bit ASCII und all die schönen Unicodes sind ja schön, aber nicht zwangsweise überall verfügbar bzw. richtig nutzbar...

Bokill
2006-10-21, 15:09:52
jep, 8 finger und 2 daumen. hast du mehr? :tongue: Sensationell: Der Mann hat RECHT! :eek:

;)

MFG Bobo(2006)

Gast
2006-10-21, 16:00:13
muss man aber nicht, die kleinste adressierbare einheit im rechner ist 1 byte.
Deshalb der Konjunktiv.

Der_Donnervogel
2006-10-22, 13:50:19
10-Bit statt 8-Bit hätte früher nicht viel Sinn gemacht und macht es auch heute nicht.

Früher war es so, daß Transistorenanzahl, bzw. (Haupt-/Platten)Speicherplatz sehr begrenzt war. Deshalb mußte dieser Platz so gut ausgenutzt werden wie irgendwie möglich. Hier war 8-Bit ein guter Kompromiss zwischen Platzverbrauch und möglichem Nutzen. Bei einer Erhöhung auf 10-Bit hätte man nicht viel Nutzen gewonnen, da es nur sehr selten Fälle gibt wo man mit 256 Möglichkeiten nicht auskommt, allerdings mit 1024. Meist ist dann gleich ein Sprung auf das nächsthöhere Vielfache, also 16-Bit (20 Bit) oder 32 Bit (40 Bit) nötig. In den meisten Fällen hätte man also lediglich den nutzbaren Speicherplatz um 20% verringert, ohne etwas zu gewinnen.

Heutzutage ist das Problem anders herum. Speicherplatz ist in rauhen Mengen vorhanden und wozu sollte man dann noch 10-Bit-Bytes brauchen? Wer Zahlen bis 1000 braucht nimmt 16-Bit oder besser gleich 32-Bit da die modernen CPUs AFAIK 32-Bit-Werte sowieso schneller verarbeiten können als kleinere. Also wozu dann noch 10-Bit-Werte einführen? :confused:

Xmas
2006-10-22, 14:47:55
10 ist kein vielfaches von 2. vielleicht gabs irgendwelche adressierungsprobleme, die sich damals nicht so ohne weiteres lösen ließen?

um 8 bit einzeln zu adressieren, benötige ich 3 bits. für 10 bit sind schon 4 bit notwendig, aber dann hab ich 6 bit "zuviel" (nur ein verzweifelter versuch, das logisch zu erklären :redface: )
Bits muss man normalerweise nicht adressieren. Lediglich Bitshifts und Rotationen sind mit 10-Bit-Bytes nicht so effizient zu implementieren.

Eine reine 8-Bit-CPU kann nur 256 Byte Speicher adressieren. Mit 10 Bit kann man schon 1024 Bytes adressieren, was deutlich entspannter ist. Während man bei 16-Bit-Adressen auf 64 kiB begrenzt ist, kommt man bei 20-Bit-Adressen schon auf 1 Mi"B10" ("Byte mit 10 Bits").
Gerade was die Speicheradressierung angeht wären kleinere Schritte wirtschaftlicher gewesen, nicht noch größere. So wärst du gleich von KiB zu MiB gesprungen, obwohl diese Speichermenge noch längst nicht verfügbar war.

Und mit 10 Bits hat man eben gerade drei Dezimalstellen Genauigkeit.
Ich sehe nicht inwiefern das wichtig sein soll. Wenn es um Dezimaldarstellung geht ist BCD praktischer da die Stellen getrennt sind. Und warum ist "man kann bis 10/1000/... zählen" wichtiger als bis 255 oder 65535 zählen zu können, mal abgesehen davon welche Zahl gerade größer ist?

aths
2006-10-22, 18:55:54
10-Bit statt 8-Bit hätte früher nicht viel Sinn gemacht und macht es auch heute nicht.

Früher war es so, daß Transistorenanzahl, bzw. (Haupt-/Platten)Speicherplatz sehr begrenzt war. Deshalb mußte dieser Platz so gut ausgenutzt werden wie irgendwie möglich. Hier war 8-Bit ein guter Kompromiss zwischen Platzverbrauch und möglichem Nutzen. Bei einer Erhöhung auf 10-Bit hätte man nicht viel Nutzen gewonnen, da es nur sehr selten Fälle gibt wo man mit 256 Möglichkeiten nicht auskommt, allerdings mit 1024. Meist ist dann gleich ein Sprung auf das nächsthöhere Vielfache, also 16-Bit (20 Bit) oder 32 Bit (40 Bit) nötig. In den meisten Fällen hätte man also lediglich den nutzbaren Speicherplatz um 20% verringert, ohne etwas zu gewinnen. Mit 1024 Schritten statt 256 hätte man, wie bereits angerissen, imo viel mehr machen können und würde sich in vielen Dingen den Schritt zur 16-Bit-CPU sparen.


Gerade was die Speicheradressierung angeht wären kleinere Schritte wirtschaftlicher gewesen, nicht noch größere. So wärst du gleich von KiB zu MiB gesprungen, obwohl diese Speichermenge noch längst nicht verfügbar war.Man hätte zu Beginn ja nicht alle Leitungen legen brauchen. Bei den Registern könnte man mit 20 Bit gleich bis eine Million zählen und nicht nur bis 65000.

Bei der Speicheradressierung brauchten die meisten 8-Bit-CPUs schon 16 Bit. 16-Bit-CPUs wiederum sind zu stark für 16-Bit-Adressen. Bis auf die allerersten Modelle hätte eine 10-Bit-CPU auch 20-Bit-Adressen gebraucht (jedenfalls mehr als 10 Bit), aber spätere 20-Bit-CPUs kämen dann erst mal mit 20-Bit-Adressen aus. Die heute dann mit 40 Bit Breite rechnenden CPUs kämen auch gut mit 40 Bit Adressbreite aus.

Mit 10 Bit breiten Bytes und Registern (bzw. Verdopplungen und vervierfachungen davon) erscheint mir die ganze Architektur zwar auch nicht perfekt, aber im Vergleich zur 8-Bit-basierenden CPUs viel harmonischer.