Forum: Mikrocontroller und Digitale Elektronik Anzahl Speicherzellen für Programmcode berechnen


von It E. (itet)


Lesenswert?

Ich versuche gerade auszurechnen wieviele Speicherzellen ein Cortex M0 
für Programmcode bereitstellt. Im Datenblatt wird angegeben, dass der 
Codebereich von 0x00000000 - 0x1FFFFFFF reicht, es wird auch angegeben, 
dass die Coderegion 512 MB groß ist.

Rechenweg 1:
0x1FFFFFFF = 536.870.911 in Dezimal
Da es sich um einen 32-Bit uC handelt, muss ich das noch durch 32 teilen 
und komme auf 16.777.215 Zellen.

Rechenweg 2:
512 MBit  1024  1024 / 32 = 16.777.216 Zellen.

Ist das so richtig?
Warum muss ich beim Rechenweg 2 mit 1024 multiplizieren? Aus alten Tagen 
weis ich noch, dass da so richtig ist, aber warum weis ich nicht mehr.

von Oliver S. (oliverso)


Lesenswert?

It E. schrieb:
> Ist das so richtig?

Abgesehen davon, daß nur du weisst, was bei dir eine Speicherzelle ist, 
ist die Anzahl der Bytes in Rechenweg 1 um eins zu klein. Byte 0 zählt 
mit.

Oliver

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

It E. schrieb:
> Ist das so richtig?

nein.

Die Maschinenbefehle sind unterschiedlich groß, viele nur 16 Bit.

Außerdem wird da nicht nur Programmcode gespeichert, sondern auch die 
Interrupt-Vektor Tabelle und Daten (z.B. Zeichenketten die irgendwo 
ausgegeben werden).

> Warum muss ich beim Rechenweg 2 mit 1024 multiplizieren?

Weil ein Kilobyte nicht 1000 Bytes sind, sondern 1024.

Bei Festplatten sind 1 Kilobyte aber 1000 Bytes - komischerweise.

von fop (Gast)


Lesenswert?

Arm Cortexe kennen nur den Thumb - Befelssatz. Da ist ein Befehl 16 Bit, 
also 2 Byte, groß.
Der Kern kann im Prinzip 2^32 Byte, also 4 GiByte, adressieren. Aber die 
Arm Cortexe kennen nur einen Adressraum. Den teilen sich 
Programmspeicher, Datenspeicher und Peripherie. Würde ein Programm also 
einen 4 GiByte großen Programmspeicher füllen, müsste man sich was 
einfallen lassen, um auch noch auf irgendwelche Peripherie zugreifen zu 
können.
Im wahren Leben ist es jedoch so, dass meist viel weniger Speicher 
verbaut ist. Es gibt also Bereiche von Adressen, hinter denen kein 
Speicher und auch keine Peripherie sich melden. Ein Zugriff auf so eine 
Adresse sollte einen Hardfault aulösen. Bei anderen Architekturen muss 
man aber auf alles gefasst sein, z.B. dass sich die selbe Speicherzelle 
unter mehreren Adressen meldet oder dass ein Schreiben auf eine solche 
Adresse nichts bewirkt bzw. dass einem keiner so genau sagen will, 
welchen Wert man wohl beim Lesen erhält.

Ich sehe gerade, Du fragst nach dem Speicherplatz im Core. Der ist ganz 
besonders dürftig. Da gibt es nur so ca. ein Dutzend frei verfügbare 
32-bittige Register. Der Programmspeicher zählt nicht zum Core.

von Andreas B. (bitverdreher)


Lesenswert?

Stefan ⛄ F. schrieb:
> Bei Festplatten sind 1 Kilobyte aber 1000 Bytes - komischerweise.

Das ist nicht komisch, sondern die BWL Definition.

von Stefan F. (Gast)


Lesenswert?

Andreas B. schrieb:
>> Bei Festplatten sind 1 Kilobyte aber 1000 Bytes - komischerweise.
> Das ist nicht komisch, sondern die BWL Definition.

