4 MBit! = 512 kB?

8

Saya bekerja dengan mikrokontroler Fujitsu dan saya pikir saya agak berkarat pada detail berikut, itu sebabnya saya menanyakan pertanyaan ini. Saya memiliki spesifikasi sebagai berikut:

  • Memori flash 4M-bit
  • Produk bawaan: MB90F345E (S), MB90F345CE (S)
  • volume: 512 Kbytes / 256 Kwords
  • Konfigurasi sektor: 64K × 6 + 32K × 2 + 16K × 2 + 8 K × 4
  • Bank yang dialokasikan: F8H ke bank FFH

Mereka secara ajaib membuat 12K byte memori ROM tambahan? Keunikan apa yang saya lewatkan di sini?

Evert
sumber
7
512 Kbytes = 512 * 8 Kbits = 4096 Kbits = 4 Mbits
John Dvorak
Googling: "512 kb to megabit" memberi saya 512 kb = 4.096 Mbits. Dan itu dibulatkan menjadi 4 Mbits?
Evert
4
Coba googling "512 kib to mibit" sebagai gantinya.
fgb
3
Dalam konteks teknis, Kbytes dan M-bit biasanya merujuk pada apa yang untuk menghindari ambiguitas yang disebut sebagai Kibibytes dan Mebibits
njzk2
3
Perhatikan juga bahwa dalam konteks teknis, ada perbedaan yang sangat besar antara Bdan b. Apa judulnya benar-benar "4 megabit! = 512 kilobit?", Yang tentu saja tidak masuk akal. Apa yang Anda inginkan adalah 4 Mbit != 512 KB?yang lebih masuk akal, tergantung pada apakah Anda menggunakan awalan biner atau desimal.
CVn

Jawaban:

16

Jika Anda melihat peta memori, sebenarnya ada 524.288 byte ROM, yaitu 512K (di mana 'K' mengacu pada 1024, bukan 1000) - btw, saya mengerti bahwa dengan mengurangi alamat awal 0xF8000 dari alamat akhir 0xFFFFFF dan menambahkan satu.

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

Itu 4M (di mana 'M' adalah 1024 * 1024 = 1.048.576, tidak 106 = 1.000.000).

Biasanya cukup jelas apa yang terjadi dari konteks, jadi ini jarang menyebabkan kebingungan (terutama ketika tampaknya ada lebih banyak memori dari yang Anda harapkan), namun kapasitas disk drive konsumen adalah contoh terkenal menggunakan unit 'pemasaran' yang membuat produk terlihat lebih menguntungkan sekitar 5-10%.

Sunting: Seperti yang dijelaskan oleh berbagai preskriptif di sini, ada unit "resmi" seperti MiB yang harus menghilangkan ambiguitas, namun karena hampir tidak ada yang menggunakannya, saya pikir mereka kemungkinan akan menyebabkan lebih banyak kebingungan dalam banyak kasus (dan jelas yang dirasakan oleh para penulis lembar data) seperti itu). Pertanyaannya adalah tentang menafsirkan dengan benar apa yang ditulis dalam lembar data, bukan terminologi apa yang harus Anda gunakan saat menulis lembar data sendiri.

Spehro Pefhany
sumber
2
+1, selalu lihat peta memori (atau temukan stat tanpa "k" atau "M") jika Anda perlu tahu persis apa yang terjadi (opsi memori tidak berukuran 10% terpisah, tetapi lebih karena faktor 2). "60k" dalam banyak micros bukan 60 * 1024, tetapi sering di suatu tempat antara 60000 dan 61440 karena beberapa dari 1440 diambil oleh register HW.
Nick T
@NickT Yup, dan kadang-kadang mungkin ada "lubang" di mana ada memori I / O, RAM atau sesuatu yang dipetakan.
Spehro Pefhany
14

Para insinyur komputer awal memilih untuk mengadopsi, dan mengadaptasi, unit awalan SI ke jumlah data mereka. Ini adalah awalan yang sama, tetapi menghitung menggunakan biner daripada metrik. Karena 2 ^ 10 mendekati 10 ^ 3, maka setiap awalan SI biasanya meningkatkan jumlah sebesar 10 ^ 3 sebagai gantinya mengacu pada peningkatan 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%

Ini diadopsi sebagai bagian dari standar JEDEC.

Ini memiliki sejumlah manfaat karena banyak pekerjaan di bidang ini terjadi dalam kekuatan 2. Namun seperti yang Anda lihat mereka berbeda dari metrik, dan karena kita sekarang berurusan dengan jumlah penyimpanan yang lebih besar di mana perbedaan antara kedua divergen secara signifikan masalah telah ditangani oleh IEC dan NIST. Ini membedakan dua sistem dengan mengubah awalan biner:

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

