Pytanie:
4 MBit! = 512 kB?
Evert
2014-11-14 19:53:59 UTC
view on stackexchange narkive permalink

Pracuję z mikrokontrolerem Fujitsu i myślę, że jestem trochę zardzewiały w poniższych szczegółach, dlatego zadaję to pytanie. Mam następujące specyfikacje:

  • 4M-bitowa pamięć flash
  • Wbudowany produkt: MB90F345E (S), MB90F345CE (S)
  • objętość : 512 KB / 256 Kwords
  • Konfiguracja sektora: 64K × 6 + 32K × 2 + 16K × 2 + 8 K × 4
  • Przydzielony bank: F8H do banku FFH

Wydają się magicznie tworzyć 12 KB dodatkowej pamięci ROM? Jakie dziwactwo mi tu brakuje?

512 Kb = 512 * 8 Kbits = 4096 Kbits = 4 Mb
Googling: „512 kb na megabit” daje mi 512 kb = 4,096 Mb.I to jest zaokrąglane do 4 Mbits?
Zamiast tego spróbuj googlować „512 kib to mibit”.
W kontekście technicznym Kbajty i M-bit zwykle odnoszą się do tego, co ma uniknąć niejednoznaczności, nazywane kibibajtami i mebibitami
Zauważ także, że w kontekście technicznym istnieje bardzo duża różnica między „B” i „b”.Tytuł mówi tak naprawdę „4 megabity! = 512 kilobitów?”, Co oczywiście nie ma sensu.To, czego chciałeś, to `4 Mbit! = 512 KB?`, Co ma większy sens, w zależności od tego, czy używasz przedrostków binarnych, czy dziesiętnych.
@njzk2 „kilobajt” jest * już * niejednoznaczny.Dlatego istnieją przedrostki binarne.Dlatego najlepiej byłoby, gdyby wszyscy zaczęli interpretować ** „kilo-” jako prefiks dziesiętny ** zgodnie z SI i używać „kibi-”, gdzie mają na myśli przedrostek binarny;jest to jedyny sposób, aby uniknąć dalszej eskalacji niejasności.
Siedem odpowiedzi:
Spehro Pefhany
2014-11-14 20:20:05 UTC
view on stackexchange narkive permalink

Jeśli spojrzysz na mapę pamięci, w rzeczywistości jest 524288 bajtów pamięci ROM, czyli 512K (gdzie „K” oznacza 1024, a nie 1000) - przy okazji, otrzymałem to odejmując adres początkowy 0xF8000 od adresu końcowego 0xFFFFFF i dodanie jednego.

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

To 4M (gdzie „M” to 1024 * 1024 = 1048,576, a nie \ $ 10 ^ 6 \ $ = 1 000 000).

Zwykle jest całkiem jasne, co się dzieje z kontekstu, więc rzadko powoduje to zamieszanie (zwłaszcza gdy wydaje się, że jest więcej pamięci, niż się spodziewałeś), jednak pojemność dysku konsumenckiego jest znanym przykładem użycia „marketingu” jednostki, które sprawiają, że produkt wygląda korzystniej o około 5–10%.

Edytuj: Jak wspomnieli tutaj różni preskryptiści, istnieją "oficjalne" jednostki, takie jak MiB, które powinny pozbyć się niejasności, jednak ponieważ praktycznie nikt ich nie używa, myślę, że prawdopodobnie spowodowałyby więcej zamieszania w większości przypadków ( i oczywiście autorzy arkuszy danych tak myśleli). Pytanie dotyczy poprawnej interpretacji tego, co zostało napisane w arkuszu danych, a nie jakiej terminologii należy użyć podczas samodzielnego pisania arkusza danych.

+1, zawsze spójrz na mapę pamięci (lub znajdź statystykę bez "k" lub "M"), jeśli * potrzebujesz * dokładnie wiedzieć, co się dzieje (opcje pamięci nie są od siebie oddalone o 10%, ale o współczynniki 2).„60k” w wielu micros to nie 60 * 1024, ale często pomiędzy 60000 a 61440, ponieważ część z tych 1440 jest zajęta przez rejestry HW.
@NickT Tak, a czasami może pojawić się „dziura”, w której znajduje się mapowane pamięć we / wy, pamięć RAM lub coś innego.
Adam Davis
2014-11-15 00:00:49 UTC
view on stackexchange narkive permalink

