Pomyłka z pojemnością pamięci (moc 10 i 2) [duplikat]

23

Spojrzałem na dysk twardy i znalazłem dokument (firmy Toshiba, link: 2,5-calowy dysk twardy SATA mq01abdxxx ), który mówi:

„Jeden gigabajt (1 GB) oznacza 10 ^ 9 = 1 000 000 000 bajtów przy użyciu mocy 10. Komputerowy system operacyjny zgłasza jednak pojemność pamięci przy użyciu mocy 2 dla definicji 1 GB = 2 ^ 30 = 1 073 741 824 bajtów, a zatem pokazuje mniej pamięci Pojemność."

Wtedy potęgi 10 są większe niż potęgi 2, OK.

Przykład 10 ^ 2 = 100 i 2 ^ 2 = 4.

Ale nie rozumiem dokumentu, który mówi o tej samej pojemności:

1 GB to 1 000 000 000 bajtów (moc 10) i 1 073 741 824 bajtów (moc 2), a następnie: pokazuje mniejszą pojemność pamięci (moc 2). Dlaczego jest mniej? Jeśli widzę dla 1 GB większej pojemności pamięci przy potęgach 2 niż potęgach 10.

nauka programowania
źródło
13
„Dlaczego jest mniej? Jeśli widzę dla 1 GB większej pojemności w potęgach 2 niż potęgach 10.” Twoja wysokość w calach daje mniejszą liczbę niż ta sama wysokość w centymetrach, tylko dlatego, że istnieje większa „pojemność” w calach niż w centymetrach. Tak więc, aby stała wartość mogła wyrazić: im większa jednostka, tym mniejsza liczba.
Kamil Maciorowski
4
Jego nie mniej, ta sama wartość, reprezentowana przez dwie różne podstawy.
Ramhound
2
Nie można po prostu powiedzieć, że 10 ^ 2 - 100 i 2 ^ 2 = 4. Musisz obliczyć, jakie 100 będzie w bazie 2.
Ramhound
4
„Komputerowy system operacyjny” - mój nie ... Lub w rzeczywistości używa MB (base10) w GUI, ale MiB (base2) w CLI. Żeby było ciekawie.
marcelm
2
Mówią, że „moce 10” są mniejsze niż moce o podobnej wielkości 2. Np. 1000 (10 ^ 3) <1024 (2 ^ 10). I 1000000 (10 ^ 6) <1048576 (2 ^ 20). Tak więc dla producenta napędu 1 dysk twardy o pojemności 1 terabajta ma (co najmniej) 1 000 000 000 bajtów (a właściwie trochę więcej), podczas gdy dla narzędzia systemu operacyjnego raportującego na powierzchni 1 terabajta jest 1,099,511,627,776 bajtów. System operacyjny zgłosi dysk twardy o pojemności 1 TB jako 931 GB lub nieco więcej. (A może nie, patrz @marcelm powyżej.)
davidbak

Odpowiedzi:

58

Historycznym powodem użycia mocy 2 jest to, że procesor uzyskuje dostęp do pamięci i dysku twardego za pomocą przestrzeni adresowej złożonej z wierszy kodu binarnego. Producenci sprzętu zdecydowali o nazwach w ten sposób:

2^10 = 1024 and as it's almost 1000 then call it 1 Kilobyte

2^20 = 1048576 bytes and as it's almost 1000000 then call it 1 Megabyte

Dla zwykłego użytkownika jest to nonsens i kłopotliwe. Ponadto przedrostki „kilo”, „mega” itp. Wchodzą w konflikt ze standardem Międzynarodowego Systemu Jednostek (SI), w którym „1 kilowat” oznacza 10 ^ 3 lub 1000 watów.

Aby rozwiązać problem, w 2000 r. Międzynarodowa Komisja Elektrotechniczna lub IEC zaproponowała schemat notacji dla jednostek opartych na mocach 2 na normie ISO / IEC 80000-13 .

Nowe nazwy zostały utworzone przez zastąpienie drugiej sylaby w starej nazwie słowem „bi” (odnoszącym się do „2”). Kilobajt musi być teraz w kibibyte i tak dalej. Nowe jednostki również otrzymały odpowiednie symbole, więc „10 kibibajtów” jest teraz zapisywane jako 10 KiB zamiast 10 kB . To jest tabela korespondencji:

Notation      Symbol    Value
1 kilobyte    1 kB      10^3  = 1000 bytes
1 megabyte    1 MB      10^6  = 1000000 bytes
1 gigabyte    1 GB      10^9  = 1000000000 bytes
1 terabyte    1 TB      10^12 = 1000000000000 bytes


1 kibibyte    1 KiB     2^10 = 1024 bytes
1 mebibyte    1 MiB     2^20 = 1048576 bytes
1 gibibyte    1 GiB     2^30 = 1073741824 bytes
1 tebibyte    1 TiB     2^40 = 1099511627776 bytes

16 lat później wielu dostawców sprzętu i oprogramowania nadal odnosi się do jednostek base-2 z ich nazwami SI . „Megabajt” może oznaczać 1000000 bajtów lub 1048576 bajtów.

