(57)【要約】【課題】  メモリ上のビット列を効率良くレジスタへ読み込んだり、レジスタ内のビット列をメモリへ効率良く書き込むことができるようにする。【解決手段】  制御手段６０が、読み込み処理のときに、ビットストリーム・ポインタ１０に記憶されたメモリ上の基準位置、及び、ビットストリーム・カウンタ３０に記憶されたビット列データのビット数に基づいて、ビットストリーム・バッファ２０に記憶されたビット列データを介し、メモリ上に格納されている読み込みデータをレジスタへ格納し、書き込み処理のときに、ビットストリーム・ポインタ１０に記憶されたメモリ上の基準位置、及び、ビットストリーム・カウンタ３０に記憶されたビット列データのビット数に基づいて、ビットストリーム・バッファ２０に記憶されたビット列データを介し、レジスタに格納されている書き込みデータをメモリに格納するようにする。【選択図】  図１
2006011822.tif 000002
【特許請求の範囲】
【請求項１】
メモリからレジスタに読み込まれる１個以上のビットから構成されるビット列を読み込みデータとし、
前記レジスタから前記メモリに書き込まれる１個以上のビットから構成されるビット列を書き込みデータとし、
メモリアクセスによって前記メモリから取得される１個以上のビットから構成されるビット列を取得データとし、
メモリアクセスによって前記メモリに格納される１個以上のビットから構成されるビット列を格納データとしたとき、
前記読み込みデータを前記メモリから前記レジスタへ読み込むための読み込み処理、及び、前記書き込みデータを前記レジスタから前記メモリに書き込むための書き込み処理の少なくとも１つの処理を実行する制御手段と、
前記制御手段によって読み込まれる前記読み込みデータの前記メモリ上の基準位置又は前記制御手段によって書き込まれる前記書き込みデータの前記メモリ上の基準位置を記憶するための位置記憶手段と、
前記取得データ又は前記格納データをビット列データとして記憶するビット列記憶手段と、
前記ビット列記憶手段に記憶されている前記ビット列データのビット数を記憶するビット数記憶手段と、を備え、
前記制御手段は、
前記読み込み処理のときに、前記位置記憶手段に記憶された前記メモリ上の基準位置、及び、前記ビット数記憶手段に記憶された前記ビット数に基づいて、前記ビット列記憶手段に記憶された前記ビット列データを介して、前記メモリ上に格納されている前記読み込みデータを前記レジスタへ格納し、
前記書き込み処理のときに、前記位置記憶手段に記憶された前記メモリ上の基準位置、及び、前記ビット数記憶手段に記憶された前記ビット数に基づいて、前記ビット列記憶手段に記憶された前記ビット列データを介して、前記レジスタにある前記書き込みデータを前記メモリに格納する
ことを特徴とするプロセッサ。
【請求項２】
前記読み込み処理は、
前記取得データを介して、読み込み対象となる読み込みデータを、前記メモリから前記ビット列記憶手段に格納する読み込みデータ取得処理を実行し、
前記ビット列記憶手段に格納されている前記ビット列データを介して、前記読み込みデータを前記レジスタに格納するレジスタ格納処理を実行する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記読み込みデータ取得処理は、
前記ビット列データのビット数と前記読み込みデータのビット数とに基づいて、前記ビット列データのビット列に前記読み込みデータの全てのビット列が存在するか否かを判定する処理を実行し、
前記ビット列記憶手段に格納されている前記ビット列データに前記読み込みデータの一部もしくは全てが存在しないときに、前記メモリ上の基準位置と前記ビット列データのビット数とに基づいて算出された前記メモリ上の位置から、前記メモリより所定のビット数のビット列を取得し、取得したビット列とすでに前記ビット列記憶手段に格納されている前記ビット列データとから生成した新たなビット列データを前記ビット列記憶手段に格納する処理を実行する
ことを特徴とする請求項２に記載のプロセッサ。
【請求項４】
前記レジスタ格納処理は、
前記ビット列記憶手段に格納されている前記ビット列データから前記読み込みデータを取得し、
取得した前記読み込みデータを前記レジスタに格納し、
次回の読み込み処理を実行するために、前記メモリ上の基準位置、前記ビット列データ、及び、前記ビット列データのビット数を更新する読み込み用後処理を実行する
ことを特徴とする請求項２に記載のプロセッサ。
【請求項５】
前記読み込み用後処理は、
前記ビット列データにおいて、前記レジスタに格納した前記読み込みデータを無効にしたデータを、次回の読み込み処理における新たなビット列データとし、
前記メモリ上の基準位置に、前記レジスタに格納した前記読み込みデータのビット数を加算した位置を、次回の読み込み処理における新たな前記メモリ上の基準位置とし、
前記ビット列データのビット数から、前記レジスタに格納した前記読み込みデータのビット数を減算したビット数を、次回の読み込み処理における前記新たなビット列データのビット数とする
ことを特徴とする請求項４に記載のプロセッサ。
【請求項６】
前記書き込み処理は、
前記ビット列記憶手段の記憶容量、前記ビット列データのビット数、及び、書き込み対象となる前記書き込みデータのビット数に基づいて、すでに前記ビット列データとして前記ビット列記憶手段に格納されている１個又は複数個の前記書き込みデータを、前記メモリに格納するタイミングであるか否かを判定する処理を実行し、
すでに前記ビット列データとして前記ビット列記憶手段に格納されている１個又は複数個の前記書き込みデータを、前記メモリに格納するタイミングであるときに、前記ビット列データを前記メモリに格納するメモリ格納処理を実行し、
前記書き込みデータを、前記レジスタから前記ビット列記憶手段に格納する書き込みデータ取得処理を実行する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項７】
前記メモリ格納処理は、
前記ビット列データから所定のビット数のビット列を取得し、
取得したビット列を、前記メモリ上の基準位置から前記メモリに格納し、
次回の書き込み処理を実行するために、前記メモリ上の基準位置、前記ビット列データ、及び、前記ビット列データのビット数を更新する書き込み用後処理を実行する
ことを特徴とする請求項６に記載のプロセッサ。
【請求項８】
前記書き込み用後処理は、
前記ビット列データにおいて、前記メモリに格納した前記所定のビット数のビット列を無効にしたデータを、次回の書き込み処理における新たなビット列データとし、
前記メモリ上の基準位置に、前記メモリに格納されたビット列のビット数を加算した位置を、次回の書き込み処理における新たな前記メモリ上の基準位置とし、
前記ビット列データのビット数から、前記メモリに格納されたビット列のビット数を減算したビット数を、次回の書き込み処理における前記新たなビット列データのビット数とする
ことを特徴とする請求項７に記載のプロセッサ。
【請求項９】
前記書き込みデータ取得処理は、
前記書き込みデータを前記レジスタから取得し、
前記ビット列データのビット数に基づいた前記ビット列記憶手段の位置から、取得した前記書き込みデータを前記ビット列記憶手段に格納した新たなビット列データを生成し、
取得した前記書き込みデータのビット数に基づいて、新たに生成した前記ビット列データのビット数を、前記ビット数記憶手段に格納する
ことを特徴とする請求項６に記載のプロセッサ。
【請求項１０】
前記制御手段によって実行される処理が、前記読み込み処理であるか、前記書き込み処理であるかを決定するデータを記憶する動作情報記憶手段を、備えている
ことを特徴とする請求項１から９のいずれか１項に記載のプロセッサ。
【請求項１１】
前記メモリを管理する所定のビット数の単位をメモリ管理単位とし、
データを構成するビット列を前記メモリ管理単位に分割して、順序付けた番号をメモリ管理単位順番としたとき、
前記制御手段は、
前記読み込み処理のときに、前記メモリに格納されている前記読み込みデータを、前記メモリ管理単位順番に基づいて昇順又は降順に変換して、前記レジスタに格納し、
前記書き込み処理のときに、前記レジスタに格納されている前記書き込みデータを、前記メモリ管理単位順番に基づいて昇順又は降順に変換して、前記メモリに格納する
ことができることを特徴とする請求項１から１０のいずれか１項に記載のプロセッサ。
【請求項１２】
前記読み込み処理のときに、前記レジスタに格納する前記読み込みデータを、前記メモリ管理単位順番に基づいて昇順又は降順に変換するかを決定するデータを記憶し、前記書き込み処理のときに、前記メモリに格納する前記書き込みデータを、前記メモリ管理単位順番に基づいて昇順又は降順に変換するかを決定するデータを記憶する変換順記憶手段を、備えている
ことを特徴とする請求項１１に記載のプロセッサ。
【請求項１３】
前記位置記憶手段、前記ビット列記憶手段及び前記ビット数記憶手段は、レジスタであることを特徴とする請求項１から１２のいずれか１項に記載のプロセッサ。
【請求項１４】
請求項１に記載の制御手段として実現される処理をコンピュータに実行させるためのプログラムであって、
前記制御手段は、
前記読み込み処理のときに、前記位置記憶手段に記憶された前記メモリ上の基準位置、及び、前記ビット数記憶手段に記憶された前記ビット列データのビット数に基づいて、前記ビット列記憶手段に記憶されたビット列データを介して、前記メモリ上に格納されている前記読み込みデータを前記レジスタへ格納し、
前記書き込み処理のときに、前記位置記憶手段に記憶された前記メモリ上の基準位置、及び、前記ビット数記憶手段に記憶された前記ビット列データのビット数に基づいて、前記ビット列記憶手段に記憶された前記ビット列データを介して、前記レジスタに格納されている前記書き込みデータを前記メモリに格納する
ことを特徴とする制御プログラム。
【請求項１５】
メモリからレジスタに読み込まれる１個以上のビットから構成されるビット列を読み込みデータとし、
前記レジスタから前記メモリに書き込まれる１個以上のビットから構成されるビット列を書き込みデータとし、
メモリアクセスによって前記メモリから取得される１個以上のビットから構成されるビット列を取得データとし、
メモリアクセスによって前記メモリに格納される１個以上のビットから構成されるビット列を格納データとしたとき、
前記読み込みデータの前記メモリ上の基準位置又は前記制御手段によって書き込まれる前記書き込みデータの前記メモリ上の基準位置を記憶するための位置記憶手段と、
前記取得データ又は前記格納データをビット列データとして記憶するビット列記憶手段と、
前記ビット列記憶手段に記憶されている前記ビット列データのビット数を記憶するビット数記憶手段と、を有したプロセッサの制御方法であって、
前記位置記憶手段に記憶された前記メモリ上の基準位置、及び、前記ビット数記憶手段に記憶された前記ビット列データのビット数に基づいて、前記ビット列記憶手段に記憶された前記ビット列データを介して、前記メモリ上に格納されている前記読み込みデータを前記レジスタへ格納する読み込み処理工程と、
前記位置記憶手段に記憶された前記メモリ上の基準位置、及び、前記ビット数記憶手段に記憶された前記ビット列データのビット数に基づいて、前記ビット列記憶手段に記憶された前記ビット列データを介し、前記レジスタに格納されている前記書き込みデータを前記メモリに格納する書き込み処理工程と
の中の少なくとも１つの処理工程を、備えている
ことを特徴とするプロセッサの制御方法。
【請求項１６】
前記読み込み処理工程は、
前記取得データを介して、読み込み対象となる読み込みデータを、前記メモリから前記ビット列記憶手段に格納する読み込みデータ取得処理工程と、
前記ビット列記憶手段に格納されている前記ビット列データを介して、前記読み込みデータを前記レジスタに格納するレジスタ格納処理工程とを備えている
ことを特徴とする請求項１５に記載のプロセッサの制御方法。
【請求項１７】
前記読み込みデータ取得処理工程は、
前記ビット列データのビット数と前記読み込みデータのビット数とに基づいて、前記ビット列データのビット列に前記読み込みデータの全てのビット列が存在するか否かを判定する処理工程と、
前記格納されている前記ビット列データに前記読み込みデータの一部もしくは全てが存在しないときに、前記メモリ上の基準位置と前記ビット列データのビット数とに基づいて算出された前記メモリ上の位置から、前記メモリより所定のビット数のビット列を取得し、取得したビット列とすでに前記ビット列記憶手段に格納されている前記ビット列データとから生成した新たなビット列データを前記ビット列記憶手段に格納する処理工程とを備えている
ことを特徴とする請求項１６に記載のプロセッサの制御方法。
【請求項１８】
前記レジスタ格納処理工程は、
前記ビット列記憶手段に格納されている前記ビット列データから前記読み込みデータを取得する工程と、
取得した前記読み込みデータを前記レジスタに格納する工程と、
次回の読み込み処理を実行するために、前記メモリ上の基準位置、前記ビット列データ、及び、前記ビット列データのビット数を更新する読み込み用後処理工程とを備えている
ことを特徴とする請求項１６に記載のプロセッサの制御方法。
【請求項１９】
前記読み込み用後処理工程は、
前記ビット列データにおいて、前記レジスタに格納した前記読み込みデータを無効にしたデータを、次回の読み込み処理における新たなビット列データとする工程と、
前記メモリ上の基準位置に、前記レジスタに格納した前記読み込みデータのビット数を加算した位置を、次回の読み込み処理における新たな前記メモリ上の基準位置とする工程と、
前記ビット列データのビット数から、前記レジスタに格納した前記読み込みデータのビット数を減算したビット数を、次回の読み込み処理における前記新たなビット列データのビット数とする工程とを備えている
ことを特徴とする請求項１８に記載のプロセッサの制御方法。
【請求項２０】
前記書き込み処理工程は、
前記ビット列記憶手段の記憶容量、前記ビット列データのビット数、及び、書き込み対象となる前記書き込みデータのビット数に基づいて、すでに前記ビット列データとして前記ビット列記憶手段に格納されている１個又は複数個の前記書き込みデータを、前記メモリに格納するタイミングであるか否かを判定する処理工程と、
すでに前記ビット列データとして前記ビット列記憶手段に格納されている１個又は複数個の前記書き込みデータを、前記メモリに格納するタイミングであるときに、前記ビット列データを前記メモリに格納するメモリ格納処理工程と、
前記書き込みデータを、前記レジスタから前記ビット列記憶手段に格納する書き込みデータ取得処理工程とを備えている
ことを特徴とする請求項１５に記載のプロセッサの制御方法。
【請求項２１】
前記メモリ格納処理工程は、
前記ビット列データから所定のビット数のビット列を取得する工程と、
取得したビット列を、前記メモリ上の基準位置から前記メモリに格納する工程と、
次回の書き込み処理を実行するために、前記メモリ上の基準位置、前記ビット列データ、及び、前記ビット列データのビット数を更新する書き込み用後処理工程とを備えている
ことを特徴とする請求項２０に記載のプロセッサの制御方法。
【請求項２２】
前記書き込み用後処理工程は、
前記ビット列データにおいて、前記メモリに格納した前記所定のビット数のビット列を無効にしたデータを、次回の書き込み処理における新たなビット列データとする工程と、
前記メモリ上の基準位置に、前記メモリに格納されたビット列のビット数を加算した位置を、次回の書き込み処理における新たな前記メモリ上の基準位置とする工程と、
前記ビット列データのビット数から、前記メモリに格納されたビット列のビット数を減算したビット数を、次回の書き込み処理における前記新たなビット列データのビット数とする工程とを備えている
ことを特徴とする請求項２１に記載のプロセッサの制御方法。
【請求項２３】
前記書き込みデータ取得処理工程は、
前記書き込みデータを前記レジスタから取得する工程と、
前記ビット列データのビット数に基づいた前記ビット列記憶手段の位置から、取得した前記書き込みデータを前記ビット列記憶手段に格納した新たなビット列データを生成する工程と、
取得した前記書き込みデータのビット数に基づいて、新たに生成した前記ビット列データのビット数を、前記ビット数記憶手段に格納する工程とを備えている
ことを特徴とする請求項２０に記載のプロセッサの制御方法。
【請求項２４】
前記メモリを管理する所定のビット数の単位をメモリ管理単位とし、
データを構成するビット列を前記メモリ管理単位に分割して、順序付けた番号をメモリ管理単位順番としたとき、
前記読み込み処理工程は、前記メモリに格納されている前記読み込みデータを、前記メモリ管理単位順番に基づいて昇順又は降順に変換して、前記レジスタに格納する
ことを特徴とする請求項１５から１９のいずれか１項に記載のプロセッサの制御方法。
【請求項２５】
前記メモリを管理する所定のビット数の単位をメモリ管理単位とし、
データを構成するビット列を前記メモリ管理単位に分割して、順序付けた番号をメモリ管理単位順番としたとき、
前記書き込み処理工程は、前記レジスタに格納されている前記書き込みデータを、前記メモリ管理単位順番に基づいて昇順又は降順に変換して、前記メモリに格納する
ことを特徴とする請求項１５又は請求項２０から２２のいずれか１項に記載のプロセッサの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ上のビット列を効率良くレジスタへ読み込んだり、レジスタ内のビット列をメモリへ効率良く書き込むことができるプロセッサに関する。
【背景技術】
【０００２】
映像や音楽でのデータ圧縮では、頻繁に出現する情報を短い符号語で表す可変長符号が使用される。可変長符号が使用する符号語は１個以上の任意の数のビットで表される。圧縮された映像や音楽のデータは可変長符号がいくつも連結されたビットストリームとなる。一般的なプロセッサでは、８ビット単位や１６ビット単位で情報を管理するため、可変長符号を効率良く扱うことができない。
【０００３】
たとえば、可変長符号化された符号語を一つメモリから取り出すために、一般的なプロセッサではシフト命令や論理演算命令を使用する。この場合、複数の命令を組み合わせて使用する必要があるので、一つの符号語をメモリから取り出す処理は数ステップから十数ステップのプログラムになる。
【０００４】
別の例として、可変長符号化された符号語を一つメモリへ書き込むために、一般的なプロセッサて゜はシフト命令や論理演算命令を使用する。この場合も、一つの符号語をメモリへ書き込む処理は数ステップから十数ステップのプログラムになる。
【０００５】
また、一般的なプロセッサはキャッシュをもつ。キャッシュは高速に動作する小容量のメモリであり、そこに頻繁に利用する命令やデータが一時的に保存される。一般的にプロセッサよりもメモリは低速なので、プロセッサがメモリを直接アクセスすることはプロセッサの性能低下につながる。そこで、キャッシュを利用してプロセッサがメモリを直接アクセスすることを避けるようにしている。
【０００６】
ところで、圧縮された映像や音楽のデータはキャッシュに不向きである。つまり、圧縮された映像や音楽を再生する場合、圧縮されたデータに含まれる各符号語は一度しか参照されないためである。したがって、圧縮されたデータをキャッシュに格納することは無駄である。しかも、圧縮されたデータをキャッシュに格納することにより、頻繁に利用されるデータがキャッシュから追い出されてしまうこともある。そこで、圧縮されたデータをキャッシュに格納しないで、メモリから直接読み込む方法が以前から使用されているが、プロセッサがメモリからデータを直接読むと、メモリの遅延サイクルを隠蔽することができない。
【０００７】
そこで、特許文献１では、メモリからプロセッサのレジスタへビット列を読み込む処理や、プロセッサのレジスタからメモリへビット列を書き込む処理を効率良く実行する演算器を提案している。
【０００８】
特許文献２〜４では、メモリからプロセッサのレジスタへビット列を読み込む処理を効率良く実行するプロセッサを提案している。
【０００９】
特許文献５では、ビット列を効率良く扱うためのメモリインターフェース装置を提案している。
【００１０】
特許文献６では、プロセッサのレジスタからメモリへビット列を書き込む処理を効率良く実行するプロセッサを提案している。
【特許文献１】特開２００３−３３７６９２号公報
【特許文献２】特開２００２−５７５８７号公報
【特許文献３】特開２００２−５７５８７号公報
【特許文献４】特開平６−３２６６１５号公報
【特許文献５】特開２００１−１１７８１４号公報
【特許文献６】特開平７−２２２１６４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
ところが、上述した特許文献１での演算器では、ビット列を効率良く扱うことができるが、メモリからビット列を読み込んだり、メモリへビット列を書き込んだりする必要がある。そのため、それぞれ複数ステップの命令を必要とするばかりか、メモリの遅延サイクルやキャッシュに関する不具合を解消することができない。
【００１２】
また、上述した特許文献２〜４では、プロセッサのレジスタからメモリへビット列を書き込む処理についての説明がないため、ビット列をメモリへ書き込む際の不具合を解消することができない。
【００１３】
また、上述した特許文献５では、インターフェース装置を使う場合、プロセッサがインターフェース装置へ動作命令と入力データとを与え、かつプロセッサがその結果を引きとらなければならない。つまり、インターフェース装置は、プロセッサの外部に接続されるため、動作命令を与えて結果を引きとる処理には数ステップかかることから、インターフェース装置によってビット列を扱う処理が劇的に高速化されるわけではない。
【００１４】
解決しようとする問題点は、圧縮されたデータをキャッシュに格納しないで、メモリから直接読み込む方法を用いようとしても、メモリ上のビット列を効率良くレジスタへ読み込んだり、レジスタ内のビット列をメモリへ効率良く書き込むことができないという点である。
【課題を解決するための手段】
【００１５】
本発明のプロセッサは、メモリからレジスタに読み込まれる１個以上のビットから構成されるビット列を読み込みデータとし、前記レジスタから前記メモリに書き込まれる１個以上のビットから構成されるビット列を書き込みデータとし、メモリアクセスによって前記メモリから取得される１個以上のビットから構成されるビット列を取得データとし、メモリアクセスによって前記メモリに格納される１個以上のビットから構成されるビット列を格納データとしたとき、前記読み込みデータを前記メモリから前記レジスタへ読み込むための読み込み処理、及び、前記書き込みデータを前記レジスタから前記メモリに書き込むための書き込み処理の少なくとも１つの処理を実行する制御手段と、前記制御手段によって読み込まれる前記読み込みデータの前記メモリ上の基準位置又は前記制御手段によって書き込まれる前記書き込みデータの前記メモリ上の基準位置を記憶するための位置記憶手段と、前記取得データ又は前記格納データをビット列データとして記憶するビット列記憶手段と、前記ビット列記憶手段に記憶されている前記ビット列データのビット数を記憶するビット数記憶手段と、を備え、前記制御手段は、前記読み込み処理のときに、前記位置記憶手段に記憶された前記メモリ上の基準位置、及び、前記ビット数記憶手段に記憶された前記ビット数に基づいて、前記ビット列記憶手段に記憶された前記ビット列データを介して、前記メモリ上に格納されている前記読み込みデータを前記レジスタへ格納し、前記書き込み処理のときに、前記位置記憶手段に記憶された前記メモリ上の基準位置、及び、前記ビット数記憶手段に記憶された前記ビット数に基づいて、前記ビット列記憶手段に記憶された前記ビット列データを介して、前記レジスタにある前記書き込みデータを前記メモリに格納することを特徴とする。
【００１６】
また、前記読み込み処理は、前記取得データを介して、読み込み対象となる読み込みデータを、前記メモリから前記ビット列記憶手段に格納する読み込みデータ取得処理を実行し、前記ビット列記憶手段に格納されている前記ビット列データを介して、前記読み込みデータを前記レジスタに格納するレジスタ格納処理を実行するようにすることができる。
【００１７】
また、前記読み込みデータ取得処理は、前記ビット列データのビット数と前記読み込みデータのビット数とに基づいて、前記ビット列データのビット列に前記読み込みデータの全てのビット列が存在するか否かを判定する処理を実行し、前記ビット列記憶手段に格納されている前記ビット列データに前記読み込みデータの一部もしくは全てが存在しないときに、前記メモリ上の基準位置と前記ビット列データのビット数とに基づいて算出された前記メモリ上の位置から、前記メモリより所定のビット数のビット列を取得し、取得したビット列とすでに前記ビット列記憶手段に格納されている前記ビット列データとから生成した新たなビット列データを前記ビット列記憶手段に格納する処理を実行するようにすることができる。
【００１８】
また、前記レジスタ格納処理は、前記ビット列記憶手段に格納されている前記ビット列データから前記読み込みデータを取得し、取得した前記読み込みデータを前記レジスタに格納し、次回の読み込み処理を実行するために、前記メモリ上の基準位置、前記ビット列データ、及び、前記ビット列データのビット数を更新する読み込み用後処理を実行するようにすることができる。
【００１９】
また、前記読み込み用後処理は、前記ビット列データにおいて、前記レジスタに格納した前記読み込みデータを無効にしたデータを、次回の読み込み処理における新たなビット列データとし、前記メモリ上の基準位置に、前記レジスタに格納した前記読み込みデータのビット数を加算した位置を、次回の読み込み処理における新たな前記メモリ上の基準位置とし、前記ビット列データのビット数から、前記レジスタに格納した前記読み込みデータのビット数を減算したビット数を、次回の読み込み処理における前記新たなビット列データのビット数とするようにすることができる。
【００２０】
また、前記書き込み処理は、前記ビット列記憶手段の記憶容量、前記ビット列データのビット数、及び、書き込み対象となる前記書き込みデータのビット数に基づいて、すでに前記ビット列データとして前記ビット列記憶手段に格納されている１個又は複数個の前記書き込みデータを、前記メモリに格納するタイミングであるか否かを判定する処理を実行し、すでに前記ビット列データとして前記ビット列記憶手段に格納されている１個又は複数個の前記書き込みデータを、前記メモリに格納するタイミングであるときに、前記ビット列データを前記メモリに格納するメモリ格納処理を実行し、前記書き込みデータを、前記レジスタから前記ビット列記憶手段に格納する書き込みデータ取得処理を実行するようにすることができる。
【００２１】
また、前記メモリ格納処理は、前記ビット列データから所定のビット数のビット列を取得し、取得したビット列を、前記メモリ上の基準位置から前記メモリに格納し、次回の書き込み処理を実行するために、前記メモリ上の基準位置、前記ビット列データ、及び、前記ビット列データのビット数を更新する書き込み用後処理を実行するようにすることができる。
【００２２】
また、前記書き込み用後処理は、前記ビット列データにおいて、前記メモリに格納した前記所定のビット数のビット列を無効にしたデータを、次回の書き込み処理における新たなビット列データとし、前記メモリ上の基準位置に、前記メモリに格納されたビット列のビット数を加算した位置を、次回の書き込み処理における新たな前記メモリ上の基準位置とし、前記ビット列データのビット数から、前記メモリに格納されたビット列のビット数を減算したビット数を、次回の書き込み処理における前記新たなビット列データのビット数とするようにすることができる。
【００２３】
また、前記書き込みデータ取得処理は、前記書き込みデータを前記レジスタから取得し、前記ビット列データのビット数に基づいた前記ビット列記憶手段の位置から、取得した前記書き込みデータを前記ビット列記憶手段に格納した新たなビット列データを生成し、取得した前記書き込みデータのビット数に基づいて、新たに生成した前記ビット列データのビット数を、前記ビット数記憶手段に格納するようにすることができる。
【００２４】
また、前記制御手段によって実行される処理が、前記読み込み処理であるか、前記書き込み処理であるかを決定するデータを記憶する動作情報記憶手段を、備えているようにすることができる。
【００２５】
また、前記メモリを管理する所定のビット数の単位をメモリ管理単位とし、データを構成するビット列を前記メモリ管理単位に分割して、順序付けた番号をメモリ管理単位順番としたとき、前記制御手段は、前記読み込み処理のときに、前記メモリに格納されている前記読み込みデータを、前記メモリ管理単位順番に基づいて昇順又は降順に変換して、前記レジスタに格納し、前記書き込み処理のときに、前記レジスタに格納されている前記書き込みデータを、前記メモリ管理単位順番に基づいて昇順又は降順に変換して、前記メモリに格納するようにすることができる。
【００２６】
また、前記読み込み処理のときに、前記レジスタに格納する前記読み込みデータを、前記メモリ管理単位順番に基づいて昇順又は降順に変換するかを決定するデータを記憶し、前記書き込み処理のときに、前記メモリに格納する前記書き込みデータを、前記メモリ管理単位順番に基づいて昇順又は降順に変換するかを決定するデータを記憶する変換順記憶手段を、備えているようにすることができる。
【００２７】
また、前記位置記憶手段、前記ビット列記憶手段及び前記ビット数記憶手段は、レジスタであるようにすることができる。
【００２８】
本発明の制御プログラムは、請求項１に記載の制御手段として実現される処理をコンピュータに実行させるためのプログラムであって、前記制御手段は、前記読み込み処理のときに、前記位置記憶手段に記憶された前記メモリ上の基準位置、及び、前記ビット数記憶手段に記憶された前記ビット列データのビット数に基づいて、前記ビット列記憶手段に記憶されたビット列データを介して、前記メモリ上に格納されている前記読み込みデータを前記レジスタへ格納し、前記書き込み処理のときに、前記位置記憶手段に記憶された前記メモリ上の基準位置、及び、前記ビット数記憶手段に記憶された前記ビット列データのビット数に基づいて、前記ビット列記憶手段に記憶された前記ビット列データを介して、前記レジスタに格納されている前記書き込みデータを前記メモリに格納することを特徴とする。
【００２９】
本発明のプロセッサの制御方法は、メモリからレジスタに読み込まれる１個以上のビットから構成されるビット列を読み込みデータとし、前記レジスタから前記メモリに書き込まれる１個以上のビットから構成されるビット列を書き込みデータとし、メモリアクセスによって前記メモリから取得される１個以上のビットから構成されるビット列を取得データとし、メモリアクセスによって前記メモリに格納される１個以上のビットから構成されるビット列を格納データとしたとき、前記読み込みデータの前記メモリ上の基準位置又は前記制御手段によって書き込まれる前記書き込みデータの前記メモリ上の基準位置を記憶するための位置記憶手段と、前記取得データ又は前記格納データをビット列データとして記憶するビット列記憶手段と、前記ビット列記憶手段に記憶されている前記ビット列データのビット数を記憶するビット数記憶手段と、を有したプロセッサの制御方法であって、前記位置記憶手段に記憶された前記メモリ上の基準位置、及び、前記ビット数記憶手段に記憶された前記ビット列データのビット数に基づいて、前記ビット列記憶手段に記憶された前記ビット列データを介して、前記メモリ上に格納されている前記読み込みデータを前記レジスタへ格納する読み込み処理工程と、前記位置記憶手段に記憶された前記メモリ上の基準位置、及び、前記ビット数記憶手段に記憶された前記ビット列データのビット数に基づいて、前記ビット列記憶手段に記憶された前記ビット列データを介し、前記レジスタに格納されている前記書き込みデータを前記メモリに格納する書き込み処理工程との中の少なくとも１つの処理工程を、備えていることを特徴とする。
【００３０】
また、前記読み込み処理工程は、前記取得データを介して、読み込み対象となる読み込みデータを、前記メモリから前記ビット列記憶手段に格納する読み込みデータ取得処理工程と、前記ビット列記憶手段に格納されている前記ビット列データを介して、前記読み込みデータを前記レジスタに格納するレジスタ格納処理工程とを備えているようにすることができる。
【００３１】
また、前記読み込みデータ取得処理工程は、前記ビット列データのビット数と前記読み込みデータのビット数とに基づいて、前記ビット列データのビット列に前記読み込みデータの全てのビット列が存在するか否かを判定する処理工程と、前記格納されている前記ビット列データに前記読み込みデータの一部もしくは全てが存在しないときに、前記メモリ上の基準位置と前記ビット列データのビット数とに基づいて算出された前記メモリ上の位置から、前記メモリより所定のビット数のビット列を取得し、取得したビット列とすでに前記ビット列記憶手段に格納されている前記ビット列データとから生成した新たなビット列データを前記ビット列記憶手段に格納する処理工程とを備えているようにすることができる。
【００３２】
また、前記レジスタ格納処理工程は、前記ビット列記憶手段に格納されている前記ビット列データから前記読み込みデータを取得する工程と、取得した前記読み込みデータを前記レジスタに格納する工程と、次回の読み込み処理を実行するために、前記メモリ上の基準位置、前記ビット列データ、及び、前記ビット列データのビット数を更新する読み込み用後処理工程とを備えているようにすることができる。
【００３３】
また、前記読み込み用後処理工程は、前記ビット列データにおいて、前記レジスタに格納した前記読み込みデータを無効にしたデータを、次回の読み込み処理における新たなビット列データとする工程と、前記メモリ上の基準位置に、前記レジスタに格納した前記読み込みデータのビット数を加算した位置を、次回の読み込み処理における新たな前記メモリ上の基準位置とする工程と、前記ビット列データのビット数から、前記レジスタに格納した前記読み込みデータのビット数を減算したビット数を、次回の読み込み処理における前記新たなビット列データのビット数とする工程とを備えているようにすることができる。
【００３４】
また、前記書き込み処理工程は、前記ビット列記憶手段の記憶容量、前記ビット列データのビット数、及び、書き込み対象となる前記書き込みデータのビット数に基づいて、すでに前記ビット列データとして前記ビット列記憶手段に格納されている１個又は複数個の前記書き込みデータを、前記メモリに格納するタイミングであるか否かを判定する処理工程と、すでに前記ビット列データとして前記ビット列記憶手段に格納されている１個又は複数個の前記書き込みデータを、前記メモリに格納するタイミングであるときに、前記ビット列データを前記メモリに格納するメモリ格納処理工程と、前記書き込みデータを、前記レジスタから前記ビット列記憶手段に格納する書き込みデータ取得処理工程とを備えているようにすることができる。
【００３５】
また、前記メモリ格納処理工程は、前記ビット列データから所定のビット数のビット列を取得する工程と、取得したビット列を、前記メモリ上の基準位置から前記メモリに格納する工程と、次回の書き込み処理を実行するために、前記メモリ上の基準位置、前記ビット列データ、及び、前記ビット列データのビット数を更新する書き込み用後処理工程とを備えているようにすることができる。
【００３６】
また、前記書き込み用後処理工程は、前記ビット列データにおいて、前記メモリに格納した前記所定のビット数のビット列を無効にしたデータを、次回の書き込み処理における新たなビット列データとする工程と、前記メモリ上の基準位置に、前記メモリに格納されたビット列のビット数を加算した位置を、次回の書き込み処理における新たな前記メモリ上の基準位置とする工程と、前記ビット列データのビット数から、前記メモリに格納されたビット列のビット数を減算したビット数を、次回の書き込み処理における前記新たなビット列データのビット数とする工程とを備えているようにすることができる。
【００３７】
また、前記書き込みデータ取得処理工程は、前記書き込みデータを前記レジスタから取得する工程と、前記ビット列データのビット数に基づいた前記ビット列記憶手段の位置から、取得した前記書き込みデータを前記ビット列記憶手段に格納した新たなビット列データを生成する工程と、取得した前記書き込みデータのビット数に基づいて、新たに生成した前記ビット列データのビット数を、前記ビット数記憶手段に格納する工程とを備えているようにすることができる。
【００３８】
また、前記メモリを管理する所定のビット数の単位をメモリ管理単位とし、データを構成するビット列を前記メモリ管理単位に分割して、順序付けた番号をメモリ管理単位順番としたとき、前記読み込み処理工程は、前記メモリに格納されている前記読み込みデータを、前記メモリ管理単位順番に基づいて昇順又は降順に変換して、前記レジスタに格納するようにすることができる。
【００３９】
また、前記メモリを管理する所定のビット数の単位をメモリ管理単位とし、データを構成するビット列を前記メモリ管理単位に分割して、順序付けた番号をメモリ管理単位順番としたとき、前記書き込み処理工程は、前記レジスタに格納されている前記書き込みデータを、前記メモリ管理単位順番に基づいて昇順又は降順に変換して、前記メモリに格納するようにすることができる。
【００４０】
本発明では、制御手段が、読み込み処理のときに、位置記憶手段に記憶されたメモリ上の基準位置、及び、ビット数記憶手段に記憶されたビット列データのビット数に基づいて、ビット列記憶手段に記憶されたビット列データを介し、メモリ上に格納されている読み込みデータをレジスタへ格納し、書き込み処理のときに、位置記憶手段に記憶されたメモリ上の基準位置、及び、ビット数記憶手段に記憶されたビット列データのビット数に基づいて、ビット列記憶手段に記憶されたビット列データを介し、レジスタに格納されている書き込みデータをメモリに格納することができる。
【発明の効果】
【００４１】
本発明によれば、制御手段による読み込み処理と書き込み処理により、メモリ上のビット列を効率良くレジスタへ読み込んだり、レジスタ内のビット列をメモリへ効率良く書き込むことができる。また、メモリからプロセッサのレジスタへビット列を読み込む処理、及び、プロセッサのレジスタからメモリへビット列を書き込む処理を、それぞれ一つの命令で実行することできる。また、ビット列記憶手段を使用することによってメモリへ実際にアクセスする回数を減らすことができる。
【発明を実施するための最良の形態】
【００４２】
本実施形態において使用する用語を次のように定義する。ビットとは０又は１を表す情報の単位である。また、０又は１を表す情報そのものをビットとよぶ。ビット列とは０個以上のビットの集合である。ビットストリームとはビット列の集合である。
【００４３】
本実施形態でのプロセッサは、ビットストリーム・ポインタ、ビットストリーム・バッファ、ビットストリーム・カウンタ、ビットストリーム・ディレクション、ビットストリーム・バイトオーダ、制御手段を備えている。なお、ビットストリーム・ディレクションやビットストリーム・バイトオーダを省いても本発明を実現することは可能である。
【００４４】
ビットストリーム・ポインタは、ビットストリームの先頭アドレスを格納する手段である。格納されるアドレスの単位はビットである。ビットストリーム・バッファは、ビット列を一時的に格納する手段である。ビットストリーム・カウンタはビットストリーム・バッファに格納されたビットの数を格納する手段である。
【００４５】
ビットストリーム・ディレクションは、制御手段の動作を決定する情報を格納する手段である。ビットストリーム・バイトオーダは、メモリ上のビットストリームのバイト順序を表す情報を格納する手段である。制御手段は、ビットストリーム・ポインタ、ビットストリーム・バッファ、ビットストリーム・カウンタを制御する手段である。
【００４６】
ビットストリーム・ディレクションに格納された情報と、指定されたビット列の長さと、指定されたレジスタとに基づいて、制御手段は次の二つの処理のいずれかを実行する。
１．  ビットストリーム・ポインタで示されるアドレスから始まる指定された長さのビット列を、指定されたプロセッサのレジスタへ格納する。
２．  指定された長さのビット列を指定されたレジスタから取り出し、ビットストリーム・ポインタで示されるアドレスへ格納する。
【００４７】
以下、本発明の詳細を図面に基づいて説明する。
図１に示すプロセッサは、ビットストリーム・ポインタ１０、ビットストリーム・バッファ２０、ビットストリーム・カウンタ３０、ビットストリーム・ディレクション４０、ビットストリーム・バイトオーダ５０、制御手段６０を備えている。
【００４８】
位置記憶手段としてのビットストリーム・ポインタ１０は、ビットストリームの先頭アドレスを格納する手段である。格納されるアドレスの単位はビットである。ビット列記憶手段としてのビットストリーム・バッファ２０は、ビット列を一時的に格納する手段である。
【００４９】
ビット数記憶手段としてのビットストリーム・カウンタ３０は、ビットストリーム・バッファ２０に格納されたビットの数を格納する手段である。ビットストリーム・ディレクション４０は、制御手段６０の動作を決定する情報を格納する手段である。
【００５０】
ビットストリーム・バイトオーダ５０は、後述のメモリ７０上のビットストリームのバイト順序を表す情報を格納する手段である。制御手段６０は、ビットストリーム・ポインタ１０、ビットストリーム・バッファ２０、ビットストリーム・カウンタ３０を制御する手段である。
【００５１】
なお、図１に示すプロセッサでは、ビットストリーム・ポインタ１０、ビットストリーム・バッファ２０、ビットストリーム・カウンタ３０、ビットストリーム・ディレクション４０、ビットストリーム・バイトオーダ５０、制御手段６０を備えた場合について説明したが、ビットストリーム・ディレクション４０やビットストリーム・バイトオーダ５０を省いても本発明を実現することは可能である。
【００５２】
次に、制御手段６０によって実行される後述のメモリ７０から後述のレジスタＲへのビット列の読み込み処理、及びレジスタＲからメモリ７０へのビット列の書き込み処理の概要について説明する。
【００５３】
まず、制御手段６０によって読み込み処理又は書き込み処理が実行される前に、初期化処理が行われる。ここで、制御手段６０による初期化処理を要約すると次のようになる。なお、初期化処理はオペレーターが記述した初期化プログラムによって実行される。
【００５４】
１．  初期化プログラムはビットストリーム・ディレクション４０に「制御手段６０が後述のメモリ７０からビット列を読み込むことを表す信号」か「制御手段６０がビット列をメモリ７０へ書き込むことを表す信号」のどちらかを格納する。
２．  初期化プログラムはビットストリーム・バイトオーダ５０に「制御手段６０がビット列のバイト順序を逆順にすることを表す信号」か「制御手段６０がビット列のバイト順序を変えないことを表す信号」のどちらかを格納する。
３．  初期化プログラムはビットストリーム・ポインタ１０にビットストリームの先頭アドレスを格納する。
４．  初期化プログラムは制御手段６０にビットストリーム・カウンタ３０をクリアさせる。
５．  もしビットストリーム・ディレクション４０に「制御手段６０がメモリ７０からビット列を読み込むことを表す信号」が格納されるならば、制御手段６０は「メモリ７０からビットストリーム・バッファ２０への読み込み処理」を行う。
【００５５】
次に、後述のメモリ７０からビットストリーム・バッファ２０への読み込み処理について説明する。処理の流れを、図２、図３、図４、図５に示す。
【００５６】
まず、制御手段６０は、上述した初期化に従って初期化した後、図２に示すように、後述のメモリ７０からビット列を読み込む処理（ステップＳ２０）と、メモリ７０から読み出したビット列のバイト順を変換する処理（ステップＳ２１）と、バイト順変換処理後のビット列をビットストリーム・バッファ２０へ格納する処理（ステップＳ２２）とを行う。
【００５７】
具体的には、図３に示すように、ビットストリーム・ポインタ１０とビットストリーム・カウンタ３０との和で表されるビットアドレスからビット列を読み込み、その読み込んだビット列のバイト順を適切に変換し、そのビット列をビットストリーム・バッファ２０へ格納する（ステップＳ３０〜３３）。
【００５８】
ここで、読み込んだビット列のバイト順を適切に変換する場合と、そのビット列をビットストリーム・バッファ２０へ格納する場合の具体例は、次の通りである。
まず、そのビット列をビットストリーム・バッファ２０へ格納する場合を、図５により説明する。
【００５９】
ビット列を格納する位置は、ビットストリーム・カウンタ３０によって表される。ビットストリーム・カウンタ３０に格納された値をビットストリーム・バッファ２０内の位置を表すインデックスとして使用する。ビットストリーム・バッファ２０のＭＳＢ（most significant bit）のインデックスは０で、ＬＳＢ（least significant bit）に向かってインデックスが増加する。
【００６０】
ビット列はビットストリーム・カウンタ３０で指定された位置からＬＳＢへ向かって格納される。もしビットストリーム・カウンタ３０＝０ならビットストリーム・バッファ２０のＭＳＢから、もしビットストリーム・カウンタ３０＝１ならビットストリーム・バッファ２０のＭＳＢの１ビット隣のビットから、それぞれビット列を格納する。
【００６１】
次に、読み込んだビット列のバイト順を適切に変換する場合を、図４より説明する。
まず、制御手段６０はメモリ７０から読み出したビット列を８ビット単位に分割する。分割された８ビット単位のデータを制御手段６０がビットストリーム・バッファ２０へ書き込む順番は、
（１）元のビット列のＭＳＢ側にある８ビットから順に書き込む、
（２）元のビット列のＬＳＢ側にある８ビットから順に書き込む、
のいずれかである。
【００６２】
もしビットストリーム・バイトオーダ５０に「制御手段６０がビット列のバイト順序を逆順にすることを表す信号」が格納されているなら、制御手段６０は「（１）元のビット列のＭＳＢ側にある８ビットから順に書き込む」を選択する。
【００６３】
この場合、制御手段６０はビット列内の８ビット単位の順序を逆にする。つまり、ＭＳＢ側にある８ビットとそれに対応するＬＳＢ側の８ビットの位置を入れ換える。ただし、８ビットの中にあるビットの位置は変化しない。
【００６４】
もしビットストリーム・バイトオーダ５０に「制御手段６０がビット列のバイト順序を変えないことを表す信号」が格納されているなら、制御手段６０は「（２）元のビット列のＬＳＢ側にある８ビットから順に書き込む」を選択する。この場合、制御手段６０はビット列内の８ビット単位の順序を入れ換えない。
【００６５】
次に、メモリ７０上のビット列をプロセッサのレジスタＲへ読み込む処理について説明する。ここで、読み込むビット列の長さをＢとする。読み込んだビット列はレジスタＲへ格納されることにする。
【００６６】
まず、上述した初期化に従って、初期化する。ビットストリーム・ディレクション４０に「制御手段６０がメモリ７０からビット列を読み込むことを表す信号」を格納する。ビットストリーム・ポインタ１０にメモリ７０にあるビットストリームの先頭アドレスを格納する。メモリ７０からレジスタＲへＢビットを読み込む処理は以下のように実行される。
【００６７】
処理の流れを、図６に示す。
まず、もしビットストリーム・カウンタ３０よりもビット数Ｂが大きいならば（ステップＳ６０）、制御手段６０は「メモリ７０からビットストリーム・バッファ２０への読み込み処理」を行う（ステップＳ６１）。
【００６８】
そして、制御手段６０はビットストリーム・バッファ２０のＭＳＢからＢビットのビット列を取り出し（ステップＳ６２）、指定されたレジスタＲをＢビットだけＭＳＢ方向へシフトし（ステップＳ６３）、取り出したビット列をレジスタＲのＬＳＢ側のＢビットへ代入する（ステップＳ６４）。
【００６９】
次いで、ビットストリーム・バッファ２０をＢビットだけＬＳＢからＭＳＢに向かってシフトし（ステップＳ６５）、ビットストリーム・ポインタ１０へＢを加算し（ステップＳ６６）、ビットストリーム・カウンタ３０からＢを減算する（ステップＳ６７）。
【００７０】
次に、プロセッサのレジスタＲにあるビット列をメモリ７０へ書き込む処理について説明する。ここで、読み込むビット列の長さをＢとする。読み込んだビット列はレジスタＲへ格納されることにする。
【００７１】
まず、上述した初期処理化に従い、初期化する。ビットストリーム・ディレクション４０に「制御手段６０がビット列をメモリ７０へ書き込むことを表す信号」を格納する。ビットストリーム・ポインタ１０にビット列を格納する先頭アドレスを格納する。レジスタＲからメモリ７０へＢビットを書き込む処理は以下のように実行される。
【００７２】
処理の流れを、図７に示す。
まず、もしビットストリーム・バッファ２０のサイズからビットストリーム・カウンタ３０に格納された値を引いた結果がビット列の長さＢよりも小さいならば（ステップＳ７０）、「ビットストリーム・バッファ２０からメモリ７０への書き出し処理」を行い（ステップＳ７１）、制御手段６０はレジスタＲのＬＳＢから始まる長さＢのビット列を読み込む（ステップＳ７２）。
【００７３】
次いで、制御手段６０はレジスタＲから読み込んだビット列をビットストリーム・バッファ２０へ格納する（ステップＳ７３）。ビット列を格納する位置は、図８に示すように、ビットストリーム・カウンタ３０によって表される。ビットストリーム・カウンタ３０に格納された値をビットストリーム・バッファ２０内の位置を表すインデックスとして使用する。ビットストリーム・バッファ２０のＭＳＢのインデックスは０で、ＬＳＢに向かってインデックスが増加する。ビット列はビットストリーム・カウンタ３０で指定された位置からＬＳＢへ向かって格納される。そして、制御手段６０はレジスタＲから読み込んだビット列の長さＢをビットストリーム・カウンタ３０へ加算する（ステップＳ７４）。
【００７４】
次に、ビットストリーム・バッファ２０からメモリ７０への書き出し処理について、図９、図１０、図１１、図１２、図１３により説明する。
【００７５】
まず、制御手段６０は、図９に示すように、ビットストリームバッファ・バッファ２０のＭＳＢ側にあるビット列を取り出す（ステップＳ９０）。ここで、ビットストリームバッファ・バッファ２０のＭＳＢ側にあるビット列を取り出す場合の例は、図１０に示す通りである。ここで、ビット列を取り出す場合、ビット列の長さは、８の倍数である３２や６４等が好ましい。
【００７６】
そして、取り出したビット列のバイト順を適切に変換してから（ステップＳ９１）、そのビット列をビットストリーム・ポインタ１０が示すアドレスへ書き込む（ステップＳ９２）。ここで、取り出したビット列のバイト順を適切に変換する場合の例は図１１に示す通りであり、そのビット列をビットストリーム・ポインタ１０が示すアドレスへ書き込む場合の例は図１２に示す通りである。
【００７７】
さらに、書き込まれたビット列の長さをビットストリーム・ポインタ１０へ加算し、書き込まれたビット列の長さをビットストリーム・カウンタ３０から減算することによる更新の処理を行い（ステップＳ９３）、書き込まれたビット列の長さだけビットストリーム・バッファ２０をＬＳＢからＭＳＢ方向へシフトする（ステップＳ９４）。ここで、書き込まれたビット列の長さだけビットストリーム・バッファ２０をＬＳＢからＭＳＢ方向へシフトする場合の例は図１３に示す通りである。つまり、読み込んだビット列の長さ（たとえば３２や６４）だけ、ビットストリーム・バッファ２０をＭＳＢ方向へシフトする。
【００７８】
次に、図１１に示した「ビットストリーム・バッファ２０から取り出したビット列のバイト順を変換する処理」について説明する。制御手段６０は、ビットストリーム・バッファ２０から取り出したビット列を８ビット単位に分割する。
【００７９】
分割された８ビット単位のデータを制御手段６０がメモリ７０へ書き込む順番は、
（１）  元のビット列のＭＳＢ側にある８ビットから順に書き込む、
（２）  元のビット列のＬＳＢ側にある８ビットから順に書き込む、
のいずれかである。
【００８０】
もしビットストリーム・バイトオーダ５０に「制御手段６０がビット列のバイト順序を逆順にすることを表す信号」が格納されているなら、制御手段６０は「（１）元のビット列のＭＳＢ側にある８ビットから順に書き込む」を選択する。
【００８１】
この場合、制御手段６０はビット列内の８ビット単位の順序を逆にする。つまり、ＭＳＢ側にある８ビットとそれに対応するＬＳＢ側の８ビットの位置を入れ換える。ただし、８ビットの中にあるビットの位置は変化しない。
【００８２】
もしビットストリーム・バイトオーダ５０に「制御手段６０がビット列のバイト順序を変えないことを表す信号」が格納されているなら、制御手段６０は「（２）元のビット列のＬＳＢ側にある８ビットから順に書き込む」を選択する。この場合、制御手段６０はビット列内の８ビット単位の順序を入れ換えない。
【００８３】
（実施例）
次に、実施例について説明する。
本実施例における構成要素を以下に示す。
ビットストリーム・ポインタ１０は３５ビットのレジスタＲである。ビット単位のアドレスがこのレジスタＲに格納される。
【００８４】
ビットストリーム・バッファ２０は６４ビットのレジスタＲである。メモリ７０から読み込んだビット列、あるいはメモリ７０へ書き込むビット列がこのレジスタＲへ格納される。ビットストリーム・カウンタ３０は６ビットのレジスタＲである。ビットストリーム・ディレクション４０は１ビットのレジスタＲである。
【００８５】
「制御手段６０がメモリ７０からビット列を読み込むことを表す信号」は０であり、「制御手段６０がビット列をメモリ７０へ書き込むことを表す信号」は１である。ビットストリーム・バイトオーダ５０は１ビットのレジスタＲである。
【００８６】
「制御手段６０がビット列のバイト順序を逆順にすることを表す信号」は０であり、「制御手段６０がビット列のバイト順序を変えないことを表す信号」は１である。制御手段６０は回路である。
【００８７】
本実施例では、ビットストリーム・バッファ２０のサイズを６４ビットとしたが、もっと大きなサイズにすることもできる。ビットストリーム・バッファ２０のサイズを大きくすれば、メモリ７０から一度に読み込むデータのサイズを大きくできるし、メモリ７０へ一度に書き込むデータのサイズも大きくできる。したがって、メモリアクセスの回数を減らすことができる。メモリアクセスの回数を減らすことによって、メモリアクセスの際の処理遅延を減らすことができる。
【００８８】
次に、メモリ７０上のビット列をプロセッサへ読み込む処理について説明する。
読み込むビット列の長さをＢ１＝５とする。読み込むビット列の長さをＢ２＝２８とする。読み込んだビット列はレジスタＲへ格納されることにする。
【００８９】
メモリ７０上のビット列をプロセッサのレジスタＲへ読み込む処理を行う場合、次のように初期化する。
１．  ビットストリーム・ディレクション４０に「制御手段６０がメモリ７０からビット列を読み込むことを表す信号」＝０を格納する。
２．  ビットストリーム・バイトオーダ５０に「制御手段６０がビット列のバイト順序を逆順にすることを表す信号」＝０を格納する。
３．  ビットストリーム・ポインタ１０にビットストリームの先頭アドレス＝０ｘ８００００を格納する。
４．  制御手段６０はビットストリーム・カウンタ３０をクリアする。
５．  ビットストリーム・ディレクション４０に「制御手段６０がメモリ７０からビット列を読み込むことを表す信号」＝０が格納されるので、制御手段６０は「メモリ７０からビットストリーム・バッファ２０への読み込み処理」を行う。
【００９０】
メモリ７０からビットストリーム・バッファ２０への読み込み処理の詳細を以下に示す。
ａ．  制御手段６０はビットストリーム・ポインタ１０とビットストリーム・カウンタ３０との和で表されるアドレスからビット列を読み込む。この時点で、ビットストリーム・ポインタ１０＝０ｘ８００００、ビットストリーム・カウンタ３０＝０である。したがって、０ｘ８００００＋０＝０ｘ８００００となって、アドレス０ｘ８００００からビット列を読み込む。
【００９１】
アドレス０ｘ８００００はビット単位のアドレスなので、これをバイト単位のアドレスへ変換する。変換したアドレスは０ｘ１００００である。本実施例では、「メモリ７０からビットストリーム・バッファ２０への読み込み処理」において読み込むビット列の長さを３２ビットとする。つまり、制御手段６０はアドレス０ｘ１００００からアドレス０ｘ１０００３までの３２ビットを読み込む。
【００９２】
ｂ．  次に、読み込んだビット列のバイト順を適切に変換する。バイト順の変換方法は「メモリ７０から読み出したビット列のバイト順を変換する処理」に従う。本実施例では、ビットストリーム・バイトオーダ５０に「制御手段６０がビット列のバイト順序を逆順にすることを表す信号」＝０が格納されているので、制御手段６０は読み込んだビット列のバイト順を逆にする。
【００９３】
ｃ．  次に、バイト順を適切に変換したビット列をビットストリーム・バッファ２０へ格納する。この時点では、ビットストリーム・カウンタ３０＝０なので、ビットストリーム・バッファ２０のＭＳＢからＬＳＢ方向へ向かってビット列のＭＳＢから順に格納される。
【００９４】
本実施例では、ビットストリーム・バッファ２０のサイズが６４ビットで、ビットストリーム・バッファ２０へ一度に読み込むビット列の長さが３２ビットなので、ビットストリーム・バッファ２０のビット６３にビット列のビット３１が、ビットストリーム・バッファ２０のビット６２にビット列のビット３０が、ビットストリーム・バッファ２０のビット６１にビット列のビット３０が、．．．、ビットストリーム・バッファ２０のビット３３にビット列のビット１が、ビットストリーム・バッファ２０のビット３２にビット列のビット０が、というようにそれぞれ格納される。
【００９５】
ｄ．  次に、読み込んだビット列の長さをビットストリーム・カウンタ３０へ加算する。本実施例では、読み込んだビット列の長さは３２ビットなので、３２をビットストリーム・カウンタ３０へ加算する。加算後、ビットストリーム・カウンタ３０は３２になる。
【００９６】
メモリ７０からレジスタＲへＢ１＝５ビットを読み込む処理は次のように実行される。
１．  もしビットストリーム・カウンタ３０よりもビット数Ｂ１が大きいならば、制御手段６０は「メモリ７０からビットストリーム・バッファ２０への読み込み処理」を行う。この時点では、ビットストリーム・カウンタ３０＝３２で、ビット数Ｂ１＝５なので、制御手段６０は「メモリ７０からビットストリーム・バッファ２０への読み込み処理」を行わない。
【００９７】
２．  制御手段６０はビットストリーム・バッファ２０のＭＳＢからＢ１＝５ビットのビット列を取り出す。指定されたレジスタＲをＢ１＝５ビットだけＭＳＢ方向へシフトしてから、取り出したビット列を指定されたレジスタＲのＬＳＢ側のＢ１＝５ビットへ代入する。つまり、取り出したビット列のビット４をレジスタＲのビット４へ、取り出したビット列のビット３をレジスタＲのビット３へ、取り出したビット列のビット２をレジスタＲのビット２へ、取り出したビット列のビット１をレジスタＲのビット１へ、取り出したビット列のビット０をレジスタＲのビット０へ、それぞれ格納する。
【００９８】
３．  ビットストリーム・バッファ２０をＢ１＝５ビットだけＬＳＢからＭＳＢに向かってシフトする。
【００９９】
４．  ビットストリーム・ポインタ１０へＢ１＝５を加算する。ビットストリーム・ポインタ１０＝０ｘ８０００５となる。
【０１００】
５．  ビットストリーム・カウンタ３０からＢ１＝５を減算する。ビットストリーム・カウンタ３０＝２７となる。
【０１０１】
続いて、Ｂ２＝２８ビットのビット列をメモリ７０からレジスタＲへ読み込む処理は次のようにして実行される。
１．  もしビットストリーム・カウンタ３０よりもビット数Ｂ２が大きいならば、制御手段６０は「メモリ７０からビットストリーム・バッファ２０への読み込み処理」を行う。この時点では、ビットストリーム・カウンタ３０＝２７で、ビット数Ｂ２＝２８なので、制御手段６０は「メモリ７０からビットストリーム・バッファ２０への読み込み処理」を行う。
【０１０２】
「メモリ７０からビットストリーム・バッファ２０への読み込み処理」の詳細を次に示す。
ａ．  制御手段６０はビットストリーム・ポインタ１０とビットストリーム・カウンタ３０との和で表されるアドレスからビット列を読み込む。この時点で、ビットストリーム・ポインタ１０＝０ｘ８０００５、ビットストリーム・カウンタ３０＝２７である。
【０１０３】
したがって、０ｘ８０００５＋２７＝０ｘ８００２０となって、アドレス０ｘ８００２０からビット列を読み込む。アドレス０ｘ８００２０はビット単位のアドレスなので、これをバイト単位のアドレスへ変換する。変換したアドレスは０ｘ１０００４である。本実施例では、「メモリ７０からビットストリーム・バッファ２０への読み込み処理」において読み込むビット列の長さを３２ビットとする。つまり、制御手段６０はアドレス０ｘ１０００４からアドレス０ｘ１０００７までの３２ビットを読み込む。
【０１０４】
ｂ．  次に、読み込んだビット列のバイト順を適切に変換する。バイト順の変換方法は「メモリ７０から読み出したビット列のバイト順を変換する処理」に従う。本実施例では、ビットストリーム・バイトオーダ５０に「制御手段６０がビット列のバイト順序を逆順にすることを表す信号」＝０が格納されているので、制御手段６０は読み込んだビット列のバイト順を逆にする。
【０１０５】
ｃ．  次に、バイト順を適切に変換したビット列をビットストリーム・バッファ２０へ格納する。この時点ではビットストリーム・カウンタ３０＝２７なので、ビットストリーム・バッファ２０のＭＳＢから数えて２７番目のビットからＬＳＢ方向へ向かって、ビット列のＭＳＢから順に格納される。ただし、ビットストリーム・バッファ２０のＭＳＢを０番目とする。本実施例では、ビットストリーム・バッファ２０のサイズが６４ビットで、ビットストリーム・バッファ２０へ一度に読み込むビット列の長さが３２ビットなので、ビットストリーム・バッファ２０のビット３６にビット列のビット３１が、ビットストリーム・バッファ２０のビット３５にビット列のビット３０が、ビットストリーム・バッファ２０のビット３４にビット列のビット２９が、．．．、ビットストリーム・バッファ２０のビット６にビット列のビット１が、ビットストリーム・バッファ２０のビット５にビット列のビット０が、というようににそれぞれ格納される。
【０１０６】
ｄ．  次に、読み込んだビット列の長さをビットストリーム・カウンタ３０へ加算する。  本実施例では、読み込んだビット列の長さは３２ビットなので、３２をビットストリーム・カウンタ３０へ加算する。加算後、ビットストリーム・カウンタ３０は５９になる。
【０１０７】
２．  制御手段６０はビットストリーム・バッファ２０のＭＳＢからＢ２＝２８ビットのビット列を取り出す。指定されたレジスタＲをＢ２＝２８ビットだけＭＳＢ方向へシフトしてから、取り出したビット列を指定されたレジスタＲのＬＳＢ側のＢ２＝２８ビットへ代入する。つまり、取り出したビット列のビット２７をレジスタＲのビット２７へ、取り出したビット列のビット２６をレジスタＲのビット２６へ、取り出したビット列のビット２５をレジスタＲのビット２５へ、．．．、取り出したビット列のビット１をレジスタＲのビット１へ、取り出したビット列のビット０をレジスタＲのビット０へ、それぞれ格納する。
【０１０８】
３．  ビットストリーム・バッファ２０をＢ２＝２８ビットだけＬＳＢからＭＳＢに向かってシフトする。
【０１０９】
４．  ビットストリーム・ポインタ１０へＢ２＝２８を加算する。ビットストリーム・ポインタ１０＝０ｘ８００２１となる。
【０１１０】
５．  ビットストリーム・カウンタ３０からＢ２＝２８を減算する。ビットストリーム・カウンタ３０＝３１となる。
【０１１１】
次に、プロセッサのレジスタＲにあるビット列をメモリ７０へ書き込む処理について説明する。ビット列はレジスタＲ１、Ｒ２、Ｒ３のＬＳＢ側に格納されていることにする。
【０１１２】
レジスタＲ１に格納されているビット列の長さをＢ１＝１７ビット、レジスタＲ２に格納されているビット列の長さをＢ２＝１９ビットとする。レジスタＲ３に格納されているビット列の長さをＢ３＝２９ビットとする。
【０１１３】
プロセッサのレジスタＲにあるビット列をメモリ７０へ書き込む処理を行う場合、次のように初期化する。
【０１１４】
１．  ビットストリーム・ディレクション４０に「制御手段６０がビット列をメモリ７０へ書き込むことを表す信号」＝１を格納する。
【０１１５】
２．  ビットストリーム・バイトオーダ５０に「制御手段６０がビット列のバイト順序を逆順にすることを表す信号」＝０を格納する。
【０１１６】
３．  ビットストリーム・ポインタ１０にビットストリームの書き込み先頭アドレス＝０ｘ９００００を格納する。
【０１１７】
４．  制御手段６０はビットストリーム・カウンタ３０をクリアする。
【０１１８】
５．  ビットストリーム・ディレクション４０に「制御手段６０がメモリ７０からビット列を読み込むことを表す信号」＝０が格納されないので、制御手段６０は「メモリ７０からビットストリーム・バッファ２０への読み込み処理」を行わない。
【０１１９】
次に、レジスタＲ１からメモリ７０へＢ１＝１７ビットを書き込む処理は次のようにして実行される。
【０１２０】
１．  もしビットストリーム・バッファ２０のサイズからビットストリーム・カウンタ３０に格納された値を引いた結果がビット列の長さＢ１よりも小さいならば、「ビットストリーム・バッファ２０からメモリ７０への書き出し処理」を行う。この時点では、ビットストリーム・バッファ２０のサイズ＝６４ビット、ビットストリーム・カウンタ３０＝０、ビット数Ｂ１＝１７なので、条件は満たされない。したがって「ビットストリーム・バッファ２０からメモリ７０への書き出し処理」を行わない。
【０１２１】
２．  制御手段６０はレジスタＲ１に格納された長さＢ１＝１７のビット列をビットストリーム・バッファ２０へ格納する。ビット列を格納する位置はビットストリーム・カウンタ３０によって表され、ビットストリーム・カウンタ３０で指定された位置からＬＳＢへ向かってビット列は格納される。つまり、ビットストリーム・バッファ２０のビット６３にビット列のビット１６が、ビットストリーム・バッファ２０のビット６２にビット列のビット１５が、ビットストリーム・バッファ２０のビット６１にビット列のビット１４が、．．．、ビットストリーム・バッファ２０のビット４８にビット列のビット１が、ビットストリーム・バッファ２０のビット４７にビット列のビット０が、それぞれ格納される。
【０１２２】
３．  次に、ビット列の長さＢ１＝１７をビットストリーム・カウンタ３０へ加算する。加算後、ビットストリーム・カウンタ３０は１７になる。
【０１２３】
Ｂ１＝１７ビットをメモリ７０へ書き込む処理に続いて、レジスタＲ２からメモリ７０へＢ２＝１９ビットを書き込む処理は以下のように実行される。
【０１２４】
１．  もしビットストリーム・バッファ２０のサイズからビットストリーム・カウンタ３０に格納された値を引いた結果がビット列の長さＢ２よりも小さいならば、「ビットストリーム・バッファ２０からメモリ７０への書き出し処理」を行う。
【０１２５】
この時点では、ビットストリーム・バッファ２０のサイズ＝６４ビット、ビットストリーム・カウンタ３０＝１７、ビット数Ｂ２＝１９なので、条件は満たされない。したがって「ビットストリーム・バッファ２０からメモリ７０への書き出し処理」を行わない。
【０１２６】
２．  制御手段６０はレジスタＲ２に格納された長さＢ２＝１９のビット列をビットストリーム・バッファ２０へ格納する。ビット列を格納する位置はビットストリーム・カウンタ３０によって表され、ビットストリーム・カウンタ３０で指定された位置からＬＳＢへ向かってビット列は格納される。つまり、ビットストリーム・バッファ２０のビット５６にビット列のビット１８が、ビットストリーム・バッファ２０のビット５５にビット列のビット１７が、ビットストリーム・バッファ２０のビット５４にビット列のビット１６が、．．．、ビットストリーム・バッファ２０のビット３９にビット列のビット１が、ビットストリーム・バッファ２０のビット３８にビット列のビット０が、それぞれ格納される。
【０１２７】
３．  次に、ビット列の長さＢ２＝１９をビットストリーム・カウンタ３０へ加算する。加算後、ビットストリーム・カウンタ３０は３６になる。
【０１２８】
Ｂ２＝１９ビットをメモリ７０へ書き込む処理に続いて、レジスタＲ３からメモリ７０へＢ３＝２９ビットを書き込む処理は次のようにして実行される。
【０１２９】
１．  もしビットストリーム・バッファ２０のサイズからビットストリーム・カウンタ３０に格納された値を引いた結果がビット列の長さＢ３よりも小さいならば、「ビットストリーム・バッファ２０からメモリ７０への書き出し処理」を行う。この時点では、ビットストリーム・バッファ２０のサイズ＝６４ビット、ビットストリーム・カウンタ３０＝３６、ビット数Ｂ３＝２９なので、条件は満たされる。したがって「ビットストリーム・バッファ２０からメモリ７０への書き出し処理」を行う。
【０１３０】
ビットストリーム・バッファ２０からメモリ７０への書き出し処理の詳細を次に示す。
ａ．  制御手段６０はビットストリーム・バッファ２０のＭＳＢ側にあるビット列を取り出す。本実施例では、ビットストリーム・バッファ２０から取り出すビット列の長さを３２ビットとする。
【０１３１】
ｂ．  次に、取り出したビット列のバイト順を適切に変換する。バイト順の変換方法は「ビットストリーム・バッファ２０から取り出したビット列のバイト順を変換する処理」に従う。本実施例では、ビットストリーム・バイトオーダ５０に「制御手段６０がビット列のバイト順序を逆順にすることを表す信号」＝０が格納されているので、制御手段６０は取り出したビット列のバイト順を逆にする。
【０１３２】
ｃ．  次に、バイト順を適切に変換したビット列をビットストリーム・ポインタ１０が示すアドレスへ書き込む。この時点で、ビットストリーム・ポインタ１０は０ｘ９００００である。０ｘ９００００はビット単位のアドレスなので、これをバイト単位のアドレスへ変換する。変換したアドレスは０ｘ１２０００である。つまり、制御手段６０はアドレス０ｘ１２０００からアドレス０ｘ１２００３までの３２ビットへバイト順を変換したビット列を書き込む。
【０１３３】
ｄ．  次に、制御手段６０は書き込まれたビット列の長さをビットストリーム・ポインタ１０へ加算する、この時点で、メモリ７０へ書き込んだビット列の長さは３２ビットなので、ビットストリーム・ポインタ１０へ３２を加算する。
【０１３４】
ｅ．  次に、メモリ７０へ書き込んだビット列の長さをビットストリーム・カウンタ３０から減算する、この時点で、メモリ７０へ書き込んだビット列の長さは３２ビットなので、ビットストリーム・カウンタ３０から３２を減算する。減算後、ビットストリーム・カウンタ３０は４になる。
【０１３５】
ｆ．  次に、書き込まれたビット列の長さだけビットストリーム・バッファ２０をＬＳＢからＭＳＢ方向へシフトする。この時点で、メモリ７０へ書き込んだビット列の長さは３２ビットなので、ビットストリーム・バッファ２０をＬＳＢからＭＳＢ方向へ３２ビットシフトする。
【０１３６】
２．  制御手段６０はレジスタＲ２に格納された長さＢ３＝２９のビット列をビットストリーム・バッファ２０へ格納する。ビット列を格納する位置はビットストリーム・カウンタ３０によって表され、ビットストリーム・カウンタ３０で指定された位置からＬＳＢへ向かってビット列は格納される。つまり、ビットストリーム・バッファ２０のビット５９にビット列のビット２８が、ビットストリーム・バッファ２０のビット５８にビット列のビット２７が、ビットストリーム・バッファ２０のビット５７にビット列のビット２６が、．．．、ビットストリーム・バッファ２０のビット３２にビット列のビット１が、ビットストリーム・バッファ２０のビット３１にビット列のビット０が、それぞれ格納される。
【０１３７】
３．  次に、ビット列の長さＢ３＝２９をビットストリーム・カウンタ３０へ加算する。加算後、ビットストリーム・カウンタ３０は３３になる。
【０１３８】
このように、本実施形態では、制御手段６０が、読み込み処理のときに、ビットストリーム・ポインタ１０に記憶されたメモリ７０上の基準位置、及び、ビットストリーム・カウンタ３０に記憶されたビット列データのビット数に基づいて、ビットストリーム・バッファ２０に記憶されたビット列データを介し、メモリ７０上に格納されている読み込みデータをレジスタＲへ格納し、書き込み処理のときに、ビットストリーム・ポインタ１０に記憶されたメモリ７０上の基準位置、及び、ビットストリーム・カウンタ３０に記憶されたビット列データのビット数に基づいて、ビットストリーム・バッファ２０に記憶されたビット列データを介し、レジスタＲに格納されている書き込みデータをメモリ７０に格納することができる。
【０１３９】
これにより、メモリ７０上のビット列を効率良くレジスタＲへ読み込んだり、レジスタＲ内のビット列をメモリ７０へ効率良く書き込むことができる。また、メモリ７０からプロセッサのレジスタＲへビット列を読み込む処理、及び、プロセッサのレジスタＲからメモリ７０へビット列を書き込む処理を、それぞれ一つの命令で実行することできる。
【産業上の利用可能性】
【０１４０】
映像や音楽のデータの符号化装置や復号化装置に適用できる。また、映像や音楽に関わらず、可変長符号を使ってデータを圧縮・解凍するシステムにも適用できる。
【図面の簡単な説明】
【０１４１】
【図１】本発明のプロセッサの構成を示す図である。
【図２】図１のプロセッサにおけるメモリからビットストリーム・バッファへの読み込み処理を説明するための図である。
【図３】図２におけるメモリからビット列を読み込む処理を示す図である。
【図４】図２におけるメモリから読み出したビット列のバイト順を変換する処理を示す図である。
【図５】図２におけるバイト順変換処理後のビット列をビットストリーム・バッファへ格納する処理を示す図である。
【図６】図１のプロセッサにおけるメモリ上のビット列をプロセッサのレジスタへ読み込む処理を示す図である。
【図７】図１のプロセッサにおいてプロセッサのレジスタにあるビット列をメモリへ書き込む処理を示す図である。
【図８】図７におけるレジスタのＬＳＢから始まる下位Ｂビットを読み込む処理を示す図である。
【図９】図７におけるビットストリーム・バッファからメモリへの書き出し処理を示す図である。
【図１０】図９におけるビットストリーム・バッファからビット列を読み込む処理を示す図である。
【図１１】図９におけるビットストリーム・バッファから読み出したビット列のバイト順を変換する処理を示す図である。
【図１２】図９におけるバイト順変換処理後のビット列をメモリへ格納する処理を示す図である。
【図１３】図９における読み込んだビット列の長さだけビットストリーム・バッファをＭＳＢ方向へシフトする処理を示す図である。
【符号の説明】
【０１４２】
１０  ビットストリーム・ポインタ
２０  ビットストリーム・バッファ
３０  ビットストリーム・カウンタ
４０  ビットストリーム・ディレクション
５０  ビットストリーム・バイトオーダ
６０  制御手段
７０  メモリ
Ｒ  レジスタ
【図１】
2006011822.tif 000003
【図２】
2006011822.tif 000004
【図３】
2006011822.tif 000005
【図４】
2006011822.tif 000006
【図５】
2006011822.tif 000007
【図６】
2006011822.tif 000008
【図７】
2006011822.tif 000009
【図８】
2006011822.tif 000010
【図９】
2006011822.tif 000011
【図１０】
2006011822.tif 000012
【図１１】
2006011822.tif 000013
【図１２】
2006011822.tif 000014
【図１３】
2006011822.tif 000015