Die BWL Leute werde dagegen halten, dass sie die Einzigen sind, die 
richtig rechnen können, so wie man das in der 5. Klasse gelernt hat.

von Andreas B. (bitverdreher)


Lesenswert?

In der 5. Klasse kennt man i.A. auch keine Dualzahlen. Man hat das halt 
mal so definiert. (1024=1k)

von Einer K. (Gast)


Lesenswert?

It E. schrieb:
> Da es sich um einen 32-Bit uC handelt, muss ich das noch durch 32 teilen
Falsch

0x00000000 bis incl. 0x1FFFFFFF
Sind 536870912 Byte, nicht Bit.

 536870912  1024  1024 = 512
Der Speicherbereich ist 512 kByte groß

von Cyblord -. (cyblord)


Lesenswert?

Andreas B. schrieb:
> In der 5. Klasse kennt man i.A. auch keine Dualzahlen. Man hat das halt
> mal so definiert. (1024=1k)

Du meinst man hätte auch einfach für 2^10 = 823 definieren können?
Da hat jemand wohl was nicht verstanden.

von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Andreas B. schrieb:
> Man hat das halt
> mal so definiert.

von Andreas B. (bitverdreher)


Lesenswert?

Cyblord -. schrieb:
> Andreas B. schrieb:
>> In der 5. Klasse kennt man i.A. auch keine Dualzahlen. Man hat das halt
>> mal so definiert. (1024=1k)
>
> Du meinst man hätte auch einfach für 2^10 = 823 definieren können?
> Da hat jemand wohl was nicht verstanden.

Nein, aber da kein Mensch (vielmehr, die wenigsten) mit Dualzahlen 
rechen kann, hat man sich halt auf die der 1000 nächstliegende Zahl, 
nämlich 1024 geeinigt.

von Cyblord -. (cyblord)


Lesenswert?

Andreas B. schrieb:
> Nein, aber da kein Mensch (vielmehr, die wenigsten) mit Dualzahlen
> rechen kann, hat man sich halt auf die der 1000 nächstliegende Zahl,
> nämlich 1024 geeinigt.

Es ist doch viel mehr so, dass gerade die zufällige Nähe von 1024 zu 
1000 so große Probleme macht. Wäre das nicht der Fall würde niemand auf 
die Idee kommen das zu vermischen.

von pOpel (Gast)


Lesenswert?

Hat ein bisschen was von den amerikanischen Autobauern in den 80gern, 
denen PI zu anstrengend war und einfach Mal 3 drauß gemacht wurde.

von Andreas B. (bitverdreher)


Lesenswert?

Cyblord -. schrieb:
> Es ist doch viel mehr so, dass gerade die zufällige Nähe von 1024 zu
> 1000 so große Probleme macht. Wäre das nicht der Fall würde niemand auf
> die Idee kommen das zu vermischen.

Das mag sein. Die Definition stammt halt aus den Urschleim der EDV als 
man noch davon ausging, daß die damit befassten Leute noch wußten, wovon 
sie sprechen.
Und die 1024 sind eben nicht zufällig, sondern eben die nächste Zahl, 
die der 1000 als irgendeine 2-er Potenz am nächsten kommt.

Du kannst Dich noch viel mehr darüber streiten warum die Quarks jetzt 
up, down, top, bottom, strange und charm heißen.
Friß oder stirb. ;-)

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Stefan ⛄ F. schrieb:
> It E. schrieb:
>> Warum muss ich beim Rechenweg 2 mit 1024 multiplizieren?
>
> Weil ein Kilobyte nicht 1000 Bytes sind, sondern 1024.

Nitpick:

1 kB = 1000 Bytes


1 KiB = 1024 Bytes

: Bearbeitet durch User
von Klaus (Gast)


Lesenswert?

> Man hat das halt mal so definiert. (1024=1k)

Deswegen sind auch 1024m 1km.

MfG Klaus

von Rainer V. (a_zip)


Lesenswert?

pOpel schrieb:
> Hat ein bisschen was von den amerikanischen Autobauern in den 80gern,
> denen PI zu anstrengend war und einfach Mal 3 drauß gemacht wurde.

