(57)【特許請求の範囲】
【請求項１】
複数のビットからなる第１のデータを格納する第１のレジスタと、
第１のデータと同じビット数の第２のデータを格納する第２のレジスタと、
第３のレジスタとを有し、
第１のレジスタの第１のデータを上位方向に１ビットシフトし、第１のレジスタからオーバフローした１ビットを第３のレジスタに格納するとともに、それまで第３のレジスタに格納されていたデータを第１のレジスタの最下位ビット位置に移動する第１の命令と、第２のレジスタの第２のデータを下位方向に１ビットシフトし、第２のレジスタからオーバフローした１ビットを第３のレジスタに格納するとともに、それまでに第３のレジスタに格納されていたデータを第２のレジスタの最上位ビット位置に移動する第２の命令との実行を１サイクルとするペア命令を第１，第２のレジスタのビット数に対応する回数だけ繰り返し、最後に第１のレジスタに対し第１の命令を実行するビット配列変換方法。
【請求項２】
複数のビットからなる第１のデータを格納する第１のレジスタと、
第１のデータと同じビット数の第２のデータを格納する第２のレジスタと、
第３のレジスタとを有し、
第１のレジスタの第１のデータを上位方向に１ビットシフトし、第１のレジスタからオーバフローした１ビットを第３のレジスタに格納するとともに、それまで第３のレジスタに格納されていたデータを第１のレジスタの最下位ビット位置に移動する第１の命令を先ず実行し、第２のレジスタの第２のデータを下位方向に１ビットシフトし、第２のレジスタからオーバフローした１ビットを第３のレジスタに格納するとともに、それまでに第３のレジスタに格納されていたデータを第２のレジスタの最上位ビット位置に移動する第２の命令およびそれに続く第１の命令の実行を１サイクルとするペア命令を第１，第２のレジスタのビット数に対応する回数だけ繰り返すビット配列変換方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、複数のビットからなるデジタルデータのＭＳＢの位置にあったビットからＬＳＢの位置にあったビットまでの各ビットの配列を逆転して並べ換えるビット配列変換方法に関する。
【０００２】
【従来の技術】
データ通信システムにおいて、送信側と受信側とでは送信信号と受信信号とのビット配列が逆になっていることがある。この場合、プログラム処理によってビット配列を逆の配列に変換することがよく行われる。図３は、従来のビット配列変換方法で用いられるレジスタ部を示す図、図４は、図３のレジスタ部の第１のレジスタから第２のレジスタに対して行われるビット配列変換を説明するフローチャートである。図３に示すように、例えば、レジスタ部５０において、１６ビットの第１のレジスタ５１に“１１００・・・１０１０”なるデータが保持されているものとすると、ＣＰＵ（不図示）は、第１のレジスタ５１のＬＳＢの位置のビットデータを読み取り、“０”であるか“１”であるかを判定する（Ｓ２１）。Ｓ２１の判定において、“０”であるならば、矢印ＭＶのように第２のレジスタ５２のＬＳＢの位置に“０”を格納し、“１”であるならば、矢印ＭＶのように第２のレジスタ５２のＬＳＢの位置に“１”を格納する。この例の場合、判定は“０”であるので、第２のレジスタ５２のＬＳＢの位置に“０”を格納する。
【０００３】
上述のように“０”を第２のレジスタのＬＳＢの位置に格納した後に、第１のレジスタ５１のデータを矢印ＳＨＲの方向に１ビットだけシフトし（Ｓ２４）、第２のレジスタ５２のデータを矢印ＳＨＬの方向に１ビットだけシフトする（Ｓ２５）。シフトが完了後、最初の判定（Ｓ２１）に戻り、同様な動作を繰り返す。このように第１のレジスタ５１に格納された１６ビットの全部について処理が完了した場合に、第２のレジスタ５２を観察すると、図３に示されるように、第１のレジスタ５１に最初に保持されたデータがビット位置（位）を逆転して第２のレジスタ５２に格納されていることが分かる。具体的には、例えば、点線の矢印で示されるように、第１のレジスタ５１のＭＳＢ，ＬＳＢのデータは、それぞれ第２のレジスタ５２のＬＳＢ，ＭＳＢのデータとして格納されている。
【０００４】
【発明が解決しようとする課題】
上述したように、ＣＰＵによるプログラム処理においては、データのビット配列を逆転するために、各ビット毎に“０”，“１”の判定およびシフトを行っているので、プログラムステップ数が多く、図４の場合、１ビット当たりの処理に、複数ビットの場合のループ処理も含めれば、６ステップを必要とし、処理時間が多くなる。また、処理データのビット数がさらに増えたり、複数のデータを同時に処理したいような場合に、処理が複雑になるとともに益々時間がかかるという問題がある。
【０００５】
この発明は、上記の問題を解決すべくなされてものであって、複数のデータを同時に処理することができ、かつ、処理ステップが少ないビット配列変換方法を提供することを目的とする。
【０００６】
【課題を解決するための手段】
前述した課題を解決するために、この発明は、複数のビットからなる第１のデータを格納する第１のレジスタと、第１のデータと同じビット数の第２のデータを格納する第２のレジスタと、第３のレジスタとを有し、第１のレジスタの第１のデータを上位方向に１ビットシフトし、第１のレジスタからオーバフローした１ビットを第３のレジスタに格納するとともに、それまで第３のレジスタに格納されていたデータを第１のレジスタの最下位ビット位置に移動する第１の命令と、第２のレジスタの第２のデータを下位方向に１ビットシフトし、第２のレジスタからオーバフローした１ビットを第３のレジスタに格納するとともに、それまでに第３のレジスタに格納されていたデータを第２のレジスタの最上位ビット位置に移動する第２の命令との実行を１サイクルとするペア命令を第１，第２のレジスタのビット数に対応する回数だけ繰り返し、最後に第１のレジスタに対し第１の命令を実行するようにする。
【０００７】
このような構成によれば、第１，第２のレジスタにそれぞれ格納したデータに対して、例えば配列変換制御部が第１，第２の命令を第１，第２のレジスタのビット数に対応する回数だけ繰り返し、最後に第１のレジスタに対し第１の命令を実行するだけでビット配列変換が行われるので、少ないステップ数でビット配列変換を実施することができる。
【０００８】
また、この発明は、複数のビットからなる第１のデータを格納する第１のレジスタと、第１のデータと同じビット数の第２のデータを格納する第２のレジスタと、第３のレジスタとを有し、第１のレジスタの第１のデータを上位方向に１ビットシフトし、第１のレジスタからオーバフローした１ビットを第３のレジスタに格納するとともに、それまで第３のレジスタに格納されていたデータを第１のレジスタの最下位ビット位置に移動する第１の命令を先ず実行し、第２のレジスタの第２のデータを下位方向に１ビットシフトし、第２のレジスタからオーバフローした１ビットを第３のレジスタに格納するとともに、それまでに第３のレジスタに格納されていたデータを第２のレジスタの最上位ビット位置に移動する第２の命令およびそれに続く第１の命令の実行を１サイクルとするペア命令を第１，第２のレジスタのビット数に対応する回数だけ繰り返す。
このような構成によれば、第１命令を１回行った後、第１、第２の命令を第１，第２のレジスタのビット数に対応する回数だけ繰り返すことでビット配列変換が行われ、少ないステップ数でビット配列変換を実施することができる。
【０００９】
【発明の実施の形態】
以下、この発明の実施の形態について添付図面に基づいて説明する。
実施の形態１．
図１は、この発明の方法を実施するビット配列変換システムの一例を示すブロック図、図２は、図１のビット配列変換システムがビット変換を行うのを説明するためのフローチャートである。このビット配列変換システム１００においては、配列変換制御部４０の制御の下で、第１の記憶部１０の下位のアドレスから順次に格納されたそれぞれが１６ビットの１ｃｈ，２ｃｈ，３ｃｈ，４ｃｈ，〜のデータを４ｃｈ分ずつレジスタ部２０に送り込み、所定のビット配列変換（以下に説明）をして、ビット配列変換済みの１ｃｈ，２ｃｈ，３ｃｈ，４ｃｈ，〜のデータを第２の記憶部３０の上位のアドレスから順次に格納する。
【００１０】
第１，第２のレジスタ２１，２２はそれぞれ３２ビット構成にされている。配列変換制御部４０は、第１のレジスタ２１に対しては、下位側に３ｃｈの１６ビット、上位側に４ｃｈの１６ビットをそれぞれ格納する。第２のレジスタ２２に対しては、下位側に１ｃｈの１６ビット、上位側に２ｃｈの１６ビットをそれぞれ格納する。この４ｃｈの処理が終わる毎に、次の４ｃｈ分のデータを下位アドレスのものから順次に読み出し、第２のレジスタの下位アドレスから第１のレジスタの上位アドレスの順に格納して処理する。第１，第２のレジスタ２１，２２へのデータの格納が完了すると、配列変換制御部４０は、先ず、第１のレジスタに対して、ＲＯＴＣＬを実行する。すなわち、第１のレジスタ２１に格納したデータを１ビットだけ左方向（上位方向）にシフトし、オーバーフローするＭＳＢの位置にあったデータをキャリービットレジスタ２３に格納する。また、第１のレジスタ２１のＬＳＢの位置にはキャリービットレジスタ２３のデータが送り込まれてくるが、この最初の場合のデータは“不定”である。
【００１１】
次に、第２のレジスタ２２に対して、ＲＯＴＣＲを実行する。すなわち、第１のレジスタ２１に格納したデータを１ビットだけ右方向（下位方向）にシフトし、オーバーフローするＬＳＢの位置のデータをキャリービットレジスタ２３に格納するとともに、それまでキャリービットレジスタ２３に格納されていたデータ（第１のレジスタのＭＳＢの位置にあってキャリービットレジスタ２３に移動されたデータ）を第２のレジスタ２２のＭＳＢの位置に移動する。これで変換の１サイクル（１ビット分）が完了する。この１サイクルが完了すると、再び、第１のレジスタ２１に対して、ＲＯＴＣＬを実行し、第２のレジスタ２２に対してＲＯＴＣＲを実行する。第１のレジスタに対する１回のＲＯＴＣＬの実行と、第２のレジスタ２２に対する１回のＲＯＴＣＲの実行とを１回のペア命令として、このペア命令を第１，第２のレジスタ２１，２２の有するビット数だけ繰り返す。
【００１２】
第１，第２のレジスタ２１，２２に対する上述のペア命令の繰り返しが完了した時点において、第２のレジスタの内容は、ビット配列が変換された状態となっているが、第１のレジスタについては、ＭＳＢの位置のデータが“不定”となっているので、最後にもう１回だけ、第１のレジスタ２１に対してＲＯＴＣＬを実行する。これによって、第１のレジスタ２１の内容も、ビット配列が変換された状態となる。この状態において、レジスタ部２０の右辺に示されるように、第１のレジスタ２１は、上位１６ビットに、ビット位置が逆転された１ｃｈのデータ、下位１６ビットに、ビット位置が逆転された２ｃｈのデータを保持することとなる。また、第２のレジスタ２２は、上位１６ビットに、ビット位置が逆転された３ｃｈのデータ、下位１６ビットに、ビット位置が逆転された４ｃｈのデータを保持している。そして、これらのデータは、第１のレジスタ２１の上位１６ビット、下位１６ビット、第２のレジスタ２２の上位１６ビット、下位１６ビットの順で第２の記憶部３０の空いている上位のアドレスから順次に格納される。
【００１３】
実施の形態２．
上述の例では、ＲＯＴＣＬとＲＯＴＣＲとを１回ずつ行うペア命令を第１，第２のレジスタのそれぞれのビット数だけ、すなわち、ＲＯＴＣＬとＲＯＴＣＲとをそれぞれ３２回繰り返した後に、最初に命令を実行した第１のレジスタ２１に対してのみ、最後にＲＯＴＣＬを１回余分に実行している。しかし、これとは違って、最初にキャリービットレジスタ２３に対する準備ステップとして、第１のレジスタにＲＯＴＣＬを１回実行した後に、ＲＯＴＣＲとＲＯＴＣＬとを１回ずつ行うペア命令を第１，第２のレジスタのそれぞれのビット数（例えば、３２回）だけ繰り返すようにしてもよい。このように、ペア命令に実行は、図２に示すように、第１，第２のレジスタ２１，２２に格納されたそれぞれの１ビットつまり合計２ビットを処理するのに、第１のレジスタ２１に対してはＲＯＴＣＬを１回、第２のレジスタ２２に対してはＲＯＴＣＲを１回実行すればよいので、１ビット当たり１ステップでよいこととなり、短時間（従来の約１／６の時間）で処理可能となる。また、命令の実行は、ＲＯＴＣＲとＲＯＴＣＬとを１回ずつ行うペア命令の繰り返しなので、内容が簡潔である。なお、上述のＲＯＴＣＲおよびＲＯＴＣＬを実行するのに、日立製作所のＣＰＵのＳＨ７０３４におけるＲＯＴＣＲおよびＲＯＴＣＬが機能的によく適合している。
【００１４】
【発明の効果】
この発明のビット配列変換方法は、以上説明したように構成されているので、第１，第２のレジスタにそれぞれ格納したデータに対して、第１，第２の命令を第１，第２のレジスタのビット数に対応する回数だけ繰り返し、最後に第１のレジスタに対し第１の命令を１回実行することにより、第１，第２のレジスタのデータに対して、ビット配列変換が行われるので、少ないステップ数で第１，第２のレジスタにそれぞれ格納したデータに対するビット配列変換を実施することができる。もちろん、最後に実行した第１のレジスタに対する１回の第１の命令を最初に実行しても同じ効果が得られることはいうまでもない。また、このような処理は、複雑でない命令の繰り返しでできるのでプログラムも簡潔になる。
【図面の簡単な説明】
【図１】この発明を実施するビット配列変換システムを示すブロック図である。
【図２】図１のビット配列変換システムが１ビットについてビット変換を行うのを説明するためのフローチャートである。
【図３】従来のビット配列変換方法によるビット変換の処理を説明するためのブロック図である。
【図４】図３の処理の動作を説明するためのフローチャートである。
【符号の説明】
１０    第１の記憶部
２０    レジスタ部
２１    第１のレジスタ
２２    第２のレジスタ
２３    キャリービットレジスタ
３０    第２の記憶部
４０    配列変換制御部
１００    ビット配列変換システム
【図１】
0003876963.tif 000002
【図２】
0003876963.tif 000003
【図３】
0003876963.tif 000004
【図４】
0003876963.tif 000005