(57)【特許請求の範囲】
【請求項１】
データを格納するデータ格納手段と、
命令動作を選択するための命令情報を格納する命令情報格納手段と、
前記命令情報に基づいて、データに対して演算処理を行う演算手段と、
データに対してシフト処理を行うシフト回路と、
前記シフト回路から出力されるシフトデータから命令情報を検出して、前記命令情報格納手段に格納する命令情報検出回路と
を備えた演算装置において、
前記演算処理と前記シフト処理とは異なるタイミングで行うとともに、前記命令情報検出回路で検出された命令情報を前記命令情報格納手段に格納させることなく直接前記演算処理に用いること
を特徴とする演算装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、使用効率の高いシフト回路を備えた演算装置に関するものである。
【０００２】
近年の演算装置は多様な分野で使用されるため、多種類の命令体系を備えるようになっている。従って、このような演算装置では多種類の命令体系を効率よく処理することが必要となっている。
【０００３】
【従来の技術】
図８に従来の演算装置の一例を示す。算術論理演算ユニット（以下ＡＬＵとする）１は、内部バスである第一〜第三のバスＢＵＳ１〜ＢＵＳ３に接続されている。
【０００４】
種々の演算のためのデータ、あるいは演算結果を格納するためのレジスタ群２は前記第一〜第三のバスＢＵＳ１〜ＢＵＳ３に接続され、前記ＡＬＵ１によりレジスタ群２に格納されているデータの読出し、あるいは同ＡＬＵ１による演算結果のレジスタ群２への格納が行われる。
【０００５】
バレルシフタ（以下ＢＳＦとする）３は前記第一〜第三のバスＢＵＳ１〜ＢＵＳ３に接続される。そして、ＢＳＦ３は入力されたデータにシフト演算を施して出力する。
【０００６】
前記第一のバスＢＵＳ１にはステータスレジスタ４が接続され、前記ＡＬＵ１から出力されるフラグＦが格納される。そして、その格納内容に基づいてＡＬＵ１の演算結果の状態が表され、次いで行われる演算動作が選択されるようになっている。
【０００７】
前記ＢＳＦ３にはバッファレジスタとして動作するテンポラリレジスタ（以下ＡＸＲとする）５が接続され、同ＡＸＲ５は外部バスＡＢＵＳを介してメモリ６に接続されている。
【０００８】
そして、前記ＡＸＲ５は前記ＢＳＦ３の出力データを一時格納してメモリ６に出力し、あるいはメモリ６の格納データを一時格納してＢＳＦ３に出力する。
上記のように構成された演算装置で、例えばレジスタ群２に格納されているデータにシフト動作及び演算動作を施して、レジスタ群２に格納する場合の動作を説明する。
【０００９】
レジスタ群に格納されているデータは、まずＢＳＦ３に読み出され、所定ビット数のシフト動作を行ってＡＸＲ５に一旦格納される。次いで、ＡＸＲ５に格納されたデータはＢＳＦ３及び第一のバスＢＵＳ１若しくは第二のバスＢＵＳ２を介してＡＬＵ１に読み出される。
【００１０】
ＡＬＵ１はＡＸＲ５から読み出したデータに基づいて所定の演算動作を行い、その演算データに基づいてフラグＦをステータスレジスタ４に出力し、演算結果をレジスタ群２に格納する。
【００１１】
そして、ステータスレジスタＦに格納されたフラグＦに基づいて、ＡＬＵ１で行われた演算の状態が判定されて、次いで行われる命令動作が決定される。
【００１２】
【発明が解決しようとする課題】
ところが、上記のような演算装置ではフラグＦをステータスレジスタ４に出力するのは、ＡＬＵ１による演算動作時に限られる。すなわち、ＡＬＵ１による演算動作と、その他のデータ転送動作とは、クロック信号に基づいて交互に行われ、フラグＦの出力は演算動作時に限られる。
【００１３】
すると、ステータスレジスタ４に格納されたフラグＦを変化させるタイミングは、演算動作にともなうタイミングに限られる。この結果、演算動作を行わない場合には、フラグＦを変化させることはできず、命令体系を充分に多様化させることができないという問題点がある。
【００１４】
この発明の目的は、演算動作にともなうタイミング以外でもステータスレジスタのフラグ変化を可能として、多様なフラグ変化を行う命令を実現可能とする演算装置を提供することにある。
【００１５】
【課題を解決するための手段】
図１は本発明の原理説明図である。すなわち、本発明は、データを格納するデータ格納手段２と、命令動作を選択するための命令情報を格納する命令情報格納手段４と、前記命令情報に基づいて、データに対して演算処理を行う演算手段１と、データに対してシフト処理を行うシフト回路１１と、前記シフト回路１１から出力されるシフトデータから命令情報を検出して、前記命令情報格納手段４に格納する命令情報検出回路１４とを備えた演算装置において、前記演算処理と前記シフト処理とは異なるタイミングで行うとともに、前記命令情報検出回路で検出された命令情報を前記命令情報格納手段に格納させることなく直接前記演算処理に用いることを要旨とする。
【００１６】
【作用】
演算手段１による演算結果に基づいて命令情報が検出されて命令情報格納手段４に格納される。また、演算手段１による演算動作と異なるタイミングでシフト回路１１によりデータのシフト動作が行われる。
【００１７】
そして、命令情報検出回路１４によりシフト回路１１から出力されるシフトデータから命令情報が検出されて、命令情報格納手段４に格納される。演算手段１は命令情報格納手段４に格納された命令情報に基づいて演算動作を行う。
【００１８】
【実施例】
以下、この発明を具体化した一実施例を図２〜図７に従って説明する。なお、前記従来例と同一構成部分は同一符号を付して説明する。
【００１９】
図２に示すように、ＡＬＵ１は、内部バスである第一のバスＢＵＳ１Ｈ，ＢＵＳ１Ｌ〜第三のバスＢＵＳ３Ｈ，ＢＵＳ３Ｌに接続されている。
種々の演算のためのデータ、あるいは演算結果を格納するためのレジスタ群２は前記第一〜第三のバスＢＵＳ１〜ＢＵＳ３に接続され、前記ＡＬＵ１によりレジスタ群２に格納されているデータの読出し及び同データに基づく演算、あるいは同ＡＬＵ１による演算結果のレジスタ群２への格納が行われる。
【００２０】
バレルシフタ（以下ＢＳＦとする）１１は前記第一のバスＢＵＳ１Ｈ，ＢＵＳ１Ｌ〜第三のバスＢＵＳ３Ｈ，ＢＵＳ３Ｌに接続される。そして、ＢＳＦ１１は入力されたデータにシフト演算を施して出力し、そのシフト演算に基づいてあらかじめ設定された第一〜第四のフラグＦＣ〜ＦＺを検出して、前記ＡＬＵ１若しくはステータスレジスタ４に出力する。
【００２１】
前記第一のバスＢＵＳ１Ｌにはステータスレジスタ４が接続され、前記ＡＬＵ１あるいはＢＳＦ１１から出力される第一〜第四のフラグＦＣ〜ＦＺが格納される。そして、その格納内容に基づいてＡＬＵ１の演算結果の状態、あるいはＢＳＦ１１でシフトされたデータの状態が表され、次いで行われる演算動作が選択されるようになっている。
【００２２】
前記ＢＳＦ１１にはバッファレジスタとして動作する１６ビット長の第一及び第二のＡＸＲ１２ａ，１２ｂに接続され、同ＡＸＲ５は外部バスＡＢＵＳを介してメモリ６に接続されている。
【００２３】
すなわち、第一のＡＸＲ１２ａには前記ＢＳＦ１１の上位側１６ビット及び下位側１６ビットのいずれかの出力信号がマルチプレクサ１５を介して入力される。第二のＡＸＲ１２ｂには前記ＢＳＦ１１の上位側１６ビットの出力信号が入力される。
【００２４】
そして、前記第一及び第二のＡＸＲ１２ａ，１２ｂは前記ＢＳＦ１１の出力データを一時格納するテンポラリレジスタとして動作し、あるいはメモリ６に格納されているデータをＢＳＦ１１へ転送する際にはバッファレジスタとして動作する。
【００２５】
前記ＢＳＦ１１の構成を図３に従って説明すると、同ＢＳＦ１１には３２ビットの入力データＤ０〜Ｄ３１が入力され、３２ビットの出力データＯＵＴ０〜ＯＵＴ３１が出力される。また、ＢＳＦ１１は前記入力データＤ０〜Ｄ３１を左方向にシフトして出力する第一〜第三のシフト回路１３ａ〜１３ｃと、第一及び第二のフラグ検出回路１４ａ，１４ｂとから構成される。
【００２６】
前記第一〜第三のシフト回路１３ａ〜１３ｃ及び第一のフラグ検出回路１４ａにはモード信号ＭＤが入力される。第一〜第三のシフト回路１３ａ〜１３ｃでは前記モード信号ＭＤに基づいてシフトするビット数が選択される。
【００２７】
そして、第一のシフト回路１３ａでは、前記モード信号ＭＤに基づいて０ビット、４ビット、８ビット、１２ビットのいずれかのビット数でシフト動作が行われる。
【００２８】
第二のシフト回路１３ｂでは、前記モード信号ＭＤに基づいて０ビット、１ビット、２ビット、３ビットのいずれかのビット数でシフト動作が行われる。
第三のシフト回路１３ｃでは、前記モード信号ＭＤに基づいて０ビット、１ビットのいずれかのビット数でシフト動作が行われる。従って、第一〜第三のシフト回路１３ａ〜１３ｃの動作により、入力データＤ０〜Ｄ３１は前記モード信号ＭＤで設定される０ビット〜１６ビットの範囲の任意のビット数で左方向へシフトして出力されるようになっている。
【００２９】
前記第一のフラグ検出回路１４ａには、前記第一〜第三のシフト回路１３ａ〜１３ｃにおいてシフトされた信号と、最上位ビットの出力データＯＵＴ３１とが入力される。そして、そのデータに基づいて第一のフラグ検出回路１４ａからキャリーフラグＦＣ及びオーバーフローフラグＦＶが出力される。
【００３０】
すなわち、３２ビットの前記入力データＤ０〜Ｄ３１は、図４に示すように例えば５ビットの符号ビットＸ１と、残りの２７ビットのデータビットＸ２とから構成される。
【００３１】
そして、前記モード信号ＭＤが４ビットのシフト動作を設定するものであれば、第一のフラグ検出回路１４ａに入力されるデータはすべて「１」となり、前記キャリーフラグＦＣ及びオーバーフローフラグＦＶは出力されない。
【００３２】
一方、前記モード信号ＭＤが５ビット以上のシフト動作を設定するものであれば、第一のフラグ検出回路１４ａに入力されるデータはすべて「１」と「０」が混在するため、前記キャリーフラグＦＣ及びオーバーフローフラグＦＶが出力されるようになっている。
【００３３】
前記第二のフラグ検出回路１４ｂには、第一〜第三のシフト回路１３ａ〜１３ｃでシフトされた出力データＯＵＴ０〜ＯＵＴ３１が入力され、同第二のフラグ検出回路１４ｂからネガティブフラグＦＮ及びゼロフラグＦＺが出力される。
【００３４】
そして、前記ネガティブフラグＦＮは前記符号ビットＸ１が「０」の場合に出力され、ゼロフラグＦＺは出力データＯＵＴ０〜ＯＵＴ３１がすべて「０」の場合に出力される。
【００３５】
次に、上記のように構成された演算装置の動作を説明する。
まず前記レジスタ群２に格納されているデータをＡＬＵ１による演算を行うことなく、シフト動作だけを行ってメモリ６に転送するＭＯＶＣ命令の動作を図５に従って説明する。
【００３６】
レジスタ群２に格納されている１６ビット長のデータは、ＢＵＳ１Ｌを介してＢＳＦ１１の下位１６ビット側入力端子に入力される。ＢＳＦ１１はモード信号ＭＤに基づいてシフト動作を行い、その出力信号を上位１６ビット側出力端子からマルチプレクサ１５を介して第一のＡＸＲ１２ａに一時格納する。そして、第一のＡＸＲ１２ａに格納されたデータは外部バスＡＢＵＳを介してメモリ６に転送される。
【００３７】
このとき、ＢＳＦ１１によるシフト動作にともなって、前記フラグＦＶ，ＦＮ，ＦＺが同ＢＳＦ１１からステータスレジスタ４に出力される。この結果、続いて行われる転送動作あるいは演算動作に前記フラグＦＶ，ＦＮ，ＦＺの内容を反映させることが可能となる。
【００３８】
次に、前記メモリ６に格納されているデータをＡＬＵ１による演算を行うことなく、シフト動作だけを行ってレジスタ群２に転送するＭＯＶＸ命令の動作を図６に従って説明する。
【００３９】
メモリ６に格納されている３２ビット長のデータは、外部バスＡＢＵＳ及びバッファレジスタとして動作する第一及び第二のＡＸＲ１２ａ，１２ｂを介してＢＳＦ１１に入力される。ＢＳＦ１１はモード信号ＭＤに基づいてシフト動作を行い、その出力信号がバスＢＵＳ３Ｈ，ＢＵＳ３Ｌを介してレジスタ群２に転送される。
【００４０】
このとき、ＢＳＦ１１によるシフト動作にともなって、前記フラグＦＶ，ＦＮ，ＦＺが同ＢＳＦ１１からステータスレジスタ４に出力される。この結果、続いて行われる転送動作あるいは演算動作に前記フラグＦＶ，ＦＮ，ＦＺの内容を反映させることが可能となる。
【００４１】
次に、前記メモリ６に格納されているデータにシフト動作及び演算動作を施して、レジスタ群２に転送するＲＮＤ命令の動作を図７に従って説明する。
メモリ６に格納されているデータは、外部バスＡＢＵＳを介して第二のＡＸＲ１２ｂに格納され、同第二のＡＸＲ１２ｂからＢＳＦ１１に入力される。ＢＳＦ１１はモード信号ＭＤに基づいてシフト動作を行い、その出力信号をバスＢＵＳ２Ｈを介してＡＬＵ１に出力する。
【００４２】
このとき、ＢＳＦ１１によるシフト動作にともなって、フラグＦＶ，ＦＣ，ＦＮ，ＦＺが同ＢＳＦ１１からステータスレジスタ４に出力される。同時に、ＢＳＦ１１からＡＬＵ１のキャリー入力にフラグＦＣが出力される。
【００４３】
この結果、ＡＬＵ１に入力されたフラグＦＣに基づいて、次に行われる演算動作のキャリー入力を決定することが可能となる。
また、ＢＳＦ１１によるシフト動作にともなって、前記フラグＦＶ，ＦＣ，ＦＮ，ＦＺが同ＢＳＦ１１からステータスレジスタ４に出力される。この結果、続いて行われる転送動作あるいは演算動作に前記フラグＦＶ，ＦＣ，ＦＮ，ＦＺの内容を反映させることが可能となる。
【００４４】
以上のようにこの演算装置では、ＢＳＦ１１によるデータのシフト動作時に、そのシフト動作の状態により第一及び第二のフラグ検出回路１４ａ，１４ｂによりフラグＦＶ，ＦＣ，ＦＮ，ＦＺが検出される。このフラグＦＶ，ＦＣ，ＦＮ，ＦＺはＡＬＵ１による演算動作とは異なるタイミングで検出されてステータスレジスタ４に格納され、そのステータスレジスタ４の格納データに基づいて次の命令動作が選択可能となる。
【００４５】
従って、演算動作によって検出されるフラグに加えて、ＢＳＦ１１によるデータのシフト動作時にフラグＦＶ，ＦＣ，ＦＮ，ＦＺを検出して、次の命令動作に反映させることができる。
【００４６】
また、演算動作と、シフト動作とをともなう一つの命令動作中の異なるタイミングでフラグを検出することができるので、一つの命令動作中のシフト動作で検出されたフラグで、続いて行われる演算動作を変更する等、複雑な演算プログラムを設定することが可能となる。
【００４７】
【発明の効果】
以上詳述したように、この発明は演算動作にともなうタイミング以外でもステータスレジスタのフラグ変化を可能として、多様なフラグ変化を行う命令を実現可能とする演算装置を提供することができる優れた効果を発揮する。
【図面の簡単な説明】
【図１】本発明の原理説明図である。
【図２】本発明の一実施例を示すブロック図である。
【図３】一実施例のＢＳＦを示すブロック図である。
【図４】データの内容を示す説明図である。
【図５】ＭＯＶＣ命令の動作を示すブロック図である。
【図６】ＭＯＶＸ命令の動作を示すブロック図である。
【図７】ＲＮＤ命令の動作を示すブロック図である。
【図８】従来例を示すブロック図である。
【符号の説明】
１      演算手段（ＡＬＵ）
２      データ格納手段（レジスタ群）
４      命令情報格納手段（ステータスレジスタ）
１１    シフト回路（ＢＳＦ）
１４    命令情報検出回路（フラグ検出回路）
ＢＵＳ  バス
【図１】
0003693681.tif 000002
【図２】
0003693681.tif 000003
【図３】
0003693681.tif 000004
【図４】
0003693681.tif 000005
【図５】
0003693681.tif 000006
【図６】
0003693681.tif 000007
【図７】
0003693681.tif 000008
【図８】
0003693681.tif 000009