(57)【要約】【課題】ＶＬＩＷ型プロセッサにおけるリピート命令に伴う過渡処理を動的に行う。【解決手段】命令保持部１２１は、命令供給部１１０から供給されたＶＬＩＷ命令を一旦保持する。命令解読部１２２は、命令保持部１２１に保持された４つの命令を解読（デコード）する。発行タイミング制御部１２３は、解読された命令を実行部１３０に発行する際、レイテンシ設定レジスタ１２６に設定されているレイテンシに相当するタイミングだけずらして発行する。オペランド変換部１２４は、各命令に含まれるオペランドアドレスを、レイテンシ設定レジスタ１２６に設定されたレイテンシに応じて変換する。デコード制御部１２９は、リピート回数設定レジスタ１２５に設定されたリピート回数に応じて命令保持部１２１に命令を保持し、レイテンシ設定レジスタ１２６に設定されたレイテンシに応じて各命令の発行タイミングを決定する。【選択図】図２
2011090592.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令を１組の命令群として供給する命令供給部と、
前記複数の命令に対応する複数の実行処理を並列に繰り返し実行する実行部と、
所定のレイテンシに従って遅延したタイミングにより前記複数の実行処理が実行されるよう前記実行部に対する命令の発行タイミングを制御する発行タイミング制御部と、
前記実行部における実行の繰り返しの度に前記命令のオペランドレジスタアドレスを所定の増分値に従って変換するオペランド変換部と
を具備する情報処理装置。
【請求項２】
前記オペランド変換部は、前記オペランドレジスタアドレスを変換する際には前記レイテンシに従って前記オペランドレジスタアドレスを循環させる請求項１記載の情報処理装置。
【請求項３】
前記オペランド変換部は、前記オペランドレジスタアドレスを変換する際には前記増分値に従って前記オペランドレジスタアドレスを加算または減算した後に前記レイテンシによる剰余を算出することにより前記循環を行う請求項２記載の情報処理装置。
【請求項４】
前記オペランド変換部は、ワード単位に付与された前記オペランドレジスタアドレスに対してハーフワードを識別する情報を付してハーフワード単位で前記オペランドレジスタアドレスを変換する請求項１記載の情報処理装置。
【請求項５】
前記命令群の各々は繰り返し実行の要否を指示する繰り返し情報を含み、
前記実行部は、前記繰り返し情報が繰り返し実行を指示している場合には前記命令群に含まれる前記複数の命令に対応する前記複数の実行処理を繰り返し実行する
請求項１記載の情報処理装置。
【請求項６】
前記オペランド変換部により変換された前記オペランドレジスタアドレスによりアクセスされるレジスタと、
前記レジスタから読み出されたソースデータを整形して前記実行部に供給するソースデータ整形部と、
前記実行部の実行結果データを整形して前記レジスタへ書込みデータとして供給する実行結果データ整形部と
をさらに具備する請求項１記載の情報処理装置。
【請求項７】
前記ソースデータ整形部は、３２ビットデータの上位１６ビットまたは下位１６ビットの何れか一方を前記実行部へ供給し、
前記実行部は、前記上位または下位の１６ビットをビット拡張した上で実行処理を行って３２ビットの前記実行結果データを出力し、
前記実行結果データ整形部は、前記実行部による前記実行結果データのうち下位１６ビットを前記書込みデータの上位１６ビットまたは下位１６ビットの何れか一方として供給する
請求項６記載の情報処理装置。
【請求項８】
１組の命令群として供給された複数の命令に対応する複数の実行処理が所定のレイテンシに従って遅延したタイミングにより実行されるよう命令の発行タイミングを制御する発行タイミング制御部と、
前記複数の実行処理の各々が繰り返される度に前記命令のオペランドレジスタアドレスを所定の増分値に従って変換するオペランド変換部と
を具備する命令デコーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特に複数の命令を１組の命令群として供給し、実行する情報処理装置に関する。
【背景技術】
【０００２】
近年、マルチメディアが一般家庭に普及し、画像処理や音声処理を行うプロセッサ性能の向上に対する要求がますます高まっている。そこで、プロセッサの高速化のため、並列処理技術の利用が図られている。例えば、データレベルの並列処理を行うものとして、ＳＩＭＤ（Single Instruction stream Multiple Data stream）型命令を実行するプロセッサがある。また、命令レベルの並列処理を行うものとして、ＶＬＩＷ型プロセッサ（Very Long Instruction Word Processor）がある。さらに、時間方向の並列処理を行うために、パイプライン段数を増やしてプロセッサ動作クロック周波数を向上させる技術が利用されている。
【０００３】
これらの技術の中でＶＬＩＷ型プロセッサは、１組の命令群（ＶＬＩＷ命令）の中に含まれる複数の命令を同時に実行することによって並列度を高め、プロセッサの性能向上を図っている。例えば、１組の命令群において４つの処理を指定して並列に実行することにより、高速に演算処理を行うことができる。また、このＶＬＩＷ型プロセッサにおいては、複数のデータに対して同一の処理を行う場合には、処理の繰返しを指示する命令を利用することにより、命令コードの繰返しを省いてコード効率を向上させることができる。例えば、リピートブロック内の処理を繰り返し実行するリピート命令が知られている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２２９７７９号公報（図１５）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の従来技術によるリピート命令を利用すれば、ＶＬＩＷ型プロセッサにおいて複数のデータに対する処理を書き下す必要がなくなり、コード効率を向上させることができる。しかしながら、複数の命令間に依存関係がある場合には、各命令の実行タイミングをずらす必要が生じ、リピート命令による定常的な繰返し処理の前後に過渡的な処理が必要になってしまう。この過渡的な処理をコンパイル時に静的に行おうとすると、無操作（ＮＯＰ）命令を繰り返し挿入することが多くなり、リピート命令により向上させたコード効率に悪影響を与える結果になってしまう。
【０００６】
本発明はこのような状況に鑑みてなされたものであり、ＶＬＩＷ型プロセッサにおけるリピート命令に伴う過渡処理を動的に行うことを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記課題を解決するためになされたものであり、その第１の側面は、複数の命令を１組の命令群として供給する命令供給部と、上記複数の命令に対応する複数の実行処理を並列に繰り返し実行する実行部と、所定のレイテンシに従って遅延したタイミングにより上記複数の実行処理が実行されるよう上記実行部に対する命令の発行タイミングを制御する発行タイミング制御部と、上記実行部における実行の繰り返しの度に上記命令のオペランドレジスタアドレスを所定の増分値に従って変換するオペランド変換部とを具備する情報処理装置である。これにより、複数の命令のオペランドレジスタアドレスを変換しながら、各命令をレイテンシに従って遅延したタイミングにより繰り返し実行するという作用をもたらす。
【０００８】
また、この第１の側面において、上記オペランド変換部は、上記オペランドレジスタアドレスを変換する際には上記レイテンシに従って上記オペランドレジスタアドレスを循環させるようにしてもよい。これにより、複数の命令を繰り返し実行させる際、オペランドレジスタアドレスをレイテンシに従って循環させるという作用をもたらす。この場合、上記オペランド変換部は、上記オペランドレジスタアドレスを変換する際には上記増分値に従って上記オペランドレジスタアドレスを加算または減算した後に上記レイテンシによる剰余を算出することにより上記循環を行ってもよい。
【０００９】
また、この第１の側面において、上記オペランド変換部は、ワード単位に付与された上記オペランドレジスタアドレスに対してハーフワードを識別する情報を付してハーフワード単位で上記オペランドレジスタアドレスを変換するようにしてもよい。これにより、複数の命令を繰り返し実行させる際、オペランドレジスタアドレスをハーフワード単位で変換させるという作用をもたらす。
【００１０】
また、この第１の側面において、上記命令群の各々は繰り返し実行の要否を指示する繰り返し情報を含み、上記実行部は、上記繰り返し情報が繰り返し実行を指示している場合には上記命令群に含まれる上記複数の命令に対応する上記複数の実行処理を繰り返し実行するようにしてもよい。これにより、リピート命令やリピートフラグなどの繰り返し情報に従って複数の実行処理を繰り返し実行させるという作用をもたらす。
【００１１】
また、この第１の側面において、上記オペランド変換部により変換された上記オペランドレジスタアドレスによりアクセスされるレジスタと、上記レジスタから読み出されたソースデータを整形して上記実行部に供給するソースデータ整形部と、上記実行部の実行結果データを整形して上記レジスタへ書込みデータとして供給する実行結果データ整形部とをさらに具備してもよい。これにより、データ整形を行う命令を別途実行する必要性を回避し、プログラムコードの容量を低減させるという作用をもたらす。この場合において、上記ソースデータ整形部は、３２ビットデータの上位１６ビットまたは下位１６ビットの何れか一方を上記実行部へ供給し、上記実行部は、上記上位または下位の１６ビットをビット拡張した上で実行処理を行って３２ビットの上記実行結果データを出力し、上記実行結果データ整形部は、上記実行部による上記実行結果データのうち下位１６ビットを上記書込みデータの上位１６ビットまたは下位１６ビットの何れか一方として供給するようにしてもよい。
【００１２】
また、本発明の第２の側面は、１組の命令群として供給された複数の命令に対応する複数の実行処理が所定のレイテンシに従って遅延したタイミングにより実行されるよう命令の発行タイミングを制御する発行タイミング制御部と、上記複数の実行処理の各々が繰り返される度に上記命令のオペランドレジスタアドレスを所定の増分値に従って変換するオペランド変換部とを具備する命令デコーダである。これにより、複数の命令のオペランドレジスタアドレスを変換しながら、各命令をレイテンシに従って遅延したタイミングにより繰り返し実行させるという作用をもたらす。
【発明の効果】
【００１３】
本発明によれば、ＶＬＩＷ型プロセッサにおけるリピート命令に伴う過渡処理を動的に行うことができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施の形態における情報処理装置１００の一構成例を示す図である。
【図２】本発明の実施の形態における命令デコード部１２０の一構成例を示す図である。
【図３】本発明の第１の実施の形態におけるオペランド変換部１２４の一構成例を示す図である。
【図４】本発明の実施の形態におけるレジスタ群１４０のレジスタ構成例を示す図である。
【図５】本発明の実施の形態におけるＶＬＩＷ命令の実行イメージの例を示す図である。
【図６】従来のＶＬＩＷ命令によるコーディング例を示す図である。
【図７】本発明の実施の形態におけるＶＬＩＷ命令によるコーディング例を示す図である。
【図８】本発明の実施の形態におけるレジスタ循環器４４０によるレジスタオフセット値の循環の例を示す図である。
【図９】本発明の第２の実施の形態における情報処理装置１００の一構成例を示す図である。
【図１０】本発明の第２の実施の形態におけるオペランド変換部１２４の一構成例を示す図である。
【図１１】本発明の第２の実施の形態におけるハーフワードアクセスの態様を示す図である。
【図１２】本発明の第２の実施の形態におけるソースデータ整形部１５０の一構成例を示す図である。
【図１３】本発明の第２の実施の形態におけるソースデータ選択部１５１の動作の真理値表である。
【図１４】本発明の第２の実施の形態における実行部１３０の一構成例を示す図である。
【図１５】本発明の第２の実施の形態における実行結果データ整形部１６０の一構成例を示す図である。
【図１６】本発明の第２の実施の形態における実行結果データ選択部１６１の動作の真理値表である。
【図１７】本発明の第２の実施の形態の適用例である対称フィルタ演算におけるレジスタと配列との関係の一例を示す図である。
【図１８】本発明の第２の実施の形態の適用例であるフィルタ演算のプログラムコードの例を示す図である。
【図１９】本発明の実施の形態のソースデータ整形部１５０の第１の変形例を示す図である。
【図２０】本発明の実施の形態のソースデータ整形部１５０の第２の変形例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（ワード単位でオペランドレジスタアドレスを変換する例）
２．第２の実施の形態（ハーフワード単位でオペランドレジスタアドレスを変換する例）
３．変形例（ソースデータの整形を任意のビット位置にて行う例）
【００１６】
＜１．第１の実施の形態＞
［情報処理装置の構成例］
図１は、本発明の第１の実施の形態における情報処理装置１００の一構成例を示す図である。この情報処理装置１００は、複数の命令を１組の命令群として同時にフェッチして同時に実行するＶＬＩＷ型プロセッサである。この実施の形態では、４つの命令を同時に実行できるものとする。この情報処理装置１００は、メモリ２００と接続し、命令供給部１１０と、命令デコード部１２０と、実行部１３０と、レジスタ群１４０とを備えている。
【００１７】
命令供給部１１０は、メモリ２００に格納されている複数の命令を１組の命令群として同時にフェッチして命令デコード部１２０に供給するものである。情報処理装置１００は４つの命令を同時に実行するＶＬＩＷ型プロセッサであるため、この命令供給部１１０も４つの命令を同時にフェッチする。
【００１８】
命令デコード部１２０は、命令供給部１１０から供給された命令をデコードして、このデコード結果に従って実行部１３０に各命令の処理を実行させるものである。情報処理装置１００は４つの命令を同時に実行するＶＬＩＷ型プロセッサであるため、命令デコード部１２０も４つの命令を同時にデコードする。この命令デコード部１２０の内部構成については後述する。
【００１９】
実行部１３０は、命令デコード部１２０によるデコード結果に従って各命令の処理を並列に実行するものである。この実施の形態では、同時に動作する第１乃至４のユニットが存在するものとして、第１および第４のユニットがロードストア命令を、第２および第３のユニットが算術演算命令をそれぞれ同時に実行できるものとする。
【００２０】
レジスタ群１４０は、実行部１３０による命令実行の際に必要なレジスタ群である。対象となるレジスタは命令デコード部１２０により指定され、読み出されたデータが実行部１３０に供給され、また、実行部１３０からデータが書き込まれる。このレジスタ群１４０は、情報処理装置１００の命令セットにより定義されている。このレジスタ群１４０の内訳については後述する。なお、レジスタ群１４０は、特許請求の範囲に記載のレジスタの一例である。
【００２１】
［命令デコード部の構成例］
図２は、本発明の実施の形態における命令デコード部１２０の一構成例を示す図である。この命令デコード部１２０は、命令保持部１２１と、命令解読部１２２と、発行タイミング制御部１２３と、オペランド変換部１２４と、リピート回数設定レジスタ１２５と、レイテンシ設定レジスタ１２６と、デコード制御部１２９とを備えている。
【００２２】
命令保持部１２１は、命令供給部１１０から供給されたＶＬＩＷ命令を一旦保持するものである。この実施の形態では、１つのＶＬＩＷ命令には上述の第１乃至第４のユニットにそれぞれ対応する４つの命令が含まれているものとする。
【００２３】
命令解読部１２２は、命令保持部１２１に保持された４つの命令を解読（デコード）するものである。これにより、情報処理装置１００内部の制御に必要な制御信号が生成される。すなわち、アクセス対象となるレジスタのアドレスや、演算の種別などが制御信号として得られる。
【００２４】
発行タイミング制御部１２３は、解読された命令を実行部１３０に発行するタイミングを制御するものである。解読された４つの命令は原則として同時に発行されるが、レイテンシ設定レジスタ１２６に後述するレイテンシが設定されている場合には、各命令はレイテンシに相当するタイミングだけずらして発行される。
【００２５】
オペランド変換部１２４は、各命令に含まれるオペランドアドレスを所定の規則に従って変換するものである。このオペランド変換部１２４の内部構成については後述する。
【００２６】
リピート回数設定レジスタ１２５は、ＶＬＩＷ命令を繰り返す（リピートする）回数を設定するためのレジスタである。このリピート回数設定レジスタ１２５には、ソフトウェア命令などにより予めリピート回数が設定されているものとする。
【００２７】
レイテンシ設定レジスタ１２６は、ＶＬＩＷ命令に含まれる各命令の発行タイミングをずらすレイテンシを設定するためのレジスタである。このレイテンシ設定レジスタ１２６には、ソフトウェア命令などにより予めレイテンシが設定されているものとする。なお、このレイテンシ設定レジスタ１２６は、対象となる命令単位で異なる値を設定するようにしてもよい。
【００２８】
デコード制御部１２９は、命令デコード部１２０全体を制御するものである。例えば、デコード制御部１２９は、リピート回数設定レジスタ１２５に設定されたリピート回数に応じて命令保持部１２１に命令を保持し、レイテンシ設定レジスタ１２６に設定されたレイテンシに応じて各命令の発行タイミングを決定する。
【００２９】
［オペランド変換部の構成例］
図３は、本発明の第１の実施の形態におけるオペランド変換部１２４の一構成例を示す図である。このオペランド変換部１２４は、ワード単位でオペランドレジスタアドレスを変換するものであり、オフセット値レジスタ４１０と、オフセット増分レジスタ４２０と、加算器４３０および４６０と、レジスタ循環器４４０とを備えている。
【００３０】
オフセット値レジスタ４１０は、発行タイミング制御部１２３から発行された各命令のオペランドレジスタに対するオフセット値を保持するレジスタである。このオフセット値レジスタ４１０の値はレジスタ循環器４４０により更新され、加算器４３０および４６０により参照される。
【００３１】
オフセット増分レジスタ４２０は、ＶＬＩＷ命令の繰り返し（リピート）の際にオフセット値レジスタ４１０に加算する増分値を保持するレジスタである。このオフセット増分レジスタ４２０に保持される増分値は負の値を採りうる。このオフセット増分レジスタ４２０の値は、ソフトウェア命令などにより予め設定され、加算器４３０により参照される。
【００３２】
加算器４３０は、オフセット値レジスタ４１０の値とオフセット増分レジスタ４２０の値とを加算するものである。オフセット増分レジスタ４２０は、負の値を採りうるため、その場合には減算が行われる。この加算器４３０による加算結果は、レジスタ循環器４４０によるオフセット値レジスタ４１０の更新に用いられる。
【００３３】
レジスタ循環器４４０は、加算器４３０による加算結果に基づいて、オフセット値レジスタ４１０に保持されるオペランドレジスタのオフセット値を更新するものである。更新の際、レジスタ循環器４４０は、レイテンシ設定レジスタ１２６に設定されたレイテンシに相当するタイミング毎に、オフセット値レジスタ４１０の値が循環するように制御する。具体的には、このレジスタ循環器４４０は、モジュロ（剰余）演算器により実現することができる。なお、このレジスタ循環器４４０による循環の要否は、命令デコード部１２０において設定できるようになっている。
【００３４】
加算器４６０は、発行タイミング制御部１２３から発行された各命令のオペランドレジスタアドレスに対して、オフセット値レジスタ４１０に保持されたオフセット値を加算するものである。この加算器４６０の出力が、オペランドレジスタアドレスとしてレジスタ群１４０に供給される。したがって、レジスタ群１４０におけるアクセス対象となるのは、オフセット値が加算されたオペランドレジスタアドレスとなる。なお、オフセット値レジスタの更新は、各ＶＬＩＷ命令が発行された後のポスト処理として行われる。
【００３５】
このオペランド変換部１２４において、オフセット値レジスタ４１０およびオフセット増分レジスタ４２０は、各命令の各オペランドに対して設けられる。これにより、各オペランドについて自由度の高い更新を行うことができる。例えば、２つのソースレジスタと１つのデスティネーションレジスタを指定可能な命令セットにおいては、オフセット値レジスタ４１０およびオフセット増分レジスタ４２０を３組設けることになる。
【００３６】
［レジスタ群のレジスタ構成］
図４は、本発明の実施の形態におけるレジスタ群１４０のレジスタ構成例を示す図である。このレジスタ群１４０は、汎用レジスタ、係数レジスタおよびアキュムレータを含むことを想定する。
【００３７】
図４（ａ）は、汎用レジスタ１４１のレジスタ構成例である。この汎用レジスタ１４１は、実行部１３０による処理の際に一般用途に用いられるレジスタであり、実行部１３０のためのソースデータまたはメモリアクセスのためのアドレスおよびストアデータを保持するために用いられる。この例では、３２ビット幅の汎用レジスタ１４１が２４個（Ｒ０〜Ｒ２３）設けられている。
【００３８】
図４（ｂ）は、係数レジスタ１４２のレジスタ構成例である。この係数レジスタ１４２は、フィルタ演算等における係数（coefficient）を保持するために設けられた特殊なレジスタである。この例では、３２ビット幅の係数レジスタ１４２が１２個（ＫＲ０〜ＫＲ１１）設けられている。
【００３９】
図４（ｃ）は、アキュムレータ１４３のレジスタ構成例である。このアキュムレータ１４３は、実行部１３０における算術演算処理のためのレジスタである。この例では、３２ビット幅のレジスタが５個（Ａ０、ＭＬ０、ＭＨ０、ＭＬ１、ＭＨ１）設けられている。アキュムレータＡ０は算術演算処理のうち加算および減算のために用いられるレジスタである。アキュムレータＡ０以外の４つのレジスタは算術演算処理のうち乗算のために用いられるレジスタである。アキュムレータＭＬ０およびＭＨ０は、下位３２ビットおよび上位３２ビットを合わせた６４ビットのレジスタＭ０として用いられる。アキュムレータＭＬ１およびＭＨ１は、下位３２ビットおよび上位３２ビットを合わせた６４ビットのレジスタＭ１として用いられる。
【００４０】
なお、ここではレジスタを表す英文字を大文字により表記しており、後述のアセンブル表記においては小文字により表記しているが、両者は同一のレジスタを示している。
【００４１】
［ＶＬＩＷ命令の実行イメージ］
図５は、本発明の実施の形態におけるＶＬＩＷ命令の実行イメージの例を示す図である。１つのＶＬＩＷ命令が４つの命令を含んでいると想定した場合、これら４つの命令は同時に実行可能である。ただし、実際のプログラムでは、ある命令によって生成されたデータを他の命令で参照する等のように、データの依存関係が発生する場合があり、その場合にはデータを待ち合わせるために後続の命令の実行を遅らせる必要が生じる。
【００４２】
この図の例では、ＶＬＩＷ命令を２５６回繰り返し実行することを想定しているが、データ依存関係により各命令の発行を２サイクルずつ遅延させている。すなわち、第１サイクルにおいて発行された命令Ａの結果は第３サイクルにおいて利用可能であるため、命令Ｂは第３サイクルに発行される。第３サイクルにおいて発行された命令Ｂの結果は第５サイクルにおいて利用可能であるため、命令Ｃは第５サイクルに発行される。第５サイクルにおいて発行された命令Ｃの結果は第７サイクルにおいて利用可能であるため、命令Ｄは第７サイクルに発行される。
【００４３】
そのため、この場合、本発明の実施の形態では、リピート回数設定レジスタ１２５には「２５６」が設定され、レイテンシ設定レジスタ１２６には「２」が設定される必要がある。このとき、第７サイクルから第２５６サイクルまでにおいては４つの命令が同時に実行されているが、それ以外のサイクルでは何れかの命令がＮＯＰ（No-OPeration：無操作）命令となっている。すなわち、第１サイクルから第６サイクルまでが開始時の移行期間であり、第２５７サイクルから第２６２サイクルまでが終了時の移行期間である。従来の手法では、これらの移行期間は明示的にコーディングされる必要があった。
【００４４】
図６は、従来のＶＬＩＷ命令によるコーディング例を示す図である。図６（ａ）は、対象アルゴリズムをＣ言語で記載したものである。すなわち、変数ｉを「１」ずつ加算しながら「０」から「２５５」まで増加させて、乗算（ａ［ｉ］×ｂ［ｉ］）を実行し、乗算結果をｃビット右シフト（ｍ［ｉ］＞＞ｃ）するものである。
【００４５】
従来手法によれば、図６（ｂ）のように、データ依存関係を考慮して開始時の移行期間（第１乃至６行）を明示的にコーディングした上で、繰り返し部（第７乃至９行）をコーディングする必要がある。そして、さらに終了時の移行期間（第１０乃至１５行）を明示的にコーディングする必要がある。
【００４６】
なお、この例において、ｌｄ命令はロード命令であり、＄ｍｅｍ（）の指すアドレスから６４ビットのデータを２つの連結された汎用レジスタ（Ｒ０とＲ１またはＲ２とＲ３）に３２ビットずつロードする。ここで、「ｒ０：ｒ１」は汎用レジスタＲ０とＲ１の連結を表す。ｍｕｌ命令は乗算命令であり、３２ビット幅の２つの汎用レジスタの値を乗算して、６４ビット幅のアキュムレータ（Ｍ０またはＭ１）に格納する。ｓｒａ命令は算術右シフト命令であり、６４ビット幅のアキュムレータの値を汎用レジスタｒ２３の示す回数右シフトして、汎用レジスタ（Ｒ１６またはＲ１７）に格納する。ｓｗ命令はストア命令であり、＄ｍｅｍ（）の指すアドレスに汎用レジスタ（Ｒ１６またはＲ１７）の値をストアする。ｎｏｐ命令は無操作命令であり、何も処理を行わない。ｌｏｏｐ命令はループを形成するための分岐命令であり、ラベルＬＡＢＥＬの付与された命令との間を所定回数繰り返し実行する。
【００４７】
図７は、本発明の実施の形態におけるＶＬＩＷ命令によるコーディング例を示す図である。対象アルゴリズムは図６と同様である。図７（ａ）および（ｂ）は、第１の例であり、繰り返しを指定するリピート命令を前置するタイプである。ｒｐｔ命令は、ＶＬＩＷ命令の繰り返し実行を指定するリピート命令であり、次サイクルのＶＬＩＷ命令（命令Ａ乃至Ｄ）をリピート回数設定レジスタ１２５（ｒｐｔｒ）に設定された回数実行する。すなわち、次のＶＬＩＷ命令に含まれるｌｄ命令、ｍｕｌ命令、ｓｒａ命令およびｓｗ命令が繰り返し実行される。
【００４８】
このとき、リピート回数設定レジスタ１２５に「２５６」を設定し、レイテンシ設定レジスタ１２６に「２」を設定しておくことにより、図５と同様のタイミングにより各命令の実行が行われる。
【００４９】
また、ここでは、ｍｕｌ命令のソースオペランドのオフセット値レジスタ４１０の初期値として「０」、オフセット増分レジスタ４２０に「２」が設定される。これにより、レジスタ循環器４４０によってｍｕｌ命令のソースオペランドのオフセット値レジスタ４１０の値は交互に「０」と「２」を繰り返す。したがって、ｍｕｌ命令のソースオペランドは、Ｒ０およびＲ１とＲ２およびＲ３とが交互に生成されることになる。また、ｍｕｌ命令のデスティネーションオペランドのオフセット値レジスタ４１０の初期値として「０」、オフセット増分レジスタ４２０に「１」が設定される。これにより、レジスタ循環器４４０によってｍｕｌ命令のデスティネーションオペランドのオフセット値レジスタ４１０の値は交互に「０」と「１」を繰り返す。したがって、ｍｕｌ命令のデスティネーションオペランドは、Ｍ０とＭ１とが交互に生成されることになる。なお、レジスタ循環器４４０によるオフセット値レジスタ４１０の更新については後述する。
【００５０】
上述の第１の例では、リピート命令を単独の命令として実現しているため、４つの命令フィールドのうち３つがＮＯＰ命令となって無駄が生じる結果となっている。そこで、以下の第２の例では、ＶＬＩＷ命令内にリピートフラグを１ビット設けて、このリピートフラグの状態に応じてそのＶＬＩＷ命令の繰り返し実行を制御する。
【００５１】
図７（ｃ）および（ｄ）は、第２の例であり、ＶＬＩＷ命令内のリピートフラグがオン状態を示していれば、そのＶＬＩＷ命令を繰り返し実行する。逆にリピートフラグがオフ状態であれば、そのＶＬＩＷ命令は１回しか実行されない。
【００５２】
なお、ここで説明したリピート命令およびリピートフラグは、特許請求の範囲に記載の繰り返し情報の一例である。
【００５３】
図８は、本発明の実施の形態におけるレジスタ循環器４４０によるレジスタオフセット値の循環の例を示す図である。ＶＬＩＷ命令を繰り返し実行する際には、レイテンシに相当するサイクル毎に異なるレジスタを用いることができれば、互いに独立して実行することが可能となる。例えば、図６（ｂ）の例では、汎用レジスタＲ０およびＲ１とＲ２およびＲ３とを使用することにより、レイテンシ「２」の２つのロード命令を連続して発行することが可能となっている。もし、汎用レジスタＲ０およびＲ１のみしか使用できないとすると、ロード命令は２サイクル毎にしか発行できなくなってしまい、処理効率が低下する。そこで、レジスタ循環器４４０では、オフセット値レジスタ４１０の値が循環するように更新することにより、レジスタのリネーミングを実現する。
【００５４】
図８（ａ）は、オフセット増分レジスタ４２０の値が「１」、レイテンシ設定レジスタ１２６に設定されたレイテンシが「１」から「３」までの場合の、汎用レジスタのレジスタアドレスの循環例を示すものである。レイテンシが「１」の場合、レジスタオフセット値は「０」のままである。レイテンシが「２」の場合、レジスタオフセット値は「０」と「１」を交互に繰り返す。レイテンシが「３」の場合、レジスタオフセット値は「０」、「１」、「２」を循環する。したがって、ＶＬＩＷ命令における汎用レジスタＲ０は、レイテンシが「１」の場合はＲ０のままで、レイテンシが「２」の場合はＲ０とＲ１を交互に繰り返し、レイテンシが「３」の場合はＲ０、Ｒ１、Ｒ２を循環するように変化する。
【００５５】
図８（ｂ）は、オフセット増分レジスタ４２０の値が「１」、レイテンシ設定レジスタ１２６に設定されたレイテンシが「１」から「２」までの場合の、アキュムレータのレジスタアドレスの循環例を示すものである。レイテンシが「１」の場合、レジスタオフセット値は「０」のままである。レイテンシが「２」の場合、レジスタオフセット値は「０」と「１」を交互に繰り返す。したがって、ＶＬＩＷ命令におけるアキュムレータＭ０は、レイテンシが「１」の場合はＭ０のままで、レイテンシが「２」の場合はＭ０とＭ１を交互に繰り返す。
【００５６】
このように、本発明の第１の実施の形態によれば、レイテンシ設定レジスタ１２６に設定されたレイテンシに応じてタイミングをずらしながらＶＬＩＷ命令が動的に繰り返されるため、移行期間を明示的にコーディングすることを回避することができる。また、レイテンシ設定レジスタ１２６に設定されたレイテンシに応じてオフセット値レジスタ４１０の値が循環するように更新することにより、レジスタアドレスを変更（リネーミング）して、処理効率を向上させることができる。
【００５７】
＜２．第２の実施の形態＞
［情報処理装置の構成例］
図９は、本発明の第２の実施の形態における情報処理装置１００の一構成例を示す図である。この第２の実施の形態の情報処理装置１００は、ハーフワードを扱うために、実行部１３０に供給されるソースデータや実行部１３０から出力される実行結果データを整形する機能を備えるものである。そのため、この第２の実施の形態の情報処理装置１００は、上述の第１の実施の形態と比べて、ソースデータ整形部１５０と、実行結果データ整形部１６０とをさらに備える点が異なっている。ソースデータ整形部１５０は、レジスタ群１４０から読み出したソースデータを、デコード結果に応じて整形するものである。実行結果データ整形部１６０は、実行部１３０から出力された実行結果データを、デコード結果に応じて整形するものである。
【００５８】
命令供給部１１０およびレジスタ群１４０については、第１の実施の形態と同様であるため、ここでの説明は省略する。また、命令デコード部１２０の全体的な構成は第１の実施の形態と同様であるが、オペランド変換部１２４の内部構成が異なるため、これについては後述する。また、実行部１３０については一部変更点があるため、これについても後述する。
【００５９】
［オペランド変換部の構成例］
図１０は、本発明の第２の実施の形態におけるオペランド変換部１２４の一構成例を示す図である。この第２の実施の形態のオペランド変換部１２４は、ハーフワード単位でオペランドレジスタアドレスを変換するものであり、シフタ４５０を備える点において、図３により説明した第１の実施の形態のものと異なっており、それ以外は同様の構成を備えている。
【００６０】
シフタ４５０は、発行タイミング制御部１２３から供給された、オペランドのレジスタアドレスを１ビット左シフトするものである。これにより、シフタ４５０から出力されるレジスタアドレスはハーフワードを単位とした場合の下位１ビットを除いたものになる。下位１ビットはオフセット値レジスタ４１０から供給される。
【００６１】
図１１は、本発明の第２の実施の形態におけるハーフワードアクセスの態様を示す図である。なお、ここでは汎用レジスタ１４１に適用した場合を例示しているが、係数レジスタ１４２やアキュムレータ１４３についても同様である。
【００６２】
通常のワード指定では、１ワード３２ビットを単位として、命令のオペランドによって指定がなされる。これに対し、ハーフワード１６ビットを指定するためには、ワード指定に加えて、ワード内指定としてＭＳＢ側またはＬＳＢ側の何れであるかを指定する必要がある。このワード内指定は、オフセット値レジスタ４１０の最下位ビットにより指定することができる。
【００６３】
［ソースデータ整形部の構成例］
図１２は、本発明の第２の実施の形態におけるソースデータ整形部１５０の一構成例を示す図である。このソースデータ整形部１５０は、ソースデータ選択部１５１を備えている。
【００６４】
レジスタ群１４０の何れかのレジスタから供給された３２ビットの入力データ３０１は、ＬＳＢ側およびＭＳＢ側の１６ビットずつのハーフワードデータとして、ソースデータ選択部１５１に入力される。ソースデータ選択部１５１は、命令デコード部１２０におけるデコード結果に従って、ＬＳＢ側またはＭＳＢ側の１６ビットデータの何れか一方を選択する。このソースデータ選択部１５１の出力は、出力データ３０９のＬＳＢ側の１６ビットデータとなる。また、出力データ３０９のＭＳＢ側の１６ビットデータは、入力データ３０１のＭＳＢ側の１６ビットデータと同じである。すなわち、出力データ３０９としては、入力データ３０１と完全に一致する場合と、入力データ３０１のＭＳＢ側の１６ビットデータがＬＳＢ側にも出力される場合とが考えられる。
【００６５】
なお、この図においては、１つのデータについてのみ図示しているが、オペランドの数に合わせて同じ回路が複数（以下の実行部１３０のためには、２つ）用意される。
【００６６】
図１３は、本発明の第２の実施の形態におけるソースデータ選択部１５１の動作の真理値表である。命令デコード部１２０におけるデコードの結果、ハーフワードアクセスのためのデータ入れ換えが不要であると判断された場合には、ソースデータ選択部１５１は入力データ３０１のＬＳＢ側の１６ビットデータを選択する。一方、ハーフワードアクセスのためのデータ入れ換えが必要であると判断された場合には、ソースデータ選択部１５１は入力データ３０１のＭＳＢ側の１６ビットデータを選択する。これにより、出力データ３０９のＬＳＢ側には、デコード結果に応じて入力データ３０１のＬＳＢ側またはＭＳＢ側の１６ビットデータが出力される。
【００６７】
［実行部の構成例］
図１４は、本発明の第２の実施の形態における実行部１３０の一構成例を示す図である。この実行部１３０は、ソースデータ整形部１５０から供給された２つの入力データ３１０および３２０に対してビット拡張した上で演算を施し、出力データ３３０を出力するものである。この実行部１３０は、２つの入力データのためのビット拡張部１３１および１３２と、演算部１３３とを備える。
【００６８】
ビット拡張部１３１は、入力データ３１０のＬＳＢ側の１６ビットデータを３２ビット精度に、デコード結果に応じて符号拡張またはゼロ拡張するものである。ビット拡張部１３２は、入力データ３２０のＬＳＢ側の１６ビットデータを３２ビット精度に、デコード結果に応じて符号拡張またはゼロ拡張するものである。これらビット拡張部１３１および１３２の出力は、それぞれ３２ビットデータとして演算部１３３に供給される。
【００６９】
演算部１３３は、命令デコード部１２０におけるデコード結果に従って、ビット拡張部１３１および１３２から供給された３２ビットデータに対して演算を行うものである。この演算部１３３による演算結果は、３２ビット精度の出力データ３３０として実行結果データ整形部１６０に供給される。
【００７０】
［実行結果データ整形部の構成例］
図１５は、本発明の第２の実施の形態における実行結果データ整形部１６０の一構成例を示す図である。この実行結果データ整形部１６０は、実行結果データ選択部１６１を備えている。
【００７１】
実行部１３０から供給された３２ビットの入力データ３４１は、ＬＳＢ側およびＭＳＢ側の１６ビットずつのハーフワードデータとして、実行結果データ選択部１６１に入力される。実行結果データ選択部１６１は、命令デコード部１２０におけるデコード結果に従って、ＬＳＢ側またはＭＳＢ側の１６ビットデータの何れか一方を選択する。この実行結果データ選択部１６１の出力は、出力データ３４９のＭＳＢ側の１６ビットデータとなる。また、出力データ３４９のＬＳＢ側の１６ビットデータは、入力データ３４１のＬＳＢ側の１６ビットデータと同じである。すなわち、出力データ３４９としては、入力データ３４１と完全に一致する場合と、入力データ３４１のＬＳＢ側の１６ビットデータがＭＳＢ側にも出力される場合とが考えられる。
【００７２】
図１６は、本発明の第２の実施の形態における実行結果データ選択部１６１の動作の真理値表である。命令デコード部１２０におけるデコードの結果、ハーフワードアクセスのためのデータ入れ換えが不要であると判断された場合には、実行結果データ選択部１６１は入力データ３４１のＭＳＢ側の１６ビットデータを選択する。一方、ハーフワードアクセスのためのデータ入れ換えが必要であると判断された場合には、実行結果データ選択部１６１は入力データ３４１のＬＳＢ側の１６ビットデータを選択する。これにより、出力データ３４９のＭＳＢ側には、デコード結果に応じて入力データ３４１のＬＳＢ側またはＭＳＢ側の１６ビットデータが出力される。
【００７３】
このようにして、本発明の第２の実施の形態では、ハーフワード１６ビットのデータを符号拡張またはゼロ拡張して３２ビットデータとして演算して、ハーフワードに戻した上でレジスタに格納することができる。
【００７４】
［対称フィルタ演算の適用例］
図１７は、本発明の第２の実施の形態の適用例である対称フィルタ演算におけるレジスタと配列との関係の一例を示す図である。図１７（ａ）は、ここで対象とする対称フィルタ演算の式である。配列Ｌはサンプリングデータであり、配列Ｃｏｅｆはフィルタ係数である。総和演算の変数ｎが０から８までの値となることから、配列ＬはＬ［０］からＬ［１６］の１７個、配列ＣｏｅｆはＣｏｅｆ［０］からＣｏｅｆ［８］の９個の要素をそれぞれ有することになる。総和演算の後、即値ＮＯＲＭの示す回数分の右シフトが行われ、３２ビット精度のフィルタ演算結果Ｒｅｓｕｌｔに代入される。即値ＮＯＲＭは、正規化数であり、実際には「５」または「６」が用いられる。
【００７５】
図１７（ｂ）に示すように、配列Ｌは汎用レジスタ１４１に割り当てられ、配列Ｃｏｅｆは係数レジスタ１４２に割り当てられる。各データは１６ビット精度のハーフワードとして割り当てられる。これにより、同図（ａ）の式に必要な配列の全てを汎用レジスタ１４１および係数レジスタ１４２に割り当てることができ、プログラムコードの効率を向上させることができる。
【００７６】
図１８は、本発明の第２の実施の形態の適用例であるフィルタ演算のプログラムコードの例を示す図である。図１８（ａ）は、本発明の第２の実施の形態において、２命令同時実行を想定したＶＬＩＷ型プロセッサによるプログラムコードの例である。
【００７７】
第１ステップには、ｒｐｔ命令と、ｎｏｐ命令が記述されている。ｒｐｔ命令は次ステップの繰り返し回数を指示するリピート命令である。このｒｐｔ命令により、第２ステップの２つの命令が９回繰り返される。このとき、レイテンシ設定レジスタ１２６に「１」を設定しておくことにより、第２ステップの右側の命令は１サイクル遅れて開始される。なお、ｎｏｐ命令は無操作命令であり、何も動作は行われない。
【００７８】
第２ステップでは、ａｄｄｈ命令と、ｍａｄｄ命令が記述されている。ａｄｄｈ命令は、２つの汎用レジスタのハーフワードを３２ビットに符号拡張した上で入力オペランドとして加算を行い、３２ビット精度のアキュムレータＡ０に格納するハーフワード加算命令である。ｍａｄｄ命令は、３２ビット精度のアキュムレータＡ０の値に１６ビット精度の係数レジスタの値を乗算し、その乗算結果を６４ビット精度のアキュムレータＭ０に加算する積和命令である。
【００７９】
第３ステップでは、ｓｒａ命令と、ｎｏｐ命令が記述されている。ｓｒａ命令は６４ビット精度のアキュムレータＭ０の値を即値ＮＯＲＭの示す回数だけ右シフトして、その結果を３２ビット精度の汎用レジスタＲ９に格納する右シフト命令である。
【００８０】
汎用レジスタおよび係数レジスタの各アドレスは、命令コードにおけるオペランド指示およびオフセット値レジスタ４１０により決定される。オフセット値レジスタ４１０は、オペランド毎に設けられ、それぞれ対応するオフセット増分レジスタ４２０に応じて更新される。この例では、オフセット増分レジスタ４２０の値は、ａｄｄｈ命令の２つの入力オペランドのうち、一方に対しては「＋１」（ハーフワード増加）、他方に対しては「−１」（ハーフワード減少）とする。また、ｍａｄｄ命令の入力オペランドである係数レジスタに対する設定値は「＋１」（ハーフワード増加）とする。なお、ここでは、３２ビット単位の増加を「＋２」、３２ビット単位の減少を「−２」としている。また、オフセット値レジスタ４１０の初期値は、ａｄｄｈ命令の２つの入力オペランドに対してはともに「８」、出力オペランドに対しては「０」、ｍａｄｄ命令の入力オペランドである係数レジスタに対しては「０」が設定される。
【００８１】
図１８（ｂ）は、図１８（ａ）のプログラムコードを実行した際のタイミングを示す図である。すなわち、まず、第１サイクルでは、Ｌ［８］（Ｒ４（ＬＳＢ））とＬ［８］（Ｒ４（ＬＳＢ））の加算が行われる。第２サイクルでは、Ｌ［９］（Ｒ４（ＭＳＢ））＋Ｌ［７］（Ｒ３（ＬＳＢ））の加算が行われるとともに、第１サイクルの加算結果にＣｏｅｆ［０］（ＫＲ０（ＬＳＢ））が乗算される。以下同様に処理が行われ、第９サイクルでは、Ｌ［１６］（Ｒ８（ＬＳＢ））＋Ｌ［０］（Ｒ０（ＬＳＢ））の加算が行われるとともに、第８サイクルの加算結果にＣｏｅｆ［７］（ＫＲ３（ＭＳＢ））が乗算される。そして、第１０サイクルでは、第９サイクルの加算結果にＣｏｅｆ［８］（ＫＲ４（ＬＳＢ））が乗算される。最後に、第１１サイクルでは、第１０サイクルの積和結果に対して即値ＮＯＲＭの示す回数分の右シフトが行われ、その結果が汎用レジスタＲ９に格納される。
【００８２】
このように、本発明の第２の実施の形態によれば、ハーフワード単位でレジスタアドレスを変更しながらＶＬＩＷ命令を動的に繰り返すことができ、レジスタを有効利用することができるとともに、プログラムコードを削減することができる。
【００８３】
＜３．変形例＞
上述の実施の形態では、ワード単位またはハーフワード単位でオペランドのレジスタアドレスを変換する例について説明したが、必要なデータを切り出す位置は以下のようにレジスタにおける任意のビット位置であっても構わない。
【００８４】
［第１の変形例］
図１９は、本発明の実施の形態のソースデータ整形部１５０の第１の変形例を示す図である。このソースデータ整形部１５０の第１の変形例では、レジスタ群１４０から読み出された３２ビットの入力データ３０１の第ｘビット目からｎビット分を、抽出データ３０２としてデータ抽出部１５２によって抽出している。このｎビットの抽出データ３０２は、ビット拡張部１５３によって符号拡張またはゼロ拡張され、３２ビットの出力データ３０９となる。この出力データ３０９は、実行部１３０に供給される。
【００８５】
この本発明の実施の形態の第１の変形例によれば、入力データを参照する命令においてデータの抽出および拡張を実行するため、独立したデータ抽出命令やデータ拡張命令を別途実行する必要がなくなり、プログラムコードの容量を低減することができる。
【００８６】
［第２の変形例］
図２０は、本発明の実施の形態のソースデータ整形部１５０の第２の変形例を示す図である。このソースデータ整形部１５０の第２の変形例では、レジスタ群１４０から読み出された３２ビットの入力データ３０１から２つの抽出データをデータ抽出部１５２によって抽出している。すなわち、入力データ３０１の第ｘビット目からｎビット分を抽出データ３０３として抽出するとともに、入力データ３０１の第ｙビット目からｎビット分を抽出データ３０４として抽出している。
【００８７】
そして、ｎビットの抽出データ３０３は、ビット拡張部１５３によって１６ビットに符号拡張またはゼロ拡張され、出力データ３０９のＬＳＢ側に設定される。また、ｎビットの抽出データ３０４は、ビット拡張部１５３によって１６ビットに符号拡張され、出力データ３０９のＭＳＢ側に設定される。すなわち、３２ビットの出力データ３０９は、２つの１６ビットデータを含むことになる。この場合、出力データ３０９は、２つの入力オペランドとして実行部１３０に供給される。
【００８８】
この本発明の実施の形態の第２の変形例によれば、１つの入力データから２つの１６ビットデータを抽出し、符号拡張するため、独立したデータ抽出命令やデータ拡張命令を別途実行することなく、２倍の数の演算器を並行して実行させることができる。
【００８９】
［その他の変形例］
なお、本発明の実施の形態において、オフセット値レジスタ４１０およびオフセット増分レジスタ４２０のビット幅を拡張することにより、プログラムコードのオペランドビット幅の増加を招くことなく、係数レジスタ１４２のワード数を拡張することが可能となる。これにより、多くの係数（フィルタタップ数）を必要とするフィルタ演算等のアルゴリズムにおいて、プログラムコードに記述されるオペランドを変更することなく取り扱うことができる。そのため、拡張した係数レジスタをＲＯＭ化すること等が容易に可能となる。
【００９０】
また、オフセット値レジスタ４１０およびオフセット増分レジスタ４２０において、１６ビット単位粒度だけでなく、小数点ビットを備えることにより、オペランド指示の更新を毎回の頻度よりも低減させることができる。これにより、例えば同じ係数値を続けて参照することも可能となる。
【００９１】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００９２】
また、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【符号の説明】
【００９３】
１００  情報処理装置
１１０  命令供給部
１２０  命令デコード部
１２１  命令保持部
１２２  命令解読部
１２３  発行タイミング制御部
１２４  オペランド変換部
１２５  リピート回数設定レジスタ
１２６  レイテンシ設定レジスタ
１２９  デコード制御部
１３０  実行部
１３１、１３２  ビット拡張部
１３３  演算部
１４０  レジスタ群
１４１  汎用レジスタ
１４２  係数レジスタ
１４３  アキュムレータ
１５０  ソースデータ整形部
１５１  ソースデータ選択部
１５２  データ抽出部
１５３  ビット拡張部
１６０  実行結果データ整形部
１６１  実行結果データ選択部
２００  メモリ
４１０  オフセット値レジスタ
４２０  オフセット増分レジスタ
４３０、４６０  加算器
４４０  レジスタ循環器
４５０  シフタ
【図１】
2011090592.tif 000003
【図２】
2011090592.tif 000004
【図３】
2011090592.tif 000005
【図４】
2011090592.tif 000006
【図５】
2011090592.tif 000007
【図６】
2011090592.tif 000008
【図７】
2011090592.tif 000009
【図８】
2011090592.tif 000010
【図９】
2011090592.tif 000011
【図１０】
2011090592.tif 000012
【図１１】
2011090592.tif 000013
【図１２】
2011090592.tif 000014
【図１３】
2011090592.tif 000015
【図１４】
2011090592.tif 000016
【図１５】
2011090592.tif 000017
【図１６】
2011090592.tif 000018
【図１７】
2011090592.tif 000019
【図１８】
2011090592.tif 000020
【図１９】
2011090592.tif 000021
【図２０】
2011090592.tif 000022