(57)【要約】【課題】情報処理に必要なビット操作が多様化し、必要な処理も複雑化している。【解決手段】情報処理装置１０は入力レジスタ１２に格納されたデータをビットごとに操作し、その結果を出力レジスタ１４に格納する。セレクタ回路１８は、入力レジスタ１２からの１２８ビットの入力データから１ビットの出力データを選択する。アンド回路２０は、対応するセレクタ回路１８からのデータが有効な場合にのみ、当該データを出力レジスタ１４の対応するビットに出力する。制御信号生成器１６は各セレクタ回路１８に、選択すべきビットの番号を示すセレクト信号を入力するとともに、各アンド回路２０に、セレクタ回路１８から入力されたデータが有効か無効かを示す信号を入力する。【選択図】図１
2012033032.tif 000002
【特許請求の範囲】
【請求項１】
入力レジスタに格納されたデータをビット単位で操作し出力レジスタに格納する情報処理装置であって、
前記出力レジスタの各ビットに対応して設けられた入力回路と出力回路の対と、前記入力回路および出力回路のそれぞれへ入力する信号を、ビットの操作内容に応じて生成する制御信号生成器と、を備え、
前記入力回路は、前記入力レジスタの複数のビットに格納された複数の値を入力値とし、前記制御信号生成器からのビット選択信号に従い、前記入力値のうちの一つを選択して対応する前記出力回路に出力し、
前記出力回路は、前記出力レジスタの対応するビットの有効、無効を示す信号を前記制御信号生成器から取得し、有効な場合に、対応する前記入力回路からの出力値を前記出力レジスタの対応するビットに出力することを特徴とする情報処理装置。
【請求項２】
前記入力レジスタは固定長を有する単位領域ごとに可変長符号を格納し、
前記入力回路は、前記入力レジスタのうち可変長符号が格納されていないビットを除外して可変長符号が連続するように、前記出力レジスタの対応するビットへ格納すべき値を選択し、
前記出力レジスタのうち連結された可変長符号が格納されるべきビット以外のビットに対応する前記出力回路は、当該ビットを無効として、あらかじめ定めた固定値を格納することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御信号生成器は前記出力回路に対し、前記出力レジスタの対応するビットが有効の場合「１」を、無効の場合「０」を、前記有効、無効を示す信号として入力し、前記出力回路は当該信号と前記入力回路からの出力値との論理積を前記出力レジスタの対応するビットに出力することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記入力回路は、前記入力レジスタの固定長を有する単位領域ごとにビットの順列が反転されるように、前記出力レジスタの対応するビットへ格納すべき値を選択することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記入力回路は、前記入力レジスタの所定の間隔をおいた複数のビットが連続するように、前記出力レジスタの対応するビットへ格納すべき値を選択することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
入力レジスタに格納されたデータをビット単位で操作し出力レジスタに格納する情報処理方法であって、
前記入力レジスタの各ビットのうち操作内容に応じて選択した一のビットに格納された値を取得するステップと、
取得した値が有効であるか否かを、前記出力レジスタに格納すべきデータのビット数に基づき判定し、有効である場合に当該値を前記出力レジスタに格納するステップと、
を前記出力レジスタのビットごとに並列して行うことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理技術に関し、具体的にはデータをビット単位で操作する情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
近年、オーディオデータ、ビデオデータの圧縮技術において、様々な可変長符号化手法が実用化されている。一般的に、可変長符号化処理によって得られた個々の可変長符号は、一旦、メモリやレジスタ内の固定ビット長の記憶領域に順次格納される。そして可変長符号ごとに、各記憶領域から符号部分のみが取り出せるようにビットシフトなどのビット操作を実施することによって、全可変長符号を隙間なく連結して最終的な圧縮データを生成する（例えば特許文献１参照）。
【０００３】
可変長符号の連結処理のみならず、ビット操作は多くの情報処理において必要とされる。一般的なマイクロプロセッサでは、主にハードウェアコスト低減のため、シフト／ローテート処理などのビット操作にバレルシフタを用いている。一方で、昨今のＳＩＭＤ（Single Instruction Multiple Data）を適用したマイクロプロセッサなどにおいては、シフト／ローテート命令が多様化しており、さらにパーミュートやビットセレクトといった命令も付け加えられ、その処理は複雑化の一途をたどっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１３８６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
バレルシフタなどを用いて可変長符号を連結する場合、ビット操作は可変長符号単位の処理が基本であるため、可変長符号の数だけ論理演算やシフト演算を行う必要がある。結果として元のデータのサイズが大きくなるほど連結処理に要する時間が増大し、最終的な圧縮データ生成時間に看過できない影響を及ぼす。さらに、上記のようなマイクロプロセッサで実現可能な命令をもってしても、高速フーリエ変換（ＦＦＴ）アルゴリズムにおけるアドレス計算や、ＤＥＳ（Data Encryption Standard）アルゴリズムで必要なビット単位の操作などには脆弱であり、専用回路と比較して性能が劣る要因になっていた。
【０００６】
本発明はこのような課題に鑑みてなされたものであり、その目的は、様々なビット操作を汎用的かつ効率よく行うことのできる情報処理技術を提供することにある。
【課題を解決するための手段】
【０００７】
本発明のある態様は情報処理装置に関する。この情報処理装置は、入力レジスタに格納されたデータをビット単位で操作し出力レジスタに格納する情報処理装置であって、出力レジスタの各ビットに対応して設けられた入力回路と出力回路の対と、入力回路および出力回路のそれぞれへ入力する信号を、ビットの操作内容に応じて生成する制御信号生成器と、を備え、入力回路は、入力レジスタの複数のビットに格納された複数の値を入力値とし、制御信号生成器からのビット選択信号に従い、入力値のうちの一つを選択して対応する出力回路に出力し、出力回路は、制御信号生成器からの、データの有効、無効を示す信号に従い、有効な場合に、対応する入力回路からの出力値を出力レジスタの対応するビットに出力することを特徴とする。
【０００８】
本発明の別の態様は情報処理方法に関する。この情報処理方法は、入力レジスタに格納されたデータをビット単位で操作し出力レジスタに格納する情報処理方法であって、入力レジスタの各ビットのうち操作内容に応じて選択した一のビットに格納された値を取得するステップと、取得した値が有効であるか否かを、出力レジスタに格納すべきデータのビット数に基づき判定し、有効である場合に当該値を出力レジスタに格納するステップと、を出力レジスタのビットごとに並列して行うことを特徴とする。
【０００９】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、コンピュータプログラムを記録した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１０】
本発明によると、様々なビット操作を効率よく行うことができる。
【図面の簡単な説明】
【００１１】
【図１】本実施の形態におけるデータ生成装置の構成を示す図である。
【図２】本実施の形態において８ビットの単位領域ごとに可変長符号が格納されるときの、連結前後のビット列の例を示す図である。
【図３】本実施の形態において１６ビットの単位領域ごとに可変長符号が格納されるときの、連結前後のビット列の例を示す図である。
【図４】本実施の形態において、可変長符号の連結に用いるデータ生成装置における、制御信号生成器の構成を詳細に示す図である。
【図５】本実施の形態において、セレクト信号生成部がセレクト信号を生成する処理手順を示すフローチャートである。
【図６】本実施の形態において、無効ビット指示部が対応するアンド回路へ入力する信号を生成する処理手順を示すフローチャートである。
【図７】本実施の形態において実現できる、ビットリバース前後のビット列の関係を模式的に示す図である。
【図８】本実施の形態においてビットリバースを行う際、情報処理装置の各セレクタ回路へ入力するセレクト信号を生成する原理を説明するための図である。
【図９】本実施の形態においてビットリバース処理を行う際のセレクト信号を生成するセレクト信号生成部の構成を詳細に示す図である。
【図１０】本実施の形態において実現できる、ギャザー前後のビット列の関係を模式的に示す図である。
【図１１】本実施の形態においてギャザーを行う際、情報処理装置の各セレクタ回路へ入力するセレクト信号を生成する原理を説明するための図である。
【図１２】本実施の形態においてギャザー処理を行う際のセレクト信号を生成するセレクト信号生成部の構成を詳細に示す図である。
【発明を実施するための形態】
【００１２】
図１は本実施の形態におけるデータ生成装置の構成を示している。情報処理装置１０は入力レジスタ１２に格納されたデータをビット操作し、その結果を出力レジスタ１４に格納する。入力レジスタ１２および出力レジスタ１４はいずれも１２８ビットのサイズを有し、図中、各レジスタを表す矩形内の１区画が１ビットを表している。なおレジスタのサイズはこれに限らず、処理対象のデータの種類、要求されるスペック、ハードウェア構成上の制限などに鑑み適宜決定してよい。
【００１３】
情報処理装置１０はさらに、出力レジスタ１４の各ビットに対応させて１２８対設けられたセレクタ回路１８とアンド回路２０、およびセレクタ回路１８とアンド回路２０を制御する制御信号生成器１６を含む。同図では１２８個のセレクタ回路を総括してセレクタ回路１８、１２８個のアンド回路を総括してアンド回路２０として符号を付しているが、以後、図の左側から第０、第１、第２、・・・第１２７セレクタと第０、第１、第２、・・・、第１２７アンド回路が出力レジスタの第０、第１、第２、・・・第１２７ビットにそれぞれ対応するとして序数で説明する場合もある。
【００１４】
各セレクタ回路１８は、入力レジスタ１２の１２８ビットにそれぞれ接続する接続線を有し、各ビットに格納されたデータを入力値とする。そして制御信号生成器１６からのセレクト信号によってそのうち一つを選択し、対応するアンド回路２０へ出力する。アンド回路２０は、対応するセレクタ回路１８からのデータと、制御信号生成器１６が出力する値とを入力値とし、その論理積を出力レジスタ１４の対応するビットに出力する。
【００１５】
制御信号生成器１６には、ビット操作に係る命令を表すオペコードと、入力レジスタ１２に格納されたデータに係り、ビット操作に必要な補助データと、を入力する。補助データはビット操作の内容によっては入力されなくてもよい。また後述するように、別のレジスタ（図示せず）に格納されたデータでもよい。そして１２８個のセレクタ回路１８およびアンド回路２０のそれぞれに対する信号を生成して出力する。各セレクタ回路１８に出力する信号は、当該セレクタ回路が、１２８ビットのデータのうち何番目のビットのデータを選択すべきかを指示するセレクト信号である。したがって同図に示すとおり、０〜１２７のいずれかを示す７ビットの情報となる。
【００１６】
制御信号生成器１６が各アンド回路２０に出力する信号は、当該アンド回路が対応するセレクタ回路１８から受け取ったデータを出力レジスタ１４に格納すべきか否かを指示する信号である。具体的には、格納すべきであれば「１」を、そうでなければ「０」をアンド回路に入力する。「０」が入力されたアンド回路２０の出力値は常に「０」となる。このようにすることで、セレクタ回路１８からのデータの有効／無効を明らかにし、出力レジスタ１４へ最終的に格納されるデータに反映させる。以上述べた構成によって、ビット操作が必要な様々な処理に汎用的に適用可能なデータ生成装置を実現できる。以下、その具体例について述べる。
【００１７】
（１）可変長符号の連結
一般的に画像や音声のディジタルデータは圧縮処理によって可変長符号化される。生成された可変長符号は、メモリやレジスタのうち、８ビット、１６ビット、３２ビットなど、２のべき乗の固定ビット長を有する単位領域に順次格納される。一方で、最終的な圧縮データの出力時には、各単位領域を構成するビット列のうち、可変長符号を格納していないビットを除外して、全ての可変長符号を隙間なく連結する必要がある。この処理において情報処理装置１０を用い、入力レジスタ１２に格納した連結前の可変長符号を連結して出力レジスタ１４に格納する。
【００１８】
図２は８ビットの単位領域ごとに可変長符号が格納されるときの、連結前後のビット列の例を示している。１２８ビットのレジスタにおいて、連結前は、太線矩形で示した、第０から第１５までの単位領域１６個（以後、当該単位領域の番号を「ｊ」（８ビットの単位領域に対し０≦ｊ≦１５）で表す場合がある）のそれぞれに、最大８ビットの可変長符号が格納される。図中、網掛けが施されたビット以外のビットに有効な符号が格納されているものとする。例えば第０〜第７ビットで構成される第０単位領域（ｊ＝０）では、第３〜第７ビットの５ビット分に、「１１０００」なる符号が格納されている。第８〜第１５ビットで構成される第１単位領域（ｊ＝１）では、第１４〜第１５ビットの２ビット分に、「０１」なる符号が格納されている。
【００１９】
同図では連結前のビット列の上に、各単位領域に格納された符号のサイズを示している。例えば第０単位領域は「５」ビット、第１単位領域は「２」ビットの可変長符号を格納していることがわかる。当該データは、可変長符号化処理の途中で一般的に取得される。この連結前のデータのうち、網掛けで示された無効なビットを除外し、有効なデータをつめて格納することにより連結後のデータを生成する。その結果、「１１００００１・・・」なるデータが出力データとして生成される。
【００２０】
図３は同様の例で、１６ビットの単位領域ごとに可変長符号が格納されるときの、連結前後のビット列の例を示している。この場合、連結前は、太線で示した第０から第７までの単位領域８個のそれぞれに、最大１６ビットの可変長符号が格納される。例えば第０〜第１５ビットで構成される第０単位領域（ｊ＝０）では、第９〜第１５ビットの７ビット分に、「１１００００１」なる符号が格納されている。第１６〜第３１ビットで構成される第１単位領域（ｊ＝１）では、第１９〜第３１ビットの１３ビット分に、「０１１１００１０１００１１」なる符号が格納されている。これを上記と同様に連結すると、「１１００００１０１１１００１０１００１１・・・」なるデータが出力データとして生成される。
【００２１】
このような処理を行う場合、従来では単位領域ごとに、（１）有効な符号が格納されたビットが第０ビットから始まるようにビットシフト、（２）出力レジスタのうち、それまでに符号が格納されているビットの次のビットから、シフトしたビット列の符号を格納、という処理を、単位領域の数だけ繰り返すのが一般的であり、符号化処理と比較しても看過できない時間を要していた。
【００２２】
本発明では図１で示した情報処理装置１０を用いて、入力レジスタ１２のビット分の連結前のデータを、１ステップで連結して出力レジスタ１４に格納する。なお図２および図３では、１２８ビットの入力レジスタにおいて８ビットまたは１６ビットの単位領域に可変長符号が格納されている例を示したが、それらのビット数をどのように変化させても同様の処理を適用できる。
【００２３】
図４は可変長符号の連結に用いる情報処理装置１０における、制御信号生成器１６の構成を詳細に示している。図４において、様々な処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、マイクロプロセッサ、レジスタ、比較回路、加算回路、その他の回路で構成することができ、ソフトウェア的には、オペコードとして入力されるプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００２４】
制御信号生成器１６は、第０信号生成器２２ａ、第１信号生成器２２ｂ、・・・、第１２７信号生成器２２ｎの１２８個の信号生成器からなる。それらの構成は同様であるため、以下は第ｉ信号生成器２２ｉ（０≦ｉ≦１２７）について詳細を説明する。第ｉ信号生成器２２ｉは、セレクト信号生成部２４と無効ビット指示部２６を含む。セレクト信号生成部２４は、入力レジスタ１２の第０から第１２７までのビットのうち選択すべき１つのビットの番号を表すセレクト信号を生成する。第ｉ信号生成器２２ｉのセレクト信号生成部２４で生成したセレクト信号は、図１の１２８個のセレクタ回路１８のうち第ｉセレクタ回路に入力される。
【００２５】
無効ビット指示部２６は、セレクタ回路１８からの出力データを出力レジスタ１４に出力するべきか否かを決定し、出力すべき場合は「１」、出力すべきでない場合は「０」を、図１の１２８個のアンド回路のうち第ｉアンド回路に出力する。図２および３で示したとおり、全ての可変長符号が単位領域と同じサイズでない限り、可変長符号を連結していった結果、出力レジスタ１４には符号が格納されない余剰ビットが発生する。この余剰ビットに、セレクタ回路１８からのいかなる出力データも出力しないようにすることで、不定のデータが格納されないようにする。
【００２６】
第ｉ信号生成器２２ｉには、次に述べる処理を行わせるオペコードと、「ｉ」の値があらかじめ入力される。オペコードは単位領域のサイズごとに準備しておき、実際の単位領域のサイズに従い選択したものを入力する。また「ｉ」の値は、セレクタ回路１８またはアンド回路２０を介して接続した出力レジスタ１４の第０から第１２７のビット番号に対応するため、以後、「出力ビット番号」と呼ぶ。さらに上述したように、入力レジスタ１２に格納された可変長符号に係る補助データとして、符号サイズ情報が入力される。符号サイズ情報は、各単位領域に格納された可変長符号のビット数を表し、図２および図３において「符号サイズ」として例示した情報である。
【００２７】
図２および図３に示したように、連結前の可変長符号を入力レジスタ１２に格納する際、別のレジスタ（図示せず）に、各単位領域に対応するように符号サイズ情報を格納しておき、第ｉ信号生成器２２ｉが適宜読み出すようにしてもよい。なお入力レジスタ１２に符号を格納する前段でなされる可変長符号化処理の内容は特に限定されず、符号サイズ情報の取得手法もそれに応じて様々考えられることは当業者には理解されるところである。
【００２８】
次に、以上の構成によって実現される動作について説明する。図５は、セレクト信号生成部２４がセレクト信号を生成する処理手順を示すフローチャートである。同図において変数ｊ（ｊ＝０，１，２，・・・）は上述のとおり、入力レジスタ１２における単位領域番号を表す。図２の例では８ビットごとの単位領域のうち第０〜第７ビットがｊ＝０、第８〜第１５ビットがｊ＝１、第１６〜２３ビットがｊ＝２、・・・となる。第ｉ信号生成器２２ｉのセレクト信号生成部２４はまず、対応する第ｉ番目のセレクタ回路１８が選択すべき入力レジスタ１２中のビットがどの単位領域に属するかを決定する。
【００２９】
そのため、ｊ＝０の単位領域から各単位領域に格納されている可変長符号のサイズｓｉｚｅ（ｊ）を符号サイズ情報に基づき加算していき、その和が出力ビット番号ｉを超えたときのｊを求める。具体的にはｊ＝０から開始し、ｓｉｚｅ（０）＋ｓｉｚｅ（１）＋・・・＋ｓｉｚｅ（ｊ）＞ｉでなければｊをインクリメントして同じ判定を繰り返す（Ｓ１０、Ｓ１２のＮ、Ｓ１４）。ｓｉｚｅ（０）＋ｓｉｚｅ（１）＋・・・＋ｓｉｚｅ（ｊ）＞ｉとなったら、当該ｊの値が、選択すべきビットが属する単位領域番号である（Ｓ１２のＹ）。
【００３０】
次に、求められた番号ｊの単位領域において、選択すべきビットが何番目のビットであるかを表す変数ｍを計算する。具体的には以下の式１を計算する（Ｓ１６）。
【００３１】
【数１】
2012033032.tif 000003
【００３２】
ここでＮは単位領域のビット数である。したがって、このビットが入力レジスタ１２の第０〜第１２７ビットのうち何番目のビットであるかを表す変数ｎを、求められた変数ｍを用いて以下の式２のように算出すれば、その値がすなわち、第ｉ番目のセレクタ回路１８に入力するセレクト信号の値となる（Ｓ１８）。
ｎ＝Ｎ・ｊ＋ｍ  （式２）
【００３３】
例えば図２（Ｎ＝８）の場合、連結後のビット列のうち第０ビット（ｉ＝０）へデータを出力する第０セレクタ回路が選択すべき連結前のビットは、単位領域番号ｊ＝０の単位領域の（ｓｉｚｅ（０）＝５＞０であるため）、第３ビット（ｍ＝８−５＋０＝３であるため）であり、全ビット中の第３ビット（ｎ＝８・０＋３＝３）である。連結後のビット列のうち第６ビット（ｉ＝６）へデータを出力する第６セレクタ回路が選択すべき連結前のビットは、単位領域番号ｊ＝１の単位領域の（ｓｉｚｅ（０）＋ｓｉｚｅ（１）＝５＋２＞６であるため）、第７ビット（ｍ＝８−２＋（６−５）＝７であるため）であり、全ビット中の第１５ビット（ｎ＝８・１＋７＝１５）である。
【００３４】
図６は無効ビット指示部２６が、対応するアンド回路２０へ入力する信号を生成する処理手順を示すフローチャートである。無効ビット指示部２６は、入力レジスタ１２を構成する全単位領域の可変長符号のサイズｓｉｚｅ（ｊ）（ｊ＝０，１，２，・・・）の総和を出力ビット番号ｉと比較する（Ｓ２０）。ここで単位領域の数は１２８／Ｎである。出力ビット番号ｉがサイズの総和以下であれば、第ｉ番目のセレクタ回路１８からの出力データは有効であるとして、入力信号ｓを「１」とする（Ｓ２０のＹ、Ｓ２２）。出力ビット番号ｉがサイズの総和がより大きければ、第ｉ番目のセレクタ回路１８からの出力データは無効であるとして、入力信号ｓを「０」とする（Ｓ２０のＮ、Ｓ２４）。
【００３５】
以上の処理を第０信号生成器２２ａから第１２７信号生成器２２ｎまでが同様に行うことにより、１２８個のセレクト信号が第０〜１２７のセレクタ回路１８へ、１２８個の有効／無効を表す信号が第０〜１２７のアンド回路２０へ、それぞれ入力される。これにより入力レジスタ１２に格納された連結前の可変長符号は、セレクタ回路１８によりそれぞれ選択され、対応する出力レジスタ１４の各ビットに格納されるとともに、可変長符号が格納されない余剰ビットには「０」が格納される。これにより、入力レジスタ１２に格納された分の可変長符号の連結を一斉に行え、上述した従来の手法と比較して処理に要する時間を大幅に短縮できる。また、連結の結果発生した余剰ビットに不定の変数が代入されるのを防止できるため、さらにデータを連結する場合など後段の処理が容易になる。
【００３６】
（２）ビットリバース
図７はＦＦＴアルゴリズムなどで実施されるビットリバース前後のビット列の関係を模式的に示している。ビットリバースは、８ビット、１６ビット、３２ビットなど、２のべき乗のビットで構成される単位領域ごとに、第０ビットのデータを最後のビットに、第１ビットのデータを最後から２番目のビットに、・・・というように格納していき、データのビット順を反転させる処理である。同図では太線矩形で単位領域を示しており、そのサイズは８ビットである。またビットリバース前後で同じデータを格納しているビットの対応関係を、各ビットを結ぶ直線で表している。
【００３７】
以下、図１で示した情報処理装置１０を用いて、入力レジスタ１２のサイズ分のデータを、１ステップでビットリバースさせ、出力レジスタ１４に格納する手法について説明する。この場合も、制御信号生成器１６は図４で示したのと同様の構成でよい。
【００３８】
図８は、ビットリバースを行う際、情報処理装置１０の各セレクタ回路１８へ入力するセレクト信号を生成する原理を説明するための図である。まず、セレクタ回路１８の番号を表す変数ｉは、０≦ｉ≦１２７であるため７ビットのデータである。ここで変数ｉは、ビットリバース後の、出力レジスタ１４におけるビット番号と対応している。上述のとおり単位領域は２のべき乗のビット数を有するため、変数ｉの上位ビットは単位領域番号ｊに対応し、下位ビットは単位領域内でのビット番号に対応する。
【００３９】
例えば単位領域が８ビットのときは、上位４ビットが単位領域番号ｊ、下位３ビットが単位領域内でのビット番号ｋを表す。図８の例（上段）では、変数ｉ＝７５（０ｂ１００１０１１）に対応するビットが、ｊ＝９（０ｂ１００１）の単位領域内のｋ＝３（０ｂ０１１）番目のビットであることを示している。ビットリバース前後では、各ビットの単位領域番号は変化せず、単位領域内のビット番号が逆になる。すなわち、ビットリバース後のビット番号を表す７ビットのデータにおいて、単位領域番号を表す上位ビットはそのままとし、残りの下位ビットの０／１の値を反転して得られた値ｎがビットリバース前のビット番号を表すことになる。
【００４０】
図８の例（下段）では、ｊ＝９（０ｂ１００１）、ｋ＝４（０ｂ１００）で表されるｎ＝７６（０ｂ１００１１００）が得られる。すなわちビットリバースにおいて、出力レジスタ１４における第７５ビットに格納するのは、入力レジスタ１２における第７６ビットのデータとなる。その他のビットも同様である。したがって当該値ｎが、ｉ番目のセレクタ回路１８に対して入力すべきセレクト信号の値となる。なお単位領域が１６ビット、３２ビットのときはそれぞれ、上位３ビット、２ビットが単位領域番号ｊを表すため、０／１の値を反転させる下位ビットの数もそれに応じて変化させる。
【００４１】
図９は図４における第ｉ信号生成器２２ｉのセレクト信号生成部２４に対応し、ビットリバース処理を行う際のセレクト信号を生成するセレクト信号生成部２４ａの構成を詳細に示している。セレクト信号生成部２４ａは、２つのアンド回路３０および３２、減算回路３４、加算回路３６を含む。同図においてアンド回路３０、３２、および減算回路３４への入力値として示された、スラッシュで区切られた３つの１６進数はそれぞれ、単位領域が８ビット／１６ビット／３２ビットのときの値である。上述したように、これらの値は入力するオペコードによって切り替えることができる。このような構成によって、上述のセレクト信号の値ｎは、それぞれ以下のように導出できる。
【００４２】
単位領域８ビット：ｎ＝（ｉ＆０ｘ７８）＋（０ｘ０７−（ｉ＆０ｘ０３））
単位領域１６ビット：ｎ＝（ｉ＆０ｘ７０）＋（０ｘ０ｆ−（ｉ＆０ｘ０７））
単位領域３２ビット：ｎ＝（ｉ＆０ｘ６０）＋（０ｘ１ｆ−（ｉ＆０ｘ０ｆ））（式３）
ここで「＆」は論理積、「＋」は算術加算、「−」は算術減算を表す。
【００４３】
式３において、右辺第１項は上位ビットの値を維持し、第２項は下位ビットの値を反転させる操作である。またビットリバースにおいては、出力レジスタ１４に余剰ビットは発生しないため、図４の無効ビット指示部２６は常に「１」を出力する。以上の処理を第０信号生成器２２ａから第１２７信号生成器２２ｎまでが同様に行うことにより、１２８個のセレクト信号が第０〜１２７のセレクタ回路１８へ、１２８個の「有効」を表す信号が第０〜１２７のアンド回路２０へ、それぞれ入力される。この構成により、図１の情報処理装置１０を用いてビットリバースを容易かつ短時間で実現することができる。
【００４４】
（３）ギャザー
ギャザーはレジスタ内の離れたビットに格納されたデータを集め、連続したデータを生成する処理である。図１０はギャザー前後のビット列の関係を模式的に示している。同図では、入力データの８ビット、１６個の単位領域から、第０ビットのデータ、第１ビットのデータ、・・・、第７ビットのデータをそれぞれ集めて単位領域とすることにより、１６ビットの単位領域８個からなる出力データを生成している。なお入力データの単位領域が１６ビットであれば出力データは８ビットの単位領域１６個、入力データの単位領域が３２ビットであれば出力データは４ビットの単位領域３２個となる。
【００４５】
以下、図１で示した情報処理装置１０を用いて、入力レジスタ１２のサイズ分のデータに対し、１ステップでギャザー処理を施し出力レジスタ１４に格納する手法について説明する。この場合も、制御信号生成器１６は図４で示したのと同様の構成でよい。
【００４６】
図１１は、ギャザーを行う際、情報処理装置１０の各セレクタ回路１８へ入力するセレクト信号を生成する原理を説明するための図である。ビットリバースと同様、ギャザーにおいても７ビットの変数ｉ（０≦ｉ≦１２７）を操作する。具体的には、ギャザー後のビット番号を表す７ビットのデータにおいて、単位領域番号ｊと、単位領域内でのビット番号ｋを入れ替えると、ギャザー前のビット番号となる。
【００４７】
図１１に示した例では、ｉ＝７５（０ｂ１００１０１１）におけるｊ＝９（０ｂ１００１）とｋ＝３（０ｂ０１１）を入れ替え、ｊ＝３（０ｂ０１１）、ｋ＝９（０ｂ１００１）とすると、ｎ＝５７（０ｂ０１１１００１）が得られる。すなわちギャザーにおいて、出力レジスタ１４における第７５ビットに格納するのは、入力レジスタ１２における第５７ビットのデータとなる。その他のビットも同様である。したがって当該値ｎが、ｉ番目のセレクタ回路１８に対して入力すべきセレクト信号の値となる。
【００４８】
図１２は図４における第ｉ信号生成器２２ｉのセレクト信号生成部２４に対応し、ギャザー処理を行う際のセレクト信号を生成するセレクト信号生成部２４ｂの構成を詳細に示している。セレクト信号生成部２４ｂは、左シフトを行うシフト回路４０、アンド回路４２、右シフトを行うシフト回路４４、および加算回路４６を含む。同図においてアンド回路４２への入力値として示された、スラッシュで区切られた３つの１６進数はそれぞれ、入力データの単位領域が８ビット／１６ビット／３２ビットのときの値である。上述したように、これらの値は入力するオペコードによって切り替えることができる。このような構成によって、上述のセレクト信号の値ｎは、それぞれ以下のように導出できる。
【００４９】
単位領域８ビット：ｎ＝（ｉ＞＞３）＋（（ｉ＆０ｘ０７）＜＜４）
単位領域１６ビット：ｎ＝（ｉ＞＞４）＋（（ｉ＆０ｘ０ｆ）＜＜５）
単位領域３２ビット：ｎ＝（ｉ＞＞５）＋（（ｉ＆０ｘ１ｆ）＜＜６）    （式４）
ここで「＜＜」は論理左シフト、＞＞は論理右シフトを表す。
【００５０】
式４において、右辺第１項は上位ビットを下位ビットにシフトし、第２項は下位ビットを上位ビットにシフトする操作である。ギャザーもビットリバース同様、出力レジスタ１４に余剰ビットは発生しないため、図４の無効ビット指示部２６は常に「１」を出力する。以上の処理を第０信号生成器２２ａから第１２７信号生成器２２ｎまでが同様に行うことにより、１２８個のセレクト信号が第０〜１２７のセレクタ回路１８へ、１２８個の「有効」を表す信号が第０〜１２７のアンド回路２０へ、それぞれ入力される。この構成により、図１の情報処理装置１０を用いてギャザー処理を容易かつ短時間で実現することができる。
【００５１】
以上述べた本実施の形態によれば、出力レジスタの各ビットに対応する、セレクタ回路およびアンド回路の対を設ける。そしてセレクタ回路は入力レジスタの全ビットの値を入力値とし、そのうち１つを選択して出力する。各セレクタ回路が選択すべきビットは、行いたいビット操作および入力レジスタにおける単位領域のサイズによって適宜計算する。アンド回路は、対応するセレクタ回路からの出力値のうち有効な値のみを出力レジスタへ出力し、残りは「０」を出力する。このような構成により、可変長符号の連結、ビットリバース、ギャザーなど、様々なビット操作に汎用的に利用可能なデータ生成装置を、簡易な構成で実現できる。また入力レジスタを構成するビット分の処理を一斉に実行できるため、処理に要する時間を短縮できる。さらに、出力レジスタへ出力すべきデータの有効／無効を適応的に決定してデータに反映させることができるため、出力データをさらにビット操作する場合など後段の処理において無効なビットを識別しやすくなり、処理が容易になる。
【００５２】
なお本実施の形態で示したビット操作の内容はあくまで例示であり、図１の情報処理装置１０の構成において制御信号生成器１６に適当なオペコードおよび必要に応じた補助データを入力することにより、多様なビット操作を容易に実現でき、上記と同様の効果を得ることができることは当業者には理解されるところである。
【００５３】
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【符号の説明】
【００５４】
１０  情報処理装置、  １２  入力レジスタ、  １４  出力レジスタ、  １６  制御信号生成器、  １８  セレクタ回路、  ２０  アンド回路、  ２２ｉ  第ｉ信号生成器、  ２４  セレクト信号生成部、  ２６  無効ビット指示部。
【図１】
2012033032.tif 000004
【図２】
2012033032.tif 000005
【図３】
2012033032.tif 000006
【図４】
2012033032.tif 000007
【図５】
2012033032.tif 000008
【図６】
2012033032.tif 000009
【図７】
2012033032.tif 000010
【図８】
2012033032.tif 000011
【図９】
2012033032.tif 000012
【図１０】
2012033032.tif 000013
【図１１】
2012033032.tif 000014
【図１２】
2012033032.tif 000015