(57)【要約】【課題】データの左および右のシフト動作を組合せて備えたプロセッサ・システムおよび方法を提供する。【解決手段】複数のビットを有する初期のデータ引数Ｄ［３１：０］を受け取るための入力を備えた集積回路デバイス１００が得られる。このデバイスはまた、第１の方向に多数のシフト位置を指示しおよび複数のビットを有する第１のシフト引数Ｌ［４：０］を提供する回路と、第２の方向に多数のシフト位置を指示しおよび複数のビットを有する第２のシフト引数Ｒ［４：０］を提供する回路とを有する。このデバイスはまた複数のローティト・ステージＲＯＴＡＴＥ  ＳＴＡＧＥｎを有する。これらのローティト・ステージのおのおのは１つの入力と１つの出力とを有する。複数のローティト・ステージの中の１つのローティト・ステージＲＯＴＡＴＥ  ＳＴＡＧＥ１は初期のデータ引数を受け取るために結合される。【選択図】図３
2004206720.tif 000002
【特許請求の範囲】
【請求項１】
複数のビットを有する初期のデータ引数を受け取るための入力と、
第１の方向の多数のシフト位置を指示しおよび多数のビットを有する第１のシフト引数を供給する回路と、
第２の方向の多数のシフト位置を指示しおよび多数のビットを有する第２のシフト引数を供給する回路と、
おのおのが１つの入力と１つの出力とを有する複数のローティト・ステージと、を有し、ここで
前記複数のローティト・ステージの中の１つのローティト・ステージが前記初期のデータ引数を受け取るために結合され、
前記複数のローティト・ステージの中で前記１つのローティト・ステージ以外のローティト・ステージのおのおのが前記複数のローティト・ステージの中のまた別の１つのローティト・ステージの出力からデータ引数を受け取るために結合され、
前記複数のローティト・ステージの中のローティト・ステージのおのおのが前記第１および第２のシフト引数の少なくとも１つのすべてのビットよりも少ないビットに応答して前記対応するローティト・ステージの中に前記データ引数をローティトさせるように動作することができ、
前記複数のローティト・ステージの中の少なくとも１つのローティト・ステージが前記第１および第２のシフト引数のそれぞれのビット位置の和に応答して前記対応するローティト・ステージの中に前記データ引数をローティトさせるように動作することができる集積回路デバイス。
【請求項２】
多数のシフト位置を第１の方向に指示しおよび複数のビットを有する第１のシフト引数を提供する段階と、
多数のシフト位置を第２の方向に指示しおよび複数のビットを有する第２のシフト引数を提供する段階と、
おのおのが１つの入力および１つの出力を有する複数のローティト・ステージと、
複数のローティト・ステージの中の１つのローティト・ステージの中のおよび複数のビットを有する初期のデータ引数を受け取る段階と、
前記複数のローティト・ステージの中で前記１つのローティト・ステージ以外のローティト・ステージのおのおのに対して、前記複数のローティト・ステージの中でまた別の１つのローティト・ステージの出力からデータ引数を受け取る段階と、
前記複数のローティト・ステージの中のローティト・ステージのおのおのに対して、前記第１および第２のシフト引数の少なくとも１つのすべてのビットより少ないビットに応答して前記対応するローティト・ステージの中に前記データ引数入力をローティトする段階と、
を有し、ここで前記複数のローティト・ステージの中の少なくとも１つのローティト・ステージが前記第１および第２のシフト引数のそれぞれのビット位置の和に応答して前記対応するローティト・ステージの中に前記データ引数入力をローティトさせるよう動作することができる、集積回路デバイスを動作させる方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例はマイクロプロセッサまたはディジタル信号プロセッサ（「ＤＳＰ(digital signal processor)」）のような電子プロセッサに関する。さらに詳細に言えば、本発明の実施例は、左および右のシフト・カウント・インジケータのそれぞれに応答して、データ引数を効率的にシフトするためのＥＸＴＲＡＣＴ命令に応答して動作することができるこのようなプロセッサを得ることを目指している。
【背景技術】
【０００２】
マイクロプロセッサおよびＤＳＰを含む電子プロセッサは、個人用やビジネス用およびその他の環境の中でデバイスとして用いられることを含めて、多くの応用において広く用いられている。市場の要請により、デバイスの消費電力やスピードといったような因子を含むプロセッサの設計の多くの特性に対して影響を与える。その結果、これらおよびその他の因子に関して改良を行う努力において、プロセッサの設計者による評価は常に行われている。本発明の実施例もまたこの目的に向かって努力している。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の実施例は、データの引数をローティトする目的のための改良されたプロセッサ機能ユニットを得ることを目指している。データの引数のローティションは、データが第１の方向にいったんシフトされそしてその後に反対方向にシフトされるという２回シフトされるべき場合を取り扱うことを目指している。したがって、２つの可能性が存在する。すなわち、右シフトを行いそしてその後に左シフトを行う、または左シフトを行いそしてその後に右シフトを行うことである。２つのこのような引き続くシフトは、種々の場合に必要とされるであろう。例えば、ＴＭＳ３２０Ｃ６ｘｘｘ群としてテキサス・インスツルメンツ社から市販されていて現在市場で入手可能なＤＳＰは、ＤＳＰの命令群の中にＥＸＴＲＡＣＴ命令を有しており、そしてその命令は２つの引き続くそして反対方向のシフトを命令する。このような動作の利用は、典型的には、データ・ワードの中の一部分のデータを操作または分離するのに便利である。現代のプロセッサのワードは３２ビットのデータの引数であることが多い。さらに、意図した結果を達成するために、これらの２つのシフトはまた別のデータの引数との算術演算または論理演算のような付加的な演算と共に用いることができる。とにかく、従来のプロセッサでは、このような演算には２つの引き続くシフト命令を用いるまたはＥＸＴＲＡＣＴ命令を用いるのいずれかが必要であり、いずれの方式も１つの方向の完全なシフトとその後の反対方向のまた別の完全なシフトとを行うことによってプロセッサの中で実行される。このことに関して、おのおののシフトに対して１つずつの２つの独立な演算が費やされるか、または２つのシフトが実行されるかのいずれかである。けれどもそれによって、２つの異なる３２ビットのシフタ（すなわち、２つのシフトのおのおのに対して１つずつのシフタ）の複雑さが要求される。これらの先行技術の方式によって要求されるような付加的な遅延および／または複雑さは、現代のプロセッサの設計における欠点であると考えられる。
【０００４】
前記の観点から、下記で説明される好ましい実施例によって達成されるように、先行技術の欠点に取り組む必要性が生じている。
【課題を解決するための手段】
【０００５】
好ましい実施例により、整数のビットを有する入力データの引数を操作するための電子システムが存在する。このシステムは、右方向の引数を受け取るための入力と左方向の引数を受け取るための入力とを有する。このシステムはまた、第１の方向の引数と第２の方向の引数とに応答して入力データの引数をローティトすることによって、整数のビットを有する第１のデータ出力を生ずるための回路を有する。このシステムはまた、修正されたデータ出力を提供するための回路を有する。この提供するための回路は、第１のデータ出力からの第１の組のビットを修正されたデータ出力の第１の部分として選定するための回路と、第１のデータ出力以外のソースから第２の組のビットを修正されたデータ出力の第２の部分として供給するための回路とを有する。
【０００６】
その他の特徴はまた開示されそして請求される。
【実施例】
【０００７】
左シフト・カウント・インジケータと右シフト・カウント・インジケータとを分離するのに応答してデータの引数をシフトする好ましい実施例のプロセッサおよびその動作の可能性を導入するために、図１および図２は３２ビットのデータに関するシフト動作のそれぞれの例を示している。これらの例のおのおのは量Ｌの左シフトとその後の量Ｒの右シフトとを示している。本明細書の発明の背景の節で前記において説明したように、このような動作は先行技術では２つの分離したシフト・ユニットまたは２つの独立したシフト動作を用いて実行される。
【０００８】
図１は３２ビットのデータ値Ｖ１を示している。この場合には、例としてそのビットがＤ３１ないしＤ０で示されている。図１の例ではＲ＝１０およびＬ＝６であり、したがって右シフトＲは左シフトＬよりも大きい。左シフトが先ず実行され、そしてその期間中に３２ビット値Ｖ１が左に６ビット位置だけシフトされ、それによってこの左シフトでビットＤ２６ないしＤ３１が放棄され、そしてシフトされた値ＶＬ１がＶ１の３２個のビットの残りの２６個のビットで開始しそしてそれを含むことを生ずる。さらに、ＶＬ１の残りの６個の最下位ビット（「ＬＳＢｓ(least significant bits)」）がゼロで満たされる。次に、右シフトが実行され、そしてその期間中に３２ビット値ＶＬ１が１０ビット位置だけ右にシフトされ、それによって右シフト値ＶＲ１の１０個の最上位ビット（「ＭＳＢｓ(most significant bits)」）がゼロで満たされる。またはそれとは異なって、図１で「ＳＥ(sign extension)」と略されているようにこれらのビットのおのおのは符号拡張ビットであることができる。ゼロ（または符号拡張ビット）に１０個シフトした後そしてそれにより３２ビット値ＶＲ１が完成される時、それは値ＶＬ１からの２２個の最上位ビットすなわちビットＤ２５ないしＤ４である。
【０００９】
図２は３２ビットのデータ値Ｖ２を示した図である。ここでは、そのデータのビットに対してＤ３１ないしＤ０の図１の規約を用いている。図２の例では、Ｒ＝８およびＬ＝１６であり、したがって、左シフトＬは右シフトＲよりも大きい。左シフトが先ず実行され、そしてその期間中に３２ビットの値Ｖ２が左に１６ビット位置だけシフトされ、それによってビットＤ３１ないしＤ１６が放棄される。したがって、左にシフトされた値ＶＬ２はＶ２の３２個のビットの残りの１６個のビットで開始しそしてそれを含んでいる。そして残りの８個のＬＳＢがゼロで満たされる。次に、右シフトが実行され、そしてその期間中に３２ビットの値ＶＬ２が８ビット位置だけ右にシフトされ、それによって右シフト値ＶＲ２の８個のＭＳＢがゼロ（またはそれとは異なって、符号拡張ビット）で満たされる。ゼロ（または符号拡張ビット）を８個シフトした後そしてそれにより３２ビット値ＶＲ２が完成される時、それは値ＶＲ１からの２４個のＭＳＢである。けれども、２４個のビットについては１６個のデータ・ビットＤ１５ないしＤ０だけがオリジナルの値Ｖ２から残る。ここで、残りの８個のＬＳＢはゼロの値である。
【００１０】
図３はプロセッサ１００のブロック線図である。ここで、プロセッサ１００はマイクロプロセッサまたはＤＰＳまたはなお他の計算用集積回路であることができる。プロセッサ１００は当業者には周知の多くの特徴を有している。好ましい実施例の特徴に注目しているので、このような周知の特徴についてはそれを示したりまたは説明することはしない。けれども全体的には、当業者には分かるように、プロセッサ１００は１つまたは多くの機能ユニットを有している。典型的には、このような機能ユニットのおのおのは機能をある種に部分分割したものを有していて、これらはここではサブユニットと呼ぶことができる。当業者には周知であるように、プロセッサ１００は関連する命令の組を有している。サブユニットのおのおのは、その命令の組の中の任意の１つの命令によって１つまたは多くのデータの引数に関するデータの演算を実行するように動作する。例えば、このようなサブユニットは算術論理装置（「ＡＬＵ(arithmetic logic unit)」）であることができ、当業者には周知であるような例えば論理装置ＡＮＤおよびＯＲなどや他の論理装置を含む種々の論理動作を実行することができる論理演算子ブロックであることができる。さらにサブユニットの機能について、図３には前記で説明した左／右シフト動作を指示する特定のサブユニット２００が示されている。ここで、サブユニット２００は他のサブユニットからは分離されて存在することができる、またはこれらのサブユニットの１つの機能と組み合わされることもできる。したがって、サブユニット２００はシフタ・ユニットの一部分であると考えることができる。特殊の用語は重要ではなく、サブユニット２００は左シフトの引数と右シフトの引数との両方に関してローティション動作と呼ばれる動作を実行し、したがってサブユニット２００はデータ・ローティション・ユニット２００と考えることができることが、この明細書の残りの部分から当業者には分かるであろう。
【００１１】
ここで、「データ・ローティション・ユニット」という名称に関しては、このユニットは、左シフトの引数Ｌおよび右シフトの引数Ｒのそれぞれに応答して３２ビットのデータ入力をローティトすることをさらに加えて述べておく。この特徴をさらに理解するために、図１および図２に再び注目する。そこでの個々のシフト動作をローティト動作の中に組み合わせることができる。例えば図１を参照して、そこでは先ずＬ＝６の左シフトが行われその後Ｒ＝１０の右シフトが行われることが示されていることを想起する。したがってある意味では、値ＶＲ１の最終結果は正味のシフトを反映する、またはＲ−Ｌ＝１０−６＝４のローティションを反映する、すなわち値ＶＲ１がＶ１の４個のデータ・ビットＤ３、Ｄ２、Ｄ１およびＤ０が含まれていないことに示されているように、４個のデータ・ビットの右へのシフトである。さらに、Ｖ１のオリジナルの値から保持されているような最終値ＶＲ１の中の第１のデータ・ビットＤ２５は、６ビットの左シフト（それによりビットＤ３１ないしＤ２８が放棄される）の後保持される最上位ビットである。また別の例として図２を参照して、この例は先ずＬ＝１６の左シフトとその後のＲ＝８の右シフトを示していることを想起する。したがって、図１の例に対する比較の意味において、値ＶＲ２の最終結果はＲ−Ｌ＝８−１６＝−８の正味のシフト、すなわちローティションである。この場合、この結果における負の指示は左への正味のシフトを示し、そしてそのシフトは８データ・ビットの差である。さらに、オリジナルの値Ｖ２から保持される最終値ＶＲ２の中の第１のデータ・ビットＤ１５は、１６ビットの左シフトの後に保持される最上位ビットである。これらの２つの例が与えられるならば、当業者には左シフトとその後の右シフトにより効果においてオリジナルの値Ｖｘのローティションが得られることが分かるはずである。この場合、もし必要ならば、他の回路が最上位ビットのゼロ（または符号拡張）およびゼロの最下位ビット値を挿入するであろう。
【００１２】
２つの反対方向のシフトのローティション回転を示す時、データの引数が１つの方向に完全にシフトされその後にそれが反対方向に次にシフトすることを要求する２つの分離したシフタなしにまたは２つの独立で完全なシフトなしに、好ましい実施例はこのような機能を達成する。その代わりに、１つの実施例では、Ｒ−Ｌを十分に決定し、したがって（適切である時、十分な付加的な最上位ビットゼロまたは符号拡張を有して）これらの値をローティトするのに十分な制御回路を備えることによってこのような方式を実現することができる。けれども、このような方式は過度に複雑であることがあり、そして大幅な遅延を生ずることがある。したがって、種々の好ましい実施例はＲ−Ｌ機能の概念の観点でデータ・ローティト・ユニット２００を実現するが、しかし異なる方式でその機能を先ず表しそしてデータ・シフトの引数ＲおよびＬの中のビットのサブセットに基づきその機能をまた中断する方法で実現する。これらの特徴は本明細書の後でさらに調べられる。
【００１３】
好ましい実施例では、前記で説明したＲ−Ｌの正味のシフトは次の式１におけるように同じく実現される。
【００１４】
Ｒ−Ｌ＝Ｒ＋ＬＸ＋１                                                      式１
【００１５】
式１において、本明細書の全体にわたって用いられる変数の後の「Ｘ」の表示は反転された信号の表示である。したがって、この例では、ＬＸはＬの論理反転（すなわち、２進補数）である。さらに、式１の原理それ自身はデータ・シフト動作の業界では知られている、すなわちＲ−ＬのローティションはＲ＋ＬＸ＋１のローティションに等しい。この原理をさらに理解するために、図１および図２の例に応用される場合を考える。図１を参照すると、この場合にはＬ＝６およびＲ＝１０であり、したがってＲ−Ｌ＝１０−６＝４である。５ビットの２進表示ではＲ＝０１０１０、Ｌ＝００１１０およびＬＸ＝１１００１であり、したがって（第６のビットの桁上げを無視して）Ｒ＋ＬＸ＋１＝００１００であり、これは１０進値の４である。したがって、Ｒ−ＬとＲ＋ＬＸ＋１の両方は＝４である。次に図２を参照すると、この場合にはＬ＝１６およびＲ＝８であり、したがってＲ−Ｌ＝８−１６＝−８である。それにより、８の左シフトを指示する。５ビットの２進表示ではＲ＝０１０００、Ｌ＝１００００およびＬＸ＝０１１１１であり、したがってＲ＋ＬＸ＋１＝１１０００である。これは１０進値の２４である。したがってこの場合において、Ｒ−Ｌは負の結果で示されているように左シフトを示し、一方、Ｒ＋ＬＸ＋１は正の結果によって示されるように右シフトを示す。けれども、問題となっているデータの引数である３２ビットの量に対しては、８ビット位置の左ローティションは２４ビット位置の右ローティションに等価である。したがってシフト動作の目的に対しては、再びＲ−ＬのローティションはＲ＋ＬＸ＋１のローティションに等しい。
【００１６】
次に図３および好ましい実施例のデータ・ローティト・ユニット２００に戻るならば、それは３２ビット・データの引数Ｄ［３１：０］に関して値Ｒ＋ＬＸ＋１を決定するための種々のＲＯＴＡＴＥ  ＳＴＡＧＥおよび種々の接続を有する。ここで、ＲおよびＬは両方ともＬ［４：０］およびＲ［４：０］として示された５ビット・シフトの引数値である。これらの３つの引数のおのおのは、命令に応答しておよびレジスタ、レジスタ・ファイル、メモリまたはこれらと同等のものからロードされるなどして、プロセッサ１００の中の種々のロケーションから提供されることができる。ＲＯＴＡＴＥ  ＳＴＡＧＥのおのおのは、３２ビット入力をそのまま通すためにまたは多数のロケーションだけそれを右にローティトするためのいずれかのために接続された３２個のマルチプレクサの群を表す、すなわち、そのステージの１つの端部の外にシフトされた任意のビットがこれらのステージの他の端部の入力に自動次行送りされるように、その入力を右にシフトするために接続された３２個のマルチプレクサの群を表す。さらに、後で詳細に説明されるように、おのおののステージに対するローティションの量は種々のステージのあるものに対しては異なる。次に特定の接続に戻るならば、データの引数Ｄ［３１：０］はＲＯＴＡＴＥ  ＳＴＡＧＥ１に接続される。このＲＯＴＡＴＥ  ＳＴＡＧＥ１は左シフトの引数のＬＳＢ、Ｌ［０］、を受け取るために接続される。好ましい実施例では、シフトの引数のおのおのの反転がまた利用可能であると仮定される、または、当業者にはこのような反転を得るのに十分な回路を容易に実現できると仮定される。したがってとにかく、そして後で詳細に説明されるように、シフトの引数を受け取るステージのおのおのが、その引数の反転を受け取るためにさらに接続されると仮定される。したがって、前記で説明した仮定により明らかには示されていないが、ＲＯＴＡＴＥ  ＳＴＡＧＥ１はまた、Ｌ［０］の反転、これは後でＬＸ［０］として参照される、を受け取るまたはアクセスする。ＲＯＴＡＴＥ  ＳＴＡＧＥ１の３２ビットの出力はＲＯＴＡＴＥ  ＳＴＡＧＥ２の入力として接続される。ＲＯＴＡＴＥ  ＳＴＡＧＥ２は右シフトの引数の最下位ビットＲ［０］を受け取るために接続される。したがって前記で説明したように、それはまたその反転ＲＸ［０］を受け取るために接続されることが好ましい。したがって、これまでに説明した接続が与えられるならば、おのおのの最下位ビットがＲＯＴＡＴＥ  ＳＴＡＧＥ１またはＲＯＴＡＴＥ  ＳＴＡＧＥ２に対する制御を提供するように、５ビット・シフトの引数値ＬおよびＲが接続されることに注目されたい。後で詳細に説明されるように、それぞれのＳＴＡＧＥに対するまた入力であるシフトの引数の単一ビット部分に応答して、これらのＳＴＡＧＥのおのおのはその３２ビットの入力を右ローティトするように動作することができる。
【００１７】
図３およびデータ・ローティト・ユニット２００を引き続き参照するならば、ＲＯＴＡＴＥ  ＳＴＡＧＥ２の３２ビットの出力はＲＯＴＡＴＥ  ＳＴＡＧＥ３に入力として接続される。ＲＯＴＡＴＥ  ＳＴＡＧＥ３はまた、ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲから４ビットの制御信号Ｃ３を受け取る。ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲは左シフトの引数および右シフトの引数のおのおのから第２および第３のＬＳＢを受け取るために接続され、したがってこれらの入力は図３ではそれぞれＬ［２：１］およびＲ［２：１］として示されている。ＳＴＡＧＥ３制御装置はまたＣＡＲＲＹ信号およびその論理反転ＣＡＲＲＹＸ信号を出力する。ＣＡＲＲＹ信号とＣＡＲＲＹＸ信号との両方は、ＳＴＡＧＥ４  ＣＯＮＴＲＯＬＬＥＲに対する入力として接続される。ＳＴＡＧＥ４  ＣＯＮＴＲＯＬＬＥＲはまた、左シフトの引数値および右シフトの引数値のおのおのから２つのＭＳＢを受け取り、したがってこれらの入力は図３ではそれぞれＬ［４：３］およびＲ［４：３］として示されている。これらの種々の入力に応答して、ＳＴＡＧＥ４  ＣＯＮＴＲＯＬＬＥＲはＲＯＴＡＴＥ  ＳＴＡＧＥ４に対して４ビットの制御信号Ｃ４を出力する。最後に、ＲＯＴＡＴＥ  ＳＴＡＧＥ４は１つの入力においてＳＴＡＧＥ３の３２ビットの出力を受け取る。後で詳細に説明されるように、制御信号Ｃ４に応答して、ＳＴＡＧＥ４はこの３２ビットの入力をシフトするように動作することができ、そして最終の３２ビットのシフトされた出力信号Ｖｓを供給するように動作することができる。
【００１８】
次に、データ・ローティト・ユニット２００の動作を説明する。そして、図３に示された種々のブロックの好ましい実施例の機能を考察した後、デバイスのレベルにおいてさらに考察する。先ず、ＲＯＴＡＴＥ  ＳＴＡＧＥのおのおのは３２個のマルチプレクサの群を表し、そしてこの３２個のマルチプレクサの群は、３２ビットのデータ入力をそのまま通すかまたは多くのロケーションだけそれを右にローティトするかのいずれかのために接続されることを想起する。このようなマルチプレクサの群に対するローティトの決定は、次に考察されるように、そのステージを制御するシフトの引数の値によって変わる。下記でステージの動作のおのおののに対して詳細な付加的説明を与えると共に、導入として、このローティトの決定は次のようにして行われる。ＲＯＴＡＴＥ  ＳＴＡＧＥ１の右ローティションはもしあれば、それは左シフトの引数値（およびその補数）のビットＬＸ［０］のみによって制御される。したがって、それはＬＸ［０］の値に基づく２つの範囲の１つをシフトすることができる。ＲＯＴＡＴＥ  ＳＴＡＧＥ２の右ローティションはもしあれば、それは右シフトの引数値（およびその補数）のビットＲ［０］のみによって制御される。したがって、それはＲ［０］の値に基づく２つの範囲の１つをシフトすることができる。ＲＯＴＡＴＥ  ＳＴＡＧＥ３の右ローティションはもしあれば、それはビットＬＸ［２：１］とＲ［２：１］の和によって制御される。したがって、それはＬＸ［２：１］とＲ［２：１］とのモジュロ４の和に基づく４つの範囲の１つをシフトすることができる。最後に、ＳＴＡＧＥ４の右シフト動作はもしあれば、それはＳＴＡＧＥ３の制御ビットから発生する任意の桁上げと共に、ビットＬＸ［４：３］とＲ［４：３］との和によって制御される。したがって、それはＬＸ［４：３］とＲ［４：３］とのモジュロ４の和に基づく４つの範囲の１つと、もし桁上げが得られるならば付加的なシフトとを加えたものをシフトすることができる。これらのシフト動作のおのおのの細部は、下記において別々に詳細に説明される。
【００１９】
ＲＯＴＡＴＥ  ＳＴＡＧＥ１について詳細に考察するならば、それはビットＬＸ［０］によってのみ制御されることを想起する。このように、そのローティト動作がもしあるならば、それは右シフトの引数Ｒに対して無関係であり、そしてまた左シフトの引数Ｌの上位桁ビットＬＸ［４：１］のいずれかに対しても無関係である。ＲＯＴＡＴＥ  ＳＴＡＧＥ１は、もしＬＸ［０］＝１であるならば、３２ビットのデータの引数を右に１位置だけローティトし、そしてもしＬＸ［０］＝０ならば、ローティト（すなわち、０ビット位置のローティション）は実行されない。ＲＯＴＡＴＥ  ＳＴＡＧＥ１の動作の１つの例を示すために、図４は図１からの同じ３２ビットのデータの引数Ｄ［３１：０］を示している。ここでは、このデータの引数はＲＯＴＡＴＥ  ＳＴＡＧＥ１に対する入力としての形式で図４の左に示されている。次に、図１の例を想起するならば、この場合にはＬ＝６である。この１０進値の６は、２進値では００１１０に等しく、したがってその補数はＬＸ＝１１００１である。したがってこの例では、ＬＸ［０］＝１である。したがって、図４の右に対する出力に示されているように、図４はＲＯＴＡＴＥ  ＳＴＡＧＥ１による１ビット位置の右のローティションを示す。その結果、ビットＤ３１ないしＤ０はいったん右にローティトされ、したがって、ビットＤ０はこのシーケンスの右端の外にシフトされ、それと共に外にシフトされたビットＤ０はこのシーケンスの左側に、したがって先行するビットＤ３１に、自動次行送り（すなわち、ローティト）される。
【００２０】
ＲＯＴＡＴＥ  ＳＴＡＧＥ２について詳細に考察するならば、それはビットＲ［０］によってのみ制御されることを想起する。このように、そのローティションがもしあるならば、それは左シフトの引数Ｌに無関係でありおよびまた右シフトの引数Ｒの上位桁ビットＲ［４：１］のいずれかとも無関係である。Ｒ［０］に応答して、ＲＯＴＡＴＥ  ＳＴＡＧＥ２はもしＲ［０］＝１ならば３２ビットのデータの引数入力を右に１位置だけローティトし、もしＲ［０］＝０ならばローティションは実行されない。好ましい実施例はＲ＋ＬＸ＋１の式１の値のローティションをまた実行することをさらに想起する。したがって、この式は「＋１」の要素、すなわち「Ｒ＋ＬＸ」のローティションに加えて１位置の右ローティション、を含んでいる。１つの好ましい実施例では、この付加的な増分はＲＯＴＡＴＥ  ＳＴＡＧＥ２と関連して達成される。したがって、Ｒ［０］の値と組み合わせて、ＲＯＴＡＴＥ  ＳＴＡＧＥ２の結局の右ローティションは、もしＲ［０］＝１ならばその３２ビットのデータの引数の入力を右に２ビット位置（すなわち、１の和に対する１ビット位置と式１の要素「＋１」に対するまた別のビット位置）にローティトするようなローティションであり、そしてもしＲ［０］＝０ならばその３２ビットのデータの引数の入力を右に１ビット位置（すなわち、式１の要素「＋１」に対する１ビット位置）だけローティトするようなローティションである。ＲＯＴＡＴＥ  ＳＴＡＧＥ１の動作の例およびＲＯＴＡＴＥ  ＳＴＡＧＥ２に次に応用された図１について続けるために、図５はその左に、ＲＯＴＡＴＥ  ＳＴＡＧＥ１からＲＯＴＡＴＥ  ＳＴＡＧＥ２によって受け取られた３２ビットのデータの引数Ｄ［３１：０］が示されている。次に、Ｒが１０進値の１０である図１の例を続けるならば、その時には図５はその値に応答するローティションを示している。具体的に言えば、２進値ではＲの値は０１０１０に等しく、これは１０進値の１０に等しいＲに対応する。したがって、この例ではＲ［０］＝０である。したがって、Ｒ［０］ビットだけでは右ローティションを供給しないが、しかし式１からの「＋１」の値を実行するためにＲＯＴＡＴＥ  ＳＴＡＧＥ２の中に１つの増分を含むことは、その時には、図５に示されたようなこの実施例に対してＲＯＴＡＴＥ  ＳＴＡＧＥ２に、図５の右に対する出力によって示されているように、１ビット位置だけの右ローティションを供給させる原因となる。したがって、ビットＤ３１ないしＤ０はいったん右にローティトされ、そしてこのようにして、ビットＤ１がこのシーケンスの右端の外にローティトされ、それと共に外にローティトされたビットＤ１はこのシーケンスの左端（したがって先行するビットＤ０）に自動次行送り（すなわちローティト）される。
【００２１】
ＲＯＴＡＴＥ  ＳＴＡＧＥ３について詳細に考察するならば、それはＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲからの４ビットの制御信号Ｃ３によって制御され、そしてＲＯＴＡＴＥ  ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲはビットＬ［２：１］およびＲ［２：１］（およびそれらの補数）を受け取ることを想起する。式１を完成することに関連して、ＲＯＴＡＴＥ  ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲはＬＸ［２：１］とＲ［２：１］を加算し、ＳＴＡＧＥ４  ＣＯＮＴＲＯＬＬＥＲに対するＣＡＲＲＹの表明された状態を設定するために用いられるその和のＭＳＢロケーションからのなんらかの桁上げと共に２ビットの和を形成する。こよようにして、ＬＸ［２：１］とＲ［２：１］とを加算することによって生成される種々の可能性は、ＣＡＲＲＹおよびその補数ＣＡＲＲＹＸの結果として得られる状態と共に、次の表１に示されている通りである。
【００２２】
【表１】
2004206720.tif 000003
【００２３】
それに加えて、ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲによって生成される和の２つのビットは制御信号Ｃ３の状態を決定する。具体的に言えば、ＬＸ［２：１］＋Ｒ［２：１］によって得られる４つの異なる和のおのおのに対して表明される異なるビットと共に、Ｃ３の中の４つのビットの１つだけが表明されるようにこの和が復号化される。したがって、これらの４つの組合わせに対する真理値表は次の表２に示されている通りである。
【００２４】
【表２】
2004206720.tif 000004
【００２５】
最後に、ＲＯＴＡＴＥ  ＳＴＡＧＥ３は第２および第３の最下位ビット位置に応答するために、表２の中の和のおのおのは因子の２倍に対応する、すなわち、２進値の意味での和００、０１、１０および１１のおのおのは１０進値の０、２、４および６にそれぞれ対応する。したがって、Ｃ３の値に応答して、ＲＯＴＡＴＥ  ＳＴＡＧＥ３は、Ｃ３のそれぞれの指示に応じてそして次の表３に示されているように、その３２ビットの入力データの引数を０、２、４または６のビット位置のいずれかのビット位置距離にローティトする。
【００２６】
【表３】
2004206720.tif 000005
【００２７】
ＲＯＴＡＴＥ  ＳＴＡＧＥ３の動作の前記の考察をさらに理解するために、図６は図１の例の中のシフトの引数に対するＲＯＴＡＴＥ  ＳＴＡＧＥ３の動作を示している、すなわち、ここではＬは１０進値６に等しくそしてＲは１０進値１０に等しく、これは２進値でＬ＝００１１０およびＲ＝０１０１０およびＬＸ＝１１００１を意味する。したがって、第２および第３の最下位の２進ビット位置はＬＸ［２：１］＝００およびＲ［２：１］＝０１である。したがって、表１から和Ｌ［２：１］＋Ｒ［２：１］＝０１およびＣＡＲＲＹ＝０である。したがって、表２からＣ３＝００１０、および表３からＣ３の値は２ビット位置の右ローティションを生ずる。したがって、図６はその左側に、ＲＯＴＡＴＥ  ＳＴＡＧＥ２からＲＯＴＡＴＥ  ＳＴＡＧＥ３に対して入力として受け取られた３２ビットのデータの引数Ｄ［３１：０］を示し、そして図６は右側に、２ビット位置の右ローティションの後の結果を示している。したがって、これらのビットは２回右にローティトされ、したがってビットＤ３およびＤ２はこのシーケンスの右端の外にローティトされ、それと共に外にローティトされたＤ３およびＤ２はこのシーケンスの左側に自動次行送りされる、したがってビットＤ１の前に送られる。
【００２８】
ＲＯＴＡＴＥ  ＳＴＡＧＥ４を詳細に考察するならば、それはＳＴＡＧＥ４  ＣＯＮＴＲＯＬＬＥＲからの４ビットの制御信号Ｃ４によって制御され、そしてＳＴＡＧＥ４  ＣＯＮＴＲＯＬＬＥＲはビットＬ［４：３］およびＲ［４：３］（およびそれらの補数）の両方を受け取ることを想起する。式１を達成することに関連して、ＳＴＡＧＥ４  ＣＯＮＴＲＯＬＬＥＲはＬＸ［４：３］とＲ［４：３］とを加算し、そしてまたＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲからの表明されたどんなＣＡＲＲＹも報告した２ビットの和を形成する。数学的には、ＬＸ［４：３］とＲ［４：３］との和に対して桁上げを付加することができるが、しかし後で詳細に説明するように好ましい実施例では、スピードを増大するために、ＬＸ［４：３］とＲ［４：３］との和のみから結果として得られるＣ４の復号化された値を変更するために桁上げがその代わりに備えられる。ＬＸ［４：３］とＲ［４：３］との和を先ず考察するならば、そしてＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲからのＣＡＲＲＹを一時的に考察しないならば、ＬＸ［４：３］とＲ［４：３］とのその和のＭＳＢのロケーションからのどの桁上げも無視することができる。それは、３２個の位置のシフトに対応する２進数の第６のビットの位置の中のセット・ビットを表すからである。けれども、好ましい実施例は３２ビットのデータの引数に向けられているので、その場合には３２個の位置のシフトは入力と同じ値に単に戻るであろう、すなわち、この構成はモジュロ３２構造である。したがって、この第６のビット位置の中に桁上げビットを保持または応答する必要はない。したがって、ＳＴＡＧＥ４  ＣＯＮＴＲＯＬＬＥＲによって生成された和の２ビットは制御信号Ｃ４の状態を決定する。この場合、ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲと同様に、ＬＸ［４：３］＋Ｒ［４：３］に対して可能な４つの異なる和のおのおのに対して表明される異なるビットと共に、Ｃ４の中の４つのビットの１つだけが表明されるようにこの和が再び復号化される。これらの組み合わせに対する表は表２に示されたものと同じであるが、しかしここではシフトの引数ＬおよびＲの最上位ビット位置（すなわち、第４および第５のビット）に適用される。けれども、ＲＯＴＡＴＥ  ＳＴＡＧＥ４は第４および第５の桁ビットに応答する。この時表２の和のおのおのは、ＲＯＴＡＴＥ  ＳＴＡＧＥ４に適用される時、因子の８倍に対応する、すなわち、２進値の意味における和００、０１、１０、１１のおのおのはそれぞれ１０進値の０、８、１６および２４に対応する。したがってＣ４の値に応答して、ＲＯＴＡＴＥ  ＳＴＡＧＥ４は、Ｃ４のそれぞれの指示に応じてそして次の表４．１に示されているように、その３２ビットの入力データの引数を０個、８個、１６個または２４個のいずれかのビット距離だけシフトする。
【００２９】
【表４】
2004206720.tif 000006
【００３０】
けれども、表４．１からの回転に加えて、ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲから生成されることができるＣＡＲＲＹにＳＴＡＧＥ４  ＣＯＮＴＲＯＬＬＥＲはまた応答することを想起する。もし左および右のシフトの引数の値の与えられた組に対してこのようなＣＡＲＲＹが生成されないならば、その場合には、ＳＴＡＧＥ４のローティションは前記の表４．１に示された通りである。けれども、もしＣＡＲＲＹがＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲによって生成されるならば、その場合には、そのＣＡＲＲＹに応答してその値を１ビットだけ左にローティトするようにＣ４の復号化された値を変更するのにその桁上げが用いられ、それにより、もしＣＡＲＲＹがＳＴＡＧＥ４  ＣＯＮＴＲＯＬＬＥＲによってＬＸ［４：３］とＬ［４：３］との和の中にその代わりに加算されるならば得られるであろうのと同じ結果が成就する。したがって、制御信号Ｃ４に関する効果は次の表４．２に示されている通りである。
【００３１】
【表５】
2004206720.tif 000007
【００３２】
ＲＯＴＡＴＥ  ＳＴＡＧＥ４の動作の前記説明をさらに理解するために、図７は図１の例のシフトの引数値に対するＲＯＴＡＴＥ  ＳＴＡＧＥ４の動作を示している。ここで、Ｌは１０進値６に等しくおよびＲは１０進値１０に等しい。そしてそれぞれの２進値はＬ＝００１１０およびＲ＝０１０１０およびＬＸ＝１１００１である。したがって、第４および第５の最下位２進ビット位置はＬＸ［２：１］＝１１およびＲ［２：１］＝０１である。これらの２つの値により和ＬＸ［４：３］＋Ｒ［４：３］＝００が得られ、そしてこの例ではＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲによってＣＡＲＲＹは提供されない。このように、表４．１および表４．２から、この場合にはＣ４＝０００１である。さらに表４．１から、Ｃ４＝０００１の値は０ビット位置の右ローティションを生ずる。したがって、図７はその左側にＲＯＴＡＴＥ  ＳＴＡＧＥ３からＲＯＴＡＴＥ  ＳＴＡＧＥ４に対して入力として受け取られた３２ビットのデータの引数Ｄ［３１：０］が示され、そして図７の右側には右ローティションの後の結果が示されている。けれどもこの例では、右ローティションは０ビット位置であり、したがって出力値は入力と同じである。
【００３３】
データ・ローティト・ユニット２００の動作の前記考察から、当業者には分かるように、それは図１の例に関連して前記で説明した２つの独立なシフトによって達成されたのと同じビット位置に配置される結果を達成する。例えば、図１の例（すなわち、Ｌ＝６、Ｒ＝１０）と類似の場合に対して、図４ないし図７はＲＯＴＡＴＥ  ＳＴＡＧＥ１ないしＲＯＴＡＴＥ  ＳＴＡＧＥ４の動作を示している。したがって、図１からの右にシフトされた値ＶＲ１を図７の結果として生ずる出力と比較することにより、当業者には分かるように、図１からの２２個のデータ・ビットＤ４ないしＤ２５は図７のＯＵＴＰＵＴの中の同じビット位置に最終的に配置される。けれども、付加的に注目されることとして、図７のＯＵＴＰＵＴは先行するデータ・ビット（すなわち、Ｄ３ないしＤ０とそれに続くＤ３１ないしＤ２６）を有すること、一方、図１からの右にシフトされた値ＶＲ１はゼロ（または符号拡張）によって先行されることにに注意されたい。したがって、もし必要ならば、先行するデータ・ビットを除去するために、ゼロの値でまたはこのようなビットを適切に符号拡張する他の回路で先行するビットのおのおのを論理的にＡＮＤ演算する論理マスクを含種々の方式で実現することができるマスキング機能のような適切な機能を、当業者は容易に設置することができる。ＯＵＴＰＵＴのＭＳＢの中の１０個のゼロ・ビットまたは符号拡張ビットを提供することに関して図７のＯＵＴＰＵＴをさらに変更するような、なお別の好ましい実施例が後で詳細に説明される。
【００３４】
図４ないし図７ではＲ＞Ｌである図１の例に対するデータ・ローティト・ユニット２００の動作が示されたが、Ｌ＞Ｒである図２の例は、次に図８ないし図１１と関連して考察されるように、データ・ローティト・ユニット２００によってまた容易に実行される。前記の例および図４ないし図７に関する付随する細部が与えられる時、当業者には２つの例の間には種々の類似する細部のあることが容易に分かるはずであるから、図８ないし図１１に関しは考察をさらに簡単に行うことにする。
【００３５】
図２の例において、Ｌ＝１６およびＲ＝８であることを想起する。したがって、データ・ローティト・ユニット２００の動作の際、２進値はＬ＝１００００、ＬＸ＝０１１１１およびＲ＝０１０００である。次に、これらの２進値およびＲＯＴＡＴＥ  ＳＴＡＧＥのおのおののそれぞれのローティションを図８ないし図１１に関連して調べる。先ず、ＲＯＴＡＴＥ  ＳＴＡＧＥ１は１ビット位置だけ右にローティトする、すなわちＬＸ［０］＝１であるために右への１ローティション回転がある。この結果は図８に示されている。この場合には、Ｄ３１ないしＤ０のＲＯＴＡＴＥ  ＳＴＡＧＥ１に対するビット入力は１ビット位置だけローティトされ、それによりビットＤ０が外にシフトされ、そしてビットＤ３１に先行するように自動次行送りされる。次に、ＲＯＴＡＴＥ  ＳＴＡＧＥ２は右に１ビット位置ローティトする。ここで、Ｒ［０］＝０であるがしかし、ＲＯＴＡＴＥ  ＳＴＡＧＥ２は式１の「＋１」の要素により１つの右ローティションを加えることを想起する。それにより、図９の例において１ビット位置の右ローティションを生ずる。したがって図９に示されているように、ビットＤ０およびＤ３１ないしＤ１はいったん右にローティトされ、それによりビットＤ１が外にシフトされそしてビットＤ３０に先行するように自動次行送りされる。次に、ＲＯＴＡＴＥ  ＳＴＡＧＥ３はＬＸ［２：１］＋Ｒ［２：１］＝１１＋００＝１１に応答して右に６位置ローティトする。この結果は図１０に示されている。図１０では、ビットＤ１およびＤ０およびＤ３１ないしＤ２は６ビット位置だけ右にローティトされ、それによりビットＤ７ないしＤ２が外にシフトされそしてビットＤ１に先行するように自動次行送りされる。最後に、ＲＯＴＡＴＥ  ＳＴＡＧＥ４はＬＸ［４：３］＋Ｒ［４：３］＝０１＋０１＝１０に応答して右に１６位置ローティトする。この結果は図１１に示されている。図１１では、ビットＤ７ないしＤ０およびＤ３１ないしＤ８は１６ビット位置だけ右にローティトされ、それによりビットＤ２３ないしＤ８が外にシフトされそしてビットＤ７に先行するように自動次行送りされる。このように、図２からの右にシフトされた値ＶＲ２と図１１の結果として得られる出力とを比較することにより、図２からの１６個のデータ・ビットＤ１５ないしＤ３０は図１１のＯＵＴＰＵＴの中の同じビット位置に最終的に配置されることが当業者には分かるであろう。さらに、図７に関連して前記で考察した場合のように、残りのビットはマスクされることができる、またはそうでなければゼロ・ビットまたは符号拡張ビットのような適切な他の値になるために操作されることができる。
【００３６】
前記の説明から、例えば３２ビットであるデータの引数に関して、好ましい実施例は２つの独立で反対方向のシフトによって達成されるような等価なビット位置決定を含む結果を達成することが示された。この場合には、シフトの量はそれぞれのシフト引数によって指図される。全体のデータの引数の分離したシフトよりはむしろ、好ましい実施例はその代わりに多数のローティト・ステージを用いる。この場合には、２つのシフト引数の少なくとも１つの一部分だけに応答して、ステージのおのおののローティションの距離が制御される。換言すれば、ＲＯＴＡＴＥ  ＳＴＡＧＥ１およびＲＯＴＡＴＥ  ＳＴＡＧＥ２のおのおのはＬおよびＲのシフトの引数のそれぞれの一部分、すなわちビット［０］、に関してだけデータの引数をローティトする。さらに、ＲＯＴＡＴＥ  ＳＴＡＧＥ３はＬとＲのシフト引数の両方の一部分、すなわちビット［２：１］、に関してだけデータの引数をローティトする。最後に、ＲＯＴＡＴＥ  ＳＴＡＧＥ４は、ＳＴＡＧＥ３からの桁上げビットに応答すると共に、ＬとＲのシフト引数の両方の一部分、すなわちビット［４：３］、に関してだけデータの引数をローティトする。種々のステージを実現するための好ましい実施例の概要により下記でさらに分かるように、シフトの引数の部分への分類およびこのような部分でそれぞれのステージを制御することにより、処理量を大幅に改良することが可能になる。そこでは、完成したシフト（またはローティト）動作のおのおのは、２つの独立なシフト動作のおのおのがそれぞれのシフトの引数の全体に十分に応答してデータの引数をシフトするという２つの独立なシフト動作よりも、高速を達成することができる。
【００３７】
図１２は、図３のＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲを構成するための好ましい実施例の論理図を示している。ここで、図１２の中の種々の論理素子は周知の静的論理回路を用いる当業者により容易に構成される。導入として、ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲは機能的に、ＬＸ［２：１］およびＲ［２：１］から成るＬおよびＲのシフトの引数値の部分の加算を実行することを想起する。好ましい実施例では、ＬおよびＲのシフトの引数値のこれらの部分から可能な入力の組み合わせのおのおのに対して適切な出力得るために、この加算は論理回路により果たされる。導入として、図１２のＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲの中において、論理ゲートのセット２１０によりこれらの２つの部分のそれぞれの最下位ビットの加算に論理的に等価な動作が得られる。すなわち、それによりビットＬ［１］およびＲ［１］に関する出力が得られる。一方、論理ゲートのセット２２０によりこれらの２つの部分のそれぞれの最上位ビットの加算に論理的に等価な動作が得られる。すなわち、それによりビットＬ［２］およびＲ［２］に関する出力が得られる。シフトの引数Ｌに関して、図１２および残りの概要図の多くは、その補数ＬＸと対抗するＬのビットをまた示している。この方式はＲの個々のビットの対応する使用において明快でありそして整合的である。そして式１の中のＬＸの観点において、残りの概要図について外部からＬを反転することができることが当業者には分かるはずである。そのことを実行する際、残りの概要図は式１および前記で説明したブロック線図のＲ＋ＬＸ＋１の方式を達成するであろう。最後に、セット２１０およびセット２２０からの出力は復号化セット２３０によって復号化される。それにより、ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲから４ビットの制御信号Ｃ３が得られる。これらの論理装置のセットのおのおのは下記で説明される。
【００３８】
論理装置の組２１０を考察するならば、その論理回路はＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲに対して前記で考察した機能に関して得られ、そしてその組によって処理されるビットＬ［１］およびＲ［１］にさらに焦点を合わせることによって得られる。先ず、ビットＬ［１］およびＲ［１］はビットの組Ｌ［２：１］およびＲ［２：１］としてここで見ることができるそれぞれの部分であることに注目する。この場合、セット２１０は２ビットの部分Ｌ［２：１］およびＲ［２：１］のおのおのの中の最下位ビットの加算に等価な動作が得られると考えることができる。したがって、ビットＬ［１］およびＲ［１］のおのおのは０または１のいずれかの１０進値に対応し、そしてＬ［１］とＲ［１］との加算によって得られる可能な和は１０進値の０、１または２のいずれかである。したがって、これらの３つの可能な和に対応する３つの異なる状態を論理装置のセット２１０によって実現することができる。具体的に言えば、１０進値０の和はＬ［１］とＲ［１］との両方が０である時にのみ得られる。このような条件は次の式２におけるような論理形式で記述することができる。
【００３９】
和０は  ＬＸ［１］  ＡＮＤ  ＲＸ［１］  に対して起こる                    式２
【００４０】
次に、１０進値１の和は、Ｌ［１］＝０で一方Ｒ［１］＝１であるか、またはＬ［１］＝１で一方Ｒ［１］＝０であるかのいずれかの時にのみ得られる。このような条件は次の式３におけるような論理形式で記述することができる。
【００４１】
和１は  （ＬＸ［１］  ＡＮＤ  Ｒ［１］）ＯＲ（Ｌ［１］  ＡＮＤ  ＲＸ［１］）  に対して起こる                                                              式３
【００４２】
最後に、１０進値２の和は、Ｌ［１］＝１およびＲ［１］＝１の両方が起こる時にのみ得られる。このような条件は次の式４におけるような論理形式で記述することができる。
【００４３】
和２は  （Ｌ［１］  ＡＮＤ  Ｒ［１］）  に対して起こる                    式４
【００４４】
式２ないし式４が展開されるならば、下記でさらに詳細に説明されるように、それらは論理装置のセット２１０の中で実現されることが当業者には容易に分かるであろう。
【００４５】
０に等しい和に対応することを想起する式２に関して、それは論理装置のセット２１０の下ぶに実現されている。具体的に言えば、反転入力を有するＡＮＤゲート２１０Ａ１がビットＬ［１］およびＲ［１］を受け取るように接続される。ここで、反転された入力とＡＮＤゲート２１０Ａ１との組み合わせにより論理ＮＯＲ動作が得られることは当業者には分かるであろう。したがって、設置の際には、単一のＮＯＲゲートを用いることができる。これらの入力は式２の中の入力と同じである。ただし、ＡＮＤゲート２１０Ａ１は反転された入力を有しているために、それらの補数が用いられている。さらにこのことに関して、十分な駆動パワーを得るためにおよび入力ビットのおのおのに関する負荷を除去するために、論理装置のセット２１０の他の入力ゲートに用いられているので、反転された入力の使用が好ましいことに注目されたい。慣例として、ビットの組Ｌ［２：１］およびＲ［２：１］の最下位ビットの和がゼロになる時の場合をしたがってＡＮＤゲート２１０Ａ１が表しているので、この場合にはＡＮＤゲート２１０Ａ１の出力はＬＳ０として示される。ここで、「ＬＳ」は最下位ビットを示し、そして「０」は０の和を示す。
【００４６】
１に等しい和に対応することを想起する図３に関して、論理装置のセット２１０の中央にそれが備えられる。具体的に言えば、反転された入力を有するＡＮＤゲート２１０Ａ２はビットＬ［１］およびＲＸ［１］を受け取るために接続される。これらの入力は式３の中の第１の２つの論理信号と同じである。この場合には、ＡＮＤゲート２１０Ａ２が反転された入力を有するので、再び補数が用いられる。同様に、反転された入力を有するＡＮＤゲート２１０Ａ３はビットＬＸ［１］およびＲ［１］を受け取るために接続される。この場合には、これらの入力は式３の中の第２の２つの論理信号と同じである。ここで、ＡＮＤゲート２１０Ａ３が反転された入力を有するので、再び補数が用いられる。最後に、式３を完成するために、ＡＮＤゲート２１０Ａ２とＡＮＤゲート２１０Ａ３との出力がＯＲゲート２０１Ｏ１の入力に接続される。したがって慣例として、ビットの組Ｌ［２：１］およびＲ［２：１］のＬＳＢの和が１である時の場合をＯＲゲート２０１Ｏ１が表すから、その時にはＯＲゲート２０１Ｏ１の出力はＬＳ１として示される。最後に、図１２の概要図および図示された他の概要図において、ＡＮＤゲート２１０Ａ２および２１０Ａ３がＯＲゲート２０１Ｏ１の入力に接触するように描かれていることに注目されたい。当業者には周知であるように、この描写が意図していることはこれらの３つのデバイスが単一のいわゆるＯＲ−ＡＮＤ−ＩＮＶＥＲＴゲートとして実現できることを示すことである。それにより、別々に構成されたゲートに比べて遅延が小さい。
【００４７】
２に等しい和に対応することを想起する式４に関して、論理装置のセット２１０の一番上にそれが実現される。具体的に言えば、反転入力を有するＡＮＤゲート２１０Ａ４がビットＬＸ［１］およびＲＸ［１］を受け取るために接続される。これらの入力は式４の入力と同じである。ただし、ＡＮＤゲート２１０Ａ４は反転された入力を有しているために、それらの補数が用いられている。ＡＮＤゲート２１０Ａ４と反転された入力との組み合わせは、再び単一のＮＯＲゲートとして設置することができる。したがって、最後に慣例として、ビットの組Ｌ［２：１］およびＲ［２：１］のＬＳＢの和は２である時の場合をしたがってＡＮＤゲート２１０Ａ４が表しているので、この場合にはＡＮＤゲート２１０Ａ４の出力はＬＳ２として示される。
【００４８】
論理装置のセット２２０を考察するならば、ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲに対して前記で考察した機能に関しておよびさらにそのセットにより処理されるビットＬ［２］およびＲ［２］に焦点を合わせることによって、その論理回路が得られる。先ず、ビットＬ［２］およびＲ［２］はまたビットの組Ｌ［２：１］およびＲ［２：１］の部分であることに注目する。ここでは、論理装置のセット２２０は２ビットの部分Ｌ［２：１］およびＲ［２：１］のおのおのの中でＭＳＢを加算することに等価なことが得られると考えることができる。さらに、ビットＬ［２］およびＲ［２］はビットの組Ｌ［２：１］およびＲ［２：１］に対する第２のビット位置にあるために、この場合にはビットＬ［２］またはＲ［２］のいずれかが設定される時、それは２の１０進値を表す。したがって、ビットＬ［２］またはＲ［２］のおのおのは０または２のいずれかの１０進値を表し、そしてＬ［２］とＲ［２］とを加算することによって得られる可能な和は１０進値の０、２または４のいずれかである。けれども、この和が４に到達する時、それはモジュロ４出力を表すために（下記で詳細に説明されるように、桁上げビットの別個の生成によりまた処理されるように）自動次行送りされる。したがって、これらの２つの可能な和に対応して、２つの可能な異なる状態だけが存在し、そしてそれらは論理装置のセット２２０によって実現される。具体的に言えば、Ｌ［１］およびＲ［１］の両方が１０進値０に等しい時またはＬ［１］およびＲ［１］の両方が１０進値２に等しい時のいずれかの時に、１０進値０の和が得られる。それは、自動次行送りによりこれが０の値を提供するからである。このような条件は、次の式５のような論理形式で記述することができる。
【００４９】
和０は  （ＬＸ  ＡＮＤ  ＲＸ）ＯＲ（Ｌ  ＡＮＤ  Ｒ）  に対して起こる
式５
【００５０】
次に１０進値２の和は、Ｌ［２］＝０で一方Ｒ［２］＝１である時、またはＬ［２］＝１で一方Ｒ［２］＝０である時のいずれかの時にのみ得られる。このような条件は、次の式６のような論理形式で記述することができる。
【００５１】
和２は  （ＬＸ［２］  ＡＮＤ  Ｒ［２］）ＯＲ（Ｌ［２］  ＡＮＤ  ＲＸ［２］）  に対して起こる                                                              式６
【００５２】
式５および式６が展開されるならば、下記でさらに詳細に説明されるように、これらは論理装置のセット２２０の中で容易に実現できることは当業者には容易に分かるであろう。
【００５３】
０に等しい和に対応することを想起する式５に関連して、それは論理装置のセット２２０の下部に実現されている。具体的に言えば、反転された入力を有するＡＮＤゲート２２０Ａ１はビットＬ［２］およびＲ［２］を受け取るために接続される。これらの入力は式５の中の第１の２つの論理信号と同じである。ここで、ＡＮＤゲート２２０Ａ１が反転された入力を有するので、再び補数が用いられる。同様に、反転された入力を有するＡＮＤゲート２２０Ａ２はビットＬＸ［２］およびＲＸ［２］を受け取るために接続される。ここにおいて、これらの入力は式５の第２の中の２つの論理信号と同じである。ここで、ＡＮＤゲート２２０Ａ２が反転された入力を有するので、再び補数が用いられる。反転された入力を有するこのＡＮＤゲートは単一のＮＯＲゲートとして実現することができる。最後に、式５を完成するために、ＡＮＤゲート２２０Ａ１および２２０Ａ２の出力がＯＲゲート２２０Ｏ１の入力に接続される。したがって、ＯＲゲート２２０Ｏ１はビットの組Ｌ［２：１］およびＲ［２：１］のＭＳＢの和が０である時の場合を表しているために、この時には慣例として、ＯＲゲート２２０Ｏ１の出力はＭＳ０として示される。
【００５４】
２に等しい和に対応することを想起する式６に関連して、それは論理装置のセット２２０の上部に実現される。具体的に言えば、反転された入力を有するＡＮＤゲート２２０Ａ３はビットＬ［２］およびＲＸ［２］を受け取るために接続される。これらの入力は式６の中の第１の２つの論理信号と同じである。ここで、ＡＮＤゲート２２０Ａ３が反転された入力を有するので、再び補数が用いられる。同様に、反転された入力を有するＡＮＤゲート２２０Ａ４はビットＬＸ［２］およびＲ［２］を受け取るために接続される。ここにおいて、これらの入力は式６の中の第２の２つの論理信号と同じである。ここで、ＡＮＤゲート２２０Ａ４が反転された入力を有するので再び補数が用いられる。最後に、式６を完成するために、ＡＮＤゲート２２０Ａ３および２２０Ａ４の出力がＯＲゲート２２０Ｏ２の入力に接続される。したがって、反転された入力を有するＡＮＤゲートの組み合わせとそれに続くＯＲゲートとにより、単一のＯＲ−ＡＮＤ−ＩＮＶＥＲＴゲートとして実現されることが好ましい。したがって、ＯＲゲート２２０Ｏ２はビットの組Ｌ［２：１］およびＲ［２：１］のＭＳＢの和が２である時の場合を表しているので、この時には慣例として、ＯＲゲート２２０Ｏ２の出力はＭＳ２として示される。
【００５５】
次に復号化セット２３０を考察するならば、それは論理装置のセット２１０および２２０からの出力に応答して４ビットの制御信号Ｃ３を供給する。さらにこのことに関して、信号の出力および入力は標識付けされるが、しかし図を簡単にするために図１２では、論理装置のセット２１０および２２０から復号化セット２３０への実際の接続は省略されている。それは、図を過度に複雑にしないためである。次に復号化セット２１０を考察するならば、その論理回路は制御信号Ｃ３に関して前記で考察した機能に関して得られる。具体的に言えば、Ｃ３は４ビットの制御信号を供給することを想起する。この場合には、これらの４ビットの中の１つだけが一度にイネーブルにされ、そして特定のこのイネーブルにされたビットはその入力を０ビット、２ビット、４ビットまたは６ビットのいずれかだけにシフトするためにＲＯＴＡＴＥ  ＳＴＡＧＥ３に対する指示に対応する。ここで、このシフトの量はＬ［２：１］およびＲ［２：１］の和に応じて変わる。具体的に言えば、ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲはモジュロ４のシステムであるから、したがってその入力の和は１０進値の０、１、２または３のいずれかである。したがって、これらの和のおのおのはＲＯＴＡＴＥ  ＳＴＡＧＥ３の中のそれぞれのシフト制御に対応し、そして０ビット、２ビット、４ビットまたは６ビットのいずれかの制御信号Ｃ３を通して達成される。したがって、復号化セット２３０の論理装置を得るために、制御信号Ｃ３の線路Ｃ３．０を表明するために０の和を提供する入力の組合せのおのおのが復号化されなければならなく、それによりＲＯＴＡＴＥ  ＳＴＡＧＥ３によりゼロ・ビット位置のローティションが指示される。一方、制御信号Ｃ３の線路Ｃ３．１を表明するために１の和を提供する入力の組合せのおのおのが復号化されなければならなく、それによりＲＯＴＡＴＥ  ＳＴＡＧＥ３により２つのビット位置の右ローティションが指示される。一方、制御信号Ｃ３の線路Ｃ３．２を表明するために２の和を提供する入力の組合せのおのおのが復号化されなければならなく、それによりＲＯＴＡＴＥ  ＳＴＡＧＥ３により４つのビット位置の右ローティションが指示される。最後に、制御信号Ｃ３の線路Ｃ３．３を表明するために３の和を提供する入力の組み合わせのおのおのが復号化されなければならなく、それによりＲＯＴＡＴＥ  ＳＴＡＧＥ３により６つのビット位置の右ローティションが指示される。実際、これらの得ることができる種々の和および対応する必要な右ローティションはまた、論理装置のセット２１０および２００からの最下位ビットＬＳｎおよび最上位ビットＭＳｎの状態によって特徴づけることができる。具体的には、次の表４．３は、これらの２つのビットの可能な状態のおのおの、およびこれらの状態によって得られる和、およびおのおのの和に対応する４ビットの制御信号Ｃ３に対する要求された値を示している。
【００５６】
【表６】
2004206720.tif 000008
【００５７】
これらの組合せのおのおのは下記においてさらに得られる。
【００５８】
復号化セット２３０の下部について考察するならば、それは０の和を提供する入力の組合せのおのおのに対する論理装置を備えている。そしてそれはそれにより制御信号の線路Ｃ３を表明するために復号化されてＲＯＴＡＴＥ  ＳＴＡＧＥ３によってゼロ位置のシフトを指示する。具体的に言えば、セット２２０に戻るならばその入力が総計で０である時にその出力ＭＳ０が表明されること、およびセット２１０に戻るならばその入力が総計で０である時にその出力ＬＳ０が表明されることを想起する。したがって、これらの出力の両方が表明される時、その場合にはＬ［２：１］およびＲ［２：１］の最下位ビットと最上位ビットとの和がまたゼロに等しく、したがって、ゼロ位置の右ローティションを指示することが望ましい、すなわち出力Ｃ３．０を表明することが好ましい。したがって、このような条件は下記の式７ａのような論理形式で記述することができる。
【００５９】
和０は    ＬＳ０  ＡＮＤ  ＭＳ０    に対して起こる                      式７ａ
【００６０】
けれども、ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲは部分的にモジュロ４のシステムであることを想起するならば、その場合には式７ａの条件に加えて、セット２１０および２２０のおのおのは２（すなわち、ＬＳ２およびＭＳ２が表明される時）の出力を供給する。その時には、これらの２つの出力に対応する和は４に等しく、それにより０の総計に戻るように自動次行送りされる。したがって、これらの付加的な条件を加えるために、式７ａは次の式７ｂに示されているように書き直すことができる。
【００６１】
和０は  （ＬＳ０  ＡＮＤ  ＭＳ０）ＯＲ（ＬＳ２  ＡＮＤ  ＭＳ２）  に対して起こる                                                                        式７ｂ
【００６２】
次に、出力Ｃ３．０を供給するデバイスを考察するならば、当業者にはそれらは式７ｂの論理を実現することが分かるであろう。具体的に言えば、式７ｂの第１の２つの論理状態に関しては、これらはＡＮＤゲート２３０Ａ１に対して入力として接続され、そして式７ｂの第２の２つの論理状態に関しては、これらはＡＮＤゲート２３０Ａ２に対して入力として接続される。ＡＮＤゲート２３０Ａ１および２３０Ａ２のおのおのの出力は、ＮＯＲゲート２３０Ｎ１に対する入力として接続される。けれども、式７ｂはＮＯＲゲート２３０Ｎ１によって得られるようなＮＯＲよりもむしろＯＲ機能を要求することに注目されたい。けれども、さらにこのことに関して、ＮＯＲゲート２３０Ｎ１の出力は反転器２３０ＩＮ１に対する入力として接続される。それにより、ＮＯＲゲート２３０Ｎ１と組み合わされて論理的なＯＲ機能と等価な機能が得られる。ＡＮＤゲートとＮＯＲゲートとのこの組み合わせは、単一のＡＮＤ−ＯＲ−ＩＮＶＥＲＴゲートとして実現されることが好ましい。けれども付加的な利点として、反転器２３０ＩＮ１を含むことにより、ＲＯＴＡＴＥ  ＳＴＡＧＥ３にそれが送られる前に信号Ｃ３．０に対して信号のバッファリングが得られる。下記でさらに分かるように、同様のバッファリングが制御信号Ｃ３の中の残りの信号に対して得られる。
【００６３】
復号化セット２３０の説明を続けるならば、それはまた１の和を供給する入力の組み合わせのおのおのに対する論理装置を有する。それにより、これらは線路Ｃ３．１の存在を主張するために復号化されてＲＯＴＡＴＥ  ＳＴＡＧＥ３による２ビット位置の右回転を指示する。組２１０および２００に戻るならばそして表４．３に示されているように、おのおのから総計１になる出力の唯一の組み合わせはＬＳ１が主張されそしてＭＳ０が主張される時に起こる、すなわちその時にＬ［２：１］とＲ［２：１］との和の２個のＬＳＢが１に等しい時に起こる。したがって、出力Ｃ３．１を主張することによって２ビット位置の右回転を指示することが望ましい。したがって、このような条件は次の式８のような論理形式で記述することができる。
【００６４】
和１は  ＬＳ１  ＡＮＤ  ＭＳ０  に対して起こる                            式８
【００６５】
次に、出力Ｃ３．１を供給するデバイスを考察するならば、当業者はこれらのデバイスは式８の論理を実施することが分かるであろう。具体的に言えば、式８の中の２つの論理状態がＮＡＮＤゲート２３０ＮＡ１に入力として接続される。けれども、式８はＮＡＮＤゲート２３０ＮＡ１によって得られるようなＮＡＮＤよりはむしろＡＮＤ機能を要求する。けれども、さらにこのことに関して、ＮＡＮＤゲート２３０ＮＡ１の出力は反転器２３０ＩＮ２に入力として接続される。それにより、ＮＡＮＤゲート２３０ＮＡ１と組み合わされて論理ＡＮＤ機能と等価な機能が得られる。また前記で説明したように、反転器２３０ＩＮ２を含むことによりＲＯＴＡＴＥ  ＳＴＡＧＥ３にそれが送られる前に信号バッファリングが得られる。
【００６６】
復号化セット２３０の考察を続けるならば、それはまた２の和を供給する入力の組み合わせのおのおのに対する論理装置を含んでいる。そしてそれにより復号化されて線路Ｃ３．２を表明し、ＲＯＴＡＴＥ  ＳＴＡＧＥ３によって４つのビット位置のローティションを指示する。セット２１０および２２０に戻るならば、そして表４．３に示されているように、和が２になるような出力の２つの組合せがある。具体的に言えば、第１の組合せとして、ＭＳＢの総計が０に対応するＭＳ０が表明される時そして同時にＬＳＢの総計が２に対応するＬＳ２が表明される時であり、その場合には２つの和は１０進値の２である。さらに、第２の組合せとして、ＭＳＢの総計が１０進値２に対応するＭＳ２が表明される時そして同時にＬＳＢの総計が０に対応するＬＳ０が表明される時であり、その場合には２つの和は１０進値の２である。いずれの場合にも、出力Ｃ３．２を表明することによって４つのビット位置の右ローティションを指示することが望ましい。したがって、このような条件は次の式９のように記述することができる。
【００６７】
和２は  （ＭＳ０  ＡＮＤ  ＬＳ２）ＯＲ（ＭＳ２  ＡＮＤ  ＬＳ０）  に対して起こる                                                                          式９
【００６８】
次に、出力Ｃ３．２を供給するデバイスを考察するならば、これらのデバイスは式９の論理を実現することが当業者には分かるであろう。具体的に言えば、式９の中の第１の２つの論理状態はＡＮＤゲート２３０Ａ３に対して入力として接続され、そして式９の中の第２の２つの論理状態はＡＮＤゲート２３０Ａ４に対する入力として接続される。さらに、ＡＮＤゲート２３０Ａ３および２３０Ａ４のおのおのの出力はＮＯＲゲート２３０Ｎ２に対して入力として接続される。ＮＯＲゲート２３０Ｎ２は反転器２３０ＩＮ３に対してその出力を供給することと組み合わせて、式９からのＯＲ機能に論理的に等価な機能と、また前記で説明したバッファリングの特徴とが得られる。それに加えて、ＡＮＤゲートとＮＯＲゲートとのこの組合せは単一のＡＮＤ−ＯＲ−ＩＮＶＥＲＴゲートとして実現されることが好ましい。
【００６９】
復号化セット２３０を完成する時、それはまた１０進値３の和を供給する入力の組合せのおのおのに対する論理を含んでいる。それにより、それが復号化されて線路Ｃ３．３が表明されてＲＯＴＡＴＥ  ＳＴＡＧＥ３による６つのビット位置のローティションを指示する。セット２１０および２２０に戻るならばそして表４．３に示されているように、そのおのおのから１０進値で総計３である出力の唯一の組み合わせは、ＬＳ１が表明されそしてＭＳ２が表明される時に起こる、すなわち、その時にＬ［２：１］とＲ［２：１］との和の２個のＬＳＢが３に等しい時に起こる。したがって、それは出力Ｃ３．３を表明することによって６つのビット位置の右ローティションを指示することが望ましい。したがって、このような条件は次の式１０のような論理形式で記述することができる。
【００７０】
和３は    ＬＳ１  ＡＮＤ  ＭＳ２    に対して起こる                      式１０
【００７１】
次に、出力Ｃ３．３を供給しそしてそれにより式１０の論理を実現するデバイスを考察するならば、式１０の中の２つの論理状態はＮＡＮＤゲート２３０ＮＡ２に対して入力として接続される。さらに、ＮＡＮＤゲート２３０ＮＡ２の出力は反転器２３０ＩＮ４に対して入力として接続される。したがって、反転器２３０ＩＮ４はＮＡＮＤゲート２３０ＮＡ２と組み合わされて、式１０からのＡＮＤ機能と論理的に等価な機能と、およびまた前記で説明したバッファリングの特徴とが得られる。
【００７２】
図１２はまた桁上げ発生器ブロック２４０を示している。この桁上げ発生器ブロック２４０は、図１３にさらに詳細に示されている。図１３および桁上げ発生器ブロック２４０を考察するならば、ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲに対して前記で考察した機能に関しておよびさらにこの制御装置によって処理されるビットＬ［２：１］およびＲ［２：１］に焦点を合わせることによって、その論理回路が得られる。全体的に言えば、ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲは２ビットの加算器として機能する（すなわち、１つの２ビットの量と他の２ビットの量とを加算するために動作することができる）。ここで図１２に関連して前記で考察したように、それは加算器それ自体によって供給されるのではなく、入力ビットＬ［２：１］およびＲ［２：１］の論理状態に基づく直接の論理回路によって供給されることが得られることが示された。したがって、同じ２ビットの加算器に対して、その加算器に対する桁上げビットを発生するために周知の原理を応用することができる。このような特徴を簡単に説明すれば、第１の２ビットの加数の単一のビットのおのおのを第２の２ビットの加数の対応する単一のビットに加算する時、これらの２つの単一のビットは４つの異なる２進値を取ることによって４つの異なる場合を得ることができる。すなわち、０および０、０および１、１および０または１および１、の４つの異なる場合を得ることができる。これらのビットを加算した結果が次の表５に示されている。
【００７３】
【表７】
2004206720.tif 000009
【００７４】
表５は、ケース４の場合は、すなわち両方の１ビットの加数が１に等しい時には、これらの加数単独で桁上げを生ずるので、桁上げが発生すると呼ばれる。
【００７５】
表５によって得られるように発生する桁上げの概念に加えて、ケース２およびケース３（すなわち、加数が０と１および１と０の場合）は桁上げが伝搬すると当業者には呼ばれている。その理由は、もしすぐ下位のビットに発生する桁上げがあるならば、その時には同じ桁上げがケース２およびケース３によって前方に伝搬するからである。さらに詳しく説明するために、例えば、ビット位置［０］および［１］を有する次の式１１の加算を考える。
【００７６】
１  ０
＋  ０  ０    
１  ０                                      式１１
【００７７】
式１２において、桁上げが伝搬するケース３は位置［１］の中のＭＳＢに示されている。けれども、位置［０］の中の次に下位のビット、すなわち０および０の値は桁上げを発生しない。したがって、ケース３のビットによって前方に伝搬する桁上げはない。次にそれとは対照的に、次の式１２を考える。
【００７８】
１
１  １
＋  ０  １    
１  ０  ０                                      式１２
【００７９】
式１１において再び、桁上げの伝搬がビット位置［１］に示される。けれどもここで、位置［０］の中の次に下位のビットは、すなわち１および１の値は桁上げを発生する。この桁上げは位置［１］の中のビット１および０に対して取られ、そして垂直上方向に示されている。けれどもこれらの値により、これらのビットは位置［２］に向けて上方にこの桁上げを効果的に伝搬する。したがって、表５からの伝搬ケース３はどのようにしてこの桁上げビットを次の最上位ビット位置に通過させるかが分かる。そして表５から、同じことがケース２に対して成り立つ。
【００８０】
前記の考察が与えられるならば、次に、１つの２ビットの量を加算する加算器に対して桁上げビットがいつ発生されるべきであるかを指示するための論理式を得ることができる。第１に、ケース４が提供される時、桁上げが常に発生することを表５は示している。第２に、ケース２または３が提供される時およびすぐ下位のビット位置に同時に桁上げが発生する時、桁上げがまた得られることを式１２が示している。したがって、これらの条件は次の式１３のように論理的に記述することができる。
【００８１】
桁上げ＝ケース１＋［（ケース２  ＯＲ  ケース３）ＡＮＤ  （先行するビット位置におけるケース４）］                                                        式１３
【００８２】
次に、ＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲがＬ［２：１］とＲ［２：１］を加算することに等価なことを供給することと、したがって桁上げ発生器２４０がこれらのビットに対して桁上げを提供することとを想起するならば、その時にはこれらの値は式１３の中に代入されて、次の式１４を得ることができる。
【００８３】
桁上げ＝（Ｌ［２］  ＡＮＤ  Ｒ［２］）ＯＲ［（Ｌ［２］  ＯＲ  Ｒ［２］）ＡＮＤ（Ｌ［１］  ＡＮＤ  Ｒ［１］）］                                          式１４
【００８４】
次に図１３の概要図を考察するならば、当業者には分かるように、ＣＡＲＲＹ信号に関して論理素子が式１４を実現し、それと一緒に、表明される時にＣＡＲＲＹ信号を高レベルに表明させＤＩＳＡＢＬＥ信号を実現する。具体的に言えば、式１４の中の第１の２つの状態を達成するために、Ｌ［２］およびＲ［２］がＡＮＤゲート２４０Ａ１に対して入力として接続される。けれども、式１４に示されているようにＡＮＤゲート２４０Ａ１の出力をＯＲゲートに接続するよりはむしろ、ＡＮＤゲート２４０Ａ１の出力をＮＯＲゲート２４０ＮＯ１に対して入力として接続することにより等価な機能が実現される。この場合には、ＤＩＳＡＢＬＥ信号はまたＮＯＲゲート２４０ＮＯ１に対して入力として接続され、そしてＮＯＲゲート２４０ＮＯ１の出力はＮＡＮＤゲート２４０ＮＡ２に対して入力として接続される。したがって、ＡＮＤゲート２４０Ａ１に接続される入力Ｌ［２］およびＲ［２］が真である時、その時にはＤＩＳＡＢＬＥ信号が表明される時にまた起こるように、ＣＡＲＲＹ信号が高レベルに表明される。また別の方式では、そしてこのまた別の方式が式１４の中の第１にリストされたＯＲ機能の機能的な実現である場合、ＯＲゲート２４０ＯＲ１およびＮＡＮＤゲート２４０ＮＡ１に応答してＣＡＲＲＹ信号は高レベルに表明されることができる。この場合には、これら２つのゲートはまた単一の複雑なゲートとして実現されることが好ましい。具体的に言えば、Ｌ［２］およびＲ［２］がＯＲゲート２４０ＯＲ１に対して入力として接続される。それにより、式１４の要素（Ｌ［２］  ＯＲ  Ｒ［２］）が実現され、そしてＯＲゲート２４０ＯＲ１の出力が、入力Ｒ［１］およびＬ［１］と一緒に、ＮＡＮＤゲート２４０ＮＡ１に対して入力として接続される。ゲート２４０ＮＡ１および２４０ＮＡ２のＮＡＮＤとＮＡＮＤの接続により、ＮＡＮＤゲート２４０ＮＡ１に対する入力のすべてが真である時、この時にはＣＡＲＲＹが表明される。
【００８５】
図１３はまた、ＣＡＲＲＹの補数、すなわちＣＡＲＲＹＸを発生するための論理装置の好ましい実施例を示している。この好ましい実施例では、ＣＡＲＲＹＸはＣＡＲＲＹ信号と同じ数のゲート遅延を用いて発生され、したがって両方の信号は同時に利用可能である。ＣＡＲＲＹ信号を供給する論理装置を理解するために、次に注目することは、表５のケース１は当業者には桁上げキル(carry kill)状態と呼ばれることである、すなわち２進数学においておよび２ビットの加算器に対して、たとえビットおよび桁上げキル状態がすぐ下位のビット位置にあっても、ケース１は桁上げもまた伝搬も許すこともないであろう。例えば、次の式１５のケースを考える。
【００８６】
１
０  １
＋  ０  １    
１  ０                                      式１５
【００８７】
式１５において、位置［０］の中のビットは桁上げを発生する。けれども、位置［１］の中のビットは桁上げキルである。したがって、位置［０］からの桁上げは位置［１］を越えて通過することはない、すなわち、位置［１］の中のビット値により、それらは桁上げを殺すと言われることをこの例が示している。したがって、ケースＣＡＲＲＹＸが表明されべきである１つの条件は、キルが２ビットの加数の最上位ビット位置に起こる時である。したがって、この条件は次の式１６ａに従って記述することができる。
【００８８】
ＣＡＲＲＹＸ＝（ＬＸ［２］  ＡＮＤ  ＲＸ［２］）                      式１６ａ
【００８９】
けれどもさらに、２つのビット位置の両方の位置の少なくとも１つの加数がゼロである時にはいつでも、桁上げがまた発生されないであろうことを当業者は確認することができる。したがって、この条件は次の式１６ｂのように記述することができる。
【００９０】
ＣＡＲＲＹＸ＝（ＬＸ［２］  ＯＲ  ＲＸ［２］）ＡＮＤ（ＬＸ［１］  ＯＲ  ＲＸ［１］）                                                                  式１６ｂ
【００９１】
このように、式１６ａおよび１６ｂの条件を組み合わせることにより、桁上げが起こらない場合、すなわちＣＡＲＲＹＸが表明されるべき時、を記述するために次の論理式１６ｃが形成される。
【００９２】
ＣＡＲＲＹＸ＝（ＬＸ［２］  ＡＮＤ  ＲＸ［２］）ＯＲ［（ＬＸ［２］  ＯＲ  ＲＸ［２］）ＡＮＤ（ＬＸ［１］  ＯＲ  ＲＸ［１］）］
式１６ｃ
【００９３】
図１３の概要図に戻るならば、当業者には分かるように、図１３の残りのゲートは、再びＤＩＳＡＢＬＥ信号と一緒に、式１６ｃの論理素子を実現する。このＤＩＳＡＢＬＥ信号はそれが表明される時、ＣＡＲＲＹＸ信号を高レベルに表明させる。具体的に言えば、式１６ｃの第１の２つの状態を達成するために、ＬＸ［２］およびＲＸ［２］がＡＮＤゲート２４０Ａ２に対して入力として接続される。けれども、式１６ｃに示されているようにＡＮＤゲート２４０Ａ２の出力をＯＲゲートに接続するよりはむしろ、ＡＮＤゲート２４０Ａ２の出力をＮＯＲゲート２４０ＮＯ２に入力として接続することによって等価な機能が実現される。この場合に、ＤＩＳＡＢＬＥ信号がまたＮＯＲゲート２４０ＮＯ２に対して入力として接続され、そしてＮＯＲゲート２４０ＮＯ２の出力がＮＡＮＤゲート２４０ＮＡ３に対して入力として接続される。したがって、ＡＮＤゲート２４０Ａ２に接続される入力ＬＸ［２］およびＲＸ［２］が真である時、その時には、ＤＩＳＡＢＬＥが表明される時にまた起こるように、ＣＡＲＲＹＸが高レベルに表明される。また別の方式では、ＯＲゲート２４０ＯＲ２およびＯＲゲート２４０ＯＲ３の両方からの高レベル信号に応答して、ＣＡＲＲＹＸ信号が高レベルに表明されることができる。具体的に言えば、ＬＸ［２］およびＲＸ［２］がＯＲゲート２４０ＯＲ２に対して入力として接続され、それにより式１６ｃの要素（ＬＸ［２］  ＯＲ  ＲＸ［２］）が実現し、そしてＯＲゲート２４０ＯＲ２の出力がＮＡＮＤゲート２４０ＮＡ４に対して入力として接続される。それに加えて、ＬＸ［１］およびＲＸ［１］がＯＲゲート２４０ＯＲ３に対して入力として接続される。それにより、式１６ｃの要素（ＬＸ［１］  ＯＲ  ＲＸ［１］）が実現され、そしてＯＲゲート２４０ＯＲ３の出力がＮＡＮＤゲート２４０ＮＡ４に対して入力として接続される。ゲート２４０ＮＡ４およびゲート２４０ＮＡ３のＮＡＮＤとＮＡＮＤの接続により、この場合にはＮＡＮＤゲート２４０ＮＡ４に対する入力のすべてが真である時、その時にはＣＡＲＲＹＸが表明される。もう一度、先行するゲートが統合され、そして単一の複合ゲートとして実現することができる。
【００９４】
図１４は、図３のＳＴＡＧＥ４  ＣＯＮＴＲＩＬＬＥＲを構成するための好ましい実施例のブロック線図および論理図である。先ず、ＳＴＡＧＥ４  ＣＯＮＴＲＩＬＬＥＲは２ビットの加算器であることを想起する。その時には、図１２に示されたＳＴＡＧＥ３  ＣＯＮＴＲＩＬＬＥＲの２ビット加算器によって用いられたのと（最終の出力反転器２３０ＩＮ１、２３０ＩＮ２、２３０ＩＮ３および２３０ＩＮ４はないけれども）同じ論理回路を用いることができ、したがって図１４を単純にするために、このような類似の回路が２１０′〜２３０′として示されたブロックの中に示されている。けれども、好ましい実施例では、ＳＴＡＧＥ３  ＣＯＮＴＲＩＬＬＥＲによって発生される任意の桁上げをまた説明しなければならないために、これらのブロックの出力はＲＯＴＡＴＥ  ＳＴＡＧＥ４に対する最終の制御信号Ｃ４を供給しない。このように、ブロック２１０′−２３０′の出力は単に予備的な信号に過ぎない。したがって、全体の信号Ｃ４′を形成するために、およびＳＴＡＧＥ４  ＣＯＮＴＲＩＬＬＥＲに対する入力としてまた示されているＣＡＲＲＹ信号およびＣＡＲＲＹＸ信号に応答してさらに変えることができることを示すために、おのおのにアポストリフィをつけて示される。図１４に示された残りの論理装置は、下記でさらに詳細に説明されるように、このような可能な信号の変化に向けられている。
【００９５】
ＲＯＴＡＴＥ  ＳＴＡＧＥ３とＲＯＴＡＴＥ  ＳＴＡＧＥ４との関係とそれらのそれぞれの制御装置とを想起するならば、ＳＴＡＧＥ３の中の桁上げはＳＴＡＧＥ４の和の中に増分をもたらすべきであることが示された。けれども前記で説明したように、ＳＴＡＧＥ３からのＣＡＲＲＹ信号はＳＴＡＧＥ４の和を変えることを有するよりはむしろ、その代わりに好ましい実施例ではそしてスピードを増大するために、ＬＸ［４：３］およびＲ［４：３］の和から単独で結果として生ずるＣ４の復号化された値を変えるために、桁上げがその代わりに提供される。したがって図１４において、Ｃ４はもともとは信号Ｃ４．０′、Ｃ４．１′、Ｃ４．２′およびＣ４．３′に復号化された形式で供給される。これらは、他の変更をなんらすることなく、ＲＯＴＡＴＥ  ＳＴＡＧＥ４にそれぞれ０、８、１６または２４個のシフト位置のシフトを指示するであろう。このように、任意の１つのサイクルの中で、これらの４つのＣ４．ｘ′の中の１つだけが表明される。けれどもそれに加えて、もしＣＡＲＲＹが表明されるならば、その時にはこれらの制御信号は右に一度にローティトされ、そのためにＣ４．０′、Ｃ４．１′、Ｃ４．２′およびＣ４．３′の中の１つの表明された信号によって指示されたものに対立するものとして次の数のローティションが実施される。例えば、もしＣ４．０′が０ビット位置のローティションに対応して表明されるならば、そしてもしＣＡＲＲＹがまた表明されるならば、その時には８個の０ビット位置のローティションを指示するためにＣ４．０′の表明は効果において一回右にローティトされる。同様に、もしＣ４．１′が８個のビット位置のローティションに対応して表明されるならば、そしてもしＣＡＲＲＹがまた表明されるならば、その時には１６個のビット位置のローティションを指示するためにＣ４．１′の表明は効果において一回右にローティトされる。また同様に、もしＣ４．２′が１６個のビット位置のローティションに対応して表明されるならば、しかしもしＣＡＲＲＹがまた表明されるならば、その時には２４個のビット位置のシフトを指示するためにＣ４．２′の表明は効果において一回右にローティトされる。最後に、したがって、もしＣ４．３′が２４個のビット位置のローティションに対応して表明されるならば、しかしもしＣＡＲＲＹがまた表明されるならば、その時には０個のビット位置のシフトを指示するためにＣ４．３′の表明が用いられる。制御信号のこれらのローティションのおのおのは、表明された信号Ｃ４．ｘ′を最終の出力信号Ｃ４の中の次に高い導電体に再配置することによって達成される、すなわち、Ｃ４．３′が自動次行送りに調整されるようにそしてそれによりもしＣＡＲＲＹが表明されるならばＣ４．０を表明するように付加的な自動次行送りでもって、Ｃ４．ｘ′がＣ４．ｘ＋１（すなわち、アポストロフィのない）として表明されるために調整される。
【００９６】
Ｃ４′とＣ４との間で前記で説明したシフトを実現するために、必要とされる論理は次の式１７にしたがって記述することができる。ただし、Ｃ４′の中の表明されたＭＳＢはＣ４の中の表明されたＬＳＢになるために自動次行送りされるように、Ｃ４′の中のビットがＣＡＲＲＹの表明により自動次行送りされる時のケースは例外である。
【００９７】
Ｃ４．ｘ＝（Ｃ４．ｘ′ＡＮＤ  ＣＡＲＲＹＸ）＋（Ｃ４．ｘ＋１′ＡＮＤ  ＣＡＲＲＹ）                                                                              式１７
【００９８】
したがって、ＣＡＲＲＹが表明されない時（したがって、ＣＡＲＲＹＸが表明される時）、その時には出力Ｃ４．ｘがブロック２１０′−２３０′から出力される対応する出力Ｃ４．ｘ′と同じであることを式１７が示している。またはそれとは異なって、ＣＡＲＲＹが表明される時、その時には出力Ｃ４．ｘのおのおのはブロック２１０′−２３０′から出力される次に下位のビットＣ４．ｘ−１′である。このように、ＣＡＲＲＹの表明は要求されるようにそして前記で考察したように復号化された値をシフトする。けれどもそれに加えて、好ましい実施例では、Ｃ４に対する信号は負の論理（すなわち、活性低レベル）である。したがって、負の論理信号を達成するために、式１７からのＣＡＲＲＹ信号およびＣＡＲＲＹＸ信号が反転される。セレクト信号のいずれの極性も受容可能であるように転送ゲートに対する補数信号を発生するために、Ｃ４．ｘ信号を受け取るＳＴＡＧＥ４のマルチプレクサの内側で活性低レベル信号のおのおのが局所的にまた反転される。
【００９９】
前記で考察したようにＣ４の自動次行送りのケースをまた考慮して、Ｃ４に対して用いられるべき４つの信号おののおのに対して式１７が実現されることが当業者には分かるであろう。例えば、図１４の下部のゲートを考察するならば、それらはり信号Ｃ４．１を供給する。したがって式１７から、第１のＡＮＤゲートに対する入力はＣ４．１′ＡＮＤ  ＣＡＲＲＹＸであるであろう。けれども、好ましい実施例では、備えられるＡＮＤゲートはＡＮＤゲート２５０ＡＮ１である。このゲートは反転された入力を有し、したがってその入力はＣＸ４．１′ＡＮＤ  ＣＡＲＲＹである。同様に、第２のＡＮＤゲートに対する入力はＣ４．４′ＡＮＤ  ＣＡＲＲＹであるであろう。けれども、好ましい実施例では、備えられるＡＮＤゲートはＡＮＤゲート２５０ＡＮ２である。このゲートはまた反転された入力を有し、したがってその入力はＣＸ４．４′ＡＮＤ  ＣＡＲＲＹである。ＡＮＤゲート２５０ＡＮ１および２５０ＡＮ２のおのおのの出力はＯＲゲート２５０ＯＲ１に対して入力として接続される。したがって、それはＣ４．０信号を供給する。その後、その信号が反転器２５０ＩＮ１によって反転され、それにより反転された出力信号ＣＸ４．０が供給される。これらの接続が与えられるならば、ＣＸ４．１、ＣＸ４．２およびＣＸ４．３のおのおのを供給するための類似のデバイスおよび接続は当業者には分かるであろう。
【０１００】
図１５は、図３のプロセッサ１００に対してまた別の好ましい実施例によるプロセッサ１００′のブロック線図である。ここで、プロセッサ１００′はまたマイクロプロセッサまたはＤＳＰまたはなお他の計算用集積回路であることができる。プロセッサ１００′は、プロセッサ１００と同様に、当業者には周知の多くの特徴を有しているが、残りの考察を簡単にするためにそれらを示したり説明したりすることはしない。プロセッサ１００′はまた別のデータ・ローティト・ユニット２００′をまた有する。このデータ・ローティト・ユニット２００′は、プロセッサ１００のデータ・ローティト・ユニット２００と多くの特徴を共有する。したがって、前記の考察を熟知していると仮定して、これらの共通の特徴を再び詳細に説明することはしない。その代わりに、データ・ローティト・ユニット２００′とデータ・ローティト・ユニット２００との間の差についてだけ説明する。これらの差に対する導入するとして、好ましい実施例では、下記の種々の概要図について詳細に説明されるように、データ・ローティト・ユニット２００′はダイナミック論理回路を用いて構成される。ここで、データ・ローティト・ユニット２００は静的論理回路を用いてさらに容易に実現できることを想起する。ダイナミック論理回路の業界において周知であるように、ダイナミック論理回路は２つの相で動作する。すなわち、その期間中に種々のプリチャージ・ノードが第１の電圧にまで予め充電されるプリチャージ相と、その期間中にプリチャージ・ノードの電圧に基づいてデータが読み出される評価相とである。したがってこの場合、プリチャージ電圧はもし乱されないならば第１の論理状態として読み出すことができる。またはここで、そのプリチャージ電圧を放電し、そして次に第１の論理状態の補数である第２の論理状態として読み出すことができる。またダイナミック論理回路において、典型的には、デュアル・レール（ｄｕａｌ  ｒａｉｌ）信号が供給される。次に、データ・ローティト・ユニット２００′おびそのＲＯＴＡＴＥ  ＳＴＡＧＥ１′の総合的なブロック構造を考察するならば、それはダイナミック論理回路を用いて構成されそして動作するけれども、その総合的な機能はユニット２００のＲＯＴＡＴＥ  ＳＴＡＧＥ１と類似している。けれども、ユニット２００′のＲＯＴＡＴＥ  ＳＴＡＧＥ２′はユニット２００のＲＯＴＡＴＥ  ＳＴＡＧＥ２および３の機能を組み合わせ、したがって図１５に示されているように、ＲＯＴＡＴＥ  ＳＴＡＧＥ２′は制御信号Ｃ３を受け取ると共にまたＬシフトの引数値Ｌ［０］（およびその補数、分離して示されていない）の最下位ビットをも受け取る。ＲＯＴＡＴＥ  ＳＴＡＧＥ２′の中でのこの組合せは本発明の範囲に関して限定としてではなく、むしろ下記で考察されるように両方の機能を提供するために好ましい実施例がどのように実現されるかをブロックの形式で示していることに注目されたい。したがって、ＲＯＴＡＴＥ  ＳＴＡＧＥ２′はまた２つの段階、すなわち１つはＬＸ［２：１］＋Ｒ［２：１］の和に向けられた段階そして他の１つはＲ［０］に向けられた段階、を有すると考えることができる。最後に、ＲＯＴＡＴＥ  ＳＴＡＧＥ３′の総合的な機能は、それはダイナミック論理回路を用いて構成されそして動作するけれども、ユニット２００のＲＯＴＡＴＥ  ＳＴＡＧＥ４に類似している。
【０１０１】
図１６は、図１５からのＲＯＴＡＴＥ  ＳＴＡＧＥ１′の概要図である。全体的に、図１６の概要図の回路はビットＤ３１ＩＮないしＤ０ＩＮを有する３２ビットの入力を受け取り、そして２ビットＤ３１ＯＵＴないしＤ０ＯＵＴを有する３２ビットの出力を出力するための回路である。考察を単純にするために、図１６の概要図は３２個の同等な部分回路３０００ないし３００３１を有していることに注目されたい。これらのおのおのは、出力のそれぞれのおよび異なる１つに付随している。さらに、図を単純にするために、これらの部分回路の４つだけが示されているが、残りの回路に対して類似の接続が行われることは当業者には分かるであろう。次の考察は図示されている回路に集中して行うことにする。部分回路３０００を考察するならば、それは反転器３００ＩＮＶ０に対するデータ・ビット入力Ｄ０ＩＮを受け取る。反転器３００ＩＮＶ０の出力はＮチヤンネル・トランジスタ３００ＮＣＨ０のソースに接続される。Ｎチヤンネル・トランジスタ３００ＮＣＨ０のゲートはＬＸ［０］に接続され、そして同じトランジスタのドレインはノード３００Ｎ０に接続される。ノード３００Ｎ０はまたＰチヤンネル・トランジスタ３００ＰＣＨ０のドレインに接続される。Ｐチヤンネル・トランジスタ３００ＰＣＨ０のソースは基準電圧ＶＤＤに接続され、そしてそのゲートはクロック信号ＣＬＫを受け取るために接続される。ノード３００Ｎ０はまたＮチヤンネル・トランジスタ３００ＮＣＨ１のドレインに接続される。Ｎチヤンネル・トランジスタ３００ＮＣＨ１のゲートはＬ［０］に接続され、そしてそのソースは部分回路３００１からの反転器３００ＩＮＶ２の出力に接続される。部分回路３０００を完成する時、ノード３００Ｎ０は反転器３００ＩＮＶ１に入力に接続され、そして反転器３００ＩＮＶ１の出力は出力信号Ｄ０ＯＵＴを供給する。前記の接続が与えられるならば、図１６の中の残りの部分回路３００ｘのおのおのは同じ組のデバイスおよび同じ種類の接続とを有することは当業者には容易に分かるであろう。ここにおける違いは、異なる対応する入力ＤｘＩＮを受け取ることでありそしてそれに対応する出力ＤｘＯＵＴを供給することである。最後に、図１６を単純にするために、ＲＯＴＡＴＥ  ＳＴＡＧＥ１′に対する２つのデュアル・レール回路の中の１つだけが示されていることに注目されたい。好ましい実施例では、出力データ信号のおのおのに対して１つのデュアル・レール出力を供給するように、図示された回路は反転データおよび同等のセレクト信号でもって複製されることが当業者には分かるであろう。
【０１０２】
次に、ＲＯＴＡＴＥ  ＳＴＡＧＥ１′の動作が、図１６の部分回路を用いて実現されるとして説明する。総合的には、これらの部分回路の全体は次のように動作する。３２ビットの入力Ｄ３１ＩＮないしＤ０ＩＮは、もしＬＸ［０］が真ならば、出力Ｄ３１ＯＵＴないしＤ０ＯＵＴに直接的に通過し、一方、もしＬＸ［０］が偽ならば（すなわち、Ｌ［０］が真ならば）、その時には入力は入力ＤｘＩＮのおのおのが出力Ｄｘ−１ＯＵＴに接続されるように右に一回シフトされ、そしてそれによりＬＳＢＤ０ＩＮはＤ３１ＯＵＴによって出力されるために自動次行送りされる。次に、この動作を詳細に調べ、そして例として部分回路３０００を考察する。第１に、動作のプリチャージ相の期間中、ＣＫＬは低レベルに進む。それに応答して、Ｐチヤンネル・トランジスタ３００ＰＣＨ０がイネーブルにされ、そしてノード３００Ｎ０がプリチャージされる。したがって、このプリチャージ相の期間中にまた、図１６の残りの部分回路の中の類似のＰチヤンネル・トランジスタ３００ＰＣＨｘがまたイネーブルにされ、それによりそれらのそれぞれのノード３００Ｎｘがプリチャージされる。第２に、動作の評価相の期間中、ＣＬＫは高レベルに進む。この時、ノード３００Ｎｘのおのおのの電圧はそのプリチャージ相に止まったままであるかまたはそれが放電されるかのいずれかである。ここで、その結果はＬＸ［０］の値および入力データに応じて変化する。具体的に言えば、部分回路３０００を考察するならば、もしＬＸ［０］は真であるならば、その時にはノード３００Ｎ０はＮチヤンネル・トランジスタ３００ＮＣＨ０を通して反転器３００ＩＮＶ０の出力に接続される。したがって、もし反転器３００ＩＮＶ０の出力が低レベルである（すなわち、その入力のためにＤ０ＩＮが高レベルである）ならば、その時にはノード３００Ｎ０のプリチャージされた電圧は放電され、そしてそれに応答して反転器３００ＩＮＶ１の出力に出力Ｄ０ＯＵＴに対して上昇する電圧が生ずる。逆に、もし反転器３００ＩＮＶ０の出力が高レベルである（すなわち、その入力のためにＤ０ＩＮは低レベルである）ならば、その時にはノード３００Ｎ０のプリチャージされた高レベル電圧は乱されなく、したがって反転器３００ＩＮＶ１は出力Ｄ０ＯＵＴに対し低レベル電圧を出力し続ける。ここで得られた２つの異なる場合は、ＬＸ［０］が真であるケースに対するものである。けれども、もしＬＸ［０］が偽であるならば、その時にはその補数Ｌ［０］は真であり、それによってＮチヤンネル・トランジスタ３００ＮＣＨ０をイネーブルにする（一方、Ｎチヤンネル・トランジスタ３００ＮＣＨ０はディスエーブルのままである）。この場合には、部分回路３０００に対するデータは入力Ｄ０ＩＮによって供給されないが、しかしその代わりにそれは入力Ｄ１ＩＮによってそして反転器３００ＩＮＮ２により反転された形式で供給される。したがって、ＬＸ［０］が偽である時、右へのデータの１ビット位置のシフトがある。入力Ｄ１ＩＮによって供給されるデータの場合、それはもしそのデータが高レベルであるならばノード３００Ｎ０を放電し、したがって反転器３００ＩＮＮ２を通して低レベルに反転されるか、またはもしそのデータ���低レベルであるならばノード３００Ｎ０プリチャージ電圧は乱されなく、したがって反転器３００ＩＮＮ２を通して高レベルに反転されるか、のいずれかであるであろう。
【０１０３】
図１７は、図１５からのＲＯＴＡＴＥ  ＳＴＡＧＥ２′の１つのマルチプレクサＭ２′の概要図である。マルチプレクサＭ２′に対して図１７に示されたのと同じ回路は、ＲＯＴＡＴＥ  ＳＴＡＧＥ２′に対する総計３２個のマルチプレクサを得るために３１回複製されることを当業者は理解しなければならない。したがって、３２個のマルチプレクサの全体の組は、３２ビットの入力に適応しそして種々の方式でそれをローティトするように動作することができる。導入として、データ入力が式１の「＋１」の特性に適応するために１ビット位置だけ右にローティトされる際に、第１のローティションが起こる。ここで、この特性は前に導入された。さらに、０個、２個、４個または６個のビット位置の右ローティションの可能性は制御信号Ｃ３に基づいて起こり、そして１ビット位置のまた別のローティションの可能性はＬ［０］の値に基づいて起こる。したがって、マルチプレクサＭ２′は１ビット位置から８ビット位置までその入力を右にローティトする。これらの特性のおのおのは下記でさらに詳細に説明される。最後に、図１７においてデュアル・レール信号が図示されたマルチプレクサＭ２′に対して示されている。
【０１０４】
マルチプレクサＭ２′の接続およびデバイスに関してさらに詳細的に考察するならば、それは４つのデータ入力ｄ１、ｄ３、ｄ５およびｄ７を有している。ここで、「ｄ」はデータを示し、そして数字はマルチプレクサからの相対的なビット・オフセットを示す。先ず入力ｄ１を考察するならば、それは１ビット位置のオフセットを有し、それはこの入力がＲＯＴＡＴＥ  ＳＴＡＧＥ１′からの出力に比べて１ビット位置だけ右ローティトしたビットを受け取ることを意味し、そしてそれがマルチプレクサＭ２′に入力ｄ１として供給されることを意味する。したがって、この１ビット位置のローティションは式１の「＋１」特性のハードウエアによる実現である、すなわち、ＲＯＴＡＴＥ  ＳＴＡＧＥ１′からＲＯＴＡＴＥ  ＳＴＡＧＥ２′へのすべてのデータ・ビットの出力に対して、これらのビットのおのおのは必然的に１ビット位置だけ右にローティトされる。入力ｄ３に続けるならば、それは３ビット位置のオフセットを有し、それはこの入力がＲＯＴＡＴＥ  ＳＴＡＧＥ１′からの出力に比べて３ビット位置だけ右にローティトしたビットを受け取ることを意味する。これらの３つのビット位置の１つが式１の「＋１」の特性の配線化に適応し、一方、残りの２つのビット位置はＣ３の状態による、さらに詳細に言えばＣ３．２の状態による、潜在する右のローティションを表す。類似の方式でしかしさらに大きな潜在するオフセットに対して、入力ｄ５はＲＯＴＡＴＥ  ＳＴＡＧＥ１′からの出力に比べて５ビット位置のオフセットを有し、そして入力ｄ７はＲＯＴＡＴＥ  ＳＴＡＧＥ１′からの出力に比べて７ビット位置のオフセットを有する。最後に、それぞれの入力ｄｎのおのおのに対してデュアル・レール入力ｄＸｎが得られる。
【０１０５】
データ入力ｄｎのおのおのはそれぞれのＮチヤンネル・トランジスタ３１０ｄｎの第１のソース／ドレインに接続され、そしてデータ入力ｄＸｎのおのおのはそれぞれのＮチヤンネル・トランジスタ３１０ｄＸｎの第１のソース／ドレインに接続される。Ｎチヤンネル・トランジスタ３１０ｄ１のゲートは、制御信号Ｃ３．０を受け取るために接続される。これは図１２の静的実施例から得られるのと同じ機能を提供することを予定し、そしてダイナミック論理実施例の中で後で示され、そしてとにかく０ビット位置の付加的な右ローティション、すなわち前記で説明した１つの配線化されたローティションに加えてゼロ・ローティションに対応する。Ｎチヤンネル・トランジスタ３１０ｄ３のゲートは制御信号Ｃ３．１を受け取るために接続される。これは２個の付加的なビット位置の右ローティションに対応する。Ｎチヤンネル・トランジスタ３１０ｄ５のゲートは、制御信号Ｃ３．２を受け取るために接続される。これは４個の付加的なビット位置の右ローティションに対応する。Ｎチヤンネル・トランジスタ３１０ｄ７のゲートは、制御信号Ｃ３．３を受け取るために接続される。これは６個の付加的なビット位置の右ローティションに対応する。Ｎチヤンネル・トランジスタ３１０ｄｎのおのおのの第２のソース／ドレインはノード３１２に接続される。対応するＮチヤンネル・トランジスタ３１０ｄＸｎの第１のソース／ドレインに対するデュアル・レール入力ｄＸｎのおのおのに対して対称的な接続が行われ、そしてＮチヤンネル・トランジスタ３１０ｄＸｎの第２のソース／ドレインはノード３１２Ｘに接続される。
【０１０６】
ノード３１２はＮチヤンネル・トランジスタ３１４の第１のソース／ドレインに接続され、そのゲートはＲシフトの引数値のビットＲＸ［０］に接続される。Ｎチヤンネル・トランジスタ３１４の第２のソース／ドレインはノード３１６に接続される。ノード３１６はまたＮチヤンネル・トランジスタ３１８の第１のソース／ドレインに接続され、そのゲートはＲシフトの引数値のビットＲ［０］に接続され、そしてその第２のソース／ドレインはデータ・ビット入力ｄｍ＋１に接続される。データ・ビット入力ｄｍ＋１はマルチプレクサＭ２′のすぐ左のマルチプレクサ（はっきりとは図示されていない）からの出力を描写することが意図される。ここで、この特定の出力は図１７の中のＮチヤンネル・トランジスタ３１０ｄ１ないし３１０ｄ７に類似するＮチヤンネル・トランジスタの第１の組からのものである。換言すれば下記で示されるように、１ビット位置の付加的な右ローティションを達成するためにデータ入力ｄｍ＋１を選定することができ、したがって、その１ビットのローティションを達成するためにデータがマルチプレクサＭ２′のすぐ左のマルチプレクサから供給される。けれども、入力ｄｍ＋１は左のマルチプレクサの最後の出力からのものではなくて、その代わりにそれは図１７中のノード３１２に類似するノードから取られる。実際、図１７の中でまた、ノード３１２は出力ｏｕｔｍを供給する（およびノード３１２Ｘはデュアル・レール出力ｏｕｔｍＸを供給する）ことに注目されたい。したがってこの出力は、示された入力ｄｍ＋１によって受け取られた値に匹敵する値を供給するために、マルチプレクサＭ２′のすぐ右にあるマルチプレクサにとって利用可能である。この接続の結果として、Ｎチヤンネル・トランジスタ３１８を通して達成される１ビットの右ローティションは、０ビット、２ビット、４ビットまたは６ビットの右ローティションのいずれかに加えて、マルチプレクサＭ２′のすぐ左のマルチプレクサの中のＮチヤンネル・トランジスタの第１の群を通して達成される。ノード３１６はまたＰチヤンネル・トランジスタ３２０のドレインに接続され、そしてＰチヤンネル・トランジスタ３２０のゲートはＣＬＫ信号に接続され、そしてそのソースはＶＤＤに接続される。さらに、ノード３１６は反転器３２２の入力に接続され、そして反転器３２２の出力は反転器３２４の入力に接続される。反転器３２４の出力はマルチプレクサＭ２′のデュアル・レール出力の１つを供給する。
【０１０７】
次に、マルチプレクサＭ２′の動作を説明する。図の接続に関して前記で得られた種々の機能の説明が与えられおよびＲＯＴＡＴＥ  ＳＴＡＧＥ２′動作が理解されるならば、それは容易に十分に分かるであろう。プリチャージ相の期間中、ＣＬＫは低レベルにあり、そしてＰチヤンネル・トランジスタ３２０および３２０Ｘがイネーブルにされ、それによりノード３１６および３１６Ｘがそれぞれプリチャージされる。評価相の期間中、ＣＬＫは高レベルに遷移し、そして種々のセレクト信号およびデータに応答して、これらの２つのプリチャージされたノード３１６および３１６Ｘの１つが放電される。先ず、Ｃ３の４つの信号の１つＣ３ｘが表明されることを想起する。そしてこの表明された信号はそれに接続されているＮチヤンネル・トランジスタ３１０ｄｘ＋１をイネーブルにする。それにより、このイネーブルにされたトランジスタに接続されたデータｄｎはノード３１２に接続され、そしてマルチプレクサＭ２′の右に１ビット位置に配置されたマルチプレクサに対する出力ｏｕｔｍでまた利用可能である（一方、補数データｄＸｎはノード３１２Ｘに接続され、そしてまたマルチプレクサＭ２′の右に１ビット位置に配置されたマルチプレクサにｏｕｔｍを供給する）。次に、Ｒ［０］の状態がＮチヤンネル・トランジスタ３１４または３１８の１つだけをイネーブルにする、すなわちもしＲＸ［０］が真であるならば、その時にはＮチヤンネル・トランジスタ３１４がイネーブルにされ、一方、もしＲＸ［０］が偽であるならば、その時にはその補数Ｒ［０］がＮチヤンネル・トランジスタ３１８をイネーブルにする。前者の場合にはノード３１２のデータはノード３１６に接続され、そして後者の場合にはデータｄｍ＋１はノード３１６に接続される。いずれの場合にも、もし接続されたデータが低レベルならば、それによってそれがノード３１６のプリチャージ電圧を放電する。最後に、ノード３１６の電圧は、それがプリチャージされたままであってもまたは放電されても２度反転され、そして出力ｏｕｔｄ＋１として供給され、それにより活性低レベル信号が提供される。
【０１０８】
図１８は、図１５からのＲＯＴＡＴＥ  ＳＴＡＧＥ３′の１つのマルチプレクサＭ３′の概要図である。したがって、ＲＯＴＡＴＥ  ＳＴＡＧＥ３′の中の総計で３２個のマルチプレクサを得るために、マルチプレクサＭ３′に対して図１８に示されたのと同じ回路が３１回複製されることが当業者には理解されなければならない。３２個のマルチプレクサの全体の組は３２ビットの入力に適応するように動作することができ、およびその入力をマルチプレクサのおのおののそれぞれの出力に直接的に通過させるようにまたはそれを０、８、１６または２４ビット位置だけ右にローティトするようにのいずれかに動作することができる。
【０１０９】
マルチプレクサＭ３′の接続とデバイスとをさらに詳細に考察するならば、それは４個のデータ入力ｄ０、ｄ８、ｄ１６およびｄ２４を有している。ここで、「ｄ」はデータを示し、そして数はマルチプレクサからの相対的ビット・オフセットを示す。さらに詳細に言えば、入力ｄ０はマルチプレクサＭ３′からのオフセットを有しないが、しかし入力ｄ８は８ビット位置だけオフセットしているデータであり、したがって８ビット位置の右ローティションを達成するためにそれを選定することができる。換言すれば入力ｄ８は、マルチプレクサＭ３′の左に８ビット位置にあるＲＯＴＡＴＥ  ＳＴＡＧＥ３′の中のまた別のマルチプレクサに対する入力ｄ０であるのと同じビットである。したがって同様に、入力ｄ１６は１６ビット位置の右ローティションを達成するために選定することができる１６ビット位置だけオフセットしているデータであり、したがって１６ビット位置の右ローティションを達成するためにそれを選定することができる。入力ｄ２４は２４ビット位置だけオフセットしているデータであり、したがって２４ビット位置の右ローティションを達成するためにそれを選定することができる。最後に、それぞれの入力ｄｎのおのおのに対してデュアル・レール信号ｄＸｎをが供給される。先行する入力に加えて、両方のレールは２つの付加的な入力（それぞれのデュアル・レール信号ｄＸａｌｔ１およびｄＸａｌｔ２と共に）ｄａｌｔ１およびｄａｌｔ２をまた有する。先行するＲＯＴＡＴＥ  ＳＴＡＧＥ２′によって供給されなくてむしろマルチプレクサＭ３′によって得られる機能からなお利益を得る他のいくつかの回路から供給される入力に関してマルチプレクサＭ３′が実行できることを示すために、これらの２つの付加的入力が備えられる。
【０１１０】
データ入力ｄｎのおのおのは、それぞれのＮチヤンネル・トランジスタ４１０ｄｎの第１のソース／ドレインに接続される。そしてデータ入力ｄＸｎのおのおのは、それぞれのＮチヤンネル・トランジスタ４１０ｄＸｎの第１のソース／ドレインに接続される。Ｎチヤンネル・トランジスタ４１０ｄ０のゲートは、制御信号Ｃ４．０を受け取るために接続される。制御信号Ｃ４．０は静的実施例の図１４から得られるのと同じ機能を果たすことを意図しており、そしてそれはダイナミック論理実施例の中で後で示される。とにかく、それは０ビット位置のローティション・シフトに対応する。Ｎチヤンネル・トランジスタ４１０ｄ８のゲートは、制御信号Ｃ４．１を受け取るために接続される。制御信号Ｃ４．１は８ビット位置の右ローティションに対応する。Ｎチヤンネル・トランジスタ４１０ｄ１６のゲートは、制御信号Ｃ４．２を受け取るために接続される。制御信号Ｃ４．２は１６ビット位置の右ローティションに対応する。Ｎチヤンネル・トランジスタ４１０ｄ２４のゲートは、制御信号Ｃ４．３を受け取るために接続される。制御信号Ｃ４．３は２４ビット位置の右ローティションに対応する。Ｎチヤンネル・トランジスタ４１０ｄｎのおのおのの第２のソース／ドレインはノード４１２に接続される。対応するＮチヤンネル・トランジスタ４１０ｄＸｎの第１のソース／ドレインに対するデュアル・レール入力ｄＸｎに対して対称的な接続が行われ、そしてＮチヤンネル・トランジスタ４１０ｄＸｎのおのおのの第２のソース／ドレインがノード４１２Ｘに接続される。また２つの異なる方式を対比させるために、２つの付加的なデータ入力ｄａｌｔ１およびｄａｌｔ２が存在することを想起する。入力ｄａｌｔ１はゲート駆動データ・ビットである、すなわち、それはＮチヤンネル・トランジスタ４１０ｄａｌｔ１のゲートに接続され、そしてそのソースはアースに接続され、そしてそのドレインはＮチヤンネル・トランジスタ４１０ａｌｔ１の第１のソース／ドレインに接続される。Ｎチヤンネル・トランジスタ４１０ａｌｔ１のゲートはｓａｌｔ１に接続され、そしてＮチヤンネル・トランジスタ４１０ａｌｔ１の第２のソース／ドレインはノード４１２に接続される。入力ｄａｌｔ２はソース駆動データ・ビットである、すなわち、それはＮチヤンネル・トランジスタ４１０ａｌｔ２のソースに接続される。Ｎチヤンネル・トランジスタ４１０ａｌｔ２のゲートはｓａｌｔ２に接続され、そしてそのドレインはノード４１２に接続される。
【０１１１】
次に、マルチプレクサＭ３′の動作を説明する。ただしその動作は、前記で説明したマルチプレクサＭ２′のフロント・エンド部分の類似の動作およびＲＯＴＡＴＥ  ＳＴＡＧＥ３′の理解された動作から容易に分かるはずである。先行するＲＯＴＡＴＥ  ＳＴＡＧＥ２′がその評価相を実行する時、それは活性低レベル・データをＲＯＴＡＴＥ  ＳＴＡＧＥ３′のマルチプレクサＭ３′に送る。これらの入力は付加的な入力ｄａｌｔ１およびｄａｌｔ２と一緒に多重化される、すなわち、信号Ｃ４．ｘの１つの表明またはｓａｌｔｘの１つの表明のいずれかによって、一度に１つを選定することができる。したがって、さらにこのことに関して、入力ｄａｌｔ１およびｄａｌｔ２の１つが選定されるべきであるサイクルの期間中、信号Ｃ４．ｘのいずれも表明されないことに注目されたい。したがってとにかく、クロック・サイクルの期間中に選定されおよび種々の入力信号の１つの入力がノード４１２に接続され、そしてその反転がノード４１２Ｘに接続される。
【０１１２】
図１９は、Ｌ［２：１］＋Ｒ［２：１］の加算を適切に復号化するためにダイナミック論理回路を用いて、図１５のＳＴＡＧＥ２′ＣＯＮＴＲＯＬＬＥＲの部分を実現するための好ましい実施例の概要図である。考察を行う目的で、図１９の概要図は４つのレベルＬ１、Ｌ２、Ｌ３およびＬ４のトランジスタを有している。ここで、このような構造は後で行われる動作の説明と共にまたさらに理解される。
【０１１３】
図１９の下部のレベルＬ１から出発するならば、この概要図は２つのＮチヤンネル・トランジスタを有している。これらのＮチヤンネル・トランジスタのおのおののソースはノード４２０Ｎに接続され、そしてノード４２０Ｎはアースに接続される。Ｎチヤンネル・トランジスタ４２０１のゲートはＲＸ［１］に接続され、そしてそのドレインはノード４２２Ｎ１に接続される。Ｎチヤンネル・トランジスタ４２０２のゲートはＲ［１］に接続され、そしてそのドレインはノード４２０Ｎ２に接続される。
【０１１４】
図１９の下部から次に上にあるレベルのレベルＬ２は、４つのＮチヤンネル・トランジスタ４２２１、４２２２、４２２３および４２２４を有する。Ｎチヤンネル・トランジスタ４２２１および４２２２のソースはノード４２２Ｎ１に接続され、そしてＮチヤンネル・トランジスタ４２２３および４２２４のソースはノード４２２Ｎ２に接続される。Ｎチヤンネル・トランジスタ４２２１および４２２３のゲートはＬＸ［１］に接続され、そしてＮチヤンネル・トランジスタ４２２２および４２２４のゲートはＬ［１］に接続される。Ｎチヤンネル・トランジスタ４２２１のドレインはノード４２４Ｎ１に接続され、そしてＮチヤンネル・トランジスタ４２２２および４２２３のドレインはノード４２４Ｎ２に接続され、そしてＮチヤンネル・トランジスタ４２２４のドレインはノード４２４Ｎ３に接続される。
【０１１５】
図１９の下部から次に上であるレベルＬ３は、６つのＮチヤンネル・トランジスタ４２４１、４２４２、４２４３、４２４４、４２４５および４２４６を有する。Ｎチヤンネル・トランジスタ４２４１および４２４２のソースはノード４２４Ｎ１に接続され、そしてＮチヤンネル・トランジスタ４２４３および４２４４のソースはノード４２４Ｎ２に接続され、そしてＮチヤンネル・トランジスタ４２４５および４２４６のソースはノード４２４Ｎ３に接続される。Ｎチヤンネル・トランジスタ４２４１、４２４３および４２４５のゲートはＲＸ［２］に接続され、そしてＮチヤンネル・トランジスタ４２４２、４２４４および４２４６のゲートはＲ［２］に接続される。Ｎチヤンネル・トランジスタ４２４１および４２４６のドレインはノード４２６Ｎ１に接続され、そしてＮチヤンネル・トランジスタ４２４２および４２４５のドレインはノード４２６Ｎ４に接続され、そしてＮチヤンネル・トランジスタ４２４３のドレインはノード４２６Ｎ２に接続され、そしてＮチヤンネル・トランジスタ４２４４のドレインはノード４２６Ｎ３に接続される。
【０１１６】
図１９の上部のレベルであるレベルＬ４は、８つのＮチヤンネル・トランジスタ４２６１、４２６２、４２６３、４２６４、４２６５、４２６６、４２６７および４２６８を有する。Ｎチヤンネル・トランジスタ４２６１、４２６３、４２６５および４２６７のゲートはＬＸ［２］に接続され、そしてＮチヤンネル・トランジスタ４２６２、４２６４、４２６６および４２６８のゲートはＬ［２］に接続される。Ｎチヤンネル・トランジスタ４２６１および４２６２のソースはノード４２６Ｎ１に接続され、そしてＮチヤンネル・トランジスタ４２６３および４２６４のソースはノード４２６Ｎ２に接続され、そしてＮチヤンネル・トランジスタ４２６５および４２６６のソースはノード４２６Ｎ３に接続され、そしてＮチヤンネル・トランジスタ４２６７および４２６８のソースはノード４２６Ｎ４に接続される。Ｎチヤンネル・トランジスタ４２６１および４２６８のドレインはノード４２８Ｎ１に接続され、そしてＮチヤンネル・トランジスタ４２６３および４２６６のドレインはノード４２８Ｎ２に接続され、そしてＮチヤンネル・トランジスタ４２６２および４２６７のドレインはノード４２８Ｎ３に接続され、そしてＮチヤンネル・トランジスタ４２６４および４２６５のドレインはノード４２８Ｎ４に接続される。ノード４２８Ｎ１、４２８Ｎ２、４２８Ｎ３および４２８Ｎ４のおのおのはそれぞれのＰチヤンネル・トランジスタ４３０１、４３０２、４３０３および４３０４のドレインに接続され、そしてＰチヤンネル・トランジスタ４３０１、４３０２、４３０３および４３０４のおのおののゲートはＣＬＫに接続され、一方、これらのＰチヤンネル・トランジスタのソースはＶＤＤに接続される。最後に、ノード４２８Ｎ１、４２８Ｎ２、４２８Ｎ３および４２８Ｎ４のおのおのはそれぞれの反転器４３２１、４３２２、４３２３および４３２４の入力に接続される。ここで、これらの反転器の出力はそれぞれの信号Ｃ３．０、Ｃ３．１、Ｃ３．２およびＣ３．３を供給する。
【０１１７】
次に、図１９の概要図の動作を説明する。先ず、図１９の多重レベル構造の機能はＬ［２：１］＋Ｒ［２：１］の和を復号化することであることを想定する。ここで、ＬＸ＋Ｒ＋１の式１の特性の中のＬＸを達成するようにＬが外部で反転される。これらの値に対する可能な値のおのおのに対して、この構造はモジュロ４の出力を生じなければならない。さらに詳細に言えば、もしモジュロ４の和が０であるならば、その時には出力Ｃ３．１が表明され、もしモジュロ４の和が１であるならば、その時には出力Ｃ３．２が表明され、もしモジュロ４の和が２であるならば、その時には出力Ｃ３．３が表明され、そしてもしモジュロ４の和が３であるならば、その時には出力Ｃ３．４が表明される。導入をさらに続けるとして、次の表６は、Ｌ［２：１］およびＲ［２：１］の１０進値が与えられたとして、Ｌ［２：１］およびＲ［２：１］の可能な入力のおのおのに対する和を示した表である。
【０１１８】
【表８】
2004206720.tif 000010
【０１１９】
図１９の概要図の動作をさらに示すために、図２０の機能図を参照してさらに説明を行う。図２０は図１９と同じ多重レベルの構造を表しているが、しかしおのおののレベルの個々のトランジスタを示すよりはむしろ、与えられたトランジスタのおのおのをイネーブルにすることによって得られる和が提供される。さらに、この構造の中のそれぞれのポイントにおいて、左への経路および右への経路が示されている。左への経路は入力ビットが０である時に図２０の中のトランジスタの結果として生ずる動作を表し、一方、右への経路は入力ビットが１である時に図２０の中のトランジスタの結果として生ずる動作を表す。例えば、レベル０を考察するならば、その時にもし入力ビットＲ［１］が０に等しいならば、その時にはこの構造は左経路に向かって導く。これは、そのポイントにおいて、その時に考えられた１つの入力、すなわちＲ［１］、がその経路の端部のサークルの中に示されているように、０に等しい総計を提供することを示す。図１９に戻って考察するならば、図２０のレベルＬ１の中の左経路は、Ｒ［１］＝０したがってＲＸ［１］＝１であるためにイネーブルにされるＮチヤンネル・トランジスタ４２０１に対応する。そのポイントにおいて、それはノード４２０Ｎをノード４２２Ｎ１に結合する。それとは異なって図２０においておよびレベルＬ１をなお考察するならば、もし入力ビットＲ［１］が１に等しいならば、その時には木構造は右経路に向かって導く。これは、そのポイントにおいて、その時に考えられた１つの入力、すなわちＲ［１］、がその経路の端部のサークルの中に示されているように、１に等しい総計を提供することを示す。図１９に戻って考察するならば、図２０のレベルＬ１の中の右経路はＲ［１］＝１であるためにイネーブルにされるＮチヤンネル・トランジスタ４２０２に対応する。そのポイントにおいて、それはノード４２０Ｎをノード４２２Ｎ２に結合する。付加的なレベルのおのおのに対して、そのレベルに対する付加的な１ビット入力を考慮して、レベルＬ２ではＬ［１］を考え、レベルＬ３ではＲ［２］を考え、レベルＬ４ではＬ［２］を考えて、この同じ流れが続く。この動作をさらに示すために、種々の例が下記に与えられる。
【０１２０】
図２０および図１９に関してのように、Ｌ［２：１］＝Ｒ［２：１］＝００（すなわち、両方が１０進値ゼロに等しい）場合に表６のケースを考える。レベルＬ１においてＲ［１］＝０であり、したがって０の和を有するレベルＬ１のサークルへの左分枝に沿って流れが続く。次に、レベルＬ２においてＬ［１］＝０であり、したがって０の和を有するレベルＬ２のサークルへの左分枝に沿って流れが続く。したがって、このポイントにおいて、Ｌ［２：１］とＲ［２：１］との両方のＬＳＢは、０の和を有するレベルＬ２のサークルに示されているように、０の値に加算される。次に、レベルＬ３においてＲ［２］＝０であり、したがって０の和を有するレベルＬ３のサークルへの左分枝に沿って流れが続く。最後に、レベルＬ４においてＬ［２］＝０であり、したがって０の和を有するレベルＬ４のサークルへの左分枝に沿って流れが続く。図１９に戻って考察するならば、プリチャージ相の中でＣＬＫが表明され、それによりノード４２８Ｎ１、４２８Ｎ２、４２８Ｎ３および４２８Ｎ４のおのおのをプリチャージする。次に、評価相においておよび図２０に関して説明したのと同じ関連する方式において、Ｌ［２：１］＝Ｒ［２：１］＝００の状態は図１９のアースからトップのレベルにまで全面的に通して、すなわち、Ｎチヤンネル・トランジスタ４２０１、４２２１、４２４１および４２６１を通してただ１つの導通路を生ずる。したがって、ノード４２８Ｎ１はこの経路を通して放電され、そしてその降下した信号が反転器４３２１によって反転される。それによりＣ３．０に表明された高レベル信号が得られる。一方、他の出力Ｃ３．１、Ｃ３．２およびＣ３．３は（これらの信号に対するそれぞれのプリチャージ・ノードが帯電したままであり、そしてそれぞれの反転器４３２２、４３２３および４３２４により反転されるので）低いレベルのままである。
【０１２１】
次に、図２０および図１９に関してと同様に、Ｌ［２：１］＝００（すなわち、１０進値０）およびＲ［２：１］＝１１（すなわち、１０進値３）の場合の表６のケースを考える。レベルＬ１においてＲ［１］＝１であり、したがって１の和を有するレベルＬ１のサークルへの右分枝に沿って流れが続く。したがって、このポイントにおいて、考えられる１ビットは総計１になる。次に、レベルＬ２においてＬ［１］＝０であり、したがって１の和を有するレベルＬ２のサークルへの左分枝に沿って流れが続く。したがって、このポイントにおいて、１の和を有するレベルＬ２のサークルの中に示されているように、Ｌ［２：１］およびＲ［２：１］の両方のＬＳＢは１の値に加算される。次に、レベルＬ３においてＲ［２］＝１であり、したがって３の和を有するレベルＬ３のサークルへの右分枝に沿って流れが続く。ここで、このレベルはシフトの引数Ｒの中の第２のビットを考えているので、その時にはそのビットは値の２倍を表し、そしてこのビットは１に等しいので、それは１０進値の２を表す。したがって、この１０進値の２を前の１の値と加算することにより、レベルＬ３のサークルの中に示されているように、総計３が得られる。最後に、レベルＬ４においてＬ［２］＝０であり、したがって３の和を有するレベルＬ４のサークルへの左分枝に沿って流れが続く。図１９における対応する動作を考察するならば、ノード４２８Ｎ１、４２８Ｎ２、４２８Ｎ３および４２８Ｎ４がプリチャージされるプリチャージ相の後、評価相においてそして図２０に関して説明したのと同じ関連する方式において、Ｌ［２：１］＝００およびＲ［２：１］＝１１は図１９のアースから頂部のレベルまで全面的に通して、すなわち、Ｎチヤンネル・トランジスタ４２０２、４２２３、４２４４および４２６５を通してただ１つの導通路を生ずる。したがって、ノード４２８Ｎ４はこの経路を通して放電され、そしてその降下した信号が反転器４３２４によって反転され、それによりＣ３．３に表明された高レベル信号が得られる。一方、他の出力Ｃ３．０、Ｃ３．１およびＣ３．２は低レベルのままである。
【０１２２】
最後の例として、Ｌ［２：１］＝０１（すなわち、１０進値の１）およびＲ［２：１］＝１１（すなわち、１０進値の３）である場合の表６のケースを考える。１０進値の総計において、この和は４であるが、しかし符号化器はモジュロ４であることを想起する。したがって、得られる和は０でなければならない。次に、このような和および図２０および図１９に関するその動作が確かめられる。レベルＬ１においてＲ［１］＝１であり、したがって１の和を有するレベルＬ１のサークルへの右分枝に沿って流れが続く。したがって、このポイントにおいて、考えられる１ビットは総計１になる。次に、レベルＬ２においてＬ［１］＝１であり、したがって２の和を有するレベルＬ２のサークルへの右分枝に沿って流れが続く。したがって、このポイントにおいて、２の和を有するレベルＬ２のサークルに示されているように、Ｌ［２：１］とＲ［２：１］との両方のＬＳＢは加算されて２の値になる。次に、レベルＬ３においてＲ［２］＝１であり、したがって０の和を有するレベルＬ３のサークルへの右分枝に沿って流れが続く。ここで、２の以前の和にこのレベルは２を加算するので、この時にはレベルＬ３のサークルに示されているように、４の結果はモジュロ４で０の値に戻る。最後に、レベルＬ４においてＬ［２］＝０であり、したがって０の和を有するレベルＬ４のサークルへの左分枝に沿って流れが続く。図１９の対応する動作を考察するならば、ノード４２８Ｎ１、４２８Ｎ２、４２８Ｎ３および４２８Ｎ４がプリチャージされるプリチャージ相の後、評価相においておよび図２０に関して説明されたのと同じ関連する方式において、Ｌ［２：１］＝０１およびＲ［２：１］＝１１の状態は図１９においてアースからトップのレベルに全面的に通る、すなわちＮチヤンネル・トランジスタ４２０２、４２２４、４２４６および４２６１を通る、ただ１つの導通路を生ずる。したがって、ノード４２８Ｎ１はこの経路を通して放電され、そしてその降下した信号が反転器４３２１によって反転される。それによって、Ｃ３．０に表明された高レベル信号が供給され、一方、他の出力Ｃ３．１、Ｃ３．２およびＣ３．３は低レベルのままである。
【０１２３】
図２１は、図１５のＳＴＡＧＥ２′ＣＯＮＴＲＯＬＬＥＲに対する桁上げ発生器を実現するための、すなわちＳＴＡＧＥ３′ＣＯＮＴＲＯＬＬＥＲによって用いられるためのＣＡＲＲＹ信号およびＣＡＲＲＹＸ信号を発生するための、好ましい実施例のダイナミック論理構造の概要図である。全体的に言えば、前記で導いた式１４および１６ｃの論理を実現するためのデバイスのネットワークが図２１により得られる。それに加えて、ＲＯＴＡＴＥ  ＳＴＡＧＥ２′から以外の入力に関してＲＯＴＡＴＥ  ＳＴＡＧＥ３′が動作すべきである時のように、桁上げ発生特性が要求されない時に構造の全体をディスエーブルにすることができるために桁上げイネーブル特性が備えられる。桁上げイネーブル特性に関して、それはＮチヤンネル・トランジスタ４４０によってイネーブルにされる。Ｎチヤンネル・トランジスタ４４０のソースはアースに接続され、そしてそのゲートは制御信号桁上げ＿イネーブル(carry＿enable）に接続され、そしてそのドレインはノード４２２Ｎに接続される。ノード４２２ＮはまたＰチヤンネル・トランジスタ４４４のドレインに接続される。Ｐチヤンネル・トランジスタ４４４のゲートはＣＬＫに接続され、そしてそのソースはＶＤＤに接続される。
【０１２４】
ＣＡＲＲＹ信号を発生するための回路について考察するならば、それはＰチヤンネル・トランジスタ４４６を有する。Ｐチヤンネル・トランジスタ４４６のソースはＶＤＤに接続され、そしてそのゲートはＣＬＫに接続され、そしてそのドレインはノード４４６Ｎに接続される。ノード４４６Ｎは反転器４４８の入力に接続される。反転器４４８の出力はＣＡＲＲＹ信号を供給する。２つのＮチヤンネル・トランジスタ４４８１および４４８２は、ノード４４６Ｎと４４２Ｎとの間に直列に接続されたソース／ドレイン導電路を有する。Ｎチヤンネル・トランジスタ４４８１および４４８２のゲートは、それぞれ、Ｒ［２］およびＬ［２］に接続される。付加的なＰチヤンネル・トランジスタ４５０１のソースはＶＤＤに接続され、そしてそのゲートはＣＬＫに接続され、そしてそのドレインはノード４５０Ｎに接続される。２つのＮチヤンネル・トランジスタ４５０２および４５０３はノード４５０Ｎと４４６Ｎとの間に並列に接続されたソース／ドレイン導電路を有する。Ｎチヤンネル・トランジスタ４５０２のゲートはＬ［２］に接続され、そしてＮチヤンネル・トランジスタ４５０３のゲートはＲ［２］に接続される。２つのＮチヤンネル・トランジスタ４５０４および４５０５は、ノード４５０Ｎと４４２Ｎとの間に直列に接続されたソース／ドレイン導電路を有する。Ｎチヤンネル・トランジスタ４５０４および４５０５のゲートは、それぞれ、Ｌ［１］およびＲ［１］に接続される。
【０１２５】
図２１のＣＡＲＲＹ信号を発生するための回路の動作は、図１４の要素が与えられるならば当業者には分かるであろう。具体的に言えば、Ｎチヤンネル・トランジスタ４４８１および４４８２により（Ｌ［２］  ＡＮＤ  Ｒ［２］）の機能が得られる。そこでは、ノード４４６Ｎがプリチャージされるプリチャージ相の後、桁上げ＿イネーブルが表明されると仮定して、その時にもしその機能が処理されるならば評価相の期間中にノード４４６Ｎが放電され、それによりこれらの２つのＮチヤンネル・トランジスタがイネーブルにされる。それとは異なって、Ｎチヤンネル・トランジスタ４５０２、４５０３、４５０４および４５０５により［（Ｌ［２］  ＯＲ  Ｒ［２］）ＡＮＤ（Ｌ［１］  ＯＲ  Ｒ［１］）］の機能が得られる。ここで、もしＮチヤンネル・トランジスタ４５０２または４５０３のいずれかがイネーブルにされ、一方、同時にＮチヤンネル・トランジスタ４５０４および４５０５の両方がイネーブルにされるならば、その時にはノード４４６Ｎが放電される。とにかく、もしノード４４６Ｎが放電されるならば、その時には反転器４４８の出力は上昇し、それによりＣＡＲＲＹ信号が表明される。
【０１２６】
ＣＡＲＲＹＸ信号を発生する回路に戻るならば、それはＰチヤンネル・トランジスタ４５２を有する。Ｐチヤンネル・トランジスタ４５２のソースはＶＤＤに接続され、そしてそのゲートはＣＬＫに接続され、そしてそのドレインはノード４５２Ｎに接続される。ノード４５２Ｎは反転器４５４の入力に接続される。反転器４５４の出力はＣＡＲＲＹＸ信号を供給する。２つのＮチヤンネル・トランジスタ４５６１および４５６２は、ノード４５２Ｎとノード４４２Ｎとの間に直列に接続されたソース／ドレイン導電路を有する。Ｎチヤンネル・トランジスタ４５６１および４５６２のゲートは、それぞれ、ＲＸ［２］およびＬＸ［２］に接続される。付加的なＰチヤンネル・トランジスタ４５８１のソースはＶＤＤに接続され、そしてそのゲートはＣＬＫに接続され、そしてそのドレインはノード４５８Ｎに接続される。２つのＮチヤンネル・トランジスタ４５８２および４５８３は、ノード４５８Ｎと４４２Ｎとの間に並列に接続されたソース／ドレイン導電路を有し、そしてＮチヤンネル・トランジスタ４５８２のゲートはＬＸ［１］に接続され、そしてＮチヤンネル・トランジスタ４５８３のゲートはＲＸ［１］に接続される。２つのＮチヤンネル・トランジスタ４５８４および４５８５は、ノード４５２Ｎと４５８Ｎとの間に並列に接続されたソース／ドレイン導電路を有し、そしてＮチヤンネル・トランジスタ４５８４のゲートはＬＸ［２］に接続され、そしてＮチヤンネル・トランジスタ４５８５のゲートはＲＸ［２］に接続される。
【０１２７】
式１６ｃの要素が与えられるならば、図２１のＣＡＲＲＹＸ信号を発生するための回路の動作は当業者には理解されるであろう。具体的に言えば、Ｎチヤンネル・トランジスタ４５６１および４５６２により（ＬＸ［２］  ＡＮＤ  ＲＸ［２］）の機能が得られる。ノード４５２Ｎがプリチャージされるプリチャージ相の後、そして桁上げ＿イネーブルが表明されると仮定して、その時にはもしその機能が処理されるならば評価相の期間中にノード４５２Ｎが放電され、それによりこれらの２つのＮチヤンネル・トランジスタがイネーブルになる。それとは異なって、Ｎチヤンネル・トランジスタ４５８２、４５８３、４５８４および４５８５によって［（ＬＸ［２］  ＯＲ  ＲＸ［２］）ＡＮＤ（ＬＸ［１］  ＯＲ  ＲＸ［１］）］の機能が得られる。ここで、もしＮチヤンネル・トランジスタ４５８２または４５８３のいずれかがイネーブルにされ、一方、同時にＮチヤンネル・トランジスタ４５８４または４５８５のいずれかがイネーブルにされるならば、その時にはノード４５２Ｎが放電される。とにかく、もしノード４５２Ｎが放電されるならば、その時には反転器４５４の出力は上昇し、それによりＣＡＲＲＹＸ信号が表明される。
【０１２８】
図２２は、Ｌ［４：３］＋Ｒ［４：３］の加算を適切に復号化するためにダイナミック論理を用いて、図１５のＳＴＡＧＥ３′ＣＯＮＴＲＯＬＬＥＲの一部分を実現するための好ましい実施例のその部分の概要図である。一部分だけが示されていることに注目されたい。ここでは、付加的な部分はＳＴＡＧＥ２′ＣＯＮＴＲＯＬＬＥＲに関して図１９の多重レベル構造の概要図と同じであるが、しかしその図に対してその通りであったようにＬ［２：１］＋Ｒ［２：１］を入力する代わりに、図２２に示されていない部分はＬ［４：３］およびＲ［４：３］を入力する。したがって、図１９の概要図が図２２の中の好ましい実施例のＳＴＡＧＥ３′ＣＯＮＴＲＯＬＬＥＲに対して複製されることを考えるが、しかし図１９の回路の出力反転器ステージの出力（すなわち、反転器４３２１ないし４３２４の出力に匹敵する出力）はＣ４．０″、Ｃ４．１．″、Ｃ４．２″およびＣ４．３″で示される。したがって、それらの出力の１つだけが一度にそしてＬ［４：３］＋Ｒ［４：３］のモジュロ４の和に応答して表明される。図２２に示されているように、これらの信号Ｃ４．０″、Ｃ４．１．″、Ｃ４．２″およびＣ４．３″はその中の残りの回路に対して入力として供給される。
【０１２９】
図２２の概要図の考察を続けるならば、信号Ｃ４．０″、Ｃ４．１．″、Ｃ４．２″およびＣ４．３″のおのおのはそれぞれのＮチヤンネル・トランジスタ４７００、４７０１、４７０２および４７０３のゲートに接続される。ここで、これらのＮチヤンネル・トランジスタのおのおののソースはアースに接続され、そしてそれらのドレインはそれぞれのノード４７２Ｎ０、４７２Ｎ１、４７２Ｎ２および４７２Ｎ３に接続される。ノード４７２Ｎ０は、Ｎチヤンネル・トランジスタ４７４０のソースおよびＮチヤンネル・トランジスタ４７４１のソースに接続される。ノード４７２Ｎ１は、Ｎチヤンネル・トランジスタ４７４２のソースおよびＮチヤンネル・トランジスタ４７４３のソースに接続される。ノード４７２Ｎ２は、Ｎチヤンネル・トランジスタ４７４４のソースおよびＮチヤンネル・トランジスタ４７４５のソースに接続される。ノード４７２Ｎ３は、Ｎチヤンネル・トランジスタ４７４６のソースおよびＮチヤンネル・トランジスタ４７４７のソースに接続される。Ｎチヤンネル・トランジスタ４７４０、４７４２、４７４４および４７４６のおのおののゲートはＣＡＲＲＹＸに接続される。Ｎチヤンネル・トランジスタ４７４１、４７４３、４７４５および４７４７のおのおののゲートはＣＡＲＲＹに接続される。Ｎチヤンネル・トランジスタ４７４０および４７４７のドレインはノード４７６Ｎ０に接続され、そしてＮチヤンネル・トランジスタ４７４１および４７４２のドレインはノード４７６Ｎ１に接続され、そしてＮチヤンネル・トランジスタ４７４３および４７４４のドレインはノード４７６Ｎ２に接続され、そしてＮチヤンネル・トランジスタ４７４５および４７４６のドレインはノード４７６Ｎ３に接続される。ノード４７６Ｎ０、４７６Ｎ１、４７６Ｎ２および４７６Ｎ３のおのおのはそれぞれのＰチヤンネル・トランジスタ４７８０、４７８１、４７８２および４７８３のドレインに接続される。これらのＰチヤンネル・トランジスタのおのおののドレインはまたそれぞれの反転器４８００、４８０１、４８０２および４８０３の入力に接続される。これらのＰチヤンネル・トランジスタ４７８０、４７８１、４７８２および４７８３のすべてのゲートはＣＬＫに接続され、そしてこれらのＰチヤンネル・トランジスタのすべてのソースはＶＤＤに接続される。反転器４８００、４８０１、４８０２および４８０３の出力はそれぞれの制御信号Ｃ４．０、Ｃ４．１、Ｃ４．２およびＣ４．３を供給し、それにより前記で説明したようにＲＯＴＡＴＥ  ＳＴＡＧＥ３′を制御する。
【０１３０】
次に、図２２の概要図の動作を説明する。先ず、プリチャージ相の期間中、ＣＬＫは低レベルに進み、そしてＰチヤンネル・トランジスタ４７８０、４７８１、４７８２および４７８３のおのおのはイネーブルにされ、そしてそれによりそのそれぞれのドレインに接続されたノード４７６Ｎ０、４７６Ｎ１、４７６Ｎ２および４７６Ｎ３をプリチャージする。次に、評価相の期間中、多重レベル構造（明示はされていない）の中で実現されるようにＬ［４：３］＋Ｒ［４：３］の加算に応答して、Ｃ４．０″、Ｃ４．１″、Ｃ４．２″およびＣ４．３″の１つだけが表明される。したがって、Ｃ４．０″、Ｃ４．１″、Ｃ４．２″およびＣ４．３″の表明された１つが、それに接続されているＮチヤンネル・トランジスタ４７００、４７０１、４７０２および４７０３の１つをイネーブルにする。けれどもさらに、評価相の期間中にＣＡＲＲＹ信号またはＣＡＲＲＹＸ信号のいずれかが表明されるであろう。もしＣＡＲＲＹＸ信号が表明されるならば、その時にはノード４７６ＮｘのおのおのはそれぞれのＮチヤンネル・トランジスタ４７４ｘによってそれぞれのノード４７２Ｎｘに接続される。けれども、もしＣＡＲＲＹ信号が表明されるならば、その時には図示された構造はＣ４．０″、Ｃ４．１″、Ｃ４．２″およびＣ４．３″の４ビットの入力を１ビット位置だけ右にローティトする。例えば、もしＣ４．０″が表明され、一方ＣＡＲＲＹがまた表明されるならば、その時にはＮチヤンネル・トランジスタ４７４１はノード４７２Ｎ０をノード４７６Ｎ１に接続する。その時その同じ高レベル信号が反転器４８０１によって反転され、それによってＣ４．１に対する活性低レベル信号を供給する。この右シフト動作の同様の例は当業者によって確かめることができるであろう。
【０１３１】
第１のシフト・カウントに十分に応答して全データの引数を分離してシフトする必要としてその後に続いて第２のシフト・カウントに十分に応答して全データの引数を分離してシフトする必要とがなく、左および右のシフト・カウントの引数に応答してデータの引数を効率的にローティトするための命令に応答して動作することができる電子プロセッサが前記説明において示された。この機能が与えられるならば、次に、このようなプロセッサの付加的な実施例を説明する。この付加的な実施例は、特別の種類の左および／または右のシフト動作と組み合わせて付加的な機能を達成する。これらの機能のおのおのはプロセッサの命令に応答して、すなわち、与えられた命令がプロセッサ１００に送られる時、および応答の際データ・ローティト・ユニット２００はその命令に応答して動作する時、これらの機能のおのおのが選定されることが好ましい。またはそれとは異なって、下記のことをデータ・ローティト・ユニット２００′を用いるなお別の実施例でまた実現することができるが、しかし説明を簡単にするために残りの実施例はデータ・ローティト・ユニット２００に関連して示される。したがって、下記の考察は種々の異なるデータ操作命令を先ず説明し、そして次に、このような命令のおのおのに応答して要求された機能を実現するようにデータ・ローティト・ユニット２００をさらに補うブロック線図を説明する。
【０１３２】
１つの実施例の中でデータ・ローティト・ユニット２００によって実行することができる第１の命令は、ここでは、ＥＸＴＲＡＣＴ命令と呼ばれる。それは、この用語はこれまで、テキサス・インスツルーメンツ・インコーポレーデッド社(Texas Instrumentu Incorporated)によって市販されている一定のＤＳＰに関連して用いられていたからである。その名前が示しているように、ＥＸＴＲＡＣＴ命令は３２ビットのデータの量から多数のひとつながりのビットを抜き出し、そしてそれらを３２ビットの結果の中に配置するように動作する。ここで、これらの抜き出されたビットはオプションで符号拡張（それに代わって、ゼロあるかも知れない）によってその結果に先行し、そして下記で詳細に説明されるように、場合によっては後書きゼロがその結果の後に続く。さらに、抜き出されたビットの数およびその結果の中のそれらの位置決めは、５ビットの左シフトの引数Ｌおよび５ビットの右シフトの引数Ｒに応答して決定される。
【０１３３】
図１に戻るならば、それは３２ビットのデータ値Ｖ１に対するＥＸＴＲＡＣＴ命令の１つの例を示している。この例では、右シフトＲは左シフトＬよりも大きい。さらに具体的に言えば、Ｒ＝１０およびＬ＝６である。この好ましい実施例を理解するために、ここでこのＥＸＴＲＡＣＴ命令に対して、第２のシフトすなわち右シフトの中で結果として得られるＭＳＢは、左にシフトされた値ＶＬ１からの単一のＭＳＢを複製する符号拡張である。換言すれば、これらのビットのおのおのは左シフトの後のＭＳＢに整合する。したがって示された例では、符号拡張ビットのおのおのは、Ｌ＝６の左シフトの後のＶＬ１の最上位ビットであったビットＤ２５に整合する。第２に、Ｒビットの右シフトは効果においてＲ符号拡張ビットの中でシフトするという事実の結果として、符号拡張ビットの数はＲビットに等しい。
【０１３４】
図２に戻るならば、それは３２ビットのデータ値Ｖ１に対するＥＸＴＲＡＣＴ命令のまた別の例を示している。この例では、右シフトＲは左シフトＬより小さい。さらに具体的に言えば、Ｒ＝８およびＬ＝１６である。またこの好ましい実施例を理解するために、図２に関して次にいくつかの付加的な視察を行う。第１に、ＥＸＴＲＡＣＴ命令に関し、第１のシフトすなわち左シフトに対してＬＳＢがゼロで満たされる、すなわち、左にシフトされた値ＶＬ１はＬに等しい多数の最下位のゼロを有する。第２に、第２のシフトすなわち右シフトにおいてそしてＬ＞Ｒである時、その時にはＲに等しい多数のこれらのゼロが外にシフトされ、それにより結果ＶＲ１が得られる。したがって、最初のデータの引数Ｖ２から結果ＶＲ１に、そしてＬ＞Ｒである場合に、結果ＶＲ１の中の最下位のゼロ・ビットの数はＬ−Ｒに等しい。この後者の視察が与えられるならば、Ｒ＞Ｌである以前の図１の例に関して、最後の結果ＶＲ１の中に加えられた最下位のゼロ・ビットをなにも有しないことをまた記述することができる。換言すれば、もしＬ−Ｒ≦０ならば、その時には最終の結果ＶＲ１の中において加えられた最下位のゼロ・ビットをなにも有しない。
【０１３５】
ＥＸＴＲＡＣＴ命令に関して前記の視察が与えられるならば、図２３は、ＥＸＴＲＡＣＴ命令に対して要求された結果を達成するために、データ・ローティト・ユニット２００と機能的に組み合わせてこれらの視察を論理的に実現するための好ましい実施例のシステム２００１のブロック線図である。システム２００１はデータ・ローティト・ユニット２００１を有する。このユニットは、前記で説明したように、その入力データの引数Ｄ［３１：０］をＲ−Ｌの距離だけローティトする。ここで、このようなローティションの等価な結果がその代わりにＲ＋ＬＸ＋１のローティション転により達成されることが好ましい。データ・ローティト・ユニット２００１からの３２ビットの出力ＤＲＵ［３１：０］が３２ビットのマルチプレクサ５０２に対して１のデータ入力として接続され、そしてマルチプレクサ５０２の概要図の中ではこの第１の入力に隣接して名称「１」で示されている。下記でさらに支持されるように、この名称は、マルチプレクサ５０２に入力されそして「１」に等しい３２個の制御ビットＣＢ［３１：０］のおのおのに対し、マルチプレクサ５０２がＤＲＵ［３１：０］の対応するビット位置においてデータを選定することと、そしてその選定されたビットがマルチプレクサ５０２によって出力されることを示すこととを意図している。例えば、マルチプレクサ５０２に対する制御ビット入力ＣＢ［３１：０］が０に等しい１０個のＭＳＢ（すなわち、ＤＲＵ［３１：２２］＝０）を有すると仮定し、そして１に等しい２２個のＬＳＢ（すなわち、ＤＲＵ［２１：０］＝０）を有すると仮定する。１に等しい２２個のＬＳＢに応答して、マルチプレクサ５０２はデータ・ローティト・ユニット２００によって出力されるＤＲＵ［３１：０］のそれぞれの最下位２２ビットを選定する、すなわちそれはＤＲＵ［２１：０］を選定しそしてそれはこれらのビットをＡＮＤゲート５０４に対して入力として出力する。説明を簡単にするために、ＡＮＤゲート５０４は２つの３２ビット入力を有する単一のＡＮＤゲートとして示されていることに注目されたい。このことに関して、ＡＮＤゲート５０４は３２個のＡＮＤ回路として実現されることが当業者には分かるはずである。この場合には、ＡＮＤ回路のおのおのは同じビット位置にある１対のビットの間のＡＮＤ演算を実行する。したがって、ＡＮＤゲート４０４はその入力の１つのＭＳＢとその入力の他の１つのＭＳＢとの間のＡＮＤを実行し、そしてＡＮＤゲート５０４はその入力の１つにおける位置ＭＳＢ−１におけるビットとその入力の他の１つにおける位置ＭＳＢ−１におけるビットとの間のＡＮＤを実行し、そしてその入力のおのおのにおけるＬＳＢの間のＡＮＤを含むすべてのビットに対してもそうである。ＡＮＤゲート５０４の出力はＥＸＴＲＡＣＴ命令を実行する結果ＶＥＸＥＣ＿ＥＸＴを供給する。
【０１３６】
システム２００１はまた符号ビット・セレクト・ブロック５０６を有する。符号ビット・セレクト・ブロック５０６は、左シフトの引数Ｌからの値および３２ビット・データの引数Ｄ［３１：０］を入力として受け取る。符号ビット・セレクト・ブロック５０６は、３２ビット・データの引数Ｄ［３１：０］の中の位置３１−Ｌにおけるビットを選定しそして出力する。この動作は、ＥＸＴＲＡＣＴ命令の結果の中の１つまたは多くの最上位ビット位置を満たすことができる符号ビットを得るためである。それは前記で視察したように、これらの位置は左にシフトされた結果ＶＬ１の中の最上位ビットである符号ビットで満たされるからである。したがって、ブロック５０６に関連して、この同じビットがオリジナルのデータの引数Ｄ［３１：０］の中の位置３１−Ｌにあることが分かり、したがって、ブロック５０６はそのビットを出力するために選定することが分かる。例えば、Ｌ＝６である場合の図１に戻るならば、その時にはブロック５０６は位置３１−Ｌ＝３１−６＝Ｄ２５におけるビットを選定する。これは左にシフトされた値ＶＬ１の正しいＭＳＢであることが分かる。次に、この選定されたビットが出力され、そして３２ビット・マルチプレクサ５０２に対して第２のデータ入力として接続される。これはマルチプレクサ５０２の概要図の中の隣接するこの第２の入力は「０」の名称で示されている。この名称は、前記で説明した「１」に類似な方式であるがしかし相補的な方式であり、マルチプレクサ５０２に入力されそして「０」に等しい３２個の制御ビットＣＢ［３１：０］のおのおのに対し、マルチプレクサ５０２はブロック５０６によって供給されそしてその出力の対応するビット位置においてそれを出力する符号ビットを選定する、ことを意図している。例えば、マルチプレクサ５０２に対する制御入力は０に等しい１０個の最上位ビットを有しそして１に等しい２２個の最下位ビットを有すると仮定する。０に等しい１０個の最上位ビットに応答して、マルチプレクサ５０２はブロック５０６から単一の符号ビットを選定し、そしてそれをその出力の中の１０個のＭＳＢとしてＡＮＤゲート５０４に出力する。したがって下記でさらに示されるように、この出力はＥＸＴＲＡＣＴ命令を実行することから得られる結果ＶＥＸＥＣ＿ＥＸＴの最上位ビットの中に符号拡張ビットを供給する。
【０１３７】
システム２００１はまたＭＳＢ（ｓ）交互データ・マスク・ブロック５０８を有する。このＭＳＢ（ｓ）交互データ・マスク・ブロック５０８がそのように名付けられている理由は、あとで詳細に説明されるように、結果ＶＥＸＥＣ＿ＥＸＴの部分を形成するためにＤＲＵ［３１：０］から以外の交互データをマルチプレクサ５０２に選定させるためである。ＭＳＢ（ｓ）交互データ・マスク・ブロック５０８は右シフトの引数Ｒの値を入力として受け取り、そして３２ビットのサーモメータ・コードを制御ビット信号ＣＢ［３１：０］としてマルチプレクサ５０２に出力する。サーモメータ・コード（ｔｈｉｒｍｏｍｅｔｅｒ  ｃｏｄｅ）の業界において周知であるように、サーモメータ・コードは１組のつながったゼロと１組のつながった１とを有するコードである。ここでサーモメータという用語が用いられる理由は、１つの２進状態の数が温度計の場合のように降下または上昇する大きさを表すことができるという類推のためである。ブロック５０８に関して、そのサーモメータ・コードはゼロに等しいそのＭＳＢの数Ｒを有し、一方、ＬＳＢの任意の１つまたは多くが１に等しい。さらに、データ・ローティト・ユニット２００および符号ビット・セレクト・ブロック５０６に関して前記で導入したように、そしてここでさらに理解されるように、サーモメータ・コードは制御ビットＣＢ［３１：０］を供給し、したがって、データ・ローティト・ユニット２００の出力または符号ビット・セレクト・ブロック５０６の出力のいずれかからそれぞれのビットをマルチプレクサ５０２に選定させ、そして選定されたビットのおのおのがＡＮＤゲート５０４に出力される。例えば、マルチプレクサ５０２に対する制御ビット入力ＣＢ［３１：０］が０に等しい１０個のＭＳＢを有する例を再び想起する。この時には、この制御ビット入力ＣＢ［３１：０］は、次の表７に示された形式のように、ブロック５０８から３２ビットのサーモメータ・コードとして供給される。
【０１３８】
【表９】
2004206720.tif 000011
【０１３９】
図２３は、ブロック５０８の出力に隣接するこのようなコードが省略された形式で示されている場合を示している。下記でさらに示されるように、表７の制御ビット・コードは、ローティトされたデータ・ビットＤＲＵ［３１：０］に代わるものとして、最終の抜き出し命令の結果ＶＥＸＥＣ＿ＥＸＴの中のＭＳＢに対し、もしあれば、符号拡張ビットを選定するためのマスクを効果的に提供する。
【０１４０】
システム２００１はまたＬＳＢ（ｓ）ゼロ・マスク・ブロック５１０を有する。ＬＳＢ（ｓ）ゼロ・マスク・ブロック５１０がそのように名付けられた理由は、最終の抜き出し命令の結果ＶＥＸＥＣ＿ＥＸＴに対するＬＳＢの中にもしあればゼロ・ビットを選定するためのマスクをブロック５１０が提供するためである。ＬＳＢ（ｓ）ゼロ・マスク・ブロック５１０は右および左のシフトの引数ＲおよびＬのそれぞれの値を入力として受け取る。この時、ブロック５１０は差Ｌ−Ｒを決定する。そしてこの差が負ならば、その時にはブロック５１０はすべて１を有する３２ビット値を出力する。けれども、もしＬ−Ｒの差が正ならば、その時にはブロック５１０は値ゼロを有するＬＳＢ位置の数、すなわちＬ−Ｒに等しい数を有する３２ビットのサーモメータ・コードを出力し、一方、このコードの中の残りの任意のＭＳＢは１の値を有する。図２３は、ブロック５１０の出力に隣接するこのようなコードを省略された形式で示している。いずれの場合にも、ブロック５１０の出力はＡＮＤゲート５０４の第２の入力として供給される。
【０１４１】
次に、システム２００１の動作を説明する。図１に示されたパラメータに対するＥＸＴＲＡＣＴ命令を実行することに関して、すなわち、Ｒ＞Ｌである時そしてＲ＝１０およびＬ＝６であるという特定の例に対して、システム２００１の動作を先ず示す。導入として、最終のＥＸＴＲＡＣＴ命令の結果ＶＥＸＥＣ＿ＥＸＴは図１の中でＶＲ１として示されたものに整合しなければならないことに注目する。ここで、１０個のＭＳＢはＶＬ１のＭＳＢに整合する符号拡張ビットを有しなければならない。符号ビット・セレクト・ブロック５０６を先ず考察するならば、それはビット３１−Ｌ＝３１−６、すなわち入力データＤ［３１：０］のビット２５（すなわちＤ２５）を選定し、そしてマルチプレクサ５０２の「０」入力に対してこの単一の信号ビットを出力する。したがって図１から、ブロック５０６は左にシフトされた値Ｌ１のＭＳＢを上手に選定し、そしてそれをマルチプレクサ５０２に対して入力として供給することに注目されたい。さらに、ＭＳＢ（ｓ）交互データ・ビット・マスク・ブロック５０８はゼロに等しいＲ＝１０ＭＳＢを有しそして１に等しい残りの３２−Ｒ＝３２−１０＝２２ＬＳＢ位置を有するサーモメータ・コードを供給する。したがってこの例の場合、ブロック５０８はマルチプレクサ５０２に制御入力として表７のサーモメータ・コードを出力し、それによりそのコードの１０個のＭＳＢの中の０の値を供給する。応答の際、マルチプレクサ５０２はその出力の中に対応する１０個のＭＳＢであるために符号ビット・データをその「０」入力として選定し、そしてマルチプレクサ５０２はその出力の中に対応するＬＳＢであるためにＤＲＵ［３１：０］の２２個のＬＳＢをその「１」入力として選定する。したがって、その動作のこの点において、マルチプレクサ５０２の出力は図２４の左に予備的な値ＶＰＲＩ１によって示されている通りである。ここでは表示のために、符号拡張ビットのおのおのは「（ＳＥ）」のラベルを付けてまた示される。次に、ＬＳＢ（ｓ）ゼロ・マスク・ブロック５１０は、もしＬ−Ｒの差が正ならば、ゼロに等しい多数のＬＳＢを有するサーモメータ・コードを出力する。けれども、Ｌ＝６およびＲ＝１０であるこの例では、その差は負である。差が負であることに応答して、その代わりにブロック５１０はＡＮＤゲート５０４に対する入力として３２個の１の値のマスクを出力する。この場合のこのマスクは、図２４においてＭＫ１として示される。当業者には周知であるように、２入力ＡＮＤゲートに対して１つの入力として供給される時、このようなマスクはゲートにその他の入力に単に通過させる。これは、図２４の例ではＶＰＲＩ１である。したがって、図２４の右にこのＡＮＤ演算の結果が示され、それは実行されたＥＸＴＲＡＣＴ命令の結果ＶＲＸＥＣ＿ＥＸＴ１を提供する。したがってＶＲＸＥＣ＿ＥＸＴ１は、結果ＶＲＸＥＣ＿ＥＸＴ１の中の上部のＲ＝１０として符号拡張ビットを備えた図１の要求された結果ＶＲ１に整合する。
【０１４２】
次に、図２に示されたパラメータに対して、すなわちＬ＞Ｒの時、およびＲ＝８およびＬ＝１６である時の特定の例に対して、ＥＸＴＲＡＣＴ命令のその実行を考察することによって、システム２００１の動作をさらに説明する。導入として、最終のＥＸＴＲＡＣＴ命令の結果は図２のＶＲ２として示されているものに整合しなければならないことに注目されたい。ここでは、８個のＭＳＢはＶＬ２のＭＳＢに整合する符号拡張ビット有しなければならない。符号ビット・セレクト・ブロック５０６を考察するならば、それはビット３１−Ｌ＝３１−１６、すなわち入力データＤ［３１：０］のビット１５（すなわち、Ｄ１５）を選定し、そしてこの単一のビットをマルチプレクサ５０２の「０」出力に出力する。したがって図２から、ブロック５０６は左シフトされた値のＭＳＢを上手に選定し、そしてそれをマルチプレクサ５０２に対して入力として供給する。さらに、ＭＳＢ（ｓ）交互データ・ビット・マスク・ブロック５０８はゼロに等しいＲ＝８のＭＳＢおよび１に等しい残りの３２−Ｒ＝３２−８＝２４のＬＳＢを有するサーモメータ・コードを供給する。したがってこの例では、ブロック５０８は次の表８のサーモメータ・コードを制御ビット入力ＣＢ［３１：０］としてマルチプレクサ５０２に出力する。
【０１４３】
【表１０】
2004206720.tif 000012
【０１４４】
応答の際、マルチプレクサ５０２は８個のＭＳＢとして出力されるべき符号ビット・データをその「０」入力として選定し、そしてマルチプレクサ５０２は２４個のＬＳＢとして出力されるべき「１」入力におけるＤＲＵ［３１：１］の２４個のＬＳＢを選定する。したがって、その動作のこの点において、マルチプレクサ５０２の出力は図２５の左に予備的な値ＶＰＲＥ２によって示されている通りである。ここで再び図示のために、符号拡張ビットのおのおのはまた「（ＳＥ）」のラベルを付けて示されている。次に、ＬＳＢ（ｓ）ゼロ・マスク・ブロック５１０は、もしＬ−Ｒの差が正であるならば、ゼロの値を有するＬ−Ｒ  ＬＳＢを備えたサーモメータ・コードを出力する。実際、Ｌ＝１６およびＲ＝８のこの例では、差は８である。この正の差に応答して、ブロック５１０はゼロに等しい８個のＬＳＢと１に等しい残りのＭＳＢ（すなわち、２４ビット）とを有するサーモメータ・コード・マスクを出力する。ここで、このマスクは図２５においてＭＫ２として示されている。当業者には周知であるように、このようなマスクは２入力ＡＮＤゲートに入力として供給される時、そのゲートにその他もう１つの入力をゼロにさせ、したがって、３２ビットのマスクＭＫ２全体の結果として、ＶＰＲＥ２の２４個の最上位ビットが通過し、一方、８個の最下位ビットまたはＶＰＲＥ２はゼロにされ、図２５の右に示された結果ＶＥＸＥＣ＿ＥＸＴ２が残る。したがってＶＥＸＥＣ＿ＥＸＴ２は、結果ＶＥＸＥＣ２の中の上部のＲ＝８ビットのような符号拡張ビットを備えた図２の要求された結果ＶＲ２と整合することが当業者には容易に確かめることができる。
【０１４５】
前記の説明から、Ｄ［３１：０］および左および右のシフトの引数ＬおよびＲのそれぞれの値が与えられるならば、ＥＸＴＲＡＣＴ命令に対する要求された結果を提供するデータ・ローティト・ユニット２００のローティション機能をシステム２００１がシステムに組み込むことは、当業者には容易に確かめることができる。けれどもも、なお別の実施例では、下記でさらに考察されるように、なお付加的なデータ操作命令に適応するように本発明の範囲をさらに修正することができる。
【０１４６】
システム２００１はＳＨＩＦＴ  ＲＩＧＨＴ命令を容易に実現することができる。ここでその命令は、その名が示す通り、３２ビット・データＤ［３１：０］を右にだけシフトし、そしてそのシフトの量は右シフトの引数Ｒによって提供される。この場合、シフト右命令が実行されるべきである時、この命令に対する左シフトに対して０の配線値を供給することによるようないくつかの技術のいずれかにより、左シフトの量をゼロに設定することができる。Ｌ＝０の値に応答して、その時にはＬＳＢ（ｓ）ゼロ・マスク・ブロック５１０はＬ−Ｒに対する負値を実現するであろう。したがって、それはすべて１のサーモメータ・コードを供給するであろう。一方同時に、ＭＳＢ（ｓ）交互データ・マスク・ブロック５０８は前記で説明したようなサーモメータ・コードを供給するであろう、すなわち、Ｒ  ＭＳＢの中に０の値とそして残りのＬＳＢの中に１とを組み合わせて備えて供給するであろう。
【０１４７】
ＳＨＩＦＴ  ＲＩＧＨＴ命令を実行するためにシステム２００１を用いることに関する付加的な視察として、図２６との関連で次に考察されるように、プロセッサによっては、右シフトの引数および左シフトの引数が単一の組み合わされた引数の中のひとつながりの値として物理的データ・ピンに時として供給される。具体的に言えば、図２６は第１のひとつながりのピン引数ＣＡＲＧ１を示している。この第１のひとつながりのピン引数ＣＡＲＧ１は、５ビットの右シフト・ピン引数ＲＡＲＧ１と５ビットの左シフト・ピン引数ＬＡＲＧ１とを有する。好ましい実施例では、ひとつながりのピン引数ＣＡＲＧ１はデータ・ローティト・ユニット２００に入力される実際の物理的ピンを表し、したがって、これらのピンは前記で説明したＥＸＴＲＡＣＴ命令に対するシフトの引数ＬおよびＲに対する値をデータ・ローティト・ユニット２００に供給する。けれども、図２６はまた第２のひとつながりのピン引数ＣＡＲＧ２を示している。この第２のひとつながりのピン引数ＣＡＲＧ２は、単一の６ビットの右シフト引数ＲＡＲＧ２を有している。プロセッサによっては、この１ビット大きい引数は、単一の引数命令ＳＨＩＦＴ  ＲＩＧＨＴおよびＳＨＩＦＴ  ＬＥＦＴの引数に対するピン入力として用いることができる。ここで、この引数よりもさらに上位のビット位置の中の任意のビットはある一定の値であることができる。とにかく、ＥＸＴＲＡＣＴ命令に対するひとつながりの引数ＣＡＲＧ１の中の５ビットの引数と比較する時、６ビットの引数はそのシフト指示の中で１つ多いビットを提供する。したがって、ビットごとの比較では、ひとつながりの引数ＣＡＲＧ１のビットＬ０はひとつながりの引数ＣＡＲＧ２のビットＲ５と整列することにさらに注目されたい。この整列は、ＥＸＴＲＡＣＴ命令およびＳＨＩＦＴ  ＲＩＧＨＴ命令の両方に適応するためにシステム２００１を実現する時に考えることが必要であるであろう。換言すれば、もしデータ・ローティト・ユニット２００が５ビットのシフトの引数を備えた第１のピンのひとつづきの引数ＣＡＲＧ１を受け取るのと同じピンに沿って６ビットのシフトの引数を備えた第２のひとつづきのピン引数ＣＡＲＧ２を受け取るならば、その時には、さらに別の機能を用いることなく、ＣＡＲＧ２の中のＲ５に対するビットの組はＣＡＲＧ１の中のＬ０に対するビットの組として誤って解釈されることがある。この不測の事態に注意を向けるために、１つの方式では、その出力とＡＮＤゲート５０４との間に付加的な回路を備えるることによって、ＬＳＢ（ｓ）ゼロ・マスク・ブロック５１０の出力を無効にするために付加的な回路を備えることができる。ここでは下記で示されるように、このような回路により他の命令との関連で別の有用性をまた得ることができる。また別の方式では、左引数と共有されない異なる入力ピンに、第６のシフト・カウント・ビットを備えることができるであろう。いずれの場合にも、もし６ビットの右シフトの引数の中の最上位ビットがＳＨＩＦＴ  ＲＩＧＨＴ命令に対して設定されるならば、その時には、要求される右シフトは少なくとも３２であり、それによりデータＤ［３１：０］のすべてが要求された結果から外にシフトされること��注目されたい。したがって、ＭＳＢ（ｓ）交互データ・マスク・ブロック５０８の出力は、そのサーモメータ・コードの中にすべてのゼロをマルチプレクサ５０２に供給するように変更されなければならなく、それによりマルチプレクサ５０２にブロック５０６から符号ビットを選定させ、そしてその出力のすべてのビット位置の中のそれをマルチプレクサ５０２に供給させる。さらに、ＬＳＢ（ｓ）ゼロ・マスク５１０は必然的に（Ｌ−Ｒが負であるために）ＳＨＩＦＴ  ＲＩＧＨＴ命令に対するそのサーモメータ・コードの中のすべての１を出力するであろう。その時には、マルチプレクサ５０２からの同じ出力は実行された命令の最終の出力ＶＥＸＥＣ＿ＥＸＴとして現れるであろう。
【０１４８】
図２３のシステム２００１は、図２８に示されているような一定の変更を行うことにより、ＳＨＩＦＴ  ＬＥＦＴ命令と当業者に呼ばれている結果をまた容易に達成することができ、それはまた別の実施例のシステム２００２を提供する。図２８のシステム２００２を考察する前に、そして後で参照される例のためにおよびそれにより好ましい実施例の種々の概念をさらによく理解するために、ＳＨＩＦＴ  ＬＥＦＴ命令に対して用いられる時のシステム２００２の全体の結果として得られる動作の例を図２７は示している。図２７の左には、ＶＰＲＥ３として示されたＤ［３１：０］に対する予備的な値が示されている。システム２００２の要求された動作はＶＰＲＥ３を左に１６回シフトすることであると仮定する。したがって、Ｄ［３１：０］がデータ・ローティト・ユニット２００に供給され、そして左シフトの引数Ｌの値１６がシステム２００２に供給される。下記で説明される中間機能に応答して、データ・ローティト・ユニット２００はデータ・ローティトされた値ＶＤＥ１を供給する。図２７に示されているように、この値ＶＤＥ１は１６の左ローティションに対応する。けれども、好ましい実施例におけるデータ・ローティト・ユニット２００は実際に右ローティションを実行し、したがって、同じ値ＶＤＥ１は−Ｌ、すなわち−１６の右ローティションとして記述することができる。値ＶＤＥ１がいったん供給されると、その時にはシステム２００２はまたマスクＭＫ３を供給する。ここで、このマスクの発生は下記で詳細に説明される種々のブロックと関連しており、そしてその時、マスクＭＫ３は値ＶＤＥ１と論理的にＡＮＤ演算される。この動作により、図２７の右に示された結果ＶＥＸＥＣ＿ＳＬが得られる。したがって、ＶＥＸＥＣ＿ＳＬの１６個のＬＳＢの２進値を残して、ＶＥＸＥＣ＿ＳＬはＶＰＲＥ３の左シフトの要求された結果に整合することを当業者は容易に確かめることができる。したがって、図２７の左シフトされた結果ＶＥＸＥＣ＿ＳＬと右シフトを含む図２５のＥＸＴＲＡＣＴ命令の結果ＶＥＸＥＣ＿ＥＸ２とを対照させる時、ＶＥＸＥＣ＿ＳＬは１つまたは多くのＬＳＢ位置の中にゼロを有し、一方、ＶＥＸＥＣ＿ＥＸ２は１つまたは多くのＭＳＢ位置の中に符号拡張ビットを有することにまた注目されたい。この差は、下記でさらに考察されるように、システム２００１のものとは対照的であるシステム２００２のマスキング方式を生ずる。
【０１４９】
次に、図２８のシステム２００２を考察するならば、それはシステム２００１と同じであるが下記の付加的な変更を有するブロックを有する。第１に、符号ビットセレクト・ブロック５０６に対して「０」データ入力が示されている。この入力は、データＤ［３１：０］のそのブロックへの入力を置き換えている。第２に、ＭＳＢ（ｓ）交互データ・ビット・マスク・ブロック５０８はマルチプレクサ５０２への制御入力として直接に接続されることはもはやなく、その代わりにその出力はマスク修正ブロック５２０に入力として接続される。マスク修正ブロック５２０の出力はマルチプレクサ５０２に対して制御ビット入力ＣＢ［３１：０］を供給するように接続される。ＬＳＢ（ｓ）ゼロ・マスク・ブロック５１０の３２ビットの出力はＯＲゲート５２２に対して第１の入力として接続される。ＯＲゲート５２２は、ＡＮＤゲート５０４に対して入力として３２ビットの出力を供給する。ＯＲゲート５２２の第２の３２ビットの入力はＯＶＥＲＲＩＤＥ信号に接続される。ＡＮＤゲート５０４の出力は実行されたＳＨＩＦＴ  ＬＥＦＴ命令の結果を供給する。ここでは、その結果は図２８においてＶＥＸＥＣ＿ＳＬとして示されている。これらの種々の違いおよび新規に追加されたマスク修正ブロック５２０の付加的な機能は、下記においてその動作の説明から分かる。最後に、ＳＨＩＦＴ  ＬＥＦＴ命令に対して、左シフトの引数だけがシステム２００２に供給さることが必要である。けれども、下記で詳細に説明される理由により、その引数はシフト・カウント転送マルチプレクサ５２４によって先ず操作されることが好ましく、そして次にこの操作された値がまた下記で説明されるようにして出力される。
【０１５０】
ＳＨＩＦＴ  ＬＥＦＴ命令に応答して左シフトを達成するためのシステム２００２の動作を次に調べる。先ず、左シフト引数に関する供給およびシステム２００２によるその受け取りを考察する。具体的に言えば、ＳＨＩＦＴ  ＬＥＦＴ命令が供給される時、シフト・カウント転送マルチプレクサ５２４は対応する左シフトの引数Ｌを受け取る。けれども、好ましい実施例では、データ・ローティト・ユニット２００の物理的ピンは図２６のひとつながりのピン引数ＣＡＲＧ１またはＣＡＲＧ２のいずれかの形式を取ることを想起する。したがって、単一のシフト引数、すなわち左シフト引数だけがＳＨＩＦＴ  ＬＥＦＴ命令と共にシフト・カウント転送マルチプレクサ５２４に供給されるから、その時には付加的な段階なしに、その引数はひとつながりのピン引数ＣＡＲＧｘの最下位ピンに供給されるであろう。けれども図２６において、これらの最下位ピンは左シフトの引数よりもむしろ右シフトの引数に対応することに注目されたい。したがってこの例では、左シフトの引数はこれらの最下位ピン位置に供給される時、それはデータ・ローティト・ユニット２００の視点から右シフトの引数として認められるであろう。例えば、１６位置の左シフトが要求されている図２７の例を考える。したがって、ＳＨＩＦＴ  ＬＥＦＴ命令が生ずる時、Ｌ＝１００００の２進値がシフト・カウント転送マルチプレクサ５２４に送られ、そしてその時に付加的な動作なしに、その左シフト値がひとつながりのピン引数ＣＡＲＧｘの最下位のピン位置に供給され、それにより要求された右シフトの引数として受け取られるであろう。この結合性を補償するために、好ましい実施例では、シフト・カウント転送マルチプレクサ５２４は指定された左シフトの値を対応する右シフトの値に効果的に変換することに向けて１段階進む。さらに具体的に言えば、当業者には周知のように、多数のビット位置の右シフトはその同じ数のビット位置の負の左シフトに等しい。１６ビット位置の左シフトが要求されているこの例では、図２７に関して前記でまた見たように、それは負の１６ビット位置の右シフトを達成することに等価である。これらの原理が与えられるならば、好ましい実施例では、左シフトの引数の値Ｌを負の右シフトの引数Ｒに変換することが要求される。このことは、受け取られた左シフトの引数Ｌの負値を形成することによって達成することができる。２進の技術において周知であるように、与えられた２進数の負値は与えられた２進数のツース(twos)補数を取ることによって形成される。このことは、その数を反転しそして１を加算することによって達成される。この目的に向かって、好ましい実施例では、シフト・カウント転送マルチプレクサ５２４が受け取られた左シフトの引数Ｌの値を反転する。それに加えていま説明したように、ツースの補数を形成するために、次にそれを反転された値にまた加算しなければならない。この付加的な特性を達成するために、好ましい実施例では、データ・ローティト・ユニットはＲ＋ＬＸ＋１の式１のシフトを達成し、それによりその最後の加数としてその加算を含むことを想起する。したがって、データ・ローティト・ユニット２００を用いて「＋１」の特性を得ることができる。この時���この目的に向かって、シフト・カウント転送マルチプレクサ５２４は左データ・シフトの引数Ｌを反転し、そして右ピン引数ＲＡＲＧ１にこの反転された結果を供給する。応答の際の適切なシフト動作の結果は、下記における残りの考察からさらに分かるであろう。
【０１５１】
前記の説明に加えて、ＳＨＩＦＴ  ＬＥＦＴ命令に対して、シフト・カウント転送マルチプレクサ５２４はまたＬ＝１１１１１の５ビット値（または、もし５ビットよりはむしろ６ビットの入力が用いられるならばＬ＝１１１１１１）を左ピン引数ＬＡＲＧ１に供給する。具体的には、データ・ローティト・ユニット２００はＲ＋ＬＸ＋１の式１のシフトを達成すべきであるから、したがってその時にはＬＸの値、すなわちＬの補数が要求されるであろう。したがって、ＳＨＩＦＴ  ＬＥＦＴ命令に対する適切な結果を実行するために、シフト・カウント転送マルチプレクサ５２４が左ピン引数ＬＡＲＧ１にＬ＝１１１１１の値を供給する時、その時にはＬＸの値は定義によりＬＸ＝０００００である。したがって、データ・ローティト・ユニット２００が応答の際にＲ＋ＬＸ＋１の位置のシフトを実行する時、ＳＨＩＦＴ  ＬＥＦＴ命令に対して、それはＲ＋０＋１＝Ｒ＋１の量をシフトする。前記で示したように、ＲはＳＨＩＦＴ  ＬＥＦＴ命令に対してＬの補数として導かれ、したがってＲ＋１の結果はＬのツース補数を供給し、それによってそのツース補数に等しい多くの位置の右シフトが結果として生ずる。
【０１５２】
ＳＨＩＦＴ  ＬＥＦＴ命令との関連でシステム２００２の動作の付加的な特徴を詳細に説明する前に、データ・ローティト・ユニット２００の動作が関与している範囲内で、前記で説明した概念の観点で図２７の数値の例を調べる。ここでは、その例において１６個のビット位置の左シフトがＶＰＲＥ３について要求されることを想起する。ＳＨＩＦＴ  ＬＥＦＴ命令が、システム２００２を有するプロセッサに対して発生され、そして同時に左シフトの引数Ｌ＝１６がシフト・カウント転送マルチプレクサ５２４に供給される。したがって、２進形式ではＬ＝１００００であり、そしてシフト・カウント転送マルチプレクサ５２４はその補数０１１１１を決定し、そしてこの補数値をひとつながりにされたピン引数ＣＡＲＧ１の５個の最下位ビット（またはひとつながりにされたピン引数ＣＡＲＧ２に対しては６個のビット）に供給する。したがって、これらのビットはデータ・ローティト・ユニット２００によって右シフト・ピン引数ＲＡＲＧ１として受け取られる。それに加えて、ＳＨＩＦＴ  ＬＥＦＴ命令に応答して、シフト・カウント転送マルチプレクサ５２４は値Ｌ＝１１１１１を左シフト・ピン引数ＬＡＲＧ１をその補数ＬＸＡＲＧ１が０００００であるように供給する。次に、データ・ローティト・ユニット２００は、Ｒ＋ＬＸ＋１に等しい多くのビット位置の右ローティションを実行する。この例ではＲ＋ＬＸ＋１は０１１１１＋０００００＋１に等しく、これは２進値の１００００または１０進値の１６に等しい。したがってこの例では、１６の左シフトに対する要求された結果は１６位置だけ効果的に右にローティトすることによって到達される。さらに、下記でさらに考察されるように、１６の要求された左シフトに対して図２７の最終の結果ＶＥＸＥＣ＿ＳＬを達成するように、付加的なマスキングがまたシステム２００２によって実行される。
【０１５３】
システム２００２の付加的な動作を続けるならば、ＬＳＢ（ｓ）ゼロ・マスク・ブロック５１０が差Ｌ−Ｒを決定し、そして応答するサーモメータ・コードを出力することを想起する。さらに前記の考察から、ＳＨＩＦＴ  ＬＥＦＴ命令に対してＬＡＲＧ１が１１１１１であり、したがって結果として得られるサーモメータ・コードはマルチプレクサ５０２の出力との接続に用いるための適切なマスクを提供しないであろう。このことに関して、その代わりに、ＳＨＩＦＴ  ＬＥＦＴ命令が実行される時、その時にはＯＶＥＲＲＩＤＥは高レベルに表明され、それはＯＲゲート５２２に３２個の高レベル入力を供給し、そしてブロック５１０からの出力のおのおのとＯＲ演算を受け、それによりそれらを効果において無視し、そこではＯＲゲート５２２の３２ビット出力の全部は高レベルであるであろう。さらに、これらの高レベルの３２ビットはＡＮＤゲート５０４に対して入力として供給されるから、その時にはマルチプレクサ５０２の出力からＡＮＤゲート５０４の他の入力に送られる値がどのようであっても、それらはそのままにＡＮＤゲート５０４に出力させるであろう。したがって前記の説明から、ＯＶＥＲＲＩＤＥ信号を表明することは、ブロック５１０の出力がＳＨＩＦＴ  ＬＥＦＴ命令によって生成されるべき結果に影響することを効果的に除去する。
【０１５４】
システム２００２の動作の考察を完了する時、シフト動作の最終の結果のＬＳＢ（ｓ）の中の必要なゼロを含むための適切なマスキングを達成するために、マスク修正ブロック５２０が備えられる。例えば図２７を参照して、図２８からのブロック５２０は、ＶＥＸＥＣ＿ＳＬの中の１６個のＬＳＢがゼロの値を供給するようなマスクＭＫ３を提供する。第１に、ＭＳＢ（ｓ）交互データ・マスク５０８は右シフトの引数Ｒを受け取り、そしてそれは０の値に等しいＲ最上位ビット位置を有するサーモメータ・コードを出力することを想起する。ＥＸＴＲＡＣＴ命令およびＳＨＩＦＴ  ＲＩＧＨＴ命令に対して、それによりこれらの０が符号ビット・セレクト・ブロック５０６の出力を選定し、その結果のＭＳＢの中に現れるように選定する。それとは対照的に、ＳＨＩＦＴ  ＬＥＦＴ命令を達成するためのシステム２００２に対して、その結果のＬＳＢがゼロの値を含むことを要求する。この目的に向けて、ゼロの値が符号ビット・セレクト・ブロック５０６に入力として入力され（または、ＳＨＩＦＴ  ＬＥＦＴ命令に応答して用いるための回路に配線され）、したがってその命令の結果の中の適切なＬＳＢに対してマルチプレクサ５０２によってその値を選定することができる。ゼロの値はＭＳＢよりはむしろＬＳＢに対するものであるから、その時にはマルチプレクサ５０２に対するサーモメータ・コード制御ビット入力ＣＢ［３１：０］がマスク修正ブロック５２０によって達成されるように修正されなければならない。具体的に言えば、好ましい実施例では、マスク修正ブロック５２０はＭＳＢ（ｓ）交互データ・マスク・ブロック５０８からサーモメータ・コードを受け取り、そしてそのサーモメータ・コードを反転し、そしてそれを１ビットだけ右にシフトし、それによりＣＢ［３１：０］のような結果として得られた修正されたサーモメータ・コードをマルチプレクサ５０２を制御するために出力する。再び、１６の左シフトに対する図２７の例を考える。この場合に、Ｌ＝１００００でありそしてシフト・カウント転送マルチプレクサ５２４がその補数０１１１１を決定し、そしてそれを右シフトピン引数ＲＡＲＧ１としてデータ・ローティト・ユニット２００に供給することを想起する。したがって、ＭＳＢ（ｓ）交互データ・マスク・ブロック５０８は、１５の１０進値に対応するＲＡＲＧ１＝０１１１１の２進値を受け取る。したがって、ＭＳＢ（ｓ）交互データ・マスク・ブロック５０８は１５個のＭＳＢのおのおのの中に配置されたゼロを有し、したがってその結果残りの１７個のＬＳＢのおのおのの中に配置された１を有する、サーモメータ・コードを出力する。けれども、マスク修正ブロック５２０はこの入力サーモメータ・コードを受け取り、そしてそれを反転し、それによってその１５個のＭＳＢのおのおのの中に配置された１を有ししたがってその残りの１７個のＬＳＢのおのおのの中に配置されたゼロを有する中間の修正されたサーモメータ・コードを生ずる。次に、ブロック５２０はその中間の修正されたサーモメータ・コードを右に１位置だけシフトし（シフトされた値のＭＳＢの中に「１」を持ち込む）、それによって図２７の中のマスクＭＫ３に対応する、すなわち１６個のＭＳＢのおのおのの中に配置された１を有ししたがってその残りの１６個のＬＳＢのおのおのの中に配置されたゼロを有する、最終の修正されたサーモメータ・コードを生ずる。けれども、図２７とは異なって、システム２００２の動作の中におけるこの最終の修正されたサーモメータ・コードは論理的にはＡＮＤ演算はされなく、その代わりにそれはマルチプレクサ５０２を制御する。したがって、この最終の修正されたサーモメータ・コードの１６個のＭＳＢのおのおのの中に配置された１に応答して、マルチプレクサ５０２はデータ・ローティト・ユニット２００によって出力される対応するビット位置値を選定しそして出力し、それによってマルチプレクサ出力の１６個のＭＳＢの中のビットＤ１５：Ｄ０を出力する。同時に、最終の修正されたサーモメータ・コードの１６個のＬＳＢのおのおのの中に配置されたゼロに応答して、マルチプレクサ５０２は符号ビット・セレクト・ブロック５０６によって供給されるゼロの値を選定しそして出力し、それによってマルチプレクサ出力の１６個のＬＳＢのおのおのの中のゼロの値を出力する。最後に、マルチプレクサ５０２の出力はＡＮＤゲート５０４に接続されるが、しかしＳＨＩＦＴ  ＬＥＦＴ命令の実行と同時にＯＶＥＲＲＩＤＥ信号の表明により、マルチプレクサ５０２の出力はＡＮＤゲート５０４をそのままに通過し、それによって図２７の右に示された結果ＶＥＸＥＣ＿ＳＬとして示されたのと同じ結果が供給されることを想起する。最後に、もし左シフトの引数が６ビットの引数であるならば、そしてもしこの６ビットのシフトの引数の中の最上位ビットがＳＨＩＦＴ  ＬＥＦＴ命令に対して設定されるならば、その時には少なくとも３２ビット位置の要求される左シフトは、したがってＭＳＢ（ｓ）交互データ・マスク５０８およびマスク修正ブロック５２０の出力の動作は、そのコード・ビットＣＢ［３１：０］がマルチプレクサ５０２に対してすべてゼロ供給するように修正されなければならない。それによって、マルチプレクサ５０２にブロック５０６からの「０」の値を選定させ、そしてマルチプレクサ５０２に対するその出力のすべてのビット位置にそれを供給させる。
【０１５５】
図２３のシステム２００１は、図２９に示されているようないくつかの修正が行われれば、そしてそれによりまた別の実施例のシステム２００３を提供するが、先行技術のプロセッサにおいてＳＥＴ命令およびＣＬＥＡＲ命令と呼ばれているものの結果を容易に達成することができる。図２９のシステム２００３を考察する前に、そして後で参照される例のために、およびそれによって好ましい実施例の種々の概念をさらによく理解するために、図３０はＳＥＴ命令またはＣＬＥＡＲ命令のいずれかに対して用いられた時のシステム２００３の結果として生ずる動作の全体の１つの例を示した図である。全体的に言えば、データ入力の中の指定されたトップ位置とボトム位置との間のデータ・ビット位置をＳＥＴ命令は設定しそしてＣＬＥＡＲ命令はクリアする。ここで、これらの指定された場所は、それぞれ、シフトの引数ＲおよびＬによって指示される。したがって図３０に関して、その左側にＶＰＲＥ４として指示されたＤ［３１：０］に対する予備的な値をそれが示し、そしてシステム２００３の要求された動作はＳＥＴ命令またはＣＬＥＡＲ命令のいずれかを実行することである。このような命令のいずれかに対して、ＲおよびＬのシフトの引数の値はＶＰＲＥ４の中のそれぞれのトップ位置およびボトム位置を示す。ここで、指定されたボトム・ビット位置およびそのトップ位置を含めてトップ位置までのビット位置のデータは、１に設定される（ＳＥＴ命令の場合）かまたはゼロにクリアされる（ＣＬＥＡＲ命令の場合）のいずれかであるべきであり、そしてここで残りのデータ、すなわちトップ・ビット位置の上の開始データおよびボトム・ビット位置の下のデータは入力データからは変わらないままである。例えば、図３０はＬ＝１４およびＲ＝２１の場合を示している。したがって、この命令が実行される時、Ｌ＝１４の引数はビット位置１４におけるデータＤ１４を設定またはクリアさせ、対応するビット位置の中の「Ｓ／Ｃ」によって値ＶＥＸＥＣ＿Ｓ／Ｃを結果において示す。それに加えて、Ｒ＝２１の引数はビット位置２１におけるデータＤ２１を設定またはクリアさせ、対応するビット位置の中の「Ｓ／Ｃ」によって値ＶＥＸＥＣ＿Ｓ／Ｃをまた結果において示す。最後に、位置１４および２１のビットを設定またはクリアすることに加えて、これらのビット位置の間のデータすなわち残りのビットＤ１５ないしＤ２０の間のデータはまた、その命令がＳＥＴ命令であるかまたはＣＬＥＡＲ命令であるかのそれぞれに応じて、設定またはクリアされる。したがって、結果ＶＥＸＥＣ＿Ｓ／Ｃは最終的に設定／クリアされたビットのブロックＢＬ１を供給し、これらのビットの依然として外側のＶＰＲＥ４からの残りのデータは、ＶＥＸＥＣ＿Ｓ／Ｃのそれぞれのビット位置に転送される。
【０１５６】
ＳＥＴ命令およびＣＬＥＡＲ命令の結果が示さたので、図２９のシステム２００３に注意を戻すことにする。システム２００３は、ＳＥＴ命令およびＣＬＥＡＲ命令に対する実行された対応する結果ＶＥＸＥＣ＿Ｓ／Ｃを生ずるために、好ましい実施例の図２３のシステム２００１に対して一定の修正を行ったシステムである。システム２００３は本質的にデータ・ローティト・ユニット２００のローティト機能をバイパスし、そしてその代わりに下記で説明されるように、ＳＥＴ命令に対して１の出力またはＣＬＥＡＲ命令に対してゼロの出力を供給するためにユニット２００を用いることができる。次に、システム２００３を詳細に考察するならば、データＤ［３１：０］はデータ・ゲート５３０に入力される。データ・ゲート５３０はそのデータにゲート演算を行い、そしてマルチプレクサ５０２の「０」入力に対して不変の形式でそれを出力する。したがって、前記の実施例に対して説明したようにマルチプレクサ５０２は、マルチプレクサ５０２に対する３２ビット入力制御ビット・コードＣＢ［３１：０］の同じビット位置の中の「０」に対応するビット位置のおのおのにおいてこのデータを選定する。データＤ［３１：０］はデータ・ローティト・ユニット２００にまた入力されるが、しかし下記で分かる理由により、ユニット２００はＳＥＴ命令を実行する時に３２個の１の値を出力し、そしてＣＬＥＡＲ命令を実行する時には３２個のゼロの値を出力する。したがってこれらの２つの命令に関して、入力データＤ［３１：０］はデータ・ローティト・ユニット２００に対して影響を及ぼさない。同じ結果を達成するためのまた別の方法として、図２９はデータ・ローティト・ユニット２００の出力がマルチプレクサ５４０に第１の入力５４０１として接続される。マルチプレクサ５４０の第２の入力５４０２はＳＥＴ命令に対して１の値またはＣＬＥＡＲ命令に対して０の値のいずれかを受け取るために接続される。マルチプレクサ５４０はまたＳ＆Ｃとして示された制御信号を受け取る。このＳ＆Ｃとして示された制御信号はＳＥＴ命令とＣＬＥＡＲ命令との両方に対して表明され、それによってマルチプレクサ５４０にその第２の入力５４０２を選定させ、それによりそれぞれ１または０のいずれかを選定させ、そしてそれを３２ビット出力の中のビット位置のおのおのに供給する。５ビットの左および右のシフトの引数ＬおよびＲはそれぞれ、シフト・カウント転送マルチプレクサ５２４に再び入力される。それに応答して、シフト・カウント転送マルチプレクサ５２４はＬの値を５ビットの左シフト・ピン引数ＬＡＲＧ１に結合する。けれどもＲの値に関しては、下記で説明される理由のために、シフト・カウント転送マルチプレクサ５２４はその補数を５ビットの右シフト・ピン引数ＲＡＲＧ１に結合する。
【０１５７】
システム２００３は、システム２００１のＭＳＢ（ｓ）交互データ・マスク・ブロック５０８を有する。このＭＳＢ（ｓ）交互データ・マスク・ブロック５０８は５ビットの右シフト・ピン引数ＲＡＲＧ１を受け取るが、しかしシステム２００３はＬＳＢ（ｓ）交互ゼロ・マスク・ブロック５１０を有していない。その代わりにシステム２００３は、設定／クリア・マスク・ブロック５５０を有している。好ましい実施例では、設定／クリア・マスク・ブロック５５０は５ビットの左シフト・ピン引数ＬＡＲＧ１を受け取り、そしてそれに応答してブロック５５０はそのＬＡＲＧ１のＬＳＢの中にゼロの値を有しそしてその残りのＭＳＢの中に１の値を有する３２ビットのサーモメータ・コードを出力する。したがって前記の図と同様に、図２９は設定／クリア・マスク・ブロック５５０の出力に隣接してこのようなコードが省略された形式で描かれている。このコードはマスク組合せブロック５６０に接続される。マスク組合せブロック５６０はまた、ＭＳＢ（ｓ）交互データ・マスク・ブロック５０８からサーモメータ・コード出力を受け取る。好ましい実施例では、マスク組合せブロック５６０はそれが入力として受け取る２つの３２ビットのサーモメータ・コードから対応するビット位置のおのおのと論理ＡＮＤ演算を実行する、すなわち２つのコードのビット３１が一緒にＡＮＤ演算されそしてその結果が出力５６０ｏｕｔにビット３１として供給され、一方、同様に２つのコードのビット３０が一緒にＡＮＤ演算されそしてその結果が出力５６０ｏｕｔにビット３０として供給され、そして２つの入力サーモメータ・コードの中の残りのそれぞれのビットに対して同様に行われる。出力５６０ｏｕｔにおいて結果として得られる３２ビットのコードはマルチプレクサ５０２に制御ビット・コードＣＢ［３１：０］として接続される。
【０１５８】
次に、システム２００３の動作を説明する。図３０を例として考察する。図３０の例は、ここで考察されるように、システム２００３によって生成されるサーモメータ・コードＴＣ１およびＴＣ２とマスクＭＫ４と一緒に図３１の中で繰り返されている。設定／クリア・マスク・ブロック５５０はＬＡＲＧ１＝Ｌ＝１４の値を受け取り、そしてそれに応答してそれはＬ＝１４ＬＳＢの位置に値ゼロを有し残りの１８個のＭＳＢの位置に１の値を有するサーモメータ・コードＴＣ１を出力する。ＭＳＢ（ｓ）交互データ・マスク・ブロック５０８はＲＡＲＧ１を受け取る。それはＳＥＴ命令またはＣＬＥＡＲ命令がＲの補数としてシフト・カウント転送マルチプレクサ５２４によって供給されることを想起する。したがってこの例では、Ｒ＝２１がＲＡＲＧ１としてＭＳＢ（ｓ）交互データ・マスク・ブロック５０８に供給される。Ｒ＝２１は２進値１０１０１でありしたがってその補数は０１０１０であるすなわち１０進値１０である。応答の際、ブロック５０８はＲＡＲＧ２＝１０（１０進値）のＭＳＢ位置に値ゼロを有し残りの２２個のＬＳＢ位置に１の値を有するサーモメータ・コードＴＣ２を出力する。次に、サーモメータ・コードＴＣ１およびＴＣ２はマスク組合せブロック５０８に接続される。マスク組合せブロック５０８はそれぞれのビット位置のおのおのについてビットごとに論理ＡＮＤ演算を実行する。この演算は、出力５６０ｏｕｔにマスクＭＫ４を生じそして出力する。したがって、当業者には容易に確かめることができるように、マスクＭＫ４はＶＰＲＥ４からのビット［Ｄ２１：Ｄ１４］に対応するビット位置にだけ１の値を有し、ここでマスクＭＫ４の中の残りのビット位置はゼロの値を有する。さらに、マスクＭＫ４は制御マルチプレクサ５０２に接続される。したがって、マスクＭＫ４の中のビット位置［２１：１４］における論理値１に応答して、マルチプレクサ５０２はその「１」入力からマルチプレクサ５４０からの出力を選定する。ここで、マルチプレクサ５４０はＣＬＥＡＲ命令に対してゼロまたはＳＥＴ命令に対して１のいずれかを供給する。マルチプレクサ５０２によってこの値が選定されそして最終の実行された結果ＶＥＸＥＣ＿Ｓ／Ｃの中のビット位置［２１：１４］に出力される。それにより、ブロックＢＬ１が形成される。ブロックＢＬ１において、ＳＥＴ命令とＣＬＥＡＲ命令との両方を示すために、そのビットは設定／クリア・ビット位置の中に設定／クリアの指示「Ｓ／Ｃ」を含むために示される。ビット位置［２１：１４］以外のすべてのビット位置において、マスクＭＫ４は論理値ゼロを有する。したがって、これらの他のビット位置に対して、マルチプレクサ５０２はその「０」入力からデータ・ゲート５３０からの出力、すなわちＤ［３１：０］の中のそれぞれのビット位置からのビットを選定する。したがって、ブロックＢＬ１の外側の実行結果ＶＥＸＥＣ＿Ｓ／Ｃの中のビット位置に対して、これらのビット位置ＶＥＸＥＣ＿Ｓ／Ｃ［１３：０］およびＶＥＸＥＣ＿Ｓ／Ｃ［３１：２２］はＤ［３１：０］の中のそれぞれのビット位置からのデータに等しい。
【０１５９】
図２３のシステム２００１はまた、先行技術のプロセッサにおいてＦＵＮＮＥＬシフト命令として呼ばれている命令の結果を容易に達成することができる。このＦＵＮＮＥＬシフト命令は２つのひとつづきの３２バイトのデータの引数のバイト粒の右シフトを実行し、ここでこのような設備は図３２に示された一定の変更された設備で達成される。これはまた別の実施例のシステム２００４を提供する。図３２のシステム２００４を考察する前におよびこの好ましい実施例の考察において後で参照するために、図３３はＳＨ１、ＳＨ２およびＳＨ３で示された３つの異なるバイトに基づくファネリング・シフトの結果を示している。図３３の左から出発して、Ａ［３１：０］およびＢ［３１：０］として示された２つの３２ビット・データ引数が示されている。Ａ［３１：０］およびＢ［３１：０］のおのおのは４つのそれぞれのバイトＡ０ないしＡ３およびＢ０ないしＢ３に分割される。ここで、２つのデータ引数は６４ビットの量を形成するためにひとつながりにされている。この同じ量が図３３において２度さらに繰り返されるが、しかし図の左にその最初の図に続いて、その例の次にそしてその右にＳＨ１として示された１バイト・シフトに対するＦＵＮＮＥＬ  ＳＨＩＦＴ命令の結果の指示がある。ＳＨ１を得るために、ひとつながりにされた６４ビットの量が１バイトだけ右にシフトされ、そして最下位３２ビットが結果ＳＨ１を形成する。この同じ一般的な技術が、図３３の中央の２バイト・シフトＳＨ２を実行するＦＵＮＮＥＬ  ＳＨＩＦＴ命令に対してまた示されている。そして３バイト・シフトＳＨ３を実行するＦＵＮＮＥＬ  ＳＨＩＦＴ命令に対しては、図３３の右に向けてまた示される。したがっておのおのの場合に、６４ビットのひとつながりにされた値は多数のバイト（すなわち、１バイト、２バイトまたは３バイト）右にシフトされ、そして結果ＳＨｘは右シフトの後の３２個のＬＳＢである。
【０１６０】
ＦＵＮＮＥＬ  ＳＨＩＦＴ命令の結果が示されたので、図３２のシステム２００４に注意を戻す。図３２のシステム２００４は、ＦＵＮＮＥＬ  ＳＨＩＦＴ命令を実施しそして対応する実行された結果ＶＥＸＥＣ＿ＦＳを生ずるための好ましい実施例の中の図２３のシステム２００１に対して一定の修正を有しているシステムである。下記でさらに示されるように、システム２００４はデータ・ローティト・ユニット２００の右ローティション動作とマルチプレクサ５０２によるその出力の選定とのみを要求する。したがって、図を簡単にするために、前記の実施例からのその他の特徴は示されていなく、一方、ＦＵＮＮＥＬ  ＳＨＩＦＴ命令を支援すための２つの付加的な特徴は含められる。システム２００４はローティト・データ転送マルチプレクサ５０７を有している。ローティト・データ転送マルチプレクサ５０７はＡ［３１：０］およびＢ［３１：０］として示された２つの３２ビットの引数を受け取るために接続される。論理的には、これらの２つの値はそれぞれの記憶デバイス５７０ＳＡおよび５７０ＳＢの中に記憶されるように示されている。ここでこれらのデバイスは、もっと複雑な記憶回路とは対照的に、実際にはこのようなデータのゲート作用を単に表すことができる。参照のために、記憶デバイス５７０ＳＡおよび５７０ＳＢのおのおのは、それぞれ、Ａ［３１：０］およびＢ［３１：０］からの４つの分離したバイトを有するように示されている。ローティト・データ転送マルチプレクサ５０７はまた、４つの単一バイト・マルチプレクサ５０７ＢＭ０、５０７ＢＭ１、５０７ＢＭ２、５０７ＢＭ３および５０７ＢＭ４を有する。ここで、このようなマルチプレクサのおのおのは、記憶デバイス５７０ＳＡからのバイトを受け取るために接続された１つの入力および記憶デバイス５７０ＳＢからの同様に位置するバイトを受け取るために接続されたもう１つの入力を有する。したがって、バイト・マルチプレクサ５０７ＢＭ０はバイトＡ０およびバイトＢ０を受け取るために接続され、バイト・マルチプレクサ５０７ＢＭ１はバイトＡ１およびバイトＢ１を受け取るために接続され、バイト・マルチプレクサ５０７ＢＭ２はバイトＡ２およびバイトＢ２を受け取るために接続されおよびバイト・マルチプレクサ５０７ＢＭ３はバイトＡ３およびバイトＢ３を受け取るために接続される。ローティト・データ転送マルチプレクサ５０７はまた、データに単にゲート作用を行うことによって再び実現することができるデータ記憶領域５７０Ｄを有する。データ記憶領域５７０Ｄは、バイト・マルチプレクサ５０７ＢＭ０、５０７ＢＭ１、５０７ＢＭ２、５０７ＢＭ３および５０７ＢＭ４のおのおのの出力から単一バイトを受け取る。したがって、領域５７０Ｄからの組み合わされた記憶はデータ・ローティト・ユニット２００にデータＤ［３１：０］を供給する。前記で説明したのと同様の方式で、データ・ローティト・ユニット２００はまたＲシフトの引数の値を受け取る。このＲシフトの引数の値は右シフト・ピン引数ＲＡＲＧ１（図示されていない）の形式で入ってくる。下記で明らかになる理由のために、左シフトの引数Ｌの値はＦＵＮＮＥＬ  ＳＨＩＦＴ命令を実現することに対してシステム２００４���影響を及ぼさない。したがって、図３２の中には示されていない。システム２００４はまたすべて１のマスク整合ブロック５７２を有する。このマスク整合ブロック５７２は、ＦＵＮＮＥＬ  ＳＨＩＦＴ命令を実行する際、すべての値が１である３２ビットのコードＣＦＳを出力する。したがって、前記のシステムとは異なって、１とゼロの両方を有するサーモメータ・コードは要求されない。実際、もしシステム２００４が前記で説明した他のシステムと組み合わされるならば、その時には任意のこのようなサーモメータ・コードをすべて１のマスク整合ブロック５７２に入力することができ、すべて１のマスク整合ブロック５７２は応答の際、このようなコードの場所にすべて１の値のコードＣＦＳを出力するであろう。ここで、その出力はマルチプレクサ５０２の制御入力に接続される。その上、マルチプレクサ５０２に対する制御入力として１だけが供給されるために、その時マルチプレクサ５０２はその「１」入力から３２ビットの全体を必然的に選定し、それにより、その「０」入力に供給されることがもしあればその値は無視されるであろう。したがって図を簡単にするために、図３２にはマルチプレクサ５０２の「０」入力に対する入力は示されていない。ただし、この入力に供給が行われることはできるが、ＦＵＮＮＥＬ  ＳＨＩＦＴ命令の実行中はこの入力は無視されるであろう。最後に、マルチプレクサ５０２の出力はＦＵＮＮＥＬ  ＳＨＩＦＴ命令に対して実行された結果ＶＥＸＥＣ＿ＦＳを供給する。
【０１６１】
次に、システム２００４の動作を説明する。全体的に言えば、システム２００４はデータＤ［３１：０］の右ローティションを実行する。ここで、ＦＵＮＮＥＬ  ＳＨＩＦＴ命令のバイト粒の性質により、ＲまたはＲＡＲＧ１に示されているように右シフトの範囲は８ビット、１６ビットまたは２４ビット（すなわち１バイト、２バイトまたは３バイト）のいずれかに等しい多数のビット位置であるであろう。その上、コードＣＰＳはマルチプレクサ５０２の制御入力に対してすべて１を供給するために、その時には最終的に実行された結果ＶＥＸＥＣ＿ＦＳは、付加的なマスキングをなんらなしにまたはビットをなんら変更することなく、Ｄ［３１：０］の全体がローティトされた値を供給する。けれども、このような結果のおのおのが図３３の中の要求されたシフトの例の結果と整合できることを十分に理解するために、すぐ下記で考察するように、ローティト・データ転送マルチプレクサ５７０にさらに注意を向けることにする。
【０１６２】
図３４は、ローティト・データ転送マルチプレクサ５７０の動作およびＦＵＮＮＥＬ  ＳＨＩＦＴ命令を用いるシステム２００４の付加的なデータ操作を示している。システム２００４のデータ・ローティト・ユニット２００によって右にバイトがローティトされる前に、Ａデータ引数およびＢデータ引数をローティト・データ転送マルチプレクサ５７０によって操作できる方式を、図３４は部分的に示している。第１の例として、図３４の左を考察するならば、それは記憶領域５７０Ｄの中に記憶された値の第１の例を示している。ここでは、その値はＤ１［３１：０］として示されている。記憶領域５７０ＳＢからＢ０を選定するためにバイト・マルチプレクサ５７０ＢＭ０を制御することによって値Ｄ１［３１：０］が達成され、一方、バイト・マルチプレクサ５７０ＢＭ１、５７０ＢＭ２および５７０ＢＭ３のおのおのが記憶領域５７０ＳＡからのそれぞれのバイトＡ１、Ａ２およびＡ３を選定する。値Ｄ１［３１：０］のすぐ右に、図３４はＲ＝８、すなわち８ビット位置または１バイトに対する右ローティションをまた示している。具体的に言えば、Ｒ＝８の値がデータ・ローティト・ユニット２００にシフト引数として供給され、一方、値Ｄ１［３１：０］はデータとして供給される。この右ローティションは結果ＳＨ１を提供する。コードＣＰＳの中のすべてが１である値により、結果ＳＨ１はマルチプレクサ５０２を通ってＶＥＸＥＣ＿ＰＳを供給する。次に、図３４と図３３とを比較するならば、両方の図の中で同じ結果ＳＨ１が実現されることが当業者には分かるであろう。したがって、ローティト・データ転送マルチプレクサ５７０を用いてデータの引数Ａ［３１：０］およびＢ［３１：０］をまず操作することによって、そしてその後にデータ・ローティト・ユニット２００を用いて右にバイト・ローティションを行うことによって、結果ＳＨ１を達成することができることを図３４が示している。
【０１６３】
図３４の残りの部分は、２バイトおよび３バイトのそれぞれに対するＦＵＮＮＥＬ  ＳＨＩＦＴ命令の２つの例を示している。図３４の中央には、バイト・マルチプレクサ５７０ＢＭ０および５７０ＢＭ１が記憶領域５７０ＳＢからそれぞれのバイトＢ０およびＢ１を選定し、一方、バイト・マルチプレクサ５７０ＢＭ２および５７０ＢＭ３が記憶領域５７０ＳＡからそれぞれのバイトＡ２およびＡ３を選定する例を値Ｄ２［３１：０］が示している。値Ｄ２［３１：０］のすぐ右に、図３４はまたＲ＝１６、すなわち１６ビット位置または２バイトに対する右ローティションを示している。この右ローティションは結果ＳＨ２を供給し、ＶＥＸＥＣ＿ＰＳとして供給される。また図３４と図３３とを再び比較するならば、両方の図の中で同じ結果ＳＨ２が実現されることが当業者には分かるであろう。図３４を右に向けて完成するならば、バイト・マルチプレクサ５７０ＢＭ０、５７０ＢＭ１および５７０ＢＭ２が記憶領域５７０ＳＢからそれぞれのバイトＢ０、Ｂ１およびＢ２を選定し、一方、バイト・マルチプレクサ５７０ＢＭ３が記憶領域５７０ＳＡからバイトＡ３を選定する例を値Ｄ３［３１：０］が示している。値Ｄ３［３１：０］のすぐ右に、図３４はまたＲ＝２４、すなわち２４ビット位置または３バイトに対する右ローティションを示している。この右ローティションは結果ＳＨ３を供給し、ＶＥＸＥＣ＿ＰＳとして供給される。もう一度図３４と図３３とを比較するならば、両方の図の中で同じ結果ＳＨ３が実現されることが当業者には分かるであろう。
【０１６４】
図２３のシステム２００１を修正することによって、ＳＡＴＵＲＡＴＩＮＧ  ＳＨＩＦＴ  ＬＥＦＴ命令として先行技術のプロセッサにおいて呼ばれている結果を容易に達成することができる。このＳＡＴＵＲＡＴＩＮＧ  ＳＨＩＦＴ  ＬＥＦＴ命令は、業界において周知であるように、ＳＨＩＦＴ  ＬＥＦＴ命令に似た命令を実行し、もしプロセッサの精度に達するまたはそれを越える（すなわち、飽和を引き起こす）であろう範囲にまで１つの数がシフトされるならば、その時にはえられる結果はシフトされた数ではなくてその代わりに飽和した定数である、という付加的な特性を有している。したがって好ましい実施例では、図２８のＳＨＩＦＴ  ＬＥＦＴ命令システム２００２は、図３５に示されたシステム２００５を得るために修正される。システム２００５は動作することにより、ＳＡＴＵＲＡＴＩＮＧ  ＳＨＩＦＴ  ＬＥＦＴ命令を実行することができる。全体的に言えば、システム２００５はシステム２００２と多くの同じ特性を有し、そしてシステム２００２に関連する前記の説明によりこれらの特性については周知であると仮定する。システム２００５がシステム２００２と異なる点は、ローティトされるべきデータＤ［３１：０］および右に５ビットのシフト・ピン引数ＲＡＲＧ１の両方を受け取るために接続された飽和検出ブロック５８０が付加されていることであり、ひとつながりにされたピン引数ＣＡＲＧ１の５つの最下位ピンで受け取られた時、ＳＨＩＦＴ  ＬＥＦＴ命令が要求された左シフトの引数Ｌの値を実際に供給することを想起する。飽和検出ブロック５８０は飽和定数スイッチ５８２に制御信号を供給する。飽和定数スイッチ５８２はまたマルチプレクサ５０２の出力から左にシフトされたデータＤＬＳ［３１：０］を受け取るために接続され、そして対応するそして潜在的に修正された値ＤＭ［３１：０］をＡＮＤゲート５０４の入力に出力する。
【０１６５】
次に、ＳＡＴＵＲＡＴＩＮＧ  ＳＨＩＦＴ  ＬＥＦＴ命令を実行するシステム２００５の動作を調べる。飽和検出ブロック５８０を先ず考察する。飽和検出ブロック５８０は、Ｄ［３１：０］と（ＲＡＲＧ１によって供給されるような）左シフトの要求された量との両方から、要求されたシフトの後の結果がシステム２００５の３２ビットの精度を越えるであろうかどうかを決定する。このようなデバイスは、当業者によって種々の方法で構成することができる。好ましい実施例ではブロック５８０は、もし要求された量だけ左にシフトされるならば、Ｄ［３１：０］の中の最上位桁（「ＭＳＤ(most significant digit)」）がデータ・ローティト・ユニット２００のＭＳＢ位置（すなわち、ビット位置３１）に到達したかまたはそれよりも高いかどうかを決定する。ここで、用語「最上位桁」はデータＤ［３１：０］が正であるかまたは負であるかどうかによって変わることに注意する。もし正ならば、その時にはＭＳＤは１の値を含む最上位ビット位置であり、一方、もし負ならば、その時にはＭＳＤはゼロの値を含む最上位ビット位置である。もし要求されたシフトがそのＭＳＤをデータ・ローティト・ユニット２００のビット位置３１またはそれよりも高い位置にもたらすならば、その時には符号ビットを提供するためにＭＳＢ位置が確保されるという要請をこのシフトが破り、それによってデータ・ローティト・ユニット２００の精度を越えるであろう。この場合には、飽和検出ブロック５８０は飽和定数スイッチ５８２にその制御信号ＳＡＴ＿ＣＴＲＬを表明する。ここで、それとは対照的にもし要求されたシフトの後に飽和が起こらなかったならば、その時には飽和検出ブロック５８０はＳＡＴ＿ＣＴＲＬを表明しない。
【０１６６】
全体的に言えば、飽和が起こらなかった時、飽和定数スイッチ５８２はその入力をその出力に直接的に通すか、またはそれとは異なって飽和が起こっている時にそれは適切な飽和定数を出力するかのいずれかである。さらに具体的に言えば、ＳＡＴ＿ＣＴＲＬが表明される時、その時には飽和が起こっていることをスイッチ５８２が通知される。それに応答して、ローティトされるべきデータＤ［３１：０］が正であるかまたは負であるかのそれぞれに基づいて、正または負の飽和定数のいずれかを出力する。もしＤ［３１：０］が正であるならば、その時には３２ビットの数に対して、正の飽和定数は０×７ｆｆｆｆｆｆｆである、すなわち３２ビットの精度に対して許される最大の大きさの正の数である。もしＤ［３１：０］が負であるならば、その時には３２ビットの数に対して、負の飽和定数は０×８０００００００である、すなわち３２ビットの精度に対して許される最大の大きさの負の数である。したがって、正の飽和が存在する時、その時にはＤＭ［３１：０］＝０×７ｆｆｆｆｆｆｆであり、そして負の飽和が存在する時、その時にはＤＭ［３１：０］＝０×８０００００００である。もし飽和が存在しない時、その時にはＤＭ［３１：０］＝ＤＬＳ［３１：０］である（すなわち、入力は出力に不変のまま通過する）。とにかく、システム２００５の残りの部分は、ＳＨＩＦＴ  ＬＥＦＴ命令に関連してシステム２００２と同様の方式で動作する。したがって、ＤＭ［３１：０］がいったん供給され、そしてＳＨＩＦＴ  ＬＥＦＴ命令に対してＯＶＥＲＲＩＤＥが高レベルに表明されることを想起すると、その時にはＤＭ［３１：０］がＡＮＤゲート５０４を通過し、ＳＡＴＵＲＡＴＩＮＧ  ＳＨＩＦＴ  ＬＥＦＴ命令を実行したことに対して結果ＶＥＸＥＣ＿ＳＳＬを供給する。
【０１６７】
図３６は、システム２００５の飽和スイッチ５８２を実現するための好ましい実施例のブロック線図である。導入として、ＤＬＳ［３１：０］がスイッチ５８２を透過するまたは飽和定数で置き換えられるのいずれかを交代して許容する機能はマルチプレクサを用いて実現することができることに注目する。けれども、このような方式は応用によっては遅過ぎて望ましくないことがある。したがって、好ましい実施例では、スイッチ５８２は論理装置を用いて実現される。さらに具体的に言えば、制御信号ＳＡＴ＿ＣＴＲＬは４つの分離した制御信号、すなわちｓａｔｐｌｕｓおよびｓａｔｍｉｎｕｓ、およびそれらのそれぞれの補数であるｓａｔｐｌｕｓｘおよびｓａｔｍｉｎｕｓｘから成ることを図３６が示している。（ここで、これらの信号および他の信号の名称の終端の「ｘ」はその信号が補数であることを示している。）信号ｓａｔｐｌｕｓおよびｓａｔｍｉｎｕｓはそれぞれ、正の飽和または負の飽和が起こる時に飽和検出ブロック５８０によって表明される。したがって、その補数ｓａｔｐｌｕｓｘおよびｓａｔｍｉｎｕｓｘはそれぞれ、正の飽和または負の飽和が起こらない時に飽和検出ブロック５８０によって表明される。スイッチ５２８に対する入力ＤＬＳ［３１：０］の最上位ビットＤＬＳ［３１］はＡＮＤゲート５８２ＡＮ１に対して第１の入力として接続される。ＡＮＤゲート５８２ＡＮ１の出力はＯＲゲート５８２ＯＲ１の第１の入力に接続される。ここで、ゲート５８２ＡＮ１およびゲート５８２ＯＲ１は単一の複合ＡＮＤ−ＯＲゲートとして形成されることが好ましい。ＡＮＤゲート５８２ＡＮ１の第２の入力はｓａｔｐｌｕｓｘ信号を受け取るために接続され、そしてＯＲゲート５８２ＯＲ１の第２の入力はｓａｔｍｉｎｕｓ信号を受け取るために接続される。ＤＬＳ［３１：０］の残りの３１個のＬＳＢすなわちＤＬＳ［３０：０］は同じ種類の回路に接続される。これらの回路の１つが図３６に例として示されている。残りの３１個のＬＳＢすなわちＤＬＳ［３０：０］のおのおのに対して総計で３１個の類似の回路に対してこのような回路が複製されることが理解される。具体的に言えば、これらのビットのおのおのはＡＮＤゲート５８２ＡＮ２に対する第１の入力として接続される。ＡＮＤゲート５８２ＡＮ２の出力はＯＲゲート５８２ＯＲ２の第１の入力に接続される。ここで、ゲート５８２ＡＮ２およびゲート５８２ＯＲ２は単一の複合ＯＲ−ＡＮＤゲートとして形成されることが好ましい。ＡＮＤゲート５８２ＡＮ２の第２の入力はｓａｔｍｉｎｕｓｘ信号を受け取るために接続され、そしてＯＲゲート５８２ＯＲ２の第２の入力はｓａｔｐｌｕｓ信号を受け取るために接続される。
【０１６８】
次に、スイッチ５８２の動作を説明する。全体的に言えば、飽和が検出される時、スイッチ５８２は論理回路を用いてその入力を正または負の飽和定数のいずれかの適切な１つに効果的に変換し、一方、飽和が検出されない時、スイッチ５８２は同じ論理回路を用いてその入力ＤＬＳ［３１：０］を出力に通過させることができ、そしてＤＭ［３１：０］になる。次に、これらの例のおのおのを詳細に考察する。スイッチ５８２をさらに理解するために、次の表９は、飽和が起こるのかどうかに基づいて、そしてもし飽和が起こるならばその飽和が正であるかまたは負であるかに基づいて、スイッチ５８２の中の制御信号の種々の交代する状態を提供している。
【０１６９】
【表１１】
2004206720.tif 000013
【０１７０】
正の飽和が検出される時のスイッチ５８２の動作を考察する。この時に飽和検出ブロック５８０によって得られるＳＡＴ＿ＣＴＲＬの中の４つの制御信号が表９の第１の列の値に示されている。ｓａｔｐｌｕｓ＝１に応答して、ＯＲゲート５８２ＯＲ２の出力はＡＮＤゲート５８２ＡＮ２の出力にかかわらず１に等しい。したがって、ＤＭ［３０：０］の中のビットのおのおのは１に等しい。同時に、ｓａｔｐｌｕｓｘ＝０に応答して、ＡＮＤゲート５８２ＡＮ１の出力は０に等しく、一方、同時にｓａｔｍｉｎｕｓ＝０である。したがって、ＯＲゲート５８２ＯＲ１の出力すなわちビットＤＭ［３１］は０に等しい。したがって、正の飽和が検出される時、ＤＭ［３１：０］は０×７ｆｆｆｆｆｆｆの要求された正の飽和定数に等しい。
【０１７１】
負の飽和が検出される時のスイッチ５８２の動作を考察する。この時に飽和検出ブロック５８０によって得られるＳＡＴ＿ＣＴＲＬの中の４つの制御信号が表９の第２の列の値に示されている。ｓａｔｍｉｎｕｓ＝１に応答して、ＯＲゲート５８２ＯＲ１の出力はＡＮＤゲート５８２ＡＮ１の出力にかかわらず１に等しい。したがって、ビットＤＭ［３１］は１に等しい。同時に、ｓａｔｍｉｎｕｓｘ＝０に応答して、ＡＮＤゲート５８２ＡＮ２の出力は０に等しく、一方、同時にｓａｔｐｌｕｓ＝０である。したがって、ＯＲゲート５８２ＯＲ２の出力は０に等しく、したがってＤＭ［３０：０］の中のビットのおのおのは０に等しい。したがって、負の飽和が検出される時、ＤＭ［３１：０］は０×８０００００００の要求された負の飽和定数に等しい。
【０１７２】
飽和が検出されない時のスイッチ５８２の動作を考察する。この時に飽和検出ブロック５８０によって得られるＳＡＴ＿ＣＴＲＬの中の４つの制御信号が表９の第３の列の値に示されている。ｓａｔｐｌｕｓｘ＝１に応答して、ＡＮＤゲート５８２ＡＮ１の出力はデータＤＬＳ［３１］を通し、そしてｓａｔｍｉｎｕｓｘ＝０に応答して、ＯＲゲート５８２ＯＲ１の出力がＡＮＤゲート５８２ＡＮ１の出力を通し、これは通過するＤＬＳ［３１］である。したがって、飽和が検出されない時、ＤＭ［３１］はＤＬＳ［３１］に等しい。それに加えて飽和が検出されない時、ｓａｔｍｉｎｕｓｘ＝１に応答して、ＡＮＤゲート５８２ＡＮ２の出力はデータＤＬＳ［３０：０］を通し、そしてｓａｔｐｌｕｓ＝０に応答して、ＯＲゲート５８２ＯＲ２の出力がＡＮＤゲート５８２ＡＮ２の出力を通し、これは通過するＤＬＳ［３０：０］である。したがって、再び要求された結果が到達されることを前記の説明が示している。すなわち飽和が検出されない時、ＤＭ［３１：０］はＤＬＳ［３１：０］に等しい。
【０１７３】
種々のシステム２００１ないし２００５が説明されたので、これらのシステムのすべてを単一のシステム２００６の中に組合せることができることを図３７は示している。この単一のシステム２００６は前記で説明した命令のすべてを達成するために、すなわちＥＸＴＲＡＣＴ、ＳＨＩＦＴ  ＲＩＧＨＴ、ＳＨＩＦＴ  ＬＥＦＴ、ＳＥＴ、ＣＬＥＡＲ、ＦＵＮＮＥＬ  ＳＨＩＦＴおよびＳＡＴＵＲＡＴＩＮＧ  ＳＨＩＦＴ  ＬＥＦＴの命令のすべてを達成するために、共通のデータ・ローティト・ユニット２００を備えている。図３７と前記で説明したシステムを示す図との比較から、単一のシステムの中に組合せる時の種々の相互接続を当業者は確認することができるであろう。さらに単純にするために、前記で説明したいくつかのシステムの中でマスクの調整が行われることに注目されたい。このマスクの調整は、図２８のシステム２００２のマスク修正ブロック５２０、図２９のシステム２００３のマスク組合せブロック５６０および図３２のシステム２００４のすべて１のマスク調整ブロック５７２によるようにして行われる。これらのマスク調整ブロックのおのおのはＭＳＢ（ｓ）交互データ・ブロック５０８および設定／クリア・マスク・ブロック５５０のいずれかまたは両方によって提供されるサーモメータ・コードに応答することができるから、その時には図３７はこれらの可能な調整のおのおのを単一のマスク整合ブロック５９０に組合せる。したがって、ここではこのブロックは前記で説明した潜在的なマスク調整のすべてを包含することを意図しており、そしていずれの場合にも、この調整された値がマルチプレクサ５０２を制御するための制御ビット信号ＣＢ［３１：０］を得るために用いられる。その上、またマルチプレクサ５０２と関連して、符号ビットまたは符号ビット・セレクト・ブロック５０６からのゼロの値またはデータ・ゲート５３０からの入力データＤ［３１：０］を受け取る可能性のようなその「０」入力に関して、種々の交互データ入力が示されている。またマルチプレクサ５０２に関連して、データ・ローティト・ユニット２００からの出力または設定ビットまたはクリア・ビットを含むその「１」入力に関して種々の交互データ入力が示されている。これらの選定はマルチプレクサ５４０によって制御される。最後に、マルチプレクサ５０２の出力は飽和定数スイッチ５８２を直接的に通過することができ、または飽和定数スイッチ５８２によって調整されることができ、そして次に、もしそのブロックの出力がＯＲゲート５２２に対するＯＶＥＲＲＩＤＥ信号の表明によって無視されないならば、ＬＳＢ（ｓ）ゼロ・マスク・ブロック５１０の出力と共にＡＮＤゲート５０４によりＡＮＤ演算を受ける。このＯＶＥＲＲＩＤＥ信号の表明の場合には、ＡＮＤゲート５０４はその他の入力をその出力に通す。したがって最後に、ＡＮＤゲート５０４の出力は、前記で説明した選定された命令のいずれかの実行に対応して、結果として得られる値ＶＥＸＥＣ＿Ｆを生ずる。
【０１７４】
図３８は図３７のマスク調整ブロック５９０の１ビットの概要図であり、そして静的論理装置を用いて実現される。ここで、好ましい実施例では、この１ビットの概要図は、３２ビットのサーモメータ・コードに適応するためにおよび制御ビット・コードＣＢ［３１：０］を種々の命令に対してマルチプレクサ５０２に出力するために、総計３２ビットに対して複製される。導入として、マスク調整ブロック５９０は前記で説明した種々のマスク調整ブロックの機能を組み合わせることを想起する。ブロック５９０は信号ｓｈｌｘを受け取るための１つの入力を有するＯＲゲート５９０ＯＲ１を有する。ＳＨＩＦＴ  ＬＥＦＴ命令が実行される時、信号ｓｈｌｘは活性低レベル信号として低レベルである。ＯＲゲート５９０ＯＲ１はＳＨＩＦＴ  ＬＥＦＴ命令に対応する活性低レベル・マスクであるｓｈｆｔｌｅｆｔ＿ｍａｓｋｘを受け取るためのまた別の入力を有する。ＯＲゲート５９０ＯＲ１の出力はＮＡＮＤゲート５９０ＮＡＮ１に対して１つの入力として接続される。ここで、ＯＲゲート５９０ＯＲ１およびＮＡＮＤゲート５９０ＮＡＮ１は単一の複合ゲートとして構成されることが好ましい。ＮＡＮＤゲート５９０ＮＡＮ１のもう１つの入力は、ＦＵＮＮＥＬ  ＳＨＩＦＴ命令の実行に対して低レベルを表明した活性低レベル信号である信号ｆｓｈｘを受け取る。ＮＡＮＤゲート５９０ＮＡＮ１の出力はＮＯＲゲート５９０ＮＯＲ１に対して１つの入力として接続される。ＮＯＲゲート５９０ＮＯＲ１のもう１つの入力はＡＮＤゲート５９０ＡＮ１の出力に接続される。ＡＮＤゲート５９０ＡＮ１の１つの入力はｓｈｉｆｔｒｉｇｈｔ＿ｍａｓｋ信号を受け取る。このｓｈｉｆｔｒｉｇｈｔ＿ｍａｓｋ信号はＭＳＢ（ｓ）交互データ・マスク・ブロック５０８からのマスクからの１つのビットを表す。ここで、ｓｈｉｆｔｌｅｆｔ＿ｍａｓｋｘはｓｈｉｆｔｒｉｇｈｔ＿ｍａｓｋを１ビットだけダウンシフトすることによって生成される。ＡＮＤゲート５９０ＡＮ１の他のもう１つの入力はＮＡＮＤゲート５９０ＮＡＮ２の出力を受け取る。ＮＡＮＤゲート５９０ＮＡＮ２の１つの入力はＯＲゲート５９０ＯＲ２の出力に接続され、そしてＮＡＮＤゲート５９０ＮＡＮ２の他のもう１つの入力は信号ｓｈｒｘを受け取るために接続される。信号ｓｈｒｘはＳＨＩＦＴ  ＲＩＧＨＴ命令に対する低レベルを表明した活性低レベル信号である。ＯＲゲート５９０ＯＲ２の１つの入力は信号ｓｅｔｃｌｒｘを受け取るために接続される。信号ｓｅｔｃｌｒｘはＳＥＴ命令またはＣＬＥＡＲ命令のいずれかを実行するために低レベルを表明した活性低レベル信号である。ＯＲゲート５９０ＯＲ２の他のもう１つの入力はｓｅｔｃｌｒ＿ｍａｓｋを受け取るために接続される。ｓｅｔｃｌｒ＿ｍａｓｋは設定／クリア・マスク・ブロック５５０からの１つのビットを表す。最後に、ＮＯＲゲート５９０ＮＯＲ１の出力は反転器５９０ＩＮＶを通して接続され、そして反転器５９０ＩＮＶの出力は制御ビット信号ＣＢ［３１：０］を供給する。
【０１７５】
マスク調整ブロック５９０を実現するための図３８の概要図の動作は、そのブロックの機能についての前記の説明および図３８に関して提供された信号の定義が与えられるならば、容易に理解されるはずであり、そして異なる命令に基づいて変わるであろう。したがって、このような動作は下記の種々の命令に対して簡単に説明される。
【０１７６】
図３８に関しておよびＳＨＩＦＴ  ＲＩＧＨＴ命令が実行される時、その時にはｓｈｒｘが低レベルであり、それによってＮＡＮＤゲート５９０ＮＡＮ２の出力を強制的に高レベルであるようにし、そしてこの高レベルがＡＮＤゲート５９０ＡＮ１に対して１つの入力として接続される。このことは、ＡＮＤゲート５９０ＡＮ１に対してそのもう１つの入力における値ｓｈｉｆｔｒｉｇｈｔ＿ｍａｓｋをその出力に通過させることを起こさせる。同時に、ｓｈｌｘは高レベルであり、それはＯＲゲート５９０ＯＲ１からの出力を強制的に高レベルにし、そしてその高レベルがｆｓｈｘの高レベルと組み合わされて、ＮＡＮＤゲート５９０ＮＡＮ１の出力を強制的に低レベルにする。この低レベルはＮＯＲゲート５９０ＮＯＲ１に１つの入力として接続され、その結果として、ＮＯＲゲート５９０ＮＯＲ１はそのもう１つの入力の補数を出力し、それは前記で示したようにＡＮＤゲート５９０ＡＮ１によって透過されたｓｈｉｆｔ  ｒｉｇｈｔ＿ｍａｓｋである。次に、この補数は反転器５９０ＩＮＶによって反転され、それによってｓｈｉｆｔｒｉｇｈｔ＿ｍａｓｋビットが透過してマルチプレクサ５０２に送られる。
【０１７７】
図３８に関しておよびＳＨＩＦＴ  ＲＩＧＨＴ命令が実行される時、その時にはｓｈｌｘが低レベルであり、それはＯＲゲート５９０ＯＲ１に対してそのもう１つの入力の値ｓｈｉｆｔｌｅｆｔ＿ｍａｓｋｘ、すなわちｓｈｉｆｔ  ｌｅｆｔ  ｍａｓｋビットの補数を出力させることを起こさせる。同時に、ｆｓｈｘは高レベルであり、それによってＮＡＮＤゲート５９０ＮＡＮ１に対してそのもう１つの入力、すなわちｓｈｉｆｔｌｅｆｔ＿ｍａｓｋｘをその出力に通過させることを起こさせ、そしてさらにＮＡＮＤゲート５９０ＮＡＮ１はそのデータの補数を形成し、それによって実際の値ｓｈｉｆｔｌｅｆｔ＿ｍａｓｋをＮＯＲゲート５９０ＮＯＲ１に１つの入力として供給する。同時に、ｓｅｔｃｌｒｘは高レベルであり、それはＯＲゲート５９０ＯＲ２にＮＡＮＤゲート５９０ＮＡＮ２に対する１つの入力として出力させることを起こさせ、そしてＮＡＮＤゲート５９０ＮＡＮ２に対する他のもう１つの入力ｓｈｒｘはまた高レベルであり、それによってＮＡＮＤゲート５９０ＮＡＮ２にＡＮＤゲート５９０ＡＮ１に対して低レベルを出力させることを起こさせ、したがってまたそのＡＮＤゲート５９０ＡＮ１にＮＯＲゲート５９０ＮＯＲ１に対して低レベルを出力させることを起こさせる。ＮＯＲゲート５９０ＮＯＲ１によって受け取られたこの低レベルはその他のもう１つの入力の値をその出力に通過させることを起こさせ、それは実際の値ｓｈｉｆｔｌｅｆｔ＿ｍａｓｋであると示されたことを想起する。そしてそれが出力される時、ＮＯＲゲートとしてその値が補数化される。けれどもその時、補数ｓｈｉｆｔｌｅｆｔ＿ｍａｓｋｘは反転器５９０ＩＮＶを通過する時に再び反転される。するとこの場合には、反転器５９０ＩＮＶにｓｈｉｆｔｌｅｆｔ＿ｍａｓｋの値をマルチプレクサ５０２に出力することを起こさせる。
【０１７８】
図３８に関しておよびＳＥＴ命令またはＣＬＥＡＲ命令のいずれかが実行される時、その時にはｓｅｔｃｌｒｘが低レベルであり、それはＯＲゲート５９０ＯＲ２に対してそのもう１つの入力の値ｓｅｔｃｌｒ＿ｍａｓｋｘ、すなわち設定／クリア・マスク・ビットの補数を出力することを起こさせる。同時に、ｓｈｒｘは高レベルであり、それはＮＡＮＤゲート５９０ＮＡＮ２に対してそのもう１つの入力の補数をその出力することを起こさせる。ここで、この入力はｓｅｔｃｌｒ＿ｍａｓｋｘであることが示されている。したがって、ＮＡＮＤゲート５９０ＮＡＮ２はＡＮＤゲート５９０ＡＮ１に対してｓｅｔｃｌｒ＿ｍａｓｋを出力する。ＡＮＤゲート５９０ＡＮ１はそのもう１つの入力にｓｈｉｆｔｒｉｇｈｔ＿ｍａｓｋを受け取っている。また同時に、ｓｈｌｘは高レベルであり、それによりＯＲゲート５９０ＯＲ１の出力を強制的に高レベルにし、そしてこの高レベル入力がまた別の高レベル入力ｆｓｈｘと一緒にＮＡＮＤゲート５９０ＮＡＮ１に供給される。したがって、ＮＡＮＤゲート５９０ＮＡＮ１の出力はこれらの２つの高レベル入力によって強制的に低レベルにされ、そしてこの低レベルがＮＯＲゲート５９０ＮＯＲ１に接続される。それによって、ＮＯＲゲート５９０ＮＯＲ１に対してそのもう１つの入力の補数を出力することを起こさせる。このもう１つの入力はｓｅｔｃｌｒ＿ｍａｓｋであることが前記で示された。このもう１つの入力ｓｅｔｃｌｒ＿ｍａｓｋはＮＯＲゲート５９０ＮＯＲ１によって反転され、したがってｓｅｔｃｌｒ＿ｍａｓｋｘとして出力される。けれども、この反転された値が次に反転器５９０ＩＮＶによって再び反転され、それによってｓｈｉｆｔｒｉｇｈｔ＿ｍａｓｋとＡＮＤ演算されたｓｅｔｃｌｒ＿ｍａｓｋの値がマルチプレクサ５０２に出力される。
【０１７９】
図３８に関しておよびＦＵＮＮＬ  ＳＨＩＦＴ命令が実行される時、その時にはｆｓｈｘは高レベルであり、それによってＮＡＮＤゲート５９０ＮＡＮ１の出力は強制的に高レベルにされる。この高レベルがＮＯＲゲート５９０ＮＯＲ１に入力される。それによってＮＯＲゲート５９０ＮＯＲ１の出力は強制的に低レベルにされ、そしてその低レベルが次に反転器５９０ＩＮＶによって再び反転されて、マルチプレクサ５０２に対して１を出力する。したがってその時、ＣＢ［３１：０］の中の３２ビットのおのおのに対して、図３８の概要図に類似の回路のおのおのは同様に１を出力し、それによって、ＦＵＮＮＬ  ＳＨＩＦＴ命令に対して用いられる時、すべて１のマスク調整ブロック５７２に関連して前記で説明した機能を果たす。
【０１８０】
図３９は、出力信号ＶＥＸＥＣ＿Ｆのための１ビットを出力するために、図３７のマルチプレクサ５０２、飽和定数スイッチ５８２およびＡＮＤゲート５０４によって選択的に供給される種々の信号を実現するための静的論理回路システム６００を示している。したがって、好ましい実施例で、システム６００はＶＥＸＥＣ＿Ｆの中のビットのおのおのに対して１つずつ、総計で３２個の同様の設計の回路のために複製される。回路６００の中の信号およびデバイスに戻るならば、符号ビット・セレクト・ブロック５０６の活性低レベル出力を表す信号ｓｉｇｎ＿ｂｉｔｘがＡＮＤゲート６００ＡＮ１に対して１つの入力として接続される。ＡＮＤゲート６００ＡＮ１のも１つの入力は、データ・ゲート５３０の出力を表す活性低レベル信号であるｄａｔａ＿ｇａｔｅｘを受け取るために接続される。ＡＮＤゲート６００ＡＮ１の出力はＮＯＲゲート６００ＮＯ１に対して１つの入力として接続される。ＮＯＲゲート６００ＮＯ１のもう１つの入力は信号ｍａｓｋ＿ａｄｊを受け取るために接続される。信号ｍａｓｋ＿ａｄｊは、マスク調整ブロック５９０によって出力される制御ビット・コードＣＢ［３１：０］の１ビットである。信号ｍａｓｋ＿ａｄｊはまたＡＮＤゲート６００ＡＮ２に対して１つの入力として接続される。ＡＮＤゲート６００ＡＮ２はまた、データ・ローティト・ユニット２００からの出力信号ＤＲＵ［３１：０］の単一のビットを表す信号ｒｏｔ＿ｄａｔａを受け取る。ＡＮＤゲート６００ＡＮ２の出力はＯＲゲート６００ＯＲ１に対して１つの入力として接続される。ＯＲゲート６００ＯＲ１はＮＯＲゲート６００ＮＯ１の出力をもう１つの入力として受け取る。ＯＲゲート６００ＯＲ１の出力はＮＡＮＤゲート６００ＮＡＮ１に対して１つの入力として接続される。ＮＡＮＤゲート６００ＮＡＮ１のもう１つの入力はＯＲゲート６００ＯＲ２の出力に接続される。ＯＲゲート６００ＯＲ２の１つの入力は信号ｓａｔ＿０を受け取るために接続される。信号ｓａｔ＿０は、０の飽和出力ビットが要求される時に活性低レベルを表明する。ＯＲゲート６００ＯＲ２のもう１つの入力は信号ｌｓｂｚ＿ｍａｓｋを受け取る。信号ｌｓｂｚ＿ｍａｓｋは、ＬＳＢ（ｓ）ゼロ・マスク・ブロック５１０の出力の１つのビットを表す信号である。ＮＡＮＤゲート６００ＮＡＮ１の出力はＮＡＮＤゲート６００ＮＡＮ２に対して１つの入力として接続される。ＮＡＮＤゲート６００ＮＡＮ２のもう１つの入力は信号ｓａｔｘ＿１を受け取るために接続される。信号ｓａｔｘ＿１は、１の飽和出力ビットが要求される時に表明される活性低レベルを表明する。
【０１８１】
前記で説明した信号の定義および機能の説明が与えられたので、回路システム６００の動作は当業者には分かるであろう。したがって、ここでは一定の特徴だけを簡単に見ることにする。先ず、信号ｌｓｂｚ＿ｍａｓｋはＥＸＴＲＡＣＴ命令に対してだけ妥当であり、そして他のすべての命令に対してはそれはゼロの値である（前記で説明したＯＶＥＲＲＩＤＥ信号の効果の補数に類似している）ことに注目する。次に、飽和の場合を考察する。ＶＥＸＥＣ＿Ｆの出力ビットが１であるべきことが要求される時（例えば、負飽和の中のＭＳＢに対して、または正飽和の中のＭＳＢ以外のすべてのビットに対して）、その時にはｓａｔ＿１は低レベルを表明し、そしてｓａｔｘ＿０は高レベルである。前者は、ＮＡＮＤゲート６００ＮＡＮ２の出力ＶＥＸＥＣ＿Ｆを強制的に高レベルにし、それによって要求された結果が完成する。反対の飽和の場合には、ＶＥＸＥＣ＿Ｆの出力ビットが０であるべきことが要求される時（例えば、正飽和の中のＭＳＢに対して、または負飽和の中のＭＳＢ以外のすべてのビットに対して）、その時にはｓａｔｘ＿１は低レベルを表明し、そしてｓａｔ＿０は高レベルを表明する。この期間中、ｌｓｂｚ＿ｍａｓｋは低レベルである。これはＥＸＴＲＡＣＴ命令の場合ではないからである。したがって、ＯＲゲート６００ＯＲ２に対して２つの低レベル信号入力があり、それはその出力を強制的に低レベルにし、したがってまた、ＮＡＮＤゲート６００ＮＡＮ１の出力を強制的に高レベルにする。この高レベルはＮＡＮＤゲート６００ＮＡＮ２の中にｓａｔｘ＿１の高レベル値と共に結合されてＶＥＸＥＣ＿Ｆの低レベル値を生じ、それによって要求された結果を完成する。
【０１８２】
次に、ＥＸＴＲＡＣＴ命令に対する回路システム６００の動作を考察する。ここで、ＶＥＸＥＣ＿ＦのＭＳＢ（ｓ）は符号ビットを有し、一方、ＶＥＸＥＣ＿Ｆの残りのＬＳＢはローティトされたデータを有するであろうことを想起する。この目的に向かって符号ビットを得るために、ｍａｓｋ＿ａｄｊが低レベルであり、そしてこの低レベルがＮＯＲゲート６００ＮＯ１に入力される。それによって、ＮＯＲゲート６００ＮＯ１に対してそのもう１つの入力の補数を出力することを起こさせる。このもう１つの入力はＡＮＤゲート６００ＡＮ１の出力によって供給される。ＡＮＤゲート６００ＡＮ１は、ＥＸＴＲＡＣＴ命令に対して、ｓｉｇｎ＿ｂｉｔｘを出力する。それはその命令の期間中、ｄａｔａ＿ｇａｔｅが高レベルであるからであり、したがってＡＮＤゲート６００ＡＮ１に対してｓｉｇｎ＿ｂｉｔ（すなわち、ｓｉｇｎ＿ｂｉｔｘの補数）を出力することを起こさせるからである。したがってｓｉｇｎ＿ｂｉｔはＯＲゲート６００ＯＲ１に対する１つの入力である。ＯＲゲート６００ＯＲ１のもう１つの入力は、またＡＮＤゲート６００ＡＮ２に対する入力としてのｍａｓｋ＿ａｄｊの低レベル値により、ＡＮＤゲート６００ＡＮ２の出力からの低レベル値を受け取る。したがって、ＯＲゲート６００ＯＲ１はｓｉｇｎ＿ｂｉｔの値をＮＡＮＤゲート６００ＮＡＮ１の１つの入力に通す。ＮＡＮＤゲート６００ＮＡＮ１のもう１つの入力は１の値を受け取る。それはｌｓｂｚ＿ｍａｓｋが高レベルである（ここで、ＥＸＴＲＡＣＴ命令に対してそのもう１つの入力ｓａｔｘ＿０が低レベルである）からである。したがって、ＮＡＮＤゲート６００ＮＡＮ１はｓｉｇｎ＿ｂｉｔの補数を出力する。したがって、この出力は再びｓｉｇｎ＿ｂｉｔｘであり、この出力はＮＡＮＤゲート６００ＮＡＮ２に対して１つの入力として接続される。ＮＡＮＤゲート６００ＮＡＮ２のもう１つの入力は高レベル値を受け取る。それは、ＥＸＴＲＡＣＴ命令に対してｓａｔｘ＿１がまた高レベルであるからである。したがって、ＮＡＮＤゲート６００ＮＡＮ２はｓｉｇｎ＿ｂｉｔｘの入力を補数化し、それによってＶＥＸＥＣ＿Ｆに対してｓｉｇｎ＿ｂｉｔの値を出力する。またＥＸＴＲＡＣＴ命令に関連してしかしｒｏｔ＿ｄａｔａを出力ビット（すなわちＶＥＸＥＣ＿Ｆ）として供給するために、その時にはｍａｓｋ＿ａｄｊが高レベルに表明され、それによってＡＮＤゲート６００ＡＮ２に対してＯＲゲート６００ＯＲ１に１つの入力としてｒｏｔ＿ｄａｔａを出力することを起こさせ、一方、ＯＲゲート６００ＯＲ１のもう１つの入力は低レベルであるであろう。それは、ＯＲゲート６００ＯＲ１のもう１つの入力はＮＯＲゲート６００ＮＯ１によって供給され、ＮＯＲゲート６００ＮＯ１の出力はｍａｓｋ＿ａｄｊの高レベル入力値によって低レベル出力に強制的にされるからである。したがって、ＯＲゲート６００ＯＲ１はＮＡＮＤゲート６００ＮＡＮ１に対する１つの入力としてｒｏｔ＿ｄａｔａを通過させる。ＮＡＮＤゲート６００ＮＡＮ１はそのもう１つの入力にＯＲゲート６００ＯＲ２から高レベルを受け取るであろう。ＯＲゲート６００ＯＲ２はｌｓｂｚ＿ｍａｓｋから高レベル入力を受け取る。したがって、ＮＡＮＤゲート６００ＮＡＮ１はｒｏｔ＿ｄａｔａの補数であるｒｏｔ＿ｄａｔａｘを出力するが、しかしこの補数は次にＮＡＮＤゲート６００ＮＡＮ２によって再び反転される。それはその入力ｓａｔ＿１がＥＸＴＲＡＣＴ命令に対してまた高レベルであるからである。したがって、ｒｏｔ＿ｄａｔａがＶＥＸＥＣ＿Ｆとして出力される。
【０１８３】
次に、Ｌ＞Ｒである場合にＥＸＴＲＡＣＴ命令に対する回路システム６００の動作を考察する。この場合には、ＬＳＢ（ｓ）ゼロ・マスク・ブロック５１０の出力により、ＬＳＢはゼロの値を有するであろう。ｌｓｂｚ＿ｍａｓｋビットをゼロに等しく設定することにより、この出力が回路システム６００の中で達成される。ｓａｔｘ＿０はＥＸＴＲＡＣＴ命令に対して低レベルに保たれるから、その時にはｌｓｂｚ＿ｍａｓｋのゼロ値は低レベルｓａｔｘ＿０と一緒になって、ＯＲゲート６００ＯＲ２に対してＮＡＮＤゲート６００ＮＡＮ１に低レベルを出力することを起こさせ、それによりその出力を高レベルにすることを起こさせる。そのビットはＥＸＴＲＡＣＴ命令に対して高レベルであるｓａｔｘ＿１とＡＮＤ演算され、それによりＮＡＮＤゲート６００ＮＡＮ２の低レベル出力が供給される。したがって、ＬＳＢ（ｓ）ゼロ・マスク・ブロック５１０に対してゼロが供給される。
【０１８４】
回路システム６００の動作を完了するならば、ｄａｔａ＿ｇａｔｅｘの値はまた、ｓｉｇｎ＿ｂｉｔｘビットを出力することに関連して前記で説明したのと同じ方式でＶＥＸＥＣ＿Ｆとして供給されることができる。したがって前記の説明から、ｍａｓｋ＿ａｄｊを低レベルに設定することによっておよびｓｉｇｎ＿ｂｉｔｘを高レベル値として供給することによって、このことを達成できることは当業者には分かるであろう。
【０１８５】
図４９は、図３７のマスク調整ブロック５９０の１ビットの概要図であり、そして５９０ＤＬとして示されている。５９０ＤＬとして示された理由は、それがダイナミック論理を実現するためからである。ここでは、３２ビットのサーモメータ・コードに適応するために、および種々の命令に対して制御ビット・コードＣＢ［３１：０］をマルチプレクサ５０２に出力するために、この概要図はしたがって総計３２個のビットに対して繰り返される。全体的に言って、ブロック５９０ＤＬは種々のマスク信号のデュアル・レール入力信号を受け取り、そしてそれはデュアル・レール出力、ｍａｓｋおよびｍａｓｋｘ、を供給する。ここで、これらの信号は制御ビット・コードＣＢ［３１：０］に対してデュアル・レール信号を提供する。ブロック５９０ＤＬのデバイスおよび接続を先ず考察するならば、そして図の下左に向けて始めるならば、ノード６１０ＮＤ１はＰチヤンネル・トランジスタ６１０Ｐ１のドレインに接続され、そしてノード６１０ＮＤ１はまたＰチヤンネル・トランジスタ６１０Ｐ２のドレインと、Ｐチヤンネル・トランジスタ６１０Ｐ３のゲートと、反転器６１０ＩＮＶ１の入力とに接続される。Ｐチヤンネル・トランジスタ６１０Ｐ１、６１０Ｐ２および６１０Ｐ３のソースはすべてＶＤＤに接続される。Ｐチヤンネル・トランジスタ６１０Ｐ１のゲートはクロック信号ＣＬＫを受け取るために接続される。Ｐチヤンネル・トランジスタ６１０Ｐ２のゲートはノード６１０ＮＤ２に接続される。ノード６１０ＮＤ２はまたＰチヤンネル・トランジスタ６１０Ｐ３のドレインと、Ｐチヤンネル・トランジスタ６１０Ｐ４のドレインと、反転器６１０ＩＮＶ２の入力とに接続される。Ｐチヤンネル・トランジスタ６１０Ｐ４のソースはＶＤＤに接続され、そしてそのゲートはＣＬＫを受け取るために接続される。
【０１８６】
ノード６１０ＮＤ１に戻るならば、それは下記のように種々の条件付き放電路に接続される。３つのＮチヤンネル・トランジスタ６１２Ｎ１、６１２Ｎ２および６１２Ｎ３のソース／ドレイン路がノード６１０ＮＤ１とノード６１２ＮＤ１との間に直列に接続される。Ｎチヤンネル・トランジスタ６１２Ｎ１、６１２Ｎ２および６１２Ｎ３のそれぞれのゲートは、ｓｈｉｆｔ＿ｒｉｇｈｔ＿ｍａｓｋ信号、ｓｅｔｃｌｒ＿ｍａｓｋ信号およびｓｅｔｃｌｒ信号をそれぞれ受け取るために接続される。この最後の信号は、ＳＥＴ命令またはＣＬＥＡＲ命令が実行される時、ブロック５９０ＤＬの評価相の期間中に表明される。ノード６１２ＮＤ１とＮチヤンネル・トランジスタ６１２Ｎ１のソースとの間に、Ｎチヤンネル・トランジスタ６１２Ｎ４のソース／ドレイン路が接続される。Ｎチヤンネル・トランジスタ６１２Ｎ４のゲートはｓｈｒ信号に接続される。このｓｈｒ信号は、ＳＨＩＦＴ  ＲＩＧＨＴ命令が実行される時、ブロック５９０ＤＬの評価相の期間中に表明される。また２つのＮチヤンネル・トランジスタ６１２Ｎ５および６１２Ｎ６のソース／ドレイン路がノード６１２ＮＤ１と６１２ＮＤ１との間に直列に接続される。Ｎチヤンネル・トランジスタ６１２Ｎ５および６１２Ｎ６のそれぞれのゲートは、ｓｈｉｆｔｌｅｆｔ＿ｍａｓｋ信号およびｓｈｌ信号をそれぞれ受け取るために接続される。この最後の信号は、ＳＨＩＦＴ  ＬＥＦＴ命令が実行される時、ブロック５９０ＤＬの評価相の期間中に表明される。なおさらに、Ｎチヤンネル・トランジスタ６１２Ｎ７のソース／ドレイン路がノード６１２ＮＤ１と６１２ＮＤ１との間に接続される。Ｎチヤンネル・トランジスタ６１２Ｎ７のゲートは、ｆｓｈ信号を受け取るために接続される。このｆｓｈ信号は、ＦＵＮＮＥＬ  ＳＨＩＦＴ命令が実行される時、ブロック５９０ＤＬの評価相の期間中に表明される。
【０１８７】
ノード６１０ＮＤ２に戻るならば、それは下記のように種々の条件付き放電路に接続される。２つのＮチヤンネル・トランジスタ６１４Ｎ１および６１４Ｎ２のソース／ドレイン路がノード６１４ＮＤ２とノード６１４ＮＤ１との間に直列に接続される。Ｎチヤンネル・トランジスタ６１４Ｎ１および６１４Ｎ２のそれぞれのゲートは、ｓｈｉｆｔｒｉｇｈｔ＿ｍａｓｋ信号およびｓｈｒ＿ｓｅｔｃｌｒ信号をそれぞれ受け取るために接続される。この最後の信号は、ＳＨＩＦＴ  ＲＩＧＨＴ命令、ＳＥＴ命令またはＣＬＥＡＲ命令のいずれかが実行される時、ブロック５９０ＤＬの評価相の期間中に表明される。また、２つのＮチヤンネル・トランジスタ６１４Ｎ３および６１４Ｎ４のソース／ドレイン路がノード６１４ＮＤ２とノード６１４ＮＤ１との間に接続される。Ｎチヤンネル・トランジスタ６１４Ｎ３および６１４Ｎ４のそれぞれのゲートは、ｓｅｔｃｌｒ＿ｍａｓｋｘ信号およびｓｅｔｃｌｒ信号をそれぞれ受け取るために接続される。この最後の信号は、ＳＥＴ命令またはＣＬＥＡＲ命令のいずれかが実行される時、ブロック５９０ＤＬの評価相の期間中に表明される。また、２つのＮチヤンネル・トランジスタ６１４Ｎ５および６１４Ｎ６のソース／ドレイン路がノード６１４ＮＤ２とノード６１４ＮＤ１との間に接続される。Ｎチヤンネル・トランジスタ６１４Ｎ５および６１４Ｎ６のそれぞれのゲートは、ｓｈｉｆｔｌｅｆｔ＿ｍａｓｋｘ信号およびｓｈｌ信号をそれぞれ受け取るために接続される。この後者の信号は、ＳＨＩＦＴ  ＬＥＦＴ命令が実行される時、ブロック５９０ＤＬの評価相の期間中に表明される。最後に、Ｎチヤンネル・トランジスタ６１４Ｎ７のソース／ドレイン路がノード６１４ＮＤ２とノード６１４ＮＤ１との間に接続される。Ｎチヤンネル・トランジスタ６１４Ｎ７のゲートは、ｓｈｒｘ＿ｓｈｌｘ＿ｓｅｔｃｌｒｘ信号を受け取るために接続される。この信号は、ＳＨＩＦＴ  ＲＩＧＨＴ命令、ＳＨＩＦＴ  ＬＥＦＴ命令、ＳＥＴ命令またはＣＬＥＡＲ命令の任意の１つが実行される時、低レベルに表明される。
【０１８８】
最後に、反転器６１０ＩＮＶ１および６１０ＩＮＶ２のおのおのは、それぞれの反転器と関連して接続された３つのトランジスタを有する。反転器６１０ＩＮＶ１に関しては、その出力はＰチヤンネル・トランジスタ６１４Ｐ１のゲートに接続される。Ｐチヤンネル・トランジスタ６１４Ｐ１のソースはＶＤＤに接続され、そしてそのドレインは反転器６１０ＩＮＶ１の入力に接続される。反転器６１０ＩＮＶ１の出力はまたＮチヤンネル・トランジスタ６１６Ｎ１のゲートに接続され、そしてそのソースはアースに接続され、そしてそのドレインはＮチヤンネル・トランジスタ６１６Ｎ２のソースに接続される。Ｎチヤンネル・トランジスタ６１６Ｎ２のゲートはＣＬＫを受け取るために接続され、そしてＮチヤンネル・トランジスタ６１６Ｎ２のドレインは反転器６１０ＩＮＶ１の入力に接続される。反転器６１０ＩＮＶ２に関しては、その出力はＰチヤンネル・トランジスタ６１８Ｐ１のゲートに接続される。Ｐチヤンネル・トランジスタ６１８Ｐ１のソースはＶＤＤに接続され、そしてそのドレインは反転器６１０ＩＮＶ２の入力に接続される。反転器６１０ＩＮＶ２の出力はまたＮチヤンネル・トランジスタ６１８Ｎ１のゲートに接続され、そしてそのソースはアースに接続され、そしてそのドレインはＮチヤンネル・トランジスタ６１８Ｎ２のソースに接続される。Ｎチヤンネル・トランジスタ６１８Ｎ２のゲートはＣＬＫを受け取るために接続され、そしてＮチヤンネル・トランジスタ６１８Ｎ２のドレインは反転器６１０ＩＮＶ２の入力に接続される。
【０１８９】
ブロック５９０ＤＬの動作は、論理の意味において、ブロック５９０の静的論理装置について説明しそして図３７に関連して前記で考察した動作と類似している。したがって当業者は前記の考察を参照し、それに加えてブロック５９０ＤＬのダイナミックな特性を理解する。それに加えることとして、ｓｈｉｆｔｌｅｆｔ＿ｍａｓｋ入力信号は、デュアル・レール信号をスワップする（すなわち、反転する）ことによっておよび１ビットだけダウンシフトすることによって、ｓｈｉｆｔｒｉｇｈｔ＿ｍａｓｋ入力から得られる。ブロック５９０ＤＬのダイナミック論理の正のレール（すなわち、図４０の下左に対して）は図３７の静的論理として同じ転送機能を有し、一方、負のレールは入力マスクの単純化されたＯＲ機能を有する。
【０１９０】
図４１は、図３７のマルチプレクサ５０２と飽和定数スイッチ５８２とＡＮＤゲート５０４とによって得られる種々の信号の選定を実現するため、およびそれによって出力デュアル・レール信号ＶＥＸＥＣ＿ＦおよびＶＥＸＥＣ＿ＦＸに対して１ビットを出力するためのダイナミック論理回路システム６００ＤＬを示した図である。したがって、好ましい実施例のシステム６００ＤＬは、総計３２個の同様な設計の回路のために複製される。図４１のデバイスおよび接続を考察するならばそしてその下部に向けて開始するならば、ノード７００ＮＤ１はＮチヤンネル・トランジスタ７００Ｎ１のドレインに接続される。このＮチヤンネル・トランジスタ７００Ｎ１のソースはアースに接続され、そしてそのゲートは信号ｅｘｔ＿ｓｓｈｌを受け取るために接続される。信号ｅｘｔ＿ｓｓｈｌはＳＡＴＵＲＡＴＩＮＧ  ＳＨＩＦＴ  ＬＥＦＴ命令の実行のためにて表明される。ノード７００ＮＤ１はＮチヤンネル・トランジスタ７００Ｎ２のソース、Ｎチヤンネル・トランジスタ７００Ｎ３のソースおよびＮチヤンネル・トランジスタ７００Ｎ４のソースにまた接続される。Ｎチヤンネル・トランジスタ７００Ｎ２のゲートは信号ｓａｔ＿１を受け取るために接続される。信号ｓａｔ＿１は、もし１出力が要求されるならば飽和の期間中に表明される。Ｎチヤンネル・トランジスタ７００Ｎ２のドレインはノード７００ＮＤ２に接続される。Ｎチヤンネル・トランジスタ７００Ｎ３および７００Ｎ４のドレインはノード７００ＮＤ３に接続され、そしてそれぞれのゲートは信号ｌｓｂｚ＿ｍａｓｋｘおよびｓａｔ＿０を受け取るために接続される。ここで、ｌｓｂｚ＿ｍａｓｋｘはＥＸＴＲＡＣＴ命令の期間中にだけ妥当であり、そして他の命令に対してはイネーブルではない。ここで、ｓａｔ＿０はＥＸＴＲＡＣＴ命令に対してディスエーブルであり、そしてＳＡＴＵＲＡＴＩＮＧ  ＳＨＩＦＴ  ＬＥＦＴ命令に対してもしゼロ入力が要求されるならば飽和の期間中に表明される。ノード７００ＮＤ２に戻るならば、２つのＮチヤンネル・トランジスタ７００Ｎ５および７００Ｎ６のソース／ドレイン路がノード７００ＮＤ２と７００ＮＤ４との間に並列に接続される。Ｎチヤンネル・トランジスタ７００Ｎ５のゲートは信号ｌｓｂｚ＿ｍａｓｋに接続され、そしてＮチヤンネル・トランジスタ７００Ｎ６のゲートは信号ｓａｔ＿１に接続される。ノード７００ＮＤ４はまた３つのＮチヤンネル・トランジスタ７００Ｎ７、７００Ｎ８および７００Ｎ９のソース／ドレイン路に接続され、そしてそれらのおのおののゲートはそれぞれ信号ｍａｓｋ＿ａｄｊ、ｓｉｇｎ＿ｂｉｔおよびｄａｔａ＿ｇａｔｅを受け取るために接続される。Ｎチヤンネル・トランジスタ７００Ｎ７のソースは活性低レベル・データＤＬＳ（すなわち、データ・ローティト・ユニット２００からのデータ）のビットを受け取るために接続され、一方、Ｎチヤンネル・トランジスタ７００Ｎ８および７００Ｎ９のソースはノード７００ＮＤ５に接続される。Ｎチヤンネル・トランジスタ７００Ｎ１０のソース／ドレイン路はノード７００ＮＤ５とアースとの間に接続される。Ｎチヤンネル・トランジスタ７００Ｎ１０のゲートは信号ｍａｓｋ＿ａｄｊｘを受け取るた���に接続される。ノード７００ＮＤ３に戻るならば、２つのＮチヤンネル・トランジスタ７００Ｎ１１および７００Ｎ１２がノード７００ＮＤ３と７００ＮＤ６との間に並列に接続される。Ｎチヤンネル・トランジスタ７００Ｎ１１のゲートは信号ｓａｔｘ＿０を受け取るために接続され、そしてＮチヤンネル・トランジスタ７００Ｎ１２のゲートは信号ｌｓｂｚ＿ｍａｓｋを受け取るために接続される。ノード７００ＮＤ６は３つのＮチヤンネル・トランジスタ７００Ｎ１３、７００Ｎ１４および７００Ｎ１５のドレインにまた接続される。Ｎチヤンネル・トランジスタ７００Ｎ１３のゲートはｍａｓｋ＿ａｄｊを受け取るために接続され、そしてそのソースは図４１でＤＸＬＳで示されたデータ・ローティト・ユニット２００からのビットの反転を受け取るために接続される。一方、Ｎチヤンネル・トランジスタ７００Ｎ１４および７００Ｎ１５のそれぞれのゲートは信号ｓｉｇｎ＿ｂｉｔｘおよびｄａｔａ＿ｇａｔｅｘを受け取るために接続される。信号ｓｉｇｎ＿ｂｉｔｘおよびｄａｔａ＿ｇａｔｅｘの両方は、符号ビット・セレクト・ブロック５０６およびデータ・ゲート・ブロック５３０の出力に対応する負のレール信号を表す。Ｎチヤンネル・トランジスタ７００Ｎ１４および７００Ｎ１５のソースはノード７００ＮＤ５に接続される。図４１の下部を完了するならば、２つのＰチヤンネル・トランジスタ７００Ｐ１および７００Ｐ２のソースはＶＤＤに接続され、そしてそれらのゲートはクロック信号ＣＬＫを受け取るために接続され、そしてそれらのドレインはノード７００ＮＤ５および７００ＮＤ６にそれぞれ接続される。
【０１９１】
図４１の上左に向かって考察するならばそしてノード７００ＮＤ２に戻るならば、ノード７００ＮＤ２は２つのＰチヤンネル・トランジスタ７００Ｐ３および７００Ｐ４のドレインに接続され、そしてＰチヤンネル・トランジスタ７００Ｐ３および７００Ｐ４のソースはいずれもＶＤＤに接続される。Ｐチヤンネル・トランジスタ７００Ｐ４のゲートは、Ｎチヤンネル・トランジスタ７００Ｎ１６のゲートおよびＣＬＫに接続される。Ｐチヤンネル・トランジスタ７００Ｐ３のゲートはノード７００ＮＤ３に接続される。ノード７００ＮＤ３は２つのＰチヤンネル・トランジスタ７００Ｐ５および７００Ｐ６のドレインに同じように接続される。Ｐチヤンネル・トランジスタ７００Ｐ５および７００Ｐ６のソースはいずれもＶＤＤに接続される。Ｐチヤンネル・トランジスタ７００Ｐ６のゲートは、Ｎチヤンネル・トランジスタ７００Ｎ１７のゲートおよびＣＬＫに接続される。Ｐチヤンネル・トランジスタ７００Ｐ５のゲートはノード７００ＮＤ２に接続される。ノード７００ＮＤ２を続けれるならば、それはＰチヤンネル・トランジスタ７００Ｐ７のゲートに接続される。Ｐチヤンネル・トランジスタ７００Ｐ７のソースはＶＤＤに接続され、そしてそのドレインは出力ＶＥＸＥＣ＿ＦとＮチヤンネル・トランジスタ７００Ｎ１８のドレインとの両方に接続される。Ｎチヤンネル・トランジスタ７００Ｎ１８のゲートはイネーブル信号に接続され、そしてそのソースはＮチヤンネル・トランジスタ７００Ｎ１９のドレインに接続される。Ｎチヤンネル・トランジスタ７００Ｎ１９のゲートはＰチヤンネル・トランジスタ７００Ｐ７のゲートに接続され、そしてそのソースはアースに接続される。出力ＶＥＸＥＣ＿ＦはまたＰチヤンネル・トランジスタ７００Ｐ８のゲートに接続される。Ｐチヤンネル・トランジスタ７００Ｐ８のソースはＶＤＤに接続され、そしてそのドレインはノード７００ＮＤ２に接続される。ノード７００ＮＤ２はまたＮチヤンネル・トランジスタ７００Ｎ１６のドレインに接続される。Ｎチヤンネル・トランジスタ７００Ｎ１６のソースはＮチヤンネル・トランジスタ７００Ｎ２０のドレインに接続される。Ｎチヤンネル・トランジスタ７００Ｎ２０のソースはアースに接続され、そしてそのゲートは出力ＶＥＸＥＣ＿Ｆに接続される。
【０１９２】
図４１の上右に向けて考察するならばそしてノード７００ＮＤ３に戻るならば、ノード７００ＮＤ３はＰチヤンネル・トランジスタ７００Ｐ９のゲートに接続される。Ｐチヤンネル・トランジスタ７００Ｐ９のソースはＶＤＤに接続され、そしてそのドレインは補数出力ＶＥＸＥＣ＿ＦＸとＮチヤンネル・トランジスタ７００Ｎ２１のドレインとの両方に接続される。Ｎチヤンネル・トランジスタ７００Ｎ２１のゲートはイネーブル信号に接続され、そしてそのソースはＮチヤンネル・トランジスタ７００Ｎ２２のドレインに接続される。Ｎチヤンネル・トランジスタ７００Ｎ２２のゲートはＰチヤンネル・トランジスタ７００Ｐ９のゲートに接続され、そしてそのソースはアースに接続される。補数出力ＶＥＸＥＣ＿ＦＸはまたＰチヤンネル・トランジスタ７００Ｐ１０のゲートに接続される。Ｐチヤンネル・トランジスタ７００Ｐ１０のソースはＶＤＤに接続され、そしてそのドレインはノード７００ＮＤ３に接続される。ノード７００ＮＤ３はまたＮチヤンネル・トランジスタ７００Ｎ１７のドレインに接続される。Ｎチヤンネル・トランジスタ７００Ｎ１７のソースはＮチヤンネル・トランジスタ７００Ｎ２３のドレインに接続される。Ｎチヤンネル・トランジスタ７００Ｎ２３のソースはアースに接続され、そしてそのゲートは補数出力ＶＥＸＥＣ＿ＦＸに接続される。
【０１９３】
ダイナミック論理回路システム６００ＤＬの動作は、図３９に示された静的方式および前記の機能の説明に関して、そこに提供されている類似の信号が与えられるならば当業者には分かるはずである。次に、種々の特徴を簡単に要約すれば、全体的に言って、正のレールは図４１の左側に関し、負（すなわち、補数）のレールは図４１の右側に関する。Ｎチヤンネル・トランジスタ７００Ｎ７で出発するならば、このトランジスタはそのゲートにｍａｓｋ＿ａｄｊを受け取る。この信号はマスク調整ブロック５９０によって出力された制御ビット・コードＣＢ［３１：０］の１ビットであることを想起する。したがって、もしｍａｓｋ＿ａｄｊが高レベルを表明するならば、その時にはＮチヤンネル・トランジスタ７００Ｎ７がイネーブルになり、そしてローティトされたデータ・ビットＤＬＳがノード７００ＮＤ４に接続される。さらに、ＥＸＴＲＡＣＴ命令に対して、ｓａｔ＿１がゼロになり、そしてｌｓｂｚ＿ｍａｓｋはブロック５１０の出力の１ビットであり、それによって、Ｎチヤンネル・トランジスタ７００Ｎ５が潜在的にイネーブルになる（一方、他のすべての命令に対してｌｓｂｚ＿ｍａｓｋはゼロになる）。したがって、ｌｓｂｚ＿ｍａｓｋの１ビットが高レベルである場合、ノード７００ＮＤ４データにおけるＤＬＳデータはノード７００ＮＤ２に通過する。さらに、この時にイネーブル信号がまた表明される（回路６００ＤＬがもし３状態設定に置かれることが要求されない場合であるように）と仮定するならば、その時にはノード７００ＮＤ５のローティトされたデータ・ビットＤＬＳがＰチヤンネル・トランジスタ７００Ｐ７とＮチヤンネル・トランジスタ７００Ｎ１９とを組合せたものによって反転され、したがってこの反転されたデータが出力ＶＥＸＥＣ＿Ｆとして供給される。これと同時にそして補数出力ＶＥＸＥＣ＿ＦＸに関して、それはＤＸＬＳの補数を供給する。それは、Ｎチヤンネル・トランジスタ７００Ｎ１２のようにＮチヤンネル・トランジスタ７００Ｎ１３がまたイネーブルにされ、それによりＤＸＬＳがノード７００ＮＤ３に接続され、そしてそのノードのデータがＰチヤンネル・トランジスタ７００Ｐ９とＮチヤンネル・トランジスタ７００Ｎ２２との組合せによって反転されるからである。次に、Ｎチヤンネル・トランジスタ７００Ｎ１０を考察するならば、このトランジスタはそのゲートにｍａｓｋ＿ａｄｊｘを受け取る。ｍａｓｋ＿ａｄｊに対する「０」の出力に対応する場合に、信号ｍａｓｋ＿ａｄｊｘは高レベルを表明する。応答の際、Ｎチヤンネル・トランジスタ７００Ｎ８またはＮチヤンネル・トランジスタ７００Ｎ９のいずれかが、Ｎチヤンネル・トランジスタ７００Ｎ１４および７００Ｎ１５のそれぞれに対して起こる補数動作と共に、その対応するゲート信号ｓｉｇｎ＿ｂｉｔおよびｄａｔａ＿ｇａｔｅの状態に基づいてイネーブルにされることができる（ここで、実行される命令に基づいて同時にこれらの１つだけが高レベルであることができる）。したがって、ノード７００ＮＤ２または７００ＮＤ３の１つがイネーブルにされトランジスタを通して放電され、そしてその放電された状態が反転され、そしてＶＥＸＥＣ＿ＦおよびＶＥＸＥＣ＿ＦＸの１つに、これらの出力の他のものにおいて出力される補数状態と共に、出力される。ＳＡＴＵＲＡＴＩＮＧ  ＳＨＩＦＴ  ＬＥＦＴ命令に対する回路６００ＤＬの動作をまた考察するならば、もし飽和がありそして１出力が要求されるならば、その時にはｓａｔ＿１が高レベルを表明し、一方ｓａｔｘ＿０は低レベルを表明する。また、もし飽和がありそして０出力が要求されるならば、その時にはｓａｔ＿０が高レベルを表明し、一方ｓａｔｘ＿１は低レベルを表明する。ｓａｔ＿１の高レベル値はＮチヤンネル・トランジスタ７００Ｎ２をイネーブルにし、それによってノード７００ＮＤ２が放電し、そしてＶＥＸＥＣ＿Ｆを高レベルにする。一方、ｓａｔ＿０の高レベル値はＮチヤンネル・トランジスタ７００Ｎ４をイネーブルにし、それによってノード７００ＮＤ３が放電し、そしてＶＥＸＥＣ＿ＦＸを高レベル（そして同時に、ＶＥＸＥＣ＿Ｆを低レベル）にする。
【０１９４】
前記の説明から、前記の実施例により先行技術を越える種々の改良が得られることが分かるであろう。１つの利点として、この好ましい実施例により、第１のシフト・カウントに十分に応答して全データの引数を分離してシフトする必要がなく、そしてその後に第２のシフト・カウントに十分に応答して全データの引数を分離してシフトする必要もなく左および右のシフト・カウント・インジケータのそれぞれに応答してデータの引数を効率的にシフトするために、命令に応答して動作することができる電子プロセッサが得られる。また別の利点としては、この電子プロセッサをさらに修正して、多くのデータ操作命令の任意の１つにまたは多くに適応することができる。また別の利点としては、静的論理またはダイナミック論理のいずれかを用いる方式を含めて好ましい実施例に対する種々の実装の詳細が得られる。なおまた別の利点としては、これらの実施例が詳細に説明されたが、本発明の範囲内において種々の置き換え、修正または変更を行うことができるであろう。例えば、３２ビット・データの引数が示されたが、本発明の技術は他の寸法のデータの引数に応用することができる。また別の例としては、ＲＯＴＡＴＥ  ＳＴＡＧＥが特定の順序で示されたが、その順序は単にシフトの引数の中のビット位置の順序に関して動作の理解を単純にするためだけのものである。けれども、一定のシフトは他のシフトとは独立であるから、いくつかのＳＴＡＧＥは異なる順序で配置することができる。したがって、これらの多くの利点および前記の細部から、当業者には請求項に記載されているように、本発明の範囲をさらによく理解することができるはずである。
【０１９５】
以上の説明に関して更に以下の項を開示する。
（１）  複数のビットを有する初期のデータ引数を受け取るための入力と、
第１の方向の多数のシフト位置を指示しおよび多数のビットを有する第１のシフト引数を供給する回路と、
第２の方向の多数のシフト位置を指示しおよび多数のビットを有する第２のシフト引数を供給する回路と、
おのおのが入力と出力とを有する複数のローティト・ステージと、
を有し、ここで
前記複数のローティト・ステージの中の１つのローティト・ステージが前記初期のデータ引数を受け取るために結合され、
前記複数のローティト・ステージの中で前記１つのローティト・ステージ以外のローティト・ステージのおのおのが前記複数のローティト・ステージの中のまた別の１つのローティト・ステージの出力からデータ引数を受け取るために結合され、
前記複数のローティト・ステージの中のローティト・ステージのおのおのが前記第１および第２のシフト引数の少なくとも１つのすべてのビットよりも少ないビットに応答して前記対応するローティト・ステージの中に前記データ引数をローティトさせるように動作することができ、
前記複数のローティト・ステージの中の少なくとも１つのローティト・ステージが前記第１および第２のシフト引数のそれぞれのビット位置の和に応答して前記対応するローティト・ステージの中に前記データ引数をローティトさせるように動作することができる集積回路デバイス。
（２）  第１項記載のデバイスにおいて、前記第１および第２のシフト引数のおのおのが奇数のビットから成るデバイス。
（３）  第１項記載のデバイスにおいて、
前記複数のローティト・ステージの中の第１のローティト・ステージが前記第１のシフト引数の中の最下位ビットに応答して前記第１のローティト・ステージの中に前記データ引数をローティトさせるように動作することができ、
前記複数のローティト・ステージの中の第２のローティト・ステージが前記第２のシフト引数の中の最下位ビットに応答して前記第２のローティト・ステージの中に前記データ引数をローティトさせるように動作することができるデバイス。
（４）  第３項記載のデバイスにおいて、前記複数のローティト・ステージの中で前記第１および第２のローティト・ステージ以外のローティト・ステージのおのおのが前記第１および第２のシフト引数のそれぞれのビット位置の和に応答して前記対応するローティト・ステージの中に前記データ引数入力をローティトさせるように動作することができるデバイス。
（５）  第４項記載のデバイスにおいて、前記第１および第２のシフト引数のおのおのが５個のビットを有するデバイス。
（６）  多数のシフト位置を第１の方向に指示しおよび複数のビットを有する第１のシフト引数を提供する段階と、
多数のシフト位置を第２の方向に指示しおよび複数のビットを有する第２のシフト引数を提供する段階と、
おのおのが１つの入力および１つの出力を有する複数のローティト・ステージと、
複数のローティト・ステージの中の１つのローティト・ステージの中のおよび複数のビットを有する初期のデータ引数を受け取る段階と、
前記複数のローティト・ステージの中で前記１つのローティト・ステージ以外のローティト・ステージのおのおのに対して、前記複数のローティト・ステージの中でまた別の１つのローティト・ステージの出力からデータ引数を受け取る段階と、
前記複数のローティト・ステージの中のローティト・ステージのおのおのに対して、前記第１および第２のシフト引数の少なくとも１つのすべてのビットより少ないビットに応答して前記対応するローティト・ステージの中に前記データ引数入力をローティトする段階と、
を有し、ここで前記複数のローティト・ステージの中の少なくとも１つのローティト・ステージが前記第１および第２のシフト引数のそれぞれのビット位置の和に応答して前記対応するローティト・ステージの中に前記データ引数入力をローティトさせるよう動作することができる、集積回路デバイスを動作させる方法。
（７）  第６項記載の方法において、前記第１および第２のシフト引数のおのおのが奇数のビットから成る方法。
（８）  第６項記載の方法において、
前記第１のシフト引数の中の最下位ビットに応答して前記データ引数入力を第１のローティト・ステージの中にローティトさせるために、前記複数のローティト・ステージの中の前記第１のローティト・ステージを動作させる段階と、
前記第２のシフト引数の中の最下位ビットに応答して前記データ引数入力を第２のローティト・ステージの中にローティトさせるために、前記複数のローティト・ステージの中の前記第２のローティト・ステージを動作させる段階と、
をさらに有する方法。
（９）  第８項記載の方法において、前記複数のローティト・ステージの中の前記第１および第２のローティト・ステージ以外のローティト・ステージのおのおのに対し、前記第１および第２のシフト引数のそれぞれのビット位置の和に応答して前記データ引数入力を前記対応するローティト・ステージの中にローティトさせる段階をさらに有する方法。
（１０）  第９項記載の方法において、前記第１および第２のシフト引数のおのおのが５個のビットを有する方法。
（１１）  複数のビットを有する初期のデータ引数Ｄ［３１：０］を受け取るための入力を備えた集積回路デバイス１００が得られる。このデバイスはまた、第１の方向に多数のシフト位置を指示しおよび複数のビットを有する第１のシフト引数Ｌ［４：０］を提供する回路と、第２の方向に多数のシフト位置を指示しおよび複数のビットを有する第２のシフト引数Ｒ［４：０］を提供する回路とを有する。このデバイスはまた複数のローティト・ステージＲＯＴＡＴＥ  ＳＴＡＧＥｎを有する。これらのローティト・ステージのおのおのは１つの入力と１つの出力とを有する。複数のローティト・ステージの中の１つのローティト・ステージＲＯＴＡＴＥ  ＳＴＡＧＥ１は初期のデータ引数を受け取るために結合される。複数のローティト・ステージの中の前記の１つのローティト・ステージ以外のローティト・ステージのおのおのは、複数のローティト・ステージの中のまた別の１つのローティト・ステージの出力からのデータ引数を受け取るために結合される。さらに、複数のローティト・ステージの中のローティト・ステージのおのおのは、第１および第２のシフト引数の少なくとも１つのすべてのビットよりも少ないビットに応答してデータ引数入力を対応するローティト・ステージの中にローティトさせるように動作することができる。複数のローティト・ステージの中の少なくとも１つのローティト・ステージは、第１および第２のシフト引数のそれぞれのビット位置の和に応答してデータ引数入力を対応するローティト・ステージの中にローティトさせるように動作することができる。
【０１９６】
本出願は、本出願と同じ日付で米国において出願された「抜き出し動作を有する効率的なシフト動作を備えたプロセッサ・システム(Processor System With Shift Operations Including Extract Operation)」米国出願番号第10/326,515号（代理人整理番号第TI-33593号）の関連出願である。
【図面の簡単な説明】
【０１９７】
【図１】３２ビットのデータ値Ｖ１を示した図であって、シフトの例を示すために右シフトＲが左シフトＬよりも大きいようにシフトの引数はＲ＝１０およびＬ＝６である。
【図２】３２ビットのデータ値Ｖ２を示した図であって、シフトの例を示すために右シフトＲが左シフトＬよりも小さいようにシフトの引数はＲ＝８およびＬ＝１６である。
【図３】１つの好ましい実施例によるそしてデータ・ローティト・ユニットを有するプロセッサのブロック線図。
【図４】図１からの同じ３２ビットのデータの引数Ｄ［３１：０］を示した図であって、ここで、このデータの引数は図４の左側にＲＯＴＡＴＥ  ＳＴＡＧＥ１に対する入力として示され、そして図４の右側に示されたデータの引数はＲＯＴＡＴＥ  ＳＴＡＧＥ１からの出力である。
【図５】左側にＲＯＴＡＴＥ  ＳＴＡＧＥ１からＲＯＴＡＴＥ  ＳＴＡＧＥ２によって受け取られた３２ビットのデータの引数Ｄ［３１：０］を示し、そして右側の引数はＲＯＴＡＴＥ  ＳＴＡＧＥ２からの出力を示した図。
【図６】Ｌが１０進値の６に等しくおよびＲが１０進値の１０に等しい図１の例におけるシフトの引数に対するＲＯＴＡＴＥ  ＳＴＡＧＥ３の動作を示した図。
【図７】Ｌが１０進値の６に等しくおよびＲが１０進値の１０に等しい図１の例におけるシフトの引数に対するＲＯＴＡＴＥ  ＳＴＡＧＥ４の動作を示した図。
【図８】Ｌ＝１６およびＲ＝８である図２の例に応答してその入力を右１ビット位置だけローティトするためのＲＯＴＡＴＥ  ＳＴＡＧＥ１の動作を示した図。
【図９】Ｌ＝１６およびＲ＝８である図２の例に応答してその入力を右２ビット位置だけローティトするためのＲＯＴＡＴＥ  ＳＴＡＧＥ２の動作を示した図。
【図１０】Ｌ＝１６およびＲ＝８である図２の例に応答してその入力を右６ビット位置だけローティトするためのＲＯＴＡＴＥ  ＳＴＡＧＥ３の動作を示した図。
【図１１】Ｌ＝１６およびＲ＝８である図２の例に応答してその入力を右１６ビット位置だけローティトするためのＲＯＴＡＴＥ  ＳＴＡＧＥ４の動作を示した図。
【図１２】図３のＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲを構成するための好ましい実施例の論理図。
【図１３】図１２のＳＴＡＧＥ３  ＣＯＮＴＲＯＬＬＥＲの桁上げ発生器ブロックの概要図。
【図１４】図３のＳＴＡＧＥ４  ＣＯＮＴＲＯＬＬＥＲを構成するための好ましい実施例のブロック線図および論理図。
【図１５】図３に示されたブロック線図に対してまた別の好ましい実施例によるプロセッサのブロック線図。
【図１６】図１５からのＲＯＴＡＴＥ  ＳＴＡＧＥ１′の概要図。
【図１７】図１５からのＲＯＴＡＴＥ  ＳＴＡＧＥ２′の１つのマルチプレクサＭ２′の概要図。
【図１８】図１５からのＲＯＴＡＴＥ  ＳＴＡＧＥ３′の１つのマルチプレクサＭ３′の概要図。
【図１９】Ｌ［２：１］＋Ｒ［２：１］の加算を適切に復号化するためにダイナミック論理を用いて図１５のＳＴＡＧＥ２′ＣＯＮＴＲＯＬＬＥＲの部分を設置するための好ましい実施例の概要図。
【図２０】図１９の多重レベル構造の動作を示したグラフ。
【図２１】図１５のＳＴＡＧＥ２′制御装置のための桁上げ発生器を実現するためのダイナミック論理構造の好ましい実施例の概要図。
【図２２】Ｌ［４：３］＋Ｒ［４：３］の加算を適切に復号化するためにダイナミック論理を用いて図１５のＳＴＡＧＥ３′ＣＯＮＴＲＯＬＬＥＲの部分を設置するための好ましい実施例の一部分の概要図。
【図２３】ＥＸＴＲＡＣＴ命令を実行するためのシステムのブロック線図。
【図２４】右シフトの引数が左シフトの引数よりも大きい場合に対する図２３のシステムの動作の例を示した図。
【図２５】左シフトの引数が右シフトの引数よりも大きい場合に対する図２３のシステムの動作の例を示した図。
【図２６】図２３のデータ・ローティト・ユニット２００に対する入力である実際の物理的ピンを表すひとつながりにされたピン引数ＣＡＲＧ１を示した図。
【図２７】図２８のシステムの動作の例を示した図。
【図２８】ＳＨＩＦＴ  ＬＥＦＴ命令を実行するためのシステムのブロック線図。
【図２９】ＳＥＴ命令またはＣＬＥＡＲ命令のいずれかを実行するためのシステムのブロック線図。
【図３０】図２９のシステムの動作の例を示した図。
【図３１】種々のコードおよびマスクを付加的に示すと共に、図２９のシステムの動作の例を示した図。
【図３２】ＦＵＮＮＥＬ  ＳＨＩＦＴ命令を実行するためのシステムのブロック線図。
【図３３】ＦＵＮＮＥＬ  ＳＨＩＦＴ命令の先行技術による実行の例を示した図。
【図３４】ＦＵＮＮＥＬ  ＳＨＩＦＴ命令の好ましい実施例による実行の例を示した図。
【図３５】ＳＡＴＵＲＡＴＩＮＧ  ＳＨＩＦＴ  ＬＥＦＴ命令を実行するためのシステムのブロック線図。
【図３６】図３５の飽和スイッチを実現するための好ましい実施例のブロック線図。
【図３７】ＥＸＴＲＡＣＲ、ＳＨＩＦＴ  ＲＩＧＨＴ、ＳＨＩＦＴ  ＬＥＦＴ、ＳＥＴ、ＣＬＥＡＲ、ＦＵＮＮＥＬ  ＳＨＩＦＴおよびＳＡＴＵＲＡＴＩＮＧ  ＳＨＩＦＴ  ＬＥＦＴの命令のおのおのを実行するための組み合わされたシステムのブロック線図。
【図３８】図３７のマスク調整ブロックの１つのビットの概要図。
【図３９】図３７のマルチプレクサ５０２、飽和定数スイッチ５８２およびＡＮＤゲート５０４によって選択的に供給される種々の信号を実施しそしてそれによって出力信号ＶＥＸＥＣ＿Ｆに対する１ビットを出力するための静的論理回路システム６００を示した図。
【図４０】図３７のマスク調整ブロック５９０の１ビットの概要図。
【図４１】図３７のマルチプレクサ５０２、飽和定数スイッチ５８２およびＡＮＤゲート５０４によって選択的に提供される種々の信号を実現しそしてそれによって出力デュアル・レール信号ＶＥＸＥＣ＿ＦおよびＶＥＸＥＣ＿ＦＸに対する１つのビットを出力するためのダイナミック論理回路システム６００ＤＬを示した図。
【符号の説明】
【０１９８】
Ｒ  右方向の引数を受け取るための入力
Ｌ  左方向の引数を受け取るための入力
２００１  電子システム
２００  第１および第２の方向の引数に応答して入力データの引数をローティトすることによって整数のビットを有する第１のデータ出力を生ずる回路
５０２  修正されたデータの出力を供給する回路
【図１】
2004206720.tif 000014
【図２】
2004206720.tif 000015
【図３】
2004206720.tif 000016
【図４】
2004206720.tif 000017
【図５】
2004206720.tif 000018
【図６】
2004206720.tif 000019
【図７】
2004206720.tif 000020
【図８】
2004206720.tif 000021
【図９】
2004206720.tif 000022
【図１０】
2004206720.tif 000023
【図１１】
2004206720.tif 000024
【図１２】
2004206720.tif 000025
【図１３】
2004206720.tif 000026
【図１４】
2004206720.tif 000027
【図１５】
2004206720.tif 000028
【図１６】
2004206720.tif 000029
【図１７】
2004206720.tif 000030
【図１８】
2004206720.tif 000031
【図１９】
2004206720.tif 000032
【図２０】
2004206720.tif 000033
【図２１】
2004206720.tif 000034
【図２２】
2004206720.tif 000035
【図２３】
2004206720.tif 000036
【図２４】
2004206720.tif 000037
【図２５】
2004206720.tif 000038
【図２６】
2004206720.tif 000039
【図２７】
2004206720.tif 000040
【図２８】
2004206720.tif 000041
【図２９】
2004206720.tif 000042
【図３０】
2004206720.tif 000043
【図３１】
2004206720.tif 000044
【図３２】
2004206720.tif 000045
【図３３】
2004206720.tif 000046
【図３４】
2004206720.tif 000047
【図３５】
2004206720.tif 000048
【図３６】
2004206720.tif 000049
【図３７】
2004206720.tif 000050
【図３８】
2004206720.tif 000051
【図３９】
2004206720.tif 000052
【図４０】
2004206720.tif 000053
【図４１】
2004206720.tif 000054