メモリーシステムの設計ポイント:プロセッサの性能はこれで決まる!(2/4 ページ)
今日のプロセッサでは、複雑なメモリーシステムを組み込むことにより、プロセッサ性能や消費電力、コスト効率などを向上させている。本稿では、組み込みの密結合メモリー(TCM)やキャッシュなどについて解説することで、メモリーシステム設計のポイントを明らかにする。
アクセス遅延の要因
メモリーシステムの実装における最大の問題は、システムが使用するメモリーにおけるアクセス遅延をプロセッサの許容範囲内に収めることである。適切に設計されたメモリーシステムであればシステムのメモリーアクセス遅延をほとんど気にならない程度に隠蔽し、連続アクセスをサポートするのに十分な読み出し/書き込みのスループットを実現できる。つまり、メモリーへのアクセス時間を、あるデータにアクセスし、それと同一ブロック内の次のデータにアクセスする時間に抑えることが可能である。
本稿では、プロセッサの実行ユニットが命令やデータ待ちになる時間がないようにする方法について考えるが、メモリーシステムの設計者は、メモリーの面積や消費電力、ソフトウエア開発者の立場から見たツールの使いやすさなどのバランスを考慮して、メモリーアクセス遅延を隠蔽できるだけの性能がプロセッサに備わるようにしなければならない(別掲記事『プログラミングの容易性』を参照)。そのためには、まずメモリーアクセスに遅延をもたらす要因について知る必要がある。メモリーアクセス遅延に直接影響を与える主なものとしては、以下の4つが挙げられる。
・アドレスデコーディングによる遅延:アドレスをラッチしてどのワード線を活性化するかを決定するまでの時間。この処理に要する時間は、O(n log n)というメモリーの行と列によるアドレスサイズの関数で表される。メモリー構造が大きくなるほど、アドレスをデコードする時間も増大する
・ワード線の活性化による遅延:ワード線の電圧を上げるのにかかる時間。主にワード線の長さに依存するRC(抵抗×容量)遅延によって決まり、配線が長くなるほど遅延も大きくなる
・ビット線のセンシングによる遅延:センスアンプがセルに保持されたデータを検出するのにかかる時間。ビット線のアーキテクチャやセンス駆動線のRC遅延、セルとビット線の容量比、センスアンプの構成などのすべてが影響を及ぼす
・センスアンプ出力の駆動に伴う遅延:データをセンスアンプから出力へと伝送するのにかかる時間。RC遅延である
プログラミングの容易性
プログラミングの容易性は、ソフトウエア開発者にとって重要な問題である。メモリー階層を隠蔽した平坦なアドレス空間は、プログラミングを容易にする。米Microchip Technology社でデジタルシグナルコントローラ部門の技術フェローを務めるBrian Boles氏は、「大抵のコンパイラは、一般的なメモリーシステムをターゲットとしたコンパイルを得意としている」と述べる。コンパイラにとってアプリケーション全体の動的な特性が分からない状態で、特殊なメモリーシステムに対する命令/データの配置を最適化しなければならないとしたら、その作業は非常に困難なものとなる。
LinuxなどのOSを用いる高度なアプリケーションでは、仮想アドレッシングをサポートしたメモリーシステムが求められるかもしれない。また、設計期間が短いため、サービスが豊富で処理の重いOSを使用しなければならないソフトウエア開発者は、ソフトウエアを分割するという手段によってオンチップリソースを活用し、消費電力やコストを削減できるということを知っておくべきである。さらに、OSがオンチップメモリーを用いて処理を実行するにはどれだけの容量を要するのか、また、アプリケーションに許されるメモリー量はどのくらいなのか、といったことを検討した上で、メモリー量のバランスを決定することが求められる。
米Intel社のエンベディッド/コミュニケーショングループでセグメントマーケティングのマネジャを務めるPhil Ames氏は、「現在のところ、汎用OSはメモリーシステム上に命令/データを完全に物理マッピングする機能を持っていない。この機能が、メモリーを最適に活用するために必須となるものであるのにもかかわらずだ。それに対し、組み込み機器では、メモリーシステムを最大限に活用するために、ソフトウエアに調整を加えてマッピングを最適化するということが一般的に行われている」と述べる。
異なる種類のメモリーをそれぞれ管理するには、特殊なソフトウエアが必要である。例えば、ブロックサイズの小さいNAND型フラッシュメモリー(528バイト/ページ)とブロックサイズの大きいNAND型フラッシュメモリー(2112バイト/ページ)とでは、それぞれに異なる管理用ソフトウエアが求められる。
この問題に対する1つの解としては、ソフトウエアを階層に分けてモジュール化し、個々のメモリーに対して最適化する手法がある。このことによって、ブロックサイズなどの違いに対応するためにソフトウエアに変更が必要となっても、変更しなければならない部分を最小限に抑えられる。
東芝のメモリー製品グループテクニカルスタッフであるDoug Wong氏によると、「NAND型フラッシュメモリーは、使いやすさを向上させるためにメモリーデバイス自体を高度にインテリジェント化させた最初の例だろう」と述べる。同社の「LBA-NAND」とeMMC準拠の組み込み用NAND型フラッシュメモリーには、いずれもブロック管理や摩耗平滑化(wear leveling)、論理ブロックから物理ブロックへの変換、自動誤り訂正などの機能を実現する内蔵コントローラが含まれている。「これにより、FFS(flash file system)やFTL(flash translation layer)などのファイルフォーマットを実現するためにシステム開発者やソフトウエア開発者が請け負っていた負担を軽減させることができるのである」(同氏)という。
脚注
※2…"How to Optimize SOC Performance Through Memory Tuning," White Paper, Tensilica.
Copyright © ITmedia, Inc. All Rights Reserved.