4 MBit! = 512 ko?

8

Je travaille avec un microcontrôleur Fujitsu et je pense que je suis un peu rouillé sur les détails suivants, c'est pourquoi je pose cette question. J'ai les spécifications suivantes:

  • Mémoire flash 4 Mo
  • Produit intégré: MB90F345E (S), MB90F345CE (S)
  • volume: 512 Ko / 256 K mots
  • Configuration du secteur: 64K × 6 + 32K × 2 + 16K × 2 + 8 K × 4
  • Banque affectée: F8H à la banque FFH

Ils semblent créer comme par magie 12K octets de mémoire ROM supplémentaire? Quelle bizarrerie me manque-t-il ici?

Evert
la source
7
512 Kbytes = 512 * 8 Kbits = 4096 Kbits = 4 Mbits
John Dvorak
Google: "512 ko à mégabits" me donne 512 kb = 4,096 Mbits. Et cela se termine à 4 Mbits?
Evert
4
Essayez plutôt de googler "512 kib à mibit".
fgb
3
Dans le contexte technique, les kilo-octets et les bits M se réfèrent généralement à ce qui doit éviter toute ambiguïté appelée Kibibytes et Mebibits
njzk2
3
Notez également que dans un contexte technique, il existe une très grande différence entre Bet b. Ce que le titre dit est vraiment "4 mégabits! = 512 kilobits?", Ce qui n'a bien sûr aucun sens. Ce que vous vouliez est 4 Mbit != 512 KB?plus logique, selon que vous utilisez des préfixes binaires ou décimaux.
un CVn du

Réponses:

16

Si vous regardez la carte mémoire, il y a en fait 524,288 octets de ROM, ce qui est 512K (où 'K' fait référence à 1024, pas 1000) - btw, je l'ai obtenu en soustrayant l'adresse de début 0xF8000 de l'adresse de fin 0xFFFFFF et en ajoutant une.

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

C'est 4 M (où «M» est 1024 * 1024 = 1 048 576, pas dix6 = 1 000 000).

Il est généralement assez clair de savoir ce qui se passe dans le contexte, ce qui provoque rarement de la confusion (en particulier lorsqu'il semble y avoir plus de mémoire que prévu), mais la capacité du lecteur de disque des consommateurs est un exemple notoire d'utilisation d' unités de marketing qui donnent au produit un aspect plus favorable d'environ 5-10%.

Edit: Comme divers prescriptivistes ici l'ont mentionné, il existe des unités "officielles" comme MiB qui devraient lever toute ambiguïté, mais comme pratiquement personne ne les utilise, je pense qu'elles provoqueraient probablement plus de confusion dans la plupart des cas (et, évidemment, les auteurs de la fiche technique ont estimé de cette façon). La question est d' interpréter correctement ce qui a été écrit dans une fiche technique, et non quelle terminologie vous devez utiliser lorsque vous rédigez vous-même une fiche technique.

Spehro Pefhany
la source
2
+1, regardez toujours la carte mémoire (ou trouvez une statistique sans "k" ou "M") si vous avez besoin de savoir exactement ce qui se passe (les options de mémoire ne sont pas dimensionnées à 10%, mais plutôt par des facteurs de 2). "60k" dans de nombreux micros n'est pas 60 * 1024, mais souvent quelque part entre 60000 et 61440 car une partie de ce 1440 est occupée par les registres HW.
Nick T
@NickT Yup, et parfois il peut y avoir un "trou" où il y a des E / S mappées en mémoire, de la RAM ou autre chose.
Spehro Pefhany
14

Les premiers ingénieurs en informatique ont choisi d' adopter et d'adapter les unités de préfixe SI à leur nombre de données. Ce sont les mêmes préfixes, mais en comptant en binaire plutôt qu'en métrique. Étant donné que 2 ^ 10 est proche de 10 ^ 3, chaque préfixe SI augmentant normalement un montant de 10 ^ 3 fait plutôt référence à une augmentation de 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%

Celles-ci ont été adoptées dans le cadre des normes JEDEC.

Cela présente un certain nombre d'avantages, car beaucoup de travail dans ce domaine se fait en puissances de 2. Cependant, comme vous pouvez le voir, ils divergent de la métrique, et puisque nous avons maintenant affaire à de plus grandes quantités de stockage où la différence entre les deux diverge considérablement la problème a été traité par la CEI et le NIST. Ceux-ci différencient les deux systèmes en changeant le préfixe binaire:

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

Celles-ci ont été normalisées pour la première fois en 1998 et adoptées dans le Système international de quantités en 2008, mais leur adoption est lente et il existe encore des entreprises qui créent de nouveaux documents en utilisant l'ancienne norme. Là où les entreprises ont changé, elles ont trouvé les utilisateurs confus et certains sont revenus à l'ancien style.

Ainsi, en utilisant l'ancienne norme, 4 Mo est de 4 * 2 ^ 20 bits, ce qui équivaut à 512 * 2 ^ 10 octets.

Représenté dans la nouvelle norme, il serait plutôt de 4 Mo = 512 Ko, en supposant que «b» correspond à des bits et «B» à des octets.

Adam Davis
la source
Selon cela , il a été normalisé en 1998.
glglgl
1
C'est peut-être une norme, mais tout le monde l'aime. Comme indiqué, il existe de nombreux documents plus anciens qui, en théorie, devraient changer (vous pouvez comparer cela au coût de la conversion des États-Unis au système métrique). Cette question et les réponses deviennent un bon rappel de la terminologie que nous DEVONS UTILISER.
Alan Campbell
@glglgl L'IEC et les autres les ont définis en 1998, mais ce n'est qu'en 2008 que les préfixes de l'IEC ont été incorporés dans le Système international de quantités. J'ai légèrement mis à jour la réponse.
Adam Davis
10

Dans le contexte des capacités de mémoire, MB signifie souvent 1024 Ko (au lieu de 1000 Ko). Vous pouvez utiliser MiB afin d'éviter toute ambiguïté.

fromage blanc
la source
Cela dit, j'ai entendu certains fabricants de disques durs utiliser 1000. C'est parfois très boueux, mais il devrait vraiment être 1024.
DKNguyen
1

Les pouvoirs séculaires de 2 vs pouvoirs de 10 débat. Les entreprises ont perdu des millions dans des poursuites judiciaires. Les préfixes binaires vs décimaux vous faisant perdre 24 bits par kilo s'additionnent vraiment en giga bits et octets. C'est pourquoi mon disque dur de 120 Go (évaluation du fabricant) n'a que 115,8 Go environ (écran d'ordinateur)

http://en.m.wikipedia.org/wiki/Binary_prefix a une explication complète.

Passant
la source
2
N'oubliez pas les anciennes disquettes "1,44 Mo". Qui étaient 1,44 fois 1000 fois 1024 octets (1 474 560 octets). Double confusion!
un CVn du
1

Lorsque vous parlez de RAM, de ROM ou de tout ce qui est connecté de quelque manière que ce soit aux bus d'un CPU:

  • Un kilobit correspond à 1024 bits.

  • Un mégabit équivaut à 1024 kilobits.

  • 4 mégabits soit 4096 kilobits.

  • 4096 kilobits est 4194304 bits.

  • Un octet fait 8 bits.

  • 4194304 bits est 524288 octets

  • Un kilo-octet correspond à 1024 octets

  • 524288 octets est de 512 kilo-octets.

C'est à cause de 2n.

Majenko
la source
2
Googler "4 mégabits en kbit" me donne 4000 kilobits? Je pense que cette page wiki explique l'ambiguïté: en.wikipedia.org/wiki/Binary_prefix
Evert
5
La différence provient des fabricants de disques durs utilisant 1000 pour kilo / méga, etc. (pour agrandir les disques), tandis que tout le reste du stockage numérique utilise 1024. C'est uniquement pour lutter contre cette confusion que le Mibibyte etc. (MIllion BInary BYTEs) a été inventé.
Majenko
2
-1: à proprement parler, je ne dirais pas jusqu'à dire "un kilo-octet équivaut à 1024 octets" - cela peut être aussi bien 1000 octets (ISO / IEC80000 étant l'un des contextes) ou 1024 octets (usage courant, SI binaire ); en tant que tel, je ne peux être d'accord avec cette réponse que si vous incluez les informations de votre commentaire (kibibyte, etc.) dans la réponse elle-même. En outre, 1000 pour le kilo ne provient pas des OEM HD (bien que cela soit le plus courant pour eux) - il provient de la table de préfixe SI, qui est antérieure au CS et aux ordinateurs d'au moins un demi-siècle (ca. 1950-1960)
3
@vaxquis: Un demi-siècle est un euphémisme. «Kilo» dérive du mot grec ancien pour mille, précédant SI par des millénaires.
Marcks Thomas
3
@vaxquis SI ne définit pas d'octet ni de bit, donc l'utilisation du kilo avec eux n'est pas définie par lui. Il est plutôt défini par la norme JEDEC 100B.01.
Ruslan
1

Malheureusement, l'industrie informatique utilise les préfixes kilo et méga de manière incohérente.

La mémoire à semi-conducteur a tendance à avoir une puissance de deux tailles, car elle simplifie le mappage d'adresse. 1024 est proche de 1000, donc ceux qui travaillent avec la mémoire à semi-conducteurs ont commencé à utiliser le kilo pour signifier 1024. À mesure que les tailles de mémoire augmentaient, ils ont également commencé à utiliser méga pour signifier 1024 2 = 1048576 giga pour signifier 1024 3 = 1073741824 et ainsi de suite.

Sous ces définitions de kilo-octets et de mégaoctets, votre déclaration du fabricant correspond. 4 mégabits binaires équivalent à 4096 kilobits binaires équivalent à 512 kilo-octets binaires.


Cependant, d'autres parties de l'industrie informatique, en particulier les fabricants de disques durs et les concepteurs d'interfaces de communication, ont utilisé les préfixes SI dans leur sens d'origine. Les fabricants de supports flash de type disque avaient également tendance à suivre cette convention.

Certaines parties de l'industrie ont même mélangé les deux, par exemple une "disquette de 1,44 Mo" est en fait 1,44 * 1000 * 1024 = 1474560 octets

La CEI a essayé de réparer le gâchis en 1998 en introduisant des noms et une symbologie spécifiques pour les préfixes binaires, les noms sont formés en prenant les deux premières lettres du nom de l'unité SI et en ajoutant "bi", donc le kilo devient kibi, méga devient mebi et ainsi de suite. Pour les symboles, un "i" est ajouté, donc k devient ki, M devient Mi et ainsi de suite.

Cependant, ce n'est pas parce qu'une organisation de normalisation introduit une terminologie que les gens l'utilisent réellement. Au moins d'après mon expérience, il est encore beaucoup plus courant de voir le kilo, le méga etc. utilisés dans un sens binaire que de voir le kibi, le mébi, etc.

Peter Green
la source
1

Comme tout le monde l'a déjà expliqué, vous souffrez probablement d'un hack vieux d'un demi-siècle par IEC et al, qui continue de générer une énorme confusion. Plutôt que d'introduire une nouvelle unité de même dimensionnalité (ou un préfixe), ils ont redéfini le sens d'une autre unité (préfixe) largement utilisée, tout en n'établissant pas clairement quelle définition s'applique dans quel contexte.

En cas de problème spécifique, inspectez simplement les cartes mémoire comme mentionné.


Cependant, je vous exhorte à reconnaître un problème beaucoup plus général.
Le problème est que dire123 kB ne conduit pas de manière fiable à une compréhension limpide du côté du destinataire.

Il s'agit d'un héritage linguistique et d'une carence majeure en API du vocabulaire CS.

Que pouvons- nous faire pour résoudre ce problème?

Eh bien, devinez quoi: utilisez des préfixes binaires .
La signification de 123 kiBest 100% fiable et limpide.
La signification de 123 kiB (126.0 kB)est encore mieux.
Vous n'avez pas besoin d'être un historien CS juste pour transmettre de gros chiffres à quelqu'un.
Personne ne se soucie des entreprises, des disques durs, des organismes de normalisation, des déclarations de dépréciation, etc.
Ça ne vaut pas le coup. Utilisez simplement les mégaoctets binaires. Ils sont sans ambiguïté.

Il y a des gens qui ont réussi à le dire 32 kibihertzen 2002. Ils ont été entendus. Étonnamment pratique, hein?

Enfin, si vous refusez d'embrasser les préfixes binaires - vous aggravez le problème.
La seule stratégie avec laquelle nous pouvons tous coopérer pour désamorcer et corriger ce fichu bug linguistique est de déprécier l'ambiguïté et de passer en kibi ... secondes (pourquoi pas?) Et à d'autres bi-unités.

ulidtko
la source
1
Hou la la! Je dois me rappeler d'utiliser kibihertz davantage!
pipe