(57)【特許請求の範囲】
【請求項１】
算術論理ユニットであって、
第１および第２のバス（５６，５８）と、
前記第１のバス（５６）に結合される入力（６８）と、出力（７６）とを有するシフトレジスタ（４２）とを備え、
前記シフトレジスタ（４２）は、
前記第１のバス（５６）から前記入力（６８）を介して第１の多ビットデータを受信する多ビット入力（１７４）と、第２の多ビットデータを出力する多ビット出力（１７６，１７８）とを有するシフタ手段（１５０）と、
前記シフタ手段（１５０）の前記多ビット出力（１７６，１７８）の少なくとも一部分（１７６）に結合され、前記多ビット出力（１７６，１７８）から出力される前記第２の多ビットデータのうちの選択されたビットを予め定められた値に設定することによって前記選択されたビットをマスクするデータマスク手段（１５２）とを含み、前記予め定められた値は前記データマスク手段（１５２）によって定められ、
前記シフトレジスタ（４２）は、前記出力（７６）を介して、前記第２の多ビットデータのうちの前記選択されたビットがマスクされた第３の多ビットデータを出力し、
算術論理ユニットはさらに、
前記シフトレジスタ（４２）の前記出力（７６）に結合され前記第３の多ビットデータを受信する第１の入力（７８）と、前記第２のバス（５８）に結合される第２の入力（８０）と、出力（８４）とを有する総和器（４４）と、
前記総和器（４４）の前記出力（８４）に結合される入力（１００）と、前記第１のバス（５６）に結合される出力（１０４）とを有するアキュムレータ（５０）と、
前記総和器（４４）の前記出力（８４）にさらに結合される入力（１０８）と、前記第２のバス（５８）に結合される出力（１１２）とを有するバッファ（５２）とを備える、算術論理ユニット。
【請求項２】
前記シフタ手段（１５０）は単方向シフトレジスタである、請求項１に記載の算術論理ユニット。
【請求項３】
前記シフタ手段（１５０）はシフト制御信号を受信するためのシフト制御入力（７２）をさらに含み、かつ前記シフタ手段（１５０）は前記シフト制御信号に応答して前記受信された第１の多ビットデータを所定数のビット分右へシフトする、請求項２に記載の算術論理ユニット。
【請求項４】
前記シフタ手段（１５０）の前記シフト制御入力（７２）に結合されて前記シフト制御信号を与えるためのシフト制御回路（１５８）をさらに含む、請求項３に記載の算術論理ユニット。
【請求項５】
前記シフタ手段（１５０）は前記受信された第１の多ビットデータがシフトされるとき前記シフトされたデータの符号を拡張する、請求項４に記載の算術論理ユニット。
【請求項６】
前記データマスク手段（１５２）はマスク制御信号を受信するためのマスク制御入力（７４）を含み、かつ前記データマスク手段（１５２）は前記マスク制御信号に応答して、前記第２の多ビットデータの前記選択されたビットをマスクする、請求項１に記載の算術論理ユニット。
【請求項７】
前記第２の多ビットデータは下位ビットを含み、かつ前記データマスク手段（１５２）は前記第２の多ビットデータの前記下位ビットのうちの連続したビットをマスクする、請求項６に記載の算術論理ユニット。
【請求項８】
前記シフタ手段（１５０）はシフト制御信号を受信するためのシフト制御入力（７２）を含み、かつ前記シフタ手段（１５０）は前記シフト制御信号に応答して前記受信された第１の多ビットデータを所定数のビット分右へシフトする、請求項６に記載の算術論理ユニット。
【請求項９】
前記算術論理ユニットは命令メモリ（１４）によって与えられる命令の制御下にあり、かつ前記算術論理ユニットは、シフトレジスタ制御手段（５４）をさらに含み、前記シフトレジスタ制御手段（５４）は、前記命令メモリ（１４）に結合される入力と、前記シフト制御入力（７２）に結合される第１の出力と、前記マスク制御入力（７４）に結合される第２の出力とを有し、前記命令メモリ（１４）から受信される前記命令に応答して、前記シフト制御信号と前記マスク制御信号とを前記シフトレジスタ（４２）に与える、請求項８に記載の算術論理ユニット。
【請求項１０】
前記シフトレジスタ制御手段（５４）は、前記命令をデコードしてシフトされるべきまたはマスクされるべき前記多ビットデータのビット数を示す中間制御信号を与えるデコーダ（１５６）を含み、前記デコーダ（１５６）は前記中間制御信号を与えるための出力を含み、前記シフトレジスタ制御手段（５４）は、前記命令メモリ（１４）に結合され前記命令メモリ（１４）からシフトまたはマスク信号を受信するデマルチプレクサ（１５８）をさらに含み、前記デマルチプレクサ（１５８）は前記命令メモリ（１４）からのシフト信号に応答して前記シフトレジスタ制御手段（５４）の第１の出力に前記中間制御信号を与え、または前記命令メモリ（１４）からのマスク信号に応答して前記シフトレジスタ制御手段（１４）の第２の出力に前記中間制御信号を与える、請求項９に記載の算術論理ユニット。
【請求項１１】
前記多ビットデータは符号ビットを含み、かつ前記シフトレジスタ（４２）は、前記符号ビットを予め定められた値に強制するための強制符号手段（１５４）を含む、請求項１に記載の算術論理ユニット。
【請求項１２】
前記算術論理ユニットは命令メモリ（１４）によって与えられる命令の制御下にあり、前記強制符号手段（１５４）は、前記命令メモリ（１４）に結合されて前記命令メモリ（１４）から強制符号制御信号を受信するための制御入力（１７２）を含み、かつ前記強制符号手段（１５４）は、前記命令メモリ（１４）から前記強制符号制御信号を受信することに応答して、前記符号ビットを前記予め定められた値に強制する、請求項１１に記載の算術論理ユニット。
【請求項１３】
前記予め定められた値は論理０である、請求項１２に記載の算術論理ユニット。
【請求項１４】
前記総和器（４４）は、前記第１の入力（７８）で受信される前記第３の多ビットデータを２の補数反転するために構成される、請求項１２に記載の算術論理ユニット。
【請求項１５】
前記総和器（４４）に結合されて、前記符号ビットを前記予め定められた値に強制した後、前記総和器（４４）が前記第３の多ビットデータを２の補数反転することを引起こすための２の補数反転制御手段（１１６）をさらに含む、請求項１４に記載の算術論理ユニット。
【請求項１６】
前記アキュムレータ（５０）は、前記シフトレジスタ（４２）の前記強制符号手段（１５４）による前記符号ビットの強制に先行しておよびその間に、前記第３の多ビットデータをストアし、前記２の補数反転制御手段（１１６）は、前記アキュムレータ（５０）に結合されて前記第３の多ビットデータの前記符号ビットの本来の値を受信し、かつ前記命令メモリ（１４）に結合されて前記命令メモリ（１４）からイネーブル信号を受信し、前記２の補数反転制御手段（１１６）は、前記イネーブル信号と、前記符号ビットの前記本来の値が論理１であることとに応答し、前記総和器（４４）が前記第１の入力（７８）における前記第３の多ビットデータを２の補数反転することを引起こす、請求項１５に記載の算術論理ユニット。
【請求項１７】
前記シフトレジスタ（４２）は前記第１の多ビットデータを右へシフトして前記第３の多ビットデータを与え、前記シフトレジスタ（４２）は前記予め定められた値を用いて、前記第３の多ビットデータの符号を拡張して、前記総和器（４４）の第１の入力（７８）に、前記符号拡張された第３の多ビットデータを与える、請求項１４に記載の算術論理ユニット。
【請求項１８】
前記総和器（４４）に結合されて、前記拡張された符号を前記予め定められた値に強制した後、前記総和器（４４）が前記符号拡張された第３の多ビットデータを２の補数反転することを引起こすための２の補数反転制御手段（１１６）をさらに含む、請求項１７に記載の算術論理ユニット。
【請求項１９】
前記アキュムレータ（５０）は、前記シフトレジスタ（４２）による前記符号ビットの強制および拡張に先行しておよびその間に、前記第３の多ビットデータをストアし、前記２の補数反転制御手段（１１６）は前記アキュムレータ（５０）に結合されて前記第３の多ビットデータの前記符号ビットの本来の値を受信し、かつ前記命令メモリ（１４）に結合されて前記命令メモリ（１４）からイネーブル信号を受信し、前記２の補数反転制御手段（１１６）は、前記イネーブル信号と、前記符号ビットの前記本来の値が論理１であることとに応答して、前記総和器（４４）が前記第１の入力（７８）における前記第３の多ビットデータを２の補数反転することを引起こす、請求項１８に記載の算術論理ユニット。
【請求項２０】
前記総和器（４４）は、前記第１の入力（７８）で受信される前記第３の多ビットデータを２の補数反転するために構成され、前記算術論理ユニットは、前記命令メモリ（１４）と前記総和器（４４）とに結合され、前記命令メモリ（１４）からのイネーブル信号と反転信号とに応答して、前記総和器（４４）が前記第１の入力（７８）における前記第３の多ビットデータを２の補数反転することを引起こすための２の補数反転制御手段（１１６）をさらに含む、請求項１に記載の算術論理ユニット。
【請求項２１】
前記算術論理ユニットはｎ−ビット容量を有し、前記算術論理ユニットは、オーバーフロー検出器（４６）とオーバーフロー訂正手段（４８）とをさらに含み、前記オーバーフロー検出器（４６）は、前記総和器（４４）の第１の入力（７８）に結合される第１の入力（８８）と、前記総和器（４４）の第２の入力（８０）に結合される第２の入力（９０）と、前記総和器（４４）の出力に結合される第３の入力（９２）と、出力（９４）とを有し、前記オーバーフロー訂正手段（４８）は、前記オーバーフロー検出器（４６）の出力に結合される制御入力（９６）と、前記総和器（４４）出力に結合されるｎ−ビット入力（８６）と、前記アキュムレータ（５０）入力に結合されるｎ−ビット出力（９８）とを有し、前記オーバーフロー訂正手段（４８）は、前記オーバーフロー検出器（４６）がオーバーフロー条件を検出することに応答して、その最上位出力ビットを論理０にかつその他のすべての出力ビットを論理１に、またはその最上位出力ビットを論理１にかつその他のすべての出力ビットを論理０に強制する、請求項１に記載の算術論理ユニット。
【発明の詳細な説明】
【０００１】
【発明の背景】
この発明は一般に多数の異なる種類のデジタル算術演算を行なうための算術論理ユニットに関する。この発明はより特定的にはデジタル信号プロセッサでの使用のための、かつオペランドシフトと、オペランドマスクと、強制０とオペランド加算とオペランド減算と、オーバーフロー検出および訂正などの演算を効果的な態様で行なうための算術論理ユニットに関する。
【０００２】
算術論理ユニットはたとえば計算機およびデジタル信号プロセッサ等の多数の異なる種類のデジタルシステムで応用されている。算術論理ユニットは多数の異なる種類のデジタル算術演算を行なうように要求される。算術論理ユニットの演算は一般に多ビットオペランドについて行なわれ、かつオペランドシフトと、オペランドマスクと、強制０と、オペランド加算と、オペランド減算と、オーバーフロー検出および訂正とを含み得る。
【０００３】
算術論理ユニットは一般に命令読出専用メモリ（ＩＲＯＭ）等の命令メモリから受信した動作命令の制御下でこれらの演算を行なう。命令メモリによって与えられる各命令は算術論理ユニットの１つの動作サイクルに対応する。その演算を行なうために算術論理ユニットによって要求される動作サイクルの数は非常に重要であり、かつ高効率処理のために可能な最も少ない数の動作サイクルに維持されるべきである。
【０００４】
高効率の算術論理ユニット動作はデジタル信号プロセッサの応用でのように動作速度が重要であるところでは非常に所望される。高効率の算術論理ユニット動作はまた算術論理ユニットが電池等の消耗可能な電源をよって電力を与えられる携帯用装置中で利用されるところでは同様に重要である。その演算を行なうために算術論理ユニットによって要求される動作サイクルの数が低減すると、算術論理ユニットに起因する消耗可能の電源の電力消費は対応して低減される。これは結果として、電池交換または電池再充電が必要になるまでの携帯用装置の動作時間を延長させる。
【０００５】
この発明は効果的な態様で多数の異なるデジタル算術演算を行ない、こうして低減された数の動作サイクルを要求するための改良された算術論理ユニットを提供する。今後わかるように、この発明の算術論理ユニットはオペランド符号強制と、符号強制を伴うまたは伴わないオペランドシフトと、オペランドマスクと、符号強制および２の補数反転をともなうオペランドシフトと、オーバーフロー検出および訂正を伴うまたは伴わないオペランド加算および減算とをたった１つの動作サイクル中で行なうことが可能である。上記の例は符号強制と、オペランドシフトと、２の補数反転と、オペランド加算と、マスク動作とが要求される多少複雑な２つのオペランドのわずか４つの動作サイクル中での加算に関連して説明される。
【０００６】
【発明の概要】
この発明は第１および第２のバスと、第１のバスに結合される入力と、出力とを有するシフトレジスタと、シフトレジスタ出力に結合される第１の入力と、第２のバスに結合される第２の入力と、出力とを有する総和器とを含む算術論理ユニットを提供する。算術論理ユニットは総和器出力に結合される入力と、第１のバスに結合される出力とを有するアキュムレータと、総和器出力にまた結合される入力と、第２のバスに結合される出力とを有するバッファとをさらに含む。
【０００７】
シフトレジスタはシフト制御信号に応答して、シフトレジスタ入力で受信される多ビットデータを所定数のビット分右へシフトするための単方向シフトレジスタであり得る。シフトレジスタはまた受信された多ビットデータがシフトされるときシフトされたデータの符号を拡張し得る。
【０００８】
シフトレジスタ入力は第１のバスから多ビットデータを受信するための多ビット入力であってもよく、かつシフトレジスタ出力は多ビット出力であってもよい。シフトレジスタはその出力で多ビットデータの選択されたビットをマスクするためのデータマスク手段を含み得る。データマスク手段によってマスクされたビットは好ましくは多ビットデータの最下位ビットのうちの連続するビットである。シフトレジスタはまた多ビットデータの最上位ビットまたは符号ビットを予め定められた値に強制するための強制符号手段を含み得る。
【０００９】
総和器はその第１の入力で受信される多ビットデータを２の補数反転するように構成され得る。総和器は、多ビットデータの符号ビットを予め定められた値へ強制した後、総和器が多ビットデータを２の補数反転することを引起こす、総和器に結合された２の補数反転制御手段の制御下で、２の補数反転を行ない得る。
【００１０】
アキュムレータはシフトレジスタによって符号ビットを強制するのに先行しておよびその間に、多ビットデータをストアしてもよく、かつ２の補数反転制御手段はアキュムレータに結合されて多ビットデータの符号ビットの本来の値を受信しかつ命令メモリに結合されて命令メモリからイネーブル信号を受信してもよい。２の補数反転制御手段はイネーブル信号と、符号ビットの本来の値が論理１であることとに応答して、総和器がその第１の入力で多ビットデータを２の補数反転することを引起こしてもよい。
【００１１】
最後に、算術論理ユニットはオーバーフロー条件を検出するためのオーバーフロー検出器と、総和器とアキュムレータとの間に結合されて、オーバーフロー検出器がオーバーフロー条件を検出することに応答して、その最上位出力ビットを論理０にかつその他の出力ビットのすべてを論理１に強制するか、またはその最上位ビットを論理１にかつその他の出力ビットのすべてを論理０に強制するためのオーバーフロー訂正手段とをさらに含み得る。
【００１２】
新規と考えられるこの発明の特徴が前掲の特許請求の範囲で詳細に説明される。この発明はそのさらなる目的および利点とともに、添付の図面とともに読まれる以下の詳細な説明を参照することによって最良に理解されることができ、図中で類似の参照番号は同一のエレメントを示す。
【００１３】
【詳細な説明】
ここで図１を参照して、これはこの発明を実施する算術論理ユニット１２を組入れるデジタル信号プロセッサ１０を詳細なブロック図形式で示す。デジタル信号プロセッサ１０は一般に命令メモリ（ＩＲＯＭ）１４および関連するシーケンサ１６と、データメモリ１８と、読出バッファ２０と、書込バッファ２２と、算術論理ユニット１２と、定数メモリ２４と、乗算器セクション２６と、リミットおよび量子化セクション２８とを含む。
【００１４】
デジタル信号プロセッサ１０、したがって算術論理ユニット１２は、デジタル信号プロセッサ１０の各動作サイクルの間の演算命令を与える命令メモリ１４の制御下でデジタル処理を行なう。命令メモリ１４はシーケンサ１６によってシーケンス処理されて、シーケンサ１６の制御下で一度に１つの動作命令を発する。命令は８−ビットアドレスバス３０と、３−ビットシフト／マスク制御バス３２と、制御ライン３４および３６とを介して命令メモリ１４によって与えられる。アドレスバス３０はデータメモリ１８のためのアドレスをデコードするアドレスデコーダ３８と、定数メモリ２４のためのアドレスをデコードするアドレスデコーダ４０と、乗算器セクション２６と、リミットおよび量子化セクション２８とに結合される。制御ライン３４はこれから説明される態様で多ビットデータが２の補数反転されることを引起こすための制御信号を与え、かつ制御ライン３６はこれから説明される態様で利用されるイネーブル信号を与える。
【００１５】
算術論理ユニット１２はシフトレジスタ４２と、総和器４４と、オーバーフロー検出器４６と、オーバーフロー訂正４８とを含む。算術論理ユニット１２はアキュムレータ５０と、バッファ５２と、シフトレジスタ４２のための制御５４と、第１および第２のバス５６および５８のそれぞれとをさらに含む。
【００１６】
読出バッファ２０はデータメモリ１８に結合され、かつＣＭＯＳトランスファゲート６０および６２のそれぞれによって第１および第２のバス５６および５８のそれぞれに結合される。かかるＣＭＯＳトランスファゲートは当該技術分野で周知であり、周知のように活性化されると低インピーダンスパスを与えかつ非活性化されると高インピーダンスパスまたはアイソレーションを与える。今後参照される他のかかるトランスファゲートは単にトランスファゲートと呼ばれる。
【００１７】
書込バッファ２２はデータメモリ１８に結合され、かつトランスファゲート６４および６６のそれぞれによって第１および第２のバス５６および５８のそれぞれに結合される。シフトレジスタ４２は好ましくはバス３２を介して与えられるシフト／マスク制御信号に応答して、多ビットデータを所定数のビット分右へシフトするための単方向シフトレジスタである。単方向シフトレジスタ４２およびその制御５４は図２に関して引続きより詳細に説明される。単方向シフトレジスタはトランスファゲート７０によって第１のバス５６に結合される入力６８を含む。入力６８は第１のバス５６から多ビットオペランドデータを受信するための多ビット入力である。単方向シフトレジスタ４２は制御５４に結合される第１の制御入力７２と、制御５４に結合される第２の制御入力７４とをさらに含む。最後に単方向シフトレジスタ４２は、多ビットオペランドデータを総和器４４の第１の入力７８に転送するための多ビット出力である出力７６を含む。今後わかるように、出力７６から転送された多ビットデータは今後説明される態様で、シフトされないか、右へシフトされるか、マスクされるか、または符号ビット強制されるかのいずれかであり得る。
【００１８】
総和器４４はその第１の入力７８に加えて、トランスファゲート８２によって第２のバス５８に結合される第２の入力８０を含む。総和器４４はオーバーフロー訂正４８の多ビット入力８６に結合される多ビット出力８４を含む。
【００１９】
オーバーフロー検出器４６は総和器４４の第１の入力７８に結合される第１の入力８８と、総和器４４の第２の入力８０に結合される第２の入力９０と、総和器４４の出力８４に結合される第３の入力９２とを含む。オーバーフロー検出器４６はまたオーバーフロー訂正４８の制御入力９６に結合される出力９４を含む。オーバーフロー訂正４８はトランスファゲート１０３を介してアキュムレータ５０の多ビット入力１００に結合される多ビット出力９８を含む。
【００２０】
アキュムレータ５０は多ビットアキュムレータであり、アキュムレータの最上位ビットはその中にストアされる多ビットオペランドデータのため符号ビットである。アキュムレータ５０はその中にストアされた多ビットオペランドデータの符号ビットの値を与える出力１０２と、トランスファゲート１０６を介して第１のバス５６に結合される多ビット出力１０４とを含む。
【００２１】
一時バッファ５２はトランスファゲート１１０を介してオーバーフロー訂正４８の出力９８に結合される多ビット入力１０８を含む。一時バッファ５２はトランスファゲート１１４を介して第２のバス５８に結合される多ビット出力１１２をさらに含む。算術論理ユニット１２はその動作が引続き説明される２の補数反転制御手段を形成するマルチプレクサ１１６をさらに含む。マルチプレクサ１１６はアキュムレータ５０の出力１０２に結合される第１の入力１１８と、制御ライン３４に結合される第２の入力１２０と、総和器４４の入力１２４に結合される出力１２２とを含む。
【００２２】
乗算器セクション２６はバス３０に結合されることに加えて、トランスファゲート１２８を介して第１のバス５６に結合される入力１２６と、トランスファゲート１３２を介して第２のバス５８に結合される第２の入力１３０と、トランスファゲート１３６を介して第２のバス５８に結合される出力１３４とを含む。
【００２３】
同様に、リミットおよび量子化セクション２８はバス３０に結合されることに加えて、トランスファゲート１４０を介して第１のバス５６に結合される入力１３８と、トランスファゲート１４４を介して第２のバス５８に結合される他の入力１４２と、他のトランスファゲート１４８を介して第１のバス５６に結合される出力１４６とを含む。
【００２４】
デジタル信号プロセッサ１０、したがって算術論理ユニット１２はこの好ましい実施例による１９個までのビットを含む多ビットオペランドデータについて演算を行ない、最初に算術論理ユニット１２内で整列された最上位ビットは多ビットオペランドデータの符号ビットであり、かつ残りの１８個のビットは大きさビットとして利用可能である。またこの好ましい実施例に従えば、単方向シフトレジスタ４２は多ビットオペランドデータを７ビットまで右へシフトし、かつ多ビットオペランドデータの最下位ビットのうちの８個までの連続したビットをマスクするように構成される。また単方向シフトレジスタ４２は多ビットオペランドデータの符号ビットを予め定められた値、たとえば０に強制するように構成される。総和器４４はマルチプレクサ１１６とともに、その第１の入力７８でのオペランドをその第２の入力８０でのオペランドに加算し、その第１の入力７８でのオペランドをその第２の入力８０でのオペランドから減算し、かつその第１の入力７８でのオペランドについて２の補数反転演算を行なうように構成される。当該技術分野で公知の技術に従って、シフトレジスタ４２はまた、それが右へシフトするオペランドの最上位ビットを符号拡張する。
【００２５】
ここで図２を参照して、これは図１で示された単方向シフトレジスタ４２およびシフト／マスク制御手段５４をより詳細に示す。単方向シフトレジスタ４２は一般に右シフタ１５０と、データマスク１５２と、符号データマルチプレクサの形式での強制符号手段１５４とを含む。シフト／マスク制御手段５４はデコーダ１５６とデマルチプレクサ１５８とを含む。
【００２６】
単方向シフトレジスタ１５０の入力６８は、１９番目のビット（符号ビット）がライン１６０を介してデータ符号マルチプレクサ１５４の入力１６２へ伝達されるように分割される。符号データマルチプレクサ１５４の出力１６６は右シフタ１５０の１９番目のビット入力（符号ビット入力）１６８に結合される。符号データマルチプレクサ１５４は接地電位に結合される他の入力１７０と、命令メモリに結合されて命令メモリから強制符号制御信号を受信するための制御入力１７２とを含む。入力６８の他の１８個のビットはバス１６４によって右シフタ１５０の１８−ビット入力１７４に結合される。
【００２７】
右シフタ１５０は最初の８個のビットを与える第１の出力１７６と、最後のすなわちより上位の１１個のビットを与える出力１７８とを含む１対の多ビット出力を含む。出力１７６はデータマスク１５２の８−ビット入力１８０に結合される。データマスク１５２は８−ビット出力１８２を含み、８ビット出力１８２は右シフタの出力１７８と組合わされて１９−ビット出力７６を与える。
【００２８】
デコーダ１５６は制御バス３２に結合されて命令メモリからシフト−マスク制御信号を受信するための制御入力１８４と、デマルチプレクサ１５８の８−ビット入力１８８に結合される８−ビット出力１８６とを含む。デコーダ１５６は命令メモリ１４から３−ビットのシフト／マスク制御信号を受信し、かつそれらの信号をデコードしてオペランドデータを右へシフトすべきビット数、または多ビットオペランドのマスクすべきビット数を示す中間制御信号を８−ビットバス１９０を介して発生する。デマルチプレクサはライン１９４を介して命令メモリ１４に結合されて、シフトまたはマスク制御信号を受信するための制御入力１９２を含む。デマルチプレクサが命令メモリからシフト制御信号を受信するとき、それは右シフトを制御するために、シフト制御入力７２へ伝達されるようにライン１９０上の中間制御信号をその第１の出力１９６へ伝達するであろう。同様にもし入力１９２がマスク制御信号を受信すれば、それはマスク動作を制御するために、データマスク１５２のマスク制御入力７４へ伝達されるようにライン１９０上の中間制御信号をその第２の出力１９８に結合するであろう。
【００２９】
図２をさらに参照して、シフトレジスタ４２が多ビットオペランドの符号ビットについて強制０を行なうべきとき、オペランドは符号ビットが符号データマルチプレクサ１５４の入力１６２に伝達され、かつ多ビットオペランドの残りのビットが入力１７４に伝達される状態で、入力６８で受信される。符号データマルチプレクサ１５４はその制御入力１７２で命令メモリから強制０制御信号を受信し、符号データマルチプレクサ１５４が入力１７０を選択することを引起こし、出力１６６で符号ビットを論理０に強制する。論理０の符号ビットは右シフタの入力１６８に伝達される。かかる符号ビットの強制０は、多ビットオペランドが符号付き大きさのフォーマットであり、かつ今後説明される態様で総和器４４によって２の補数フォーマットに変換される必要のある負の数であるときに要求され得る。
【００３０】
多ビットオペランドにシフト演算を与えるために、多ビットオペランドは入力６８で受信される。ここで再びシフトされるべき多ビットオペランドの符号ビットは、ライン１６０を介して入力１６２に伝達される。符号ビットは符号データマルチプレクサ１５４によって０に強制されるかまたは変化されないかのいずれかであり得る。多ビットオペランドの残りのビット（大きさビット）は入力１７４で受信される。ライン１９４上のシフトまたはマスク制御信号は、マスク動作が起こらなければ通常のことであるシフト動作を示すであろう。命令レジスタは、多ビットオペランドが右へシフトされるべきビット数を示す３ビット二進数をバス３２を介して与えるであろう。多ビットオペランドは右シフタ１５０によって０個から７個のビット分右へシフトされ得る。これはバス３２を介して３−８デコーダ１５６の入力１８４に与えられる３ビットシフト／マスク制御信号が０００と１１１との間の任意の値をとり得ることに対応する。もしたとえば多ビットオペランドが２ビット分右へシフトされるべきであれば、入力１８４で３−ビット制御信号は０１０となるであろう。
【００３１】
入力１８４での３−ビット制御信号はデコーダ１５６によってデコードされて、バス１９０上で中間制御信号を形成する。デマルチプレクサは入力１９２で命令メモリからシフト制御信号を受信するので、ライン１９０上の中間制御信号は出力１９６に、さらに右シフタ１５０の入力７２に伝達されるであろう。右シフタはその後多ビットオペランドを２桁分右へシフトし、かつかかるシフトを行なっている間多ビットオペランドを符号拡張する。言換えれば１７番目、１８番目、および１９番目のビットはすべてシフトされた多ビットオペランドの符号を含むであろう。もし符号ビットが符号データマルチプレクサ１５４によって０に強制されていたら、符号ビットはすべて０になるであろう。
【００３２】
入力６８で多ビットオペランドをマスクするために、再び符号ビットが入力１６８で受信され、かつ大きさビットは入力１７４で受信される。ライン１９４上のシフトまたはマスク制御信号はデマルチプレクサ１５８の入力１９２にマスク演算を示すであろう。バス３２上のシフト／マスク３−ビット制御信号はマスクされるべきビットを示すであろう。たとえばもし入力１８４への３−ビット制御信号が０００ならば、第１のビットはマスクされるであろう。しかしながらもし３−ビット制御信号が１１１ならば、そのときシフトレジスタ出力の最初の８個のビットがマスクされるであろう。
【００３３】
デコーダは中間制御信号をライン１９０に与え、それは入力１９２へのマスク制御信号に応答して、デマルチプレクサがその入力１８８からその出力１９８へ、さらにデータマスク１５２のマスク制御入力７４に中間制御信号を転送することを引起こす。たとえばもしデータマスクが最初の４個のビットをマスクすることであるならば、その時出力７６はその本来の値に関係なく最初の４個のビット（ビット０、１、２、および３）がすべて０である出力を与えるであろう。
【００３４】
加算、減算、および／または２の補数反転の機能を与えることにおいて総和器４４がここで図１を参照して説明される。オペランドがその符号ビットを０に強制されたとき、本来のオペランドはアキュムレータ５０中にまずストアされる。本来の符号ビットはしたがって出力１０２からマルチプレクサ１１６の入力１１８に与えられる。オペランドが総和器４４の第１の入力７８にあるとき、マルチプレクサ１１６はライン３６上のイネーブル信号に応答して制御信号を入力１２４に与え、入力７８のオペランドが総和器４４によって２の補数反転されることを引起こす。これはまたオペランドの符号をその本来の値に更新し、かつ適切に２の補数形式で負であり、かつアキュムレータ５０の入力１００に伝達されるかまたは総和器４４によって利用され得るオペランドを与える。この機能は今後具体例で見られるように、単方向シフトレジスタ４２によってオペランドが符号拡張されシフトされた後でも行なわれ得る。
【００３５】
もし入力７８へのオペランドが入力８０へのオペランドから減算されるべきでありかつそれが正の２の補数オペランドであれば、命令メモリ１４は第１の入力７８でのオペランドが２の補数反転される必要があると示すために、制御ライン３４を介して反転制御信号をマルチプレクサ１１６の入力１２０に与えるであろう。マルチプレクサ１１６はそれにより総和器４４の入力１２４に制御信号を与え、負の２の補数オペランドを形成するように総和器４４が入力７８へのオペランドを２の補数反転することを引起こす。総和器が入力７８への新しいオペランドを入力８０へのオペランドに加算するとき、それは実際は入力７８へのオペランドを入力８０へのオペランドから減算しているであろう。この発明の独特の算術論理ユニットアーキテクチャに限らず、総和器によるかかる２の補数反転は当該技術分野で周知である。
【００３６】
前述のようにオーバーフロー検出器４６はオーバーフロー条件を検出する。図１をさらに参照して、かつ前述のように、算術論理ユニット１２はたとえば１９ビットという有限な多ビット容量を有する。２つの大きな正の２の補数オペランドが加算され小さな負の２の補数結果を結果として生じるとき、または２つの大きな負の２の補数オペランドが加算され小さな正の２の補数結果を生むとき、オーバーフロー条件が結果として生じ得る。これらの条件の両方がオーバーフロー条件である。
【００３７】
オーバーフロー検出器４６はその入力８８、９０、および９２を入力７８、８０と出力８４とのそれぞれに結合させることによって、加算されるべき入力オペランドと結果として生じる和とを検査する。もしオーバーフロー条件が検出されれば、オーバーフロー検出器４６はオーバーフローを訂正するオーバーフロー訂正手段４８の入力９６で受信される制御信号をその出力９４に与える。たとえばもし２つの大きな正の２の補数オペランドを加算することによって小さな負の補数和を結果として生じオーバーフローが引起こされたとすれば、オーバーフロー訂正４８はその結果を無効にしかつその出力９８で可能な最も大きい正の２の補数和を与えるであろう。言換えれば、オーバーフロー訂正９８は論理０の符号ビットとすべて論理１である大きさビットとを有する多ビットの２の補数和を与えるであろう。
【００３８】
もし２つの大きな負の２の補数オペランドを一体加算して小さな正の２の補数和を結果として生じオーバーフロー条件が生じたとすれば、オーバーフロー訂正４８はオーバーフロー検出器４６に応答してこの結果を無効にし、出力９８に可能な最も大きい負の２の補数和を与えるであろう。結果として、オーバーフロー訂正は論理１に等しい符号ビットとすべて論理０である大きさビットとを有する２の補数和を出力９８に与えるであろう。
【００３９】
上述のいずれの場合において、結果として生じる訂正された和は、アキュムレータ５０かまたはアキュムレータ５０と一時バッファ５２との両方のいずれかに伝達されるであろう。これは結果として生じる和をもし必要ならばさらなる処理のために利用可能にする。
【００４０】
この発明の改良された算術論理ユニットの動作が具体例に従ってここに示され、この例では２つのオペランドｘおよびｙは一体加算されて結果として生じる和ｚを作る。オペランドｘは１５−ビット符号付き大きさのオペランドであり、それはその符号ビットが１８番目のビット中にあり、かつその１４個の大きさビットが１７番目ないし４番目のビット中にストアされた状態で、データメモリ１８中に整列される。オペランドｙは１７−ビットの２の補数オペランドであり、それはその符号ビットが１８番目のビットでデータメモリ１８中にストアされ、かつその１６個の大きさビットが１７番目のビットないし２番目のビット中にストアされた状態で整列される。結果として生じる和は１６−ビットの２の補数結果であることが要求され、それはその符号ビットが１８番目のビットにあり、かつその１５個の大きさビットが１７番目ないし３番目のビットに延在する状態で整列される前述のオペランドｘおよびｙと要求される結果として生じる和ｚとが下の表１に示される。
【００４１】
【表１】
0003549549.tif 000002
【００４２】
算術論理ユニット１２が要求されるようにオペランドｘおよびｙを処理する前に、最初のオペランドｘはデータメモリ１８から読出バッファ２０へ読出される。その後最初のオペランドｘは第１のバス５６を介して読出バッファ２０からアキュムレータ５０へ、シフトされずに単方向シフトレジスタ４２と総和器４４とオーバーフロー訂正４８とを介してアキュムレータ５０へ転送される。総和器を通過するとき、オペランドｘを影響されずにアキュムレータ５０へ総和器を通過させるために、総和器は入力７８にオペランドｘを、かつ入力８０にすべて０のオペランドを与えられる。オペランドｘをアキュムレータ５０にストアすることによってその符号は退避される。
【００４３】
次のすなわち第２の動作サイクルにおいて、アキュムレータ５０はオペランドｘをその中に維持しながらオペランドｘの値でバス５６を駆動する。オペランドｘは単方向シフトレジスタ４２によって受信され、そこでその符号ビットは前述のように０に強制されてオペランドｘを正のオペランドにする。符号が０に強制された後、右シフタ１５０はオペランドｘを１桁分右へシフトして１６−ビットの正の符号拡張されたオペランドを生む。最後にこの第２のサイクルを完了するために、イネーブル信号がメモリ１４から制御ライン３６を介してマルチプレクサ１１６に与えられる。同時にアキュムレータ５０は出力１０２からマルチプレクサ１１６にオペランドｘの本来の符号を与える。もしオペランドｘの本来の符号ビットが負のオペランドを示す論理１であれば、マルチプレクサ１１６は総和器４４が総和器４４の入力７８へのここでは１６−ビットの符号拡張されたオペランドｘを２の補数反転することを引起こし、要求される結果として生じる和に整列された新しいオペランドｘを引出す。新しいオペランドｘはアキュムレータ５０と一時バッファ５２とに転送され、第２の算術論理ユニット動作サイクルの間のオペランドｘについての演算を完了する。
【００４４】
算術論理ユニットが第２の動作サイクルの間オペランドｘについてその演算を行なう間、第２のオペランド、オペランドｙはデータメモリ１８から読出バッファ２０へ読出され得る。これは算術論理ユニットによるその第３の動作サイクルの間の処理のためにオペランドｙを利用可能にする。
【００４５】
第３の動作サイクルの間、第２のオペランドｙは読出バッファ２０から第１のバス５６を介して単方向シフトレジスタ４２へ転送され、そこでそれは右シフタ１５０によって１桁分右へシフトされる。オペランドｙはすでに２の補数二進フォーマットであるので、それは１８−ビットの符号拡張された２の補数オペランドとなる。
【００４６】
オペランドｙが単方向シフトレジスタ４２へ転送される間、一時バッファ５２にストアされた新しいオペランドｘは第２のバス５８を介して総和器４４の第２の入力８０に転送される。結果として、新しいオペランドｙと新しいオペランドｘとは加算される。新しいオペランドｘと新しいオペランドｙとが下の表２に示される。
【００４７】
【表２】
0003549549.tif 000003
【００４８】
新しいオペランドｘと新しいオペランドｙとの加算は長さ１８−ビットでかつ符号拡張された２の補数二進和を結果として生じる。算術論理ユニットの第３のサイクルを完了するために、新しいオペランドｘと新しいオペランドｙとの１８−ビット和はアキュムレータ５０に伝達され、そこでそれは、それ以前の第２の算術論理ユニットの動作サイクルの間にその中にストアされた新しいオペランドｘの上に書込まれる。
【００４９】
第４のかつ最後の動作サイクルの間、アキュムレータ５０の内容すなわち新しいオペランドｘと新しいオペランドｙとの１８−ビットの符号拡張された二進和は、第１のバス５６を介して単方向シフトレジスタ４２へ転送される。単方向シフトレジスタ４２で、最後の３ビットが前述の態様でマスクされ、単方向シフトレジスタ４２の出力７６が算術論理ユニットのビット１７中のビット１４が拡張された符号ビットである状態で、下の表３に示されるように要求されるフォーマットで最終和ｚを与えることを引起こす。
【００５０】
【表３】
0003549549.tif 000004
【００５１】
１６−ビットの最終の２の補数和ｚが要求されるフォーマットであることが理解されるであろう。第４の動作サイクルを完了するために、最終和ｚは単方向シフトレジスタ４２から前述のように総和器４４を介し、オーバーフロー訂正４８を介してアキュムレータ５０へ転送され、そこで最終和はもし必要ならばさらなる処理のために利用可能である。結果として、前述の多少複雑な加算はちょうど４つの動作サイクルで、この発明の新しくかつ改良された算術論理ユニットによって完了される。
【００５２】
新しいオペランドｘと新しいオペランドｙとが加算された第３の動作サイクルの間、オーバーフロー検出器４６はオーバーフローを検出するために活性化されることが可能であった。もしオーバーフローが発生したら、オーバーフロー検出器４６はオーバーフロー訂正４８が前述のようにオーバーフロー訂正を与えることを引起こすであろう。
この発明の特定の実施例が示されかつ説明されてきたが一方、修正がなされてもよく、かつしたがってこの発明の真の精神および範囲に入るすべてのかかる変化および修正が前掲の特許請求の範囲でカバーされることが意図される。
【図面の簡単な説明】
【図１】この発明を実施する算術論理ユニットを用いるデジタル信号プロセッサの詳細なブロック図である。
【図２】図１で示される単方向シフトレジスタとそれに関連する制御との詳細なブロック図である。
【符号の説明】
１２  算術論理ユニット
１４  命令メモリ
４２  シフトレジスタ
４４  総和器
４６  オーバーフロー検出器
５８  オーバーフロー訂正
５０  アキュムレータ
【図１】
0003549549.tif 000005
【図２】
0003549549.tif 000006