ADSP-219xでプログラマが使用できるレジスタには次のようなものが有ります。
ここに表したレジスタは演算とアドレッシングにかかわるものです。この他に制御命令が使うレジスタやステータスレジスタがありますが、それらの紹介は別に行います。今回はこれらのレジスタの概略を説明し、後で詳細を説明することにします。
上のレジスタは大きく二群に分けることができます。一つが演算レジスタ群で図の上2/3を占めています。残りがDAGレジスタ群です。
演算レジスタ群の中核をなすのはレジスタファイルです。これはMX0, MX1から始まってSIまでの16本からなり、演算命令のオペランドとして自由に使うことができます。SB、SEレジスタはシフター専用のレジスタでこの二本は使い方が決まっています。
レジスタファイルの下にあるMAC、シフター、ALUは演算ハードウェアであってレジスタでは有りません。その下にあるMR2,MR1, MR0, SR2, ...は結果レジスタです。結果レジスタはAFを除くとレジスタファイルにも属しています。そのため、演算結果をすぐにオペランドとして使用するような場合もいちいちデータを移す必要はありません。
ADSP-219xの演算レイテンシは1です。つまり、演算結果は次のサイクルに他の命令のオペランドとして使えます。このため、ストールやディレイスロットに悩まされること無く、素直に組んだコードが一番速く走るという使いやすさを備えています。
DAGレジスタ群はアドレッシングに使用します。Ixレジスタにはオペランドアドレスを格納し、Mxレジスタでオフセットやアドレス更新量を指定します。DAGレジスタを使って1サイクルの間に2つのオペランドアドレスを生成することができます。
演算レジスタにもDAGレジスタにも裏レジスタが存在します。これは割り込みなどで高速にコンテキストを退避する時に重宝します。