アドレス空間

アドレス空間はプロセッサを特徴付ける重要な要素です。特にADSP-2191は16ビットプロセッサであり、大量のデータを処理するときに必要な広い空間を提供できるかどうかが重要な点になります。

ADSP-2191は24ビット、16Mワードの単一アドレス空間を持っています。DSPはマイコンとは異なりアドレッシング単位はバイトではなくワードです。これはC言語で書かれたプログラムを移植するときに障壁となりますが、アドレッシング体系が単純になるという強みもあります。ともあれ、ADSP-2191がワード単位のアドレッシングしか許さないというのは重要です。一方、古いADSP-218xシリーズとは異なり、データ空間とプログラム空間は一本化されています。

24ビットのアドレス空間は16ビットアーキテクチャーを拡張することで実現しています。データ・アクセスの場合、下位16ビット部分はレジスタ間接データ・アドレッシングによってリニアに生成できますが、上位8ビット部分はページレジスタの値を単純にハードウェアが付加します。一方、プログラムフェッチの場合はカウンタが24ビット長なので24ビットのリニアな空間になっています。面倒なのでまとめましょう。

データ・アクセス
アドレッシングは16ビット・リニアです。上位8ビットはページ・レジスタの値がそのまま使われます。16ビット境界までアドレッシングが達した場合、自動インクリメントを行ってもページレジスタの値は変わりません。つまりラップアラウンドします。
プログラム・フェッチ
アドレッシングは24ビット・リニアです。24ビットのカウンタが使われますので16ビット境界を意識する必要はありません。

このようにADSP-2191のアドレッシング・空間はデータ・アクセスと命令フェッチで微妙に異なります。ただし、EZ-KIT Lite 2191を使う限りは最下位の64KWしか使用できませんからこの点はあまり気にする必要もないでしょう。

ADSP-2191のメモリーマップは下の図のようになっています。マッピングはほぼページ単位です。前述したように我々がEZ-KIT Liteで使用できるのは最下位64KWであり、図を見るとそれは内部メモリに割り当てられていることがわかります。内部メモリーの下位32KWはブロック0,1と呼ぶ24ビット幅のメモリーです。このメモリーはもっぱらPMバス経由での命令フェッチに使用しますが、データを置いてアクセスすることももちろんできます。内部メモリーの上位32KWはブロック2,3と呼ぶ16ビット幅のメモリーです。ここはデータアクセスのみに使用します。プログラムアクセスを行おうとしても、幅が足りないため使用できません。

なお、HRMには内部メモリーは0,1の二つのブロックからなると書いてありますが、これは誤りです。

Windowsマシンに見慣れた目からは内蔵64KWというのは小さく感じますが、制御用プロセッサとしては十分な大きさであり、使いでのあるプロセッサです。実際にはADSP-2191の64KWという内蔵メモリー量は大きすぎる場合が多く、メモリーを減らしたADSP-2195/2196という低価格版派生品が用意されています。一方通信や特殊な信号処理では64KWでは少ない場合が多くあります。そのような大量のデータを取り扱う場合も大容量の外つけメモリーを使用して大きなバッファを使用できます。このようにADSP-2191のアドレス空間は使いやすさと性能の間のバランスを取った設計となっています。

アドレス空間の構成

図1 アドレスマッピング

ブートメモリー空間に関してはE_STATを参照してください。

2191空挺団 | プログラム | EZ-KIT | こぼれ話 | アーキテクチャー | 命令 | レジスタ | DSP掲示板 | FAQ |