(57)【特許請求の範囲】
【請求項１】
セントラル・プロセッシング・ユニットと、
前記セントラル・プロセッシング・ユニットが命令を解読することによって、その動作が制御されるディジタル信号処理ユニットと、
前記セントラル・プロセッシング・ユニットからのアドレスが伝達される第１、第２及び第３のアドレスバスと、
前記第１及び第２のアドレスバスに接続されるが前記第３のアドレスバスには接続されない第１のメモリと、
前記第１及び第３のアドレスバスに接続されるが前記第２のアドレスバスには接続されない第２のメモリと、
前記第１及び第２のメモリ、前記セントラル・プロセッシング・ユニット並びに前記ディジタル信号処理ユニットに接続される第１のデータバスと、
前記第１のメモリと前記ディジタル信号処理ユニットに接続されるが前記第２のメモリには接続されない第２のデータバスと、
前記第２のメモリと前記ディジタル信号処理ユニットに接続されるが前記第１のメモリには接続されない第３のデータバスとを１つの半導体基板上に具備するデータ処理装置であって、
前記ディジタル信号処理ユニットは、固定小数点データを保持するレジスタと、固定小数点デ−タを処理する加減算回路と、固定小数点デ−タを処理する乗算回路とを含み、
前記レジスタのビット長より短いビット長のデータを前記ディジタル信号処理ユニットの外部から前記レジスタに転送する第１の命令を実行する場合は、前記ディジタル信号処理ユニットは、前記データを前記レジスタの上位側に詰めて入力し、前記レジスタの余分な下位側にはゼロを入力し、
前記レジスタのビット長より短いビット長のデータを前記ディジタル信号処理ユニットの外部から前記レジスタに転送する第２の命令を実行する場合は、前記ディジタル信号処理ユニットは、前記レジスタの上位側から必要なビット長のデータを外部に出力することを特徴とするデータ処理装置。
【請求項２】
算術演算又は論理演算を実行する演算回路を具備するセントラル・プロセッシング・ユニットと、
前記セントラル・プロセッシング・ユニットから選択的にアドレスが伝達される第１、第２及び第３のアドレスバスと、
前記第１及び第２のアドレスバスに接続されるが前記第３のアドレスバスには接続されず、前記セントラル・プロセッシング・ユニットからのアドレスによってアクセスされる第１のメモリと、
前記第１及び第３のアドレスバスに接続されるが前記第２のアドレスバスには接続されず、前記セントラル・プロセッシング・ユニットからのアドレスによってアクセスされる第２のメモリと、
前記第１及び第２のメモリと前記セントラル・プロセッシング・ユニットとに接続されてデータが伝達される第１のデータバスと、
前記第１のメモリに接続されてデータが伝達されるが前記第２のメモリには接続されない第２のデータバスと、
前記第２のメモリに接続されてデータが伝達されるが前記第１のメモリには接続されない第３のデータバスと、
前記第１、第２及び第３のデータバスに接続され前記セントラル・プロセッシング・ユニットと同期動作するディジタル信号処理ユニットとを具備するデータ処理装置であって、
前記ディジタル信号処理ユニットは、
固定小数点データを処理する加減算回路と、
固定小数点データを処理する乗算回路とを具備することを特徴とするデータ処理装置。
【請求項３】
請求項２に記載のデータ処理装置において、
前記セントラルプロセッシングユニットは、さらに演算に必要なデータ及び演算結果を保持するための第１のレジスタファイルを具備し、
前記ディジタル信号処理ユニットは、さらに処理に必要なデータ及び処理結果を保持するための第２のレジスタファイルを具備し、
前記第１のレジスタファイルのビット長より短いデータが前記第１のデータバスから前記第１のレジスタファイルのうちの１つのレジスタに入力される場合に、前記データを該レジスタの下位側に詰めて入力し、該レジスタの余分な上位側には該データの最上位ビットの値を拡張して入力する手段と、
前記第１のレジスタファイルのビット長より短いデータが前記第１のレジスタファイルのうちの１つから前記第１のデータバスへ出力される場合に、該レジスタの下位側から必要なビット長のデータを出力する手段と、
前記第２のレジスタファイルのビット長より短いデータが前記第１、第２もしくは第３のデータバスのうちの１つから前記第２のレジスタファイルのうちの１つに入力される場合に、前記データを該レジスタの上位側に詰めて入力し、該レジスタの余分な下位側にはゼロ入力する手段と、
前記第２のレジスタファイルのビット長より短いデータが前記第２のレジスタファイルのうちの１つから前記第１、第２もしくは第３のデータバスのうちの１つに出力される場合に、該レジスタの上位側から必要なビット長のデータを出力する手段とを具備することを特徴とするデータ処理装置。
【請求項４】
請求項２又は３に記載のデータ処理装置において、
整数データ演算と固定小数点データ演算とをそれぞれ実行させる命令が別々に設けられることを特徴とするデータ処理装置。
【請求項５】
請求項２又は３に記載のデータ処理装置において、整数データの転送動作と、固定小数点データの転送動作とをそれぞれ実行させる命令が別々に設けられることを特徴とするデータ処理装置。
【請求項６】
請求項２又は３に記載のデータ処理装置において、整数データの転送動作と、固定小数点データの転送動作とをそれぞれ実行させる命令が別々に設けられることを特徴とするデータ処理装置。
【請求項７】
請求項２から６の何れか一つに記載のデータ処理装置は、１つの半導体基板上に形成されることを特徴とするデータ処理装置。
【請求項８】
請求項２から７の何れか一つに記載のデータ処理装置において、前記第１のデータバスは３２ビットデータバースであり、前記第２のデータバスは１６ビットデータバスであることを特徴とするデータ処理装置。
【請求項９】
セントラル・プロセッシング・ユニットと、
レジスタと、前記レジスタに含まれるデータの演算を行う演算回路とを含むディジタル信号処理ユニットとを具備するデータ処理装置であって、
前記ディジタル信号処理ユニットは、整数データと固定小数点データを処理し、
前記レジスタのビット長より短いビット長の整数データを前記ディジタル信号処理ユニットの外部から前記レジスタに転送する場合に、前記ディジタル信号処理ユニットは、当該整数データを前記レジスタの下位側に詰めて入力し、前記レジスタの余分な上位側には当該整数データの最上位ビットの値を拡張して入力し、
前記レジスタのビット長より短いビット長の整数データを前記レジスタから前記ディジタル信号処理ユニットの外部に転送する場合に、前記ディジタル信号処理ユニットは、前記レジスタの下位側から当該整数データに必要なビット長のデータを出力し、
前記レジスタのビット長より短いビット長の固定小数点データを前記ディジタル信号処理ユニットの外部から前記レジスタに転送する場合に、前記ディジタル信号処理ユニットは、当該固定小数点データを前記レジスタの上位側に詰めて入力し、前記レジスタの余分な下位側にはゼロを入力し、
前記レジスタのビット長より短いビット長の固定小数点データを前記レジスタから前記ディジタル信号処理ユニットの外部に転送する場合に、前記ディジタル信号処理ユニットは、前記レジスタの上位側から当該固定小数点データに必要なビット長のデータを出力することを特徴とするデータ処理装置。
【請求項１０】
第１レジスタと、前記レジスタに含まれるデータの演算を行う第１演算回路とを含む第１処理ユニットと、
第２レジスタと、前記レジスタに含まれるデータの演算を行う第２演算回路とを含む第２処理ユニットと、
前記第１処理ユニットからアドレスが伝達される第１、第２及び第３のアドレスバスと、
前記第１及び第２のアドレスバスに接続されるが前記第３のアドレスバスには接続されない第１のメモリと、
前記第１及び第３のアドレスバスに接続されるが前記第２のアドレスバスには接続されない第２のメモリと、
前記第１及び第２のメモリと前記第１及び第２処理ユニットとに接続される第１のデータバスと、
前記第１及び第２処理ユニットに接続されるが前記第２のメモリには接続されない第２のデータバスと、
前記第２のメモリ及び第２処理ユニットに接続されるが前記第１のメモリには接続されない第３データバスとを具備するデータ処理装置であって、
前記第１処理ユニットは整数データを処理し、
前記第２処理ユニットは固定小数点データを処理し、
前記第２レジスタのビット長より短いビット長のデータを前記第２処理ユニットの外部から前記第２レジスタに転送する第１の命令を実行する場合は、前記第２処理ユニットは、前記データを前記第２レジスタの上位側に詰めて入力し、前記第２レジスタの余分な下位側にはゼロ入力し、
前記第２レジスタのビット長より短いビット長のデータを前記第２レジスタから前記第２処理ユニットの外部に転送する第２の命令を実行する場合は、前記第２処理ユニットは、前記第２レジスタの上位側から必要なビット長のデータを外部に出力することを特徴とするデータ処理装置。
【請求項１１】
請求項１０に記載のデータ処理装置において、前記第１処理ユニットはセントラル・処理ユニットであり、前記第２処理ユニットはディジタル信号処理ユニットであることを特徴とするデータ処理装置。
【請求項１２】
請求項１０又は１１に記載のデータ処理装置は１個の半導体基板上に形成されることを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はセントラルプロセッシングユニットとディジタル信号処理ユニットとを有する半導体集積回路化された論理ＬＳＩ（Large Scale Integrated circuit）に係り、高速演算処理を要するマイクロコンピュータ、ディジタルシグナルプロセッサ等のデータ処理装置に適用して有効な技術に関する。
【０００２】
【従来の技術】
システム全体を制御するために必要な汎用演算処理ユニット（Central Processing Unit (CPU)）と、ディジタル信号を効率的に処理するために必要な積和演算機能を備えたディジタル信号処理ユニット（Digital Signal Processor (DSP)）とを同一チップ上に搭載したマイクロコンピュータの例としては、「河崎他、「ＤＳＰ機能を内蔵したＳＨシリ−ズ」、日経エレクトロニクス、１９９２年１１月２３日号、ｎｏ．５６８、ｐｐ．９９−１１２」がある。
【０００３】
これによれば、積和演算機能を備えたディジタル信号処理ユニットは、ディジタルフィルタリング等のディジタル信号処理の代表的な演算処理を少ないステップ数で効率良く実行することが可能である。
【０００４】
【発明が解決しようとする課題】
しかし上記従来の技術に記載のディジタル信号処理ユニットは、積和演算器を備えるものの、演算を行うデータを前記汎用演算処理ユニットと同様に整数データとして扱っている。通常ディジタル信号処理の世界で扱うデータは、固定小数点もしくは浮動小数点データが一般的である。浮動小数点データは、仮数部データと指数部データがセットになったデータ形式であり、全く異なった数値体系であるが、固定小数点データは小数点の位置が異なるだけで、整数データとよく似ている。事実、加減算では基本的に整数データと処理内容は同じである。
【０００５】
しかし、図１の（ａ）に示すように、乗算では整数データの場合、ソースデータは指定されたレジスタの下位側のワードを演算に使用するのに対して、固定小数点データの場合は指定されたレジスタの上位側を使用する。図１の（ｂ）に示すように、整数データは小数点が最下位ビットの右側に位置していると見なされるのに対して、固定小数点データでは通常、最上位ビットのすぐ右側にあり、小数点に近い部分がより重要であるからである。そのため整数乗算器で固定小数点乗算を実行させるためには、あらかじめソースデータを上位側から下位側へシフトしておかなければならない。また、図１の（ｃ）に示すように、小数点位置に基づいてアライニング（桁合わせ）が行われ、演算結果は両者で１ビット分のずれが生じる。その結果実際の処理プログラムでは両者の食い違いを補正するためのシフト処理が必要になることがあるという問題が生じている。
【０００６】
さらにディジタル信号処理では、メモリから読み出されるデータや、演算結果をメモリ又は外部へ出力したりする場合のデータのビット長は、演算中のビット精度に比べて少なくてよい場合が多い。そのため実際のディジタル信号処理ユニットではメモリ又は外部とのデータ転送は単精度のワードデータ（例えば１６ビット）で行い、演算は倍精度（例えば３２ビット）以上で行うことが一般的である。この演算精度よりもビット長の短いデータを転送する場合、整数データと固定小数点データとで動作内容が大きく異なる。
【０００７】
整数データを扱うことを前提としている演算ユニットは、ワードデータやさらにビット長の短いバイトデータ（８ビット）のデータ転送を行う場合には、データを保持するレジスタの下位側を入出力する。しかし固定小数点データを扱うことを前提としている演算ユニットは、データの上位側を入出力する。この違いが生じる原因は、前述の小数点位置の違いからくるものである。すなわち、転送するデータのビット長が格納すべきオペランドのビット長より短い場合、データの精度やレンジの点から、小数点に近い部分がより重要であるが、整数データは小数点が最下位ビットの右側に位置していると見なされるのに対して、固定小数点データでは通常、最上位ビットのすぐ右側にあるため、このような食い違いが生じる。その結果、整数データを扱うことを前提とした演算ユニットで演算精度より短いビット長のデータ転送を行う場合、いちいちシフト処理を行わなければならなくなるという問題が生じている。
【０００８】
転送時のデータのビット長を演算時のデータのビット長と同じにしていればこのような問題は生じないが、冗長なビットの転送を行うために余計なバス幅が必要になったり、データを格納するメモリも余分な容量を必要としてしまう問題がある。
【０００９】
本発明の目的は、セントラルプロセッシングユニットと固定小数点データを処理するディジタル信号処理ユニットを内蔵するマイクロコンピュータ、ディジタルシグナルプロセッサ等のデータ処理装置を提供することにある。
【００１０】
さらに本発明の目的は、システム全体を制御するために必要な汎用演算処理ユニットと、ディジタル信号を効率的に処理するために必要な積和演算機能を備えたディジタル信号処理ユニットとを同一チップ上に搭載したマイクロコンピュータやディジタルシグナルプロセッサにおいて、演算器で取り扱うデータ形式の違いによる処理ステップ数の増大を防止し、ディジタル信号処理の高効率化を図る。
【００１１】
また、本発明の目的は、乗算結果のビット位置補正やデータ転送に伴う余分なシフト動作を省略し、ディジタル信号処理を高速化することにある。
【００１２】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１３】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１４】
（ａ）データ処理装置（１）は、ＣＰＵ（１００）と、ＣＰＵ（１００）が命令を解読することによって動作が制御されるディジタル信号処理ユニット（１０４）とを１つの半導体基板上に備え、前記ディジタル信号処理ユニット（１０４）は、固定小数点デ−タを処理する加減算回路（１０５）と、固定小数点デ−タを処理する乗算回路（１０６）とを備える。
【００１５】
（ｂ）データ処理装置（１）は、第１レジスタ（１０３）と該第１レジスタ（１０３）内のデータを演算する第１演算器（１０１、１０２）とを有する第１処理ユニット（１００）と、第２レジスタ（１０８）と該第２レジスタ（１０８）内のデータを演算する第２演算器（１０５、１０６）とを有する第２処理ユニット（１０４）とを具備し、前記第１処理ユニット（１００）は整数データを処理し、前記第２処理ユニット（１０４）は固定小数点データを処理する。
【００１６】
（ｃ）データ処理装置（１０４）は、レジスタ（１０８）と該レジスタ（１０８）内のデータを演算する演算器（１０５、１０６）とを有し、前記レジスタのビット長より短いビット長のデータを該データ処理装置（１０４）の外部から前記レジスタ（１０８）に転送する第１の命令を実行する場合は、前記データを前記レジスタ（１０８）の上位側に詰めて入力し、前記レジスタ（１０８）の余分な下位側にはゼロ入力し、前記レジスタ（１０８）のビット長より短いビット長のデータを前記レジスタ（１０８）から該データ処理装置（１０４）の外部に転送する第２の命令を実行する場合は、前記レジスタ（１０８）の上位側から必要なビット長のデータを外部に出力する。
【００１７】
（ｄ）データ処理装置（１）は、算術演算又は論理演算を実行する演算回路（１０１）を備えるセントラルプロセッシングユニット（１００）と、前記セントラルプロセッシングユニット（１００）から選択的にアドレスが伝達される第１、第２及び第３のアドレスバス（１０９、１１０、１１１）と、前記第１のアドレスバス（１０９）及び第２のアドレスバス（１１０）に接続され、前記セントラルプロセッシングユニット（１００）からのアドレスによってアクセスされる第１のメモリ（１１５）と、前記第１のアドレスバス（１０９）及び第３のアドレスバス（１１１）に接続され、前記セントラルプロセッシングユニット（１００）からのアドレスによってアクセスされる第２のメモリ（１１６）と、前記第１及び第２のメモリ（１１５、１１６）と前記セントラルプロセッシングユニット（１００）とに接続されてデータが伝達される第１のデータバス（１１２）と、前記第１のメモリ（１１５）に接続されてデータが伝達される第２のデータバス（１１３）と、前記第２のメモリ（１１６）に接続されてデータが伝達される第３のデータバス（１１４）と、前記第１、第２及び第３のデータバス（１１２、１１３、１１４）に接続され前記セントラルプロセッシングユニット（１００）と同期動作するディジタル信号処理ユニット（１０４）とを備え、前記ディジタル信号処理ユニット（１０４）は、固定小数点データを処理する加減算回路（１０５）と、固定小数点データを処理する乗算回路（１０６）と備える。
【００１８】
（ｅ）データ処理装置は、乗数と被乗数とを入力し、乗数と被乗数との乗算結果を出力する乗算器（１０６）と、前記乗算器の出力をシフトするシフタ（１０７）とを具備し、整数データを乗算する場合は、前記シフタは前記乗算器の出力をシフトしないで出力し、固定小数点データを乗算する場合は、前記シフタは前記乗算器の出力を左に１ビットシフトし、最下位ビットにゼロを入力する。
【００１９】
すなわち、前記ディジタル信号処理ユニットとメモリや外部とのデータ転送動作において、演算精度よりも短いビット長のデータを転送する場合には、データを格納するレジスタの上位側のデータを入出力するような機能を持たせ、固定小数点データとしてのデータ転送命令を従来の整数データを前提とした転送命令とは別に設けることにより、解決することができる。
【００２０】
固定小数点データ転送命令が発行され、デスティネーションレジスタよりもビット長の短いデータが転送されてきた場合は、デスティネーションレジスタの上位側に詰めてデータを格納し、余分な下位ビットはクリアしておく。逆にソースレジスタからデータを出力する場合は、やはりソースレジスタの上位から必要なビット数のデータを出力する。その結果、余分なシフト動作を行う必要がなくなる。
【００２１】
さらに、システム全体を制御するために必要な汎用演算処理ユニットと、ディジタル信号を効率的に処理するために必要な積和演算機能を備えたディジタル信号処理ユニットとを同一チップ上に搭載したマイクロコンピュータやディジタルシグナルプロセッサにおいて、前記ディジタル信号処理ユニットを固定小数点データを扱う演算ユニットとし、固定小数点データ演算を実行する命令を従来の整数演算命令とは別に設けるようにすればよい。
【００２２】
すなわち、乗算動作を行う演算回路では固定小数点乗算命令が発行された時、ソースデータはレジスタの上位側から出力させ、従来の整数データの乗算回路の出力に対して１ビット分算術的に左方向にシフトされた形のデータを指定されたデスティネーションレジスタに格納するように制御する。
【００２３】
【発明の実施の形態】
《全体構成》
図２は本発明の一実施例に係るマイクロコンピュータの全体的なブロック図である。同図に示されるマイクロコンピュータ１は半導体集積回路製造技術によって単結晶シリコンのような１個の半導体基板上に形成されている。図中、１００は整数演算処理機能を持つ汎用演算処理ユニット（セントラルプロセッシングユニット：ＣＰＵ）、１０１は前記汎用演算処理ユニット内の算術論理演算器（ＡＬＵ）、１０２は前記汎用演算処理ユニット内の第２のアドレス演算を行う整数演算器（ＰＡＵ）、１０３は前記各演算器のソースまたはデスティネーションオペランドとなるレジスタ・ファイル、１０４は固定小数点データ演算処理機能を持つディジタル信号処理ユニット（ＤＳＰ）、１０５は前記ディジタル信号処理ユニット内の算術論理演算器（ＡＬＵ）、１０６は前記ディジタル信号処理ユニット内の乗算器、１０７はシフタ、１０８は前記各演算器のソースまたはデスティネーションオペランドとなるレジスタ・ファイル、１０９は全アドレス空間をサポートする３２ビット長のアドレスバス（ＩＡＢ［３１：０］）、１１０及び１１１は一部のアドレス空間のみサポートするワードデータ（１６ビット長のデータ）アクセス専用の１６ビット長のアドレスバス（ＸＡＢ［１６：１］、ＹＡＢ［１６：１］）、１１２は３２ビット長のデータパス（ＩＤＢ［３１：０］）、１１３、１１４は１６ビット長のデータバス（ＸＤＢ［１５：０］、ＹＤＢ［１５：０］）、１１５及び１１６はオンチップメモリ（Ｘメモリ、Ｙメモリ）、１１７は周辺回路や外部とのインタフェースを行うモジュール（Ｉ／Ｏ）である。なお、本来のデータ処理装置に当然含まれる他の要素回路、即ち周辺回路や命令のデコード回路、フロー制御回路等は、本発明と直接関係無いので、ここでは省略している。なお、マイクロコンピュータ１の詳細については、本願発明者等の先の出願（特願平７−１３２９０６号）に記載されている。
【００２４】
まず本実施例の基本的な動作・機能を説明する。マイクロコンピュータ１は、ＣＰＵ命令とＤＳＰ命令の２種類の命令をサポートしている。ＣＰＵ命令とは、デイジタル信号処理ユニット（ＤＳＰ）１０４を動作させることなく専ら汎用演算処理ユニット（ＣＰＵ）１００によって実行される命令である。ＤＳＰ命令とは、ＣＰＵ１００が一部の処理を負担してＤＳＰ１０４が実行する命令である。ＤＳＰ命令としては、整数演算命令と固定小数点データを扱う命令が含まれる。
【００２５】
ＣＰＵ１００が命令をオンチップメモリ１１５、オンチップメモリ１１６又は図示されていない外付けメモリからフェッチし、デコードし、ＣＰＵ命令かＤＳＰ命令かを判定する。デコードの結果、ＤＳＰ命令であればＣＰＵ１００はＤＳＰ制御信号をＤＳＰ１０４に供給する。ＤＳＰ１０４は前記ＤＳＰ制御信号をデコードして、ＤＳＰ１０４内部の制御信号を生成する。すなわち、整数演算命令と固定小数点データを扱う命令では異なる制御信号が生成される。
【００２６】
汎用演算処理ユニット１００は通常のワンチップマイコンＬＳＩのコアとなるセントラル・プロセッシング・ユニット（ＣＰＵ）が備えている基本的な機能を持っている。算術論理演算器（ＡＬＵ）１０１はデータおよびアドレス演算処理を実行する。アドレス演算を行う整数演算器（ＰＡＵ）１０２は算術論理演算器１０１とともに前記ディジタル信号処理ユニット１０４が積和演算処理のために複数のソースデータをメモリから読み出すことが必要な場合に、アドレスを生成する演算器である。各演算器１０１、１０２に必要なソース・オペランド・データはレジスタ・ファイル１０３から選択され、供給される。そして演算結果はレジスタ・ファイル１０３の中の選択されたデスティネーション・レジスタに格納される。
【００２７】
汎用演算処理ユニット１００で生成されたアドレスをアドレスバス１０９、１１０あるいは１１１に出力する。アドレスバス（ＩＡＢ）１０９は全アドレス空間をサポートしており、オンチップ・メモリ１１５、１１６及びインタフェース・モジュール（Ｉ／Ｏ）１１７を通じて各周辺回路、外部アドレス空間をアクセスする。アドレスバス１０９によってアクセスされたアドレス領域のデータ書き込み／読み出しすべきデータは、データバス（ＩＤＢ）１１２によって行われる。アドレスバス（ＸＡＢ）１１０はオンチップ・メモリ（Ｘメモリ）１１５のみアクセスする。アドレスバス１１０によってアクセスされたアドレス領域のデータ書き込み／読み出しすべきデータは、データバス１１３によって行われる。アドレスバス（ＹＡＢ）１１１はオンチップ・メモリ（Ｙメモリ）１１６のみアクセスする。アドレスバス１１１によってアクセスされたアドレス領域のデータ書き込み／読み出しすべきデータは、データバス（ＹＤＢ）１１４によって行われる。
【００２８】
ディジタル信号処理ユニット１０４は、固定小数点データを処理する機能を持つ。整数データを処理する機能を持つことは本発明の実施を妨げない。算術論理演算器１０５は加減算や論理演算処理を実行する。乗算器１０６は２つの１６ビット長のワードデータを乗算し、３２ビット長の結果を出力する。整数乗算の場合はソースレジスタの下位ワード（０ビット目から１５ビット目）をソースデータとして入力し、固定小数点乗算の場合はソースレジスタの上位ワード（１６ビット目から３１ビット目）をソースデータとして入力する。なお、１０６は積和演算器でも本発明の実施を妨げるものではないことは明らかであるので、ここでは乗算器の場合で説明を行う。シフタ１０７は乗算器１０６の出力を１ビット左シフトする機能を持つ。各演算器１０５、１０６に必要なソース・オペランド・データはレジスタ・ファイル１０８から選択され、供給される。そして演算結果はレジスタ・ファイル１０８の中の選択されたデスティネーション・レジスタに格納される。
【００２９】
ディジタル信号処理ユニット１０４で処理するデータはデータバス１１２を経てオンチップメモリ１１５、１１６またはインタフェース・モジュール１１７を通じて各周辺回路、外部からレジスタ・ファイル１０８に供給される。処理されたデータはデータバス１１２、１１３及び１１４を経てレジスタ・ファイル１０８からオンチップメモリ１１５、１１６またはインタフェース・モジュール１１７を通じて各周辺回路、外部へ出力される。ディジタル信号処理ユニット１０４で処理するデータはデータバス１１３及び１１４を経てもデータ転送を行うことができるが、データバス１１３ではレジスタ・ファイル１０８とオンチップメモリ１１５との間でのみ転送可能である。またデータバス１１４ではレジスタ・ファイル１０８とオンチップメモリ１１６との間でのみ転送可能である。データバス１１３及び１１４を使ったデータ転送では、リソースが全て別々であるため、並列に実行することが可能である。レジスタ・ファイル１０８と他とのデータ転送が実行される時、必要なアドレスは汎用演算処理ユニット１００で生成される。
【００３０】
オンチップ・メモリ１１５及び１１６は、それぞれ別のアドレスにマッピングされている。メモリの種類は特に限定されず、ＳＲＡＭ（Static RAM）やＤＲＡＭ（Dynamic RAM）等のＲＡＭ（Random Access Memory）でもＬＳＩの製造工程中にプログラムされるマスクＲＯＭやフラッシュメモリ（Flash Memory）等のＲＯＭ（Read Only Memory）でもよい。すなわち、揮発性のメモリでも不揮発性のメモリでもよい。オンチップ・メモリ１１５はアドレスバス１０９及び１１０よりアドレス供給を受け、データバス１１２及び１１３を介してデータの書き込み／読み出しを行う。一方オンチップ・メモリ１１６はアドレスバス１０９及び１１１よりアドレス供給を受け、データバス１１２及び１１４を介してデータの書き込み／読み出しを行う。その結果、前述のように同じオペレーション・サイクルで並列にデータの書き込み／読み出し動作を行うことが可能である。
【００３１】
《シフタの構成》
シフタ１０７の詳細な一実施例を図３に示す。図中、２００はインバータ、２０１は論理積回路、２０２は論理和回路、２０３はシフタ１０７においてシフトを行うか否かを制御する制御信号である。論理和回路２０２と２つの論理積回路２０１とは選択回路を構成する。乗算器１０６の出力に付されている数字はビット位置を表している。３１ビット目が最上位ビットで、０ビット目が最下位ビットである。他の記号は図２と同じである。シフタの本実施例は、データ処理装置が整数乗算と固定小数点乗算の双方をサポートしている場合の実施例である。ここで乗算器１０６は常時整数乗算を行う。その結果、整数乗算命令が実行されている場合は、制御信号２０３がＬｏｗ状態となり、乗算器１０６の出力結果をそのまま通す。固定小数点乗算命令が実行されている場合は、制御信号２０３がＨｉｇｈ状態となり、乗算器１０６の出力結果を１ビット左シフトして出力する。０ビット目にはゼロが出力される。このようにして固定小数点乗算が実現される。整数乗算命令がサポートされない場合は、シフタ１０７にスルー機能は不要となり常時１ビットシフト出力すればよいので、制御信号２０３も不要となり、シフト機能自体実際には必要なく、単に結果の格納先で格納ビット位置を１ビット左へずらして接続しておけばよい。したがって本発明は１０７のようなシフト回路を持つことが必要条件ではなく、あくまでもディジタル信号処理ユニット１０４内に固定小数点乗算機能を少なくとも備えていることが、本発明の重要なポイントである。
【００３２】
整数乗算のみを行う乗算器に命令によってシフト機能が異なるシフト回路を備えることで、固定小数点乗算と整数乗算の両方が実行可能である。従って、少ないハードウェア量で高機能が実現できるので、チップ面積の増加が抑えられる。また、乗算実行後にシフト操作等のＣＰＵ命令の実行の必要もない。
【００３３】
《ＤＳＰとデータバスとの接続》
レジスタ・ファイル１０８のより詳細なブロック図及びデータバスとの接続例を図４に示す。ただし、この図では要点に絞った説明のため、データバス１１２とレジスタ・ファイル１０８との接続に関わる部分の構成のみを示しており、他のデータバスや各演算器との接続構造は省略している。
【００３４】
図中、３００ａ、３００ｂ、３００ｃ、３００ｄはそれぞれ個々のレジスタ、３０１は各レジスタの上位ワード（１６ビット目から３１ビット目）とバッファ＆ドライバ３０３とを接続するローカルバス、３０２は各レジスタの下位ワード（０ビット目から１５ビット目）とバッファ＆ドライバ３０４とを接続するローカルバス、３０３は前記各レジスタの上位ワードとデータバス１１２との間でデータの受け渡しの中継を行うバッファ＆ドライバ、３０４は前記各レジスタの下位ワードとデータバス１１２との間でデータの受け渡しの中継を行うバッファ＆ドライバ、３０５はデータバス１１２の上位ワード、下位ワードのどちらに接続するかを選択し、データの転送方向を制御する信号、３０６はデータバス１１２の下位ワードに接続し、データの転送方向を制御する信号である。なお、図４、図５及び図７ではデータバス１１２は説明のため下位データバス１１２ａと上位データバス１１２ｂに分割して記述している。図５には、バッファ＆ドライバ３０３、３０４の回路図を示す。図６には、バッファ＆ドライバ３０３の制御信号３０５（３０５ａ、３０５ｂ、３０５ｃ、３０５ｄ、３０６ｅ）及びバッファ＆ドライバ３０４の制御信号３０６（３０６ａ、３０６ｂ、３０６ｃ）と取り扱いデータとの関係を示す。
【００３５】
ここで説明の簡単化のため、１６ビット長のデータをワードデータ、３２ビット長のデータをロングワードデータと呼ぶ。
【００３６】
（１）ロングワードデータの入出力
ロングワードデータがデータバス１１２を経て入力される場合（図６ではロングワード・ロードと記載されている。）、データの性質が（整数データまたは固定小数点データ）に関係なく、動作は同じである。すなわち、制御信号３０６ａが“１”（Ｈｉｇｈレベル）にされると入力バッファ５０５がイネーブルにされ、下位データバス１１２ａとローカルバス３０２とが電気的に接続される。従って、下位データバス１１２ａ上のデータは、バッファ＆ドライバ３０４、ローカルバス３０２を経て指定されたデスティネーションレジスタ（３００ａ〜３００ｄの内のひとつ）の下位ワードに格納される。同時に制御信号３０５ａが“１”（Ｈｉｇｈレベル）にされると入力バッファ５０１がイネーブルにされ、上位データバス１１２ｂとローカルバス３０１とが電気的に接続される。従って、上位データバス１１２ｂ上のデータは、バッファ＆ドライバ３０３、ローカルバス３０１を経て指定されたデスティネーションレジスタ（下位ワードと同じレジスタ）の上位ワードに格納される。
【００３７】
ロングワードデータがデータバス１１２に出力される場合（図６ではロングワード・ストアと記載されている。）も、データの性質が（整数データまたは固定小数点データ）に関係なく、動作は同じである。すなわち、制御信号３０６ｂが“１”（Ｈｉｇｈレベル）にされると出力バッファ５０６がイネーブルにされ、ローカルデータバス３０２と下位データバス１１２ａとが電気的に接続される。従って、指定されたソースレジスタ（３００ａ〜３００ｄの内のひとつ）の下位ワードから出力されたワードデータは、ローカルバス３０２、バッファ＆ドライバ３０４を経て下位データバス１１２ａに出力される。同時に、制御信号３０５ｂが“１”（Ｈｉｇｈレベル）にされると出力バッファ５０２がイネーブルにされ、ローカルデータバス３０１と上位データバス１１２ｂとが電気的に接続される。従って、指定されたソースレジスタ（下位ワードと同じレジスタ）の上位ワードから出力されたワードデータは、ローカルバス３０１、バッファ＆ドライバ３０３を経て上位データバス１１２ｂに出力される。
【００３８】
（２）ワードデータの入出力
ワードデータの転送では、常に下位データバス１１２ａを用いて転送されるが、レジスタ・ファイル１０８内部の動作はデータの性質によって異なる。
【００３９】
（ｉ）整数データ
まず整数データの場合について述べる。ワードデータがデータバス１１２を経て入力される場合（図６では整数データ・ワード・ロードと記載されている。）は、制御信号３０６ａが“１”（Ｈｉｇｈレベル）にされると入力バッファ５０５がイネーブルにされ、下位データバス１１２ａとローカルバス３０２とが電気的に接続される。従って、下位データバス１１２ａ上のデータはバッファ＆ドライバ３０４、ローカルバス３０２を経て指定されたデスティネーションレジスタ（３００ａ〜３００ｄの内のひとつ）の下位ワードに格納される。同時に制御信号３０５ｅが“１”（Ｈｉｇｈレベル）にされると入力バッファ５０７がイネーブルにされ、下位データバス１１２ａの１５ビット目とローカルバス３０１とが符号拡張回路５１０を介して電気的に接続される。従って、バッファ＆ドライバ３０３は、下位データバス１１２ａの１５ビット目のデータのみを取り込んで１６ビット分に拡張コピーし、ローカルバス３０１を経て指定されたデスティネーションレジスタ（下位ワードと同じレジスタ）の上位ワードに格納する。これによってデスティネーションレジスタの上位ワードには転送されてきたワードデータの符号データがコピーされたことになる。
【００４０】
ワードデータがデータバス１１２に出力される場合（図６では整数データ・ワード・ストアと記載されている。）、制御信号３０６ｂが“１”（Ｈｉｇｈレベル）にされると出力バッファ５０６がイネーブルにされ、ローカルデータバス３０２と下位データバス１１２ａとが電気的に接続される。従って、指定されたソースレジスタ（３００ａ〜３００ｄの内のひとつ）の下位ワードから出力されたワードデータは、ローカルバス３０２、バッファ＆ドライバ３０４を経て下位データバス１１２ａに出力される。このときバッファ＆ドライバ３０３側は何も動作しない。すなわち、制御信号３０５ａ、３０５ｂ、３０５ｃ、３０５ｄ、３０５ｅは全て“０”（Ｌｏｗレベル）で、入力バッファ５０１、５０４、５０７及び出力バッファ５０２、５０３は、ディスエーブルにされる。
【００４１】
（ｉｉ）固定少数点データ
次に固定小数点データの場合について述べる。ワードデータがデータバス１１２を経て入力される場合（図６では固定小数点データ・ワード・ロードと記載されている。）は、制御信号３０５ｃが“１”（Ｈｉｇｈレベル）にされると入力バッファ５０３がイネーブルにされ、下位データバス１１２ａとローカルバス３０１とが電気的に接続される。従って、下位データバス１１２ａ上のデータはバッファ＆ドライバ３０３、ローカルバス３０１を経て指定されたデスティネーションレジスタ（３００ａ〜３００ｄの内のひとつ）の上位ワードに格納される。同時に制御信号３０６ｃが“１”（Ｈｉｇｈレベル）にされるとバッファ＆ドライバ３０４のオールゼロ回路５１２は１６ビット分のオールゼロデータを生成し、ローカルバス３０１を経て指定されたデスティネーションレジスタ（上位ワードと同じレジスタ）の下位ワードに格納する。これによってデスティネーションレジスタの下位ワードには自動的にクリアされたことになる。なお、下位ワードのクリアは、バッファ＆ドライバ３０４でオールゼロを生成する代わりにデスティネーションレジスタで直接クリアする回路を設けても良い。
【００４２】
ワードデータがデータバス１１２に出力される場合（図６では固定小数点データ・ワード・ストアと記載されている。）、制御信号３０６ｄが“１”（Ｈｉｇｈレベル）にされると出力バッファ５０４がイネーブルにされ、ローカルデータバス３０１と下位データバス１１２ａとが電気的に接続される。従って、指定されたソースレジスタ（３００ａ〜３００ｄの内のひとつ）の上位ワードから出力されたワードデータは、ローカルバス３０１、バッファ＆ドライバ３０３を経て下位データバス１１２ａに出力される。このときバッファ＆ドライバ３０４側は何も動作しない。すなわち、制御信号３０６ａ、３０６ｂ、３０６ｃは全て“０”（Ｌｏｗレベル）で、入力バッファ５０５、出力バッファ５０６及びオールゼロ回路５１２は、ディスエーブルにされる。
【００４３】
整数データ転送命令と固定小数点データ転送命令との違いによって、制御信号３０５（３０５ａ、３０５ｂ、３０５ｃ、３０５ｄ、３０５ｅ）、３０６（３０６ａ、３０６ｂ、３０６ｃ）の状態が異なり、制御信号３０５、３０６によってバッファ＆ドライバ３０３、３０４をそれぞれ制御することによって、上位ワードから上位ワード、上位ワードから下位ワード又は下位ワードから上位ワードへの転送が可能になる。これによって、固定小数点乗算実行前にソースデータを下位側にシフトする等の操作をＣＰＵ命令によって実行する必要なく、演算時間を短くすることできる。
【００４４】
《ＣＰＵとデータバスとの接続》
汎用演算処理ユニット１００のレジスタ・ファイル１０３のより詳細なブロック図及びデータバスとの接続例を図７に示す。ただし、この図でもデータバス１１２とレジスタ・ファイル１０３との接続に関わる部分の構成のみを示しており、他のデータバスや各演算器との接続構造は省略している。なお、図７でも図４と同様にデータバス１１２は下位データバス１１２ａと上位データバス１１２ｂに分割して記述している。図中、４００ａ、４００ｂ、４００ｃ、４００ｄはそれぞれ個々のレジスタ、４０１は各レジスタの上位ワード（１６ビット目から３１ビット目）とバッファ＆ドライバ４０３とを接続するローカルバス、４０２は各レジスタの下位ワード（０ビット目から１５ビット目）とバッファ＆ドライバ４０４とを接続するローカルバス、４０３は前記各レジスタの上位ワードと上位データバス１１２bとの間でデータの受け渡しの中継を行うバッファ＆ドライバ、４０４は前記各レジスタの下位ワードと下位データバス１１２ａとの間でデータの受け渡しの中継を行うバッファ＆ドライバ、４０５は上位データバス１１２bに接続し、データの転送方向を制御する制御信号、４０６は下位データバス１１２ａに接続し、データの転送方向を制御する信号である。
【００４５】
本レジスタ・ファイル１０３では、全てのデータは整数データとして取り扱う。従ってデータ転送動作は前述のディジタル信号処理ユニット１０４のレジスタ・ファイル１０８における整数データの場合の動作及びタイミング又はパイプライン動作は異なる場合があるが、基本的には同じである。すなわち、バッファ＆ドライバ４０３には、バッファ＆ドライバ３０３のうち入力バッファ５０１、５０７、出力バッファ５０２及び符号拡張回路５１０に相当する回路がある。バッファ＆ドライバ４０４には、バッファ＆ドライバ３０４のうち入力バッファ５０５及び出力バッファ５０６に相当する回路がある。従って、制御信号４０５には、制御信号３０５ａ、３０６ｂ、３０６ｅに相当する制御信号がある。制御信号４０６には、制御信号３０６ａ、３０６ｂに相当する制御信号がある。
【００４６】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。例えば、マイクロコンピュータに限定されず、ディジタルシグナルプロセッサにも適用される。
【００４７】
また、本実施例ではレジスタ・ファイル１０８でも整数データと固定小数点データの双方のデータ転送命令をサポートする場合を示したが、本発明ではディジタル信号処理ユニット１０４のためのデータ転送に整数データ用のワードデータ転送命令をサポートすることは必ずしも必要とせず、少なくとも固定小数点データ用の転送命令のみのサポートでも構わない。また、データのビット長は必ずしも１６ビット、３２ビットである必要はないことは言うまでもない。さらに本実施例ではワードデータの転送時にはデータバスの下位ワードのみを使用することを前提として説明したが、固定小数点データのワードデータを転送するときはやはりデータバスの上位ワードを用いることにし、相手側でデータの性質によって接続するワードを切り替えるようにすれば、同様の機能が実現できる。この場合、バッファ＆ドライバ３０３はいつでもデータバスの上位ワード側に接続すればよいので、下位データバス１１２ａと接続する必要はなくなる。さらに本実施例では、固定小数点が３０ビット目と３１ビット目の間にあり、表現できる数値範囲は−１．０以上＋１．０未満を仮定していたが、ガードビットと一般に呼ばれるオーバフロー防止のビットがさらに拡張されてサポートされたレジスタであっても構わない。この場合、ワードデータの転送命令実行時には１６ビット目から３１ビット目のワードデータが転送され、ガードビット部分はデータ入力時には符号拡張され、データ出力時には無視すればよい。
【００４８】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００４９】
すなわち、システム全体を制御するために必要な汎用演算処理ユニットと、ディジタル信号を効率的に処理するために必要な積和演算機能を備えたディジタル信号処理ユニットとを同一チップ上に搭載したマイクロコンピュータやディジタルシグナルプロセッサにおいて、前記ディジタル信号処理ユニットが固定小数点データを扱うことが可能にされているから、より複雑なディジタル信号処理ができる。
【００５０】
また、前記ディジタル信号処理ユニットとメモリや外部とのデータ転送動作において、演算精度よりも短いビット長のデータを転送する場合には、データを格納するレジスタの上位側のデータを入出力するような機能を持たせ、やはり固定小数点データとしてのデータ転送命令を従来の整数データを前提とした転送命令とは別に設けることにより、データ転送に伴う余分なシフト動作等が省略でき、高速性能を向上させることができる。
【００５１】
前記ディジタル信号処理ユニットにおいて固定小数点データ演算を実行する命令を従来の整数演算命令とは別に設けることにより、乗算結果のビット位置補正が自動的に行われ、高速性能を向上させることができる。
【図面の簡単な説明】
【図１】整数データと固定少数点データとの関係を示す図。
【図２】本発明の一実施例におけるマイクロコンピュータの全体的なブロック図。
【図３】本発明の一実施例におけるシフタ１０７の詳細な一実施例。
【図４】本発明の一実施例におけるディジタル信号処理ユニット１０４のレジスタ・ファイル１０８のより詳細なブロック図及びデータバスとの接続例。
【図５】バッファ＆ドライバ回路の図。
【図６】制御信号３０５及び制御信号３０６と取り扱いデータとの関係を表す図。
【図７】本発明の一実施例における汎用演算処理ユニット１０１のレジスタ・ファイル１０３のより詳細なブロック図及びデータバスとの接続例。
【符号の説明】
１００：整数演算処理機能を持つ汎用演算処理ユニット（ＣＰＵ）
１０１：汎用演算処理ユニット内の算術論理演算器（ＡＬＵ）
１０２：汎用演算処理ユニット内の第２のアドレス演算を行う整数演算器（ＰＡＵ）
１０３：汎用演算処理ユニット内のレジスタ・ファイル
１０４：固定小数点データ演算処理機能を持つディジタル信号処理ユニット（ＤＳＰ）
１０５：ディジタル信号処理ユニット内の算術論理演算器
１０６：ディジタル信号処理ユニット内の乗算器
１０７：ディジタル信号処理ユニット内のシフタ
１０８：ディジタル信号処理ユニット内のレジスタ・ファイル
１０９：３２ビット長のアドレスバス
１１０〜１１１：１６ビット長のアドレスバス
１１２：３２ビット長のデータバス
１１３〜１１４：１６ビット長のデータバス
１１５〜１１６：オンチップメモリ（Ｘメモリ、Ｙメモリ）
１１７：周辺回路や外部とのインタフェースを行うモジュール（Ｉ／Ｏ）
２００：インバータ回路
２０１：論理積回路
２０２：論理和回路
２０３：シフタ１０７においてシフトを行うか否かを制御する制御信号
３００ａ、３００ｂ、３００ｃ、３００ｄ：レジスタ・ファイル内の個々のレジスタ
３０１〜３０２：ローカルバス
３０３〜３０４：バッファ＆ドライバ
３０５〜３０６：データ転送用制御信号
１１２ａ：データバス１１２の下位ワード（下位データバス）
１１２ｂ：データバス１１２の上位ワード（上位データバス）
４００ａ、４００ｂ、４００ｃ、４００ｄ：レジスタ・ファイル内の個々のレジスタ
４０１〜４０２：ローカルバス
４０３〜４０４：バッファ＆ドライバ
４０５〜４０６：データ転送用制御信号
５０１、５０３、５０５、５０７：入力バッファ
５０２、５０４、５０６：出力バッファ
５１０：符号拡張回路
５１２：オールゼロ回路
３０５ａ、３０５ｂ、３０５ｃ、３０５ｄ、３０５ｅ：制御信号
３０６ａ、３０６ｂ、３０６ｃ：制御信号。
【図１】
0003655403.tif 000002
【図２】
0003655403.tif 000003
【図３】
0003655403.tif 000004
【図４】
0003655403.tif 000005
【図５】
0003655403.tif 000006
【図６】
0003655403.tif 000007
【図７】
0003655403.tif 000008