(57)【要約】【課題】一定時間内の処理量が低減し、ＲＯＭサイズが小さくなり、製造コスト低減を図れる。【解決手段】ビットフィールド操作回路は、中間データＳ２０を出力するシフタ２０と、マスクシフト量制御回路３１から出力されたマスクシフト制御信号Ｓ３１に基づき、左マスクデータＳ３２を出力する左マスクデータ生成回路３２と、オフセット量offsetに基づき、右マスクデータＳ３３を出力する右マスクデータ生成回路３３と、論理積を計算してマスク選択データＳ３４を出力するＡＮＤゲート３４と、出力データＣを出力するセレクタ４０とから構成されている。入力データＡからオフセット量offsetだけ左シフトした位置に、入力データＢのワイド量widthを挿入して、中間データＳ２０を生成する。入力データＡ、中間データＳ２０のいずれか一方を選択し、出力データＣとして出力する。【選択図】図１
2008083795.tif 000002
【特許請求の範囲】
【請求項１】
第１の制御信号に基づき、ｎビット（但し、ｎ；２以上の整数）の第１の入力データを最下位ビットから最上位ビット方向にシフトして、ｎビットの第１の中間データを生成して出力する第１のシフト手段と、
前記第１の制御信号、第２の制御信号及び第３の制御信号が入力され、前記第１、第２及び第３の制御信号に基づきマスクシフト量を決め、前記マスクシフト量に応じたマスクシフト制御信号を出力するマスクシフト量制御回路と、
前記マスクシフト制御信号に基づき、ｎビットの基準データを最上位ビットから最下位ビット方向にシフトして、ｎビットの第２の中間データを生成して出力する第２のシフト手段と、
前記第１の制御信号に基づき、前記基準データを最下位ビットから最上位ビット方向にシフトして、ｎビットの第３の中間データを生成して出力する第３のシフト手段と、
前記第２の中間データと前記第３の中間データとを論理演算し、ｎビットのマスク選択データを生成して出力する論理演算手段と、
前記マスク選択データに基づき、前記第１の中間データ又はｎビットの第２の入力データのいずれか一方を選択して、ｎビットの出力データとして出力する選択手段と、
を備えたことを特徴とするビットフィールド操作回路。
【請求項２】
前記論理演算手段は、前記第２の中間データ及び前記第３の中間データとをビット毎に論理積演算し、前記マスク選択データを出力することを特徴とする請求項１記載のビットフィールド操作回路。
【請求項３】
前記論理演算手段は、前記第２の中間データ及び前記第３の中間データとをビット毎に否定論理和演算し、前記マスク選択データを出力することを特徴とする請求項１記載のビットフィールド操作回路。
【請求項４】
前記マスクシフト量制御回路は、
前記第１の制御信号及び前記第２の制御信号を加算して、第４の制御信号を出力する加算器と、
前記第３の制御信号から前記第４の制御信号を減算して、前記マスクシフト制御信号を出力する減算器と、
を有することを特徴とする請求項１、２又は３記載のビットフィールド操作回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中央処理装置（以下「ＣＰＵ」という。）、ＣＰＵを有するマイクロプロセッサ（以下「ＭＰＵ」という。）、ＣＰＵや乗算回路等を有するデジタルシグナルプロセッサ（以下「ＤＳＰ」という。）等のプロセッサにおいて、長さがｎ（但し、ｎ；２以上の整数）のビット（以下「bit」という。）よりも小さなbit列であるビットフィールドを操作するビットフィールド操作回路に関するものである。
【背景技術】
【０００２】
従来、ビットフィールド操作を行うために使用されるマスクデータを生成するためのマスクデータ生成回路を有するビットフィールド操作回路の例としては、例えば、次のような文献に記載されるものがあった。
【０００３】
【特許文献１】特開平９−１１４６３９号公報
【０００４】
この特許文献１には、例えば、マスクビット生成回路とシフト演算回路とを備えたマスクデータ生成回路が記載されている。マスクビット生成回路は、４bitのマスクビット制御信号と４bitのマスクビットデータに応じて、３２bitのマスクビットを出力する。シフト演算回路は、２bitのシフタ制御信号に応じて、マスクビットを最下位bit（以下「ＬＳＢ」という。）から最上位bit（以下「ＭＳＢ」という。）方向にシフト（以下「左シフト」という。）してマスクデータを生成する。
【０００５】
図２は、特許文献１等に記載された従来のビットフィールド操作回路を有するＤＳＰの概略の構成図である。
【０００６】
このＤＳＰは、複数個からなるプログラムが格納された呼び出し専用のメモリ（以下「ＲＯＭ」という。）１１と、このＲＯＭ１１から読み出された命令を解読して、命令実行用の各種信号を出力する命令デコーダ１２と、この命令デコーダ１２から制御信号が入力され、データＢを格納し、このデータＢからデータＳ１３ｃ，Ｓ１３ｄを生成して出力するビットフィールド操作回路１３とを備えている。
【０００７】
更に、このＤＳＰは、格納されたデータＡを出力するレジスタ１４と、命令デコーダ１２からの制御信号に基づき、データＡ，Ｃが入力され、いずれか一方を選択してデータＳ１５を出力するセレクタ１５と、命令デコーダ１２からの制御信号に基づき、データＳ１５，Ｓ１３ｃが入力され、データＳ１５，Ｓ１３ｃを論理演算してデータＳ１６を出力する算術論理ユニット（以下「ＡＬＵ」という。）１６と、データＳ１３ｄを一時的に保存し、ビットフィールド操作回路１３、レジスタ１４、セレクタ１５へデータＣを出力するアキュムレータ（累算器）１７とを備えている。
【０００８】
ビットフィールド挿入回路１３は、格納されたデータＢを出力するレジスタ１３ａと、命令デコーダ１２からの制御信号に基づき、データＢが入力され、データＢを乗算してデータＳ１３ｂを出力する乗算回路１３ｂと、命令デコーダ１２からの制御信号に基づき、データＢ，Ｓ１３ｂが入力され、いずれか一方を選択してデータＳ１３ｃを出力するセレクタ１３ｃと、命令デコーダ１２からの制御信号に基づき、データＳ１６，Ｓ１３ｃが入力され、いずれか一方を選択してデータＳ１３ｄを出力するセレクタ１３ｄとを有している。
【０００９】
次に、図２に示すＤＳＰの動作を説明する。
レジスタ１３ａは、データＢを出力し、乗算回路１３ｂに入力する。乗算回路１３ｂは、命令デコーダ１２からの制御信号に基づき、データＢを乗算してデータＳ１３ｂをセレクタ１３ｃに出力する。セレクタ１３ｃは、命令デコーダ１２からの制御信号に基づき、入力されたデータＢ，Ｓ１３ｂのいずれか一方をデータＳ１３ｃとして、ＡＬＵ１６とセレクタ１３ｄに出力する。
【００１０】
レジスタ１４は、データＡを出力し、セレクタ１５に入力する。セレクタ１５は、データＡとアキュムレータ１７から出力されるデータＣが入力され、命令デコーダ１２からの制御信号に基づき、データＡ，Ｃのいずれか一方を選択して、データＳ１５としてＡＬＵ１６に出力する。
【００１１】
データＳ１３ｃ，Ｓ１５がＡＬＵ１６に入力されると、命令デコーダ１２からの制御信号に基づき、データＳ１３ｃ，Ｓ１５を論理演算して、データＳ１６をセレクタ１３ｄに出力する。セレクタ１３ｄは、データＳ１３ｃ，Ｓ１６が入力され、命令デコーダ１２からの制御信号に基づき、データＳ１３ｃ，Ｓ１６のいずれか一方を選択して、データＳ１３ｄをアキュムレータ１７に出力する。アキュムレータ１７は、データＳ１３ｄを格納して、データＣとしてレジスタ１３ａ、レジスタ１４及びセレクタ１５へ出力する。
【００１２】
図３は、図２のビットフィールド操作回路におけるビットフィールド操作の概念図である。この図３には、ｎbitで表記されるデータＡ，ＢからデータＣを生成する例が示されている。
【００１３】
データＡは、オフセット量offsetを有し、データＢは、ワイド量widthを有している。データＡのオフセット量offsetだけ左シフトした部分に、データＢのワイド量widthを挿入して、データＣを生成する。
【００１４】
図４は、図３のビットフィールド操作のプログラムを示す図である。
この図４のプログラムを構成する命令文では、図２に示すレジスタ１３ａに格納されたデータＢのワイド量widthをターゲットとするレジスタ１４に格納されたデータＡに挿入するために、シフト命令・演算命令を組み合わせて複数の命令を実行している。
【００１５】
この命令文は、ロード命令ＬＯＲＤで１．．．１０．．．０１．．．１で示されるデータをレジスタ１４であるＸ１に転送して、アンド命令ＡＮＤでデータＡとレジスタ１４であるＸ１に転送されたデータとを論理積演算し、ロード命令ＬＯＲＤで０．．．０１．．．１で示されるデータをレジスタ１３ａであるＸ２に転送して、アンド命令ＡＮＤでデータＢとレジスタ１３ａであるＸ２に転送されたデータとの論理積演算し、シフト命令ＳＦＴで、データＢをoffsetで示されたオフセット量offsetだけ左シフトし、オア命令ＯＲで、データＡとデータＢの論理和演算している。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、従来のビットフィールド操作回路では、シフト命令ＳＦＴやオア命令ＯＲ等を使用してデータＣを生成しているので、命令文が６サイクル必要となる。従って、一定時間内の処理量が増え、ＲＯＭ１１のサイズが大きくなり、製造コスト増につながるという課題があった。
【課題を解決するための手段】
【００１７】
本発明のビットフィールド操作回路は、第１の制御信号に基づき、ｎbitの第１の入力データを左シフトして、ｎbitの第１の中間データを出力する第１のシフト手段と、前記第１の制御信号、第２の制御信号及び第３の制御信号に基づきマスクシフト量を決め、前記マスクシフト量に対応したマスクシフト制御信号を出力するマスクシフト量制御回路と、前記マスクシフト制御信号に基づき、ｎbitの基準データをＭＳＢからＬＳＢ方向にシフト（以下「右シフト」という。）して、ｎbitの第２の中間データを出力する第２のシフト手段とを有している。
【００１８】
更に、本発明のビットフィールド操作回路は、前記第１の制御信号に基づき、前記基準データを左シフトして、ｎbitの第３の中間データを生成して出力する第３のシフト手段と、前記第２の中間データと前記第３の中間データとを論理演算し、ｎbitのマスク選択データを出力する論理演算手段と、前記マスク選択データに基づき、前記第１の中間データ又は第２の入力データのいずれか一方を選択して、ｎbitの出力データとして出力する選択手段とを有している。
【発明の効果】
【００１９】
本発明のビットフィールド操作回路によれば、基準データを右シフトして生成した第２の中間データと、前記基準データを左シフトして生成した第３の中間データとを論理演算することで、マスク選択データを生成する。このマスク選択データにより、第１の中間データ又は第２の入力データのいずれか一方を選択して、ｎbitの出力データとして出力する。このように構成したことで、ビットフィールド操作命令のサイクル数が短縮され、一定時間内の処理量が低減し、ＲＯＭサイズを小さくなり、製造コストを低減できる。
【発明を実施するための最良の形態】
【００２０】
ビットフィールド操作回路は、例えば、プロセッサに設けられている回路であり、第１のシフト手段、マスクシフト量制御回路、第２のシフト手段、第３のシフト手段、論理演算手段及び選択手段を有している。
【００２１】
前記第１のシフト手段は、第１の制御信号に基づき、ｎbitの第１の入力データを左シフトして、ｎbitの第１の中間データを出力する。前記マスクシフト量制御回路は、前記第１の制御信号、第２の制御信号及び第３の制御信号に基づきマスクシフト量を決め、前記マスクシフト量に対応したマスクシフト制御信号を出力する。前記第２のシフト手段は、前記マスクシフト制御信号に基づき、ｎbitの基準データを右シフトして、ｎbitの第２の中間データを出力する。
【００２２】
前記第３のシフト手段は、前記第１の制御信号に基づき、前記基準データを左シフトして、ｎbitの第３の中間データを生成して出力する。前記論理演算手段は、前記第２の中間データと前記第３の中間データとをbit毎に論理積演算し、ｎbitのマスク選択データを出力する。前期選択手段は、前記マスク選択データに基づき、前記第１の中間データ又は第２の入力データのいずれか一方を選択して、ｎbitの出力データとして出力する。
【実施例１】
【００２３】
（実施例１の構成）
図１は、本発明の実施例１を示すビットフィールド操作回路の概略の構成図である。
この実施例１のビットフィールド操作回路は、例えば、ＣＰＵ、ＭＰＵ、ＤＳＰ等のプロセッサに設けられる回路であり、第１のシフト手段（例えば、シフタ）２０とマスクデータ生成回路部３０を有し、これらの出力側に、ｎ個の選択手段（例えば、セレクタ）４０が接続されている。
【００２４】
シフタ２０は、ｎbitの第１の入力データＢを第１の制御信号（例えば、オフセット量）offsetで指定された分だけ左シフトして、ｎbitの第１の中間データＳ２０を出力する。
【００２５】
マスクデータ生成回路部３０は、オフセット量offset、ワイド量width、ビット量ｎが入力され、マスクシフト制御信号Ｓ３１を出力するマスクシフト量制御回路３１と、マスクシフト制御信号Ｓ３１に基づき、基準データｒｅｆを右シフトして、ｎbitの第２の中間データ（例えば、左マスクデータ）Ｓ３２を出力する第２のシフト手段（例えば、左マスクデータ生成回路）３２と、オフセット量offsetに基づき、基準データｒｅｆを左シフトして、ｎbitの第３の中間データ（例えば、右マスクデータ）Ｓ３３を出力する第３のシフト手段（例えば、右マスクデータ生成回路）３３と、左マスクデータＳ３２、右マスクデータＳ３３から論理積を計算し、ｎbitのマスク選択データＳ３４を出力するｎ個の論理演算手段（例えば、ＡＮＤゲート）３４とで構成されている。
【００２６】
セレクタ４０は、マスク選択データＳ３４に基づき、ｎbitの第２の入力データＡ、中間データＳ２０のいずれか一方を選択し、ｎbitの出力データＣを出力する。
【００２７】
図５は、図１のマスクシフト量制御回路３１の例を示す概略の構成図である。
このマスクシフト量制御回路３１は、オフセット量offset、ワイド量widthを加算して、第４の制御信号（例えば、加算量）Ｓ３１ａを生成して出力する加算器３１ａと、ビット量ｎから加算量Ｓ３１ａを減算して、マスクシフト量ｎ−（width＋offset）に対応したマスクシフト制御信号Ｓ３１を生成して出力する減算器３１ｂとで構成されている。
【００２８】
（実施例１の動作）
図６は、図１のシフタ２０の動作を示す概念図である。更に、図７は、図１の左マスクデータ生成回路３２の動作を示す概念図であり、図８は、図１の右マスクデータ生成回路３３の動作を示す概念図であり、図９は、図１のＡＮＤゲート３４の動作を示す概念図である。
【００２９】
本実施例１のビットフィールド操作回路では、例えば、次のように表示される命令文によってビットフィールド操作を行う。
ＩＮＳ  Ｃ，Ａ，Ｂ，width，offset
【００３０】
この命令文では、入力データＡからオフセット量offsetだけ左シフトした位置に、入力データＢのワイド量widthで示されるbit分を挿入したｎbitの出力データＣを生成する。
【００３１】
次に、この命令文を実行する場合での、ビットフィールド操作回路の詳細な動作を、図６〜９を参照しつつ、以下の動作手順（１）〜（６）に従い説明する。
【００３２】
（１）  入力データＢがシフタ２０に入力され、オフセット量offsetに基づき、左シフトする。従って、オフセット量offsetだけ左シフトした中間データＳ２０が生成される。
【００３３】
（２）  マスクシフト量制御回路３１に入力された、オフセット量offset、ワイド量width、ビット量ｎにより、マスクシフト量ｎ−（width＋offset）に対応したマスクシフト制御信号Ｓ３１が生成される。
【００３４】
（３）  全てのbitが“１”の基準データｒｅｆを、マスクシフト量ｎ−（width＋offset）だけ右シフトして、ｎbitの左マスクデータＳ３２を生成する。つまり、左マスクデータＳ３２は、右シフトにより空いたbitを“０”埋めすることで、ＭＳＢから（ｎ−width−offset）幅“０”で、残りの（width＋offset）幅“１”となる。
【００３５】
（４）  全てのbitが“１”の基準データｒｅｆを、オフセット量offsetだけ左シフトして、ｎbitの右マスクデータＳ３３を生成する。つまり、右マスクデータＳ３３は、左シフトにより空いたbitを“０”埋めすることで、ＭＳＢから（ｎ−offset）幅“１”で、残りのオフセット量offsetの幅“０”となる。
【００３６】
（５）  動作手順（３）、（４）で生成した左マスクデータＳ３２、右マスクデータＳ
３３でbit毎に論理積演算をして、ｎbitのマスク選択データＳ３４を生成する。
【００３７】
（６）  動作手順（５）で生成されたマスク選択データＳ３４が、bit毎にｎ個のセレ
クタ４０に入力されることにより、各bitにおいて、マスク選択データＳ３４が“１”なら動作手順（１）で生成された中間データＳ２０を選択し、“０”なら入力データＡを選択して、出力データＣとして出力する。
【００３８】
（実施例１の効果）
本実施例１によれば、マスクデータ生成回路部３０を設けたことで、入力データＡ，Ｂ、基準データｒｅｆ、オフセット量offset、ワイド量width、ビット量ｎから、１サイクルで出力データＣを生成することができる。従って、ビットフィールド操作命令のサイクル数が１／６に短縮され、一定時間内の処理量が低減し、ＲＯＭサイズを小さくなり、製造コスト低減が可能になるという効果がある。
【実施例２】
【００３９】
（実施例２の構成）
図１０は、本発明の実施例２を示すビットフィールド操作回路の概略の構成図であり、実施例１を示す図１中の要素と共通の要素には、共通の符号が付されている。
【００４０】
この実施例２のビットフィールド操作回路は、実施例１と同様のシフタ２０と、実施例１とは構成の異なるマスクデータ生成回路部３０−１と、実施例１と同様のセレクタ４０とで構成されている。
【００４１】
マスクデータ生成回路部３０−１は、実施例１のマスクデータ生成回路部３０と異なり、基準データｒｅｆの全てのbitが“０”であり、ＡＮＤゲート３４に代えて、ＮＯＲゲート３５が設けられている。
【００４２】
（実施例２の動作）
図１１は、図１０の左マスクデータ生成回路３２−１の動作を示す概念図であり、図１２は、図１０の右マスクデータ生成回路３３−１の動作を示す概念図であり、図１３は、図１０のＮＯＲゲート３５の動作を示す概念図である。
【００４３】
本実施例２のビットフィールド操作回路では、実施例１の命令文と同様に、例えば、次のように表示される命令文によってビットフィールド操作を行う。
ＩＮＳ  Ｃ，Ａ，Ｂ，width，offset
【００４４】
この命令文では、入力データＡからオフセット量offsetだけ左シフトした位置に、入力データＢのワイド量widthで示されるbit分を挿入したｎbitの出力データＣを生成する。
【００４５】
次に、この命令文を実行する場合での、ビットフィールド操作回路の詳細な動作を、図６及び図１１〜１３を参照しつつ、以下の動作手順（１）〜（６）に従い説明する。
【００４６】
（１）  入力データＢがシフタ２０に入力され、オフセット量offsetに基づき、左シフトする。従って、オフセット量offsetだけ左シフトした中間データＳ２０が生成される。
【００４７】
（２）  マスクシフト量制御回路３１に入力された、オフセット量offset、ワイド量width、ビット量ｎにより、マスクシフト量ｎ−（width＋offset）に対応したマスクシフト制御信号Ｓ３１が生成される。
【００４８】
（３）  全てのbitが“０”の基準データｒｅｆを、マスクシフト量ｎ−（width＋offset）だけ右シフトして、ｎbitの左マスクデータＳ３２−１を生成する。つまり、左マスクデータＳ３２−１は、右シフトにより空いたbitを“１”埋めすることで、ＭＳＢから（ｎ−width−offset）幅“１”で、残りの（width＋offset）幅“０”となる。
【００４９】
（４）  全てのbitが“０”の基準データｒｅｆを、オフセット量offsetだけ左シフトして、ｎbitの右マスクデータＳ３３−１を生成する。つまり、右マスクデータＳ３３−１は、左シフトにより空いたbitを“１”埋めすることで、ＭＳＢから（ｎ−offset）幅“０”で、残りのオフセット量offsetの幅“１”となる。
【００５０】
（５）  動作手順（３）、（４）で生成した左マスクデータＳ３２−１、右マスクデー
タＳ３３−１でbit毎に論理積演算をして、ｎbitのマスク選択データＳ３５を生成する。
【００５１】
（６）  動作手順（５）で生成されたマスク選択データＳ３５が、bit毎にｎ個のセレ
クタ４０に入力されることにより、各bitにおいて、マスク選択データＳ３４が“１”なら動作手順（１）で生成された中間データＳ２０を選択し、“０”なら入力データＡを選択して、出力データＣとして出力する。
【００５２】
（実施例２の効果）
本実施例２によれば、マスクデータ回路を設け、実施例１のＡＮＤゲート３４に代えて、ＮＯＲゲート３５を設けたので、実施例１とほぼ同様に、ビットフィールド操作命令のサイクル数が１／６に短縮され、一定時間内の処理量が低減し、ＲＯＭサイズを小さくなり、製造コスト低減が可能になるという効果がある。
【００５３】
（変形例）
本発明は、上記実施例１及び２に限定されず、種々の利用形態や変形が可能である。この利用形態や変形例としては、例えば、次の（ａ）〜（ｃ）のようなものがある。
【００５４】
（ａ）  図１及び図１０のシフタ２０は、シフト演算回路等で構成されているが、シフトレジスタ等の他のシフト手段で構成しても良い。
【００５５】
（ｂ）  図１のＡＮＤゲート３４や、図１０のＮＯＲゲート３５は、ＥＸＯＲゲート等の他の論理演算手段で構成しても良い。実施例１，２と同様の効果が期待できる。
【００５６】
（ｃ）  図１及び図１０のセレクタ４０は、マルチプレクサ等で構成されているが、他の選択手段で構成しても良い。
【００５７】
（ｄ）  図５のマスクシフト量制御回路３１は、加算器３１ａ、減算器３１ｂで構成されているが、他のＡＬＵで構成しても良い。
【００５８】
（ｅ）  実施例１，２では、ＤＳＰについて説明したが、ＣＰＵ、ＭＰＵ等のプロセッサにも適用できる。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施例１を示すビットフィールド操作回路の概略の構成図である。
【図２】従来のビットフィールド操作回路を有するＤＳＰの概略の構成図である。
【図３】図２のビットフィールド操作回路におけるビットフィールド操作の概念図である。
【図４】図３のビットフィールド操作のプログラムを示す図である。
【図５】図１のマスクシフト量制御回路３１の例を示す概略の構成図である。
【図６】図１のシフタ２０の動作を示す概念図である。
【図７】図１の左マスクデータ生成回路３２の動作を示す概念図である。
【図８】図１の右マスクデータ生成回路３３の動作を示す概念図である。
【図９】図１のＡＮＤゲート３４の動作を示す概念図である。
【図１０】本発明の実施例２を示すビットフィールド操作回路の概略の構成図である。
【図１１】図１０の左マスクデータ生成回路３２−１の動作を示す概念図である。
【図１２】図１０の右マスクデータ生成回路３３−１の動作を示す概念図である。
【図１３】図１０のＮＯＲゲート３５の動作を示す概念図である。
【符号の説明】
【００６０】
２０，３２ａ，３３ａ      シフタ
３１      マスクシフト量制御回路
３１ａ      加算器
３１ｂ      減算器
３２      左マスクデータ生成回路
３３      右マスクデータ生成回路
３４      ＡＮＤゲート
３５      ＮＯＲゲート
１３ｃ，１３ｄ，１５，４０      セレクタ
【図１】
2008083795.tif 000003
【図２】
2008083795.tif 000004
【図３】
2008083795.tif 000005
【図４】
2008083795.tif 000006
【図５】
2008083795.tif 000007
【図６】
2008083795.tif 000008
【図７】
2008083795.tif 000009
【図８】
2008083795.tif 000010
【図９】
2008083795.tif 000011
【図１０】
2008083795.tif 000012
【図１１】
2008083795.tif 000013
【図１２】
2008083795.tif 000014
【図１３】
2008083795.tif 000015