Lær hvorfor 250 GB aldri rapporteres som 250 GB

Jeg setter alltid pris på det når en artikkel fører til en annen. Det gjør jobben min som teknisk skribent for TechRepublic så mye enklere. Mens jeg skrev den siste artikkelen, "Maksimer ytelsen til Microsoft Vista og Intel Matrix RAID: Del 2 , ble problemet med harddiskkapasiteten og hvordan det rapporteres i Windows støttet det stygge hodet.

Den artikkelen var ikke stedet å diskutere hvorfor min Samsung 750 GB harddisk bare viste 698, 6 GB i Windows. Som du vil se, er forklaringen litt mer komplisert enn du kanskje tror. I dette blogginnlegget ønsker jeg å møte temahodet på min egen uforlignelige måte.

Dette blogginnlegget er også tilgjengelig i PDF-format i en gratis nedlastning av TechRepublic.

Historien

Hvordan all denne galskapen startet, er en fascinerende spasertur nedover i historiene for datahistorien. Alle som i det hele tatt vet noe om datamaskiner, vet at datamaskiner bruker binære tall for å telle. Hver informasjonsbit som brukes av en datamaskin har en av to verdier, 0 eller 1, kalt biter - forkortelse for b inary grave dens . Åtte bits er kombinert for å lage en byte . Hensikten med minnet ( tabell A ) tilsettes vanligvis flere byte ved å doble dem fra 1 til 2 og deretter doble dem igjen ni ganger til vi når 1.024 byte.

Tabell A

Binære og desimalverdier opp til 1.024 desimaler

Problemet

Og det er 1.024 antall byte der historien og problemene våre begynner. Siden 1.024 er nær nok til 1.000, begynte alle å ringe 1.024 byte en kilobyte - kilo som SI eller metrisk prefiks som betyr 1000. Databransjen "lånte" SI-prefiksene og fortsatte å bruke dem selv om SI-standardene ble definert som bare desimalverdier i 1960. Det var så mye lettere å si 1K i stedet for ett tusen og tjuefire byte, eller 1.024 kilobyte. Dessuten så det ikke ut til at noen bryr seg om et smått lite byte avvik.

De fleste har nok hørt om Moore lov. Minne og lagringskapasitet har fulgt lignende veier til de store størrelsene og kapasitetene som er vanlige i dag. Min første datamaskin var en Northstar Horizon-mikrodatamaskin. Den hadde fire 16K S-100 RAM-kort for totalt 64K RAM.

Figur A

Dette Northstar 16K RAM-kortet har fire rader med åtte kolonner med 4.096-biters dynamiske MOS-minnebrikker som gir totalt 16 384 byte. Symbolet for kilobyte i 1978 var K og ikke den kjente KB som ble brukt i dag.

Figur B

Dette 1 GB SDRAM DIMM fra 2008 gir 1.073.741.824 byte minne eller 65.536 ganger mer minne enn Northstar 16K RAM-kortet produsert 30 år tidligere. 1024MB er tydelig merket på etiketten.

Tusenvis av byte ble snart til millioner av byte og nå til milliarder av bytes minne. Lagringskapasiteten måles nå i billioner byte.

Problemet er ikke bare at antall øker når kapasiteten vokser, men prosentvis forskjell øker også når du går fra MB til GB og GB til TB (se tabell B ). Forskjellen mellom de binære og desimalverdiene for 16K Northstar RAM-kortet er 2, 4%. Forskjellen mellom de binære og desimalverdiene for 1 GB SDRAM DIMM er 7, 37%.

Tabell B

Når kapasiteten øker, øker også prosentvise forskjeller mellom binære byte og desimalbyte.

Når forskjellen vokser, blir det mer og mer viktig at IT-fagfolk og teammedlemmene deres forstår nøyaktig hvilket antall som brukes.

Ta en titt på nettfora som diskuterer datamaskinemner, og du vil finne mange som spør hvorfor 750 GB-harddisken deres bare viser 698, 6 GB i Windows. Et "tap" på 51, 4 GB er ingen liten sak.

Forbrukerne trenger å vite nøyaktig hvor mange byte, desimal eller binær, de kan lagre på en stasjon før de kjøper. Avsnittet under "Detaljer" i denne SSD-annonsen er et utmerket eksempel på den typen full avsløring forbrukeren bør se. Tenk også på hvor forvirrende dette må være for den gjennomsnittlige forbrukeren.