W przypadku zakupu dysku twardego o pojemności 100 GB pojemność wynosi 100x10 ^ 9 lub 10 ^ 11 bajtów. Ale i to jest duże, ale system operacyjny zgłosi tylko, że dysk ma pojemność 93 GB (10^11)/(2^30). Kupiłeś 100 gigabajtowy dysk, który jest odpowiednikiem 93 gibibyte napędu. System operacyjny korzysta z niewłaściwej notacji.

Producenci napędów ukrywają ten problem za pomocą zastrzeżeń i wyjaśnień, które zawsze prowadzą do wniosku, że „rzeczywista sformatowana pojemność może być mniejsza”.

jcbermu
źródło
1
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
Journeyman Geek
21

W skrócie: chodziło o marketing.

jcbermu wyjaśnił dobrze, ale nie zgadzam się z powodami tego wszystkiego.

Podczas gdy dowolny system informatyczny korzysta z systemu binarnego, bity i bajty są zapisywane jako ^ 2, co jest normalne. Więc to nie system operacyjny ani oprogramowanie są winne zamieszania. Tutaj wszystko jest binarne.

Producentami dysków twardych jest określenie pojemności dysków twardych w systemie ^ 10, co pozbawia cię praktycznych GB. Dysk twardy o pojemności 20 GB będzie w stanie pomieścić 18 GB i tak dalej ... Dysk o pojemności 1 TB będzie miał pojemność ~ 930 GB. Kpina „bibajtów” została wymyślona, ​​aby zapobiec niektórym nieporozumieniom, ale zupełnie nie została praktycznie przyjęta.

Overmind
źródło
10
Jest tak, ponieważ bajty na dysku „zostały rozliczone po wysyłce”.
davidbak
2
Prawdziwe. Nigdy nie słyszałem, żeby ktoś powiedział „Uaktualniłem do 16 gibi RAM”. Nie sądzę, że producenci są odpowiedzialni za bałagan, ale na pewno na tym zyskują. W latach 80. i 90. użytkownicy komputerów wiedzieli, jaka jest różnica między kilogramem a kilobajtem i dlaczego. Kto wie, że komputery działają na arytmetyki binarnej?
Crowley,
4
Nie chodzi o marketing i nigdy nim nie był. Dyski twarde i dyskietki zawsze były sprzedawane przy użyciu prawdziwego prefiksu SI, ponieważ nigdy nie miało sensu używać innej bazy.
rura
1
-1, okropne. It's the fault of HDD manufacturers to state the HDD capacities in ^10 system, which robs you of quite some practical GB.Nie, żadna z tych rzeczy nie jest prawdą. Producenci HD robią to od samego początku, wykorzystując rzeczywistą, prawidłową definicję jednostek. To nie ich wina, że ​​programiści, producenci pamięci i ktokolwiek inny niewłaściwie korzystał z jednostek SI. I oczywiście, w jakiej jednostce mierzona jest przestrzeń dyskowa, „nie pozbawia cię praktycznego GB” ani nie zmienia w żaden sposób pojemności.
HopelessN00b
1
@pipe: dyskietka 720 KB zawiera dokładnie 1440 bloków po 512 bajtów każdy. Podobnie w przypadku innych rozmiarów mierzonych w KB. O ile mi wiadomo, najczęstszym znaczeniem „MB” z magnetycznym nośnikiem danych było 1024 000 bajtów, co czyni dyskietkę 1,44 MB dokładnie dwa razy większą niż 720 KB.
supercat
16

Odpowiedź jcbermu jest dobra, ale chcę podejść do tego z innej perspektywy.

1 GB to 1 000 000 000 bajtów (moc 10) i 1 073 741 824 bajtów (moc 2), a następnie: pokazuje mniejszą pojemność pamięci (moc 2). Dlaczego jest mniej? Jeśli widzę dla 1 GB większej pojemności pamięci przy potęgach 2 niż potęgach 10.

Nośnik pamięci - dowolny nośnik danych - może przechowywać określoną liczbę dostępnych bitów. Zwykle w obliczeniach ogólnego przeznaczenia wyraża się go w bajtach lub kilku wielokrotnościach bajtów, ale jeśli zaczniesz patrzeć na przykład na układy scalone pamięci (układy scalone, układy scalone), zobaczysz ich pojemność wyrażoną w kategoriach dostępnych bitów.

Dysk twardy będzie przechowywał określoną liczbę bitów lub bajtów, które ze względów technicznych są adresowane w kategoriach sektorów. Na przykład dysk o pojemności 4 TB może mieć 7,814,037,168 sektorów po 512 bajtów każdy, co daje pojemność do przechowywania 4 000 778 030 016 bajtów. Właśnie to dostajesz. (W praktyce tracisz część tego na informacje księgowe komputera: system plików, dziennik, partycjonowanie itp. Jednak bajty nadal tam są, po prostu nie możesz ich użyć do przechowywania plików, ponieważ są one potrzebne do przechowywania dane, które skutecznie pozwalają przechowywać pliki).