Pierwsi inżynierowie komputerowi zdecydowali się przyjąć i dostosować jednostki przedrostków SI do liczby danych. Są to te same przedrostki, ale liczone są raczej w systemie binarnym niż metrycznym. Ponieważ 2 ^ 10 jest bliskie 10 ^ 3, to każdy przedrostek SI normalnie zwiększa kwotę o 10 ^ 3 zamiast tego odnosi się do wzrostu o 2 ^ 10:

  Prefiks Prefiks metryczny Prefiks binarny Różnica kilo 10 ^ 3 = 1000 2 ^ 10 = 1024 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%  

Zostały one przyjęte jako część standardów JEDEC.

Ma to szereg zalet, ponieważ dużo pracy w to pole występuje w potęgach 2. Jednakże, jak widać, odbiegają one od metrycznych, a ponieważ mamy teraz do czynienia z większymi ilościami pamięci, w których różnica między dwoma znacznie się różni, problem został rozwiązany przez IEC i NIST. Te dwa systemy rozróżniają, zmieniając przedrostek binarny:

  Prefiks Prefiks binarny kibi 2 ^ 10Mi mebi 2 ^ 20Gi gibi 2 ^ 30Ti tebi 2 ^ 40Pi pebi 2 ^ 50  

Zostały one po raz pierwszy ujednolicone w 1998 r. i przyjęte do Międzynarodowego Systemu Ilości w 2008 r., ale przyjęcie jest powolne i nadal istnieją firmy tworzące nowe dokumenty przy użyciu starego standardu. Tam, gdzie firmy się przełączały, stwierdzili, że użytkownicy są zdezorientowani, a niektórzy wrócili do starszego stylu.

Zatem przy użyciu starszego standardu 4 MB to 4 * 2 ^ 20 bitów, co odpowiada 512 * 2 ^ 10 bajtów.

W nowszym standardzie będzie to 4Mib = 512 kiB, zakładając, że „b” to bity, a „B” to bajty.