Konverteringsfeil er elendig

Det er et mer alvorlig problem enn at forbrukere føler at de er blitt lurt av produsenter av harddisker.

En konverteringsfeil som ikke ble fanget før det var for sent, skjedde med Mars Climate Orbiter.

"MCO MIB har bestemt at grunnårsaken til tapet av MCO-romfartøyet var unnlatelsen av å bruke metriske enheter i kodingen av en programvarefil på bakken ...

"... På innføringen av Mars var romfartsbanen omtrent 170 kilometer lavere enn planlagt. Som et resultat ble MCO enten ødelagt i atmosfæren eller kom inn i heliosentrisk rom etter å ha forlatt Mars 'atmosfære.

"... impulsbitdataene i AMD-filen ble levert i lb-sec i stedet for de spesifiserte og forventede enhetene til Newton-sec."

Sitert fra ftp://ftp.hq.nasa.gov/pub/pao/reports/1999/MCO_report.pdf

Feilen skyldtes ikke en konverteringsfeil mellom desimal og binær byte, men det er bare et spørsmål om tid før en lignende feil oppstår på grunn av desimal byte og binær byte.

Løsningen - IEC-standarden

Wikipedia beskriver Den internasjonale elektrotekniske kommisjon (IEC) IEC 60027 -2-standarden som foreslo nye binære prefikser fra 1998 og 1999. Standarden krever at alle målinger i binære byte endres fra SI-symbolet KB til IEC-symbolet KiB, MB til MiB, og så videre nedover listen over IEC-navn. IEEE (Institute of Electrical and Electronics Engineers) utstedte en tilnærmet identisk standard, IEEE 1541-2002 i 2005 ( tabell C).

Tabell C

Symbolene og navnene som standarden definerer

IEC-standarden for binær bytenomenklatur

Kibibytes? Mebibytes? Hører du noen datatyper si mebibyte i det siste? Jeg har ikke sett det skrevet, men jeg har sett noe bruk av de korte notasjonssymbolene på internettfora. Personlig har jeg bestemt meg for at mebibyte er ett ord som ikke skal passere gjennom disse leppene.

Og hva med all den eksisterende dokumentasjonen? Hvem kommer til å endre alle de gamle dokumentene? Min gjetning er ingen. Hvis noe, kan bruk av IEC-standarden føre til mer forvirring år fra nå, når du må gjennomgå gamle dokumenter og prøve å finne ut om KB betydde 1 024 byte eller 1 000 byte.

IEC-standarden har gjort lite for å løse forvirringen. Ingen tvil om at motivene deres var rene - gi et alternativ til feil bruk av SI-symbolene. Det burde være klart nå at datamaskingeeksene ikke kommer til å gi tilbake SI-prefikser. Skaden, hvilken skade det er, er allerede gjort.

La de gjeldende navnekonvensjonene for binærbyte være på plass. Det var jo datamaskintypene som opprettet og definerte begrepene kilobyte, megabyte, gigabyte, etc.

Siden implementering av IEC-standarden har vært avgrenset, er IEC-standarden løsningen som aldri ble.

En alternativ løsning

IEC-standarden krever at alle binærbaserte tall blir endret til KiB, MiB osv. Dette virker som en ganske tilbakelig måte å sette standarden på. Hvorfor ikke la KB bety 1 024 byte? Er det ikke mer fornuftig å omdefinere desimal-byte-nomenklaturen? (Se tabell D. ) Du trenger ikke å bekymre deg for å endre mest mulig eksisterende dokumentasjon, og standarden kunne tas i bruk sakte over tid ettersom IT-fagfolk, programvareprodusenter og maskinvareprodusenter begynte å bruke desimalbyte og ta i bruk den nye standarden.

Tabell D

Foreslått navnekonvensjon for binære byte og desimalbyte. Et mye mer interessant navnekonvensjon for desimale byte som er lettere på tungen.
Under dette foreslåtte systemet ville KB stå for K ilo B inary byte, eller 1.024 byte - akkurat som det har gjort i nyere historie. Det enkle symbolet K vil stå for desimalt K ilo- byte, eller 1000 byte. Det er mulig forvirring i eldre dokumentasjon, men virkningen vil sannsynligvis være ubetydelig.