Ich glaube sogar zu wissen, dass es auch heute noch Bundesstaaten gibt, 
die das gesetzlich festgelegt haben...Utha z.B. würde mich nicht wundern 
:-)
1024 Grüße (fühlt sich blöd an) Rainer

von It E. (itet)


Lesenswert?

Auf alle Fälle weiß ich jetzt Bescheid, danke mal :-)

von Wolfgang (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Weil ein Kilobyte nicht 1000 Bytes sind, sondern 1024.

Quatsch.
Nach IEC 60027-2 lautet der Prefix für 1024 nicht "Kilo" (Symbol "k"), 
sondern "kibi" (Symbol "Ki")
https://de.wikipedia.org/wiki/Bin%C3%A4rpr%C3%A4fix#IEC-Pr%C3%A4fixe_zur_Basis_2

> Bei Festplatten sind 1 Kilobyte aber 1000 Bytes - komischerweise.
Nach Norm ist das doch völlig in Ordnung und kommt den BWLern entgegen, 
die dei Normbezeichnung wahrscheinlich gar nicht kennen.

von Axel S. (a-za-z0-9)


Lesenswert?

Wolfgang schrieb:
> Stefan ⛄ F. schrieb:
>> Weil ein Kilobyte nicht 1000 Bytes sind, sondern 1024.
>
> Quatsch.

Ein starkes Wort für einen Quatschkopf wie dich.

> Nach IEC 60027-2 lautet der Prefix für 1024 nicht "Kilo" (Symbol "k"),
> sondern "kibi" (Symbol "Ki")

Stimmt. Aber diese Norm wurde 1996 aufgeschrieben. Gut 10, wohl eher 20 
Jahre, nachdem sich das binäre "Kilo" etabliert hatte.

>> Bei Festplatten sind 1 Kilobyte aber 1000 Bytes - komischerweise.
> Nach Norm ist das doch völlig in Ordnung und kommt den BWLern entgegen

Tja. Nur daß die Norm eben wegen der BWLer eingeführt wurde. Damit sie 
weiter ihre ungezügelten Lügen verbreiten können.

Denn obwohl die Norm jetzt über 20 Jahre alt ist, kenne ich keinen 
einzigen, der "Mebibyte" statt "Megabyte" sagen würde. Die BWLer 
hingegen meiden die binären Einheitenvorsätze wie der Teufel das 
Weihwasser. Kein Wunder, schließlich sind zwischen 1TB und 1 TiB 
("Tibibyte" - jemals gehört?) fast 10% Differenz.

von Dennis H. (c-logic) Benutzerseite


Lesenswert?

Ich weiß ja nicht was es da zu Streiten gibt.

Si-Prefixe sind durch das SI-Einheitensystem dezimalaffin.
Byte und Bit sind keine Basiseinheiten des SI-Einheitensystems.

Natürlich darf man sich durch eine quadratische (2^5 x 2^5 etc.) 
Definition von kByte und MByte ausdrücken und die Nähe zum Si-System 
nutzen. Aber man kann niemanden darauf festnageln, weil k und M nicht 
dafür gedacht und laut SI-Einheiten-System auch nicht angewendet werden.

von Stefan F. (Gast)


Lesenswert?

>> Nach IEC 60027-2 lautet der Prefix für 1024 nicht "Kilo" (Symbol "k"),
>> sondern "kibi" (Symbol "Ki")

Axel S. schrieb:
> Stimmt. Aber diese Norm wurde 1996 aufgeschrieben. Gut 10, wohl eher 20
> Jahre, nachdem sich das binäre "Kilo" etabliert hatte.

Zudem wird sie (wie du sagst) weitgehend ignoriert. Das haben sich 
Akademiker an der Realität vorbei ausgedacht.

von Rolf M. (rmagnus)


Lesenswert?

fop schrieb:
> Ich sehe gerade, Du fragst nach dem Speicherplatz im Core.

Wo?

> Der ist ganz besonders dürftig. Da gibt es nur so ca. ein Dutzend frei
> verfügbare 32-bittige Register.

Da steht aber in der Regel nicht der Programmcode drin.

pOpel schrieb:
> Hat ein bisschen was von den amerikanischen Autobauern in den 80gern,
> denen PI zu anstrengend war und einfach Mal 3 drauß gemacht wurde.

Das war 1897 und hat mit Autos nichts zu tun. Vielmehr hat sich 
irgendein Landarzt an der Quadratur des Kreises versucht und wollte dazu 
ein Gesetz auf den Weg zu bringen, das π auf 3 festlegt.
Das Lustige ist, dass die Entscheidung dazu vertagt wurde und soweit ich 
weiß bis heute nicht gefallen ist.
https://de.wikipedia.org/wiki/Indiana_Pi_Bill

Wolfgang schrieb:
>> Bei Festplatten sind 1 Kilobyte aber 1000 Bytes - komischerweise.
> Nach Norm ist das doch völlig in Ordnung und kommt den BWLern entgegen,
> die dei Normbezeichnung wahrscheinlich gar nicht kennen.

Das bezeichnende daran ist, dass es im Computer-Umfeld ausschließlich 
die BWLer bei den Festplatten-Herstellern sind, die nicht damit klar 
kommen, dass 1k in diesem Bereich üblicherweise für 1024 steht.

Stefan ⛄ F. schrieb:
> Axel S. schrieb:
>> Stimmt. Aber diese Norm wurde 1996 aufgeschrieben. Gut 10, wohl eher 20
>> Jahre, nachdem sich das binäre "Kilo" etabliert hatte.
>
> Zudem wird sie (wie du sagst) weitgehend ignoriert. Das haben sich
> Akademiker an der Realität vorbei ausgedacht.

Ja, solche bereits etablierten Dinge nachträglich per Norm auf was 
anderes zu zwingen, ist halt schwierig.

PS: Sachen wie "Kibibit" und "Mebibyte" klingen für mich irgendwie nach 
Babysprache.

von A. S. (Gast)


Lesenswert?

Rolf M. schrieb:
> ausschließlich die BWLer bei den Festplatten-Herstellern sind, die nicht
> damit klar kommen, dass 1k in diesem Bereich üblicherweise für 1024
> steht.

Doch, die k waren noch 1024.

Der Sündenfall kam, als aus 1440 kB dann 1.44MB Disketten wurden.

Und man muss den BWLern zugutehalten, dass sie zuerst Festplatten mit M, 
G, T oder P verkauften, lange bevor ein nerd am Computer damit zu tun 
hat.

von Jacko (Gast)


Lesenswert?

Pffffft,
ich bin ja auch kein Freund der BWLer, weil die irgendwelche
irgendwo irgendwann unter irgendwelchen Begleitumständen funktioniert 
habenden Erfolgsrezepte als allgemeingültige WISSENSCHAFT verkaufen.
Auswendig gelernt und nicht kapiert...

Als technisch versierter Mensch sollte man sich doch aber bitte
vom BWL-Niveau abheben und die simplen Multiplikatoren
    K für 1024 = 2^10
und
    k für 1000 = 10^3
auseinander halten können.

Und wenn man die Möglichkeiten von 0 bis N-1 durchnumerieren
kann, hat man N Möglichkeiten.

Oder ist es nur zu warm?

von c-hater (Gast)


Lesenswert?

Johann L. schrieb:

> Nitpick:
>
> 1 kB = 1000 Bytes
>
>
> 1 KiB = 1024 Bytes

Schön, das du einer der Wenigen bist, die den korrekten Prefix kennt.

Du bist dann trotzdem nur einer der extrem Wenigen, die ihn dann auch 
tatsächlich benutzt...

Ich selber z.B. kenne diese "i"-Präfixes natürlich, benutze sie aber aus 
Prinzip nicht. Weil ich sie für völlig affig halte.

Wenn schon, hätten man für binäre Zahlen komplett neue Prefixe erfinden 
müssen. Aber dafür waren die Herren (und Damen?) Standardisierer mal 
wieder viel zu fantasielos...

von A. S. (Gast)


Lesenswert?

Jacko schrieb:
> Als technisch versierter Mensch sollte man sich doch aber bitte
> vom BWL-Niveau abheben und die simplen Multiplikatoren
>     K für 1024 = 2^10
> und
>     k für 1000 = 10^3
> auseinander halten können.

K ist in diesem Jahrtausend für BWLer aber kein Thema mehr.

von Blechbieger (Gast)


Lesenswert?

Interessanterweise gibt es einen weiteren Computerbereich in dem mit 
dezimalen Prefixes gearbeitet wird und in diesen Diskussionen fast nie 
auftaucht.

Datenübertragung

Z.B. 1G Ethernet sind 1.000.000.000 Bit/s und nicht 1.073.741.824 Bit/s.

Wahrscheinlich weil die Datenrate Symbolbreite mal Symbolrate ist und 
die Symbolrate sich aus einer dezimalen Taktrate (kHz, MHz, GHz) ergibt.

von Andreas B. (bitverdreher)


Lesenswert?

Blechbieger schrieb:
> Interessanterweise gibt es einen weiteren Computerbereich in dem mit
> dezimalen Prefixes gearbeitet wird

Da gibt es viele davon. Das Gewicht von Laptops z.B.: 1kg ist, man 
staune, 1000g ;-)

