Anzahl Speicherzellen für Programmcode berechnen

OP #6368203
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.
Gast #6368240
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.
Gast #6368264
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.
#6368304
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.
#6368319
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. ;-)
#6368554
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
Gast #6368748
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.
#6368766
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.
Persönliche Seite #6368798
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.
Gast #6369025
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.
#6369086
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.
Gast #6369239
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.
Gast #6369781
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?
Gast #6369846
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...
Gast #6369911
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.
Gast #6370027
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.
#6370323
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren