4 МБит! = 512 КБ?


8

Я работаю с микроконтроллером Fujitsu и думаю, что немного устала от следующих деталей, поэтому я задаю этот вопрос. У меня есть следующие характеристики:

  • 4-битная флэш-память
  • Встроенный продукт: MB90F345E (S), MB90F345CE (S)
  • объем: 512 кбайт / 256 слов
  • Конфигурация сектора: 64K × 6 + 32K × 2 + 16K × 2 + 8 K × 4
  • Выделенный банк: F8H к банку FFH

Кажется, они волшебным образом создают 12 Кбайт дополнительной памяти ПЗУ? Какую причуду я здесь пропускаю?


7
512 Кбайт = 512 * 8 Кбит = 4096 Кбит = 4 Мбит
Джон Дворак

Поиск в Google: «512 кб в мегабит» дает мне 512 кб = 4,096 Мбит. И это округляется до 4 Мбит?
Эверт

4
Попробуйте вместо этого прибегнуть к помощи "512 киб в мибит".
ФГБ

3
В техническом контексте кбайты и M-биты обычно означают то, что следует избегать двусмысленности, называемой кибибайтами и мебибитами
njzk2

3
Также обратите внимание, что в техническом контексте существует очень большая разница между Bи b. На самом деле в названии написано «4 мегабита! = 512 килобит?», Что, конечно, не имеет смысла. Что вам нужно, так это то, 4 Mbit != 512 KB?что имеет больше смысла, в зависимости от того, используете ли вы двоичные или десятичные префиксы.
CVn

Ответы:


16

Если вы посмотрите на карту памяти, на самом деле есть 524 288 байт ПЗУ, что составляет 512 КБ (где «К» относится к 1024, а не 1000) - кстати, я получил это путем вычитания начального адреса 0xF8000 из конечного адреса 0xFFFFFF и добавления один.

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

Это 4М (где М = 1024 * 1024 = 1 048 576, а не 106 = 1 000 000).

Обычно довольно ясно, что происходит из контекста, так что это редко вызывает путаницу (особенно, когда кажется, что памяти больше, чем вы ожидали), однако емкость диска потребителя является печально известным примером использования «маркетинговых» единиц, которые делают продукт более привлекательным. благоприятно примерно на 5-10%.

Редактировать: Как уже упоминали различные специалисты по предписаниям, существуют «официальные» подразделения, такие как MiB, которые должны избавиться от неоднозначности, однако, поскольку их практически никто не использует, я думаю, что в большинстве случаев они, скорее всего, вызовут больше путаницы (и, очевидно, авторы таблицы данных чувствовали сюда). Речь идет о правильной интерпретации того, что было написано в листе данных, а не о том, какую терминологию вы должны использовать при написании таблицы данных самостоятельно.


2
+1, всегда смотрите на карту памяти (или ищите статистику без «k» или «M»), если вам нужно точно знать, что происходит (параметры памяти разнесены не на 10%, а в 2 раза). «60k» во многих микро - это не 60 * 1024, а часто где-то между 60000 и 61440, потому что часть из 1440 занята регистрами HW.
Ник Т

@NickT Да, и иногда может быть «дыра», где есть отображение ввода-вывода, RAM или что-то еще.
Спехро Пефхани

14

Первые компьютерные инженеры предпочли принять и адаптировать префиксные модули SI к своим подсчетам данных. Это те же префиксы, но они рассчитываются с использованием двоичного, а не метрического. Поскольку 2 ^ 10 близко к 10 ^ 3, то каждый префикс SI, обычно увеличивающий количество на 10 ^ 3, вместо этого означает увеличение на 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%

Они были приняты как часть стандартов JEDEC.

Это имеет ряд преимуществ, так как большая работа в этой области происходит с степенями 2. Однако, как вы можете видеть, они расходятся с метрикой, и поскольку мы сейчас имеем дело с большими объемами памяти, где разница между этими двумя значениями значительно отличается, проблема была решена IEC и NIST. Они различают две системы путем изменения двоичного префикса:

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

