Estou trabalhando com um microcontrolador Fujitsu e acho que estou um pouco enferrujado nos seguintes detalhes, é por isso que estou fazendo essa pergunta. Eu tenho as seguintes especificações:
- Memória flash de 4M bits
- Produto incorporado: MB90F345E (S), MB90F345CE (S)
- volume: 512 Kbytes / 256 Kwords
- Configuração do setor: 64K × 6 + 32K × 2 + 16K × 2 + 8 K × 4
- Banco alocado: banco F8H para FFH
Eles parecem criar magicamente 12K bytes de memória ROM extra? Que peculiaridade estou perdendo aqui?
microcontroller
rom
Evert
fonte
fonte
B
eb
. O que o título diz é realmente "4 megabit! = 512 kilobit?", O que obviamente não faz sentido. O que você queria é o4 Mbit != 512 KB?
que faz mais sentido, dependendo de você estar usando prefixos binários ou decimais.Respostas:
Se você olhar para o mapa de memória, existem 524.288 bytes de ROM, que são 512K (onde 'K' se refere a 1024, e não 1000) - btw, consegui subtrair o endereço inicial 0xF8000 do endereço final 0xFFFFFF e adicionar 1.
Isso é 4M (onde 'M' é 1024 * 1024 = 1.048.576, não106 = 1.000.000).
Geralmente, é bastante claro o que está acontecendo no contexto, então isso raramente causa confusão (especialmente quando parece haver mais memória do que o esperado), no entanto, a capacidade da unidade de disco do consumidor é um exemplo notório do uso de unidades de 'marketing' que fazem o produto parecer mais favorável em cerca de 5-10%.
Edit: Como vários prescritivistas aqui mencionaram, existem unidades "oficiais" como o MiB que devem se livrar da ambiguidade, no entanto, como praticamente ninguém as usa, acho que provavelmente causaria mais confusão na maioria dos casos (e, obviamente, os autores das folhas de dados sentiram dessa maneira). A questão é interpretar corretamente o que foi escrito em uma folha de dados, e não a terminologia que você deve usar ao escrever uma folha de dados.
fonte
Os primeiros engenheiros de computação optaram por adotar e adaptar unidades de prefixo SI às suas contagens de dados. Esses são os mesmos prefixos, mas contando usando binário em vez de métrico. Como 2 ^ 10 é próximo de 10 ^ 3, então cada prefixo do SI normalmente aumenta uma quantidade em 10 ^ 3, em vez disso, refere-se a um aumento de 2 ^ 10:
Estes foram adotados como parte dos padrões JEDEC.
Isso tem vários benefícios, já que muito trabalho nesse campo ocorre em potências de 2. No entanto, como você pode ver, eles divergem da métrica e, agora, estamos lidando com grandes quantidades de armazenamento, onde a diferença entre as duas diverge significativamente. O problema foi tratado pela IEC e pelo NIST. Eles diferenciam os dois sistemas alterando o prefixo binário:
Eles foram padronizados pela primeira vez em 1998 e adotados no Sistema Internacional de Quantidades em 2008, mas a adoção é lenta e ainda existem empresas criando novos documentos usando o antigo padrão. Onde as empresas mudaram, eles encontraram usuários confusos e alguns voltaram ao estilo antigo.
Assim, usando o padrão mais antigo, 4Mb são 4 * 2 ^ 20 bits, o que equivale a 512 * 2 ^ 10 bytes.
Representado no padrão mais recente, seria 4Mib = 512 kiB, assumindo que 'b' são bits e 'B' são bytes.
fonte
No contexto das capacidades de memória, MB geralmente significa 1024 KB (em vez de 1000 KB). Você pode usar o MiB para evitar ambiguidade.
fonte
Os poderes antiquíssimos de 2 vs os poderes de 10 debatem. As empresas perderam milhões em processos por causa disso. Prefixos binários vs decimais, fazendo com que você perca 24 bits por quilo, somam-se realmente em giga bits e bytes. É por isso que meu disco rígido de 120 gb (classificação do fabricante) possui apenas 115,8 gb (tela do computador)
http://en.m.wikipedia.org/wiki/Binary_prefix tem uma explicação completa.
fonte
Ao falar sobre RAM, ROM ou qualquer coisa conectada de alguma forma aos barramentos de uma CPU:
Um kilobit é 1024 bits.
Um megabit é 1024 kilobits.
4 megabits são 4096 kilobits.
4096 kilobits é 4194304 bits.
Um byte é de 8 bits.
4194304 bits são 524288 bytes
Um kilobyte é 1024 bytes
524288 bytes são 512 kilobytes.
É tudo por causa de2n .
fonte
Infelizmente, a indústria de computadores usa os prefixos de quilo e mega inconsistentemente.
A memória semicondutora tende a ter dois tamanhos, porque simplifica o mapeamento de endereços. 1024 é próximo de 1000, então aqueles que trabalham com memória semicondutora começaram a usar quilo para significar 1024. À medida que os tamanhos de memória aumentavam, eles também começaram a usar mega para significar 1024 2 = 1048576 giga para significar 1024 3 = 1073741824 e assim por diante.
Sob essas definições de kilobyte e megabyte, a instrução do fabricante corresponde. 4 megabits binários equivalem a 4096 kilobits binários iguais a 512 kilobytes binários.
No entanto, outras partes da indústria de computadores, em particular os fabricantes de discos rígidos e os designers de interfaces de comunicação, usaram os prefixos de SI em seus significados originais. Os fabricantes de mídia flash do tipo disco também tendem a seguir esta convenção.
Algumas partes da indústria até misturaram as duas, por exemplo, um "disquete de 1,44 MB" é na verdade 1,44 * 1000 * 1024 = 1474560 bytes
O IEC tentou consertar a bagunça em 1998 introduzindo nomes e simbologia específicos para os prefixos binários. Os nomes são formados pegando as duas primeiras letras do nome da unidade SI e acrescentando "bi", para que o quilo se torne kibi, o mega se torne mebi e assim por diante. Para os símbolos, um "i" é adicionado para que k se torne ki, M se torne Mi e assim por diante.
No entanto, apenas porque uma organização de padrões introduz a terminologia não significa que as pessoas realmente a usam. Pelo menos na minha experiência, ainda é muito mais comum ver quilos, mega etc usados em sentido binário do que ver kibi, mebi etc.
fonte
Como todo mundo já explicou, provavelmente você está sofrendo de uma halfcentury-old corte por IEC et al, que continua a gerar confusão enorme. Em vez de introduzir uma nova unidade da mesma dimensionalidade (ou prefixo), eles redefiniram o significado de outra unidade amplamente usada (prefixo), ao mesmo tempo em que não conseguiam estabelecer claramente qual definição se aplica em que contexto.
No caso de seu problema específico, basta inspecionar os mapas de memória conforme mencionado.
No entanto, peço a vocês que reconheçam um problema muito mais geral.
O problema é que dizer
123 kB
não leva a um entendimento claro e claro do lado do destinatário.Este é um legado linguístico e uma grande deficiência de API do vocabulário de CS.
O que podemos fazer para resolver isso?
Bem, adivinhe: use prefixos binários .
O significado de
123 kiB
é 100% claro e cristalino.Significado de
123 kiB (126.0 kB)
é ainda melhor.Você não precisa ser um historiador de CS apenas para transmitir grandes números a alguém.
Ninguém se importa com empresas, discos rígidos, organismos de padronização, declarações de depreciação e assim por diante.
Não vale a pena. Basta usar os mebibytes binários. Eles não são ambíguos.
Há quem diga com sucesso
32 kibihertz
em 2002. Eles foram ouvidos. Surpreendentemente conveniente, hein?Finalmente, se você se recusar a adotar prefixos binários - você piorará o problema.
A única estratégia com a qual todos podemos cooperar para desescalar e corrigir esse maldito erro lingüístico é depreciar a ambiguidade e passar para kibi ... segundos (por que não?) E outras bi-unidades.
fonte