【図解】MB/sとMbpsの正しい変換 ~MB,GB,TBとMiB(メビバイト),GiB(ギビバイト),TiB(テビバイト)の違い

はじめに

問題です。Windows のファイル転送時によく見かける下図についてです。速度が『1.00 MB/s』となっていますが、Mbps  (Mega bit per second) に変換するとどうなるでしょう?

8 Mbps と答えた方。実は (たぶん) ちょっと違います。

容量 (bits, Bytes)の単位

一般に容量を示す KB や MB , GB, TB のように、"B" が大文字で表記される場合、それは Byte (バイト) を意味します。冒頭の図のように MB/s と書かれている場合、メガバイト/秒という意味になります。

1 Byte = 8 bit ですので、1 MB と言われたら、一般には 8 Mbit (メガビット) を意味します。速度の単位 bps もそうですが、bit を表す場合は小文字の "b" を使うことが多いです。

ところで、M (メガ) は何かというと、一般には 10 の 6 乗を意味します。なので 1 MB = 8 × 106 = 8,000,000となります。

先程から『一般には』と表現しているのには訳があります。というのも、文脈によっては M (メガ) は 2 の 20 乗を意味するからです。

なので文脈によっては 1 MB = 8 × 220 = 8,388,608となります。

国際単位系 (SI) と国際規格 IEC 80000-13 の定義

国際単位系 (SI) の定義では M (メガ) は 10 の 6 乗を意味します。

一方、情報工学の世界では 2 進数を扱うことが多く、それゆえ M (メガ) を 2 の 20 乗の意味で使うことが便利でした。

そこでこの 2 つを区別するため、国際規格 IEC 80000-13 においては Mebi (メビ) という単位が定義され、これが 2 の 20 乗を意味するようになりました。

それ以外にもキロバイトに対してキビバイト、ギガバイトに対してギビバイト、テラバイトに対してテビバイト、といった定義がされています。(下表)

国際単位系 (SI) IEC 80000-13
Kilo (キロ) 103 Kibi (キビ) 210
Mega (メガ) 106 Mebi (メビ) 220
Giga (ギガ) 109 Gibi  (ギビ) 230
Tera (テラ) 1012 Tebi (テビ) 240
Peta (ペタ) 1015 Pebi (ペビ) 250

なので国際単位系 (SI) と国際規格 (IEC 80000-13) の定義を『正しい』とすることを、この記事では『一般に』と表現しています。

Windows や Linux  での定義

では一般ではないものにはどういうものがあるかというと、現在の IT の主要な OS である Windows や Linux での容量の定義です。

これらの OS では IEC 80000-13 で定義された KiB, MiB, GiB, TiB のことを、それぞれ KB, MB, GB, TB と表記しています。

例えば Windows の 1023 バイトのファイル (下図左) と 1024 バイトのファイル (下図右) を見比べてみると、1024 バイトに達することでファイルサイズが 1 KB になっていることが分かります。

速度 (bps) の単位

一方、速度に関して言うと、Kbps や Mbps は国際単位系 (SI) の定義のみが使われます。K (キロ) であれば 10 の 3 乗ですし、M (メガ) であれば 10 の 6 乗です。

おそらくこの辺りは IEEE 規格の定義が強く出ているためと思われます。

例えば 1000Base-T では『1 クロック = 8 ns  (ナノ秒) の中で 2 bit を表現するペアケーブルが 4 対で伝送』します。それゆえ速度は 2 [bit] / (8 × 10-9)  [sec] ×  4 = 10 [bps] = 1 [Gbps]となります。

同様に、無線の IEEE802.11a でも『4 μs (マイクロ秒) の中で 6 bit を表現するサブキャリア 48 個で伝送 (そのうち 1/4 は誤り訂正符号)』します。それゆえ速度は 6 [bit] / (4 × 10-6) [sec] × 48 × 3/4 = 54 × 106 [bps] = 54 [Mbps] となります。

無線の理論速度などの原理の詳細については以下をご参照下さい。

関連記事

無線LAN (Wi-Fi) の規格と速度理論値 無線 LAN の最新規格 IEEE802.11ax (Wi-Fi 6) までの規格の速度を以下の表にまとめます。 IEEE規格 周波数帯 チャネル ボンデ ィング […]

Windows や Linux  でもネットワーク通信は IEEE 規格で行うことが多く、データ容量と速度の単位における K (キロ) や M(メガ) の定義に不整合が起きているのです。

最初の問題の答え

これまでの話をもっても、Windows の MB/s の MB が 106 なのか 220 なのか分かりません。ただ、よく観測してみると、998 KB/s となっている場合がある一方、

0.98 MB/s と表現されている場合があります。そして速度がこれ以上の場合は MB/s 表記が維持されます。

もし 1MB/s = 1000 KB/s であるならば 998 KB/s という表現はされず、0.99 MB/s となるはずです。そうなっていないということは、1MB/s = 1024 KB/s であることが推測されます。

なお、この速度のキャプチャを取るために、『ポリシーベースの QoS』という Windows 標準機能を使いましたが、その設定値として 1 MBps を設定して閉じてまた開くと 1024 KBps に変わっていましたので、この説がさらに補強されます。

この推測が正しいとすると、冒頭の 1 MB/s は  8,388,608 bps ≒ 8.4 Mbps となります。

容量が小さいうちは大した話ではない。だが、、、

今までは MB/s の定義について触れてきましたが、大きな誤解の元としては、速度を表現する bps については国際単位系の 10 の乗数が使われるのに対し、Windows , Linux 等の OS 上ではデータ容量を表現するのに 2 の乗数が使われる、という不整合があることです。

この不整合を認知しないと、思わぬ計算違いをしてしまうこともあります。

例えば Windows サーバ上に 1 TB のファイルがあるとします。これをネットワーク越しに別の Windows サーバに移動します。ストレージの IO は十分高いとし、ネットワークが 1000Base-T でシステム上のボトルネックになるとします。

一般に 1 TB を 1 Gbps で移動するには 1 × 1012 [Byte] × 8 [bit/Byte] / 109 [bps] = 8 ×103 [sec] ≒ 2時間 13分 となります。

ですが Windows 上では TiB ですので 1 × 230 [Byte] × 8 [bit/Byte] / 109 [bps] ≒ 8590 [sec] = 2時間23 分となります。

つまり、1 TB で 10 分の開きが出てきます。

最近では大容量化が進んでいますので、例えば  20 TB  分のファイルを移動するなら 200 分も変わってきます。

ファイルサーバの移行などの理論値試算の際には、ご注意を。

IT/インフラエンジニアの地位とスキル向上のために

関連記事

IT 技術の進化はとどまることを知りません。矢継ぎ早に新たな技術が出てきたり、数年前の技術が時代遅れになったりと、IT エンジニアは勉強し続ける運命のようです。 それをどう思うかはあなた次第。 ビジネスの基本は『付加価値を与える[…]

IMG
関連記事

nesuke の考える NW エンジニアの2つの道 ネットワークエンジニアには 2 つの道があります。 1 つはネットワーク構築一筋で、L4 までをひたすらきっちりと構築していく道。 もう 1 つはネットワークを軸として深堀し[…]

IMG