デュアル・アクセス

L1データ・メモリは非常に高速なメモリです。このメモリはレイテンシによるストールなしにデータをコアに供給できます。しかしながら、DSPではさらにデュアル・アクセス性能が問われます。

デュアル・アクセスを可能にするにはマルチポート・メモリが必要になります。しかし、マルチポート・メモリは低速で、Blackfinが目指す数百MHzといった周波数で動作させることは困難です。そこでBlackfinはL1メモリを擬似マルチポート化することでデュアル・アクセスを可能にしています。

図1 BF533のL1データ・メモリ

L1データSRAM

図1に示すようにL1データ・メモリは16KBのバンクを単位として配置されています。このバンクは内部で4つのサブバンクに別れています。サブバンクは4つのバスとのインターフェースを持つ高速シングルポート・メモリです。バスインターフェース部は内部の調停回路を使って4つのバスのうちの一つからの転送要求に応えます。

ここで、同じバンク内部の異なるサブバンクに二つのバスから要求があったとします。その場合、互いのサブバンクはお互いを妨害せず独立にデータ転送要求に応えます。つまり、二つのメモリは助け合ってマルチポート・メモリとして動作するのです。

かりに二つのバスが同じサブバンクに転送要求を出した場合、サブバンクは二つの要求を順番に処理します。これはシングルポート・メモリの動作です。このようにL1データ・メモリは内部の異なるサブバンクにアクセスする場合に限りマルチポート・メモリとして働きます。これが擬似マルチポート・メモリであると呼ぶ所以です。

異なるバンクへのアクセスはやはり同時に処理されます。このことからL1データメモリへのデュアル・アクセスを行う場合には、異なるサブバンクにあらかじめ変数を分散しておくことでデュアル・アクセスを1サイクルで完了させることができます。

DMAバスからの要求も同様に扱うことができます。L1メモリ・バンクは二つのバスからの転送要求とDMAバスからの転送要求が3つの異なるサブバンクに分散している場合、同時に処理すことができます。

スクラッチ・メモリはサブバンクと同様に振舞います。

L1データ・キャッシュ

データ・キャッシュのバンクもやはり4つの4KBのキャッシュ・サブバンクからなります。それぞれのサブバンクは2ウェイ・セット・アソシアティブ・キャッシュとして働きます。これらを4つ組み合わせたキャッシュ・バンクは16KBの2ウェイ・セット・アソシアティブ・キャッシュとして働きます。BF533には二つのキャッシュ・バンクがあるので全体で32KBの2ウェイ・セット・アソシアティブ・キャッシュとして動作します。

キャッシュされたデータへのデュアル・アクセスは二つのデータが異なる4KBサブバンクに入っていれば同時アクセス可能です。これはSRAMの場合と同じですので特に難しいわけではありません。

本当に難しいのはどのデータがどのキャッシュに入るかを理解することです。Blackfinを使いデータ・キャッシュ上で信号処理をするのならここを理解せずに最高性能をしぼりだすことはできません。

この部分の理解の仕方はいろいろですが、私のお勧めはあまり深く理解しようとしないことです。実装に奇妙なところがあるせいで、深いところまでハードウェア・リファレンスを読むとキャッシュに詳しい人ほど混乱することになるかもしれません。

4KBのサブバンクが理解の単位となります。16KBのバンクは内部のサブバンクをメモリー空間に対してダイレクト・マップ・キャッシュのように4の剰余系として割り当てます。この割り当て方法を使うと、それぞれのキャッシュは特定の領域に排他的に割り当てられ、アドレスがわかればどのサブバンクをキャッシュとして使用するか一意的に決まります。また、二つのバンクも排他的に割り当てられます。

バンク内部でのサブバンクの割り当てが一意に決まるのに対して、アドレス領域に対するバンクの割り当てはプログラマが再設定できます。デフォルトではサブバンク同様、2つのバンクがメモリー空間に対してダイレクト・マップ・キャッシュ同様に割り当てられます。つまり、16KBごとにバンクB、バンクA、バンクB、バンクAと交互に割り当てられます。これに対してDMEM_CONTROLのDBCSを1にすると、割り当てが変わります。

図2 デフォルトのキャッシュマッピング

DMEM_CONTROLのDBCSを1にすると、二つのバンクの割り当ては8MB毎に変更されます。すなわち最初の8MBにバンクBが、次の8MBにバンクAが、その次の8MBにバンクBが、といった形で割り当てられます。

図3 DBCS=1のときのキャッシュマッピング

DBCSをどのように設定すればいいかはアプリケーションがどのような傾向でデータをアクセスするかにはっきりと依存しますので一概には言えません。

Blackfin空挺団 | プログラム | EZ-KIT | コア&ペリフェラル | TOPPERS/JSP | こぼれ話 | DSP掲示板