4 MBit! = 512 kB?


8

Sto lavorando con un microcontrollore Fujitsu e penso di essere un po 'arrugginito sui seguenti dettagli, ecco perché sto ponendo questa domanda. Ho le seguenti specifiche:

  • Memoria flash a 4 MB
  • Prodotto integrato: MB90F345E (S), MB90F345CE (S)
  • volume: 512 Kbyte / 256 parole
  • Configurazione del settore: 64 K × 6 + 32 K × 2 + 16 K × 2 + 8 K × 4
  • Banca assegnata: da F8H a banca FFH

Sembrano magicamente creare 12K byte di memoria ROM aggiuntiva? Che stranezza mi manca qui?


7
512 Kbyte = 512 * 8 Kbit = 4096 Kbit = 4 Mbits
John Dvorak

Googling: "512 kb in megabit" mi dà 512 kb = 4.096 Mbits. E questo viene arrotondato a 4 Mbits?
Evert

4
Prova invece a cercare "512 kib to mibit".
fgb,

3
Nel contesto tecnico, Kbyte e M-bit di solito si riferiscono a ciò che è da evitare ambiguità a cui si fa riferimento come Kibibytes e Mebibits
njzk2

3
Si noti inoltre che in un contesto tecnico, c'è una grande differenza tra Be b. Quello che dice il titolo è davvero "4 megabit! = 512 kilobit?", Che ovviamente non ha senso. Quello che volevi è 4 Mbit != 512 KB?che ha più senso, a seconda che tu stia usando prefissi binari o decimali.
un CVn del

Risposte:


16

Se guardi la mappa di memoria, in realtà ci sono 524.288 byte di ROM, che sono 512K (dove "K" si riferisce a 1024, non 1000) - a proposito, l'ho ottenuto sottraendo l'indirizzo iniziale 0xF8000 dall'indirizzo finale 0xFFFFFF e aggiungendo uno.

http://pdf1.alldatasheet.com/datasheet-pdf/view/202599/FUJITSU/MB90F345CE/+Q035-AVDyppuuX+SHGNxD.hOS+/datasheet.pdf

Quello è 4M (dove 'M' è 1024 * 1024 = 1.048.576, no 106 = 1.000.000).

Di solito è abbastanza chiaro cosa sta succedendo dal contesto, quindi raramente causa confusione (specialmente quando sembra esserci più memoria di quanto ci si aspettasse), tuttavia la capacità dell'unità disco del consumatore è un noto esempio di utilizzo di unità di "marketing" che rendono il prodotto più favorevole di circa il 5-10%.

Modifica: Come diversi prescrittivisti qui hanno menzionato, ci sono unità "ufficiali" come MiB che dovrebbero sbarazzarsi dell'ambiguità, tuttavia dato che praticamente nessuno le usa, penso che probabilmente causerebbero più confusione nella maggior parte dei casi (e ovviamente gli autori della scheda tecnica hanno sentito quel modo). La domanda riguarda l' interpretazione corretta di ciò che è stato scritto in una scheda tecnica, non di quale terminologia dovresti usare quando scrivi tu stesso una scheda tecnica.


2
+1, guarda sempre la mappa di memoria (o trova una stat senza "k" o "M") se hai bisogno di sapere esattamente cosa sta succedendo (le opzioni di memoria non sono ridimensionate del 10% a parte, ma piuttosto per fattori di 2). "60k" in molti micros non è 60 * 1024, ma spesso tra 60000 e 61440 perché parte di quel 1440 è assorbito dai registri HW.
Nick T,

@NickT Sì, e talvolta potrebbe esserci un "buco" in cui sono presenti I / O, RAM o qualcos'altro mappati in memoria.
Spehro Pefhany,

14

I primi ingegneri informatici scelsero di adottare e adattare le unità di prefisso SI ai conteggi dei dati. Questi sono gli stessi prefissi, ma contano usando binario anziché metrico. Poiché 2 ^ 10 è vicino a 10 ^ 3, ogni prefisso SI che normalmente aumenta di un importo di 10 ^ 3 si riferisce invece a un aumento di 2 ^ 10:

Prefix  Metric prefix        Binary prefix       Difference
k kilo  10^3=1,000           2^10=1,024           2.4%
M mega  10^6=1,000,000       2^20=1,048,576       4.9%
G giga  10^9=1,000,000,000   2^30=1,073,741,824   7.4%
T tera  10^12                2^40                10.0%
P peta  10^15                2^50                12.6%