von Cyblord -. (cyblord)


Lesenswert?

Andreas B. schrieb:
> Blechbieger schrieb:
>> Interessanterweise gibt es einen weiteren Computerbereich in dem mit
>> dezimalen Prefixes gearbeitet wird
>
> Da gibt es viele davon. Das Gewicht von Laptops z.B.: 1kg ist, man
> staune, 1000g ;-)

Das sind bei uns immer noch zwei Pfund.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Das K ist aber schon für Kelvin vergeben, da besteht 
Verwechslungsgefahr.

Die 3 als Pi soll schon irgendwo in der Bibel stehen, ist halt 
abgerundet.

Hab gerade ein Pfund Kaffee geöffnet, dank Corona gab es in letzter Zeit 
nur noch Halbpfünder.

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

Cyblord -. schrieb:
> Andreas B. schrieb:
>> Blechbieger schrieb:
>>> Interessanterweise gibt es einen weiteren Computerbereich in dem mit
>>> dezimalen Prefixes gearbeitet wird
>>
>> Da gibt es viele davon. Das Gewicht von Laptops z.B.: 1kg ist, man
>> staune, 1000g ;-)

Gewicht ist allerdings nicht etwas computerspezifisches. Erstaunlich 
viele andere Gegenstände des täglichen Gebrauchs besitzen ebenfalls ein 
Gewicht.

