この記事は、インテル® デベロッパー・ゾーンに公開されている「Memory Performance in a Nutshell」の日本語参考訳です。
この記事の PDF 版はこちらからご利用になれます。
コンピューター上のデータの格納と家庭内の物の収納の間に概念的な違いはあまりありません。
可動オブジェクトの重要な特性
- スペース: キッチンのキャビネットには、物置ほど多くの物を収納できません。
- 配置: 良く使用する物は近い場所に、ほとんど使用しない物は物置の奥などの遠い場所に収納されます。調理器具はキッチンに収納され、芝刈り機は庭の物置に収納されます。クリスマスツリーは普段は物置に収納されていますが、クリスマス前にリビングルームに出され、クリスマスが終わるとまた物置にしまわれます。
- レイテンシー: 食洗器は、お皿が 1 枚のみでも、一杯の状態でもかかる時間が同じため、通常は一杯になってから回します。
- 帯域幅: 洗濯物は、一度にすべて運べるようにランドリーバスケット入れます。
- 密度: 風船は、膨らました状態でも膨らます前の状態でも持ち運びできますが、通常は、膨らます前の状態のものを購入して保管し、使用するときにその場所で膨らまします。
- 削除/格納: 場合によっては、物を処分したり、必要に応じて作成したり、物置にしまったり (これにより物置のスペースが占領され、ほかの物にアクセスしづらくなります) するかどうか決めなければならないことがあります。
来客に備えて準備する場合も、明日の天気を予想するコンピューター・アプリケーションを実行する場合も、その状況下で、できるだけ低コストで、将来起こることに対して何かをしようとしていることに変わりはありません。
物/データの収納スペース、移動時間、到着までの待機時間、到着後の課題を最小限に抑えようとするでしょう。
コンピューター・データとストレージの重要な特性
スペースと配置
一般的な最近のコンピューターは、プロセッサーの各コアにあるレジスター (英語) に数百バイトのデータを格納できます。レジスター内のデータは、明示的に遠くのデバイスとの間で移動したり、コアによって作成されたり、あるいは上書きにより失われる可能性があります。データの移動は、L1 キャッシュとレジスター間の読み書きによって生じます。多くの場合、各コアには数万バイト (通常は32 KB) を格納できるプライベートの L1 キャッシュがあります。
L1 キャッシュとメインメモリーの間には、通常、ほかのプライベート・キャッシュと共有キャッシュがあります (ただし、非テンポラルなロードとストアはこれらを迂回できます)。これらのキャッシュのサイズは、256KB のプライベート・キャッシュ、プロセッサー上の数メガバイトの共有キャッシュ、マルチチャネル DRAM (MCDRAM (英語)) に格納される数ギガバイトのキャッシュ、高帯域幅メモリー (HBM (英語))、デュアル・インラインメモリー・モジュール (DIMM (英語)) など、さまざまです。
インテル® Xeon Phi™ プロセッサーの MCDRAM と HBM メモリーは、遠く離れた DIMM のキャッシュとして使用することができ、それぞれ 16GB と 60GB のデータを格納できます。
PC やサーバーのメインメモリーは、通常 4GB から 1500GB の範囲です。
将来の 3D XPoint™ テクノロジーの DIMM では、メインメモリーに 6TB (6000GB) を格納できるようになると予測されています。3D XPoint™ テクノロジーの DIMM は、DDR (英語) DIMM よりも帯域幅が狭くなる可能性があります。コンテンツが MCDRAM にキャッシュされることを考慮すると、この点は HBM メモリーによって補われるでしょう。DDR DIMM キャッシュの容量は、メインメモリーの約 10% なので、3D XPoint™ テクノロジーの DIMM キャッシュの容量は約 600GB となります。1970 年代前半のメインメモリーが 4KB だった頃とは大違いです。
キャッシュとメインメモリーは、次の点において根本的に異なります。
- キャッシュは、データが見つからない場合、ほかの場所を探します。
- メインメモリーは、最後の場所であり、データが見つからない場合、ほかの場所を探しません。
コンピューターの電源がオンの間、データはレジスター、キャッシュ、メインメモリーに保持されます。
メインメモリーのほかにデバイスがあり、コンピューターの電源がオフになっても、デバイスにあるデータは保持されます。通常、これらのデバイスは、メインメモリーよりも多くのデータを保持できます。ハードドライブ、ソリッドステート・ドライブ (SSD)、DVD などのリムーバブル・メディアはすべて、データを保持するためのデバイスの例です。
これらのデバイスのほうがメインメモリーよりも高速であれば、これらをメインメモリーとして使用できます。しかし、レイテンシーや帯域幅の制限により、プロセッサーがこれらのデバイス上のデータへアクセスする場合、メインメモリーにアクセスするよりもはるかに時間がかかります。
3D XPoint™ テクノロジーや 3D XPoint™ テクノロジー・ベースの DIMM は、電源がオフになってもコンテンツを保持できるため、メインメモリーとデータ保持の両方に使用できます。3D XPoint™ テクノロジーは、 インテル® Optane™ SSD で使用されています。
レイテンシー、帯域幅、密度
レイテンシーとは、データ要求が開始されてからデータを受け取るまでにかかる時間です。
データのフェッチ要求を含む多くの命令は、コンパイラーとハードウェアによって並べ替えられるため、多くの場合、レイテンシーを測定するのは困難です。データの受け取りを待機する間、ほかの処理を行う命令も並べ替えられます。コンパイラーとハードウェアは、フェッチされるデータを予測し、予測に基づいて処理を行うことで、データを受け取ったら結果をすぐに利用できるようにします。もちろん、予測が間違っていた場合は、すべての処理がやり直されます。このため、待機中にコンパイラーとハードウェアが有用な処理を見つけられない場合にレイテンシーが重要になります。
帯域幅とは、データの転送速度です。例えば、100 万枚の DVD を運搬する一隻の船を毎日運航する場合、レイテンシーは 6 日のように運搬にかかった日数で表しますが、帯域幅は 1 秒あたり数十ギガバイトで表します。
密度に関しては、コアとメモリーデバイス間では、4 バイト、8 バイト、またはそれ以上のバイト単位で多くのデータ転送が発生します。しかし、これらのデータがすべて転送先で使用されるわけではありません。
メモリー・サブシステムのコンポーネントのサイズ、レイテンシー、帯域幅
以下は、2016 年時点の大規模なプロセッサー (約 16 コア) で扱うことができるデータ量の要約です。
メモリー | サイズ | レイテンシー | 帯域幅 |
---|---|---|---|
L1 キャッシュ | 32 KB | 1 ナノ秒 | 1TB/秒 |
L2 キャッシュ | 256 KB | 4 ナノ秒 | 1TB/秒 2 つのコアで共有されることがある |
L3 キャッシュ | 8MB 以上 | L2 の 1/10 の速度 | 400GB/秒を超える |
MCDRAM | L3 の 1/2 の速度 | 400GB/秒 | |
DDR DIMM 上の メインメモリー |
4GB ~ 1TB | MCDRAM に似ている | 100GB/秒 |
インテル® Omni-Path ファブリック上の メインメモリー |
コストによる 制約のみ |
距離に依存 | 距離とハードウェアに依存 |
メモリーバス上の I/O デバイス |
6TB | メモリーの 1/100 ~ 1/1000 の速度 | 25GB/秒 |
PCIe* バス上の I/O デバイス |
コストによる 制約のみ |
ミリ秒未満~数分 | GB ~ TB/時間 距離とハードウェアに依存 |
まとめ
以前の記事「最新のメモリー・サブシステムをデータベース・コード、線形代数コード、ビッグデータ、エンタープライズ・ストレージに使用する利点」 (https://software.intel.com/en-us/articles/modern-memory-subsystems-benefits-for-data-base-codes-linear-algebra-codes-big-data) では、新しいメモリー・サブシステムのハードウェア・テクノロジーとアプリケーションのニーズを一致させました。この記事では、ハードウェア機能をアプリケーションの変数やヒープに割り当てられるデータ (アプリケーション開始時には存在せず、終了時に破棄される) に使用する場合について詳しく説明しました。次の記事「データ保持の概要」 (https://software.intel.com/en-us/articles/data-persistence-in-a-nutshell) では、ファイルの代わりに不揮発性メモリーを使用して、アプリケーションのある実行から次の実行へデータを保持する方法を紹介します。
著者紹介
Bevin Brett。インテル コーポレーションの主任エンジニアで、プログラマーとシステムユーザーがアプリケーション・パフォーマンスを向上できるように支援するツールに取り組んでいます。ニュージーランド出身で、同国で数学の学士号を取得しています。学業、そしてソフトウェア・エンジニアとしてのキャリアのため、オーストラリアを経てアメリカのニューハンプシャー州に移りました。
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。