Questi sono stati adottati come parte degli standard JEDEC.

Ciò ha una serie di vantaggi poiché molto lavoro in questo campo avviene in potenze di 2. Tuttavia, come puoi vedere, si discostano dalla metrica e poiché ora abbiamo a che fare con grandi quantità di spazio di archiviazione in cui la differenza tra i due diverge in modo significativo il problema è stato risolto da IEC e NIST. Questi differenziano i due sistemi modificando il prefisso binario:

Prefix  Binary prefix
ki kibi  2^10
Mi mebi  2^20
Gi gibi  2^30
Ti tebi  2^40
Pi pebi  2^50

Questi sono stati standardizzati per la prima volta nel 1998 e adottati nel Sistema internazionale di quantità nel 2008, ma l'adozione è lenta e ci sono ancora aziende che creano nuovi documenti utilizzando il vecchio standard. Laddove le aziende sono passate, hanno trovato gli utenti confusi e alcuni sono tornati allo stile precedente.

Pertanto, utilizzando lo standard precedente, 4 Mb è 4 * 2 ^ 20 bit, che equivale a 512 * 2 ^ 10 byte.

Rappresentato nel nuovo standard, sarebbe invece 4Mib = 512 kiB, supponendo che 'b' sia bit e 'B' sia byte.


In base a ciò , è stato standardizzato nel 1998.
glglgl

1
Potrebbe essere uno standard, ma a tutti piace. Come notato, c'è molta documentazione precedente che, in teoria, le aziende dovrebbero cambiare (si potrebbe paragonare questo al costo della conversione degli USA nel sistema metrico). Questa domanda e le risposte diventano un buon promemoria di quale terminologia DOVREBBE usare.
Alan Campbell,

@glglgl L'IEC e altri li hanno definiti nel 1998, ma non è stato fino al 2008 che i prefissi IEC sono stati incorporati nel Sistema internazionale di quantità. Ho aggiornato leggermente la risposta.
Adam Davis,

10

Nel contesto delle capacità di memoria, MB significa spesso 1024 KB (anziché 1000 KB). Puoi usare MiB per evitare ambiguità.


Detto questo, ho sentito che alcuni produttori di dischi rigidi usano 1000. A volte è davvero fangoso ma dovrebbe davvero essere 1024.
DKNguyen,

1

I poteri antichi di 2 contro poteri di 10 dibattiti. Le aziende hanno perso milioni in cause legali su di esso. I prefissi binari vs decimali che causano la perdita di 24 bit per chilogrammo si sommano in bit e byte giga. Ecco perché il mio disco rigido da 120 GB (valutazione del produttore) ha solo 115,8 GB circa (display del computer)

http://en.m.wikipedia.org/wiki/Binary_prefix ha una spiegazione completa.


2
Non dimenticare i vecchi floppy disk "1,44 MB" del cavallo di lavoro. Che erano 1,44 volte 1000 volte 1024 byte (1.474.560 byte). Doppia confusione!
un CVn del

1

Quando si parla di RAM, ROM o altro collegato in qualsiasi modo ai bus di una CPU:

  • Un kilobit è 1024 bit.

  • Un megabit è 1024 kilobit.

  • 4 megabit è 4096 kilobit.

  • 4096 kilobit sono 4194304 bit.

  • Un byte è 8 bit.

  • 4194304 bit sono 524288 byte

  • Un kilobyte è 1024 byte

  • 524288 byte è 512 kilobyte.

È tutto a causa di 2n.


2
Googling "4 megabit in kbit" mi dà 4000 kilobit? Penso che questa pagina wiki spieghi l'ambiguità: en.wikipedia.org/wiki/Binary_prefix
Evert

5
La differenza deriva dai produttori di dischi rigidi che utilizzano 1000 per chilo / mega ecc. (Per rendere le unità più grandi), mentre tutto il resto dell'archiviazione digitale utilizza 1024. È puramente per combattere questa confusione che il Mibibyte ecc. (MIllion BInary BYTEs) è stato inventato.
Majenko,