> Das sind bei uns immer noch zwei Pfund.

Du gibst das Gewicht von Laptops in Pfund an? Welches Pfund? Da gibt's 
ja ziemlich viele verschiedene.
Interessant: Im Mittelalter gab es das "Krämergewicht", bei dem ein 
Pfund 1024 Hellergewichten entsprach - meint die Wikipedia.

Christoph db1uq K. schrieb:
> Das K ist aber schon für Kelvin vergeben, da besteht
> Verwechslungsgefahr.

Du meinst, man könnte denken, jemand hätte eine Speicherkapaziät in 
Kelvinbyte angegeben? Gut, KB könnte natürlich auch Kelvinbel sein, aber 
auch das wäre eine eher ungewöhnliche Einheit - vor allem für 
Speicherkapazitäten.

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

Rolf M. schrieb:
> Du gibst das Gewicht von Laptops in Pfund an? Welches Pfund? Da gibt's
> ja ziemlich viele verschiedene.

Nicht im Ländle, das ist ein Pfund ein Pfund. Auf dem Markt oder im 
Metzger bestellen viele auch ein halbes Pfund.

von Adam P. (adamap)


Lesenswert?

Eigentlich kommt es doch nur darauf an, ob man es Dezimal oder Binär 
betrachtet.

Eine von 1000 (1024) Erklärungen  :-D
https://www.elektronik-kompendium.de/sites/com/1401171.htm

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.