Die bei direkter Adressierung verfügbare Speichermenge oder die
Bitbreite der Rechenarithmetik.
Welche dieser beiden Möglichkeiten definiert also, ob eine CPU eine 8
Bit, 16 Bit, 32 Bit oder 64 Bit CPU ist?
Ist das irgendwie definiert?
Definitionsfrage schrieb:> Ist das irgendwie definiert?
Nicht wirklich. Und jeder Versuch wird durch irgendwelche Gegenbeispiele
konterkariert.
Manche definieren es über die Busse. Bei modernen CPUs gibts aber
dermassen viele unterschiedlichster Breite, da müsste man erst einmal
definieren, welchen man meint.
Manche gehen über die Register. Wird bei 8080 und erst recht bei Z80
recht spannend, Mehrheitsentscheid spricht für 16 Bits.
Manche definieren es über die ALU. Dann wär die Z80 ein 4-Bitter und bei
Motorola hätte man in der gemeinhin mindestens als 8-Bitter eingestuften
6800 Reihe auch 1-Bitter gefunden.
Geht man über die Rechenbreite, aber vermeidet allzu tiefen Einblick in
die Implementierung und solche Sauereien zu vermeiden, dann muss man
sich etwas einfallen lassen, um die 8080 nicht zum 16-Bitter zu machen.
Einfach ist eigentlich nur die Idee mit den Adressen: Das versucht
niemand, denn dann gäbe es überhaupt keine 8-Bitter.
Deshalb verlegt man sich auf eher gefühlsmässige Einschätzung und
streitet ab und zu wie die Kesselflicker (bei der 68008 gab es solide
Argumente für 8, 16 und 32 Bits). Und unterscheidet auch schon mal die
Sicht der Befehlssatzarchitektur von der Sicht der Implementierung.
Wenn die Standardbefehle (ADD, SUB, AND, OR Shift, Rotate) fuer n-Bit
sind, dann ist es eine n-Bit CPU.
Natuerlich erwartet man von einer 32bit CPU, dass die auch mehr als
16bit linear (ohne bank switching) adressieren kann.
Helmut S. schrieb:> Wenn die Standardbefehle (ADD, SUB, AND, OR Shift, Rotate) fuer n-Bit> sind, dann ist es eine n-Bit CPU.
Nur wurden 68000 und Z8000 einstmals als 16-Bitter verkauft, werden
damit aber zu 32-Bittern. Was man bei 68000 auch vertreten kann, aber
bei Z8000 kam eigentlich niemand auf diese Idee.
>Nur wurden 68000 und Z8000 einstmals als 16-Bitter verkauft, werden>damit aber zu 32-Bittern.
Wie meinst Du das?
Der hat doch ein 32 bit ADD.
Operation:
Source + Destination -->; Destination
Compatibility: 68000 Family
Assembler Syntax:
ADD <ea>, Dn
ADD Dn, <ea>
Attributes: Size = (Byte, Word, Long)
gefunden hier:
http://68k.hax.com/ADD
Scheint wirklich eine Auslegungssache zu sein:
"The MC68000 is the first implementation of the M68000 16/-32 bit
microprocessor architecture. The MC68000 has a 16-bit data bus and
24-bit address bus while the full architecture provides for 32-bit
address and data buses. It is completely code-compatible with the
MC68008 8-bit data bus implementation of the M68000 and is upward code
compatible with the MC68010 virtual extensions and the MC68020 32-bit
implementation of the architecture. Any user-mode programs using the
MC68000 instruction set will run
unchanged on the MC68008, MC68010, MC68020, MC68030, and MC68040. This
is
possible because the user programming model is identical for all
processors and the instruction sets are proper subsets of the complete
architecture."
Quelle:
http://www.nxp.com/assets/documents/data/en/reference-manuals/MC68000UM.pdf
Markus schrieb:>>Nur wurden 68000 und Z8000 einstmals als 16-Bitter verkauft, werden>>damit aber zu 32-Bittern.>> Wie meinst Du das?> Der hat doch ein 32 bit ADD.
Eben. Entsprechend dieses Kriteriums:
Helmut S. schrieb:> Wenn die Standardbefehle (ADD, SUB, AND, OR Shift, Rotate) fuer n-Bit> sind, dann ist es eine n-Bit CPU.
.. sind es 32-Bitter. Verkauft wurden sie als 16-Bitter. Also was nun?
Stefan U. schrieb:> Deine Frage hat A.K. weiter oben bereits beantwortet.
Helfe mir mal auf die Sprünge
Wo hat er denn die Antwort gegeben?
Ralph Berres
Ralph B. schrieb:> ist es nicht die Breite des Datenbusses?
Zur 68008:
- Hat 8 Bit Datenbus. Klare Sache, Frage beantwortet.
- Hat 16 Bit Recheneinheiten. Klare Sache, Frage beantwortet.
- Ist aber aus Sicht des Programmierers fast konsequent 32-bittig (*).
Und nun?
Mit den Recheneinheiten ist das auch so eine Sache. Die der 68000 hatten
16 Bits, bei der intern völlig anders aufgebauten 68070 von Signetics
waren es meiner Erinnerung nach 32 Bits. Die Chips waren zwar nicht
pinkompatibel, aber voll funktionskompatibel.
*: Die im Registersatz klar 16-bittige Z8000 hatte auch MUL/DIV in 32
Bits, die im Registersatz eindeutig 32-bittige 68000 nicht.
Ich würde die ursprüngliche Frage etwas anders formulieren:
Wem außer den Marketing-Leuten bringt diese uneinheitliche
Klassifizierung in 8-, 16-, 32- und 64-Bit-Typen überhaupt etwas?
;-)
> Wem ... bringt diese uneinheitliche Klassifizierung ... überhaupt etwas?
Den selben Leuten, die die Leistung in MHz messen, oder Staubsauger mit
viel Watt grundsätzlich besser finden.
Komisch, bei Glühlampen ist das irgendwie aus der Mode geraten...
Stefan U. schrieb:> Komisch, bei Glühlampen ist das irgendwie aus der Mode geraten...
Nachdem die Liebhaber von viel Watt erst einmal wie die Rohrspatzen über
die Entscheidung schimpften, sich pallettenweise eindeckten und wohl
heute noch vom Vorrat leben. ;-)
Stefan U. schrieb:> Komisch, bei Glühlampen ist das irgendwie aus der Mode geraten...
Bei LED-Lampen gibts das schon. Die werden mit 60W beworben, haben
aber nur 8W und sind nur so hell wie 40W-Glühlampen. :-)
A. K. schrieb:> Mit den Recheneinheiten ist das auch so eine Sache. Die der 68000 hatten> 16 Bits,
Du irrst.
Der 68000 hat 16 32-Bit Daten- und Adressregister. Der Datenbus, also
das, was über die Pins nach aussen geführt wird, ist 16 Bit breit. Der
Adressbus 24 Bit.
Der 68008 hat die gleichen D- und A-Register, aber nur einen 8-Bit
Daten- und einen 20-Bit Adress- im DIL- und einen 22-Bit Adressbus im
PLCC-Gehäuse.
Später gab es vom 68000er noch Versionen, bei denen man den Datenbus
statisch auf 8 oder 16Bit schalten konnte(z.B. 68001).
Von Motorola wurde der 68000er als 16/32-Bit CPU, nach Aufkommen des
68008 wurde die Familie als 8/16/32-Bit CPU bezeichnet.
Die 68000er waren intern immer 32-Bit CPUs.
Thomas E. schrieb:> A. K. schrieb:>> Mit den Recheneinheiten ist das auch so eine Sache. Die der 68000 hatten>> 16 Bits,>> Du irrst.>> ...>> Die 68000er waren intern immer 32-Bit CPUs.
Die ALU des 68000 ist m.W. nur 16 Bit breit, und darauf bezog sich A. K.
Die 32-Bit-Operationen werden per Mikroprogramm realisiert und bspw. bei
der Addition aus zwei 16-Bit-Operationen zusammengesetzt, weswegen die
32-Bit-Addition auch entsprechend länger dauert.
Die Bittigkeit der CPU definiert wie viel Bit eine CPU atomar
verarbeiten kann, der nicht durch ein Interrupt abgebrochen wird.
Bei einer 32 Bit CPU werden garantiert 32 Bit in den Speicher
geschrieben / gelesen, ein Interrupt kann das auch nicht aufteilen.
Bei einer 8 Bit CPU muss für eine 32 Bit Variable 4 MOV Befehle
ausgeführt werden, die einzeln von einem Interrupt unterbrochen werden
können. Somit kann je nach Zeitpunkt wo der Interrupt auftritt die 32
Bit-Variable im Speicher noch nicht korrekt liegen und man muss per
Software verhindern kann nichts falsches gelesen wird.
Eine 8 Bit CPU hat keine Möglichkeit 32 Bit mit einem einzigen Befehl in
den Speicher zu schreiben, ohne dass dieser Vorgang unterbrochen werden
kann.
Dafür gibt es zusätzliche "Spezial-Befehle" die z.B. einen Interrupt
deaktivieren oder für X Maschinenzyklen verhindern.
Im Umkehrschluss erwarte ich von einem CPU Hersteller, wenn er 16 Bit
drauf schreibt, dass er auch 16 Bit atomar verarbeitet - ohne dass ich
extra Interrupts deaktivieren muss.
Markus M. schrieb:> Die Bittigkeit der CPU definiert wie viel Bit eine CPU atomar> verarbeiten kann, der nicht durch ein Interrupt abgebrochen wird.
Ah. Ein aktueller Intel mit AVX2 ist dann eine 256-Bit-CPU? Warum sind
da die Marketing-Fuzzis noch nicht draufgekommen und verkaufen den
weiter als 64-Bit?
-->
A. K. schrieb:> Nicht wirklich. Und jeder Versuch wird durch irgendwelche Gegenbeispiele> konterkariert.
und, gibts schon Ergebnisse?
6502 da tippe ich auf 8-Bit musste immer viel schieben nur hat der PC ja
16-Bit wie eigentlich alle sogenannten 8-bitter.
z80 -> 8 oder 16 Bit? immerhin kann man mit 16-bit Registern rechnen,
war einfacher
Lustig wirds beim ATmega, ich las immer nur von 8-bit AVR und dann gibt
es da den m1284p der offensichtlich 64K Worte zu 16 Bit hat und nicht
ein Adressbit mehr.
Ich blicke bald nicht mehr durch
Joachim B. schrieb:> Ich blicke bald nicht mehr durch
Wir geben uns wirklich sehr viel Mühe die Verwirrung zu perfektionieren.
Bitte schreibe sobald wir es geschafft haben und Du überhaupt nicht mehr
durchblickst damit wir den Thread schließen können.