MB và MiB: vì sao ổ 1 TB hiển thị 931 GB
Tác giả WuTools editorial team · Cập nhật
Bạn mua một ổ SSD 1 TB, ví dụ Samsung 870 EVO hoặc Kingston NV2 mua trên Tiki/Lazada. Cắm vào, hệ điều hành báo 931 GB. Hãng có gian lận không? Không — họ dùng hệ tiền tố khác. Ổ thực sự có một nghìn tỷ byte; OS chỉ đang báo số gigabyte nhị phân (gibibyte) trong số byte đó. Bài này giải thích khác biệt giữa hệ tiền tố SI và IEC, vì sao cả hai tồn tại, khi nào dùng cái nào, và cách đổi qua lại trong bộ chuyển đổi dung lượng của WuTools.
Hai hệ cho cùng một chữ tiền tố
Tiền tố kilo-, mega-, giga-, tera- được tổ chức SI (Hệ Đo Lường Quốc Tế) định nghĩa từ rất lâu trước khi có máy tính. Chúng có nghĩa đúng như cô giáo vật lý dạy: kilo là 1000, mega là 1 000 000, giga là 1 000 000 000, tera là 10¹². Một kilomet đúng là 1000 mét, không phải 1024. Đây là hệ tiền tố thập phân.
Khi các kỹ sư máy tính đầu tiên muốn nói về bộ nhớ, họ thích kilo- vì 2¹⁰ = 1024 "đủ gần" 1000 cho dùng thông thường. Vậy là "1 KB bộ nhớ" trở thành 1024 byte — một dùng quen tay đè lên tiền tố SI. Đến thập niên 1980 cách dùng này lan ra MB (1024² = 1 048 576 byte), GB, TB.
Kết quả là 24 năm hỗn loạn: "1 GB" có thể nghĩa 10⁹ byte (hãng / SI) hoặc 2³⁰ = 1 073 741 824 byte (hệ điều hành / dùng quen). Cùng chữ, khác giá trị, và khoảng cách lớn dần: ở mức kilo là 2,4%, ở giga là 7,4%, ở tera 10%, ở peta 12,6%. Khoảng cách này chính là lý do ổ 1 TB hiện 931 GB.
IEC ra tay vá: kibi, mebi, gibi, tebi
Năm 1998 Uỷ ban Kỹ thuật Điện Quốc tế (IEC) công bố tiêu chuẩn IEC 60027-2 — sau gộp vào IEC 80000-13 — định nghĩa các tiền tố nhị phân mới rõ ràng nghĩa là luỹ thừa của 1024:
kibibyte (KiB) = 2¹⁰ = 1 024 byte.
mebibyte (MiB) = 2²⁰ = 1 048 576 byte.
gibibyte (GiB) = 2³⁰ = 1 073 741 824 byte.
tebibyte (TiB) = 2⁴⁰ = 1 099 511 627 776 byte.
pebibyte (PiB) = 2⁵⁰.
Các tiền tố SI cũ (KB, MB, GB, TB) trở về nghĩa thập phân chặt: 1 GB = 10⁹ byte, dấu chấm hết. IEEE 1541-2002 và NIST SP 811 đều ủng hộ. Vậy quy tắc chính thức sau 1998: chữ SI = thập phân, chữ có -bi- = nhị phân.
Ai dùng cái nào
Hãng ổ cứng (Samsung, Western Digital, Seagate, Kingston, Crucial, SanDisk) dùng SI / thập phân. "1 TB" trên hộp nghĩa là 10¹² byte chính xác. SSD, HDD, USB, thẻ SD đều thế.
Băng thông mạng dùng SI / thập phân. Ethernet "100 Mbps" nghĩa đúng 100 × 10⁶ bit/giây.
Thanh RAM dùng nhị phân, nhưng vẫn ghi chữ SI cũ. Thanh "16 GB" thực ra là 16 × 2³⁰ = 17 179 869 184 byte. Đây là chỗ duy nhất quy ước cũ vừa phổ quát vừa chính xác, vì RAM thực sự được phần cứng đánh địa chỉ theo luỹ thừa 2.
Windows vẫn dùng GB nghĩa là GiB trong File Explorer (ổ 1 TB hiện 931 GB; dung lượng format hiện 931 GiB nhưng nhãn ghi "GB"). Về kỹ thuật là sai theo IEC 60027-2 nhưng khó đổi.
macOS chuyển sang SI / thập phân từ 10.6 (2009). Trên Mac, ổ 1 TB hiện khoảng 1 TB — 1 000 GB.
Linux tuỳ tool. df -h dùng GiB (nhị phân, dù in chữ "G"). df --si dùng GB (thập phân). ls -lh dùng nhị phân. Hầu hết file manager hiện đại (GNOME Files, Dolphin) dùng SI.
Dung lượng "thiếu" của ổ đi đâu
Khi mua SSD "1 TB", lời quảng cáo của hãng là chính xác: 10¹² byte thô, có thể nhỉnh hơn chút cho over-provisioning (controller dự trữ 5–15% cho wear levelling và remap khối lỗi, tuỳ model). OS báo 931,32 GiB — chính là số byte đó nhưng đếm theo 1024.
Đôi khi mất thêm 5–10 GB nữa do format (metadata filesystem, journal, partition phục hồi). Trên Windows, ổ 1 TB sau format NTFS thường còn 920–925 GB trống. Không phải hãng gian lận — chỉ là hai hệ tiền tố cộng với hạch toán filesystem.
Cách quy đổi nhanh trong đầu
Để đổi TB của hãng sang GB của OS (thực ra GiB), chia cho 1,0995 (= 2⁴⁰ ÷ 10¹²). Quy tắc nhanh: nhân TB quảng cáo với 0,91 ra GB của OS. Vậy 1 TB → 931 GB, 2 TB → 1862 GB, 4 TB → 3725 GB, 8 TB → 7451 GB. Khoảng cách phần trăm cố định ~9,1%; ổ gấp đôi thì "thiếu" gấp đôi.
Ngược lại: 1 GiB = 1,0737 GB. Vậy thanh RAM 16 GiB là 17,18 GB nếu muốn diễn theo thập phân, dù chẳng ai làm vậy. Hub data-storage có cả hai hệ song song.
Đọc kích thước file trên các OS khác nhau
Cùng một file 5 000 000 byte:
Trên Windows, File Explorer hiện 4,77 MB (nhị phân, nhưng nhãn MB).
Trên macOS, Finder hiện 5 MB (thập phân SI).
Trên Linux ls -lh: 4,8M (nhị phân).
Trên Linux ls -l --si: 5,0M (thập phân).
Khi chuyển file giữa các hệ, kích thước hiện ra thay đổi — số byte nền là như nhau.
Khi nào dùng tiền tố nào trong việc của bạn
Nếu viết nội dung hướng người dùng về dung lượng, ưu tiên hệ mà người đọc quen: SI cho marketing và đa số nói chuyện cloud, IEC nhị phân cho tài liệu kỹ thuật cho kỹ sư.
Trong code: lưu byte ở số nguyên rồi định dạng. Dùng tiền tố SI (KB, MB, GB) với k=1000 khi hiển thị size download, băng thông mạng, file size kiểu macOS. Dùng IEC (KiB, MiB, GiB) khi nói về cấp phát bộ nhớ, kích thước page, hoặc bất cứ thứ gì thực sự là luỹ thừa 2.
Trong tài liệu đặc tả và tiêu chuẩn: dùng IEC. Đừng viết "1 GB RAM" nếu ý là 2³⁰ byte — viết "1 GiB". Loại bỏ ambiguity 7,4% đã gây ra bug thật.
Băng thông mạng còn xoắn thêm
Tốc độ mạng tính bằng bit/giây (chữ b nhỏ), không phải byte (B lớn). "100 Mbps" là 100 megabit/giây = 12,5 megabyte/giây (chia 8). Nên kết nối 100 Mbps tải tối đa 12,5 MB/s, không bao giờ 100 MB/s. Nhiều ISP cố tình dùng khác biệt này khi quảng cáo tốc độ.
Tốc độ mạng dùng SI / thập phân: 1 Gbps = 10⁹ bit/giây chính xác. Không có "Gibps" thường dùng; tiền tố nhị phân không xuất hiện trong networking. Dùng hub data-rate để đổi bit-byte và băng thông.
Công cụ liên quan
- Hub Chuyển đổi Dung lượng — Mọi tiền tố thập phân và nhị phân song song
- Hub Chuyển đổi Tốc độ Dữ liệu — Mbps, MB/s, Gbps và bạn bè
- GB → MB — Đổi thập phân sang thập phân
- byte → gibibit — Đổi xuyên hệ thập phân-nhị phân
- GB → gibibit — Khi cần cả hai hệ
Câu hỏi thường gặp
Vậy ổ 1 TB của tôi thực sự có một nghìn tỷ byte?
Đúng — chính xác 10¹² byte (có thể nhỉnh hơn chút dành cho over-provisioning). OS báo 931 GiB vì nó đếm theo luỹ thừa 1024 và dán nhãn "GB" theo quy ước cũ.
Có cách nào bắt Windows hiện dung lượng SI không?
Không mặc định. Windows đã dùng GiB dán nhãn GB từ những năm 90 và Microsoft chưa cho thấy ý định đổi. Vài file manager bên thứ ba có thể đè cách hiển thị, nhưng đa số người dùng sống chung với chênh lệch.
Còn RAM — 16 GB có thực sự là 16 GiB?
Có. RAM là chỗ duy nhất quy ước thông tục "GB = 2³⁰" thực sự đúng, vì phần cứng đánh địa chỉ RAM theo luỹ thừa 2. Thanh RAM 16 GB chứa đúng 17 179 869 184 byte.
Vì sao tên IEC nghe khó đọc thế?
"Kibi" từ kilo binary, "mebi" từ mega binary. Tên cố tình xấu để rõ ràng bạn đang dùng phiên bản nhị phân. Bị chậm phổ biến chính vì người ta thấy cộc cằn, nhưng đó là cách duy nhất rõ nghĩa.
Tốc độ mạng là nhị phân hay thập phân?
SI thập phân. "1 Gbps" là 10⁹ bit/giây, không phải 2³⁰. Không có "Gibps" thường dùng — networking giữ nhất quán với tiền tố SI từ đầu.
Một GB nhị phân lớn hơn GB thập phân bao nhiêu?
1 GiB ÷ 1 GB = 1,0737. Vậy một gigabyte nhị phân (GiB) lớn hơn một gigabyte thập phân (GB) khoảng 7,4%. Ở mức terabyte là 10%; petabyte 12,6%. Khoảng cách lớn dần với tiền tố.
Điều này ảnh hưởng giá lưu trữ cloud không?
Nhà cung cấp cloud (AWS S3, Google Cloud Storage, Azure) dùng SI / thập phân. "100 GB lưu trữ" tính cước AWS là 100 × 10⁹ byte, không bất ngờ. Hoá đơn egress cloud cũng phần lớn theo GB thập phân.
mb có giống MB không?
Không — mb là megabit (b nhỏ), MB là megabyte (B lớn). 8 mb = 1 MB. Tốc độ mạng dùng mb (Mbps); kích thước file dùng MB. Đây là một nhầm lẫn khác với chuyện nhị phân/thập phân nhưng cũng phổ biến không kém.