Symbolene bit eller bit for "bit" ville være akseptabelt bare for mindre enn 1000 byte (8000 bit) eller 1K.

Bare for moro skyld la jeg til en annen kolonne med noen mer interessante foreslåtte navn for din anerkjente anmeldelse.

Maskinvare og binære bytes / desimal byte

Maskinvare følger en blandet pose med binær- og desimal-byte-nomenklatur. Dataoverføringshastigheter ( tabell E ) måles vanligvis i desimalbiter per sekund. Det er noen unntak, det vil si når byte / sek brukes.

Tabell E

Vanlige PC-protokoller og dataoverføringshastigheter i binære eller desimale målinger

Minnestørrelser måles i binære bytes. Dataoverføringshastigheter for PC-komponenter måles vanligvis i desimalbyte. PC-komponentkapasiteter måles i både binære byte og desimalbyte.

Produsenter av harddisker og flash-stasjoner bruker rutinemessig desimalbyte for å rapportere kapasitet. Produsenter av optiske plater bruker både binære byte og desimalbyte for å måle kapasiteten. CD-er måles i binære bytes. BD- og DVD-kapasitet måles i desimalbyte. Disketter bruker verken binære eller desimale byte! Forvirrende? Du satser, se tabell F.

Tabell F

Vanlige PC-komponenter og flyttbare medier og deres hastigheter / dataoverføringshastigheter, minnestørrelser / kapasiteter og hurtigbufferstørrelser i desimal- eller binærmålinger. Dataoverføringshastigheter måles vanligvis, men ikke alltid, i desimalbiter per sekund.

Er det noe rart at den gjennomsnittlige datamaskinbrukeren er forvirret når CD-er måles i binære byte, men DVD-er måles i desimalbyte? Jeg liker å kalle denne typen forvirring konsekvent inkonsekvent forvirring.

Programvare og binære byte / desimal byte

Programvare, som maskinvare, er en blandet pose med korte notasjonsnavn. Noe programvare følger IECs binære navnekonvensjon, spesielt Linux-kjernen og GNU Core Utilities.

De fleste programvare rapporterer numeriske verdier i binære bytes. I Windows rapporteres filstørrelser, minnestørrelser, kapasitet for lagringsenheter og partisjon i binære bytes. Interessant nok er hjemmenettverket mitt rapportert som 1 Gbps av Vista, som er en desimal gigabit.

I likhet med mye av IT-bransjen bruker Windows SI-navnekonvensjonen på feil måte. For det meste er symbolene KB, MB og GB brukt i Windows binære symboler og bør endres til KiB, MiB og GiB for å samsvare med IEC-standarden.

IEC-standardene ble utgitt i 1999, men Microsoft har ikke tatt i bruk standardene. Hvorfor ikke? For å være rettferdig har jeg ikke adoptert dem selv og har heller ikke de fleste IT-fagfolk.

Det er en annen løsning. Windows og all programvare skal rapportere verdier i desimalbyte ved å bruke desimale prefikser når kort notasjon brukes.

De fire mysteriene

Jeg kan ikke lage en sterk sak for vedtakelse av IEC-standarden, men jeg kan lage en sterk sak for bruk av desimal-byte:

  1. Tilfellet med de manglende gigabyte: "Kan noen her snille fortelle meg hvorfor 750 GB harddisken min bare viser 698.6 GB? Jeg vet at det er noe overhead for filsystemet, men mer enn 50 GB? Jeg betalte for 750 GB, men jeg fikk bare 698.6 GB!"
  2. Tilfellet med den mystiske partisjonsstørrelsen: "Jeg prøvde å lage en 40 GB-partisjon. Jeg skrev inn nummeret 40000 i tekstboksen Simple Volume Size i MB, men når formatet var ferdig var den nye partisjonen bare 39.06 GB? Hva skjedde? Hvorfor er ikke er det ikke 40 GB? "
  3. Tilfellet med den uventede dalbanen: "Jeg trengte å brenne noen filer på en DVD. Utforskeren viste at jeg hadde 4.650 MB data som jeg ønsket å brenne." Perfekt, "tenkte jeg." Det vil nesten fylle DVDen fullstendig. "Da jeg prøvde å brenne filene på DVD-en, mislyktes forbrenningen fordi den gikk tom for plass. Hvorfor? Nå er DVD-en min bare bra for min store kaffekopp."
  4. Saken om det tresifrede uhellet: "Jeg sendte inn en artikkel til redaktøren min. Det var flere dager senere i løpet av litt stille tid at jeg forsto at jeg hadde gjort en feil med noen av tallene. Hva var min feil? Jeg hadde tatt tall som 1, 234MB fra Explorer og konverterte dem til 1.23 GB ved å flytte desimalet tre steder til venstre. Jeg visste bedre, men det er en enkel feil å gjøre. "