Ini pertama kali distandarisasi pada tahun 1998, dan diadopsi ke dalam Sistem Kuantitas Internasional pada tahun 2008, tetapi adopsi lambat, dan masih ada perusahaan membuat dokumen baru menggunakan standar lama. Di mana perusahaan telah beralih, mereka mendapati pengguna bingung dan beberapa telah beralih kembali ke gaya lama.

Dengan demikian, menggunakan standar yang lebih lama, 4Mb adalah 4 * 2 ^ 20 bit, yang setara dengan 512 * 2 ^ 10 byte.

Diwakili dalam standar yang lebih baru, itu akan menjadi 4Mib = 512 kiB, dengan asumsi 'b' adalah bit dan 'B' adalah byte.

Adam Davis
sumber
Menurut ini , itu distandarisasi pada tahun 1998.
glglgl
1
Ini mungkin standar, tetapi semua orang menyukainya. Sebagaimana dicatat, ada banyak dokumentasi yang lebih tua yang, secara teori, perusahaan harus berubah (Anda dapat membandingkan ini dengan biaya AS yang dikonversi ke sistem Metrik). Pertanyaan dan jawaban ini, menjadi pengingat yang baik tentang terminologi apa yang HARUS kita gunakan.
Alan Campbell
@glglgl IEC dan otheres mendefinisikannya pada tahun 1998, tetapi baru pada tahun 2008 awalan IEC dimasukkan ke dalam Sistem Kuantitas Internasional. Saya sedikit memperbarui jawabannya.
Adam Davis
10

Dalam konteks kapasitas memori, MB sering kali berarti 1024KB (bukan 1000K). Anda dapat menggunakan MiB untuk menghindari ambiguitas.

Dadih
sumber
Yang mengatakan, saya pernah mendengar beberapa produsen hard drive menggunakan 1000. Kadang-kadang benar-benar berlumpur tetapi benar-benar harus 1024.
DKNguyen
1

Usia kekuatan lama 2 vs kekuatan 10 perdebatan. Perusahaan telah kehilangan jutaan tuntutan hukum karenanya. Awalan biner vs desimal yang menyebabkan Anda kehilangan 24 bit per kilo benar-benar bertambah dalam bit dan byte giga. Itulah sebabnya hard drive 120 gb saya (peringkat produsen) hanya memiliki 115,8 gb atau lebih (tampilan komputer)

http://en.m.wikipedia.org/wiki/Binary_prefix memiliki penjelasan lengkap.

Pejalan kaki
sumber
2
Jangan lupa floppy disk pekerja keras "1,44 MB" yang lama. Yaitu 1,44 kali 1000 kali 1024 byte (1,474,560 byte). Kebingungan ganda!
CVn
1

Ketika berbicara tentang RAM, ROM, atau apa pun yang terhubung dengan cara apa pun ke bus CPU:

  • Satu kilobit adalah 1024 bit.

  • Satu megabit adalah 1024 kilobit.

  • 4 megabit adalah 4.096 kilobit.

  • 4096 kilobit adalah 4194304 bit.

  • Satu byte adalah 8 bit.

  • 4194304 bit adalah 524288 byte

  • Satu kilobyte adalah 1024 byte

  • 524288 byte adalah 512 kilobyte.

Itu semua karena 2n.

Majenko
sumber
2
Googling "4 megabit ke kbit" memberi saya 4000 kilobit? Saya pikir halaman wiki ini menjelaskan ambiguitas: en.wikipedia.org/wiki/Binary_prefix
Evert
5
Perbedaannya berasal dari produsen hard drive menggunakan 1000 untuk kilo / mega dll (untuk membuat drive terlihat lebih besar), sedangkan segala hal lain penyimpanan digital menggunakan 1024. Ini murni untuk memerangi kebingungan ini bahwa Mibibyte dll (MIllion BInary BYTEs) diciptakan.
Majenko
2
-1: secara tegas, saya tidak akan mengatakan sejauh mengatakan "satu kilobyte adalah 1024 byte" - bisa juga 1000 byte (ISO / IEC80000 menjadi salah satu konteks) atau 1024 byte (penggunaan umum, SI biner ); karena itu, saya tidak dapat setuju dengan jawaban ini kecuali Anda memasukkan informasi dari komentar Anda (kibibyte dll) dalam jawaban itu sendiri. Juga, 1000 untuk kilo bukan dari HD OEM (meskipun ini paling umum untuk mereka) - itu dari tabel awalan SI, yang ada sebelum CS dan komputer saat ini paling tidak setengah abad (sekitar tahun 1950-1960)
3
@vaxquis: Setengah abad adalah pernyataan yang meremehkan. 'Kilo' berasal dari kata Yunani Kuno untuk ribuan, mendahului SI oleh milenia.
Marcks Thomas
3
@vaxquis SI tidak mendefinisikan byte atau bit, sehingga penggunaan kilo dengannya tidak ditentukan olehnya. Ini bukan ditentukan oleh Standar JEDEC 100B.01.
Ruslan
1

