Hallo,
ich habe eine typische Anfängerfrage:
Bei einem Mikrocontroller verstehe ich die Angabe zum Speicher nicht.
Da steht z.B. "128k words Flash memory".
Also 18.000 Worte Flash. Aber was sind jetzt Worte? Bedeutet dass, das
der Speicher von der Wortbreite der CPU abhängt (hier 32)?
Kann man das Ganze nicht ganz konventionell in Kilobyte angeben?
Danke
Michi schrieb:
> Bei einem Mikrocontroller verstehe ich die Angabe zum Speicher nicht.> Da steht z.B. "128k words Flash memory".> Also 18.000 Worte Flash.
Nö.
Das kleine k hinter der Zahl bedeutet in diesem Fall sehr wahrscheinlich
"multipliziere mit 1024". Folglich handelt es sich um 131072 Words
Flash.
Ein Word sind immer 16 Bit, also 2 Byte. Nach Adam Ries kommst Du dann
auf 262144 Bytes Flash, das sind - oh Wunder - genau 256kB.
Naja, Word ist nicht eindeutig. Das kann alles mögliche sein. Deswegen
gibt man das normalerweise besser in kiByte an, das ist eindeutig. Wobei
es sich schon eingebürgert hat, dass WORD 16 Bit sind, DWORD 32 und
QWORD 64. Aber wie gesagt, nicht immer...
Was ein "Wort" ist, das ist nicht fest definiert. Das können
Maschinenworte sein, das können Speicherworte unbekannter Breite sein
(bei externem Speicher dürften das 16 Bits sein), das können 16 Bits
sein (x86).
Christian R. schrieb:
> es sich schon eingebürgert hat, dass WORD 16 Bit sind, DWORD 32 und> QWORD 64. Aber wie gesagt, nicht immer...
Nur bei x86, nirgends sonst.
A. K. schrieb:
> Christian R. schrieb:>>> es sich schon eingebürgert hat, dass WORD 16 Bit sind, DWORD 32 und>> QWORD 64. Aber wie gesagt, nicht immer...>> Nur bei x86, nirgends sonst.
Naja, bei den MSP430 Compiler beispielsweise auch. Dort aber meist in
irgendwelchen Headern per typedef gemacht.
A. K. schrieb:
> Christian R. schrieb:>>> es sich schon eingebürgert hat, dass WORD 16 Bit sind, DWORD 32 und>> QWORD 64. Aber wie gesagt, nicht immer...>> Nur bei x86, nirgends sonst.
Das stimmt nicht. Atmel z.B. verwendet den Begriff Word ebenfalls als
Synonym für eine 16 bit breite Speicherzelle.
Ich wollte damit nur ausdrücken, dass sich das durchaus nicht
eingebürgert hat.
So gibt es jede Menge Maschinen, bei denen ein Wort 32 Bits breit ist
und 16 Bits als Halbwort bezeichnet werden. Wenn die als 32- oder 64-Bit
Architektur entstanden sind und nicht von Intel stammen, dann ist diese
Version üblich. 60 oder 48 Bits Wortbreite hat's aber auch schon
gegeben.
Also
Byte: kleinste seperat addressierbare Speicherzelle. Meist verwendet als
Synonym für Octed (wie es in ieee's, rfc's auch verwendet wird), das
immer aus 8 Bits besteht. Es gibt(besser gab) allerdings auch Rechner
die mit 6Bit Bytes rechneten.
Word: Größter nativ verarbeitbare ordinale Datentyp. (
Bei x86 ist das 32bit(EM64T 64). Die Konvention word = 16bit hat unser
geliebtes ;-) MS eingeführt, nicht Intel, und in der ewigen Reihe der
Abwärtskompatibilität von MASM&co beibehalten.
Maxxie schrieb:
> Word: Größter nativ verarbeitbare ordinale Datentyp.
Wobei sich das aber auf die erste Architektur beziehen kann, die in der
Historie der Firma eine relevante Rolle spielt. Was bezogen auf DEC
Alpha die PDP-11 war, auf dem Umweg über die VAX. So kamen die von
Anfang an 64 Bit breiten Alphas zu 16 Bit breiten Worten (aber
Langworten für 32 Bits).
> Bei x86 ist das 32bit(EM64T 64). Die Konvention word = 16bit hat unser> geliebtes ;-) MS eingeführt, nicht Intel, und in der ewigen Reihe der> Abwärtskompatibilität von MASM&co beibehalten.
Doch, das war sehr wohl Intel, anno 8086. Hat damals ja auch gestimmt.
Auch die Begriffe WORD, DWORD, QWORD in Assembler haben wir Intel zu
verdanken, nicht erst MS.
Ich glaube der TE meint Angaben wie bei Microchip.
z.B. der alte 16x54 hat 768 Byte Programmspeicher.
Er arbeitet mit 8 Bit Datenbreite. Die Befehle haben jedoch
12 Bit (OP-Code + Daten). Solch ein Befehl wird dann
von Microchip WORD genannt.
Da in in 768 Byte 512 solcher WORDs a 12 Bit passen ist
der Speicher mit 512 WORD bzw. 0,5 kWORD angegeben.
Auch bei den 14 Bit-Typen so verwendet.
-> 1 kWord ==>> Platz für 1k = 1024 Befehle
gruß avr
Bei IA64 (Itanium) hatte Intel offensichtlich die Lust in diesem
Verwirrspiel verloren und meidet darin solche Begriffe wie der Teufel
das Weihwasser ;-).
A. K. schrieb:
> Doch, das war sehr wohl Intel, anno 8086. Hat damals ja auch gestimmt.
Eben. Sie haben es aber auch entsprechend angepasst. In den Blättern zum
80486/7 erinnere ich mihc bei den eingeführten Caches die richtige
Bezeichnung word für 32bit.
avr schrieb:
> Ich glaube der TE meint Angaben wie bei Microchip.
Das kann schon sein, aber er schreibt ausdrücklich, dass eine 32-Bit CPU
gemeint ist. Und die einzige solche von Mirochip ist PIC32 aka MIPS32,
und da ist ein Wort 32 Bits breit.
Maxxie schrieb:
> Eben. Sie haben es aber auch entsprechend angepasst. In den Blättern zum> 80486/7 erinnere ich mihc bei den eingeführten Caches die richtige> Bezeichnung word für 32bit.
Mag sein, dass in irgendwelchen wolkigen Beschreibungen zum inneren
Aufbau der CPU der Begriff "word" für 32 Bits steht, aber soweit es die
Dokumentation der ISA und damit den Programmierer angeht ist ein Wort
bei allen x86 16 Bits breit.
Komplizierter ist es jedoch bei 32 Bits, denn im FPU-Kontext stehen
"short integers" für 32 Bits obwohl dafür sonst "dword" verwendet wird,
und "long integers" für 64 Bits.
Hallo,
bei den mir bekannten (alten) Speicher-Ics hieß es entweder
Byte-organisiert oder Word-organisiert und beschrieb 8Bit oder 16Bit
Datenbreite.
Ob die Dinger dann einzeln (8Bit oder 16Bit breit) oder paarweise (16Bit
oder 32Bit breit) oder 4x8 = 32Bit breit) an irgendwelche CPU-Busse
gehangen wurden, hat die Speicherhersteller relativ wenig interessiert.
Zumindest für mich ist somit ein Word-organisierter Flash erstmal 16Bit
breit.
Den Rest sagt mir dann das Datenblatt...
Gruß aus Berlin
Michael