De tre første historiene er fiktive, men scenariene er altfor virkelige. Den siste historien skjedde med meg da jeg sendte inn "Automate Custom Vista Installs with vLite" -artikkelen til Mark Kaelin. Heldigvis hadde ikke artikkelen blitt publisert ennå, og Mark fikset vennlig tallene uten noen snide-kommentarer.

Det er noen løsninger. For saken om den mystiske skilleveggen, multipliser 24 for hver 1 GB og legg til den forventede partisjonsstørrelsen i MB for å få den partisjonsstørrelsen i GB du ønsker. For eksempel: Du vil ha en 30 GB-partisjon, skriv inn (24 * 30) + 30 000 eller 30720 i tekstboksen Simple Volume Size i MB.

Feilen jeg gjorde i tilfelle av det tresifrede uhellet, kan unngås ved å se på informasjonsruten nederst i Explorer-vinduet. I Windows Vista og Windows 7 er filene 1000KB til 999, 999KB vist i MBs. Filer 1 000 000 kB og oppover vises i GB. Den samme informasjonen kan vises i XP ved å aktivere statuslinjen fra Utforskers menyelement Vis. Du kan også høyreklikke på filen og velge Egenskaper for å se filstørrelsen i byte og i MB eller GB. Et tredje alternativ er å flytte musen til filnavnet og holde musepekeren over navnet for å se et popup-vindu med samme informasjon.

Disse fire mysteriene er uten tvil lenger et mysterium for deg, tålmodig leser. For den gjennomsnittlige datamaskinbrukeren er de et totalt mysterium. Nettforumene er fylt med historier akkurat som disse.

Saken for base 10 i Microsoft Windows

Som Paul Allen og Bill Gates visste, og IBM fikk snart vite, "Han som kontrollerer operativsystemet, kontrollerer datamaskinen." Og så ser det ut til at inntil Microsoft bestemmer seg for en løsning, vil den ukonvensjonelle navnekonvensjonen og saken om binær byte v. Desimal byte fortsette.

Siviliserte mennesker har brukt desimalsystemet siden det femte århundre. Det var ikke før datamaskiner fulgte med, og spesielt datamaskiner, at det binære systemet kom i bred bruk.

Rask, hvor mange GB er 2, 406, 4 binære MB? Svaret, 2, 35 binære GB-er, er ikke lett å finne uten kalkulator. Jeg har bokmerke dette praktiske nettstedet som gjør beregningen for meg. Poenget er at jeg ikke skulle måtte bruke en kalkulator når konverteringen er så enkel i base 10.

Rask, hvor mange GB er 2, 406, 4 desimal MB? Svaret, 2.4064 desimaler, er lett å bestemme. Bare flytt desimalet tre steder til venstre, så har du svaret.

Hver nye versjon av Windows er utpekt som en hovedutgivelse som forbedrer produktiviteten. Her er en mulighet for Microsoft å gjøre en reell forbedring av produktiviteten bare ved å rapportere desimalbyte.

Et poeng til: Hvis Microsoft endrer måten Windows presenterer bytes til brukeren, bør de også bruke nye desimalfikser slik at det ikke blir forveksling med den historiske bruken av SI-prefikser.

Konklusjon

Jeg får hodepine hver gang dette emnet dukker opp - og det kommer opp mer og oftere i disse dager. Som jeg nevnte i begynnelsen av denne artikkelen, oppsto den i den siste artikkelen min, "Maksimer ytelsen til Microsoft Windows og Intel Matrix RAID: Del 2." Jeg vurderte seriøst å bruke IEC-standardene og skrive MiB og GiB der det var hensiktsmessig, og så kom sanity tilbake, og i likhet med Microsoft bestemte jeg meg for det.

