L1データ・メモリはBlackfinコアが操作するデータを格納するためのメモリです。このメモリは非常に高速で、コアと同じ速度で動作し、常にストールなし(レイテンシ=1)で読み込むことができます。
図1にBF533のL1データ・メモリの概要を示します。BF533のL1データ・メモリは32KBのキャッシュと32KBのSRAMからなります。キャッシュもSRAMも16KBを単位とするバンクを構成しています。Blackfinアーキテクチャーではデータ・メモリーの増設はバンク単位になっています。
なお、4KBのスクラッチ・メモリも図に示してあります。
図1 BF533のL1データ・メモリ
BF533は16KBのデータSRAMバンクを2つ持っており、全部で32KBのL1命令SRAMを構成します。BlackfinコアはL1データSRAMの内容をプログラムから自由に読み書きできます。また、DMAも専用バスをつかってSRAMの内容をアクセスできます。
BF533は16KBのデータ・キャッシュを2つ持っています。このキャッシュは2ウェイのセット・アソシアティブ・キャッシュとして働くほか、独立に16KBのSRAMとして動作するよう設定することもできます。キャッシュとして使う場合はDMA転送はできなくなります。
キャッシュの動作は汎用マイクロプロセッサのそれと同じです。外部メモリにデータを置く場合にはL1データ・キャッシュが速度低下を効果的に防いでくれます。
スクラッチ・メモリは4KBの小さなメモリ領域です。このメモリはL1データ・メモリと同様に使用できますが、DMA転送を行えません。
データが大きくなりすぎて外部と内部のメモリに分けて配置しなければならない場合、データのどの部分をどこに配置するかは悩ましい問題です。一般には以下の指針に従えばかなり満足できるはずです。
さて、肝心のデュアル・ロードの話をしていません。それは次回ということで。