データ転送効率の概念を理解したら、いくつかの異なるコントローラの実装例とそれぞれの効率を把握することで、システムにおけるトレードオフ項目に対して数値的な分析を行うことができる。ここでは、まず基本的なコントローラの実装例を基に、比較に用いる基本情報を把握するところから始めよう。
■基本的なコントローラ
ここで言う基本的なコントローラとは、上述したようなメモリーアクセスにおける最適化を行わずに、発生したリクエストの順番どおりに実行するタイプのもののことである。たまたまオープンなページ(行)に対するアクセスが生じた場合であれば、それにかかるアクセス時間は短くなり、そうでなければ長くなる。
基本的なコントローラにおいては、シーケンシャルアクセス(インクリメントアクセス)が行われるのかランダムアクセスが行われるのかによってデータ転送効率が大きく異なる。シーケンシャルアクセスだけが行われるのであれば、ほぼすべてのアクセスがオープンなページにヒットするため、高速なアクセス時間、すなわち最大のデータ転送効率が実現される(ほぼ100%に近い値となる)。一方、ランダムアクセスだけだと、ほぼすべてのアクセスがオープンなページにヒットしないので、アクセス時間が長くなってデータ転送効率が大幅に下がってしまう(約20%程度となる)。
表1に、ランダムアクセス/シーケンシャルアクセスの割合が異なる3つのトラフィックパターンにおけるデータ転送効率の例を示した。3つのトラフィックパターンとは、以下のようなものである。
表1は、3つのトラフィックパターンに対するデータ転送効率の下限値を表していると言えるのでぜひ参考にしていただきたい。
■CAMコントローラ
アクセスに対する最適化機能を持つコントローラの場合、基本的なコントローラと比べて、性能を大幅に向上することができる。図1は、上記3つのトラフィックパターンを、DRAMへのアクセスを最適化するCAM(content addressable memory:連想メモリー)を利用したより複雑なコントローラ(以下、CAMコントローラ)に当てはめた場合のデータ転送効率を表している。この種のコントローラの場合、リクエストはCAMに保存される。新しいリクエストが発生した際には、CAMに対する検索が行われ、保存されているほかのリクエストに対して最適化が施された上でキューイングが行われる。図1のように、CAMのサイズ(エントリ数)が8エントリから16、32、64といった具合に大きくなればなるほど、より多くの比較を同時に行うことが可能になる。その結果、複雑なトラフィックパターンに対するデータ転送効率が向上する。
CAMのサイズが8エントリの場合、ランダムアクセスが80%、シーケンシャルアクセスが20%のトラフィックパターンでは、データ転送効率が28%となる。50%ずつでは37%まで向上し、ランダムアクセスが80%、シーケンシャルアクセスが20%の場合には59%まで達する。同様に、16エントリのCAMでは、データ転送効率は各パターンに対応してそれぞれ33%、47%、70%となる。32エントリ、64エントリでも同様な傾向を示している。
一般に、CAMコントローラは、表1に示した基本的なコントローラと比較して、約2倍のデータ転送効率を常に実現する。これは、さまざまなコントローラ実装におけるトレードオフ要件を評価する際に、比較のための重要な要素となる。
メモリーサブシステムにおいて高いデータ転送効率が得られれば、設計者はそれを低コスト、高性能、低消費電力といったさまざまなシステムメリットに“変換”することができる。例えば、ビデオストリームやテレメトリストリームなどを扱う、バッファメモリーに対する多くの時間的制約があるアプリケーションであっても、実際にはある固定量の帯域幅が満たされていればよい。仮に、データ転送効率が70%から90%に向上したとすると、速度のより遅いメモリーモジュールを使用しても、必要なシステム帯域幅を十分に確保できることになる。
速度の遅いメモリーモジュールは、大量に販売されている。そのため入手しやすく、価格も安い。また、チップやボードなどのコストも低く抑えることが可能である。さらにはシステム設計も容易になるので、開発期間も短縮できる。通常、こうしたコストメリットは指数関数的なものとなり、20%のデータ転送効率は20%以上のコスト削減につながるとも言える。
設計上、最も重要なことが基本性能であるなら、メモリーインターフェースが提供する高いデータ転送効率は、ほとんどの場合、より高いシステム性能を実現することにそのまま直結する。アルゴリズムは適切な速度でデータを受け取った場合、最大の能力を発揮することができ、その性能は指数関数的な増加を示す。一方、データの取得に時間がかかると、アルゴリズムはタイミング上の重大な制約を受け、システムを最大性能まで戻すには、多くのオペレーションサイクルが必要となる。また、こうした“失速”が頻繁に起きると、システムの処理性能は本来であれば実現できる性能よりも低くなる。
高いデータ転送効率は、低消費電力化といったシステム要件にも直結する。速度は遅いが消費電力の少ないメモリーやI/O、プロセッサを活用して、必要なシステム性能を実現することが可能になる。データ転送効率を高めることで、より簡素なメモリーシステムの使用が可能になり、消費電力を大幅に削減することができる。また、データのトラフィックを処理する間に発生するアイドル時間が長くなれば、コントローラの節電機能を利用して、さらに消費電力を下げることも可能になる。
ある設計における適切なトラフィックパターンを選択するには、いくつかの一般的なアプリケーションに対し、図1のようなトラフィックパターンを適用することを考えてみるとよい。妥当なトラフィックパターンを選択すれば、それに続いて異なるコントローラ実装によるさまざまなデータ転送効率を比較することが可能になる。
データ処理アルゴリズムでより一般的に発生するのは、ランダムアクセスである。多くの場合、同アルゴリズムで用いられる変数やコードは、メモリー上に分散されて格納されている。そのため、ランダムアクセスが多くなるのである。
一方、メモリーアプリケーションには、データバッファやデータ保存を主に扱うものがある。例えば、ビデオ通信アプリケーションでは、アルゴリズムにのっとったデータ処理を行う直前/直後に、何らかの構造にまとめたデータをバッファする。このようなアプリケーションでは、シーケンシャルアクセスの割合が高くなる。ただし、この種のアプリケーションでも、リンクドリストやハッシュテーブルを使う場合は、それなりの割合でランダムアクセスが行われるケースがある。
Copyright © ITmedia, Inc. All Rights Reserved.