Впервые они были стандартизированы в 1998 году и приняты в Международную систему количеств в 2008 году, но их внедрение происходит медленно, и все еще существуют компании, создающие новые документы с использованием старого стандарта. Там, где компании переключились, они обнаружили, что пользователи запутались, а некоторые снова переключились на старый стиль.

Таким образом, используя более старый стандарт, 4Mb составляет 4 * 2 ^ 20 бит, что эквивалентно 512 * 2 ^ 10 байтов.

Представленный в более новом стандарте, он вместо этого будет 4Mib = 512 кБ, предполагая, что «b» - это биты, а «B» - это байты.


В соответствии с этим он был стандартизирован в 1998 году.
glglgl

1
Это может быть стандартом, но всем это нравится. Как уже отмечалось, существует множество старых документов, которые, по идее, компании должны изменить (это можно сравнить со стоимостью перехода США на систему Metric). Этот вопрос и ответы становятся хорошим напоминанием о том, какую терминологию мы ДОЛЖНЫ использовать.
Алан Кэмпбелл

@glglgl МЭК и другие определили их в 1998 году, но только в 2008 году префиксы МЭК были включены в Международную систему количеств. Я немного обновил ответ.
Адам Дэвис

10

В контексте объема памяти МБ часто означает 1024 КБ (вместо 1000 КБ). Вы можете использовать MiB , чтобы избежать двусмысленности.


Тем не менее, я слышал, что некоторые производители жестких дисков используют 1000. Иногда это действительно грязно, но на самом деле должно быть 1024.
DKNguyen

1

Вековые полномочия 2 против полномочий 10 дебатов. Компании потеряли миллионы в судебных процессах по этому поводу. Двоичные и десятичные префиксы, приводящие к потере 24 бит на килограмм, действительно складываются в гигабитные биты и байты. Вот почему мой жесткий диск 120 ГБ (рейтинг производителя) имеет только 115,8 ГБ или около того (дисплей компьютера)

http://en.m.wikipedia.org/wiki/Binary_prefix имеет полное объяснение.


2
Не забудьте старую рабочую лошадку "1,44 МБ". Которые были в 1,44 раза 1000 раз по 1024 байта (1 474 560 байтов). Двойная путаница!
CVn

1

Говоря об ОЗУ, ПЗУ или о чем-либо, что каким-либо образом связано с шинами ЦП:

  • Один килобит составляет 1024 бита.

  • Один мегабит составляет 1024 килобита.

  • 4 мегабита это 4096 килобит.

  • 4096 килобит это 4194304 бит.

  • Один байт составляет 8 бит.

  • 4194304 бит - это 524288 байт

  • Один килобайт составляет 1024 байта

  • 524288 байт - это 512 килобайт.

Это все из-за 2n,


2
Поиск в Google "4 мегабита в кбит" дает мне 4000 килобит? Я думаю, что эта вики-страница объясняет неоднозначность: en.wikipedia.org/wiki/Binary_prefix
Evert

5
Разница заключается в том, что производители жестких дисков используют 1000 для килограмм / мегабайт и т. Д. (Чтобы диски выглядели больше), в то время как все остальное, что касается цифрового хранилища, использует 1024. Это чисто для борьбы с этой путаницей, когда были изобретены Mibibyte и т. Д. (MIllion BInary BYTE).
Majenko

2
-1: строго говоря, я бы не сказал, что «один килобайт равен 1024 байта» - это может быть также 1000 байтов (одним из контекстов является ISO / IEC80000) или 1024 байта (обычное использование, двоичный SI ); поэтому я не могу согласиться с этим ответом, если вы не включите информацию из вашего комментария (кибибайт и т. д.) в сам ответ. Кроме того, 1000 за килограмм не от OEM-производителей HD (хотя это наиболее распространено для них) - это из таблицы префиксов SI, которая предшествует современным CS и компьютерам как минимум на полвека (около 1950-1960)

