(57)【要約】【課題】命令コードのビット数を増やさずに、バスアドレス選択の自由度を向上させる。【解決手段】第１メモリに接続される第１アドレスバスと、第２メモリに接続される第２アドレスバスとに出力するアドレスを選択するバスアドレス選択回路であって、命令コード中の所定の複数ビットに基づいて、複数のアドレスレジスタのうちの第１及び第２アドレスレジスタに格納されている第１及び第２アドレスを出力するアドレス出力回路と、前記第１及び第２アドレスの少なくとも一方の所定の上位ｎビットに基づいて、前記第１アドレスを前記第１及び第２アドレスバスの一方に出力し、前記第２アドレスを前記第１及び第２アドレスバスの他方に出力するバス選択回路と、を備える。【選択図】図１
2007172333.tif 000002
【特許請求の範囲】
【請求項１】
第１メモリに接続される第１アドレスバスと、第２メモリに接続される第２アドレスバスとに出力するアドレスを選択するバスアドレス選択回路であって、
命令コード中の所定の複数ビットで構成される選択ビットに基づいて、複数のアドレスレジスタのうちの第１及び第２アドレスレジスタに格納されているアドレスを第１及び第２アドレスとして出力するアドレス出力回路と、
前記第１及び第２アドレスの少なくとも一方の所定の上位ｎビットに基づいて、前記第１アドレスを前記第１及び第２アドレスバスの一方に出力し、前記第２アドレスを前記第１及び第２アドレスバスの他方に出力するバス選択回路と、
を備えることを特徴とするバスアドレス選択回路。
【請求項２】
請求項１に記載のバスアドレス選択回路であって、
前記アドレス出力回路は、
前記選択ビットが第１の値である場合は、前記複数のアドレスレジスタのうちの前記第１及び第２アドレスレジスタに格納されているアドレスを前記第１及び第２アドレスとして出力し、前記選択ビットが第２の値である場合は、前記複数のアドレスレジスタのうちの第３アドレスレジスタ及び前記第２アドレスレジスタに格納されているアドレスを前記第１及び第２アドレスとして出力することを特徴とするバスアドレス選択回路。
【請求項３】
請求項１又は２に記載のバスアドレス選択回路であって、
前記アドレス出力回路は、
前記選択ビットに基づいて、前記第１及び第２アドレスを選択するための選択信号を出力する選択信号出力回路と、
前記複数のアドレスレジスタに格納されているアドレスの中から、前記選択信号に基づいて、前記第１及び第２アドレスを選択して出力する第１選択回路と、
を含んで構成されることを特徴とするバスアドレス選択回路。
【請求項４】
請求項１〜３の何れか一項に記載のバスアドレス選択回路であって、
前記バス選択回路は、
アドレス空間におけるアドレスが前記第１メモリより大きい前記第２メモリの先頭アドレスの上位ｎビットを記憶する開始アドレス記憶回路を備え、
前記開始アドレス記憶回路に記憶されている前記先頭アドレスの上位ｎビットと、前記第１及び第２アドレスの少なくとも一方の上位ｎビットとに基づいて、前記第１及び第２アドレスのうちの前記先頭アドレスより小さい方を前記第１アドレスバスに出力し、前記第１及び第２アドレスのうちの他方を前記第２アドレスバスに出力することを特徴とするバスアドレス選択回路。
【請求項５】
請求項４に記載のバスアドレス選択回路であって、
前記開始アドレス記憶回路に記憶されている前記先頭アドレスの上位ｎビットは書き換え可能であることを特徴とするバスアドレス選択回路。
【請求項６】
請求項４又は５に記載のバスアドレス選択回路であって、
前記バス選択回路は、
前記開始アドレス記憶回路と、
前記開始アドレス記憶回路に記憶されている前記先頭アドレスの上位ｎビットと、前記第１アドレスの上位ｎビットとの比較結果を出力する比較回路と、
前記比較回路から出力される比較結果に基づいて、前記第１及び第２アドレスのうちの前記先頭アドレスより小さい方を前記第１アドレスバスに出力し、前記第１及び第２アドレスのうちの他方を前記第２アドレスバスに出力する第２選択回路と、
を備えることを特徴とするバスアドレス選択回路。
【請求項７】
請求項１〜３の何れか一項に記載のバスアドレス選択回路であって、
前記バス選択回路は、
アドレス空間における前記第１及び第２メモリの夫々の先頭アドレスである第１及び第２先頭アドレスの上位ｎビットを記憶する開始アドレス記憶回路を備え、
前記開始アドレス記憶回路に記憶されている前記第１及び第２先頭アドレスの上位ｎビットと、前記第１アドレスの上位ｎビットとに基づいて、前記第１及び第２アドレスのうちの前記第１先頭アドレス以上かつ前記第２アドレス未満のアドレスを前記第１アドレスバスに出力し、前記第１及び第２アドレスのうちの他方を前記第２アドレスバスに出力することを特徴とするバスアドレス選択回路。
【請求項８】
請求項７に記載のバスアドレス選択回路であって、
前記開始アドレス記憶回路に記憶されている前記第１及び第２先頭アドレスの上位ｎビットは書き換え可能であることを特徴とするバスアドレス選択回路。
【請求項９】
請求項７又は８に記載のバスアドレス選択回路であって、
前記バス選択回路は、
前記開始アドレス記憶回路と、
前記開始アドレス記憶回路に記憶されている前記第１先頭アドレスの上位ｎビットと、前記第１アドレスの上位ｎビットとの比較結果を出力する第１比較回路と、
前記開始アドレス記憶回路に記憶されている前記第２先頭アドレスの上位ｎビットと、前記第１アドレスの上位ｎビットとの比較結果を出力する第２比較回路と、
前記第１及び第２比較回路から出力される比較結果に基づいて、前記第１及び第２アドレスのうちの前記第１先頭アドレス以上かつ前記第２アドレス未満のアドレスを前記第１アドレスバスに出力し、前記第１及び第２アドレスのうちの他方を前記第２アドレスバスに出力する第２選択回路と、
を含んで構成されることを特徴とするバスアドレス選択回路。
【請求項１０】
第１メモリに接続される第１アドレスバスと、第２メモリに接続される第２アドレスバスとに出力するアドレスを選択する方法であって、
命令コード中の所定の複数ビットで構成される選択ビットに基づいて、複数のアドレスレジスタのうちの第１及び第２アドレスレジスタに格納されている第１及び第２アドレスを出力し、
前記第１及び第２アドレスの少なくとも一方の所定の上位ｎビットに基づいて、前記第１アドレスを前記第１及び第２アドレスバスの一方に出力し、前記第２アドレスを前記第１及び第２アドレスバスの他方に出力することを特徴とするバスアドレス選択方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスアドレス選択回路およびバスアドレス選択方法に関する。
【背景技術】
【０００２】
ＤＳＰ（Digital Signal Processor）等の処理回路では、データ処理を高速に行うために、複数のメモリを内蔵する場合がある（例えば、非特許文献１）。図７は、２つのメモリ（ＳＲＡＭ：Static Random Access Memory）を有するＤＳＰの一般的な構成例を示す図である。ＤＳＰ１００は、データ処理を実行するＤＳＰコア１１０と、様々なデータが格納されるＳＲＡＭ１２１，１２２とを含んで構成されている。そして、ＳＲＡＭ１２１はアドレスバスＡ１３１と接続され、ＳＲＡＭ１２２はアドレスバスＢ１４１と接続されている。
【０００３】
ＤＳＰコア１１０は、命令レジスタ１５１、デコーダ１５２、制御回路１５３、複数のアドレスレジスタ１５４、及びセレクタ１５５を含んで構成されている。命令レジスタ１５１には、不図示のＲＯＭ（Read Only Memory）等から読み出された命令コードが格納されている。図８は、命令コードの一般的な例を示す図である。命令コード２００には、命令の種類を示す命令ビット２１０及びアドレスレジスタ１５４に含まれる２つのアドレスレジスタを選択するためのアドレスレジスタ選択ビット２１１が含まれている。
【０００４】
デコーダ１５２は、命令コード２００を解析し、命令の種類および選択するアドレスレジスタ等の情報を制御回路１５３に通知する。制御回路１５３は、デコーダ１５２から通知された情報に基づいて、アドレスレジスタを選択するための情報をセレクタ１５５に送信する。そして、セレクタ１５５は、制御回路１５３からの情報に基づいて、アドレスレジスタ１５４の中から２つのアドレスレジスタを選択し、一方のアドレスレジスタに格納されているアドレスをアドレスバスＡ１３１に出力し、他方のアドレスレジスタに格納されているアドレスをアドレスバスＢ１４１に出力する。その後、ＳＲＡＭ１２１，１２２の当該指定されたアドレスに対して、読み書き処理が実行される。
【０００５】
図９は、アドレスレジスタ選択ビット２１１とアドレスレジスタの組み合わせとの関係の一例を示す図である。本例では、アドレスレジスタ選択ビット２１１を３ビットであることとしているが、３ビットの場合、８種類の組み合わせを表すことができる。そして、一般的には、アドレスレジスタＡとアドレスレジスタＥ、アドレスレジスタＢとアドレスレジスタＦというように、あるアドレスレジスタとともに用いられるアドレスレジスタは１つに固定されていることが多い。また、プログラムにおけるアドレスレジスタの記述の順序に基づいて、アドレスバス１３１，１４１に出力されるアドレスが選択されることが多い。
【０００６】
例えば、"r0h=[aa++], r0l=[ae++];"と記述されたプログラムの場合について具体的に説明する。このプログラムは、アドレスレジスタＡに格納されているアドレスaaで示されるデータをデータレジスタr0h（不図示）に読み出し、アドレスレジスタＥに格納されているアドレスaeで示されるデータをデータレジスタr0l（不図示）に読み出すことを示している。このとき、例えば左側に記述されたアドレスaaがアドレスバスＡ１３１に出力され、右側に記述されたアドレスaeがアドレスバスＢ１４１に出力される。つまり、このプログラムを実行するための命令コード２００におけるアドレスレジスタ選択ビット２１１は、”０００”となる。
【０００７】
また、例えば、"r0h=[ae++], r0l=[aa++];"と記述されたプログラムの場合であれば、アドレスレジスタ選択ビット２１１は”１００”となり、左側に記述されたアドレスaeがアドレスバスＡ１３１に出力され、右側に記述されたアドレスaaがアドレスバスＢ１４１に出力される。
【非特許文献１】“三洋半導体ニューズ（Ｎｏ．Ｎ７４５８）”、[online]、三洋電機株式会社、[平成１７年１０月４日検索]、インターネット＜URL: http://service.semic.sanyo.co.jp/semi/ds_j/N7458.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、図９に示す例では、あるアドレスレジスタ（例えばアドレスレジスタＡ）と対で用いることができるアドレスレジスタ（例えばアドレスレジスタＥ）が１つに限定されている。ここで、図１０に示す処理を実行する場合を考える。処理（１）では、ＳＲＡＭ１２１に格納されているデータＡ１およびＳＲＡＭ１２２に格納されているデータＢ１が用いられる。そして、処理（２）では、ＳＲＡＭ１２１に格納されているデータＡ２および前述のデータＢ１が用いられる。
【０００９】
このような処理（１）及び（２）を並列に実行する手順は、例えば次のようになる。まず、アドレスレジスタＡにデータＡ１のアドレスが格納され、アドレスレジスタＢにデータＢ１のアドレスが格納される。その後、データＡ１，Ｂ１が読み出され、処理（１）が実行される。そして、処理（１）を実行する手順と並行して、アドレスレジスタＢにデータＡ２のアドレスが格納され、アドレスレジスタＦにデータＢ１のアドレスが格納される。その後、データＡ２，Ｂ１が読み出され、処理（２）が実行される。
【００１０】
図１０に示した処理の場合、処理（１）及び（２）で用いられるデータＢ１は同じものであるにもかかわらず、アドレスレジスタＦにデータＢ１のアドレスを格納する必要がある。つまり、その分だけサイクル数が増加してしまうこととなる。そこで、図９に例示したアドレスレジスタの組み合わせを増やすことにより、処理（２）においてもアドレスレジスタＥを使用可能とすることも考えられるが、組み合わせが増えることにより、アドレスレジスタ選択ビット２１１のビット数が増加し、命令コード２００のビット数が増加してしまうこととなる。
【００１１】
また、前述したように、プログラムの記述の順序によって、アドレスバスＡ１３１及びアドレスバスＢ１４１に出力されるアドレスが選択されるため、プログラムを記述する際の自由度が低い状態となっている。なお、プログラムにおいて、アドレスバス１３１，１４１の何れに出力するかを指定することも考えられるが、その指定を示すためのコードが必要となり、命令コード２００のビット数が増加してしまうこととなる。
【００１２】
本発明は上記課題を鑑みてなされたものであり、命令コードのビット数を増やさずに、バスアドレス選択の自由度を向上させることを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、本発明のバスアドレス選択回路は、第１メモリに接続される第１アドレスバスと、第２メモリに接続される第２アドレスバスとに出力するアドレスを選択するバスアドレス選択回路であって、命令コード中の所定の複数ビットで構成される選択ビットに基づいて、複数のアドレスレジスタのうちの第１及び第２アドレスレジスタに格納されている第１及び第２アドレスを出力するアドレス出力回路と、前記第１及び第２アドレスの少なくとも一方の所定の上位ｎビットに基づいて、前記第１アドレスを前記第１及び第２アドレスバスの一方に出力し、前記第２アドレスを前記第１及び第２アドレスバスの他方に出力するバス選択回路と、を備えることとする。
【００１４】
また、前記アドレス出力回路は、前記選択ビットが第１の値である場合は、前記複数のアドレスレジスタのうちの前記第１及び第２アドレスレジスタに格納されているアドレスを前記第１及び第２アドレスとして出力し、前記選択ビットが第２の値である場合は、前記複数のアドレスレジスタのうちの第３アドレスレジスタ及び前記第２アドレスレジスタに格納されているアドレスを前記第１及び第２アドレスとして出力することとしてもよい。
【００１５】
また、前記アドレス出力回路は、前記選択ビットに基づいて、前記第１及び第２レジスタを選択するための選択信号を出力する選択信号出力回路と、前記複数のアドレスレジスタに格納されているアドレスの中から、前記選択信号に基づいて、前記第１及び第２レジスタに格納されている前記第１及び第２アドレスを選択して出力する第１選択回路と、を含んで構成されることとすることができる。
【００１６】
また、前記バス選択回路は、アドレス空間におけるアドレスが前記第１メモリより大きい前記第２メモリの先頭アドレスの上位ｎビットを記憶する開始アドレス記憶回路を備え、前記開始アドレス記憶回路に記憶されている前記先頭アドレスの上位ｎビットと、前記第１及び第２アドレスの少なくとも一方の上位ｎビットとに基づいて、前記第１及び第２アドレスのうちの前記先頭アドレスより小さい方を前記第１アドレスバスに出力し、前記第１及び第２アドレスのうちの他方を前記第２アドレスバスに出力することとしてもよい。
【００１７】
そして、前記開始アドレス記憶回路に記憶されている前記先頭アドレスの上位ｎビットは書き換え可能であることとしてもよい。
【００１８】
さらに、前記バス選択回路は、前記開始アドレス記憶回路と、前記開始アドレス記憶回路に記憶されている前記先頭アドレスの上位ｎビットと、前記第１アドレスの上位ｎビットとの比較結果を出力する比較回路と、前記比較回路から出力される比較結果に基づいて、前記第１及び第２アドレスのうちの前記先頭アドレスより小さい方を前記第１アドレスバスに出力し、前記第１及び第２アドレスのうちの他方を前記第２アドレスバスに出力する第２選択回路と、を備えることとすることができる。
【００１９】
また、前記バス選択回路は、アドレス空間における前記第１及び第２メモリの夫々の先頭アドレスである第１及び第２先頭アドレスの上位ｎビットを記憶する開始アドレス記憶回路を備え、前記開始アドレス記憶回路に記憶されている前記第１及び第２先頭アドレスの上位ｎビットと、前記第１アドレスの上位ｎビットとに基づいて、前記第１及び第２アドレスのうちの前記第１先頭アドレス以上かつ前記第２アドレス未満のアドレスを前記第１アドレスバスに出力し、前記第１及び第２アドレスのうちの他方を前記第２アドレスバスに出力することとしてもよい。
【００２０】
そして、前記開始アドレス記憶回路に記憶されている前記第１及び第２先頭アドレスの上位ｎビットは書き換え可能であることとしてもよい。
【００２１】
さらに、前記バス選択回路は、前記開始アドレス記憶回路と、前記開始アドレス記憶回路に記憶されている前記第１先頭アドレスの上位ｎビットと、前記第１アドレスの上位ｎビットとの比較結果を出力する第１比較回路と、前記開始アドレス記憶回路に記憶されている前記第２先頭アドレスの上位ｎビットと、前記第１アドレスの上位ｎビットとの比較結果を出力する第２比較回路と、前記第１及び第２比較回路から出力される比較結果に基づいて、前記第１及び第２アドレスのうちの前記第１先頭アドレス以上かつ前記第２アドレス未満のアドレスを前記第１アドレスバスに出力し、前記第１及び第２アドレスのうちの他方を前記第２アドレスバスに出力する第２選択回路と、を含んで構成されることとすることができる。
【００２２】
また、本発明のバスアドレス選択方法は、第１メモリに接続される第１アドレスバスと、第２メモリに接続される第２アドレスバスとに出力するアドレスを選択する方法であって、命令コード中の所定の複数ビットで構成される選択ビットに基づいて、複数のアドレスレジスタのうちの第１及び第２アドレスレジスタに格納されている第１及び第２アドレスを出力し、
前記第１及び第２アドレスの少なくとも一方の所定の上位ｎビットに基づいて、前記第１アドレスを前記第１及び第２アドレスバスの一方に出力し、前記第２アドレスを前記第１及び第２アドレスバスの他方に出力することとする。
【発明の効果】
【００２３】
命令コードのビット数を増やさずに、バスアドレス選択の自由度を向上させることができる。
【発明を実施するための最良の形態】
【００２４】
＝＝回路構成＝＝
図１は、本発明の一実施形態であるバスアドレス選択回路を含んで構成されるＤＳＰの回路構成例を示す図である。ＤＳＰ（Digital Signal Processor）１は、デジタル音声信号の復号処理等、様々なデジタル信号に対するデータ処理を行うプロセッサである。ＤＳＰ１は、ＤＳＰコア１０及び例えば２つのＳＲＡＭ（Static Random Access Memory）２１２２（第１及び第２メモリ）を含んで構成される。なお、本実施形態においては、ＤＳＰ１に含まれるメモリをＳＲＡＭ２１，２２としたが、メモリの種類はＳＲＡＭに限られず、ＤＲＡＭ（Dynamic Random Access Memory）やフラッシュメモリ等、データの読み書きが可能なものであればよい。
【００２５】
ＤＳＰコア１０は、不図示のＲＯＭ（Read Only Memory）等に格納されたプログラム（命令コード）を順次読み出すことにより、様々なデータ処理を実行する回路である。ＳＲＡＭ２１，２２には、ＤＳＰコア１０により読み書きされる様々なデータが格納される。ＳＲＡＭ２１は、例えば２４ビットのアドレスバスＡ２３（第１アドレスバス）と接続されており、アドレスバスＡ２３を介して指定されたアドレスに対して、例えば２４ビットのデータバスＡ２４を介してデータの読み書きが行われる。また、ＳＲＡＭ２２は、例えば２４ビットのアドレスバスＢ２５（第２アドレスバス）と接続されており、アドレスバスＢ２５を介して指定されたアドレスに対して、例えば２４ビットのデータバスＢ２６を介してデータの読み書きが行われる。なお、ＳＲＡＭ２１，２２は、例えば、ＤＳＰ１の外部に設けられた大容量のＳＤＲＡＭ（Synchronous DRAM）との間で、必要に応じてデータの入れ替えが可能な構成とすることも可能である。
【００２６】
ＤＳＰコア１０の内部構成について詳細に説明する。ＤＳＰコア１０は、例えば６つのアドレスレジスタ３１〜３６、例えば６つのデータレジスタ４１〜４６、命令レジスタ５１、デコーダ５２、制御回路５３、アドレスレジスタ選択用のセレクタ６１、データレジスタ選択用のレジスタ６２、モードレジスタ７１（開始アドレス記憶回路）、比較回路７２，７３、ＡＮＤ回路７４、アドレスバス選択用のセレクタ７５を含んで構成されている。
【００２７】
アドレスレジスタ３１〜３６には、ＳＲＡＭ２１，２２等にアクセスするための例えば２４ビットのアドレスが格納される。そして、データレジスタ４１〜４６には、ＳＲＡＭ２１，２２等から読み出されたデータ、または、ＳＲＡＭ２１，２２等に書き込むためのデータが格納される。命令レジスタ５１には、不図示のＲＯＭ等から読み出された命令コードが格納される。図２は、命令コードの構成例を示す図である。命令コード８０は、命令ビット８１、アドレスレジスタ選択ビット８２（選択ビット）、レジスタＡ選択ビット８３、レジスタＢ選択ビット８４、Ｒｅａｄ／Ｗｒｉｔｅ選択ビット８５，８６等を含んで構成されている。
【００２８】
命令ビット８１には、命令の種類を示すコードが格納されている。アドレスレジスタ選択ビット８２は、アドレスレジスタ３１〜３６の中から、アドレスバス２３，２４に出力する２つのアドレスレジスタ（第１及び第２アドレスレジスタ）を選択するための情報であり、例えば３ビットで構成されている。レジスタＡ選択ビット８３は、データレジスタ４１〜４６のうち、ＳＲＡＭ２１から読み出されるデータ、または、ＳＲＡＭ２１に書き込むためのデータが格納されるデータレジスタを選択するための情報である。また、レジスタＢ選択ビット８４は、データレジスタ４１〜４６のうち、ＳＲＡＭ２２から読み出されるデータ、または、ＳＲＡＭ２２に書き込むためのデータが格納されるデータレジスタを選択するための情報である。Ｒｅａｄ／Ｗｒｉｔｅ選択ビット（Ｒ／Ｗ（Ａ）ビット）８５は、ＳＲＡＭ２１からデータを読み出すか、ＳＲＡＭ２１にデータを書き込むかを指定するための情報である。また、Ｒｅａｄ／Ｗｒｉｔｅ選択ビット（Ｒ／Ｗ（Ｂ）ビット）８６は、ＳＲＡＭ２２からデータを読み出すか、ＳＲＡＭ２２にデータを書き込むかを指定するための情報である。
【００２９】
この他にも、例えば、アドレスレジスタ３１〜３６に格納されているアドレスにオフセットレジスタ（不図示）に格納されているアドレスを加えたアドレスをアドレスバス２３，２４に出力する等、アドレッシングモードを選択するための情報が命令コード８０に含まれている場合もある。
【００３０】
デコーダ５２は、命令レジスタ５１に格納されている命令コード８０を復号し、その結果を制御回路５３に送信する。制御回路５３は、デコーダ５２から送信される復号結果に基づいて、アドレスレジスタ３１〜３６及びデータレジスタ４１〜４６の選択信号の出力や各種命令の実行等を行う。
【００３１】
図３は、アドレスレジスタ選択ビット８２とアドレスレジスタの組み合わせとの関係の一例を示す図である。図に示すように、例えば、アドレスレジスタ選択ビット８２の内容が”０００”である場合、アドレスレジスタＡ３１及びアドレスレジスタＥ３５が選択される。つまり、この場合、アドレスレジスタＡ３１及びアドレスレジスタＥ３５を選択するための選択信号が、制御回路５３（選択信号出力回路）からセレクタ６１（第１選択回路）に対して出力される。
【００３２】
また、例えば、アドレスレジスタ選択ビット８２が”００１”の場合は、アドレスレジスタＢ３２及びアドレスレジスタＥ３５を選択するための選択信号が出力され、アドレスレジスタ選択ビット８２が”０１０”の場合は、アドレスレジスタＣ３３及びアドレスレジスタＥ３５を選択するための選択信号が出力され、アドレスレジスタ選択ビット８２が”０１１”の場合は、アドレスレジスタＤ３４及びアドレスレジスタＥ３５を選択するための選択信号が出力される。
【００３３】
そして、例えば、アドレスレジスタ選択ビット８２が”１００”の場合は、アドレスレジスタＡ３１及びアドレスレジスタＦ３６を選択するための選択信号が出力され、アドレスレジスタ選択ビット８２が”１０１”の場合は、アドレスレジスタＢ３２及びアドレスレジスタＦ３６を選択するための選択信号が出力され、アドレスレジスタ選択ビット８２が”１１０”の場合は、アドレスレジスタＣ３３及びアドレスレジスタＦ３６を選択するための選択信号が出力され、アドレスレジスタ選択ビット８２が”１１１”の場合は、アドレスレジスタＤ３４及びアドレスレジスタＦ３６を選択するための選択信号が出力される。
【００３４】
なお、本実施形態においては、アドレスレジスタ選択ビット８２は、プログラムにおける記述に従って設定されることとする。例えば、アドレスレジスタｎ（ｎ＝Ａ〜Ｆ）３１〜３６に格納されているアドレスを"an"、データレジスタｎ（ｎ＝Ａ〜Ｆ）４１〜４６に格納されるデータを"rn"と表すこととし、プログラムにおいて"ra=[aa++], rb=[ae++];"と記述した場合は、アドレスレジスタの組み合わせはアドレスレジスタＡ３１及びアドレスレジスタＥ３５となり、アドレスレジスタ選択ビット８２には”０００”が設定されることとなる。同様に、例えば、プログラムにおいて"ra=[ab++], rb=[ae++];"と記述した場合は、アドレスレジスタの組み合わせはアドレスレジスタＢ３２及びアドレスレジスタＥ３５となり、アドレスレジスタ選択ビット８２には”００１”が設定されることとなる。
【００３５】
セレクタ６１には、アドレスレジスタ３１〜３６の夫々から出力されている２４ビットのアドレスが入力されている。そして、セレクタ６１は、制御回路５３から入力される選択信号に基づいて、アドレスレジスタ３１〜３６のうちの２つのアドレスレジスタから出力されるアドレスＡＡ（第１アドレス）及びアドレスＡＢ（第２アドレス）を出力する。
【００３６】
セレクタ６２は、ＳＲＡＭ２１，２２からのデータ読み出しの場合は、データバスＡ２４及びデータバスＢ２６上のデータを、制御回路５３から入力される選択信号に基づいて、データレジスタ４１〜４６のうちの２つのデータレジスタに出力する。また、セレクタ６２は、ＳＲＡＭ２１，２２へのデータ書き込みの場合は、制御回路５３から入力される選択信号に基づいて、データレジスタ４１〜４６のうちの２つのデータレジスタから出力されるデータをデータバスＡ２４及びデータバスＢ２６に出力する。
【００３７】
モードレジスタ７１には、アドレス空間における各領域の先頭アドレスが格納されている。図４は、アドレス空間の一例を示す図である。また、図５は、モードレジスタ７１に格納されている情報の一例を示す図である。図４に示す例えば２４ビットのアドレス空間は、プログラム領域、Ａバス領域（ＳＲＡＭ２１のデータ領域）、Ｂバス領域（ＳＲＡＭ２２のデータ領域）、及びＩ／Ｏ領域により構成されており、各領域の先頭アドレスは例えば１Ｍバイト単位で区切られている。各領域の先頭アドレスが１Ｍバイト単位で区切られている場合、アドレスの上位４ビット（所定の上位ｎビット）により、どの領域のアドレスであるかを判定することができる。
【００３８】
そこで、本実施形態においては、図５に示すように、各領域の先頭アドレスの上位４ビットがモードレジスタ７１に設定されている。具体的には、０ビット目から３ビット目にプログラム領域の先頭アドレスの上位４ビットが設定され、４ビット目から７ビット目にＡバス領域の先頭アドレスの上位４ビットが設定され、８ビット目から１１ビット目にＢバス領域の先頭アドレスの上位４ビットが設定され、１２ビット目から１５ビット目にＩ／Ｏ領域の先頭アドレスの上位４ビットが設定されている。なお、モードレジスタ７１の内容は、アドレス空間の変更に伴い、書き換えることが可能である。
【００３９】
比較回路７２は、アドレスＡＡがＡバス領域の先頭アドレス以上であるかどうかを示す比較結果を出力する。具体的には、比較回路７２は、セレクタ６１から出力されるアドレスＡＡ［２３：０］の上位４ビット［２３：２０］と、モードレジスタの４ビット目から７ビット目［７：４］に格納されているＡバス領域の先頭アドレスの上位４ビットとを比較し、アドレスＡＡの上位４ビットがＡバス領域の上位４ビット以上であれば例えば”１”を出力し、アドレスＡＡの上位４ビットがＡバス領域の上位４ビット未満であれば例えば”０”を出力する。
【００４０】
比較回路７３は、アドレスＡＡがＢバス領域の先頭アドレス未満であるかどうかを示す比較結果を出力する。具体的には、比較回路７３は、セレクタ６１から出力されるアドレスＡＢ［２３：０］の上位４ビット［２３：２０］と、モードレジスタの８ビット目から１１ビット目［１１：８］に格納されているＢバス領域の先頭アドレスの上位４ビットとを比較し、アドレスＡＢの上位４ビットがＢバス領域の上位４ビット未満であれば例えば”１”を出力し、アドレスＡＢの上位４ビットがＢバス領域の上位４ビット以上であれば例えば”０”を出力する。
【００４１】
ＡＮＤ回路７４は、比較回路７２，７３から出力される比較結果の論理積を出力する。つまり、アドレスＡＡがＡバス領域の先頭アドレス以上の場合に比較回路７２から”１”が出力され、アドレスＡＡがＢバス領域の先頭アドレス未満の場合に比較回路７３から”１”が出力されることとすると、アドレスＡＡがＡバス領域の範囲内にある場合に、ＡＮＤ回路７４から”１”が出力されることとなる。
【００４２】
セレクタ７５は、ＡＮＤ回路７４の出力に基づいて、アドレスＡＡ及びアドレスＡＢの何れか一方をアドレスバスＡ２３に出力し、他方をアドレスバスＢ２５に出力する。具体的には、アドレスＡＡがＡバス領域の範囲内にある場合にＡＮＤ回路７４から”１”が出力されることとすると、ＡＮＤ回路７４の出力が”１”である場合はアドレスＡＡをアドレスバスＡ２３に、アドレスＡＢをアドレスバスＢ２５に出力し、ＡＮＤ回路７４の出力が”０”である場合はアドレスＡＡをアドレスバスＢ２５に、アドレスＡＢをアドレスバスＡ２３に出力する。
【００４３】
なお、制御回路５３、セレクタ６１、モードレジスタ７１、比較回路７２，７３、ＡＮＤ回路７４、及びセレクタ７５が本発明のバスアドレス選択回路の一例に相当するものである。そして、制御回路５３及びセレクタ６１が本発明のアドレス出力回路の一例に相当し、モードレジスタ７１、比較回路７２，７３、ＡＮＤ回路７４、及びセレクタ７５が本発明のバス選択回路の一例に相当する。
【００４４】
＝＝動作説明＝＝
次に、ＤＳＰ１において、アドレスバスＡ２３及びアドレスバスＢ２５に出力するアドレスを選択する動作について説明する。まず、ＳＲＡＭ２１，２２からデータを読み出すプログラムである"ra=[ab++], rb=[ae++];"を実行する場合を例として説明する。この場合、プログラムにおけるアドレスレジスタの記述の順序がアドレスレジスタＡ３１、アドレスレジスタＥ３５となっているため、命令コード８０中のアドレスレジスタ選択ビット８２には”０００”が設定される。また、命令コード８０中のレジスタＡ選択ビット８３には、データレジスタＡを選択するための情報が設定され、レジスタＢ選択ビット８４には、データレジスタＢを選択するための情報が設定される。そして、Ｒ／Ｗ（Ａ）ビット８５及びＲ／Ｗ（Ｂ）ビット８６には、データの読み出しであることを示す情報が設定される。
【００４５】
デコーダ５２は、このような情報が設定された命令コード８０を復号し、復号した情報を制御回路５３に送信する。制御回路５３は、デコーダ５２からの情報に基づき、アドレスレジスタＡ３１及びアドレスレジスタＥ３５を選択するための選択信号をセレクタ６１に送信する。セレクタ６１は、制御回路５３からの選択信号に基づき、アドレスレジスタＡ３１に格納されているアドレスをアドレスＡＡとして出力し、アドレスレジスタＥ３５に格納されているアドレスをアドレスＡＢとして出力する。
【００４６】
比較回路７２は、アドレスＡＡの上位４ビットと、モードレジスタに設定されているＡバス領域の先頭アドレスの上位４ビットとの比較結果を出力する。また、比較回路７３は、アドレスＡＡの上位４ビットと、モードレジスタに設定されているＢバス領域の先頭アドレスの上位４ビットとの比較結果を出力する。そして、ＡＮＤ回路７４は、比較回路７２，７３の出力の論理積を出力する。なお、本実施形態においては、アドレスレジスタＡ３１に格納されているアドレスがＡバス領域の範囲内にある場合にはＡＮＤ回路７４から”１”が出力され、Ａバス領域の範囲外にある場合にはＡＮＤ回路７４から”０”が出力される。
【００４７】
そして、セレクタ７５は、ＡＮＤ回路７４からの出力信号に基づいて、アドレスレジスタＡ３１に格納されているアドレスがＡバス領域の範囲内にある場合には、アドレスＡＡをアドレスバスＡ２３に出力し、アドレスＡＢをアドレスバスＢ２５に出力する。逆に、アドレスレジスタＡ３１に格納されているアドレスがＡバス領域の範囲外にある場合には、アドレスＡＡをアドレスバスＢ２５に出力し、アドレスＡＢをアドレスバスＡ２３に出力する。その後、ＳＲＡＭ２１，２２の指定されたアドレスに格納されているデータが、データバスＡ２４及びデータバスＢ２６から出力される。そして、セレクタ６２は、制御回路５３からの情報に基づいて、データバスＡ２４上のデータをデータレジスタＡ４１に出力し、データバスＢ２６上のデータをデータレジスタＢ４２に出力する。
【００４８】
また、ＤＳＰ１においては、ＳＲＡＭ２１，２２にデータを書き込む場合もついても同様の処理が行われる。データ書き込みの場合も、セレクタ６１から出力されるアドレスＡＡ及びアドレスＡＢに基づいて、アドレスバスＡ２３及びアドレスバスＢ２５に出力されるアドレスが選択される。そして、命令コード８０のレジスタ選択Ａビット８３により指定されるデータレジスタに格納されているデータが、セレクタ６２を介してデータバスＡ２４に出力され、当該データがＳＲＡＭ２１に書き込まれる。また、命令コード８０のレジスタ選択Ｂビット８４により指定されるデータレジスタに格納されているデータが、セレクタ６２を介してデータバスＢ２６に出力され、当該データがＳＲＡＭ２２に書き込まれる。
【００４９】
このように、ＤＳＰ１においては、プログラムにおけるアドレスレジスタの記述順序に関係なく、アドレスレジスタに設定されているアドレスがハードウェアにより判定され、その判定結果に基づいて、アドレスバスＡ２３及びアドレスバスＢ２５に出力するアドレスが選択される。つまり、命令コード８０のビット数を増やすことなく、アドレスバスＡ２３及びアドレスバスＢ２５に出力されるアドレス選択の自由度を向上することができる。
【００５０】
次に、ＤＳＰ１において並列処理を行う場合について説明する。図６は、並列処理の一例を示す図である。この例では、処理（１）において、ＳＲＡＭ２１に格納されているデータＡ１とＳＲＡＭ２２に格納されているデータＢ１とが用いられる。そして、処理（２）において、ＳＲＡＭ２１に格納されているデータＡ２とＳＲＡＭ２２に格納されているデータＢ１とが用いられる。
【００５１】
処理（１）を実行するためには、データＡ１，Ｂ１を読み出す必要があるが、そのプログラムは、例えば"ra=[aa++], rb=[ae];"と記述される。また、処理（２）を実行するためには、データＡ２，Ｂ１を読み出す必要があるが、そのプログラムは、例えば"rc=[ab++], rd=[ae++];"のように記述される。なお、これらのプログラムが実行される前に、アドレスレジスタＡ３１（第１アドレスレジスタ）にはデータＡ１の格納先アドレスが設定され、アドレスレジスタＢ３２（第３アドレスレジスタ）にはデータＡ２の格納先アドレスが設定され、アドレスレジスタＥ３５（第２アドレスレジスタ）にはデータＢ１の格納先アドレスが設定されていることとする。
【００５２】
プログラムがこのように記述されている場合、データＡ１，Ｂ１を読み出すための命令コード８０におけるアドレスレジスタ選択ビット８２には、”０００”（第１の値）が設定され、データＡ２，Ｂ１を読み出すための命令コード８０におけるアドレスレジスタ選択ビット８２には”００１”（第２の値）が設定されている。そして、処理（１）の実行に際しては、制御回路５３及びセレクタ６１により、アドレスレジスタＡ３１に格納されているアドレスがアドレスＡＡとして出力され、アドレスレジスタＥ３５に格納されているアドレスがアドレスＡＢとして出力される。そして、ＳＲＡＭ２１からデータＡ１がデータレジスタＡ４１に読み出され、ＳＲＡＭ２２からデータＢ１がデータレジスタＢ４２に読み出される。また、処理（２）の実行に際しては、制御回路５３及びセレクタ６１により、アドレスレジスタＢ３２に格納されているアドレスがアドレスＡＡとして出力され、アドレスレジスタＥ３５に格納されているアドレスがアドレスＡＢとして出力される。そして、ＳＲＡＭ２１からデータＡ２がデータレジスタＣ４３に読み出され、ＳＲＡＭ２２からデータＢ１がデータレジスタＤ４４に読み出される。
【００５３】
この例では、データＢ１を読み出すためのアドレスレジスタとして、処理（１）及び（２）の何れにおいてもアドレスレジスタＥ３５が用いられている。つまり、処理（１）及び（２）において、データＢ１を読み出すために別々のアドレスレジスタを用いる必要がなく、異なるアドレスレジスタに同一のアドレスを設定することによるサイクル数の増加を防ぐことができる。
【００５４】
以上、本実施形態のＤＳＰ１について説明した。前述したように、ＤＳＰ１では、プログラムにおけるアドレスレジスタの記述の順序に関係なく、アドレスレジスタに格納されているアドレスを回路で判定することにより、アドレスバスＡ２３及びアドレスバスＢ２５に出力されるアドレスが選択される。つまり、命令コード８０のビット数を増やすことなく、バスアドレス選択の自由度を向上することができる。
【００５５】
また、ＤＳＰ１では、アドレスレジスタＥ３５又はアドレスレジスタＦ３６と対で用いることができるアドレスレジスタが１つに固定されていない。したがって、例えば、並列に実行される処理で同一のアドレスを参照する場合に、サイクル数の増加を防ぐことができる。つまり、命令コード８０のビット数を増やすことなく、アドレスバスＡ２３及びアドレスバスＢ２５に出力されるアドレス選択の自由度を向上することができる。
【００５６】
また、ＤＳＰ１では、モードレジスタ７１に格納されている情報を書き換えることで、アドレス空間の変更に柔軟に対応することができる。
【００５７】
なお、ＤＳＰ１では、アドレスＡＡの上位４ビットを、Ａバス領域の先頭アドレスの上位４ビット及びＢバス領域の先頭アドレスの上位４ビットと比較することにより、アドレスＡＡがＡバス領域内にあるかどうかを確認しているが、Ｂバス領域の先頭アドレスの上位４ビットのみと比較することとしてもよい。つまり、アドレスＡＡの上位４ビットがＢバス領域の先頭アドレスの上位４ビット未満であれば、アドレスＡＡをアドレスバスＡ２３に出力し、アドレスＡＢをアドレスバスＢ２５に出力することとしてもよい。このようにＢバス領域の先頭アドレスの上位４ビットのみと比較することとすれば、比較回路７２及びＡＮＤ回路７４が不要となり、回路規模を小さくすることができる。
【００５８】
ただし、本実施形態に示したように、比較回路７２，７３及びＡＮＤ回路７４を用いることにより、Ａバス領域の範囲内であるかどうかを確実にチェックすることができる。
【００５９】
また、本実施形態においては、アドレスＡＢは値がチェックされずに、アドレスＡＡとは反対のアドレスバスに出力される。このような構成とすることにより、アドレスＡＢの値をチェックするための回路が不要となり、回路規模を小さくすることができる。なお、アドレスの値を厳密にチェックする必要がある場合は、アドレスＡＢについても、モードレジスタ７１に格納された情報と比較することとしてもよい。
【００６０】
なお、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【００６１】
例えば、本実施形態においては、ＤＳＰにおいてアドレスバスを選択することとしたが、ＤＳＰに限らず、メモリを複数備える処理回路であれば適用可能である。また、本実施形態においては、メモリ及びアドレスバスが２つの構成としたが、メモリ及びアドレスバスが３つ以上の構成に拡張することも可能である。
【図面の簡単な説明】
【００６２】
【図１】本発明の一実施形態であるバスアドレス選択回路を含んで構成されるＤＳＰの回路構成例を示す図である。
【図２】命令コードの構成例を示す図である。
【図３】アドレスレジスタ選択ビットとアドレスレジスタの組み合わせとの関係の一例を示す図である。
【図４】アドレス空間の一例を示す図である。
【図５】モードレジスタに格納されている情報の一例を示す図である。
【図６】並列処理の一例を示す図である。
【図７】２つのメモリを有するＤＳＰの一般的な構成例を示す図である。
【図８】命令コードの一般的な例を示す図である。
【図９】アドレスレジスタ選択ビットとアドレスレジスタの組み合わせとの関係の一例を示す図である。
【図１０】並列処理の一例を示す図である。
【符号の説明】
【００６３】
１  ＤＳＰ                                １０  ＤＳＰコア
２１，２２  ＳＲＡＭ                      ２３  アドレスバスＡ
２４  データバスＡ                        ２５  アドレスバスＢ
２６  データバスＢ                        ３１〜３６  アドレスレジスタ
４１〜４６  データレジスタ                ５１  命令レジスタ
５２  デコーダ                            ５３  制御回路
６１，６２  セレクタ                      ７１  モードレジスタ
７２，７３  比較回路                      ７４  ＡＮＤ回路
７５  セレクタ                            ８０  命令コード
８１  命令ビット                          ８２  アドレスレジスタ選択ビット
８３  レジスタＡ選択ビット                ８４  レジスタＢ選択ビット
８５，８６  Ｒｅａｄ／Ｗｒｉｔｅ選択ビット
【図１】
2007172333.tif 000003
【図２】
2007172333.tif 000004
【図３】
2007172333.tif 000005
【図４】
2007172333.tif 000006
【図５】
2007172333.tif 000007
【図６】
2007172333.tif 000008
【図７】
2007172333.tif 000009
【図８】
2007172333.tif 000010
【図９】
2007172333.tif 000011
【図１０】
2007172333.tif 000012