(57)【要約】処理ユニットおよびメモリを有するコンピュータ・システムであり、処理ユニットは、メモリからメモリ・ラインをフェッチし、メモリ・ラインからの命令を実行するように構成される。各々のメモリ・ラインは、全体をフェッチされ、複数の命令を保持することができる。命令は、処理ユニットが現在のメモリ・ラインからの命令を処理している時に、後続のメモリ・ラインへの境界を横断することによって処理の一部分が受ける影響を処理ユニットがどのように制御すべきかを明示的に知らせる情報を含む。処理ユニットは、情報によって知らされたように前記一部分を制御することによって情報に応答する。
2004519028.tif 000002
【特許請求の範囲】
【請求項１】
処理ユニットおよびメモリを有するコンピュータ・システムであって、処理ユニットはメモリからメモリ・ラインをフェッチしてメモリ・ラインからの命令を実行するように構成され、各々のメモリ・ラインは全体をフェッチされて複数の命令を保持することができ、少なくとも１つの命令は、処理ユニットが現在のメモリ・ラインからの命令を処理している時に、後続のメモリ・ラインへの境界を越えることによって処理の一部分がどのように影響されるかを処理ユニットがどのように制御すべきかを明示的に知らせる情報を含み、処理ユニットは、情報によって知らされたように前記一部分を制御することによって情報に応答するように構成されていることを特徴とするコンピュータ・システム。
【請求項２】
命令の処理中に後続のメモリ・ラインがプリフェッチされるべきか否かを、情報が明示的に知らせ、処理ユニットは情報に応答して後続のメモリ・ラインのプリフェッチをスタートするように構成されていることを特徴とする請求項１記載のコンピュータ・システム。
【請求項３】
情報がプリフェッチ・ビットを含み、前記プリフェッチ・ビットの値は、後続のメモリ・ラインがプリフェッチされるべきか否かを明示的に知らせることを特徴とする請求項２記載のコンピュータ・システム。
【請求項４】
命令ポインタが現在のメモリ・ラインにおける命令の後の位置から後続のメモリ・ラインのスタートへ更新されるべきか否かを、情報が明示的に知らせ、それによって現在のメモリ・ラインの命令に続く情報がスキップされ、処理ユニットが、情報に応答して後続のメモリ・ラインのスタートへ命令ポインタを更新するように構成されている殊を特徴とする請求項１記載のコンピュータ・システム。
【請求項５】
命令が分岐命令から到達された時に、命令の処理が停止されるべきか否かを、情報が明示的に知らせ、命令の一部分を含む後続のメモリ・ラインをフェッチするため処理が停止され、処理ユニットは、命令が分岐命令から到達された時に情報に応答して停止するように構成されていることを特徴とする請求項１記載のコンピュータ・システム。
【請求項６】
処理ユニットが、命令からの操作を並列に機能ユニットへ出す２つ以上の発行スロットを含むＶＬＩＷ処理ユニットであり、命令は、２つ以上の操作を含むことができるＶＬＩＷ命令であり、命令は、前記情報を指定するため操作から区別されるフィールドを含む殊を特徴とする請求項１記載のコンピュータ・システム。
【請求項７】
フィールドは、前記情報に加えて、どの発行スロットのために命令が操作を含むかを指定する解凍コードを含むことを特徴とする請求項６記載のコンピュータ・システム。
【請求項８】
処理ユニットおよびメモリを有し、処理ユニットは、メモリからメモリ・ラインをフェッチして、複数の命令を保持することのできるメモリ・ラインからの命令を実行するように構成され、少なくとも１つの命令は、処理ユニットが現在のメモリ・ラインからの命令を処理している時に、後続のメモリ・ラインへの境界を越えることによって処理の一部分がどのように影響されるかを処理ユニットがどのように制御すべきかを明示的に知らせる情報を含むコンピュータ・システムで命令を処理する方法であって、
各々のメモリ・ラインの全体をフェッチし、
現在のメモリ・ラインからの命令を処理し、
処理の間に命令から情報を読み取り、
情報によって知らされたように前記一部分を制御する
ことを含む殊を特徴とする方法。
【請求項９】
前記制御が、後続のメモリ・ラインのプリフェッチを生じること、プログラム・カウンタが後続のメモリ・ラインのスタートへスキップすること、又は命令が分岐目標として到達された時に処理が停止されることの少なくとも１つを含むことを特徴とする請求項８記載の方法。
【請求項１０】
請求項１に記載のプロセッサのための命令を含み、命令は、メモリ・ラインへ伸ばされる様式に従って前記情報を含むコンピュータ・プログラム。
【請求項１１】
特定のメモリ・ラインにおける命令の情報が、
命令に続く更なる命令が、少なくとも部分的に後続のメモリ・ラインに含まれる場合に、後続のメモリ・ラインをプリフェッチする明示的信号、又は
命令に続く特定のメモリ・ラインの一部分がパディング情報を含む時に、プログラム・カウンタを次のメモリ・ラインのスタートへ再整列する明示的信号、又は
命令が、後続のメモリ・ラインへ伸びて、コンピュータ・プログラム内の分岐命令の目標である時に、命令が分岐目標として到達された時に処理を停止する明示的信号
の少なくとも１つを含む殊を特徴とする請求項１０記載のコンピュータ・プログラム。
【請求項１２】
第１および第２の分岐目標命令の双方を含み、
第１の分岐目標命令が、第１のメモリ・ラインの中に記憶されて第１のメモリ・ラインのスタートに整列し、再整列する明示的信号が、第１のメモリ・ラインに先行するメモリ・ラインの先行する命令の中に設定され、停止する明示的信号が、第１の分岐目標命令の中でクリアされ、
第２の分岐目標命令が、第２および第３のメモリ・ラインへ伸びて第２のメモリ・ラインの中の先行する命令のすぐ後に続き、停止する明示的信号が第２の分岐目標命令の中に設定される、請求項１１に記載のコンピュータ・プログラム。
【請求項１３】
命令のプログラムを生成する方法であって、少なくとも１つの命令が、現在のメモリ・ラインと後続のメモリ・ラインとの間の境界が横断された時に処理の一部分をどのように制御するかを明示的に知らせる情報を含み、前記方法は、
命令に続く更なる命令が後続のメモリ・ラインの中に少なくとも部分的に記憶されるべきである時に、後続のメモリ・ラインをプリフェッチする明示的信号を、現在のメモリ・ラインの中に記憶されるべき命令の情報の中に挿入すること、又は
命令が現在のメモリ・ラインの中でパディング情報によって後続される時に、プログラム・カウンタを後続のメモリ・ラインのスタートに再整列する明示的信号を、現在のメモリ・ラインの中に記憶されるべき命令の情報の中に挿入すること、又は
命令が分岐目標として到達される時に、分岐目標命令の処理を停止する明示的信号を、現在のメモリ・ラインおよび後続のメモリ・ラインへ伸びて記憶されるべき分岐目標命令の情報の中に挿入することの少なくとも１つを含むことを特徴とする方法。
【請求項１４】
分岐目標命令のために、命令の実行頻度に依存して、
分岐目標命令はメモリ・ラインのスタートに記憶され、スペースが、先行するメモリ・ラインの中の先行する命令の後にパディングされ、再整列する明示的信号が、先行する命令の中に設定されること、
分岐目標命令はメモリ・ラインおよび先行するメモリ・ラインへ伸びるように記憶され、分岐目標命令が、先行する命令のすぐ後に続き、停止する明示的信号が分岐目標命令の中に設定されること
のいずれかを選択することを含むことを特徴とする請求項１３記載の方法。
【請求項１５】
請求項１３記載の方法の実行を生じるように構成されたコンピュータ・プログラム。
【発明の詳細な説明】
【０００１】
（技術分野）
本発明は、コンピュータ・システムにおける命令のフェッチに関する。
【０００２】
（発明の背景）
ＶＬＩＷ（Ｖｅｒｙ  Ｌａｒｇｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）命令を圧縮することは知られている。コード・サイズを縮小するため、通常、可変長命令フォーマットが使用される。しかし、そのような可変長命令フォーマットを処理するために必要な命令フェッチ・ハードウェアは、複雑になる傾向がある。命令のフェッチを制御するため、様々な解決法が応用されてきた。
【０００３】
ＷＯ９８／０２７９８は、命令整列ユニットを有するスーパースカラ・マイクロプロセッサを開示する。命令整列ユニットは、決まった数の命令を、命令キャッシュから複数のデコード・ユニットの各々へ転送する。命令はプレデコード・タグに従って選択される。プレデコード・タグは、どのバイトが命令の最初のバイトであるかを示すスタートバイト・ビットを含む。従って、命令の始まりは、圧縮された命令を解凍する目的のために識別される。
【０００４】
トリメディア・プロセッサに関連する米国特許第６，１３４，６３３号およびＷＯ９７４３７１０には、可変長ＶＬＩＷを高クロック速度で伸長する方法が開示される。命令デコーディング・ロジックはパイプラインにされる。これは、操作セグメントの１サイクル前にヘッダが利用可能でなければならないことを意味する。従って、所与の可変長命令のヘッダ・ビットが、その特定の命令に先行して可変長命令と一緒にプログラム・メモリの中に記憶される。しかし、これは分岐目標の場合に特別の結果を生じる。分岐目標へは、異なった起点から入ることができるので、先行する命令を独特に決定することはできない。これは、分岐目標の解凍が、分岐が取られた後でのみスタートできることを意味し、実行サイクルの損失を生じることを意味する。そのような損失を防止するため、分岐目標は圧縮されない。これはコード・サイズの高度の不利点となる。
【０００５】
ＶＬＩＷプロセッサのデンスコードを得るため、ＶＬＩＷ命令は、好ましくは、圧縮されるべきである。それによって、１クロック・サイクル当たり可変数の命令ビットが必要となる。これらの命令ビットを時間どおりにフェッチおよびデコードするためには、命令をデコードする時に幾つのビットが必要であるか、従って次の命令がどこからスタートするかを、命令ビット自身から推定できるデコーダが必要となる。このプロセスは、デコーダ内にフィードバック・ループを含む。その場合、現在の命令のデコーディングは、次の命令のデコーディング、即ち次の命令が置かれているプログラム・メモリ内の位置の決定に強く影響する。
【０００６】
フィードバック・ループは、可能性として処理を遅らせる。特に、命令が、複数の命令（の一部分）を含むことのできるメモリ・ラインからバッチでフェッチされる時にそうである。新しいメモリ・ラインをいつフェッチ（プリフェッチ）すべきかを決定するためには、次の命令のメモリ内の位置が、いつメモリ・ラインの間の境界を横切るかを決定することが必要である。
【０００７】
パイプライン、即ち現在の命令を実行しながら後続の命令を解凍することによって、フィードバック・ループをスピードアップすることは不可能である。なぜなら、これは、命令をフェッチできるレートに直接影響を与えるからである。例えば、１つのパイプライン・ステージを追加することは、１クロック・サイクルごとに１つの命令ではなく、２クロック・サイクル当たり１つの命令しかフェッチできないことを意味するであろう。
【０００８】
他の欠点は、分岐目標のフェッチを時間どおりに行なわせるため、目標命令の全体が単一のプログラム・メモリ・ラインの上にフィットしなければならないことである。（新しい命令がサイクルごとに実行へ移される時に、即ち、先行する命令の処理の第１のステージが完了すると、直ちに命令が処理の第１のステージ（解凍を含む）のために利用可能であれば、命令は「時間どおりに」フェッチされたものと考えられる。）もし分岐目標が圧縮されなければ、命令がメモリ・ラインの中で他の命令に続く時に、命令がメモリ・ラインの中にフィットする確率は小さい。従って、そのような目標命令は、他のプログラム・メモリ・ラインのスタートへ再整列させられ、パディング・ビットが元のメモリ・ラインへ付加される。それによって、コード・サイズは更に増加する。
【０００９】
（発明の概要）
本発明の目的は、デンスコードを可能にし、同時に処理パフォーマンスを比較的高レベルに維持するコンピュータ・システムを提供することである。
【００１０】
本発明の更なる目的は、フェッチを制御するため通常必要となる幾つかのコストの高い計算を除去するコンピュータ・システムを提供することである。
【００１１】
本発明の他の目的は、そのようなコンピュータ・システムで使用されるプログラムを実行する方法、そのようなコンピュータ・システムのためのプログラム、およびそのようなコンピュータ・システムのためのプログラムを生成する方法を提供することである。
【００１２】
本発明は、処理ユニットおよびメモリを含み、処理ユニットがメモリからメモリ・ラインをフェッチし、メモリ・ラインからの命令を実行するように構成され、各々のメモリ・ラインは全体をフェッチされて複数の命令を保持することができ、少なくとも１つの命令は、処理ユニットが現在のメモリ・ラインからの命令を処理している時に、後続のメモリ・ラインへの境界を横断することによって処理の一部分がどのように影響されるかを処理ユニットがどのように制御すべきかを明示的信号で知らせる情報を含み、処理ユニットは、情報によって知らされたように前記一部分を制御することによって情報に応答するように構成されているコンピュータ・システムを提供する。
【００１３】
命令は、境界の横断がどのように制御されなければならないかを、命令の中で明示的に知らせるので、コンピュータ・システムは、前もって、遅れることなく、境界横断の影響を処理するように進行することができる。例えば、或る適切な明示的信号を使用することによって、新しいメモリ・ラインは、必要な時に、遅れることなくフェッチされることができ、他の明示的信号を使用することによって、プログラム・カウンタは、パディング・ビットが処理される前に、新しいプログラムラインへ再整列することができ、更に他の明示的信号を使用することによって、もし分岐目標を処理するため他のメモリ・ラインが必要とされるならば、処理は即時に停止されることができる。
【００１４】
「明示的信号」は、例えば、メモリ・ラインをプリフェッチする必要性が、現在のプログラム・カウンタおよび計算された命令長から続く時のような、暗黙的信号から区別される。従って、プリフェッチに関連する操作の制御は、明示的信号によって単純化およびスピードアップがなされる。暗黙的信号を有する情報と対比して、分離された明示的信号を有する情報は、明示的信号によって制御されるアクションを除いて、アクションを制御する十分な情報を提供することはない。
【００１５】
好ましくは、プログラム内の全ての命令は、ロード命令、記憶命令、加算命令など、命令のタイプに関係なく、そのような情報を含む。実施形態において、情報の一部分又は全体は、或る命令から省略されてよい。例えば、実施形態において、プリフェッチおよび停止に関する信号は、メモリ・ラインのスタートに置かれる命令から省略される。
【００１６】
本発明に従ったコンピュータ・システムの実施形態において、現在のメモリ・ラインの中の命令は、後続の命令の少なくとも一部分が後続のメモリ・ラインに記憶されているため後続のメモリ・ラインをフェッチしなければならないか否かを明示的に知らせる。従って、後続のメモリ・ラインは、必要な時に、遅れることなく、フェッチされることができる。これは、次のメモリ・ラインを待つことに起因する命令サイクルの損失を防止し、また、メモリ・ラインの不必要なフェッチを防止する。好ましくは、次のメモリ・ラインをフェッチする信号は、この目的に専用の、命令の中のビットである。
【００１７】
本発明に従ったコンピュータ・システムの実施形態において、現在のメモリ・ラインの中の現在の命令は、プログラム・カウンタが、現在のメモリ・ラインの残りの部分にあるパディングをスキップして、後続のメモリ・ラインのスタートへ進むべきか否かを明示的に知らせる。これは、特に、次の命令（後続のメモリ・ラインのスタートに存在する）が、現在のメモリ・ラインの現在の命令の後にフィットしない非圧縮分岐目標命令である時に有用である。再整列する信号を使用することによって、この命令の実行は、再整列するか否かをパディングから決定する遅延を伴うことなくスタートされることができる。好ましくは、再整列する信号は、この目的に専用の、命令の中のビットである。
【００１８】
本発明に従ったコンピュータ・システムの実施形態において、現在のメモリ・ラインの中の現在の命令は、もしその命令が分岐目標として到達されるのであれば、後続のメモリ・ラインから命令の残りをフェッチするため命令の処理を停止すべきか否かを明示的に知らせる。これは、異なったメモリ・ラインにまたがる分岐目標命令の処理を簡単にする。停止ビットによって、先行命令の後にすぐ続いて異なったメモリ・ラインへ伸びるように、分岐目標を置くか（メモリ空間を節約するが、停止に起因するスピードの費用がかかる）、分岐目標命令をメモリ・ラインのスタートに再整列して、ただ１つのメモリ・ラインをフェッチした後で、分岐目標命令がスタートから実行されるようにし、また非圧縮形式で記憶できるようにするか（メモリ空間の費用で１クロック・サイクルを得る）を選択することができる。好ましくは、この選択は、命令が分岐目標として使用される頻度に依存し、頻度の多い分岐目標は再整列される。好ましくは、停止する信号は、この目的に専用の、命令の中のビットである。
【００１９】
実施形態において、コンピュータ・システムはＶＬＩＷシステムである。その命令は、異なった機能ユニットのための操作およびヘッダを含み、ヘッダは明示的信号を有する情報を含む。従って、ヘッダのオーバヘッドは、異なった操作によって共用される。本発明は、特に、ＶＬＩＷプロセッサに有用である。なぜなら、ＶＬＩＷプロセッサは、メモリ・ライン境界を横断する可能性が高い比較的長い命令を有するからである。
【００２０】
本発明は、更に、そのようなコンピュータ・システムのためのコンピュータ・プログラム（コンピュータ読み取り可能媒体によって移送される）に関する。そのようなプログラムにおいて、コンピュータ・システムがメモリ・ラインを効率的に処理するように強制するため、明示的信号は、命令がメモリ・ラインに伸びる様式に従って設定される。例えば、正しい時間にメモリ・ラインをプリフェッチし、もしメモリ・ラインがパディングを含むならば再整列し、又は、もし分岐目標として到達される命令が複数のラインへ伸びるならば停止するように、システムへ指令を与える。本発明は、更に、そのようなコンピュータ・プログラムを生成する方法に関する。
【００２１】
コンピュータ・システムは、例えば、組み込みシステムの分野におけるように、単一のチップの上に多数のプロセッサ（例えばＤＳＰ）を含んでよい。しかし、コンピュータ・システムは、１つのコンピュータ・プロセッサ、例えば、ローカル・コンピュータ装置、例えばパーソナル・コンピュータに置かれた中央プロセッサ・ユニット（ＣＰＵ）を含むか、代替的に、ローカル又はグローバルのコンピュータ・ネットワークの中で相互接続された多数のコンピュータ装置に置かれた多数のプロセッサ・ユニットを含んでよい。代替的に、それは、ローカル・コンピュータ装置から離れた中央コンピュータに置かれた処理ユニットを含んでよい。中央コンピュータ装置は、例えばサーバ装置であってよい。
【００２２】
好ましくは、各々の命令はヘッダを設けられる。即ち、各々の命令へ、命令ワードに関連した情報を含む多数のビットが付加される。ヘッダは少なくとも１つのフェッチ制御ビットを含む。更に、ヘッダは、命令ワードをどのように解凍するかに関連した情報、例えば、どこで非操作（ＮＯＰ）ビットをどのように再挿入するかに関する情報を含んでよい。少なくとも１つのフェッチ制御ビットの値は、続いて実行される命令ワードの解凍および実行を可能にする十分なビットがフェッチされたか否かに関する情報を提供する。即ち、ヘッダは、続いて実行される命令ワードに関する情報、およびヘッダが属する命令ワードに関する情報を含む。従って、フェッチ制御ビットは、次のメモリ・ラインがフェッチされるべきか否か、分岐目標がフェッチされる可能性があるか否か、そしてこの場合、分岐目標の解凍および実行を可能にするため幾つのメモリ・ラインをフェッチするのが必要であるかに関する情報を提供し、および／又は、フェッチ制御ビットは、圧縮されたＶＬＩＷのコード・サイズおよびプロセッサ・パフォーマンスを最適化するため、即ち、コードをできるだけ稠密（デンス）にしてコンピュータ・ロジック回路をできるだけ効率的に使用するため、どのメモリ・ラインが、どのようにして、また、いつフェッチされるべきかに関する適切な他の情報を提供してよい。
【００２３】
命令ワードを形成する全てのビットがフェッチされた時に、十分なビットがフェッチされている。即ち、解凍および実行がスタートされる前に、全ての圧縮された命令ワードがメモリからフェッチされていなければならない。そうでない場合、コンピュータ・ロジック回路は、解凍および実行の間、フェッチされる命令ワードの残りの部分を待たなくてはならず、それによってコンピュータ・ロジック回路の非効率的使用を生じる。従って、もし現在の命令ワードの実行が完了した時に、直ちに、続いて実行される命令ワードが完全に利用可能であることを確認することができれば、コンピュータ・ロジック回路の非常に効率的な利用が提供されるであろう。
【００２４】
更に、本発明は、前述したようなコンピュータ・プログラムを含むコンピュータ読み取り可能媒体を提供する。コンピュータ読み取り可能媒体は、例えば、静止コンピュータ読み取り可能媒体、例えば、ハード・ディスク、読み出し専用メモリ（ＲＯＭ）、例えばＥＰＲＯＭ又はＥ２ＰＲＯＭ、および／又は他の任意適切な静止コンピュータ読み取り可能媒体であってよい。代替的又は追加的に、それは携帯用コンピュータ読み取り可能媒体、例えば、コンパクト・ディスク（ＣＤ）、例えばＣＤ−ＲＯＭ、フロッピー・ディスク、ＤＶＤディスク、磁気テープ、ＺＩＰ媒体、携帯用メモリカード、および／又は他の任意適切な携帯用コンピュータ読み取り可能媒体であってよい。
【００２５】
本発明に従ったシステム、方法、およびプログラムのこれらおよび他の有利な様相は、図面を使用して説明されるであろう。
【００２６】
（好ましい実施形態の説明）
図３はコンピュータ・システムを示す。本発明を説明するために使用されるシステム部分のみが示される。システムは、メモリ３０、命令発行ユニット３２、および命令処理ユニット３４を含む。命令発行ユニット３２は、ヘッダ選択ユニット３２０、命令選択ユニット３２２ａ〜３２２ｃ、選択制御ユニット３２４、アドレシング・ユニット３２６、先行ライン・レジスタ３２８、およびＮＯＰソース３２９を含む。例として、３つの命令選択ユニット３２２ａ〜３２２ｃが示されるが、それより多いか少ない命令選択ユニットが使用されてよい。アドレシング・ユニット３２６は、メモリ３０へ結合されたアドレス出力を有する。メモリ３０は、データ出力として命令選択ユニット３２２ａ〜３２２ｃへ結合される。ＮＯＰソース３２９も命令選択ユニット３２２ａ〜３２２ｃへ結合される。命令選択ユニット３２２ａ〜３２２ｃの各々は、命令処理ユニット３４の多数の発行スロット入力３４０ａ〜３４０ｃのそれぞれに結合された出力を有する。
【００２７】
メモリ３０のデータ出力は、更に、ヘッダ選択ユニット３２０および先行ライン・レジスタ３２８の入力へ結合される。先行ライン・レジスタ３２８は、ヘッダ選択ユニット３２０および命令選択ユニット３２２ａ〜３２２ｃへ結合された出力を有する。ヘッダ選択ユニット３２０は、命令処理ユニット３４、選択制御ユニット３２４、命令選択ユニット３２２ａ〜３２２ｃ、およびアドレシング・ユニット３２６へ結合された出力を有する。選択制御ユニットは、ヘッダ選択ユニット３２０および命令選択ユニット３２２ａ〜３２２ｃへ結合された出力を有する。
【００２８】
本発明を説明するために使用されるシステム部分のみが示される。例えば、様々なコンポーネントへのクロック信号接続は示されず、分岐、例外処理などの接続も図示されない。更に、システムは、メモリ３０からの情報を処理ユニット３２でバッファするための様々なレジスタ（図示されない）を含むことになる。これらのレジスタによって、命令発行ユニット３２との間で送信又は受信された情報が命令発行ユニット３２によって処理又は組み立てられている間に、メモリ３０および処理ユニット３２は他のアクションを実行することができる。
【００２９】
動作において、命令発行ユニット３２は、メモリ３０からメモリ・ラインをフェッチし、メモリ・ラインからの命令を解凍し、命令を実行のために命令処理ユニット３４へ送る。命令処理ユニット３４は、命令をデコードし、命令のオペランドをフェッチし、命令を実行し、命令の結果を書き戻す。例として、本発明はＶＬＩＷプロセッサについて説明されることになる（ＶＬＩＷ＝Ｖｅｒｙ  Ｌａｒｇｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ、極長命令ワード）。ＶＬＩＷプロセッサは、並列に実行するそれぞれの命令（通常、「操作」と呼ばれる）を受け取るための多数の発行スロット３４０ａ〜３４０ｃを有する。
【００３０】
命令発行ユニット３２の中で、アドレシング・ユニット３２６はメモリ・ラインのアドレスをメモリ３０へ出力する。メモリからの各々のメモリ・ライン（即ち、アドレシング・ユニット３２６からのアドレスによってアドレスされた一連の、例えば、８つのロケーションからのデータ）出力は、命令選択ユニット３２２ａから３２２ｃへ印加される。各々の命令選択ユニット３２２ａ〜３２２ｃは、命令実行ユニット３４の発行スロット３４０ａ〜３４０ｃのそれぞれの１つのための操作又はＮＯＰを選択する。操作は、メモリ３０から受け取られたメモリ・ラインから選択されるか、先行ライン・レジスタ３２８に記憶されたメモリ３０からの先行メモリ・ライン、又はＮＯＰソース３２９から選択される。ＮＯＰソース３２９はＮＯＰ（無操作）命令を生成する（実際には、ＮＯＰ命令は非常に簡単なので、それらは命令選択ユニット３２２ａ〜３２２ｃの内部で生成されてよく、ＮＯＰソース３２９は省略されてよい）。
【００３１】
命令選択ユニット３２２ａ〜３２２ｃによる選択は、選択制御ユニット３２４およびヘッダの内容によって制御される。ヘッダはヘッダ選択ユニット３２０によって命令から選択される。ヘッダ選択ユニット３２０は、メモリ３０又は先行ライン・レジスタ３２８から受け取られたメモリ・ラインの中の命令のヘッダからの情報を供給する。このヘッダは、発行スロット３４０ａ〜３４０ｃのどれが無操作命令を受け取るべきか、また、発行スロット３４０ａ〜３４０ｃのどれがメモリ・ラインの命令からの操作を受け取るべきかを指定する。原則として、発行スロット３４０ａ〜３４０ｃの連続したスロットに対する操作は、メモリ・ライン内の連続した位置に置かれ、前記連続した位置は、もし命令が複数のメモリ・ラインに伸びていれば、次のメモリ・ラインの連続位置へ続いている。特定の発行スロット３４０ａ〜３４０ｃに対するメモリ・ラインの中の操作の位置は、ヘッダによって指示されたように、メモリ・ラインから操作を受け取る先行発行スロット３４０ａ〜３４０ｃの数に依存する。選択制御ユニット３２４は、メモリ・ラインの中の命令のスタートの位置を、命令選択ユニット３２２ａ〜３２２ｃおよびヘッダ選択ユニット３２０へ知らせる。選択制御ユニット３２４は、知らされた位置を、各々の時間に、無操作ではなくメモリ・ラインからの操作を受け取る発行スロット３４０ａ〜３４０ｃの数に対応する量だけ増加する。
【００３２】
ヘッダ選択ユニット３２０内のヘッダは、後続の命令を含むメモリ・ラインのフェッチに必要なハードウェアを単純化するヘッダからの追加情報を供給する。ヘッダ選択ユニット３２０からの最初のビットは、「プリフェッチ（Ｐ）ビット」である。このビットは、実行される次の命令がメモリ３０から現在受け取られているメモリ・ラインに含まれているかどうか、又は、命令の一部分又は全体が次のメモリ・ラインに含まれているかどうかを示す。後者の場合、アドレシング・ユニット３２６が、次のメモリ・ラインのためのプリフェッチ・コマンドをメモリ３０へ発行することによって、プリフェッチ・ビットに応答する。次のメモリ・ラインがプリフェッチされる時に、古い記憶は先行ライン・レジスタ３２８へコピーされ、従って先行するラインの中にある命令部分は、命令選択ユニット３２２ａ〜３２２ｃによって、先行ライン・レジスタ３２８からアクセスされることができる。
【００３３】
ヘッダ選択ユニット３２０からの２番目のビットは「再整列（Ｒ）ビット」である。再整列ビットは、実行されるべきでないパディングが命令に続いているかどうかを示す。もし続いていれば、選択制御ユニット３２４は、指示された位置を命令選択ユニット３２２ａ〜３２２ｃへ更新することによって再整列ビットに応答し、従って、その位置は次の命令のために次のメモリ・ラインのスタートを指すことになる。
【００３４】
ヘッダ選択ユニット３２０からの３番目のビットは、「停止（Ｓ）ビット」である。停止ビットは、複数のラインの最後がまだフェッチされていない場合に、現在の命令が複数のラインへ伸びているかどうかを示す。これは、典型的には、再整列に起因するメモリ空間の損失を防止するように、命令が複数のラインへ伸びる分岐目標である場合に起こる。この場合、命令処理ユニット３２は、命令の残りを含む次のメモリ・ラインをフェッチするために必要な期間の間実行を停止することによって、停止ビットに応答することになる。
【００３５】
もちろん、図１は、コンピュータ・システムを実現する方式の１つの例を示すにすぎない。多くのバリエーションが可能である。例えば、メモリ（又は、図示されていないメモリ・バッファ・レジスタ）からのメモリ・ラインを直接使用する代わりに、バッファの中にメモリ・ラインを記憶し、新しい命令が処理される度に、バッファの内容が選択制御ユニット３２４の制御のもとでシフトされ、従って、命令のスタート部（ヘッダを含む）が常にバッファ内の同じ位置にあるようにすることができる。この場合、特別のヘッダ選択ユニットは必要でない。最初の発行スロットに対する命令選択ユニット３２２ａは、ＮＯＰを有する発行スロットが、幾つ最初の発行スロットに先行するかを計算する必要がなく、従って他の命令選択ユニット３２２ｂ〜３２２ｃよりも、はるかに簡単であることができる。この命令ユニットは、ヘッダの制御のもとで、命令からの最初の操作又はＮＯＰを選択する必要があるだけである。
【００３６】
図１に示されるＶＬ２ＩＷ命令フォーマットは、ヘッダ１、およびそれに続いた多数の操作セグメント２を含む。操作セグメント２の数は、プロセッサが並列に発行することのできる操作の数、この場合はＣ、を超過してはならない。ヘッダ１はＣ個の伸長制御ビットＥ１．．．ＥＣを含む。ｉ番目のスロットが無操作（ＮＯＰ）を実行する場合、伸長制御ビットＥｉは「０」である。そうでない場合、それは「１」であり、ＶＬ２ＩＷは発行スロットｉのために操作セグメントを含む。
【００３７】
スロットがＮＯＰ操作を実行する時に、それは問題のスロットが問題のクロック・サイクルの間アイドルであることを意味する。ＶＬＩＷアーキテクチャにおいて、命令のグループが同時に実行される。これを行なうため、個々の命令は相互に依存しないことを確認することが必要である。この目的のため、命令の中にＮＯＰを含めることが必要であるかも知れない。命令が圧縮される時に、これは通常ＮＯＰを除去することによって行なわれる。命令が後の時点で実行されなければならない時に、同時に実行される命令が相互に依存しないという要件を満足させるため、ＮＯＰが再挿入されなければならない。
【００３８】
ヘッダ１は、更に、フェッチ制御ビットＦを含む。フェッチ制御ビットＦは、図２と関連づけて後で説明される。最後に、ヘッダ１は、多数の補助ビットＡ１．．．ＡＸを含む。これらの補助ビットは、操作セグメント自身の中にフィットしない追加の操作セグメント情報をエンコードするために使用されることができる。
【００３９】
図２は、ＶＬ２ＩＷ命令が、プログラム・メモリの中でどのように記憶されるかを示す。図２において、全部で９つの命令を記憶された６つのメモリ・ラインが示される。各々の命令はヘッダ１および多数の操作セグメント２を含む。１つのプログラム・メモリ・ラインは、連続的に記憶された多数のＶＬ２ＩＷ命令（の一部分）を含むことができる。１つのクロック・サイクルで、最悪のサイズ（即ち、ＶＬ２ＩＷヘッダおよび後続の非圧縮ＶＬＩＷ命令（例えば、アドレス０でスタートする命令）のビット・サイズ）のＶＬ２ＩＷ命令をフェッチすることができる。
【００４０】
順次のプリフェッチは、命令が、伸長、デコーディング、および実行のために時間どおりにフェッチされることを確実にする。即ち、１つの命令を実行している間、次の命令の解凍および実行を可能にする十分なビットがフェッチされることを確実にする。従って、最初の命令の実行が完了した時に、次の命令が解凍および実行の準備を完了する。これは処理時間を節約する。
【００４１】
「分岐予測」とは、分岐命令の過去の記録に基づいて、分岐命令がジャンプするか否かをマイクロプロセッサが予測しようと試みることである。もし分岐命令が、例えば過去４回ジャンプしたのであれば、次回もジャンプする可能性が高い。パイプラインが使用されるプロセッサで、プロセッサが分岐命令に出会った時に、プロセッサは、前述した予測に従ってパイプラインの中へ次にロードする命令を決定することになる。即ち、プロセッサは、正しい命令がロードされたかどうかを確実には知らない。もし予測が誤りであったことが分かると、パイプラインは消去される必要があり、予測に基づいてなされた全ての計算は廃棄される必要がある。従って、多大の処理時間が失われてしまう。しかし、もし予測が正しかったことが判明すると、多大の時間が節約される。分岐予測は、前述したように統計的情報に基づいて実行されるので、予測は、誤りの可能性よりも正しい可能性が高い。即ち、一日の終わりに、処理時間は節約されている可能性が高い。たとえ、パイプラインが、時折、予測の誤りが判明したことに起因して、消去されなければならないとしてもそうである。
【００４２】
分岐予測に代えて、他のアプローチが使用されてよい。深くないパイプラインを有するプロセッサは、分岐アドレスを時間どおり得るため、バイパス・ロジックを使用してよい。遅延分岐をサポートするプロセッサは、分岐シャドウ（即ち、分岐命令を含む命令がフェッチされるサイクルと、分岐目標がフェッチされる時間との間に経過するサイクル）を使用して、プログラムで分岐命令に続くが論理的には分岐が取られる前に実行されなければならないプログラム部分に属する命令を実行してよい。このアプローチが、好ましいアプローチである。
【００４３】
分岐予測、又は前述した類似のアプローチなしに、分岐目標は、分岐が取られる（予測される）場合に、時間どおりにプリフェッチされることはできない。更に、もし分岐目標のＶＬ２ＩＷ命令が２つのメモリ・ラインに伸びているならば、完全な分岐目標のフェッチは２サイクルを取り、１停止サイクルのパフォーマンス・ペナルティを生じる（プロセッサが完全な分岐目標のフェッチを待つ間に）。分岐目標を含む命令ワードが、コード・サイズを最適化するために圧縮される時に、分岐目標が２つのメモリ・ラインに伸びていないことを確実に知ることはできない。従って、もし分岐予測が使用されなかったならば、かなりのペナルティが生じることになる。停止を防止するため、もし分岐目標が現在のプログラム・メモリ・ラインに完全にフィットしなければ、次のプログラム・メモリ・ラインのスタートに分岐目標を置くことができる。従って、そのような分岐目標の再整列は、現在のラインでパディング・ビットを必要とし、パディング・ビットはコード・サイズを増加させる。
【００４４】
本発明に従えば、フィットしない分岐目標における停止と、フィットしない分岐目標の再整列との組み合わせが可能である。これは、コード・サイズに対してパフォーマンスをトレードオフすることを可能にする。もちろん、もしヘッダ・ビットを最小に保つ必要があれば、停止又は再整列のいずれかによる解決法も可能である。
【００４５】
本発明に従えば、３つのフェッチ制御ビットが定義される。これらのビットは、停止（Ｓ）ビット、再整列（Ｒ）ビット、およびプリフェッチ（Ｐ）ビットである。プリフェッチ・ビットは常に存在する。それは、フェッチされる次のＶＬ２ＩＷ命令が現在のメモリ・ラインにフィットしないことを、プロセッサの命令フェッチ・ロジックへ知らせる。従って、次の命令の解凍と実行を可能にするため、次のメモリ・ラインがフェッチされなければならない。このビットの使用は、ハードウェアがプリフェッチの正しい瞬間を決定する必要性を除く。正しい瞬間は、例えば電力の消費を節減するため、不必要なフェッチが最小にされる瞬間である。もしプリフェッチ・ビットが使用されなければ、命令フェッチ・ハードウェアの臨界経路でコストのかかる追加の計算が必要になる。
【００４６】
プロセッサの要件に依存して、停止ビット、再整列ビット、又はこれらの双方が命令フォーマットで使用される。再整列ビットは、解凍されるべき次の命令が再整列されること、即ち、現在の命令に続くパディング・ビットがスキップされるべきことを、命令伸長ロジックへ知らせる。分岐が取られる時に、停止ビットは、分岐先の命令が、１サイクルの代わりに２サイクルでフェッチされなければならないこと、即ち停止サイクルが必要であることを、命令フェッチ・ロジックへ知らせる。
【００４７】
図２は、プログラム・メモリの中にＶＬ２ＩＷコードを記憶した例を示す。各々の命令ワードにおけるヘッダ１の最初の３ビットは、停止ビット、再整列ビット、およびプリフェッチ・ビットである。最初の命令（即ち、アドレス０でスタートする命令）の停止ビット、再整列ビット、およびプリフェッチ・ビットは、０、０、および１の値を有する。これは次のことを示す。
【００４８】
停止サイクルの必要性はないこと。
【００４９】
次の命令は再整列されないこと。即ち、現在の命令に続くパディング・ビットは存在しないこと。
【００５０】
次の命令の解凍および実行を可能にするため、次のメモリ・ラインをフェッチしなければならないこと。
【００５１】
パディング・ビットは最初の命令に続いていないこと、および、次の命令（即ち、アドレス２８でスタートする命令）の全体が次のメモリ・ラインに置かれていること、従ってこのメモリ・ラインは、この命令の解凍および実行の前にフェッチされなければならないことが、図面から明らかである。アドレス８における前のメモリ・ワードに完全にフィットしない分岐目標が、アドレス１６に置かれている。分岐目標は、アドレス１６のワードのスタートへ再整列される。従って、アドレス８のワードの終わりに、パディング・ビットが必要である。先行する命令（即ち、アドレス１３からスタートする命令）の再整列ビットおよびプリフェッチ・ビットは、１および１の値を有する。これは、パディング・ビットが現在の命令に続くこと、および次のメモリ・ライン（次の命令がこのメモリ・ラインへ再整列されたので、次の命令の全体を含む）が、次の命令の解凍および実行の前にフェッチされるべきことを示す。
【００５２】
アドレス３９に、他の分岐目標が置かれる。この目標は、アドレス３２からスタートするメモリ・ラインに完全にはフィットしない。しかし、今度は、再整列は使用されない。その代わりに、分岐目標命令（即ち、アドレス３９からスタートする命令）のヘッダの停止ビットを高にする（即ち、値１を与える）ことによって、停止が強制される。更に、先行する命令、即ちアドレス３２からスタートする命令のプリフェッチ・ビットは値１を有する。これは、次の命令の解凍および実行の前に、次のメモリ・ラインをフェッチしなければならないことを示す。これが正しいことは図面から明らかである。なぜなら、次の命令（アドレス３９からスタートする）はメモリ・ラインにまたがるからである。従って、既に利用可能な命令部分は別にして（事実として、アドレス３２からスタートするメモリ・ラインは、先行する命令を解凍および実行するため既にフェッチされているため）、命令の残りの部分を利用可能にすること、即ち次のメモリ・ラインをフェッチすることが必要である。
【００５３】
本発明は、ディジタル信号プロセッサ（ＤＳＰ）のコアのシーケンサの中で命令フェッチおよび解凍ユニットを実現する場合に使用される。ハードウェアは、フェッチ制御ビットを次のように解釈する。
【００５４】
次のような定義を仮定する。
【００５５】
Ｓ＝分岐から分岐目標へ到着した時にに停止（Ｓ＝停止、ｓ＝停止なし）
Ｒ＝次の命令の再整列（Ｒ＝再整列、ｒ＝再整列なし）
Ｐ＝次のメモリ・ラインのプリフェッチ（Ｐ＝プリフェッチ、ｐ＝プリフェッチなし）
命令に到達するためには、２つの方法がある。命令は、先行する命令から直接到達されるか、取られた分岐から到達されてよい。
【００５６】
命令がすぐ前の命令（取られた分岐ではない）から到達される時に、停止ビットは無視され（即ち、停止ビットの値は、フェッチ制御ロジックによるフェッチ制御ビットの解釈からは重要ではない）、他のフェッチ制御ビットは次のように解釈される。
【００５７】
ｓｒｐ／Ｓｒｐ：  次の命令はフィットする。従って何もしない。
【００５８】
ｓｒＰ／ＳｒＰ：  次の命令はフィットしないが、再整列されない。従ってプリフェッチする。
【００５９】
ｓＲＰ／ＳＲＰ：  次の命令はフィットせず再整列される。従ってプリフェッチされ、次のメモリ・ラインへ再整列される。
【００６０】
最初の場合、次の命令は、既にフェッチされたメモリ・ラインにフィットする。従って、前記命令を解凍および実行するため、追加のメモリ・ラインをフェッチすることは必要でない。
【００６１】
２番目および３番目の場合、次の命令はフィットしない。従って、双方の場合に、前記命令の解凍および実行の前に次のメモリ・ラインをフェッチすることが必要である。２番目の場合、次の命令は再整列されないが、命令はフィットしないのであるから、メモリ・ラインをまたぐことが必要であり、従ってプリフェッチが必要になる。３番目の場合、次の命令は再整列される。従って現在のメモリ・ラインは、スキップされなければならないパディング・ビットを与えられる。
【００６２】
命令が、取られた分岐から到達される時に、フェッチ・ビットは次のように解釈される。
【００６３】
ｓｒｐ：  分岐目標はフィットし、次の命令はフィットする。従って何もしない。ｓｒＰ：  分岐目標はフィットし、次の命令はフィットしないが、再整列されない。従ってプリフェッチする。
【００６４】
ｓＲＰ：  分岐目標はフィットし、次の命令はフィットせず、再整列される。従ってプリフェッチし、次のメモリ・ラインへ再整列される。
【００６５】
Ｓｒｐ：  分岐目標はフィットせず、次の命令はフィットする。従って分岐目標の２番目の部分を含む次のメモリ・ラインをフェッチするために停止する。
【００６６】
ＳｒＰ：  分岐目標はフィットせず、次の命令はフィットしないが再整列されない。従って停止して、分岐目標の２番目の部分を含む次のメモリ・ラインをフェッチし、次のメモリ・ラインの後に置かれたメモリ・ラインをプリフェッチする。
【００６７】
ＳＲＰ：  分岐目標はフィットせず、次の命令はフィットせず再整列される。従って停止して、分岐目標の２番目の部分を含む次のメモリ・ラインをフェッチし、次のメモリ・ラインの後に置かれたメモリ・ラインをプリフェッチし、次のメモリ・ラインの後に置かれたメモリ・ラインへ再整列する。
【００６８】
命令がすぐ前の命令から到達される場合に関する注意は、ここでも等しく適用される。従って、停止ビットは、分岐目標がまたがるラインの数を示すこと、即ち、解凍が始まる前に分岐目標の全体をフェッチさせるため、停止サイクルが必要であるかどうかを示すことが明らかであろう。
【００６９】
従って、本発明は、デンスコードが得られ、同時に処理パフォーマンスを比較的高レベルに維持するような方式で、極長命令ワード（ＶＬＩＷ）を作成、圧縮、および解釈する方法を提供する。なぜなら、本発明は、コード密度と処理パフォーマンスとの間のトレードオフを可能にするからである。
【００７０】
更に、本発明は、デコーダのフィードバック・ループで通常必要となるコストの高い幾つかの計算を除去するＶＬＩＷを作成、圧縮、および解釈する方法を提供する。これは、続いて実行される命令ワードをどのようにフェッチするかの情報を、現在解凍および実行されている命令ワードのヘッダで利用可能にすることによって得られる。
【００７１】
更に、本発明は、ＶＬＩＷをデンスコードへ圧縮できるような方式で、また処理パフォーマンスが比較的高レベルに保たれるような方式で、ＶＬＩＷを形成する命令ワードをフェッチ、解凍、および実行するコンピュータ・ロジック回路を有するコンピュータ・システムを提供する。これは前述したようにして得られる。
【００７２】
図４は、命令のプログラムのために、例えば、ＶＬＩＷプロセッサの命令をコンパイルするコンパイラ・プログラムによって実行される命令生成プロセスのフローチャートである。フローチャートは、命令内の操作が生成される最初のステップ４１を含む。命令のヘッダの中で、Ｐ、Ｓ、およびＲビットがクリアされる。２番目のステップ４２において、命令がＮＯＰ操作を含むか否かが決定される。もし含まなければ、３番目のステップ４３ａが実行される。ステップ４３ａは、命令の長さをフル命令長へ設定し、発行スロットがＮＯＰを受け取らないことを指示するように、伸長制御ビットを充填する。もし命令の中にＮＯＰがあれば、代替のステップ４３ｂが実行される。ステップ４３ｂにおいて、非ＮＯＰ操作がＮＯＰ操作の位置へ移動され、命令からＮＯＰを効果的にカットする。伸長制御ビットは、ＮＯＰの位置を指示するように設定され、長さは、命令の中に残された非ＮＯＰ操作の数に従って設定される。
【００７３】
４番目のステップ４４において、命令の長さが、前の命令の終わりの位置に加えられた時に、命令がメモリ・ラインの終わりを越えるような長さであるかどうかが決定される。もしそのような長さでなければ、５番目のステップが実行され、命令およびそのヘッダが、後の実行のためにコンピュータ読み取り可能メモリへ書き込まれる。この後に、他のハウスキーピング、例えば、命令のロケーションに関する情報をラベル相互参照テーブルへ書き込むことが続く。ラベル相互参照テーブルは、或る種の命令、例えば分岐命令に割り当てられるラベルに関連付けられた情報のためのエントリを有する。５番目のステップ４５の後で、プロセスは最初のステップ４１から反復される。
【００７４】
もし４番目のステップ４４が、前の命令に連続して記憶されたとした場合の命令がメモリ・ラインを越えると決定すれば、６番目のステップ４６が実行される。６番目のステップ４６は、命令が分岐目標であるかどうかを決定する（例えば、前のコンパイル段階で生成されるラベル相互参照テーブルの中で命令のエントリを検出することによって、又はコンパイルの間に命令を目標として識別するタグから）。もし命令が分岐目標でなければ、７番目のステップ４７が実行される。ステップ４７において、命令が２ライン以上にまたがることを示すため、前の命令のプリフェッチ・ビットが設定される。その後で、５番目のステップ４５が実行される。
【００７５】
もし命令が分岐目標であれば、命令を再整列するべきか否かを決定するため、８番目のステップ４８が実行される。基本的には、比較的頻繁に実行される命令は再整列されることになる。これは、例えば、プロフィール情報に相談し、命令が何回実行されるかをカウントするプログラムのシミュレーション実行から決定することができる。もしプロフィールからのカウントが閾値を超過すれば、８番目のステップ４８は命令の再整列を決定する。その場合、９番目のステップ４９ｂが実行される。ステップ４９ｂにおいて、前の命令の再整列ビット（Ｒ）が設定され、命令を記憶するための位置インディケータが、次のメモリ・ラインのスタートへ増分される。その後で、５番目のステップ４５が実行され、位置インディケータによって指示された位置へ命令が記憶される。
【００７６】
もし８番目のステップ４８が命令の再整列を決定しなければ、代替の９番目のステップ４９ａが実行される。ステップ４９ａにおいて、現在の命令の停止ビットＳおよび前の命令のプリフェッチ・ビットが設定される。位置インディケータは、前の命令の終わりへ不変のままに維持される。その後で、５番目のステップ４５が実行される。
【００７７】
このように、ＮＯＰを除去し、および／又はパディングなしで命令が２つのメモリ・ラインをまたぐようにすることによって、コード・サイズが縮小される。命令がまたがない時の実行スピードの利得を、増加するメモリ・サイズに対してバランスさせるように、分岐目標をまたがらせるかどうかの選択がなされる。停止ビットおよび再整列ビットは、比較的簡単なハードウェアによってこのサポートを確実にする。プリフェッチ・ビットを追加することによって、新しいメモリ・ラインが本当に必要なメモリ・サイクルへプリフェッチを限定することが可能になる。これはスラッシング（不必要なプリフェッチに起因するメモリ・サイクルの損失）を減少させる。
【図面の簡単な説明】
【図１】
可変長極長命令ワード（ＶＬ２ＩＷ）命令フォーマットを示す図である。
【図２】
コード・メモリ内に記憶されたＶＬ２ＩＷコードの例を示す図である。
【図３】
コンピュータ・システムを示す図である。
【図４】
コンパイル・プロセスのフローチャートである。
【符号の説明】
３０  メモリ
３２  命令発行ユニット
３４  命令処理ユニット
３２０  ヘッダ選択ユニット
３２２ａ〜３２２ｃ  命令選択ユニット
３２４  選択制御ユニット
３２６  アドレシング・ユニット
３２８  先行ライン・レジスタ
３２９  ＮＯＰソース
【図１】
2004519028.tif 000003
【図２】
2004519028.tif 000004
【国際公開パンフレット】
2004519028.tif 000005
2004519028.tif 000006
2004519028.tif 000007
2004519028.tif 000008
2004519028.tif 000009
2004519028.tif 000010
2004519028.tif 000011
2004519028.tif 000012
2004519028.tif 000013
2004519028.tif 000014
2004519028.tif 000015
2004519028.tif 000016
2004519028.tif 000017
2004519028.tif 000018
2004519028.tif 000019
2004519028.tif 000020
2004519028.tif 000021
2004519028.tif 000022
2004519028.tif 000023
2004519028.tif 000024
2004519028.tif 000025
2004519028.tif 000026
2004519028.tif 000027
2004519028.tif 000028
【国際調査報告】
2004519028.tif 000029
2004519028.tif 000030
2004519028.tif 000031