Zgodnie z [tym] (http://en.wikipedia.org/wiki/Mebibyte) został on ustandaryzowany w 1998 roku.
Może to standard, ale każdemu się to podoba.Jak już wspomniano, istnieje wiele starszej dokumentacji, która w teorii firmy powinna się zmienić (można to porównać do kosztu przejścia w USA na system Metric).To pytanie i odpowiedzi stają się dobrym przypomnieniem jakiej terminologii POWINIENEMY używać.
@glglgl IEC i inni zdefiniowali je w 1998 r., Ale dopiero w 2008 r. Przedrostki IEC zostały włączone do Międzynarodowego Systemu Ilości.Zaktualizowałem nieco odpowiedź.
Curd
2014-11-14 20:20:29 UTC
view on stackexchange narkive permalink

W kontekście pojemności pamięci MB często oznacza 1024KB (zamiast 1000K). Możesz użyć MiB, aby uniknąć niejednoznaczności.

To powiedziawszy, słyszałem, że niektórzy producenci dysków twardych używają 1000. Czasami jest to naprawdę błotniste, ale naprawdę powinno być 1024.
Majenko
2014-11-14 20:21:42 UTC
view on stackexchange narkive permalink

Mówiąc o pamięci RAM, ROM lub czymkolwiek innym podłączonym w jakikolwiek sposób do magistrali procesora:

  • Jeden kilobit to 1024 bity.

  • Jeden megabit to 1024 kilobity.

  • 4 megabity to 4096 kilobitów.

  • 4096 kilobitów to 4194304 bitów.

  • Jeden bajt to 8 bitów.

  • 4194304 bity to 524288 bajtów

  • Jeden kilobajt to 1024 bajty

  • 524288 bajtów to 512 kilobajtów.

To wszystko dzięki \ $ 2 ^ n \ $.

Wygooglowanie „4 megabity na kbit” daje mi 4000 kilobitów?Myślę, że ta strona wiki wyjaśnia tę niejednoznaczność: http://en.wikipedia.org/wiki/Binary_prefix
Różnica wynika z tego, że producenci dysków twardych używają 1000 dla kilo / mega itd. (Aby dyski wyglądały na większe), podczas gdy wszystko inne, jeśli chodzi o pamięć cyfrową, używa 1024. Jedynie w celu zwalczania tego zamieszania wymyślono Mibibyte itp. (MIllion BInary BYTE).
-1: ściśle mówiąc, nie powiedziałbym, że „jeden kilobajt to 1024 bajty” - może to być również 1000 bajtów (jednym z kontekstów jest ISO / IEC80000) lub 1024 bajty (powszechne użycie, binarne SI);w związku z tym nie mogę zgodzić się z tą odpowiedzią, chyba że w samej odpowiedzi zawrzesz informacje z Twojego komentarza (kibibajt itp.).Poza tym 1000 za kilogram nie pochodzi od producentów OEM HD (choć jest u nich najczęściej) - pochodzi z tabeli przedrostków SI, która wyprzedza dzisiejsze CS i komputery o co najmniej pół wieku (ok. 1950-1960).
@vaxquis: Pół wieku to mało powiedziane.„Kilo” wywodzi się ze starogreckiego słowa oznaczającego tysiąc, poprzedzającego SI o tysiąclecia.
@MarcksThomas to bardzo dobra uwaga, chociaż powiedziałem tylko, że * tabela prefiksów SI wyprzedza obecny CS o co najmniej pół wieku * i że jej obecne użycie metryki pochodzi z SI - tj. Że cała sekwencja przedrostków SI używana w CS (kilo, mega, giga, tera itp.) są co najmniej tak stare, nie znaczy to, że poszczególne przedrostki nie były używane wcześniej - masz oczywiście rację, że kilogram jako słowo oznaczające tysiąc ma rzeczywiście tysiąclecia, ale nie był używany jakoprzedrostek przed ok.1800 - i jest to wyjątkowy przypadek, ponieważ większość innych przedrostków - w tym „mega” - to znacznie późniejsze wynalazki.
@vaxquis SI nie definiuje bajtu ani bitu, dlatego użycie kilograma z nimi nie jest przez niego zdefiniowane.Zamiast tego jest zdefiniowany w standardzie JEDEC 100B.01.
... I pedanci znów uderzają ...!Dlatego tak bardzo lubię tę stronę.
@Majenko-notGoogle Właściwie to tylko pamięć RAM była historycznie sprzedawana z prefiksami opartymi na 2 ^ 10.Oprócz kilku wartości odstających, pamięć fizyczna tradycyjnie opierała się na 10 ^ 3 (i oczywiście są też dziwne rzeczy, takie jak dyskietki „1,44 MB”, które miały 1440 KB).
@everyone Kogo to obchodzi?Żaden z tych gofrów nie ma najmniejszego wpływu na odpowiedź na pytanie.Jeśli chcesz dalej mówić o tych wszystkich bzdurach, zrób to w odpowiedzi na pytanie "jaka jest różnica między 1 GB miejsca na dysku twardym a 1 GB pamięci RAM?"
@Ruslan tak, dokładnie, cieszę się, że to zauważyłaś, jestem dziś zbyt zmęczona, żeby zauważyć takie rzeczy;tak się dzieje, gdy nie trzykrotnie się nie sprawdza, co pisze ... Miałem na myśli JEDEC zamiast SI, w przeciwieństwie do specyfikacji IEC.OTOH, trochę mylisz się mówiąc, że „użycie kilograma z nimi nie jest przez to zdefiniowane” - IEEE / SI * zajmuje się * tym, mówiąc (SI 10-1997) „Ta praktyka (2 ^ nprzedrostki) często prowadzi do nieporozumień i jest przestarzałe ”.
Passerby
2014-11-15 02:42:14 UTC
view on stackexchange narkive permalink

Debata między starymi potęgami 2 a potęgami 10. Firmy straciły miliony w procesach sądowych. Prefiksy binarne a przedrostki dziesiętne powodujące utratę 24 bitów na kilogram naprawdę sumują się w gigabitach i bajtach. Dlatego mój dysk twardy 120 GB (ocena producenta) ma tylko 115,8 GB (wyświetlacz komputera)

http://en.m.wikipedia.org/wiki/Binary_prefix ma pełne wyjaśnienie.

Nie zapomnij o starych dyskietkach "1,44 MB".Czyli 1,44 razy 1000 razy 1024 bajty (1474,560 bajtów).Podwójne zamieszanie!
ulidtko
2014-11-16 20:49:17 UTC
view on stackexchange narkive permalink

Jak wszyscy już wyjaśnili, prawdopodobnie cierpisz z powodu trwającego pół wieku włamania IEC i innych, który nadal wywołuje ogromne zamieszanie. Zamiast wprowadzić nową jednostkę o tej samej wymiarowości (lub przedrostku), przedefiniowali znaczenie innej powszechnie używanej jednostki (przedrostka), jednocześnie nie będąc w stanie jasno określić, która definicja ma zastosowanie w jakim kontekście .

W przypadku konkretnego problemu, po prostu przejrzyj mapy pamięci, jak wspomniano.


Jednak zachęcam Was do rozpoznania znacznie bardziej ogólnego problemu.
Problem polega na tym, że powiedzenie 123 kB nie prowadzi w wiarygodny sposób do krystalicznie czystego zrozumienia po stronie odbiorcy.

Jest to spuścizna językowa i główna wada API CS słownictwo.

Co my możemy zrobić, aby to rozwiązać?

Cóż, zgadnij, co: użyj przedrostków binarnych.
Znaczenie 123 kiB jest w 100% niezawodnie krystalicznie czyste.
Znaczenie 123 kiB (126,0 kB) jest jeszcze lepsze.
Nie musisz być historykiem CS tylko po to, aby przekazać komuś duże liczby.
Nikogo nie obchodzą firmy, dyski twarde, standartizat ciała jonowe, stwierdzenia dezaprobujące itp., itd.
To nie jest tego warte. Po prostu użyj binarnych mebibajtów. jednoznaczne.

osoby, które z powodzeniem mówią 32 kibihertz w 2002 roku. Zostali wysłuchani. Niezwykle wygodne, co?

Wreszcie, jeśli odmówisz stosowania przedrostków binarnych - pogorszysz problem.
Jedyną strategią, z którą wszyscy możemy współpracować w celu deeskalacji i naprawienia tego cholernego błędu językowego, jest rezygnacja z niejasności i przełączanie się do kibi ... sekund (dlaczego nie?) i innych jednostek dwudzielnych.

Łał!Muszę pamiętać o częstszym używaniu kibiherców!
Peter Green
2019-02-19 19:19:46 UTC
view on stackexchange narkive permalink

Niestety, przemysł komputerowy niekonsekwentnie używa przedrostków kilo i mega.

Pamięć półprzewodnikowa ma zwykle moc dwóch rozmiarów, ponieważ ułatwia to mapowanie adresów. 1024 jest bliskie 1000, więc osoby pracujące z pamięcią półprzewodnikową zaczęły używać kilogramów, aby mieć na myśli 1024. Wraz ze wzrostem rozmiarów pamięci zaczęli również używać mega do oznaczania 1024 2 = 1048576 giga na oznaczenie 1024 3 = 1073741824 i tak dalej.

Pod tymi definicjami kilobajtów i megabajtów oświadczenia producenta są zgodne. 4 binarne megabity to 4096 binarnych kilobitów to 512 binarnych kilobajtów.


Jednak inne sektory przemysłu komputerowego, w szczególności producenci dysków twardych i projektanci interfejsów komunikacyjnych, używali przedrostków SI w ich pierwotnym znaczeniu. Producenci nośników flash typu dyskowego również przestrzegali tej konwencji.

W niektórych branżach nawet te dwa elementy są mieszane, na przykład „dyskietka 1,44 MB” to w rzeczywistości 1,44 * 1000 * 1024 = 1474560 bajtów

IEC próbowała naprawić ten bałagan w 1998 roku, wprowadzając określone nazwy i symbolikę dla przedrostków binarnych, nazwy są tworzone przez wzięcie pierwszych dwóch liter nazwy jednostki SI i dodanie „bi”, więc kilo staje się kibi , mega staje się mebi i tak dalej. Do symboli dodaje się „i”, więc k staje się ki, M staje się Mi i tak dalej.

Jednak to, że organizacja normalizacyjna wprowadza terminologię, nie oznacza, że ​​ludzie faktycznie jej używają. Z mojego doświadczenia wynika, że ​​nadal znacznie częściej widzę kilogram, mega itp. Używane w sensie binarnym niż kibi, mebi itp.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...