(57)【特許請求の範囲】
【請求項１】
読み込んだ命令に従って動作するプロセッサにおいて、
１つ以上の演算データレジスタと、演算結果を格納する結果格納レジスタとをそれぞれ備え、すべての前記演算データレジスタにデータが入力されると、入力されたデータを用いて所定の演算処理を行い、その演算結果を前記結果格納レジスタに書き込む、それぞれ単一の演算機能を有する複数の演算手段と、
前記各演算手段が備える前記演算データレジスタおよび前記結果格納レジスタを含むレジスタを互いに接続し、接続されたレジスタ間でデータを転送するレジスタ間転送手段と、
データの転送先のレジスタを指定する転送先指定情報と、転送元のレジスタを指定する転送元指定情報とがオペランドにおいて記述された前記命令を読み込んでデコードすることにより、前記転送元指定情報により指定されたレジスタに格納されたデータを、前記転送先指定情報により指定されたレジスタに対して前記レジスタ間転送手段を通じて転送させる転送制御手段と、
を有し、
前記転送制御手段は、前記転送元指定情報の代わりに、転送すべきデータである転送データが前記オペランドにおいて記述された前記命令を読み込んだ場合には、当該命令をデコードすることにより、前記転送先指定情報により指定されたレジスタに対して前記転送データを前記レジスタ間転送手段を通じて転送させることを特徴とするプロセッサ。
【請求項２】
前記各演算手段は、前記演算処理中において前記結果格納レジスタが前記転送制御手段によってデータの転送元アドレスとして指定された場合に、前記演算処理の結果を前記結果格納レジスタに格納するまでの間、前記結果格納レジスタからの読み出し動作を待機させるための読み出し待機信号を前記レジスタ間転送手段上に送信することを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記各演算手段は、前記演算処理中において少なくとも１つ以上の前記演算データレジスタが前記転送制御手段によってデータの転送先アドレスとして指定された場合に、前記演算処理の結果を前記結果格納レジスタに格納するまでの間、指定された前記演算データレジスタに対する書き込み動作を待機させるための書き込み待機信号を前記レジスタ間転送手段上に送信することを特徴とする請求項１記載のプロセッサ。
【請求項４】
外部のメモリから読み込んだデータ、および前記メモリへ書き出すデータを一時記憶するデータキャッシュをさらに有することを特徴とする請求項１記載のプロセッサ。
【請求項５】
前記転送制御手段の制御により前記レジスタ間転送手段を通じてデータの入力および出力がそれぞれ行われる第１のアドレスレジスタおよび第１のデータレジスタを具備し、前記第１のアドレスレジスタにデータが入力されると、入力されたデータを読み出しアドレスとして、前記データキャッシュを通じて前記メモリからデータを読み出し、前記第１のデータレジスタに格納するデータ読み出し手段がさらに設けられることを特徴とする請求項４記載のプロセッサ。
【請求項６】
前記データ読み出し手段は、前記メモリからのデータ読み出し処理中において前記第１のデータレジスタが前記転送制御手段によってデータの転送元アドレスとして指定された場合に、前記データ読み出し処理の結果を前記第１のデータレジスタに格納するまでの間、前記第１のデータレジスタからの読み出し動作を待機させるための読み出し待機信号を前記レジスタ間転送手段上に送信することを特徴とする請求項５記載のプロセッサ。
【請求項７】
前記データ読み出し手段は、前記メモリからのデータ読み出し処理中において前記第１のアドレスレジスタが前記転送制御手段によってデータの転送先アドレスとして指定された場合に、前記データ読み出し処理の結果を前記第１のデータレジスタに格納するまでの間、前記第１のアドレスレジスタに対する書き込み動作を待機させるための書き込み待機信号を前記レジスタ間転送手段上に送信することを特徴とする請求項５記載のプロセッサ。
【請求項８】
前記転送制御手段の制御により前記レジスタ間転送手段を通じてデータの入力がそれぞれ行われる第２のアドレスレジスタおよび第２のデータレジスタを具備し、前記第２のアドレスレジスタおよび前記第２のデータレジスタの双方にデータが入力されると、前記第２のアドレスレジスタに入力されたデータを前記メモリ上の転送先アドレスとして、前記第２のデータレジスタに入力されたデータを、前記データキャッシュを通じて前記メモリに転送するデータ転送手段が設けられることを特徴とする請求項４記載のプロセッサ。
【請求項９】
前記データ転送手段は、前記メモリへのデータ転送処理中において前記第２のアドレスレジスタおよび前記第２のデータレジスタの少なくとも一方が前記転送制御手段によってデータの転送先アドレスとして指定された場合に、前記データ転送処理が完了するまでの間、指定された前記第２のアドレスレジスタおよび前記第２のデータレジスタに対する書き込み動作を待機させるための書き込み待機信号を前記レジスタ間転送手段上に送信することを特徴とする請求項８記載のプロセッサ。
【請求項１０】
前記転送制御手段の制御により前記レジスタ間転送手段を通じてそれぞれデータが入力される第３および第４のアドレスレジスタを具備し、前記第３および第４のアドレスレジスタの双方にデータが入力されると、入力されたデータをそれぞれ転送元アドレスおよび転送先アドレスとして、これらに応じて前記データキャッシュを通じ、前記メモリ上のデータ転送を行うメモリ転送手段が設けられることを特徴とする請求項４記載のプロセッサ。
【請求項１１】
前記メモリ転送手段は、前記メモリ上のデータ転送処理中において前記第３および第４のアドレスレジスタのうち少なくとも一方が前記転送制御手段によってデータの転送先アドレスとして指定された場合に、前記メモリ上のデータ転送処理が完了するまでの間、指定された前記第３および第４のアドレスレジスタに対する書き込み動作を待機させるための書き込み待機信号を前記レジスタ間転送手段上に送信することを特徴とする請求項１０記載のプロセッサ。
【請求項１２】
前記転送制御手段の制御により前記レジスタ間転送手段を通じてそれぞれデータが入力される第３および第４のデータレジスタと、前記転送制御手段の制御により前記レジスタ間転送手段を通じてデータの出力が行われるステータスレジスタとを具備し、前記第３および第４のデータレジスタの双方にデータが入力されると、入力された各データの値を比較して、比較結果を前記ステータスレジスタに書き込むデータ比較手段が設けられることを特徴とする請求項１記載のプロセッサ。
【請求項１３】
前記データ比較手段は、データの比較処理中において前記ステータスレジスタが前記転送制御手段によってデータの転送元アドレスとして指定された場合に、前記比較処理の結果を前記ステータスレジスタに格納するまでの間、前記ステータスレジスタからの読み出し動作を待機させるための読み出し待機信号を前記レジスタ間転送手段上に送信することを特徴とする請求項１２記載のプロセッサ。
【請求項１４】
前記データ比較手段は、データの比較処理中において前記第３および第４のデータレジスタの少なくとも一方が前記転送制御手段によってデータの転送元アドレスとして指定された場合に、前記比較処理の結果を前記ステータスレジスタに格納するまでの間、指定された前記第３および第４のデータレジスタに対する書き込み動作を待機させるための書き込み待機信号を前記レジスタ間転送手段上に送信することを特徴とする請求項１２記載のプロセッサ。
【請求項１５】
前記レジスタ間転送手段は複数設けられることを特徴とする請求項１記載のプロセッサ。
【請求項１６】
前記転送制御手段は、１命令フォーマット中に複数の命令が記述されたＶＬＩＷ（Very Long Instruction Word）を読み込み、前記複数のレジスタ間転送手段において前記複数の命令を並列に処理することを特徴とする請求項１５記載のプロセッサ。
【請求項１７】
発行された前記命令を一時格納して前記転送制御手段に対して出力し、かつ前記レジスタ間転送手段に接続された命令格納レジスタをさらに有し、前記命令格納レジスタは、出力した前記命令に応じて前記転送制御手段から前記レジスタ間転送手段を通じて転送されたデータによって、出力する前記命令の指定を受けることが可能であることを特徴とする請求項１記載のプロセッサ。
【請求項１８】
前記命令格納レジスタは、出力した前記命令に応じて前記転送制御手段から前記レジスタ間転送手段を通じて転送されたデータによって、出力する前記命令の書き込みを受けることが可能であることを特徴とする請求項１７記載のプロセッサ。
【請求項１９】
前記命令はその実行回数を指定する情報をさらに含み、前記転送制御手段は、前記実行回数を指定する情報をデコードすると、指定された前記実行回数分だけ同じ前記命令を繰り返して実行させることを特徴とする請求項１記載のプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、読み込んだ命令に従って演算処理等の種々の処理を行うプロセッサに関し、特に、読み込む命令を単純化することで、命令デコードに要する時間を短縮し、処理が高速化されたプロセッサに関する。
【０００２】
【従来の技術】
現在、コンピュータや携帯端末はもとより、あらゆる電子機器においてマイクロプロセッサが用いられている。従来、マイクロプロセッサに与えられる命令には、どんな演算等の処理を行わせるかを指定するオペコードが記載され、マイクロプロセッサはこのオペコードをデコードすることにより、各演算器等の制御を行っていた。
【０００３】
ここで、図１５は、従来のプロセッサの構成例を示す機能ブロック図である。
図１５に示すプロセッサ１００は、命令の取得と命令の発行とを行う制御部１１０と、命令に従って演算を実行するデータパス部１２０と、外部からのデータ等の読み込みや、演算結果の外部への出力を行うための外部バスＩ／Ｆ（インタフェース）１３０によって構成される。また、このプロセッサ１００の外部には、外部バスＩ／Ｆ１３０からアドレスバス１４０およびデータバス１５０を介してメモリ２００が接続されている。
【０００４】
制御部１１０は、命令デコーダ１１１とアドレス生成器１１２によって構成される。命令デコーダ１１１は、外部バスＩ／Ｆ１３０を介して読み込んだ命令に対するデコード処理を行い、命令実行のための内部の制御信号を生成する。アドレス生成器１１２は、命令の読み出しアドレスを生成して、命令デコーダ１１１に供給する。
【０００５】
また、データパス部１２０は、演算器１２１と汎用レジスタ１２２によって構成される。演算器１２１は、例えば加算や乗算等の複数の種類の演算が可能で、命令デコーダ１１１からの制御信号に従って、汎用レジスタ１２２から読み出したデータに対して各種演算を行う。汎用レジスタ１２２は、演算器１２１による演算中や終了後の演算結果を適宜格納する。
【０００６】
外部バスＩ／Ｆ１３０は、プロセッサ１００の内部の信号を外部のバス信号に変換し、外部（ここではメモリ２００）とのデータの読み書きを行う。外部のメモリ２００は、命令２００ａとデータ２００ｂとを格納しており、外部バスＩ／Ｆ１３０がアドレスバス１４０を介して要求するアドレスの命令２００ａまたはデータ２００ｂを、データバス１５０を介して供給する。
【０００７】
以上の構成を有するプロセッサ１００における命令実行の流れを説明する。図１６は、従来のプロセッサ１００における命令実行の流れを示すフローチャートである。
【０００８】
ステップＳ１６０１において、制御部１１０のアドレス生成器１１２が、命令を取得するためのアドレスを生成する。ステップＳ１６０２において、生成されたアドレスが、外部バスＩ／Ｆ１３０を介してメモリ２００に出力され、命令デコーダ１１１は、このアドレスに従ってメモリ２００から所定の命令２００ａを読み込む。
【０００９】
ステップＳ１６０３において、命令デコーダ１１１は、読み込んだ命令２００ａをデコードし、内部の制御信号を生成して、データパス部１２０の演算器１２１に供給する。演算器１２１は、供給された制御信号に基づき、ステップＳ１６０４において、汎用レジスタ１２２から指定された演算データを読み出し、ステップＳ１６０５において、読み出した演算データに対する各種の演算を行って、ステップＳ１６０６において、演算結果を汎用レジスタ１２２へ書き戻す。
【００１０】
次に、図１７は、上記のプロセッサ１００にメモリ２００から読み込まれる命令２００ａのプログラムコード例を示す図である。
命令２００ａのプログラムコードは、実行命令や実行条件を指定するオペコードと、ソースデータ（即値）やデスティネーションデータを指定するオペランドによって構成される。図１７の例では、例えば第１７０１行において、「Ｌｏａｄ」は指定したレジスタへのデータ転送を実行させる実行命令であり、続く「ｒ０」「ｐｃ，＃１２」はそれぞれ汎用レジスタ１２２における転送先および転送元のアドレスを示すデスティネーションデータである。
【００１１】
図１７のプログラムコードでは、第１７０１行目の実行により、汎用レジスタ１２２上のアドレス「ｒ０」に対して、メモリ２００上のアドレス「ＰＣ＋１２」のデータが読み込まれる。なお、「ＰＣ」は、制御部１１０内に設けられてアドレス生成器１１２にアドレスを生成させるための図示しないプログラムカウンタのカウント値を示す。
【００１２】
また、第１７０２行目では、メモリ２００上のアドレス「ＰＣ＋１６」のデータが、汎用レジスタ１２２上のアドレス「ｒ１」に読み込まれる。第１７０３行目では、汎用レジスタ１２２上のアドレス「ｒ０」「ｒ１」の各値が乗算されて結果がアドレス「ｒ２」に格納される。第１７０４行目では、アドレス「ｒ０」と即値「１０」の値との乗算が行われ、結果がアドレス「ｒ３」に格納される。第１７０５行目では、アドレス「ｒ２」「ｒ３」の各値が加算されて、結果がアドレス「ｒ３」に書き込まれる。
【００１３】
【発明が解決しようとする課題】
上記のように、従来のプロセッサ１００では、制御部１１０に対する命令２００ａにおいて、演算器１２１で行う処理を指定する実行命令を示すコードがオペデータ中に記載されており、命令デコーダ１１１でこのコードから実行させる演算の種類を判断する必要があった。このため、命令デコーダ１１１におけるデコード処理に要する時間が長くなってしまうことが問題となっていた。
【００１４】
また、デコードされた命令に応じて、演算器１２１は、演算データを汎用レジスタ１２２から読み込み、演算結果を再び汎用レジスタ１２２に書き戻していたため、処理効率が悪く、実行速度が低下する原因となっていた。
【００１５】
さらに、上記の演算器１２１は多くの種類の演算命令が実行可能となっているが、この演算器１２１は常に１つの命令が入力されて動作するため、ある演算の実行中には、同じ演算器１２１内の別の演算を行う回路は動作しておらず、無駄な構成となっていた。
【００１６】
また、例えば、ソフトウェアを使用して、他の命令体系のプログラムコードを上記のプロセッサ１００に対応する命令のコードに変換して実行する場合、変換されたデータを外部のメモリ２００に一旦書き込み、そのデータをコードとして再びプロセッサ１００に読み込んでいたため、処理が複雑で、実行速度が遅くなっていた。
【００１７】
本発明はこのような課題に鑑みてなされたものであり、読み込んだ命令に対するデコード処理に要する時間を短縮して、実行速度を向上させたプロセッサを提供することを目的とする。
【００１８】
【課題を解決するための手段】
本発明では上記課題を解決するために、読み込んだ命令に従って動作するプロセッサにおいて、１つ以上の演算データレジスタと、演算結果を格納する結果格納レジスタとをそれぞれ備え、すべての前記演算データレジスタにデータが入力されると、入力されたデータを用いて所定の演算処理を行い、その演算結果を前記結果格納レジスタに書き込む、それぞれ単一の演算機能を有する複数の演算手段と、前記各演算手段が備える前記演算データレジスタおよび前記結果格納レジスタを含むレジスタを互いに接続し、接続されたレジスタ間でデータを転送するレジスタ間転送手段と、データの転送先のレジスタを指定する転送先指定情報と、転送元のレジスタを指定する転送元指定情報とがオペランドにおいて記述された前記命令を読み込んでデコードすることにより、前記転送元指定情報により指定されたレジスタに格納されたデータを、前記転送先指定情報により指定されたレジスタに対して前記レジスタ間転送手段を通じて転送させる転送制御手段と、を有し、前記転送制御手段は、前記転送元指定情報の代わりに、転送すべきデータである転送データが前記オペランドにおいて記述された前記命令を読み込んだ場合には、当該命令をデコードすることにより、前記転送先指定情報により指定されたレジスタに対して前記転送データを前記レジスタ間転送手段を通じて転送させることを特徴とするプロセッサが提供される。
【００１９】
このようなプロセッサでは、転送制御手段によって、演算手段が具備する１つ以上の演算データレジスタと、同一または別の演算手段が具備する結果格納レジスタとの間のデータ転送動作が制御される。各演算手段は、すべての演算データレジスタにデータが入力されることによって動作を開始するので、転送制御手段によるデータ転送制御のみにより、各演算手段の動作が制御される。従って、転送制御手段に発行される命令では、データの転送先のレジスタを指定する情報と、転送元のレジスタを指定する情報とがオペランドで指定される。さらに、命令には、転送元のレジスタを指定する情報の代わりに、転送すべきデータを記述することが可能であり、転送制御手段にこのような命令を発行すると、転送先として指定した演算データレジスタに所望のデータを格納することも可能になる。
【００２０】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本発明のプロセッサの全体構成例を示す機能ブロック図である。
【００２１】
図１に示すプロセッサ１は、命令の取得と命令の発行とを行う命令取り出し器（図中ではＦｅｔｃｈと表示）２と、入力された命令に従って、アドレスバス３１およびデータバス３２によってなる内部バスに接続された各種のデータ処理器や演算器の動作を制御するバスマスタ３と、外部から読み込まれた命令を記憶する命令キャッシュ４ａと、処理結果や外部から読み込まれたデータを記憶するデータキャッシュ４ｂと、外部からのデータ等の読み込みや、処理結果の外部への出力を行うための外部バスＩ／Ｆ（インタフェース）５とを具備する。
【００２２】
また、内部のアドレスバス３１およびデータバス３２には、例えば外部とのデータ転送処理等を行うデータ処理器や、各種の演算処理を行う演算器等が接続されている。データ処理器としては、読み出し器（図中ではＬｏａｄと表示）６１、書き出し器（同Ｓｔｏｒｅ）６２、メモリ転送器（同Ｍｏｖｅ）６３、スタック処理器（同Ｓｔａｃｋ）６４、およびデータ交換器（同Ｓｗｐ）６５が接続されている。また、演算器としては、比較器（同Ｃｍｐ）６６、整数加算器（同Ａｄｄ）６７、整数減算器（同Ｓｕｂ）６８、整数乗算器（同Ｍｕｌ）６９、整数除算器（同Ｄｉｖ）７０、論理積演算器（同Ａｎｄ）７１、論理和演算器（同Ｏｒ）７２、排他的論理積演算器（同Ｘａｎｄ）７３、排他的論理和演算器（同Ｘｏｒ）７４、ビット反転演算器（同Ｎｏｔ）７５、浮動小数加算器（同Ｆａｄｄ）７６、浮動小数減算器（同Ｆｓｕｂ）７７、浮動小数乗算器（同Ｆｍｕｌ）７８、浮動小数除算器（同Ｆｄｉｖ）７９、および積和演算器（同Ｍｕｌａｄｄ）８０が接続されている。さらに、これらとともに、アドレスバス３１およびデータバス３２には、汎用レジスタ８１が接続されている。
【００２３】
また、このプロセッサ１の外部には、外部バスＩ／Ｆ５から外部のアドレスバス５１およびデータバス５２を介して、書き換え可能なメモリ１０が接続されている。
【００２４】
命令取り出し器２は、命令キャッシュ４ａおよび外部バスＩ／Ｆ５を介して、外部のメモリ１０から命令を読み込み、バスマスタ３に対して出力する。バスマスタ３は、入力された命令を解析し、アドレスバス３１にセレクト信号を出力してレジスタのアドレス指定を行い、場合によってはデータバス３２を通じて即値を送信することにより、アドレスバス３１およびデータバス３２に接続した各データ処理器の間のデータ転送動作を制御する。また、読み込んだ命令中に命令実行回数に情報が含まれている場合には、この命令を指定された回数分だけ繰り返して実行させる。
【００２５】
命令キャッシュ４ａは、外部バスＩ／Ｆ５を通じてメモリ１０から読み込まれた命令を記憶しておき、命令取り出し器２により指定されたメモリ１０上のアドレスがヒットした場合に、記憶していた命令を命令取り出し器２に対して出力する。データキャッシュ４ｂは、外部バスＩ／Ｆ５を通じてメモリ１０から読み込まれたデータを記憶しておき、読み出し器６１により指定されたメモリ１０上のアドレスがヒットした場合に、記憶していたデータを読み出し器６１に出力する。外部バスＩ／Ｆ５は、プロセッサ１の内部の信号を外部のバス信号に変換し、例えばメモリ１０等の外部とのデータの読み書きを行う。
【００２６】
アドレスバス３１およびデータバス３２に接続された読み出し器６１、書き出し器６２、メモリ転送器６３、スタック処理器６４、データ交換器６５、比較器６６、整数加算器６７、整数減算器６８、整数乗算器６９、整数除算器７０、論理積演算器７１、論理和演算器７２、排他的論理積演算器７３、排他的論理和演算器７４、ビット反転演算器７５、浮動小数加算器７６、浮動小数減算器７７、浮動小数乗算器７８、浮動小数除算器７９および積和演算器８０は、入力用のレジスタを具備し、バスマスタ３によりアドレスバス３１を通じて指定された入力用のレジスタに、データバス３２を通じてデータが入力されると、所定のデータ処理を開始する。これらのデータ処理器および演算器は、それぞれ１つの処理機能のみ有している。
【００２７】
また、出力用のレジスタを具備している場合には、処理結果のデータをこのレジスタに格納する。この格納されたデータは、バスマスタ３によるアドレス指定に基づいて、他のデータ処理器や演算器等に転送される。なお、これらの各データ処理器および各演算器の動作については後述する。
【００２８】
汎用レジスタ８１は、各データ処理器および演算器の処理結果等を一時的に記憶し、バスマスタ３によるアドレス指定に基づいて、記憶したデータを他のデータ処理器や演算器等に転送する。
【００２９】
外部に接続されたメモリ１０は、命令とデータとを格納しており、外部バスＩ／Ｆ５がアドレスバス５１を介して要求するアドレスの命令またはデータを、データバス５２を介して供給する。なお、外部のアドレスバス５１およびデータバス５２上には、メモリ１０の他に例えば、プログラムや各種のデータを記憶するＲＯＭやＨＤＤ（ハードディスクドライブ）のＩ／Ｆ、データ入力用のキーボードやモニタ、各種の通信ネットワーク等に接続するためのＩ／Ｆ等（いずれも図示せず）が接続されており、コンピュータシステムを構成している。プロセッサ１が、データバス５２を通じてＲＯＭやＨＤＤ等からプログラムを読み込んで実行し、データバス５２上の各部とのデータの読み書きを行うことにより、このコンピュータシステムが動作する。
【００３０】
このプロセッサ１では、メモリ１０から命令が読み出され、バスマスタ３に順次供給されると、バスマスタ３はこの命令に従って、アドレスバス３１およびデータバス３２に接続されたデータ処理器や演算器の間のデータ転送動作を制御する。各データ処理器および演算器は、データバス３２からのデータ入力用のレジスタを具備し、また一部のデータ処理器とすべての演算器はデータ出力用のレジスタを具備する。
【００３１】
各データ処理器および各演算器は、単一の処理機能を有しており、後述するように、所定の入力用のレジスタへのデータ入力が完了すると、自動的に所定のデータ処理を実行する。また、出力用のレジスタを具備するものは処理結果をそのレジスタに格納する。これにより、バスマスタ３によって転送元のレジスタと転送先のレジスタとが指定されるだけで、各データ処理器および演算器を動作させることが可能となる。従って、バスマスタ３は基本的に、発行された命令を基に、転送元および転送先の各レジスタを指定する情報のみ解読すればよく、命令が単純化され、バスマスタ３におけるデコード処理が高速化される。
【００３２】
次に、図２、図３、図４、図５および図６を用いて、内部のアドレスバス３１およびデータバス３２に接続された各機能ブロックについて、さらに詳しく説明する。なお、以下の図２、図３、図４、図５および図６では、説明を簡略化するために、アドレスバス３１およびデータバス３２が１組のみ設けられているものとしているが、これらは複数組設けられてもよい。
【００３３】
図２は、命令取り出し器２、バスマスタ３、比較器６６、読み出し器６１および整数加算器６７の各内部構成を示すブロック図である。
図２に示すように、命令取り出し器２は、プログラムカウンタ２１と、アドレス生成器２２と、命令発行器２３と、命令格納レジスタ２４を具備している。プログラムカウンタ２１は、入力される図示しないクロック信号に同期して、アドレス生成器２２に対してカウント値を順次出力する。また、アドレスバス３１およびデータバス３２に接続しており、アドレスバス３１を通じてセレクト信号により選択されると、データバス３２を通じて転送されたデータによって、カウント値が書き換えられる。
【００３４】
アドレス生成器２２は、プログラムカウンタ２１から出力されるカウント値を、メモリ１０における読み出しアドレスとして、命令発行器２３に対して出力する。
【００３５】
命令発行器２３は、アドレス生成器２２から出力された読み出しアドレスを、命令キャッシュ４ａおよび外部バスＩ／Ｆ５を通じてメモリ１０に転送する。そして、メモリ１０から読み込まれた命令を命令格納レジスタ２４に転送する。また、出力した読み出しアドレスが命令キャッシュ４ａにおいてヒットした場合には、この命令キャッシュ４ａから対応する命令を読み出し、命令格納レジスタ２４に転送する。さらに、後述する比較器６６のステータスレジスタ６６ｃからのステータス信号の供給を受け、このステータス信号に応じて動作させることが可能となっている。
【００３６】
命令格納レジスタ２４は、命令発行器２３から出力された命令を保持し、所定のタイミングでバスマスタ３に転送する。また、アドレスバス３１およびデータバス３２に接続して、データバス３２からのデータ入力用のレジスタとしても機能し、アドレスバス３１を通じてセレクト信号により選択されると、データバス３２を通じて転送されたデータによって、出力する命令が書き換えられる。
【００３７】
また、バスマスタ３は、アドレスバス３１およびデータバス３２に接続したデコーダ３ａを具備している。このデコーダ３ａは、命令取り出し器２の命令格納レジスタ２４より出力された命令を解析し、アドレスバス３１に対してセレクト信号を出力して、アドレスバス３１に接続された各データ処理器または各演算器等のレジスタを選択する。このとき、データ転送元のレジスタと、データ転送先のレジスタとを選択することにより、選択されたレジスタ間でのデータバス３２を通じたデータ転送が行われる。
【００３８】
また、デコーダ３ａは、入力された命令に応じて、即値データを生成し、データ転送先のレジスタを選択してこのレジスタにデータバス３２を通じて即値データを転送することも可能である。さらに、入力された命令中に実行回数を指定する情報が含まれる場合は、指定された回数分だけ同じ転送動作を繰り返すことも可能である。
【００３９】
また、デコーダ３ａは、セレクト信号の出力後にデータバス３２を通じてＷａｉｔ信号を受信した場合には、Ｗａｉｔ信号の受信が解除されるまでの間、このデータバス３２および対応するアドレスバス３１における制御状態を保持し、新たな命令のデコードに応じたセレクト信号および即値の出力を停止する。なお、アドレスバス３１およびデータバス３２が複数組設けられている場合には、Ｗａｉｔ信号が受信されていない他のバスに対するデータ転送を継続させることが可能である。
【００４０】
次に、比較器６６は、データ入力用の２つのデータレジスタ６６ａおよび６６ｂと、ステータスレジスタ６６ｃを具備している。これらのデータレジスタ６６ａおよび６６ｂとステータスレジスタ６６ｃは、アドレスバス３１およびデータバス３２に接続されている。
【００４１】
データレジスタ６６ａおよび６６ｂは、データバス３２を通じて転送されたデータの入力を受けるためのレジスタであり、それぞれバスマスタ３からのセレクト信号によって指定されると、データバス３２より転送されたデータを格納する。データレジスタ６６ａおよび６６ｂの双方へのデータ入力が完了すると、比較器６６は入力された各データを比較して、比較結果をステータスレジスタ６６ｃに格納する。
【００４２】
ステータスレジスタ６６ｃは、格納したデータをステータス信号として命令取り出し器２の命令発行器２３に出力するとともに、データバス３２に対するデータ出力用のレジスタとしても機能する。この場合、ステータスレジスタ６６ｃは、アドレスバス３１を通じてセレクト信号を受信すると、他のレジスタに対してデータバス３２を通じて格納したデータを出力する。また、ステータスレジスタ６６ｃは、データバス３２からのデータ入力用のレジスタとしても機能し、データバス３２を通じて格納データの書き換えが可能となっている。
【００４３】
また、比較器６６は、各データレジスタ６６ａおよび６６ｂの入力データに対する比較演算処理中に、データレジスタ６６ａおよび６６ｂの少なくとも一方、またはステータスレジスタ６６ｃにおいてセレクト信号が受信された場合には、この時点から比較結果がステータスレジスタ６６ｃに格納されるまでの間、データバス３２上にＷａｉｔ信号を出力する。
【００４４】
次に、読み出し器６１は、外部のメモリ１０に記憶されたデータを読み出すためのデータ処理器であり、それぞれ１つずつのアドレスレジスタ６１ａおよびデータレジスタ６１ｂを具備し、これらはともにアドレスバス３１およびデータバス３２に接続されている。
【００４５】
アドレスレジスタ６１ａは、データバス３２からのデータ入力用のレジスタであり、セレクト信号を受信すると、データバス３２を通じて転送されたデータを格納する。このデータの格納動作が完了すると、読み出し器６１は、格納されたデータを読み出しアドレスとして、データキャッシュ４ｂおよび外部バスＩ／Ｆ５を通じて外部のメモリ１０にアクセスする。そして、メモリ１０上の対応するアドレスからデータを読み出し、データレジスタ６１ｂに格納する。また、出力した読み出しアドレスがデータキャッシュ４ｂにおいてヒットした場合には、このデータキャッシュ４ｂから対応するデータを読み出し、データレジスタ６１ｂに格納する。データレジスタ６１ｂは、データバス３２に対するデータ出力用のレジスタであり、セレクト信号を受信すると、格納した値をデータバス３２上に出力する。
【００４６】
また、読み出し器６１は、アドレスレジスタ６２ａへのデータ入力後のデータ読み出し処理中に、アドレスレジスタ６２ｂまたはデータレジスタ６２ｂにおいてセレクト信号が受信された場合には、読み出したデータのデータレジスタ６２ｂへの格納処理が完了するまでの間、データバス３２上にＷａｉｔ信号を出力する。
【００４７】
次に、整数加算器６７は、２つのデータを整数加算するための演算器であり、２つの入力レジスタ６７ａおよび６７ｂと、１つの出力レジスタ６７ｃを具備しており、これらはすべてアドレスバス３１およびデータバス３２に接続されている。
【００４８】
入力レジスタ６７ａおよび６７ｂは、セレクト信号を受信すると、データバス３２を通じて転送されたデータを格納する。入力レジスタ６７ａおよび６７ｂには、それぞれ加算される数値と加算する数値とが入力され、これらへのデータの格納動作が完了すると、整数加算器６７は各データを使用して整数加算処理を行い、加算結果を出力レジスタ６７ｃに格納する。出力レジスタ６７ｃは、セレクト信号を受信すると、格納したデータをデータバス３２上に出力する。
【００４９】
また、整数加算器６７は、入力レジスタ６７ａおよび６７ｂの格納データを使用した整数加算処理中に、入力レジスタ６７ａおよび６７ｂの少なくとも一方、または出力レジスタ６７ｃにおいてセレクト信号が受信された場合には、加算結果の出力レジスタ６６ｃへの格納処理が完了するまでの間、データバス３２上にＷａｉｔ信号を出力する。
【００５０】
次に、図３は、書き出し器６２、メモリ転送器６３、スタック処理器６４、整数減算器６８、整数乗算器６９および整数除算器７０の各内部構成例を示すブロック図である。
【００５１】
書き出し器６２は、外部のメモリ１０に対してデータを書き出すためのデータ処理器であり、図３に示すように、データバス３２からのデータ入力用のレジスタとして、アドレスレジスタ６２ａおよびデータレジスタ６２ｂを１つずつ具備している。
【００５２】
アドレスバス３１を通じたセレクト信号の受信により、アドレスレジスタ６２ａには、データバス３２を通じて転送されたメモリ１０上のデータ書き出し先のアドレスが格納され、データレジスタ６２ｂには、メモリ１０に書き出すデータが格納される。これらのデータの格納動作が完了すると、書き出し器６２は、データキャッシュ４ｂおよび外部バスＩ／Ｆ５を通じて外部のメモリ１０にアクセスし、メモリ１０上の対応するアドレスにデータを書き出す。
【００５３】
また、書き出し器６２は、アドレスレジスタ６２ａおよびデータレジスタ６２ｂの格納データを使用したメモリ１０への書き出し処理中に、少なくとも一方のレジスタにおいてセレクト信号が受信された場合には、書き出し処理が完了するまでの間、データバス３２上にＷａｉｔ信号を出力する。
【００５４】
次に、メモリ転送器６３は、外部のメモリ１０内、あるいはこのメモリ１０と外部のデータバス５２上に接続された他のメモリとの間のデータ転送を指示するためのデータ処理器であり、データバス３２からのデータ入力用のレジスタとして、２つのアドレスレジスタ６３ａおよび６３ｂと１つの転送量レジスタ６３ｃを具備している。
【００５５】
アドレスレジスタ６３ａには、メモリ１０あるいは他のメモリ上の転送元となるアドレスが、データバス３２より入力されて格納され、アドレスレジスタ６３ｂには転送先となるアドレスが格納される。また、転送量レジスタ６３ｃには、アドレスレジスタ６３ａにおいて指定されたアドレスから読み出すデータのデータサイズが格納される。これらのデータの格納動作が完了すると、メモリ転送器６３は、データキャッシュ４ｂおよび外部バスＩ／Ｆ５を通じて外部のメモリ１０あるいはその他のメモリにアクセスし、対応するアドレス間のデータ転送を指示する。
【００５６】
また、メモリ転送器６３は、各レジスタの格納データを使用したメモリ１０内のデータ転送処理中に、少なくとも１つのレジスタにおいてセレクト信号が受信された場合には、データ転送処理が完了するまでの間、データバス３２上にＷａｉｔ信号を出力する。
【００５７】
次に、スタック処理器６４は、外部のメモリ１０上のスタック領域に対するデータの読み出しおよび書き出しを行うためのデータ処理器であり、データバス３２からのデータ入力用のレジスタであるポインタレジスタ６４ａと、データバス３２に対するデータ入出力用のレジスタであるデータレジスタ６４ｂとを具備している。
【００５８】
ポインタレジスタ６４ａには、メモリ１０上のアドレスを指定するためのスタックポインタが、データバス３２を通じて入力されて格納される。また、データレジスタ６４ｂには、セレクト信号が受信された場合に、データバス３２を通じて、メモリ１０への書き出し対象となるデータが格納される。
【００５９】
スタック処理器６４は、データレジスタ６４ｂにおける読み書きによりメモリ１０からの読み出しおよび書き出しの各動作を判断し、読み出し動作の場合は、ポインタレジスタ６４ａへのデータ格納動作が完了すると、メモリ１０にアクセスして、対応するアドレスからデータを読み出し、データレジスタ６４ｂに格納する。この場合、セレクト信号の受信によって、データレジスタ６４ｂの格納データはデータバス３２上に転送される。また、書き出し動作の場合は、ポインタレジスタ６４ａおよびデータレジスタ６４ｂの双方へのデータ格納動作が完了すると、メモリ１０の対応するアドレスに対してデータを書き出す。
【００６０】
また、スタック処理器６４は、ポインタレジスタ６４ａまたはこれとデータレジスタ６４ｂの双方における格納データを使用したスタック処理中に、少なくとも一方のレジスタにおいてセレクト信号が受信された場合には、スタック処理が完了するまでの間、データバス３２上にＷａｉｔ信号を出力する。
【００６１】
次に、整数減算器６８、整数乗算器６９および整数除算器７０は、それぞれデータバス３２を通じて転送された２つのデータに対する整数減算、整数乗算および整数除算を行うための演算器である。これらは前述した整数加算器６７と同様に、データバス３２からのデータ入力用の２つのレジスタと、データ出力用の１つのレジスタをそれぞれ具備している。
【００６２】
整数減算器６８は、入力レジスタ６８ａおよび６８ｂのそれぞれに、データバス３２を通じて減算される数値と減算する数値の入力を受け、双方へのデータ格納動作が完了すると整数減算処理を開始し、この演算結果を出力レジスタ６８ｃに格納する。また、演算処理中に、入力レジスタ６８ａおよび６８ｂの少なくとも一方、または出力レジスタ６８ｃにおいてセレクト信号が受信された場合には、演算結果の格納が完了するまでの間、データバス３２にＷａｉｔ信号を出力する。
【００６３】
また、整数乗算器６９も同様に、データバス３２から入力レジスタ６９ａおよび６９ｂへのデータ格納動作が完了すると、これらの格納データを使用した整数乗算処理を開始し、演算結果を出力レジスタ６９ｃに格納する。さらに、整数除算器７０も同様に、データバス３２から入力レジスタ７０ａおよび７０ｂへのデータ格納動作が完了すると、これらの格納データを使用した整数除算処理を開始し、演算結果を出力レジスタ７０ｃに格納する。なお、整数乗算器６９および整数除算器７０は、ともに整数減算器６８と同様のＷａｉｔ信号の出力動作を行う。
【００６４】
次に、図４は、論理積演算器７１、論理和演算器７２、排他的論理積演算器７３、排他的論理和演算器７４およびビット反転演算器７５の各内部構成例を示すブロック図である。
【００６５】
論理積演算器７１、論理和演算器７２、排他的論理積演算器７３および排他的論理和演算器７４は、それぞれデータバス３２を通じて転送された２つのデータに対する論理積演算、論理和演算、排他的論理積演算および排他的論理和演算を行うための演算器である。これらは前述した整数加算器６７等と同様に、データバス３２からのデータ入力用の２つのレジスタと、データ出力用の１つのレジスタをそれぞれ具備している。
【００６６】
論理積演算器７１は、整数加算器６７等と同様に、入力レジスタ７１ａおよび７１ｂのそれぞれに、データバス３２を通じて演算対象の数値の入力を受け、双方へのデータ格納動作が完了するとこれらの数値の論理積に対する演算処理を開始し、この演算結果を出力レジスタ７１ｃに格納する。また、演算処理中に、入力レジスタ７０ａおよび７０ｂの少なくとも一方、または出力レジスタ７０ｃにおいてセレクト信号が受信された場合には、演算結果の格納が完了するまでの間、データバス３２にＷａｉｔ信号を出力する。
【００６７】
論理和演算器７２も同様に、データバス３２から入力レジスタ７２ａおよび７２ｂへのデータ格納動作が完了すると、これらの格納データの論理和に対する演算処理を開始し、演算結果を出力レジスタ７２ｃに格納する。また、排他的論理積演算器７３も同様に、データバス３２から入力レジスタ７３ａおよび７３ｂへのデータ格納動作が完了すると、これらの格納データの排他的論理積に対する演算処理を開始し、演算結果を出力レジスタ７３ｃに格納する。さらに、排他的論理和演算器７４も同様に、データバス３２から入力レジスタ７４ａおよび７４ｂへのデータ格納動作が完了すると、これらの格納データの排他的論理和に対する演算処理を開始し、演算結果を出力レジスタ７４ｃに格納する。
【００６８】
なお、これらの論理和演算器７２、排他的論理積演算器７３および排他的論理和演算器７４は、ともに論理積演算器７１等と同様のＷａｉｔ信号の出力動作を行う。
【００６９】
ビット反転演算器７５は、データバス３２に対するデータの入出力が可能な１つの入出力データレジスタ７５ａを具備し、データバス３２からの入出力レジスタ７５ａへのデータ格納動作が完了すると、この格納データによるビット反転処理を開始し、演算結果を入出力レジスタ７５ａに書き戻す。そして、セレクト信号の受信に応じてこの演算結果をデータバス３２に出力する。また、演算処理中に、入出力レジスタ７５ａにおいてセレクト信号が受信された場合には、演算結果の格納が完了するまでの間、データバス３２にＷａｉｔ信号を出力する。
【００７０】
なお、ビット反転演算器７５は、データバス３２に対する入力用および出力用として個別のレジスタを具備していてもよい。
次に、図５は、浮動小数加算器７６、浮動小数減算器７７、浮動小数乗算器７８および浮動小数除算器７９の各内部構成例を示すブロック図である。
【００７１】
浮動小数加算器７６、浮動小数減算器７７、浮動小数乗算器７８および浮動小数除算器７９は、それぞれデータバス３２を通じて転送された２つのデータに対する浮動小数加算、浮動小数減算、浮動小数乗算および浮動小数除算を行うための演算器である。これらは前述した整数加算器６７等と同様に、データバス３２からのデータ入力用の２つのレジスタと、データ出力用の１つのレジスタをそれぞれ具備している。
【００７２】
浮動小数加算器７６は、整数加算器６７等と同様に、入力レジスタ７６ａおよび７６ｂのそれぞれに、データバス３２を通じて演算対象の数値の入力を受け、双方へのデータ格納動作が完了するとこれらの数値による浮動小数加算処理を開始し、この演算結果を出力レジスタ７６ｃに格納する。また、演算処理中に、入力レジスタ７６ａおよび７６ｂの少なくとも一方、または出力レジスタ７６ｃにおいてセレクト信号が受信された場合には、演算結果の格納が完了するまでの間、データバス３２にＷａｉｔ信号を出力する。
【００７３】
また、浮動小数減算器７７も同様に、データバス３２から入力レジスタ７７ａおよび７７ｂへのデータ格納動作が完了すると、これらの格納データによる浮動小数減算処理を開始し、演算結果を出力レジスタ７７ｃに格納する。さらに、浮動小数乗算器７８も同様に、データバス３２から入力レジスタ７８ａおよび７８ｂへのデータ格納動作が完了すると、これらの格納データによる浮動小数乗算処理を開始し、演算結果を出力レジスタ７８ｃに格納する。また、浮動小数除算器７９も同様に、データバス３２から入力レジスタ７９ａおよび７９ｂへのデータ格納動作が完了すると、これらの格納データによる浮動小数除算処理を開始し、演算結果を出力レジスタ７９ｃに格納する。
【００７４】
なお、これらの浮動小数減算器７７、浮動小数乗算器７８および浮動小数除算器７９、ともに浮動小数加算器７６等と同様のＷａｉｔ信号の出力動作を行う。
次に、図６は、データ交換器６５および積和演算器８０の各内部構成例を示すブロック図である。
【００７５】
データ交換器６５は、メモリ１０上のデータを読み出すとともに、プロセッサ内のレジスタのデータをメモリ１０に書き出してデータ交換処理を行うデータ処理器であり、図６に示すように、データバス３２からのメモリアドレス入力用のアドレスレジスタ６５ａと、データ入力用の入力データレジスタ６５ｂと、データバス３２へのデータ出力用の出力データレジスタ６５ｃとを具備している。
【００７６】
データ交換器６５は、データバス３２からの入力データレジスタ６５ｂへのデータ格納およびアドレスレジスタ６５ａへアドレスデータの格納が完了すると、これらの格納データにより、アドレスレジスタ６５ａの示すメモリ１０内のアドレスに、データキャッシュ４ｂおよび外部バスＩ／Ｆ５を通じてアクセスする。そして、メモリ１０上の対応するアドレスからデータを読み出し、出力データレジスタ６５ｃに格納する。また、アドレスレジスタ６５ａに格納された読み出しアドレスがデータキャッシュ４ｂにおいてヒットした場合には、このデータキャッシュ４ｂから対応するデータを読み出し、出力データレジスタ６５ｃに格納する。出力データレジスタ６５ｃは、データが格納された後、、セレクト信号を受信すると、格納した値をデータバス３２上に出力する。続いて、データキャッシュ４ｂおよび外部バスＩ／Ｆ５を通じて、先ほど読み出しを行ったメモリ１０上のアドレスにアクセスし、入力データレジスタ６５ｂに格納されているデータを書き出す。
【００７７】
また、データ交換器６５は、アドレスレジスタ６５ａおよび入力データレジスタ６５ｂへのデータ格納後のメモリ１０からのデータ読み出し処理中に、出力データレジスタ６５ｃにおいてセレクト信号が受信された場合には、出力データレジスタ６５ｃへのデータ格納が完了するまでの間、データバス３２にＷａｉｔ信号を出力する。さらに、上記のデータ読み出し処理中およびその後のメモリ１０へのデータ書き出し処理中に、アドレスレジスタ６５ａおよび入力データレジスタ６５ｂの少なくとも一方においてセレクト信号が受信された場合には、データ書き出し処理が完了するまでの間、データバス３２にＷａｉｔ信号を出力する。
【００７８】
積和演算器８０は、データバス３２からの入力用として３つの入力レジスタ８０ａ、８０ｂおよび８０ｃと、出力用の出力レジスタ８０ｄとを具備する。この積和演算器８０は、入力レジスタ８０ａ〜８０ｃのそれぞれに、データバス３２を通じて演算対象の数値の入力を受け、これらのすべてに対するデータ格納動作が完了すると、入力された数値による積和演算処理を開始する。ここで、各入力レジスタ８０ａ〜８０ｃに格納された数値は、それぞれ被乗算値、乗算値、加算値として使用される。そして、この演算結果が出力レジスタ８０ｄに格納される。また、演算処理中に、入力レジスタ８０ａ〜８０ｃの少なくとも一つ、または出力レジスタ８０ｄにおいてセレクト信号が受信された場合には、演算結果の格納が完了するまでの間、データバス３２にＷａｉｔ信号を出力する。
【００７９】
また、以上の読み出し器６１、書き出し器６２、メモリ転送器６３、スタック処理器６４およびデータ交換器６５の各データ処理器と、比較器６６、整数加算器６７、整数減算器６８、整数乗算器６９、整数除算器７０、論理積演算器７１、論理和演算器７２、排他的論理積演算器７３、排他的論理和演算器７４、ビット反転演算器７５、浮動小数加算器７６、浮動小数減算器７７、浮動小数乗算器７８、浮動小数除算器７９および積和演算器８０の各演算器は、それぞれが具備するデータ入力用のレジスタに、各処理を開始するために必要なデータ入力が行われていない処理待機状態において、処理回路への電流供給量を抑制するパワーセーブ機能を有してもよい。
【００８０】
以上のように、読み出し器６１、書き出し器６２、メモリ転送器６３、スタック処理器６４およびデータ交換器６５の各データ処理器と、比較器６６、整数加算器６７、整数減算器６８、整数乗算器６９、整数除算器７０、論理積演算器７１、論理和演算器７２、排他的論理積演算器７３、排他的論理和演算器７４、ビット反転演算器７５、浮動小数加算器７６、浮動小数減算器７７、浮動小数乗算器７８、浮動小数除算器７９および積和演算器８０の各演算器は、データバス３２からのデータ入力用のレジスタへのデータ格納動作が完了すると、自動的に所定の動作を開始する。また、データ出力用のレジスタを具備するデータ処理器および演算器は、処理結果をこのレジスタに格納する。従って、各データ処理器および各演算器の動作は、バスマスタ３のデコーダ３ａからのセレクト信号によってそれぞれのレジスタが選択され、データバス３２を通じたデータ転送が行われることにより制御される。
【００８１】
ここで、バスマスタ３によるレジスタの選択に応じた各データ処理器および各演算器の動作について、具体的に説明する。ここでは例として、図２に示したバスマスタ３のデコーダ３ａ、読み出し器６１および整数加算器６７の間のデータ転送と動作について説明する。
【００８２】
図７は、デコーダ３ａ、読み出し器６１および整数加算器６７の間のシーケンス例を示す図である。
まず、整数加算器６７による加算結果を読み出しアドレスとして、読み出し器６１がメモリ１０からのデータ読み出しを行う場合について説明する。この場合、デコーダ３ａには、整数加算器６７の出力レジスタ６７ｃ、および読み出し器６１のアドレスレジスタ６１ａを指定する命令が入力される。
【００８３】
タイミングＴ７０１において、整数加算器６７の出力レジスタ６７ｃに対して、デコーダ３ａからアドレスバス３１を通じてセレクト信号が出力される。続いて、タイミングＴ７０２において、読み出し器６１のアドレスレジスタ６１ａに対して、デコーダ３ａからセレクト信号が出力される。
【００８４】
これにより、タイミングＴ７０３において、出力レジスタ６７ｃの格納値が、データバス３２を通じてアドレスレジスタ６１ａに転送される。また、タイミングＴ７０４において、読み出し器６１は、転送された値を読み出しアドレスとして、メモリ１０よりデータを読み出し、データレジスタ６１ｂに格納する。
【００８５】
次に、メモリ１０より読み出された値と、デコーダ３ａからの即値とが、整数加算器６７において加算される場合について説明する。
この場合はまず、デコーダ３ａには、読み出し器６１のデータレジスタ６１ｂ、および整数加算器６７の入力レジスタ６７ａを指定する命令が入力される。タイミングＴ７０５において、読み出し器６１のデータレジスタ６１ｂに対して、デコーダ３ａからセレクト信号が出力される。なお、このとき、タイミングＴ７０４におけるデータ読み出し処理が終了せず、読み出したデータがデータレジスタ６１ｂに格納されていない場合は、読み出し器６１からはデータバス３２上にＷａｉｔ信号が出力される。このＷａｉｔ信号は、データレジスタ６１ｂへのデータ格納が完了すると、出力が停止され、この後、次のタイミングＴ７０６の処理が開始される。
【００８６】
タイミングＴ７０６において、整数加算器６７の入力レジスタ６７ａに対して、デコーダ３ａからセレクト信号が出力される。これにより、タイミングＴ７０７において、データレジスタ６１ｂの格納値が入力レジスタ６７ａに転送される。
【００８７】
続いて、デコーダ３ａには、整数加算器６７の入力レジスタ６７ｂと、即値とを指定する命令が入力される。タイミングＴ７０８において、デコーダ３ａより即値データがデータバス３２上に出力される。タイミングＴ７０９において、整数加算器６７の入力レジスタ６７ｂに対して、デコーダ３ａからセレクト信号が出力される。これにより、入力レジスタ６７ｂに、デコーダ３ａからの即値データが格納される。そして、タイミングＴ７１０において、整数加算器６７では、入力レジスタ６７ａおよび６７ｂの格納値に対する整数加算が行われ、演算結果が出力レジスタ６７ｃに格納される。
【００８８】
また、他のデータ処理器、すなわち書き出し器６２、メモリ転送器６３、スタック処理器６４およびデータ交換器６５や、他の演算器、すなわち比較器６６、整数減算器６８、整数乗算器６９、整数除算器７０、論理積演算器７１、論理和演算器７２、排他的論理積演算器７３、排他的論理和演算器７４、ビット反転演算器７５、浮動小数加算器７６、浮動小数減算器７７、浮動小数乗算器７８、浮動小数除算器７９および積和演算器８０においても、これらが具備するレジスタ同士のデータ転送は、上記と同様に行われる。さらに、命令取り出し器２のプログラムカウンタ２１および命令格納レジスタ２４も、バスマスタ３からのセレクト信号によって選択されることにより、データバス３２を通じたデータの読み出しおよび書き込みが行われる。
【００８９】
従って、プロセッサ１の動作を制御するためには、バスマスタ３に対して発行される命令に、データバス３２に接続されたレジスタを転送元および転送先として指定するための情報が最低限記述されればよい。また、これに加えて、転送される数値が命令内で指定されることにより、バスマスタ３は、指定したレジスタに対して転送するデータを自ら即値として出力することが可能となる。
【００９０】
ここで、図８は、上記のプロセッサ１に供給される命令のフォーマット例を示す図である。
図８に示すように、プロセッサ１に供給される命令は、オペコード１１およびオペランド１２で構成される。オペコード１１には、実行条件１１ａおよび実行回数１１ｂの一方または双方が必要に応じて記述される。また、オペランド１２では、ソースデータ１２ａおよびデスティネーションデータ１２ｂの一方または双方が記述される。ソースデータ１２ａでは、バスマスタ３より出力される即値または転送元のレジスタが指定され、デスティネーションデータ１２ｂでは、転送先のレジスタが指定される。
【００９１】
このような命令は、メモリ１０から、命令取り出し器２の命令発行器２３によって取り出され、命令格納レジスタ２４を介して、バスマスタ３のデコーダ３ａに送出される。デコーダ３ａは、命令中に記述された実行条件１１ａ、実行回数１１ｂおよびオペランド１２をデコードし、データバス３２上のレジスタ間のデータ転送動作の制御を行う。また、命令中で即値が指定されている場合は、この即値を指定されたレジスタに転送する。
【００９２】
このように、デコーダ３ａでは、実行条件１１ａの比較と実行回数の制御、転送元および転送先のレジスタのアドレスに対するデコードのみの単純な処理が行われる。従って、オペコード中に演算器等の処理を指定するための実行命令が記述された従来の命令をデコードする場合と比較して、デコード処理に要する時間が大幅に短縮される。従来の構成のプロセッサでは、処理時間中に占めるデコード処理時間の割合が大きく、本発明ではこのデコード処理時間が短縮されるため、プロセッサ１全体に対する処理時間の短縮効果が大きい。
【００９３】
なお、命令中において実行回数１１ｂの指定を可能とすることにより、例えばループ処理を実行回数１１ｂを指定した命令として処理することができるので、命令の読み込みに要する時間を短縮することができる。
【００９４】
ここで、図９は、デコーダ３ａにおける処理の流れを示すフローチャートである。
ステップＳ９０１において、命令取り出し器２の命令格納レジスタ２４から出力された命令を受け取る。ステップＳ９０２において、受け取った命令をデコードする。
【００９５】
ステップＳ９０３において、命令のデコード結果に応じて、転送元レジスタおよび転送先レジスタに対して、それぞれアドレスバス３１を通じてセレクト信号を出力する。また、命令に即値が含まれていた場合は、アドレスバス３１を通じて転送先レジスタにセレクト信号を出力するとともに、即値データを生成してデータバス３２に出力する。
【００９６】
ステップＳ９０４において、データバス３２よりＷａｉｔ信号を受信したか否かを判断する。Ｗａｉｔ信号を受信した場合は、ステップＳ９０５に進み、受信していない場合はステップＳ９０６に進む。ステップＳ９０５において、現在のセレクト信号の出力状態を保持する。従って、ステップＳ９０４での判断により、Ｗａｉｔ信号の受信が停止するまでの間、ステップＳ９０３でのセレクト信号の出力状態が保持される。
【００９７】
ステップＳ９０６において、受け取った命令中で実行回数が指定されていた場合に、残りの実行回数が「０」であるか否かを判断し、「０」である場合はステップＳ９０１に進んで新たな命令を受け取る。また、「０」でない場合はステップＳ９０７に進む。ステップＳ９０７において、残りの実行回数の値を「１」だけ減じて、ステップＳ９０３に戻る。従って、指定された実行回数の分だけ、ステップＳ９０３〜Ｓ９０６の処理が繰り返される。
【００９８】
なお、アドレスバス３１およびデータバス３２が複数組設けられている場合には、ステップＳ９０４の処理では、Ｗａｉｔ信号を受信したデータバス３２、およびこれに対応するアドレスバス３１における制御状態を保持すればよく、他のアドレスバス３１およびデータバス３２を使用して転送制御動作を続行することが可能である。
【００９９】
次に、アドレスバス３１およびデータバス３２に接続された各データ処理器および各演算器における処理の流れについて説明する。なお、ここでは例として整数加算器６７について説明するが、他のデータ処理器や演算器においても基本的な処理の流れは同様である。
【０１００】
図１０は、整数加算器６７における処理の流れを示すフローチャートである。
ステップＳ１００１において、アドレスバス３１を通じたセレクト信号の受信により、データバス３２を通じて転送されたデータが入力レジスタ６７ａおよび６７ｂに入力される。そして、双方へのデータ入力が完了した場合に、ステップＳ１００２に進む。ステップＳ１００２において、整数加算処理を行う回路部に設定されていたパワーセーブ機能を解除する。
【０１０１】
ステップＳ１００３において、セレクト信号により入力レジスタ６７ａまたは６７ｂ、出力レジスタ６７ｃのいずれかが選択された場合には、データバス３２に対してＷａｉｔ信号を出力する。このステップＳ１００３の処理は、次のステップＳ１００４およびＳ１００５の処理が終了するまで継続される。
【０１０２】
なお、ここでは、Ｗａｉｔ信号の出力は入力レジスタ６７ａおよび６７ｂの双方へのデータ入力が完了した後に行うこととしているが、例えば、アドレスバス３１およびデータバス３２が複数組設けられている場合には、入力レジスタ６７ａおよび６７ｂについては、そのいずれかにデータが入力された時点から、その後にセレクト信号を受信した場合に、セレクト信号を受信したデータバス３２に対してＷａｉｔ信号の出力を行ってもよい。この場合、データが未入力の入力レジスタ６７ａまたは６７ｂについては、他のデータバスからデータの入力を受けることができる。
【０１０３】
ステップＳ１００４において、入力されたデータを用いた整数加算処理を実行する。ステップＳ１００５において、演算結果を出力レジスタ６７ｃに格納する。ステップＳ１００６において、Ｗａｉｔ信号を出力していた場合には、この出力を停止する。ステップＳ１００７において、パワーセーブ機能を再び設定する。
【０１０４】
このように、データ処理器および演算器では、デコーダ３ａによるアドレスバス３１およびデータバス３２に対する制御に基づいた、入力用のレジスタに対するデータ入力を受けるだけで、データ処理器および演算器におけるデータ処理自体は、デコーダ３ａからの制御を受けることはない。また、各データ処理器および演算器は、ただ１つの処理機能を有するため、内部の回路構成が単純で、例えば多機能の演算器等と比較して高速動作が可能となっている。
【０１０５】
次に、図１１は、上記のプロセッサ１を動作させるためのプログラムコード例を示す図である。なお、図１１では、各行におけるプログラムコードの実行によって開始されるデータ処理動作についても並記している。
【０１０６】
また、ここでは、プログラムコード中で指定されるレジスタ名についてそれぞれ、プログラムカウンタ２１をｐｃ、命令格納レジスタ２４をｒ０、ステータスレジスタ６６ｃをｒ１、読み出し器６１のアドレスレジスタ６１ａをｒ２、データレジスタ６１ｂをｒ３、メモリ転送器６３のアドレスレジスタ６３ａおよび６３ｂをそれぞれｒ４およびｒ５、転送量レジスタ６３ｃをｒ６、整数加算器６７の入力レジスタ６７ａおよび６７ｂをそれぞれｒ７およびｒ８、出力レジスタ６７ｃをｒ９、整数乗算器６９の入力レジスタ６９ａおよび６９ｂをそれぞれｒ１０およびｒ１１、出力レジスタ６９ｃをｒ１２としている。
【０１０７】
第１１０１行目では、オペランドにおいて、転送元としてプログラムカウンタ２１、転送先として整数加算器６７の入力レジスタ６７ａが指定されている。これにより、プログラムカウンタ２１のカウント値が、入力レジスタ６７ａに転送される。第１１０２行目では、即値として「１２」が指定され、転送先として整数加算器６７の入力レジスタ６７ｂが指定されている。これにより、バスマスタ３のデコーダ３ａからは即値データとして「１２」が生成され、入力レジスタ６７ｂに対して転送される。この転送が完了すると、整数加算器６７では、入力レジスタ６７ａおよび６７ｂの各格納値の整数加算処理が開始され、演算結果が出力レジスタ６７ｃに格納される。
【０１０８】
以下、同様にして、第１１０３行目では、整数加算器６７の出力レジスタ６７ｃの格納値が、読み出し器６１のアドレスレジスタ６１ａに転送される。これにより、読み出し器６１は、整数加算器６７における演算結果を読み出しアドレスとして、外部のメモリ１０よりデータを読み出し、データレジスタ６１ｂに格納する。
【０１０９】
第１１０４行目では、読み出し器６１によってメモリ１０から読み出された値が、整数乗算器６９の入力レジスタ６９ａに転送される。第１１０５行目では、プログラムカウンタ２１のカウント値が、整数加算器６７の入力レジスタ６７ａに転送される。第１１０６行目では、デコーダ３ａからの即値データ「１６」が、整数加算器６７の入力レジスタ６７ｂに転送される。これにより、整数加算器６７は、プログラムカウンタ２１のカウント値に「１６」を加算して、加算結果を出力レジスタ６７ｃに格納する。
【０１１０】
第１１０７行目では、整数加算器６７の加算結果が、読み出し器６１のアドレスレジスタ６１ａに転送され、この値を読み出しアドレスとしてメモリ１０からデータが読み出され、データレジスタ６１ｂに格納される。第１１０８行目では、第１１０７行目の処理によってメモリ１０から読み出された値が、整数乗算器６９の入力レジスタ６９ｂに転送されて、整数乗算器６９における整数乗算処理が行われ、演算結果が出力レジスタ６９ｃに格納される。
【０１１１】
以上の第１１０１行目や第１１０５行目では、転送元としてプログラムカウンタ２１が選択されているが、逆に転送先としてプログラムカウンタ２１を選択すると、プログラムカウンタ２１のカウント値が変更される。このようなプログラムコードを生成することにより、プログラムのジャンプを行うことが可能である。
【０１１２】
次に、第１１１１行目では、整数乗算器６９における演算結果が、メモリ転送器６３のアドレスレジスタ６３ａに転送される。また、第１１１２行目では、整数加算器６７における演算結果が、メモリ転送器６３のアドレスレジスタ６３ｂに転送される。さらに、第１１１３行目では、デコーダ３ａからの即値データ「２０」が、メモリ転送器６３の転送量レジスタ６３ｃに転送される。
【０１１３】
これにより、メモリ転送器６３は、データキャッシュ４ｂおよび外部バスＩ／Ｆ５を介して外部のメモリ１０にアクセスする。そして、整数乗算器６９における演算結果を読み出し元のアドレスとし、整数加算器６７における演算結果を読み出し先のアドレスとして、メモリ１０上の読み出し元のアドレスから２０バイト分のデータを、メモリ１０上の読み出し先のアドレスに対して書き出す。また、アドレスの指定により、メモリ１０以外の外部バス上のメモリを指定することも可能である。
【０１１４】
このように、上記のプロセッサ１では、デコーダ３ａに供給される命令により、外部のメモリ間の転送動作を制御することができる。従来では、このようなメモリ間転送の動作を必ずレジスタを介して行っていたため、上記のプロセッサ１では、このような動作が単純化される。
【０１１５】
次に、第１１２１行目では、読み出し器６１によりメモリ１０から読み出された値が、命令取り出し器２の命令格納レジスタ２４に転送される。命令格納レジスタ２４は、転送された値を命令として保持し、デコーダ３ａに転送する。また、第１１２１行目のプログラムコード中の「５」は実行回数の指定であり、読み出し器６１から命令格納レジスタ２４に対する転送動作が５回繰り返される。
【０１１６】
また、第１１２２行目では、整数乗算器６９による演算結果が、比較器６６のステータスレジスタ６６ｃに転送される。第１１２３行目では、プログラムコードの「Ｌｔ」はオペコードの実行条件となっており、ステータスレジスタ６６ｃの格納値の最上位ビットが「１」のとき、整数乗算器６９における演算結果が整数加算器６７の入力レジスタ６７ａに転送される。また、第１１２４行目でも同様に、ステータスレジスタ６６ｃの格納値の最上位ビットが「１」のとき、デコーダ３ａからの即値データ「１」が、整数加算器６７の入力レジスタ６７ｂに転送される。これにより、整数加算器６７は、整数乗算器６９における演算結果に「１」を加算する処理を行い、演算結果を出力レジスタ６８ｃに格納する。
【０１１７】
ここで、第１１２１行目のように、デコーダ３ａによる内部バス制御により、データ処理器や演算器における処理結果を命令として、命令格納レジスタ２４に対して指定することができる。従って、命令格納レジスタ２４への命令の書き込み位置を、単純な命令によって指定することができ、例えばプログラムの分岐を減少させることができる。
【０１１８】
また、他の命令体系のプログラムコードを、プロセッサ１でデコード可能な命令にソフトウェアにより変換して実行する場合に、命令格納レジスタ２４に書き込んで実行することにより、このようなプログラムコードを高速に変換し、実行することが可能となる。例えば、上記のプロセッサ１を用いて、命令体系の異なる他のプロセッサのエミュレーションを行う場合に、他のプロセッサの命令をデコードし、外部のメモリに一旦書き込む動作を行う必要がなくなり、高速で実行することが可能となる。
【０１１９】
また、第１１２２行目〜第１１２４行目のように、命令に応じてステータスレジスタ６６ｃに対する書き込みを可能としたことにより、データ処理において特定のビットを立てて制御を変更させることができ、プログラムの柔軟性が向上する。
【０１２０】
なお、上記のプロセッサ１が搭載されるコンピュータシステムでは、例えば高級プログラム言語や他のプロセッサの命令体系に準じたプログラム等に対して、コンパイル等のデータ変換を行うソフトウェアが実装されることにより、図１１に示すようなプログラムコードが生成されて、プロセッサ１を動作させることができる。
【０１２１】
ところで、上記のプロセッサ１では、単機能のデータ処理器や演算器を、レジスタの指定および即値の転送による内部バス上の転送制御によって動作させる構成のため、処理を行うための命令の数が従来より多くなっている。しかし、上記のプロセッサ１では、命令が単純化された分、デコーダ３ａにおける処理速度が大幅に向上していることから、従来より高速な動作が可能となっている。
【０１２２】
ここで、比較のために、図１１の第１行目〜第８行目までの処理に対応する従来のプログラムコードを例示する。図１２は、従来のプログラムコードの一例を示す図である。
【０１２３】
図１２では、複数の機能を有するデータ処理器が使用されて、データの読み出しおよび書き出しは、汎用レジスタ中のｒ２０、ｒ２１およびｒ２２の各領域が使用されるものとする。第１２０１行目では、実行命令「Ｌｏａｄ」により、外部のメモリからのデータ読み出しが指定されている。この命令により、プログラムカウンタのカウンタ値に「１２」を加算した値を読み出しアドレスとして、メモリからデータを読み出し、ｒ２０に格納する。
【０１２４】
また、第１２０２行目では、同様に、プログラムカウンタのカウンタ値に「１６」を加算した値を読み出しアドレスとして、メモリからデータを読み出し、ｒ２１に格納する。続く第１２０３行目では、実行命令の「Ｍｕｌ」により整数乗算処理が指定され、ｒ２０およびｒ２１の各格納値を乗算して、演算結果がｒ２２に格納される。この状態は、図１０のプログラムコードにおける第１１０９行目の状態に相当する。
【０１２５】
このように、上記のプロセッサ１では、従来では図１１のように３行のプログラムコードで指定可能な処理の指定に対して、図１０のように８行分のプログラムコードを必要とされ、命令の数が増加する。しかし、プロセッサ１に供給される命令では、オペコード中に実行命令を記述する必要がなく、さらにオペランドに記述するデータが単純なため、１命令文のデータ長は従来より短縮化されており、全体として命令のデータ長には従来と比較して大きな変化はない。
【０１２６】
また、１命令文の実行時において読み出し可能なレジスタ数は、書き込み可能なレジスタ数以下となるため、命令文中において転送先を指定する情報に割り当てるデータ長より、転送元を指定する情報に割り当てるデータ長を短くすることができる。これにより、１命令あたりのデータ長を短くすることもでき、例えば１命令フォーマット中に複数の命令が記述されたＶＬＩＷ（Very Long Instruction Word）を使用した場合等に特に効果的である。
【０１２７】
さらに、命令の数が増加しても、デコーダ３ａにおける処理速度が大幅に高速化されているため、全体の処理時間は短縮化される。さらに、各データ処理器、各演算器とデコーダ３ａとを接続する内部バスを複数設けることにより、各データ処理器および演算器における処理を並行して実行させることが可能となる。この場合、プロセッサ１の全体の処理速度に対しては、デコーダ３ａにおけるデコード処理速度がより大きなボトルネックの要素となるため、従来と比較して処理の高速化が可能な割合は大きくなる。
【０１２８】
ここで、図１３は、内部バスが複数設けられた場合の処理のパイプラインの例を概念的に示す図である。図１３（Ａ）は、上記のプロセッサ１における例であり、（Ｂ）では、比較のために、同じ処理に対する従来のパイプラインの例を示している。
【０１２９】
図１３では、整数乗算、整数除算および整数加算の順で演算を行わなければならない場合のパイプラインの例を示している。図１３（Ａ）のように、上記のプロセッサ１では、まず、整数乗算を指示する命令が取り出されてデコードされた後、整数乗算処理が開始されると同時に、次の整数除算を指示する命令のデコードが開始される。そして、この命令のデコード処理が終了した後に、整数乗算処理が終了していない場合は、他の内部バスを通じて整数除算器７０にデータを転送し、整数除算処理を並行して開始させる。さらに、この処理中に次の整数加算を指示する命令のデコード処理を行い、終了とともに他の内部バスを通じて、整数加算器６７に動作を開始させる。
【０１３０】
このようなパイプラインでは、デコード処理における高速化が全体の処理速度の向上に大きく貢献することがわかる。これに対して、図１３（Ｂ）に示す従来のパイプライン例では、多機能のデータ処理器が使用されているため、１回目の整数乗算処理中に次の命令のデコード処理が終了しても、整数乗算処理が終了するまでは、次の整数乗算処理を実行させることができない。従って、プロセッサ１では、同じ種類の処理が連続しない限り、内部バスの複数化により動作速度をさらに高速化することが可能となる。
【０１３１】
また、複数の内部バスを有する場合は、プロセッサ１に供給される命令として上述したＶＬＩＷを使用することが可能である。この場合、複数の命令を異なる内部バスを使用して並列処理することにより、高速な動作が可能である。
【０１３２】
ここで、複数の内部バスが設けられて、上記のような高効率のパイプライン処理が可能なプロセッサの具体例について説明する。
図１４は、複数の内部バスが設けられた場合のプロセッサの内部構成例を示すブロック図である。なお、図１４では、説明を簡単にするために、プロセッサの内部の一部のみ示し、演算器やデータ処理器、キャッシュ等の表示を省略している。また、図２で示したプロセッサと対応する構成要素には同じ符号を付して示しており、その説明は省略する。
【０１３３】
図１４に示したプロセッサでは、例として、アドレスバス３１ａとデータバス３２ａ、アドレスバス３１ｂとデータバス３２ｂ、アドレスバス３１ｃとデータバス３２ｃの３組の内部バスが設けられており、各内部バスの組に対応してバスマスタ３１０、３２０および３３０が設けられている。各バスマスタ３１０、３２０および３３０にはデコーダ３１１、３２１および３３１が設けられており、各デコーダ３１１、３２１および３３１に対しては、命令取り出し器２００からの命令が分配器９を介して供給される。
【０１３４】
命令取り出し器２００は、図２の場合と同様に、プログラムカウンタ２０１、アドレス生成器２０２、命令発行器２０３および命令格納レジスタ２０４を具備している。これらの各部の機能は図２の対応する機能ブロックと同様であるが、プログラムカウンタ２０１および命令格納レジスタ２０４は、それぞれ３組の内部バスに接続されている。
【０１３５】
また、各バスマスタ３１０、３２０および３３０のデコーダ３１１、３２１および３３１は、分配器９からの命令を解析し、対応するアドレスバス３１ａ、３１ｂおよび３１ｃに対してセレクト信号を出力して、図示しない演算器やデータ処理器のレジスタを選択する。これとともに、デコーダ３１１、３２１および３３１は、命令を受けてから、この命令の実行が完了するまでの間、分配器９に対してＢｕｓｙ信号を出力する。分配器９は、命令取り出し器２００からの命令を受け取ると、Ｂｕｓｙ信号を出力していないバスマスタ３１０、３２０および３３０のいずれかに対して、命令を転送する。
【０１３６】
このような構成により、上述した高効率なパイプライン処理が可能となるだけでなく、例えば、ある演算に長時間を要して、特定のバスマスタがＷａｉｔ信号の受信により待機状態となった場合や、特定のバスマスタが実行回数付き命令の実行中の場合にも、他のバスマスタは動作することができ、処理効率がさらに高まる。また例えば、１つの内部バスを使用して、加算器の出力レジスタの値を同じ加算器の入力レジスタに転送し、別の１つの内部バスにおいて同じ加算器のもう一方の入力レジスタに値を入力することにより、積算処理を容易に行うことが可能となる。さらに、同種の演算器を複数設けることにより、同種の演算が連続しても動作速度をさらに高速にすることが可能となる。
【０１３７】
以上のように、本発明のプロセッサでは、デコーダに供給される命令中に実行命令を記述する必要がなく、命令が単純化されるので、デコード処理時間が大幅に短縮され、高速動作が可能となる。また、単一の処理機能を有するデータ処理器および演算器を内部バスに複数接続した構成により、内部バスの構成が単純化され、製造コストを抑制することができる。さらに、この内部バスを複数設けることによって、命令に対するデータ処理を並列に実行することが可能となり、処理が高速化される。
【０１３８】
なお、上記の実施の形態例では、デコーダと各データ処理器および演算器等とをアドレスバスおよびデータバスによってなる内部バスによって接続していたが、これ以外のデータ転送手段を用いた場合でも本発明を実現することが可能である。
【０１３９】
【発明の効果】
以上説明したように、本発明のプロセッサでは、転送制御手段によるデータ転送制御のみによって、各演算手段の動作が制御される。従って、転送制御手段に発行される命令は、データの転送先のレジスタを指定する情報と、転送元のレジスタを指定する情報または転送すべきデータとがオペランドで指定されていればよく、この命令に対するデコード処理に要する時間が短縮されて、動作を高速化することが可能となる。
【図面の簡単な説明】
【図１】本発明のプロセッサの構成例を示す機能ブロック図である。
【図２】命令取り出し器、バスマスタ、比較器、読み出し器および整数加算器の各内部構成を示すブロック図である。
【図３】書き出し器、メモリ転送器、スタック処理器、整数減算器、整数乗算器および整数除算器の各内部構成例を示すブロック図である。
【図４】論理積演算器、論理和演算器、排他的論理積演算器、排他的論理和演算器およびビット反転器の各内部構成例を示すブロック図である。
【図５】浮動小数加算器、浮動小数減算器、浮動小数乗算器および浮動小数除算器の各内部構成例を示すブロック図である。
【図６】データ交換器および積和演算器の各内部構成例を示すブロック図である。
【図７】デコーダ、読み出し器および整数加算器の間のシーケンス例を示す図である。
【図８】本発明のプロセッサに供給される命令のフォーマット例を示す図である。
【図９】デコーダにおける処理の流れを示すフローチャートである。
【図１０】整数加算器における処理の流れを示すフローチャートである。
【図１１】本発明のプロセッサを動作させるためのプログラムコード例を示す図である。
【図１２】従来のプログラムコードの一例を示す図である。
【図１３】内部バスが複数設けられた場合の処理のパイプラインの例を概念的に示す図である。
【図１４】複数の内部バスが設けられた場合のプロセッサの内部構成例を示すブロック図である。
【図１５】従来のプロセッサの構成例を示す機能ブロック図である。
【図１６】従来のプロセッサにおける命令実行の流れを示すフローチャートである。
【図１７】従来のプロセッサに読み込まれる命令のプログラムコード例を示す図である。
【符号の説明】
１……プロセッサ、２……命令取り出し器、３……バスマスタ、３ａ……デコーダ、４ａ……命令キャッシュ、４ｂ……データキャッシュ、５……外部バスＩ／Ｆ、１０……メモリ、２１……プログラムカウンタ、２２……アドレス生成器、２３……命令発行器、２４……命令格納レジスタ、３１……アドレスバス、３２……データバス、６１……読み出し器、６１ａ……アドレスレジスタ、６１ｂ……データレジスタ、６２……書き出し器、６３……メモリ転送器、６４……スタック処理器、６５……データ交換器、６６……比較器、６６ａ、６６ｂ……データレジスタ、６６ｃ……ステータスレジスタ、６７……整数加算器、６７ａ、６７ｂ……入力レジスタ、６７ｃ……出力レジスタ、６８……整数減算器、６９……整数乗算器、７０……整数除算器、７１……論理積演算器、７２……論理和演算器、７３……排他的論理積演算器、７４……排他的論理和演算器、７５……ビット反転演算器、７６……浮動小数加算器、７７……浮動小数減算器、７８……浮動小数乗算器、７９……浮動小数除算器、８０……積和演算器、８１……汎用レジスタ
【図１】
0004264622.tif 000002
【図２】
0004264622.tif 000003
【図３】
0004264622.tif 000004
【図４】
0004264622.tif 000005
【図５】
0004264622.tif 000006
【図６】
0004264622.tif 000007
【図７】
0004264622.tif 000008
【図８】
0004264622.tif 000009
【図９】
0004264622.tif 000010
【図１０】
0004264622.tif 000011
【図１１】
0004264622.tif 000012
【図１２】
0004264622.tif 000013
【図１３】
0004264622.tif 000014
【図１４】
0004264622.tif 000015
【図１５】
0004264622.tif 000016
【図１６】
0004264622.tif 000017
【図１７】
0004264622.tif 000018