Oczywiście liczba 4 778 030 016 jest nieco niewygodna. Z tego powodu postanowiliśmy przedstawić te informacje w inny sposób. Ale jak ilustruje jcbermu, wybieramy to na dwa różne sposoby: w potęgach dziesięciu lub potęgach dwóch.

W potęgach dziesięciu 4.000.787.030.016 bajtów wynosi 4.000787030016 * 10 ^ 12 bajtów, co ładnie się zaokrągla; z czterema cyframi znaczącymi zaokrągla się do 4.001 TB, dla definicji SI „tera”: 10 ^ 12. Nasz dysk twardy może przechowywać więcej niż 4 * 10 ^ 12 bajtów, więc w ujęciu SI jest to 4-terabajtowe urządzenie magazynujące.

W potęgach dwóch 4 000 778 030 016 bajtów wynosi 3,638694607 * 2 ^ 40 bajtów, co nie jest tak dobre. To też wygląda jak mniejsza ilość, bo 3,639 jest mniejsza niż 4.001, a to jest złe dla marketingu (który chce kupić dysk 3,6 TB, gdy producent sprzedaje obok dysku 4,0 TB w tej samej cenie?). Jest to binarny przedrostek 3.6 „tebibajty”, gdzie „bi” oznacza, że ​​jest to podstawowa ilość.

W rzeczywistości jest to jednak dokładnie taka sama liczba bajtów; liczba jest wyrażona tylko inaczej! Jeśli powtórzysz matematykę, zobaczysz, że 3,638694607 * 2 ^ 40 = 4.000787030016 * 10 ^ 12, więc w końcu otrzymasz taką samą pojemność.

CVn
źródło
1
Dobrze wyjaśnione, ale liczba sektorów (np. 7,8 [...] w twoim przykładzie) jest wybierana przez producentów, aby wydajność osiągnęła pożądaną wartość. Mogą po prostu stworzyć 8 miliardów sektorów, 8589934592 lub dowolną inną liczbę, aby uzyskać prawdziwą wartość pojemności, ale to nie jest dobre dla biznesu. Ponieważ różnica jest technicznie możliwa, jako producent zrobiłbym duży hit rynkowy: logo TrueCapacity (r) lub TrueSpace (r) i jest gwarantowane, że sprzedaż wzrośnie z powodu tego manewru marketingowego, a inni producenci muszą podążać (i byłoby to nieprzygotowane).
Overmind
@Overmind: To jedna z możliwych technik marketingowych. Podobne do Aerial Communications, które rozliczały się za sekundę (zanim T-Mobile je wykupił). Gdybyś był odpowiedzialny za marketing producenta urządzeń pamięci masowej, zgaduję, że ta strategia może być tą, którą zdecydujesz się rozważyć.
TOOGAM
Znalazłem tę odpowiedź, aby zapewnić mi największą jasność (być może). Więc nie ma potrzeby, aby była to potęga 2? Nie ma nic specjalnego w tym, że większość rozmiarów nośników ma moc 2?
Abdul
1
@Abdul Większość (konsumenckich) urządzeń pamięci ma pojemności dostępne dla użytkownika, które nie są , pod względem bajtów (lub domyślnie także bitów), siłą dwóch. Jak wspomniano powyżej w Overmind, dokładne pojemności dysków twardych można wybierać losowo, o ile spełniają one wymagania dotyczące znakowania. Dyski SSD mają tendencję do zbliżania się do 2 ^ n, ponieważ układy pamięci flash są wykonane w rozmiarach, które często są w całych potęgach dwóch (ponieważ mają linie adresowe i takie rzeczy, co stanowi tę zaletę), ale z powodu przeładowania nie cała pojemność flasha będą dostępne z oprogramowania zewnętrznego do wbudowanego kontrolera flash.
CVn
5

Inne odpowiedzi dotyczyły historycznej przyczyny różnicy, ale wydaje mi się, że pytasz o różnicę zgodnie z matematyką.

Masz rację, że jedna potęga 10 jest większa niż jedna potęga 2, i odwrotnie, jeden gigabajt (10 ^ 9 bajtów) jest mniejszy niż jeden gibibajt (2 ^ 30 bajtów).

Odwrócenie rozmiarów tłumaczy się tym, że w jednym gibibajdzie (30 mocy) jest więcej mocy niż w jednym gigabajcie (9 mocy). Okazuje się, że liczba mocy ma większy wpływ na ostateczny rozmiar niż wielkość każdej indywidualnej mocy.

Co do tego, dlaczego zgłaszany rozmiar dysku jest mniejszy przy pomiarze w gibibajtach (2 ^ 30) niż przy pomiarze w gigabajtach (10 ^ 9), to naturalne, że przy pomiarze stałej wielkości większa jednostka miary daje mniejszą liczbę . Weźmy na przykład wysokość w calach i wysokość w centymetrach. Ponieważ jeden cal jest większy niż jeden centymetr, ta sama wysokość będzie mierzyć mniej cali (np. 72 cale) niż centymetry (np. 183 centymetry). Wysokość jest w obu przypadkach taka sama fizyczna odległość, ale każdy pomiar podaje inną liczbę zgodnie z jednostką miary.

Edward Peek
źródło