2
-1: a rigor di termini, non direi fino a dire "un kilobyte è 1024 byte" - può essere anche 1000 byte (ISO / IEC80000 essendo uno dei contesti) o 1024 byte (uso comune, SI binario ); in quanto tale, non posso essere d'accordo con questa risposta se non includi le informazioni del tuo commento (kibibyte ecc.) nella risposta stessa. Inoltre, 1000 per chilo non provengono da OEM HD (anche se è più comune per loro) - è dalla tabella dei prefissi SI, che precede il CS e i computer di oggi di almeno mezzo secolo (circa 1950-1960)

3
@vaxquis: mezzo secolo è un eufemismo. 'Chilo' deriva dall'antica parola greca per migliaia, che precede SI da millenni.
Marcks Thomas,

3
@vaxquis SI non definisce né un byte né un bit, quindi l'utilizzo di kilo con essi non è definito da esso. È invece definito dallo standard JEDEC 100B.01.
Ruslan,

1

Sfortunatamente l'industria dei computer usa i prefissi chilo e mega in modo incoerente.

La memoria dei semiconduttori tende ad avere due dimensioni, perché semplifica la mappatura degli indirizzi. 1024 è vicino a 1000, quindi quelli che lavorano con la memoria a semiconduttore hanno iniziato a usare il chilo per significare 1024. Man mano che le dimensioni della memoria aumentavano, hanno anche iniziato a usare mega per significare 1024 aumentavano, 2 = 1048576 giga per significare 1024 3 = 1073741824 e così via.

In base a queste definizioni di kilobyte e megabyte, la dichiarazione del produttore corrisponde. 4 megabit binari equivalgono a 4096 kilobit binari equivalgono a 512 kilobyte binari.


Tuttavia, altre parti del settore informatico, in particolare i produttori di dischi rigidi e i progettisti di interfacce di comunicazione hanno utilizzato i prefissi SI nel loro significato originale. Anche i produttori di supporti flash a disco tendevano a seguire questa convenzione.

Alcune parti del settore hanno persino mischiato i due, ad esempio un "floppy da 1,44 MB" è in realtà 1,44 * 1000 * 1024 = 1474560 byte

L'IEC ha cercato di risolvere il pasticcio nel 1998 introducendo nomi e simbologie specifici per i prefissi binari, i nomi si formano prendendo le prime due lettere del nome dell'unità SI e aggiungendo "bi", quindi il chilo diventa kibi, il mega diventa mebi e così via. Per i simboli viene aggiunta una "i", quindi k diventa ki, M diventa Mi e così via.

Tuttavia, solo perché un'organizzazione standard introduce la terminologia non significa che le persone la utilizzino effettivamente. Almeno nella mia esperienza è ancora molto più comune vedere kilo, mega etc usati in senso binario che vedere kibi, mebi ecc.


1

Come hanno già spiegato tutti gli altri, probabilmente stai soffrendo di un hack vecchio di mezzo secolo di IEC et al, che continua a generare una grande confusione. Invece di introdurre una nuova unità della stessa dimensionalità (o prefisso), hanno ridefinito il significato di un'altra unità (prefisso) ampiamente utilizzata, non riuscendo allo stesso tempo a stabilire chiaramente quale definizione si applica in quale contesto.

In caso di problemi specifici, basta ispezionare le mappe di memoria come indicato.


Tuttavia, vi esorto, ragazzi, a riconoscere un problema molto più generale.
Il problema è che dire123 kB non porta in modo affidabile a una comprensione cristallina da parte del destinatario.

Questo è un retaggio linguistico e una grave carenza di API del vocabolario CS.

Cosa possiamo fare per risolverlo?

Bene, indovina un po ': usa i prefissi binari .
Il significato di 123 kiBè affidabile al 100% cristallino.
Il significato di 123 kiB (126.0 kB)è ancora meglio.
Non devi essere uno storico CS solo per trasmettere alcune grandi numeri a qualcuno.
A nessuno importa di aziende, hard disk, enti di standartization, dichiarazioni di deprecazione e così via.
Non ne vale la pena. Usa semplicemente i mebiby binari. Essi sono unambigous.

Ci sono persone che hanno affermato con successo 32 kibihertznel 2002. Sono state ascoltate. Incredibilmente conveniente, eh?

Infine, se ti rifiuti di abbracciare i prefissi binari, peggiori il problema.
L'unica strategia con cui tutti noi possiamo collaborare per eliminare e correggere quel dannato bug linguistico è deprecare l'ambiguità e passare al kibi ... secondi (perché no?) E ad altre bi-unità.


1
Wow! Mi devo ricordare di utilizzo kibihertz più!
pipe
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.