Jeg fikk mye hodepine med å forske og skrive denne artikkelen også. Vi ville sannsynligvis ikke hatt denne diskusjonen hvis det ikke var fordi harddiskindustrien bestemte seg for å bruke den nøyaktige og sanne definisjonen av SI-symbolene M og G. Skam dem for det!

Modemindustrien og nettverksindustrien fulgte også en lignende modell ved å navngi produktets ytelse i desimaltall. De blåste opp de samme tallene ved å bruke biter i stedet for byte. Lurt bit av markedsføring der?

Men nå som emnet er blitt tvunget til dagens lys, er det kanskje på tide å se på hvordan programvaren vår rapporterer minnestørrelser, kapasiteter og hastigheter til oss. Så mye som jeg hater å innrømme det, har harddiskmarkedsførerne rett . Desimale byte er den beste måten å rapportere harddiskkapasiteter. Ingen tvil om at motivene deres var ikke rene som den kyniske siden av meg så høyt sier. De "rosenrøde glassene" -siden av meg hvisker at de bare var foran tiden sin.

Du har kanskje lagt merke til at jeg har skrevet minnestørrelser og de binære / desimale byteverdiene i tabell B totalt byte. Jeg har også forhåndsbetalt korte notasjonsbyte med binær eller desimal i hele denne artikkelen. Det så ut til å være den enkleste måten å skille mellom 1.073.741.824 binære bytes og 1.000.000.000 desimale byte da den korte notasjonen 1 GB ble brukt. Du har kanskje funnet ut å lese alle disse tallene som irriterende. Jeg kan fortelle deg at det er mye mindre slitsomt å lese ni nuller enn å måtte skrive alle!

Og det er grunnen til at det trengs en ny standard. Det er så mye mer praktisk å skrive 12, 34 GB enn 12, 340 000 000 byte eller 12, 34 desimale gigabyte. Imidlertid må personen som leser 12.34GB helt forstå, uten forvirring, nøyaktig hvor mange byte 12.34GB som egentlig er.

Kland det på harddiskprodusentene eller DVD-produsentene eller hvem som helst, det betyr ikke noe på dette tidspunktet. En løsning må snart bli funnet og akseptert i hele bransjen. Det burde vært gjort for år siden.

Det er tydelig at IEC-standarden har mislyktes. Annet enn noen av UNIX- og Linux-tilhengere, har adopsjonen av dem vært dårlig. Microsofts adopsjon av desimalbyte i all programvaren deres vil gå langt i retning av å løse forvirring av binærbyte og desimalbyte.

Jeg sier gigabyte. Du sier gibibyte. La oss kalle hele saken.

Hold deg oppdatert om de siste XP-tipsene og -triksene med TechRepublics Windows XP-nyhetsbrev, levert hver torsdag.

Forfatterens merknad:

Takk til George Gershwin og Ira Gershwin for ordene lånt fra sangen deres " Let's Call the Whole Thing Off ."

For nøyaktighetens skyld vil jeg ta med følgende merknader:

  • 750 GB desimale byte er 698, 5 GB binære byte; Mine Samsung 750 GB-stasjoner er rapportert som 698.6 GB i Windows Vista. Årsaken til dette avviket er at stasjonen har 1.465.149.167 LBAs * 512 byte for totalt 750.156.373.504 byte eller 698.637565135956 binære gigabyte.
  • Bytes er vanligvis 8 biter, spesielt innen personlig databehandling, men kan variere avhengig av operativsystem eller maskinvare.
  • For alle praktiske formål har KB blitt standardsymbolet i databehandlingsindustrien for kilobyte. Symbolet KB følger ikke SI eller metrisk standard for kilo. SI-standarden bruker en liten bokstav "k" for å betegne kilo med en "K" som er reservert for Kelvin, en måling av temperatur.
  • Det er ingen SI-standard for biter eller byte. IEEE 1541 anbefaler symbolet "b" for biter og "B" for byte. IEC 60027-2 bruker symbolet "B" for byte, men definerer symbolet "bit" i stedet for "b" for biter.

© Copyright 2020 | mobilegn.com