ネットサービス

プログラマーが知っておくべき「PC内部の通信速度」


PCは計算を担当するCPUや一時的なデータ保存のためのメモリ、HDDやSSDなどの長期保存のためのストレージなどが相互にデータをやり取りしながら動作しています。「Latency Numbers Every Programmer Should Know」というサイトにPC内部のそれぞれの通信速度がまとまっています。

Numbers Every Programmer Should Know By Year
https://people.eecs.berkeley.edu/~rcs/research/interactive_latency.html

以下のように色分けされたブロック(■)の数でそれぞれの速度が表されています。


PC内部で超高速な通信を行っているのがCPUとL1・L2などのキャッシュです。これらのキャッシュはCPUとメモリの速度差を埋めるためにCPUに搭載されています。詳細な役割は以下の記事を読むとよくわかります。

なぜCPUにはL1・L2・L3というように複数のキャッシュレベルがあるのか? - GIGAZINE


L1キャッシュは速度が命なだけあって1ns(ナノ秒)、つまり10億分の1秒というごく一瞬でCPUとデータをやりとりできます。2つ下の項目を見るとL2キャッシュには4nsでアクセスできることが分かります。また、間に挟まれている「Branch mispredict」というのは2018年初めにspectreという脆弱性を引き起こして問題になった「投機的実行」についてのもの。投機的実行は条件分岐の判定を待たずに決め打ちで次の命令を予測・実行するものですが、この命令の予測が間違っていた場合は計算した3nsという時間を無駄にすることになります。3nsというのは3.6GHzのCPUの場合だと約10クロックに相当します。最後の「Mutex lock/unlock」というのは共有キャッシュのデータの排他的制御権(lock)の獲得・解放にかかる時間です。


青い「■」は黒い「■」の100倍である100nsを表しています。メインメモリへのアクセスは100nsもかかってしまいます。青い「■」10個は1μs(マイクロ秒)、つまり100万分の1秒を表しており、1KBのファイルを圧縮するのに2μsかかることが分かります。


図には2000byte(バイト)のデータを送信するのに88nsしかかからないと表示されていますが、これはおそらくデータセンターなどで使用されるスイッチが200Gbpsでデータを処理することを示していると考えられます。200Gbpsの回線を使用するとすれば2000byteあたり80nsでデータを送信できます。SSDのランダムリードアクセスには16μs、連続して格納されている100万byteのデータをシーケンシャルにメインメモリから読むには5μsかかります。また、データセンター内でコンピューター同士がデータを1往復させるのには500μsかかります。


赤い「■」は1ms(ミリセカンド)、つまり1000分の1秒を表しています。100万byteのデータをSSDからシーケンシャルに読むには78μsかかります。HDDがデータを読み出す際にヘッドの位置を合わせるための時間であるシークは3msかかり、100万バイトをシーケンシャルに読み取るのに1msかかります。2つ上のSSDの項目と比べると、読み取りアクセスはSSDが非常に優秀であることが分かります。カリフォルニアとオランダ間のパケットの往復には150msかかります。150msというのは約7分の1秒であり、体感できるほどの遅さです。


また、画面上部のスライドバーを動かすことで、過去の速度がどのようになっていたのか1990年までさかのぼって表示できます。


以下は2008年の様子。2018年と比べるとストレージのアクセス速度が数倍遅くなっており、10年間でストレージが大きく進化していることが分かりますが、一方でストレージ以外はほぼ変化が起きていないことも分かります。


さらに10年前の1998年を確認してみると、全体的に「■」の数が大きく増加しており、1998年から2008年の間にコンピューターの性能が大きく進化していることが分かります。


1990年まで戻ってみると画面全体が「■」で埋まってしまいます。


なお、有志が修正・加筆したより詳しい情報がGithubに公開されています。

この記事のタイトルとURLをコピーする

・関連記事
Googleが「ネットスピードをチェック」と検索するだけで回線速度をテストできる機能を準備中 - GIGAZINE

Intel CPUの10年分の進化を数値で徹底的に比較するとこうなる - GIGAZINE

ゲームに不可欠な「GPU」の働きや性能に関して知っておくべきこと - GIGAZINE

データに関してぜひとも知っておきたい基礎知識が一発で分かるムービー - GIGAZINE

Intel製CPUに内在する脆弱性問題の根は深く「すべてのプロセッサが安全性と高速性を両立できない問題を抱える」との指摘 - GIGAZINE

in ネットサービス,   ハードウェア, Posted by log1d_ts

You can read the machine translated English article here.