(57)【特許請求の範囲】
【請求項１】
デジタル信号処理装置に備えられ、
循環リンクリスト形態のマトリックスデータを含むオペランドデータ及び演算結果データを貯蔵するデータ貯蔵手段と、
前記デジタル信号処理装置で行われる命令語の内容に応じてマトリックス演算に必要な一連の第１オペランドデータのアドレス、一連の第２オペランドデータのアドレス及び一連の演算結果データの貯蔵アドレスを順次に生成するアドレス発生手段と、
前記アドレス発生手段により生成されたアドレスに位置したデータを前記データ貯蔵手段から引出して前記命令語の内容に応じて演算を行う演算手段と、
を含むマトリックス演算装置であり、
前記アドレス発生手段が、
前記循環リンクリスト形態のマトリックスデータのアドレスを貯蔵し、前記命令語の内容に応じて第１マトリックスデータアドレス、第２マトリックスデータアドレス及び演算結果マトリックスデータアドレスを出力するマトリックスアドレス貯蔵手段と、
前記マトリックスアドレス貯蔵手段から第１マトリックスデータアドレスが入力され、前記命令語に応じる一連の第１オペランドデータのアドレスを順次生成するAアドレス生成器と、
前記マトリックスアドレス貯蔵手段から第２マトリックスデータアドレスが入力され、前記命令語に応じる一連の第２オペランドデータのアドレスを順次生成するBアドレス生成器と、
前記マトリックスアドレス貯蔵手段から演算結果マトリックスデータアドレスを入力され、前記命令語に応じる一連の演算結果データの貯蔵アドレスを順次に生成するCアドレス生成器と、
を具備すること、並びに、
前記マトリックスアドレス貯蔵手段が、
前記循環リンクリスト形態のマトリックスデータの開始アドレスを貯蔵するXレジスタ、
前記Xレジスタに貯蔵された開始アドレスからの相対的な値で表された、処理されるべきデータのアドレスを貯蔵するPOSレジスタ、及び、
前記循環リンクリスト形態のマトリックスデータに貯蔵されたデータの数を貯蔵するMAX＿POSレジスタ、
から成る多数のマトリックスアドレスレジスタ群を具備すること、
を特徴とするデジタル信号処理装置におけるマトリックス演算装置。
【請求項２】
前記マトリックスアドレス貯蔵手段は、
前記Cアドレス生成器により生成されたアドレスから、前記演算手段により演算された結果値が貯蔵されるべき前記データ貯蔵手段内のアドレスを解釈するデコーダ、をさらに具備することを特徴とする請求項１に記載のデジタル信号処理装置におけるマトリックス演算装置。
【請求項３】
前記マトリックスアドレス貯蔵手段は、
多数のマトリックスアドレスレジスタ群に貯蔵されたマトリックスデータのアドレスのうち、前記命令語の内容に応じて第１マトリックスデータアドレスを選択する第１マルチプレクサ、第２マトリックスデータアドレスを選択する第２マルチプレクサ及び演算結果マトリックスデータアドレスを選択する第３マルチプレクサをさらに具備することを特徴とする請求項１に記載のデジタル信号処理装置におけるマトリックス演算装置。
【請求項４】
前記Aアドレス生成器は、
第１マトリックスデータアドレスが入力され、命令語に応じてXレジスタ値とPOSレジスタ値とを合わせて出力し、次いで直前に生成されたアドレス値に１を足したアドレス値を出力するが、そのアドレス値がXレジスタ値とMAX＿POSレジスタ値とを合わせた値より大きい場合にXレジスタ値を最終的に出力することを特徴とする請求項１に記載のデジタル信号処理装置におけるマトリックス演算装置。
【請求項５】
前記Aアドレス生成器は、
多数のクロックの間に同一なアドレス値を出力するROWレジスタをさらに具備することを特徴とする請求項１に記載のデジタル信号処理装置におけるマトリックス演算装置。
【請求項６】
前記Aアドレス生成器は、
前記命令語に含まれたオフセットアドレスとセグメントアドレスレジスタのセグメントアドレスが入力され、セグメントアドレスとオフセットアドレスとを結合して出力するスカラーデータ生成部をさらに具備することを特徴とする請求項１に記載のデジタル信号処理装置におけるマトリックス演算装置。
【請求項７】
前記Bアドレス生成器は、
第２マトリックスデータアドレスが入力され、命令語に応じてXレジスタ値とPOSレジスタ値とを合わせて出力し、次いで直前に生成されたアドレス値に１を足したアドレス値を出力するが、そのアドレス値がXレジスタ値とMAX＿POSレジスタ値とを合わせた値より大きい場合にXレジスタ値を最終的に出力することを特徴とする請求項１に記載のデジタル信号処理装置におけるマトリックス演算装置。
【請求項８】
前記Bアドレス生成器は、
前記命令語に含まれたオフセットアドレスとセグメントアドレスレジスタのセグメントアドレスが入力され、セグメントアドレスとオフセットアドレスとを結合して出力するスカラーデータ生成部をさらに具備することを特徴とする請求項１に記載のデジタル信号処理装置におけるマトリックス演算装置。
【請求項９】
前記Cアドレス生成器は、
演算結果マトリックスデータアドレスが入力され、命令語に応じてXレジスタ値とPOSレジスタ値とを合わせて出力し、次いで直前に生成されたアドレス値に１を足したアドレス値を出力するが、そのアドレス値がXレジスタ値とMAX＿POSレジスタ値とを足した値より大きい場合にXレジスタ値を最終的に出力することを特徴とする請求項１に記載のデジタル信号処理装置におけるマトリックス演算装置。
【請求項１０】
前記Cアドレス生成器は、
前記演算結果マトリックスの大きさを示すNUM＿ROWSレジスタの値及びNUM＿COLSレジスタの値が入力され、命令語に応じて直前に生成されたアドレス値にNUM＿COLSレジスタの値を足したアドレス値を出力するが、そのアドレス値がXレジスタ値とMAX＿POSレジスタ値とを合わせた値より大きい場合に直前に生成されたアドレス値にNUM＿ROWSレジスタの値を足してPOSレジスタの値を引いたアドレス値を出力することを特徴とする請求項１に記載のデジタル信号処理装置におけるマトリックス演算装置。
【請求項１１】
前記Cアドレス生成器は、
前記命令語に含まれたオフセットアドレスとセグメントアドレスレジスタのセグメントアドレスを入力され、セグメントアドレスとオフセットアドレスとを結合して出力するスカラーデータ生成部をさらに具備することを特徴とする請求項１に記載のデジタル信号処理装置におけるマトリックス演算装置。
【請求項１２】
信号処理プログラムを貯蔵するプログラムメモリと、
前記プログラムメモリでフェッチした命令語を一時貯蔵する命令語レジスタと、
前記命令語レジスタに貯蔵された命令語を解釈して制御信号を生成する命令語デコーダと、
循環リンクリスト形態のマトリックスデータを含むオペランドデータ及び演算結果データを貯蔵するデータ貯蔵手段と、
前記制御信号に応じてマトリックス演算に必要な一連の第１オペランドデータのアドレス、一連の第２オペランドデータのアドレス及び一連の演算結果データの貯蔵アドレスを順次に生成するアドレス発生手段と、
前記アドレス発生手段により生成されたアドレスに位置したデータを前記データ貯蔵手段から引出して前記制御信号に応じて演算を行う演算手段と、
を含む、マトリックス演算機能を有するデジタル信号処理装置であり、
前記アドレス発生手段が、
前記循環リンクリスト形態のマトリックスデータのアドレスを貯蔵し、前記命令語の内容に応じて第１マトリックスデータアドレス、第２マトリックスデータアドレス及び演算結果マトリックスデータアドレスを出力するマトリックスアドレス貯蔵手段と、
前記マトリックスアドレス貯蔵手段から第１マトリックスデータアドレスが入力され、前記命令語に応じる一連の第１オペランドデータのアドレスを順次生成するAアドレス生成器と、
前記マトリックスアドレス貯蔵手段から第２マトリックスデータアドレスが入力され、前記命令語に応じる一連の第２オペランドデータのアドレスを順次生成するBアドレス生成器と、
前記マトリックスアドレス貯蔵手段から演算結果マトリックスデータアドレスを入力され、前記命令語に応じる一連の演算結果データの貯蔵アドレスを順次に生成するCアドレス生成器と、
を具備すること、並びに、
前記マトリックスアドレス貯蔵手段が、
前記循環リンクリスト形態のマトリックスデータの開始アドレスを貯蔵するXレジスタ、
前記Xレジスタに貯蔵された開始アドレスからの相対的な値で表された、処理されるべきデータのアドレスを貯蔵するPOSレジスタ、及び、
前記循環リンクリスト形態のマトリックスデータに貯蔵されたデータの数を貯蔵するMAX＿POSレジスタ、
から成る多数のマトリックスアドレスレジスタ群を具備すること、
を特徴とするデジタル信号処理装置。
【請求項１３】
前記命令語デコーダは、
前記プログラムメモリに貯蔵された命令語をフェッチして前記命令語レジスタに一時貯蔵する段階と、
前記アドレス発生手段で第１オペランドデータのアドレス及び第２オペランドデータのアドレスを生成する段階と、
第１オペランドデータ及び第２オペランドデータを前記データ貯蔵手段から引出して前記演算手段に移す段階と、
前記演算手段で演算を行い、前記アドレス発生手段で演算結果データの貯蔵アドレスを生成する段階と、
前記演算手段から出力された演算結果データを前記データ貯蔵手段に貯蔵する段階と、
のパイプライン構造に対応する制御信号を生成することを特徴とする請求項１２に記載のデジタル信号処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデジタル信号処理装置のように多くのデータを演算する装置や電子システムのための演算装置に係り、特に多くのデータを処理するためにマトリックス形態に表現された命令語を処理するデジタル信号処理装置の演算装置及びマトリックス演算機能を有するデジタル信号処理装置に関する。
【０００２】
【従来の技術】
半導体産業の発達によって小型で、小容量の電池でも長時間使用しうるシステムが登場した。特に、補聴器のような付着型医療機器や個人用無線通信システムのような技術分野では消費電力とシステムのサイズが重要な関心の対象となっている。
【０００３】
一方、情報化時代に応じて多量のデータを処理するデジタル信号処理装置は電子産業分野で大きな発展を成してきた。しかし、このような発展は性能の改善という観点から接近してこれらシステムの消費電力が急増しつつある。
【０００４】
一般に、デジタル信号処理装置ではバラのデータ単位に処理する。例えば、数学式１のような２×２マトリックスを乗算すれば、一般のマイクロプロセッサーはこれを一々処理することになる。
【０００５】
【数１】
0003819686.tif 000002
数学式１を一般のマイクロプロセッサーで行われるプログラムとして表現すれば次の通りである。
【０００６】
CLR ACC
MULT R５ R９
ADD ACC R５
MULT R６ R１０
ADD ACC R６
MV R１ ACC
CLR ACC
MULT R５ R１１
ADD ACC R５
MULT R６ R１２
ADD ACC R６
MV R２ ACC
CLR ACC
MULT R７ R９
ADD ACC R５
MULT R８ R１０
ADD ACC R６
MV R３ ACC
CLR ACC
MULT R７ R１１
ADD ACC R５
MULT R８ R１２
ADD ACC R６
MV R４ ACC
前記プログラムのサイズを縮めるために多くのデジタル信号処理器では乗算と加算を１つのクロック周期に行う"MAC"機能をさらに使用している。"MAC"機能が追加されたデジタル信号処理器で行われるプログラムは概略的に次のように示しうる。"MAC"機能が追加されることによって、そうでない場合よりプログラム実行時間とプログラムのサイズが縮められる。
【０００７】
CLR ACC
MAC R５ R９
MAC R６ R１０
ADD ACC temp
MV R１ ACC
CLR ACC
MAC R５ R１１
MAC R６ R１２
ADD ACCt emp
MV R２ ACC
CLR ACC
MAC R７ R９
MAC R８ R１０
ADD ACC temp
MV R３ ACC
CLR ACC
MAC R７ R１１
MAC R８ R１２
ADD ACC temp
MV R４ ACC
前記プログラムの例を説明すれば、単にアドレスのみが増加して"MAC"機能が周期的に反復されることが見られる。これを効率よく処理するために既存のデジタル信号処理装置で反復文(RPT)と自動アドレス増加機能(例えば、R５++)を採用している。これら機能はマトリックス演算のような多数の反複文が要されるプログラムに効率よく用いられる。反復文と自動アドレス増加機能が提供されるプログラムは次のように作成されうる。
【０００８】
CLR ACC
RPT２
MAC R５++ R９++
ADD ACC temp
MV R１ ACC
CLR ACC
RPT２
MAC R５++ R１１++
ADD ACC temp
MV R２ ACC
CLR ACC
RPT２
MAC R７++ R９++
ADD ACC temp
MV R３ ACC
CLR ACC
RPT２
MAC R７++ R１１++
ADD ACC temp
MV R４ ACC
前述したような改善にも拘らず、既存のデジタル信号処理装置で行われるプログラムのサイズは相変らず大きい。
【０００９】
しかし、マトリックスを１つの変数で表現する場合には数学式１の計算を次のようなコードのみで行える。
SETD ２２２
MULT X１ X２ X３
何れのアルゴリズムや機能であっても多くの命令語で表現すれば、これによって大容量のメモリが必要となり、結局デジタル信号処理装置のようなプロセッサーでは多くの電力を消費することになる。これはプロセッサーで消費される電力の大部分がメモリにおける命令語の読出に消費されるからである。
【００１０】
また、命令語メモリの容量が制限されており、多くの命令語で表現される機能を実行する内蔵型プロセッサーを使用するシステムは、１つのチップ内に必要な命令語を全て内蔵できない場合も発生する。このような場合、システムは外部のメモリを拡張して使用すべきであり、これによってさらに多くの電力が消費される。従って、何れかの機能を多くの命令語で表現する場合、携帯型のような電子システムでは、再充電するまでの製品の使用時間を短縮させ、多数のチップを用いる必要があることから製品のサイズを大きくし、製品の値段も上昇させる。
【００１１】
一方、シストリックアレー演算(Systolic Array Operation)のようなベクトル演算を行うシステムでは多数の演算を一度に処理しうる。このようなシステムはチップ内に乗算器と加算器のような演算装置を複数個備えて一度にデータを処理する。このような方式は、システムの性能は向上させるが、電力面とチップのサイズを考慮すれば良い解決策にはならない。また、デジタル信号処理アルゴリズムのうちこのようなベクトル演算が効率よく用いられる場合は一部に過ぎない。
【００１２】
【発明が解決しようとする課題】
本発明は最近の電子製品の携帯化に必須的な要素である低消費電力で長時間の動作を保障しうる技術に関する。デジタル信号処理装置のようなプロセッサーにおける多くの電力(５０-８０%)はプログラムメモリで命令語を読出す時用いられる。メモリの消費電力はメモリのサイズと読出/書込数に比例するために、省力するためには、メモリにおいてデータの読出数とメモリのサイズを縮小することが必要である。
【００１３】
多くの信号処理アルゴリズムはマトリックス表現方式を用いて簡単に表現できるので、本発明ではデータの表現方式にマトリックス表現方式を採択してプログラムメモリのサイズを縮めると同時にメモリから命令語を読出す回数を減らしうるデジタル信号処理装置におけるマトリックス演算装置及びマトリックス演算機能を有するデジタル信号処理装置を提供することをその目的とする。
【００１４】
【課題を解決するための手段】
前記目的を達成するために本発明に係るデジタル信号処理装置に備えられ、マトリックス演算を行う装置は、循環リンクリスト形態のマトリックスデータを含むオペランドデータ及び演算結果データを貯蔵するデータ貯蔵手段と、前記デジタル信号処理装置で行われる命令語の内容に応じてマトリックス演算に必要な一連の第１オペランドデータのアドレス、一連の第２オペランドデータのアドレス及び一連の演算結果データの貯蔵アドレスを順次に生成するアドレス発生手段と、前記アドレス発生手段により生成されたアドレスに位置したデータを前記データ貯蔵手段から引出して前記命令語の内容に応じて演算を行う演算手段とを含む。
【００１５】
前記デジタル信号処理装置におけるマトリックス演算装置で前記アドレス発生手段は、前記循環リンクリスト形態のマトリックスデータのアドレスを貯蔵し、前記命令語の内容に応じて第１マトリックスデータアドレス、第２マトリックスデータアドレス及び演算結果マトリックスデータアドレスを出力するマトリックスアドレス貯蔵手段と、前記マトリックスアドレス貯蔵手段から第１マトリックスデータアドレスが入力され、前記命令語に応じる一連の第１オペランドデータのアドレスを順次に生成するAアドレス生成器と、前記マトリックスアドレス貯蔵手段から第２マトリックスデータアドレスが入力され、前記命令語に応じる一連の第２オペランドデータのアドレスを順次に生成するBアドレス生成器と、前記マトリックスアドレス貯蔵手段から演算結果マトリックスデータアドレスが入力され、前記命令語に応じる一連の演算結果データの貯蔵アドレスを順次に生成するCアドレス生成器とを具備する。
【００１６】
前記他の目的を達成するために本発明に係るマトリックス演算機能を有するデジタル信号処理装置は、信号処理プログラムを貯蔵するプログラムメモリと、前記プログラムメモリでフェッチした命令語を一時貯蔵する命令語レジスタと、前記命令語レジスタに貯蔵された命令語を解釈して制御信号を生成する命令語デコーダと、循環リンクリスト形態のマトリックスデータを含むオペランドデータ及び演算結果データを貯蔵するデータ貯蔵手段と、前記制御信号に応じてマトリックス演算に必要な一連の第１オペランドデータのアドレス、一連の第２オペランドデータのアドレス及び一連の演算結果データの貯蔵アドレスを順次に生成するアドレス発生手段と、前記アドレス発生手段により生成されたアドレスに位置したデータを前記データ貯蔵手段から引出して前記制御信号に応じて演算を行う演算手段とを含む。
【００１７】
前記デジタル信号処理装置において、前記命令語デコーダは、前記プログラムメモリに貯蔵された命令語をフェッチして前記命令語レジスタに一時貯蔵する段階と、前記アドレス発生手段で第１オペランドデータのアドレス及び第２オペランドデータのアドレスを生成する段階と、第１オペランドデータ及び第２オペランドデータを前記データ貯蔵手段から引出して前記演算手段に移す段階と、前記演算手段で演算を行い、前記アドレス発生手段で演算結果データの貯蔵アドレスを生成する段階と、前記演算手段から出力された演算結果データを前記データ貯蔵手段に貯蔵する段階のパイプライン構造に対応する制御信号を生成することを特徴とする。
【００１８】
【発明の実施の形態】
以下、添付した図面に基づき本発明を詳しく説明する。
図１は本発明が適用されたデジタル信号処理装置のブロック図である。
【００１９】
信号処理アルゴリズムはプログラムメモリ１０に貯蔵されており、プログラムメモリ１０から読出された命令語は命令語レジスタ(IR)１１に貯蔵される。命令語レジスタ１１に貯蔵された命令語は命令語デコーダ１２により解釈されて各機能ブロックに必要な制御信号が生成される。データメモリ１３は２つの出力と１つの入力を有するレジスタファイル形態よりなることが望ましい。データメモリ１３から出力される２つのデータを指定するためのAアドレス生成器１４a及びBアドレス生成器１４bとLOG２ １５a、SHIFT１５b、ALU１５c、MULT１５dのような演算ブロックで計算された結果を貯蔵する所を指定するCアドレス生成器１４cが備えられる。外部との通信のためには直列インタフェース１７、並列インタフェース１８、メモリインタフェース１９が備えられている。内部プロセッサーにクロックを供給するクロック発生器２０があり、インタラプトとプロセッサー状態を示すレジスタ２１a、２１b、一定の時間周期でインタラプトを発生するためのタイマー２１cなどが備えられる。
【００２０】
そして、マトリックスアドレス貯蔵手段２２は多様なマトリックスのアドレスを管理、貯蔵する部分である。
デジタル信号処理アルゴリズムはマトリックス形式を用いるとそのアルゴリズムをさらに効率よく表現できる場合が多い。従って、マトリックスの表現と演算を命令語レベルに表現及び演算可能にすることによって、デジタル信号処理アルゴリズムをデジタル信号処理装置で小量のメモリで表現できる。
【００２１】
図２に示されたマトリックスデータの表現方式によれば、複数個のデータに１つのベクトル変数が設定でき、ベクトル変数を有する１つの命令語でスカラー変数を有する複数個の命令語に代えることができる。図２に示された３×３マトリックス乗算を既存のデジタル信号装置の命令語で表現すれば、多数の命令語が必要となる。
【００２２】
図３は循環リンクリスト(Circular Linked List)の基本構成要素を示したものであって、"PREV"は前のデータを指定し、"NEXT"は次のデータを指定する。そして、中間の"DATA"に実際のデータ値が貯蔵される。図３の構成要素を必要なデータ数だけ連結すれば、図４に示されたように１つのリストとなる。
【００２３】
図４は"a"、"b"、"c"、"d"、"e"のデータを有する循環リンクリストを示したものである。ここで、POSは現在用いられているデータを示すものであって、実際にはそのデータが貯蔵されているメモリのアドレスとなる。
【００２４】
本発明ではこのような基本構造を有する循環リンクリストを実際のハードウェアメモリ上に図５のように具現する。Cのような上位プログラム言語ではポインタなどを用いて循環リンクリストを具現できるが、上位プログラム言語で具現された循環リンクリストは、ハードウェア依存的な命令語でコンパイルされる場合に、ハードウェア資源に好適に表現されずハードウェア負担を加重させる。これはハードウェアの設計側面で望ましくないため、本発明では連続されたメモリの構造を用いてこれを具現する。
【００２５】
図５において"X"はリストの開始を示すメモリのアドレスを示し、"POS"は"X"からの相対的な距離によって現在処理されているデータの位置を示す。従って、図４の"POS"アドレス(現在のデータのアドレス)を得るためには、図５の"X"に"POS"を足せばよい。"POS"に現在のデータの絶対的なアドレスを記録することでなく、"X"からの相対的な距離を記録することによって"POS"レジスタのサイズを縮小することができる。"MAX＿POS"はリストに貯蔵されているデータの数を表現している。従って、リストの最後のデータのアドレスは"X"に"MAX＿POS"を足せばよい。
【００２６】
このような"X"、"POS"、"MAX＿POS"を複数個貯蔵してマトリックス演算に用いる。このような値を貯蔵している所は図１のマトリックスアドレス貯蔵手段２２であり、これに対する詳細な構成は図７に示される。
【００２７】
図６は演算部、レジスタファイル１３及びレジスタファイルのアドレス生成部の関係をさらに明確に示す図面である。図６において演算部は乗算器１５d及びALU１５cを含んで構成され、アドレス生成部はマトリックスアドレス貯蔵手段２２、Aアドレス生成器１４a、Bアドレス生成器１４b、Cアドレス生成器１４cを含んで構成される。
【００２８】
Aアドレス生成器１４a及びBアドレス生成器１４bは演算部に入力されるデータのアドレスを生成する。このように生成されたアドレスに対応するデータがレジスタファイル１３から出力されてBUSA、BUSBを通して演算部に伝送される。演算部は命令語に対応した命令を行った後にBUSCを通して演算された結果を送る。すると、Cアドレス生成器１４cが生成したアドレスに対応するレジスタファイル１３内のアドレスに、演算された結果が貯蔵される。このような一連の作業がマトリックス演算時にはマトリックスの大きさに対応する必要な数だけ繰返して行われる。
【００２９】
図７はマトリックスアドレス貯蔵手段２２をさらに具体的に表現した図面である。デコーダ７３はCアドレス生成器１４cにより生成されたアドレスC＿ADDRESSから、演算部により演算された結果が貯蔵されるべきレジスタファイル１３内のアドレスを解釈し、そのアドレスを貯蔵すべきマトリックスアドレス貯蔵手段２２内のレジスタを決定する。本発明の望ましい一実施例でマトリックスアドレス貯蔵手段２２は１６個のマトリックスアドレスを支援するので、Xレジスタ７０、POSレジスタ７１、MAX＿POSレジスタ７２等３つのレジスタを各々１６個ずつ具備する。Xレジスタ(７０)は１６ビットで構成されており、最大１６ビットのアドレスを支援し、POSレジスタ７１及びMAX＿POSレジスタ７２は各々８ビットで構成され、最大２５６個のデータを有するリストを具現可能にする。また、各レジスタの値はそれぞれ選択的に読出または書込が実行される。
【００３０】
マトリックスアドレス貯蔵手段２２から出力される値は命令語レジスタIRの値によって決定される。各マルチプレクサ７４a、７４b、７４cは命令語レジスタIRに貯蔵された値により１６個のマトリックスアドレスのうち１つを選択し、各アドレス生成器１４a、１４b、１４cは選択されたマトリックスアドレスにより最終のアドレスを生成する。
【００３１】
図８はAアドレス生成器１４aのブロック図である。Aアドレス生成器１４aはBUSAに出力するデータをレジスタファイル(データメモリ)１３から選択するためのアドレスを生成するブロックである。命令語レジスタ１１に貯蔵された命令語がマトリックス演算のための命令語でない場合、Aアドレス生成器１４aはデータの上位アドレスを貯蔵するBANK＿Aレジスタに貯蔵された値とIRレジスタの上位８ビット値を連結した１６ビットのアドレスを生成して出力する。これに対して、命令語レジスタ１１に貯蔵された命令語がマトリックス演算のための命令語の場合、Aアドレス生成器１４aは最初には"X"+"POS"のアドレスを生成し、続く演算動作時には前記アドレスに１を足した("ADDRESS"+１)アドレスを生成するが、その値が"X"+"MAX＿POS"より大きくなると"X"アドレスを選択して出力する。そして、マトリックス乗算の場合、１本の行が反復的に選択される必要があるので、Aアドレス生成器１４aはROWアドレスを記憶するレジスタ８０を具備する。そして、マトリックス演算時に必要な入力のI、J、K値(ここで、Iは結果値の行、Jは結果値の列、Kは乗算演算のインデックスを示す)を１つずつ減らしながら行うことになるが、Aアドレス生成器１４aは"J"、"K"入力のみが用いられる。
【００３２】
図９はBアドレス生成器１４bのブロック図であって、Bアドレス生成器１４bはBUSBに出力するデータをレジスタファイル(データメモリ)１３で選択するためのアドレスを生成するブロックである。Bアドレス生成器１４bはAアドレス生成器１４aとほぼ同一であるが、"ROW"アドレスの生成が不要なので、このためのレジスタが要らない点のみが違う。
【００３３】
図１０はCアドレス生成器１４cのブロック図であって、Cアドレス生成器１４cは、BUSCを通して送られる演算された結果を表すデータが貯蔵されるべきレジスタファイル(データメモリ)１３内のアドレスを生成するブロックである。Cアドレス生成器１４cではI、J、Kの全ての値が用いられ、マトリックスの大きさを設定する"NUM＿ROWS"、"NUM＿COLS"レジスタの値が用いられる。このレジスタの値はマトリックスの行と列とを相互変えて貯蔵する命令語(TRANSA)を行う時必要である。これは、アドレス値の増加が行の個数(NUM＿COLS)だけ増加する必要があるからである。このように増加する時、増加されたアドレス値が最大アドレス値("X"+"MAX＿POS")より大きくなると"ADDRESS"+"NUM＿ROWS"-"POS"を出力することになる。そして、Cアドレス生成器１４cは図２７に示されたパイプライン状態のうちEX状態でアドレスを発生するため、最終出力はAアドレス生成器１４a及びBアドレス生成器１４bにより発生されるアドレスに比べて２クロック周期後に発生させる（図示せず）。
【００３４】
図１１は図１に示された本発明に係るデジタル信号処理装置の一実施例におけるマトリックス演算のために提供する命令語を例示したものである。この命令語は全ての形態のマトリックス演算と、マトリックスと普通のデータ値との間のデータ伝達を支援する。
【００３５】
マトリックス演算命令語形式は、図１２〜２２に例示されている。
この中から"EXT"が命令語が最先にあれば、この命令語は次の命令語と連結して１つの命令語となるという意味を有する。即ち、LOADA、STOREA命令語は２単語命令語となる。しかし、ISMVとSETDのような命令語は場合に応じて２単語命令語または１単語命令語として処理される。
【００３６】
ISMV命令語は実際値(immediate data)を特定のレジスタに貯蔵する作業を行うが、必要な実際値が８ビットで表現できれば１単語命令語を使用し、その以上のビット空間が必要ならば２単語命令語を使用することになる。
【００３７】
SETD命令語はマトリックス演算に必要な大きさを設定することになる。マトリックス乗算の場合にはI、J、Kの３つの値が必要なので２単語命令語で表現する。しかし、加算にはI、J値のみが必要なので１単語命令語で表現する。
【００３８】
図２３に例示したマトリックス間の乗算(MULTA)の動作を詳しく説明する。２×２マトリックス乗算で用いられるオペランドがが図１のデータメモリ１３に貯蔵された状態は図２４に示されたようである。また、図１のマトリックスアドレス貯蔵手段２２に貯蔵されたマトリックスデータX１、X２及びX３のアドレスは図２５に示されたようである。
【００３９】
図２３に例示したマトリックス間の乗算の動作状態を経時的に説明すると、図２６のように表現しうる。本発明に係るデジタル信号処理装置の一実施例はパイプライン形式で具現され、図２６に示されたマトリックス間乗算の動作は９回のクロック周期の間に行われる。図２６においてIは以前の命令語を示し、I'はMULTA命令語の次の命令語を表示する。WEは演算結果をデータメモリ１３に貯蔵させる制御信号を表現したものである。各アドレス生成器はマトリックス演算に合わせて順次にアドレスを生成することになる。
【００４０】
図２７は本発明に係るデジタル信号処理装置の一実施例のパイプライン構造を示す順序図である。
まず、プログラムメモリ１０のIMEMに貯蔵された命令語を命令語レジスタ１１ IRに貯蔵する(IF)(１５００段階)。そして、前記方法によってデータメモリ１３の出力アドレスを計算する(AG)(１５０１段階)。f(IR)及びg(IR)は各々Aアドレス生成器１４a及びBアドレス生成器１４bにより生成されたアドレスを示す。この値は、各々"X"+"POS"により生成されたアドレス値となる。そして、データメモリ１３で必要な演算ブロック、即ち乗算器１５dで生成されたアドレスに位置したデータを移す(OR)(１５０２段階)。図２７においてREGFはデータメモリ１３を示す。以後、２つのデータを乗算し、同時にデータメモリ１３に貯蔵されるアドレスが計算される(EX)(１５０３段階)。h(IR)はCアドレス生成器１４cにより生成されたアドレスを示す。しかし、最初の乗算演算結果データは貯蔵されない(１５０４段階)。
【００４１】
新たにデータメモリの出力アドレスを計算して乗算演算のためのデータを乗算器１５dに移し(１５１１、１５１２段階)、乗算器１５dに移されたデータを乗算し、１５０３段階でなされた乗算の結果MULT＿Cを累積値ACCに足すことになる(１５１３段階)。そして、１本の行の演算が完全に終わると、データメモリ１３の入力アドレスに累積値ACCを貯蔵することになる(WB)(１５１４段階)。このような演算はマトリックス演算が完全に行われるまで反復される。
【００４２】
乗算の演算が完全に終わった後には、最後に計算された乗算の結果MULT＿Cを累積値ACCに足してデータメモリ１３に貯蔵することになる(１５２３、１５２４段階)。このような一連の演算はパイプライン形式で行われる。
【００４３】
図２８は一般のデジタル信号処理装置と本発明に係るデジタル信号処理装置に適用された例示的なプログラムの大きさを比較したものである。一般のデジタル信号処理装置(G-DSP)より本発明に係るデジタル信号処理装置(LP-DSP)で行われるプログラムがさらに小型であることが分かる。そして、マトリックス表現が効果的に用いられるアルゴリズムを行う場合に本発明はさらに効率よく使われる。
【００４４】
また、本発明は省力性で、小型の耳穴形デジタル補聴器に適用して以前の信号処理装置より命令語をさらに効率よくプログラムできた。本発明の性能を検証するためにテスト用PCBボードを製作してFPGA(Field Programmable Gate Array)を用いた設計を完了した。図２９はこのような方法で設計したテスト用ボードを示した図面である。図２９に示されたボードを多様な応用プログラムで実験することによって、本発明に係るデジタル信号処理装置が小容量のプログラムメモリを具備しても与えられた機能を完壁に行えるということが確認できた。
【００４５】
【発明の効果】
本発明によれば、デジタル信号処理アルゴリズムを効率よく表現できる手段を提供することによって、デジタル信号処理装置におけるプログラムメモリのサイズが縮められる。これによって、プログラムメモリの読出時の消費電力を少なくでき、低電力で長時間電子製品を動作させうる。
【図面の簡単な説明】
【図１】本発明に係るデジタル信号処理装置の全体ブロック図である。
【図２】マトリックスデータの表現方式を例示した図面である。
【図３】循環リンクリストの基本構成要素を示した図面である。
【図４】循環リンクリストを概念的に示した図面である。
【図５】実際のメモリ上に具現された循環リンクリストを例示した図面である。
【図６】本発明に係るマトリックス演算装置のブロック図である。
【図７】マトリックスアドレス貯蔵手段のブロック図である。
【図８】  Aアドレス生成器のブロック図である。
【図９】  Bアドレス生成器のブロック図である。
【図１０】  Cアドレス生成器のブロック図である。
【図１１】本発明に係るデジタル信号処理装置において用いられるマトリックス演算のための命令語を例示した図面である。
【図１２】各々マトリックス演算のための命令語のフォーマットを例示した図面である。
【図１３】各々マトリックス演算のための命令語のフォーマットを例示した図面である。
【図１４】各々マトリックス演算のための命令語のフォーマットを例示した図面である。
【図１５】各々マトリックス演算のための命令語のフォーマットを例示した図面である。
【図１６】各々マトリックス演算のための命令語のフォーマットを例示した図面である。
【図１７】各々マトリックス演算のための命令語のフォーマットを例示した図面である。
【図１８】各々マトリックス演算のための命令語のフォーマットを例示した図面である。
【図１９】各々マトリックス演算のための命令語のフォーマットを例示した図面である。
【図２０】各々マトリックス演算のための命令語のフォーマットを例示した図面である。
【図２１】各々マトリックス演算のための命令語のフォーマットを例示した図面である。
【図２２】各々マトリックス演算のための命令語のフォーマットを例示した図面である。
【図２３】マトリックス乗算を例示した図面である。
【図２４】マトリックス乗算を例示した図面である。
【図２５】マトリックス乗算を例示した図面である。
【図２６】図２３に例示したマトリックス乗算のタイミング図である。
【図２７】マトリックス乗算の実行順序を示した順序図である。
【図２８】一般のデジタル信号処理装置と本発明に係るデジタル信号処理装置に適用された例示的なプログラムのサイズを比較した図面である。
【図２９】本発明に係るデジタル信号処理装置のテスト用ボードを示した図面である。
【符号の説明】
１３   レジスタファイル
１５c   ALU
１５d   乗算器
２２   マトリックスアドレス貯蔵手段
１４ａ   Aアドレス生成器
１４b   Bアドレス生成器
１４c   Cアドレス生成器
【図１】
0003819686.tif 000003
【図２】
0003819686.tif 000004
【図３】
0003819686.tif 000005
【図４】
0003819686.tif 000006
【図５】
0003819686.tif 000007
【図６】
0003819686.tif 000008
【図８】
0003819686.tif 000009
【図９】
0003819686.tif 000010
【図１０】
0003819686.tif 000011
【図１１】
0003819686.tif 000012
【図１２】
0003819686.tif 000013
【図１３】
0003819686.tif 000014
【図１４】
0003819686.tif 000015
【図１５】
0003819686.tif 000016
【図１６】
0003819686.tif 000017
【図１７】
0003819686.tif 000018
【図１８】
0003819686.tif 000019
【図１９】
0003819686.tif 000020
【図２０】
0003819686.tif 000021
【図２１】
0003819686.tif 000022
【図２２】
0003819686.tif 000023
【図２３】
0003819686.tif 000024
【図２４】
0003819686.tif 000025
【図２５】
0003819686.tif 000026
【図２６】
0003819686.tif 000027
【図２７】
0003819686.tif 000028
【図２８】
0003819686.tif 000029
【図２９】
0003819686.tif 000030
【図７】
0003819686.tif 000031