Sayangnya industri komputer menggunakan awalan kilo dan mega secara tidak konsisten.

Memori semikonduktor cenderung memiliki kekuatan dua ukuran, karena membuat pemetaan alamat menjadi lebih sederhana. 1024 mendekati 1000 sehingga mereka yang bekerja dengan memori semikonduktor mulai menggunakan kilo berarti 1024. Ketika ukuran memori semakin besar, mereka juga mulai menggunakan mega untuk berarti 1024 2 = 1048576 giga berarti 1024 3 = 1073741824 dan seterusnya.

Di bawah definisi kilobyte dan megabyte ini, pernyataan produsen Anda cocok. 4 megabit biner sama dengan 4.096 biner kilobit sama dengan 512 biner kilobyte.


Namun bagian lain dari industri komputer, khususnya produsen dan perancang antarmuka komunikasi hard drive menggunakan awalan SI dalam arti aslinya. Produsen media flash seperti disk juga cenderung mengikuti konvensi ini.

Beberapa bagian industri bahkan menggabungkan keduanya, misalnya "disket 1,44MB" sebenarnya 1,44 * 1000 * 1024 = 1474560 byte

IEC mencoba untuk memperbaiki kekacauan pada tahun 1998 dengan memperkenalkan nama dan simbologi spesifik untuk awalan biner, nama-nama dibentuk dengan mengambil dua huruf pertama dari nama unit SI dan menambahkan "bi", sehingga kilo menjadi kibi, mega menjadi mebi dan sebagainya. Untuk simbol, "i" ditambahkan sehingga k menjadi ki, M menjadi Mi dan seterusnya.

Namun, hanya karena organisasi standar memperkenalkan terminologi tidak berarti orang benar-benar menggunakannya. Setidaknya dalam pengalaman saya itu masih jauh lebih umum untuk melihat kilo, mega dll digunakan dalam arti biner daripada melihat kibi, mebi dll.

Peter Green
sumber
1

Seperti orang lain telah dijelaskan, Anda mungkin menderita halfcentury berusia hack oleh IEC et al, yang terus menghasilkan kebingungan besar. Alih-alih memperkenalkan unit baru dengan dimensi yang sama (atau awalan), mereka meredefinisi makna unit lain yang banyak digunakan (awalan), pada saat yang sama gagal menetapkan dengan jelas definisi mana yang berlaku dalam konteks mana.

Dalam kasus masalah khusus Anda, periksa peta memori seperti yang disebutkan.


Namun, saya mendesak Anda untuk mengenali masalah yang jauh lebih umum.
Masalahnya adalah bahwa mengatakan 123 kBtidak dapat dipercaya menyebabkan pemahaman sejernih kristal di pihak penerima.

Ini adalah warisan linguistik, dan kekurangan API utama dari kosakata CS.

Apa yang bisa kita lakukan untuk menyelesaikannya?

Nah, coba tebak: gunakan awalan biner .
Artinya 123 kiBadalah 100% jernih andal.
Arti 123 kiB (126.0 kB)bahkan lebih baik.
Anda tidak harus menjadi sejarawan CS hanya untuk menyampaikan sejumlah besar kepada seseorang.
Tidak ada yang peduli tentang perusahaan, hard drive, badan standartisasi, pernyataan penghinaan, dan sebagainya.
Itu tidak layak. Cukup gunakan mebibytes biner. Mereka tidak ambigu.

Ada orang yang telah berhasil mengatakannya 32 kibihertzpada tahun 2002. Mereka telah didengar. Luar biasa nyaman, ya?

Akhirnya, jika Anda menolak untuk merangkul awalan biner - Anda memperburuk masalah.
Satu-satunya strategi yang kita semua dapat bekerja sama untuk mengurangi dan memperbaiki bug linguistik sialan itu adalah mendua ambiguitas dan beralih ke kibi ... detik (mengapa tidak?) Dan unit bi lainnya.

ulidtko
sumber
1
Wow! Saya harus ingat untuk menggunakan kibihertz lebih banyak!
pipa