3
@vaxquis: Полвека - это преуменьшение. «Кило» происходит от древнегреческого слова «тысяча», предшествующего СИ тысячелетиями.
отмечает Томас

3
@vaxquis SI не определяет ни байт, ни бит, поэтому использование килограмма с ними им не определено. Вместо этого он определен стандартом JEDEC 100B.01.
Руслан

1

К сожалению, компьютерная индустрия использует кило и мега префиксы непоследовательно.

Полупроводниковая память имеет мощность двух размеров, потому что упрощает сопоставление адресов. 1024 близка к 1000, поэтому те, кто работает с полупроводниковой памятью, начали использовать килограммы для обозначения 1024. По мере увеличения размеров памяти они также начали использовать мегапиксели для обозначения 1024 2 = 1048576 гигабайт для обозначения 1024 3 = 1073741824 и так далее.

Согласно этим определениям килобайт и мегабайт, ваше заявление производителей совпадает. 4 двоичных мегабита равны 4096 двоичным килобитам равны 512 двоичным килобайтам.


Однако другие части компьютерной индустрии, в частности производители жестких дисков и разработчики интерфейсов связи, использовали префиксы SI в их первоначальном значении. Производители дисковых флэш-носителей также придерживались этого соглашения.

Некоторые отрасли промышленности даже смешали их, например, «дискета 1,44 МБ» фактически 1,44 * 1000 * 1024 = 1474560 байт

В 1998 году МЭК попыталась исправить путаницу, введя конкретные имена и символы для двоичных префиксов, имена формируются путем взятия первых двух букв имени единицы СИ и добавления «би», поэтому килограмм становится киби, мега становится Меби и так далее. Для символов добавляется «i», так что k становится ki, M становится Mi и так далее.

Однако то, что организация по стандартизации вводит терминологию, не означает, что люди действительно ее используют. По крайней мере, по моему опыту, кило, мега и т. Д. Используются в двоичном смысле гораздо чаще, чем киби, мэби и т. Д.


1

Как и все остальные уже объяснила, вы , вероятно , страдаете от halfcentury старого хака МЭКА и др, который продолжает порождать массовую путаницу. Вместо того, чтобы вводить новую единицу измерения той же размерности (или префикса), они переопределяли значение другой широко используемой единицы (префикса), в то же время не имея четкого определения, какое определение применяется в каком контексте.

В случае вашей конкретной проблемы, просто проверьте карты памяти, как указано.


Тем не менее, я призываю вас, ребята, признать гораздо более общую проблему.
Проблема состоит в том, что высказывание 123 kBне ведет к кристально ясному пониманию со стороны получателя.

Это лингвистическое наследие и серьезный недостаток API в словаре CS.

Что мы можем сделать, чтобы решить это?

Ну, угадайте, что: использовать двоичные префиксы .
Значение 123 kiBявляется на 100% надежно кристально чистой.
Значение 123 kiB (126.0 kB)даже лучше.
Вы не должны быть историком CS, просто чтобы передать кому-то большие цифры.
Никого не волнуют компании, жесткие диски, органы стандартизации, заявления об устаревании и так далее, и так далее.
Это того не стоит. Просто используйте двоичные mebibytes. Они являются однозначными.

Есть люди, которые успешно говорили 32 kibihertzв 2002 году. Их услышали. Удивительно удобно, а?

Наконец, если вы отказываетесь использовать бинарные префиксы - вы усугубляете проблему.
Единственная стратегия, с которой мы все можем сотрудничать, чтобы деэскалировать и исправить эту чертову лингвистическую ошибку, - это устранить двусмысленность и переключиться на киби ... секунды (почему нет?) И другие би-единицы.


1
Вот Это Да! Я должен помнить, чтобы использовать кибихерц больше!
труба
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.