(57)【要約】【課題】  レジスタウィンドウ方式を採用した情報処理装置において、発生したトラップが、ｇｌｏｂａｌレジスタの値のみを必要とする場合には、ｇｌｏｂａｌレジスタの転送のみを実行することを可能とする情報処理装置を提供する。【解決手段】  レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送動作を行う情報処理装置において、トラップを検出し（１０）、そのトラップがｇｌｏｂａｌレジスタの値のみの転送で足りるトラップであるか否かを判別し（１２）、ｇｌｏｂａｌレジスタの値のみの転送で足りるトラップである場合には、ｇｌｏｂａｌレジスタの値のみをマスタレジスタからワークレジスタへデータ転送する（１５）ことにより、上記課題の解決を図る。【選択図】図２
2006039874.tif 000002
【特許請求の範囲】
【請求項１】
レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送動作を行う情報処理装置において、
例外処理の発生を示す例外処理発生情報を取得する取得手段と、
前記例外処理発生情報を判別する判別手段と、
前記判別手段による判別結果に基づいて、所定のデータの転送を制御する転送制御手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記判別手段は、前記例外処理発生情報に基づいて、該例外処理がウィンドウの切り替えが起こる処理であるか否か、または前記ワークレジスタを初期状態にする処理か否かを判別することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記転送制御手段は、前記判別の結果、前記例外処理がウィンドウの切り替えが起こらない処理または前記ワークレジスタを初期状態にしない処理である場合には、所定のデータのみを転送することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送動作を行う情報処理装置において、
例外処理の発生を示す例外処理発生情報を検出する検出手段と、
前記例外処理発生情報を判別し、該判別結果を示すフラグ情報を生成するフラグ生成手段と、
前記フラグ情報に対応したデータ転送サイクルをカウントするデータ転送制御カウンタ手段と、
前記データ転送サイクルに基づいて、所定のタイミングで前記データを転送するように制御するデータ転送タイミング制御手段と、
を備えることを特徴とする情報処理装置。
【請求項５】
前記フラグ生成手段は、前記例外処理発生情報に基づいて、該例外処理がウィンドウの切り替えが起こる処理であるか否か、または前記ワークレジスタを初期状態にする処理か否かを判別し、該例外処理がウィンドウの切り替えが起こらない処理または前記ワークレジスタを初期状態にしない処理の場合には第１のフラグ情報を生成し、それら以外の処理の場合には第２のフラグ情報を生成することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記データ転送タイミング制御手段は、前記第１のフラグ情報が生成された場合には、所定のデータのみを転送することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送を制御する情報処理装置のデータ転送制御方法において、
例外処理の発生を示す例外処理発生情報を取得し、
前記例外処理発生情報を判別し、
前記判別結果に基づいて、所定のデータの転送を制御する
ことを特徴とするデータ転送制御方法。
【請求項８】
前記例外処理発生情報に基づいて、該例外処理がウィンドウの切り替えが起こる処理であるか否か、または前記ワークレジスタを初期状態にする処理か否かを判別することを特徴とする請求項７に記載のデータ転送制御方法。
【請求項９】
前記判別の結果、前記例外処理がウィンドウの切り替えが起こらない処理または前記ワークレジスタを初期状態にしない処理である場合には、前記所定のデータのみを転送することを特徴とする請求項７に記載のデータ転送制御方法。
【請求項１０】
レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送を制御する情報処理装置のデータ転送制御方法において、
例外処理の発生を示す例外処理発生情報を検出し、
前記例外処理発生情報を判別し、該判別結果を示すフラグ情報を生成し、
前記フラグ情報に対応したデータ転送サイクルをカウントし、
前記データ転送サイクルに基づいて、所定のタイミングで前記データを転送するように制御する
ことを特徴とするデータ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、特にレジスタウィンドウ方式を採用した情報処理装置に関し、レジスタリードに伴う命令実行抑止を軽減する装置、及び方式に関する。
【背景技術】
【０００２】
今日、情報化社会を迎え、処理する情報量も飛躍的に増加したために、よりいっそうの情報処理能力が求められるようになり、プロセッサの処理速度向上のために様々な提案がなされている（例えば、特許文献１、特許文献２、特許文献３）。
【０００３】
汎用レジスタの構成として、近年レジスタウィンドウ方式が提唱されている（例えば、特許文献２、特許文献３。）。これは複数のレジスタセット（レジスタウィンドウ、以下、単にウィンドウという。）を有することで、サブルーチンのコール／リターン時などに発生するレジスタのメモリへの退避、復帰を不要にするためのものである。但し、ウィンドウの数が膨大になってくると、レジスタから実行ユニットへのデータリードが高速に行えなくなるという問題を抱えていた。
【０００４】
そこで、汎用レジスタ（以後ＧＰＲ（Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ  Ｒｅｇｉｓｔｅｒｓ）と呼ぶ）のうちで現状参照しているウィンドウをワークレジスタとして保持し、これにキャッシュのような動作をさせることで、サイズなどに起因するリード・ライト時間のロスを軽減する方式が提唱された。
【０００５】
しかし、現状参照している１ウィンドウのみをワークレジスタとして保持する構成とすると、ウィンドウの切り替えを行う度にワークレジスタへのデータ転送を実行しなければならない。このとき、参照すべきデータが存在しないため、後続の命令はデータ転送が終了するまで実行することは不可能である。
【０００６】
この制約は、命令の処理順序を入れ替えて、プログラムの実行順序に関係なく処理可能な命令から処理を行うアウトオブオーダ命令実行方式で、特に同時命令発行数の多い情報処理装置においては非常に大きな性能低下を招く。
【０００７】
アウトオブオーダ命令実行方式の情報処理装置では、多くの命令をバッファに格納しておき、その中から実行可能な命令をプログラムに指定された実行順序を入れ替えて実行することで、命令のスループットを向上している。
【０００８】
しかし、上記のような制約が存在すると、ウィンドウ切り替えの前後で命令順序の入れ替えは不可能であり、後続に格納してある命令は全て実行を待たなければならず、アウトオブオーダ実行方式は機能しなくなる。
【０００９】
以上のような問題を解決するために、図１１に示すようなワークレジスタに複数のウィンドウを保持する方式が提唱された。
図１１は、一般的なレジスタウィンドウの構成を示す概念図である。汎用レジスタウィンドウセットＧＰＲ１００は、０からｎ−１のｎ（＞０）個（ｎウィンドウ分）のｌｏｃａｌ及びｉｎ／ｏｕｔと、ｇｌｏｂａｌを保持する。１つのｌｏｃａｌは複数のエントリが含まれており、ｉｎ／ｏｕｔ、ｇｌｏｂａｌについても同様である。
【００１０】
ワークレジスタＷＲ１０２は、ｋ（＞０）ウィンドウ分のｌｏｃａｌ及びｉｎ／ｏｕｔと、ｇｌｏｂａｌを保持する。データ転送制御装置１０１は、ＧＰＲからＷＲへの転送に際し、転送されるデータの種類や転送のタイミングなどを制御する。同図では、ＷＲは１ウィンドウ分のデータを保持することができる。このようにすることで、実行ユニット１０３は、ワークレジスタ１０２から読み出すことができるので、読み出し時間の短縮化をはかることができる。
【００１１】
図１２は、一般的なＧＰＲ／ＪＷＲ相関図を示す。この図を参照しながら、以下にＪＷＲ（ワークレジスタセット（Ｊｏｉｎｔｅｄ  Ｗｉｎｄｏｗ  Ｒｅｇｉｓｔｅｒ））の動作について説明する。汎用レジスタウィンドウセットＧＰＲは論理的にリング状に連結され、その管理はＣＷＰ（Ｃｕｒｒｅｎｔ−Ｗｉｎｄｏｗ−Ｐｏｉｎｔｅｒ）にて行われる。
【００１２】
ＪＷＲはＧＰＲのうち（図１２の例では、ＧＰＲは８ウィンドウ分に相当する）、ＣＷＰ−１，ＣＷＰ，ＣＷＰ＋１の３ウィンドウで構成され、ＣＷＰに関連なく使用できるｇｌｏｂａｌレジスタと、ウィンドウ毎にウィンドウ固有のｌｏｃａｌレジスタ、ウィンドウ間のオーバーラップを許すｉｎ／ｏｕｔレジスタを保持している。ここで、１ウィンドウは、ｌｏｃａｌレジスタ、ｉｎ／ｏｕｔレジスタからなる。図１２でいえば、例えば、ｉｎ０，ｌｏｃａｌ０，ｏｕｔ０が１ウィンドウであり、ｉｎ１，ｌｏｃａｌ１，ｏｕｔ１が１ウィンドウであり、・・・ｉｎ７，ｌｏｃａｌ７，ｏｕｔ７が１ウィンドウである。
【００１３】
ここで、ｏｕｔ０とｉｎ１は、領域としては同じものであり、ＣＷＰ−１とＣＷＰとのウィンドウ間での共有領域である。ｏｕｔ１とｉｎ２、ｏｕｔ２とｉｎ３、ｏｕｔ３とｉｎ４、ｏｕｔ４とｉｎ５、ｏｕｔ５とｉｎ６、ｏｕｔ６とｉｎ７、ｏｕｔ７とｉｎ０についても同様である。また、ｌｏｃａｌとは、カレントウィンドウでしか参照できないものをいう。ｇｌｏｂａｌとは、どのウィンドウに切り替えても参照できるレジスタのことである。
【００１４】
なお、ｉｎ／ｏｕｔ０−７，ｌｏｃａｌ０−７，ｇｌｏｂａｌ（ｇｌｏｂａｌ  ｆｏｒ  ｎｏｍａｌ１１０，ｇｌｏｂａｌ  ｆｏｒ  ＭＭＵ１１１、ｇｌｏｂａｌ  ｆｏｒ  Ｉｎｔｅｒｒｕｐｔ１１２、ｇｌｏｂａｌ  ｆｏｒ  Ａｌｔｅｒｎａｔｅ１１３）は、それぞれ８エントリーずつのレジスタを有する。
【００１５】
図１２では、領域ＡはＣＷＰ＝１のときのＪＷＲ領域を示し、領域ＢはＣＷＰ＝１からのインクリメント時に新規に必要となるＪＷＲ領域を示す。ウィンドウの切り替えは、ＣＷＰのインクリメント、デクリメントと、不連続な任意の値への書き換えによって実行される。
【００１６】
ＣＷＰのインクリメント、デクリメント時は移動後のＣＷＰに対して３ウィンドウを構成する。インクリメント時にはＣＷＰ（図１２の場合では、ｉｎ１，ｌｏｃａｌ１，ｏｕｔ１）、ＣＷＰ＋１（図１２の場合では、ｉｎ２，ｌｏｃａｌ２，ｏｕｔ２）、ＣＷＰ＋２（図１２の場合では、ｉｎ３，ｌｏｃａｌ３，ｏｕｔ３）の３ウィンドウ、デクリメント時にはＣＷＰ−２、ＣＷＰ−１、ＣＷＰの３ウィンドウの構成となる。
【００１７】
３つのウィンドウ中２つはＪＷＲに既に保持されているため、ＧＰＲからＪＷＲへは不足分１ウィンドウのｌｏｃａｌ、ｉｎ／ｏｕｔレジスタのデータ転送するのみでよい。データ転送制御装置１０１により、ＧＰＲ１００からＪＷＲ１０２へデータ転送される（図１２でいえば、例えば、ＣＷＰ→ＣＷＰ＋１の場合には、領域Ｂのデータを転送する）。
【００１８】
このようにすることで、現状参照しているウィンドウに隣接しているウィンドウも合わせてワークレジスタセット（ＪＷＲ）として保持することで、連続したウィンドウの切り替え時の後続命令がデータ転送を待たずに実行可能となる。
【００１９】
このとき、移動後のＣＷＰに対するデータリードは既にＪＷＲにＣＷＰ−１，ＣＷＰ＋１が保持されているため、ＧＰＲからのデータ転送を待つことなくタイムロスなしに実行可能である。
【００２０】
さて、ＣＷＰを不連続な任意の値へ書き換える時には、移動後のＣＷＰに対して、ＣＷＰ−１、ＣＷＰ，ＣＷＰ＋１の３ウィンドウの構成となる。ＣＷＰが不連続な場合はＪＷＲに移動後のデータが保持されているか保証されないため、ＪＷＲへは移動後のＣＷＰに対して３ウィンドウを構成するために必要となるｌｏｃａｌ、ｉｎ／ｏｕｔ、およびｇｌｏｂａｌレジスタを全てＧＰＲより転送する（ｌｏａｄ−ｃｗｐ）。
【００２１】
このとき、移動後のＣＷＰに対するデータリードや、インクリメント、デクリメントについては、データが参照できないため実行不可能であり、転送が完全に終了してから更新されたＪＷＲに対して実行が開始される。
【００２２】
また、プロセスの切り替え中やプロセス実行中にトラップが発生した場合には、通常動作時には依存しない値や動作が必要となるため、あるいはプロセス再開時のためにトラップ発生時点のレジスタの値を保持しておく必要があるため、ｇｌｏｂａｌレジスタ（ｇｌｏｂａｌ  ｆｏｒ  ｎｏｍａｌ）１１０をトラップ処理専用のものに切り替えてトラップ処理が実行される（通常動作に依存する部分はｉｎ／ｏｕｔ，ｌｏｃａｌにて参照する）。
【００２３】
トラップ処理用のｇｌｏｂａｌレジスタとして、メモリアクセス時に発生したエラー処理用のレジスタ１１１（ｇｌｏｂａｌ  ｆｏｒ  ＭＭＵ（ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ））、ソフト側からの割り込み処理用レジスタ１１２（ｇｌｏｂａｌ  ｆｏｒ  Ｉｎｔｅｒｒｕｐｔ）、およびそれ以外のトラップ処理に使用されるレジスタ１１３（ｇｌｏｂａｌ  ｆｏｒ  Ａｌｔｅｒｎａｔｅ）が用意されている。
【００２４】
また、トラップ処理終了後には再びｇｌｏｂａｌレジスタをトラップ処理用から通常動作用に切り替え直してプロセスを再開する。
ここで、トラップについて説明する。トラップとは、通常のプロセスを実行中にある事象が発生した場合、その通常のプロセスを中断してその事象への対処を行ったり、その対処を終えて再度通常のプロセスを実行行ったりする、すなわち例外処理のことをいう。たとえば、通常のプロセス動作中にエラーが生じたためにそのプロセスをやり直したり、データの修正を行ったり等することである。
【００２５】
図１２において、初期化されたＧＰＲに対して、ウィンドウの切り替えを行ってデータを書き込んでいくが、これを繰り返して、ある閾値になると、ウィンドウが１周して全部のレジスタが埋った状態になる。この場合に、さらにウィンドウを切り替えると、既に書き込まれたデータを壊すことになる。このような場合には、既に書き込まれたデータをメインメモリに移し、このウィンドウを開放して割り当てる。このように、ウィンドウ切り替え時に発生するトラップを「ｗｉｎｄｏｗ−ｔｒａｐ」という。
【特許文献１】特開昭６３−２７１５５３号公報
【特許文献２】特開平７−２５３８８４号公報
【特許文献３】特開平７−２８１８９７号公報
【発明の開示】
【発明が解決しようとする課題】
【００２６】
トラップ発生時に実行されるＪＷＲの切り替えにはＣＷＰの変更が伴うものと、ＣＷＰの変更を行わず、ｇｌｏｂａｌレジスタの切り替えだけを必要とするものが存在する。リセット実行時にはＪＷＲの値を全てクリアして初期状態に戻すという動作を行うため、ＧＰＲからＣＷＰを含む全てのレジスタの値を転送する必要がある。
【００２７】
また、上述したように、ウィンドウ操作中に移動先のウィンドウが一周してその移動先のウィンドウが使用できない状態となっているなどのウィンドウ操作に起因するトラップ（ｗｉｎｄｏｗ−ｔｒａｐ）時には移動先のウィンドウに対してトラップ処理を行うため、ｇｌｏｂａｌレジスタと共にＣＷＰの切り替えも必要となる。
【００２８】
しかし、上記以外のトラップ発生時には、トラップ処理時にＣＷＰの変更は行わないため、本来ＪＷＲに対して転送が必要となるのはトラップ処理用のｇｌｏｂａｌレジスタのみである。しかし、現状ではトラップを含む不連続なレジスタの切り替え全てに対してｌｏａｄ−ｃｗｐによって３ウィンドウ分のｌｏｃａｌ、ｉｎ／ｏｕｔ、およびｇｌｏｂａｌレジスタなど全体のデータを転送していたため、ＣＷＰの変更をする必要のないトラップ発生時には本来不必要なデータの分、データ転送完了までに余分なサイクルを要していた。
【００２９】
一般的に、トラップ発生後の命令実行はデータがそろわない限り正常な動作が保証できないため、ロード終了まで次の命令開始を抑止しなければならない。このトラップ発生後の命令抑止時間がＣＰＵの性能に悪影響を与えていた。
【００３０】
本発明はこのような問題を解決するため、本来必要なデータのみを転送する装置の提供を目的とする。すなわち、本発明はかかる事情に鑑みて、ｌｏａｄ−ｃｗｐを行う処理のうちで、ｇｌｏｂａｌレジスタの値のみを必要とする場合をトラップの状況などを監視することで切り分け、ｇｌｏｂａｌレジスタの転送のみを実行することを可能とする装置を付加することを提案する。
【００３１】
また、このとき、ｌｏａｄ−ｃｗｐは抑止し、不必要な値の転送を実行させない。これにより、転送するデータの量を削減することで、転送の実行サイクルを改善するものである。
【課題を解決するための手段】
【００３２】
上記課題は、特許請求の範囲の請求項１に記載の発明によれば、レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送動作を行う情報処理装置において、例外処理の発生を示す例外処理発生情報を取得する取得手段と、前記例外処理発生情報を判別する判別手段と、前記判別手段による判別結果に基づいて、所定のデータの転送を制御する転送制御手段と、を備えることを特徴とする情報処理装置を提供することによって達成できる。
【００３３】
このように構成することによって、発生したトラップの種類に応じて、必要なデータのみを転送することができる。
上記課題は、特許請求の範囲の請求項２に記載の発明によれば、前記判別手段は、前記例外処理発生情報に基づいて、該例外処理がウィンドウの切り替えが起こる処理であるか否か、または前記ワークレジスタを初期状態にする処理か否かを判別することを特徴とする請求項１に記載の情報処理装置を提供することによって達成できる。
【００３４】
このように構成することによって、そのトラップが、グローバルレジスタについてのデータのみの転送でよいのか、それ以外のデータの転送も必要なのかを切り分けることができる。
【００３５】
上記課題は、特許請求の範囲の請求項３に記載の発明によれば、前記転送制御手段は、前記判別の結果、前記例外処理がウィンドウの切り替えが起こらない処理または前記ワークレジスタを初期状態にしない処理である場合には、所定のデータのみを転送することを特徴とする請求項１に記載の情報処理装置を提供することによって達成できる。
【００３６】
このように構成することによって、上記で切り分けを行った結果、グローバルレジスタについてのデータのみを転送することができる。
上記課題は、特許請求の範囲の請求項４に記載の発明によれば、レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送動作を行う情報処理装置において、例外処理の発生を示す例外処理発生情報を検出する検出手段と、前記例外処理発生情報を判別し、該判別結果を示すフラグ情報を生成するフラグ生成手段と、前記フラグ情報に対応したデータ転送サイクルをカウントするデータ転送制御カウンタ手段と、前記データ転送サイクルに基づいて、所定のタイミングで前記データを転送するように制御するデータ転送タイミング制御手段と、を備えることを特徴とする情報処理装置を提供することによって達成できる。
【００３７】
このように構成することによって、発生したトラップの種類に応じて、必要なデータのみを転送することができる。
上記課題は、特許請求の範囲の請求項５に記載の発明によれば、前記フラグ生成手段は、前記例外処理発生情報に基づいて、該例外処理がウィンドウの切り替えが起こる処理であるか否か、または前記ワークレジスタを初期状態にする処理か否かを判別し、該例外処理がウィンドウの切り替えが起こらない処理または前記ワークレジスタを初期状態にしない処理の場合には第１のフラグ情報を生成し、それら以外の処理の場合には第２のフラグ情報を生成することを特徴とする請求項４に記載の情報処理装置を提供することによって達成できる。
【００３８】
このように構成することによって、そのトラップが、グローバルレジスタについてのデータのみの転送でよいのか、それ以外のデータの転送も必要なのかを切り分けることができる。
【００３９】
上記課題は、特許請求の範囲の請求項６に記載の発明によれば、前記データ転送タイミング制御手段は、前記第１のフラグ情報が生成された場合には、所定のデータのみを転送することを特徴とする請求項５に記載の情報処理装置を提供することによって達成できる。
【００４０】
このように構成することによって、上記で切り分けを行った結果、グローバルレジスタについてのデータのみを転送することができる。
上記課題は、特許請求の範囲の請求項７に記載の発明によれば、レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送を制御する情報処理装置のデータ転送制御方法において、例外処理の発生を示す例外処理発生情報を取得し、前記例外処理発生情報を判別し、前記判別結果に基づいて、所定のデータの転送を制御することを特徴とするデータ転送制御方法を提供することによって達成できる。
【００４１】
このように構成することによって、発生したトラップの種類に応じて、必要なデータのみを転送することができる。
上記課題は、特許請求の範囲の請求項８に記載の発明によれば、前記例外処理発生情報に基づいて、該例外処理がウィンドウの切り替えが起こる処理であるか否か、または前記ワークレジスタを初期状態にする処理か否かを判別することを特徴とする請求項７に記載のデータ転送制御方法を提供することによって達成できる。
【００４２】
このように構成することによって、そのトラップが、グローバルレジスタについてのデータのみの転送でよいのか、それ以外のデータの転送も必要なのかを切り分けることができる。
【００４３】
上記課題は、特許請求の範囲の請求項９に記載の発明によれば、前記判別の結果、前記例外処理がウィンドウの切り替えが起こらない処理または前記ワークレジスタを初期状態にしない処理である場合には、前記所定のデータのみを転送することを特徴とする請求項７に記載のデータ転送制御方法を提供することによって達成できる。
【００４４】
このように構成することによって、上記で切り分けを行った結果、グローバルレジスタについてのデータのみを転送することができる。
上記課題は、特許請求の範囲の請求項１０に記載の発明によれば、レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送を制御する情報処理装置のデータ転送制御方法において、例外処理の発生を示す例外処理発生情報を検出し、前記例外処理発生情報を判別し、該判別結果を示すフラグ情報を生成し、前記フラグ情報に対応したデータ転送サイクルをカウントし、前記データ転送サイクルに基づいて、所定のタイミングで前記データを転送するように制御することを特徴とするデータ転送制御方法を提供することによって達成できる。
【００４５】
このように構成することによって、発生したトラップの種類に応じて、必要なデータのみを転送することができる。
【発明の効果】
【００４６】
本発明を用いることにより、レジスタウィンドウ方式を採用した汎用レジスタにおいて、ワークレジスタに対するトラップ発生時などのデータ転送を高速化し、それに起因する命令実行の抑止を短縮することが可能となり、その性能向上への寄与は大きい。
【発明を実施するための最良の形態】
【００４７】
本発明は、ＧＰＲからＪＷＲへのデータ転送において、複数存在するトラップのうち「ｗｉｎｄｏｗ−ｔｒａｐ以外のトラップ」または「リセット以外のトラップ」、すなわち、ｇｌｏｂａｌレジスタの値のみの転送で足りるトラップ、を検出した場合には、ｇｌｏｂａｌレジスタへのデータのみを転送することである。これにより、本来転送する必要のないデータの転送が発生しないので、実行ユニットに対する命令抑止時間を短くすることができる。それでは、本発明の実施形態について以下に詳述する。
【００４８】
図１は、本実施形態におけるプロセッサの概念図である。プロセッサ１は、外部インターフェース部２、メモリ３、メモリ制御部４、命令発光制御部５、演算実行部６、ＧＰＲ７から構成される。
【００４９】
外部インターフェース部２は、プロセッサ外部との信号の入出力を行う。メモリ３は、プロセッサ内のキャッシュである。メモリ制御部（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）４は、メモリ３を制御する。命令発行制御部５では、メモリ制御部４から供給されたコードをデコードしてそれぞれの処理を行われるための命令の発行を制御する。演算実行部６は、メモリ制御部４から供給されたオペランドに基づいて、演算等を行う。
【００５０】
図２は、本実施形態におけるデータ転送制御装置の概略を示す。データ転送制御装置１１は、ＧＰＲ７からＪＷＲ８へのデータ転送を制御する装置する装置であり、転送されるデータの種類や転送のタイミング等を制御する。データ転送制御装置１１は、図１の命令発行制御部５内部にある。データ転送制御装置１１は、フラグ生成装置１２、データ転送制御カウンタ１３、命令発行抑制制御装置１４、データ転送タイミング制御装置１５、データ書き込み制御装置１６から構成される。また、データ転送制御装置１１には、トラップ検出装置１０で検出したトラップ情報が入力される。ここで、トラップ検出装置１０とは、例えばメモリ制御部４や演算実行部６等の各装置においてトラップを検出するための装置の総称を表している。
【００５１】
本実施形態では、ＪＷＲ８は、ｌｏｃａｌ（８エントリ×３）８ａ、ｉｎ／ｏｕｔ（８エントリ×４）及びｇｌｏｂａｌ（８エントリ×１）８ｂの計６４エントリにて構成する。また、ＧＰＲからＪＷＲへのデータ転送にはｉｎ／ｏｕｔ４エントリ、ｌｏｃａｌ／ｇｌｏｂａｌ４エントリの計８エントリ幅のバスを用意する。したがって、１サイクル毎に８エントリずつデータの転送をすることができる。
【００５２】
まず、トラップ検出装置１０でトラップが検出されると、その検出情報がフラグ生成装置１２に送信される。フラグ生成装置１２では、トラップの種類に応じたフラグを生成する。フラグ生成装置１２によりフラグが生成されると、命令発行抑止制御装置１４により命令発行抑止制御がなされ、ＧＰＲからＪＷＲへのデータ転送中は実行ユニットからの命令が抑止される。
【００５３】
また、フラグ生成装置１２によりフラグが生成されると、そのフラグを受け取ったデータ転送制御カウンタ１３では、カウンタ（ＭＯＶＥ＿ＣＯＵＮＴＥＲ）を０にセットし、フラグに応じたデータ転送にかかるサイクル分カウントする。データ転送タイミング制御装置１５では、データ転送制御カウンタ１３によるカウンタ（ＭＯＶＥ＿ＣＯＵＮＴＥＲ）に基づいて、ＧＰＲ７からＪＷＲ８へ転送するデータを選択し、所定のタイミングでそのデータを転送する。データ書き込み制御装置１６では、データ転送制御カウンタ１３によるカウンタ（ＭＯＶＥ＿ＣＯＵＮＴＥＲ）に基づいて、ＧＰＲから転送されたデータについてＪＷＲへの書き込みを可能（ＷＥ：Ｗｒｉｔｅ  Ｅｎａｂｌｅ）とすることを制御する。ｉｎ／ｏｕｔレジスタ８ａへの書き込みを制御する信号はＭＯＶＥ＿Ｉ＿Ｏ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥであり、ｌｏｃａｌ／ｇｌｏｂａｌレジスタ８ｂへの書き込みを制御する信号はＭＯＶＥ＿Ｇ＿Ｌ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥである。
【００５４】
図３はトラップ検出装置１０の構成を示し、図４−図８はデータ制御転送装置１１を構成する各装置の構成を示しており、図９はＬＯＡＤ＿ＣＷＰ発行時のＧＰＲ→ＪＷＲ動作タイムチャート、図１０はＬＯＡＤ＿ＧＬＯＢＡＬ発行時のＧＰＲ→ＪＷＲ動作タイムチャートを示す。以下では、図９及び図１０を参照しながら各図について説明する。
【００５５】
図３は、本実施形態におけるトラップ検出装置１０を示す。トラップ検出装置１０は、数あるトラップの中でもｗｉｎｄｏｗ−ｔｒａｐを検出するものであり、トラップ検出装置の一例を示す。
【００５６】
トラップ検出装置１０は、ＡＮＤ回路２０，２１、ＯＲ回路２２から構成される。ＡＮＤ回路２０では、ＳＥＴ＿ＣＷＰ＿ＰＬＵＳ１信号（ＣＷＰをプラス側に１つ移動させるための信号）とＷＩＮＤＯＷ＿ＯＶＥＲ＿ＲＥＳＥＲＶＥ＿ＥＱ＿０信号（ＣＷＰをプラス側に１つ移動させたときに、その移動先のレジスタに確保している領域が存在しない場合に発生する信号）が入力され、これらの論理積（ＷＩＮＤＯＷ＿ＯＶＥＲＦＬＯＷ＿ＴＲＡＰ（ＣＷＰをプラス側に１つ移動させたときにオーバーラップしたときの信号））を出力する。
【００５７】
ＡＮＤ回路２１では、ＳＥＴ＿ＣＷＰ＿ＭＩＮＵＳ１信号（ＣＷＰをマイナス側に１つ移動させるための信号）とＷＩＮＤＯＷ＿ＵＮＤＥＲ＿ＲＥＳＥＲＶＥ＿ＥＱ＿０信号（ＣＷＰをマイナス側に１つ移動させたときに、その移動先のレジスタに確保している領域が存在しない場合に発生する信号）が入力され、それらの論理積（ＷＩＮＤＯＷ＿ＵＮＤＥＲＦＬＯＷ＿ＴＲＡＰ（ＣＷＰをマイナス側に１つ移動させたときにオーバーラップしたときの信号））を出力する。
【００５８】
ＯＲ回路２２では、ＷＩＮＤＯＷ＿ＯＶＥＲＦＬＯＷ＿ＴＲＡＰとＷＩＮＤＯＷ＿ＵＮＤＥＲＦＬＯＷ＿ＴＲＡＰが入力され、それらの論理和（ＷＩＮＤＯＷ＿ＴＲＡＰ信号）を出力する。
【００５９】
図４は、本実施形態におけるフラグ生成装置１２の構成を示す。フラグ生成装置１２は、トラップ検出装置１０による検出結果に応じて、ＬＯＡＤ＿ＧＬＯＢＡＬかＬＯＡＤ＿ＣＷＰかのいずれかのフラグを生成する装置である。ＬＯＡＤ＿ＣＷＰを行う処理のうちで、ＣＷＰの切り替えが必要ないものは、ｗｉｎｄｏｗ−ｔｒａｐやリセット以外のトラップ発生時、および、その場合にトラップ処理から通常処理に戻ってくる時などである。そこで、これらが発生したことを示す信号によってＬＯＡＤ＿ＣＷＰを抑止し、新たなフラグＬＯＡＤ＿ＧＬＯＢＡＬを立てる。それでは、フラグ生成装置１２について説明する。
【００６０】
フラグ生成装置１２は、ＯＲ回路３０、論理回路３１（入力の一方にインバータが設けられているＡＮＤ回路）、ラッチ回路３２、ＡＮＤ回路３３、論理回路３４（４つの入力端子のうち２つにインバータが設けられているＡＮＤ回路）、ＯＲ回路３５、ラッチ回路３６から構成される。
【００６１】
ＯＲ回路３０には、ＷＲＩＴＥ＿ＣＷＰ（ＣＷＰを切り替えるときに発生する信号）、ＴＲＡＰ（トラップ検出時に発生する信号）、ＤＯＮＥ＿ＲＥＴＲＹ（トラップ処理から復帰したときに発生する信号）、ＷＲＰＳＴＡＴ＿（ＡＧ，ＩＧ，ＭＧ）（プロセスの状態を切り替えるときに発生する信号である。具体的には、ＡＧ（ｇｌｏｂａｌ  ｆｏｒ  Ａｌｔｅｒｎａｔｅ），ＩＧ（ｇｌｏｂａｌ  ｆｏｒ  Ｉｎｔｅｒｒｕｐｔ），ＭＧ（ｇｌｏｂａｌ  ｆｏｒ  ＭＭＵ）に切り替える。）の信号が入力され、これらの論理和が出力される。
【００６２】
論理回路３４では、ウィンドウが切り替わらないトラップを検出する回路である。論理回路３４には、ＴＲＡＰと、ＰＯＲ，ＸＩＲ，ＳＩＲ，ＸＤＲ（これらはプロセスをリセットする信号であって、ウィンドウ自体をリセットする）の信号と、ＴＬ＜ＭＡＸＴＬ−１の場合に発生する信号と、ＷＩＮＤＯＷ＿ＴＲＡＰの信号が入力され、これらの信号の論理積が出力される。このうち、ＰＯＲ，ＸＩＲ，ＳＩＲ，ＸＤＲとＷＩＮＤＯＷ＿ＴＲＡＰは、インバータを介して論理回路３４に入力される。
【００６３】
ここで、ＴＬ＜ＭＡＸＴＬ−１について説明する。ＴＬはトラップレベルを示す信号であり、トラップの発生回数を示す信号である。ＭＡＸＴＬは予め設定されているトラップレベルの上限値である。このとき、ＴＬ＜ＭＡＸＴＬ−１の場合に、この論理回路３４にはＨｉｇｈが入力される（この信号の目的は、ＴＬ＜ＭＡＸＴＬ−１の場合にはＬＯＡＤが発生するが、ＴＬ≧ＭＡＸＴＬ−１の場合には、全てのレジスタの値を一旦無効にしてプロセスをやり直す動作を行うためのものである。）。
【００６４】
ＡＮＤ回路３３には、ＤＯＮＥ＿ＲＥＴＲＹ信号と、ＴＳＴＡＴＥ＿ＣＷＰ＝ＣＷＰの場合に発生する信号が入力され、これらの信号の論理積が出力される。ここで、ＴＳＴＡＴＥ＿ＣＷＰは、トラップ中の状態を示す信号であって、ＴＳＴＡＴＥ＿ＣＷＰ＝ＣＷＰの場合を示す信号とは、ＣＷＰの状態がトラップ発生前のＣＷＰの状態と同じ場合（すなわち、トラップ発生時にウィンドウの切り替えが起こらなかった場合）に発生する信号である。
【００６５】
ＯＲ回路３５には、ＡＮＤ回路３３と論理回路３４とからの出力信号が入力され、それらの論理和が出力される。論理回路３１には、ＡＮＤ回路３０からの出力信号と、インバータを介してＯＲ回路３５からの出力信号が入力され、それらの信号の論理積が出力される。
【００６６】
ラッチ回路３２には、論理回路３１からの出力信号が入力され、ＬＯＡＤ＿ＣＷＰ信号が出力される。ラッチ回路３６には、ＯＲ回路３５からの出力信号が入力され、ＬＯＡＤ＿ＧＬＯＢＡＬ信号が出力される。
【００６７】
このように、フラグ生成装置１２を構成することにより、ＪＷＰの切り替えにＣＷＰの変更が伴うトラップ（ｗｉｎｄｏｗ−ｔｒａｐ以外のトラップ）が発生した場合やリセット実行時には、ＬＯＡＤ＿ＣＷＰがＨｉｇｈとなる（図９参照。）。
【００６８】
また、ＪＷＰの切り替えにＣＷＰの変更が伴わないトラップ（ｗｉｎｄｏｗ−ｔｒａｐ以外のトラップ）が発生した場合やリセット実行時以外のトラップには、ＬＯＡＤ＿ＧＬＯＢＡＬがＨｉｇｈとなる（図１０参照。）。
【００６９】
このようにして、ＧＰＲからＪＷＲへのデータ転送も、両フラグによって動作する。
図５は、本実施形態におけるデータ転送制御カウンタ１３の構成を示す。データ転送制御カウンタ１３は、データ転送制御カウンタ１３は、カウンタを持ち、ＬＯＡＤ＿ＧＬＯＢＡＬかＬＯＡＤ＿ＣＷＰかのいずれかのフラグが立ったサイクルを起点としてカウントアップされる。
【００７０】
データ転送制御カウンタ１３は、ＯＲ回路４０，４６、インクリメンタ４１、コンパレータ４２，４３、論理回路４４（入力の一方にインバータが設けられているＡＮＤ回路）、論理回路４５（入力の一方にインバータが設けられているＡＮＤ回路）、ラッチ回路４７，４８，４９，５１、論理回路５０（入力の一方にインバータが設けられているＡＮＤ回路）から構成される。インクリメンタ４１、論理回路５０、ラッチ回路５１、コンパレータ４２，４３を接続する線（太線）は、４ビットの信号線である。
【００７１】
ＬＯＡＤ＿ＧＬＯＢＡＬ＿ＬＣＨ信号（ＬＯＡＤ＿ＧＬＯＢＡＬに応じてＨｉｇｈになる信号）がラッチ回路４７に入力されると、ＬＯＡＤ＿ＧＬＯＢＡＬ＿ＯＰＥＲＡＴＩＯＮ信号（ＧＬＯＢＡＬレジスタへのデータ転送処理中を示す信号）がＨｉｇｈとなり、ＯＲ回路４６からの出力された信号を受けてＬｏｗとなる。
【００７２】
ＬＯＡＤ＿ＣＷＰ＿ＬＣＨ信号（ＬＯＡＤ＿ＣＷＰに応じてＨｉｇｈになる信号）がラッチ回路４８に入力されると、ＬＯＡＤ＿ＣＷＰ＿ＯＰＥＲＡＴＩＯＮ（ＣＷＰレジスタへのデータ転送処理中を示す信号）信号がＨｉｇｈとなり、ＯＲ回路４６からの出力された信号を受けてＬｏｗとなる。
【００７３】
ＯＲ回路４０では、ＬＯＡＤ＿ＧＬＯＢＡＬ＿ＬＣＨとＬＯＡＤ＿ＣＷＰ＿ＬＣＨが入力され、それらの信号の論理和が出力される。その出力信号がラッチ回路４９に入力されて、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＿ＶＡＬＩＤ信号（以下に述べるＭＯＶＥ＿ＣＯＵＮＴＥＲに所定サイクルカウントさせるために、ＭＯＶＥ＿ＣＯＵＮＴＥＲを有効にするための信号）がＨｉｇｈとなる。
【００７４】
インクリメンタ４１は、サイクル毎にインクリメントしている装置である。論理回路５０は、インクリメンタ４１から出力された信号と、インバータを介してＯＲ回路４６から出力された信号とが入力され、これらの論理和が出力される。
【００７５】
ラッチ回路５１では、ラッチ回路４９から出力された信号がＨｉｇｈの場合、論理回路５０から出力された信号をＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞信号（ＭＯＶＥ＿ＣＯＵＮＴＥＲ＿ＶＡＬＩＤがＨｉｇｈ時の間のサイクルをカウントするための信号）として出力する。また、ラッチ回路４９から出力された信号がＬｏｗの場合、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞信号（Ｌｏｗ）を出力する。
【００７６】
コンパレータ４２は、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＝２の場合にはＨｉｇｈが出力され、それ以外の場合にはＬｏｗが出力される。コンパレータ４３は、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＝１０の場合にはＨｉｇｈが出力され、それ以外の場合にはＬｏｗが出力される。ＭＯＶＥ＿ＣＯＵＮＴＥＲ＝２，１０は、それぞれＬＯＡＤ＿ＧＬＯＢＡＬ＿ＬＣＨ，ＬＯＡＤ＿ＣＷＰ＿ＬＣＨがＨｉｇｈになってからのデータ転送にかかるサイクルであり、この値は予め設定されている。
【００７７】
論理回路４４には、インバータを介してコンパレータ４２からの出力信号と、ラッチ回路４７からの出力信号が入力され、それらの信号の論理積が出力される。論理回路４５には、インバータを介してコンパレータ４３からの出力信号と、ラッチ回路４８からの出力信号が入力され、それらの信号の論理積が出力される。ＯＲ回路４６には、論理回路４４と論理回路４５からの出力信号が入力され、それらの論理和が出力される。
【００７８】
このように構成することで、ＬＯＡＤ＿ＣＷＰの場合には、図９に示すように、サイクルＷ３−サイクルＷ１２（１０サイクル）の間（ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞）、ＬＯＡＤ＿ＣＷＰ＿ＯＰＥＲＡＴＩＯＮ、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＿ＶＡＬＩＤ、がＨｉｇｈとなる。
【００７９】
また、ＬＯＡＤ＿ＧＬＯＢＡＬの場合には、図１０に示すように、サイクルＷ３−サイクルＷ４（２サイクル）の間（ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞）、ＬＯＡＤ＿ＧＬＯＢＡＬ＿ＯＰＥＲＡＴＩＯＮ、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＿ＶＡＬＩＤ、がＨｉｇｈとなる。
【００８０】
図６は、本実施形態におけるデータ転送タイミング制御装置１５を示す。データ転送タイミング制御装置１５では、どのタイミングで各レジスタへデータを転送するかを制御する。具体的には、ＭＯＶＥ＿ＣＷＰ＿ＲＥＧ信号（ＣＷＰレジスタへデータを転送するための信号）、ＭＯＶＥ＿ＣＷＰ＿ＰＬＵＳ１＿ＲＥＧ信号（ＣＷＰ＋１レジスタへデータを転送するための信号）、ＭＯＶＥ＿ＣＷＰ＿ＭＩＮＵＳ１＿ＲＥＧ信号（ＣＷＰ−１レジスタへデータを転送するための信号）、ＭＯＶＥ＿ＣＷＰ＿ＰＬＵＳ２＿ＲＥＧ信号（ＣＷＰ＋２レジスタへデータを転送するための信号）、ＭＯＶＥ＿ＧＬＯＢＡＬ＿ＲＥＧ信号（ＧＬＯＢＡＬレジスタへデータを転送するための信号）の出力を、データ転送タイミング制御装置１５は制御する。
【００８１】
データ転送タイミング制御装置１５は、コンパレータ６０，６１，６２，６３、ＡＮＤ回路６４，６５，６６，６７，６８、ＯＲ回路６９，７０から構成される。
コンパレータ６０，６１，６２，６３には、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞が入力される。コンパレータ６０では、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞＝２，３の場合にはＨｉｇｈが出力され、それ以外ではＬｏｗが出力される。コンパレータ６１では、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞＝４，５の場合にはＨｉｇｈが出力され、それ以外ではＬｏｗが出力される。コンパレータ６２では、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞の場合にはＨｉｇｈが出力され、それ以外ではＬｏｗが出力される。コンパレータ６３では、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞の場合にはＨｉｇｈが出力され、それ以外ではＬｏｗが出力される。
【００８２】
ＡＮＤ回路６４には、ＬＯＡＤ＿ＣＷＰ＿ＯＰＥＲＡＴＩＯＮとコンパレータ６０からの出力信号が入力され、これらの信号の論理積（ＭＯＶＥ＿ＣＷＰ＿ＲＥＧ信号）が出力される。ＡＮＤ回路６５には、ＬＯＡＤ＿ＣＷＰ＿ＯＰＥＲＡＴＩＯＮとコンパレータ６１からの出力信号が入力され、これらの信号の論理積（ＭＯＶＥ＿ＣＷＰ＿ＰＬＵＳ１＿ＲＥＧ信号）が出力される。ＡＮＤ回路６６には、ＬＯＡＤ＿ＣＷＰ＿ＯＰＥＲＡＴＩＯＮとコンパレータ６２からの出力信号が入力され、これらの信号の論理積（ＭＯＶＥ＿ＣＷＰ＿ＭＩＮＵＳ１＿ＲＥＧ信号）が出力される。ＡＮＤ回路６７には、ＬＯＡＤ＿ＣＷＰ＿ＯＰＥＲＡＴＩＯＮとコンパレータ６３からの出力信号が入力され、これらの信号の論理積（ＭＯＶＥ＿ＣＷＰ＿ＰＬＵＳ２＿ＲＥＧ信号）が出力される。
【００８３】
ＡＮＤ回路６８では、ＬＯＡＤ＿ＣＷＰ＿ＯＰＥＲＡＴＩＯＮとコンパレータ６３からの出力信号が入力され、それらの信号の論理積が出力される。ＯＲ回路６９では、ＬＯＡＤ＿ＧＬＯＢＡＬ＿ＬＣＨとＬＯＡＤ＿ＧＬＯＢＡＬ＿ＯＰＥＲＡＴＩＯＮが入力され、それらの論理和が出力される。ＯＲ回路７０では、ＡＮＤ回路６８からの出力信号とＯＲ回路６９からの出力信号とが入力され、それらの論理和（ＭＯＶＥ＿ＧＬＯＢＡＬ＿ＲＥＧ）が出力される。
【００８４】
このように構成することにより、ＬＯＡＤ＿ＣＷＰの場合には、図９に示すように、サイクルＷ４，５の時（ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞＝２，３）には、ＣＷＰウィンドウに対するデータ転送制御信号ＭＯＶＥ＿ＣＷＰ＿ＲＥＧがＨｉｇｈになる。
【００８５】
また、サイクルＷ６，７の時（ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞＝４，５）には、ＣＷＰ＋１ウィンドウに対するデータ転送制御信号ＭＯＶＥ＿ＣＷＰ＿ＰＬＵＳ１＿ＲＥＧがＨｉｇｈになる。
【００８６】
また、サイクルＷ８，９の時（ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞＝６，７）には、ＣＷＰ−１ウィンドウに対するデータ転送制御信号ＭＯＶＥ＿ＣＷＰ＿ＭＩＮＵＳ１＿ＲＥＧがＨｉｇｈになる。
【００８７】
また、サイクルＷ１０，１１の時（ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞＝８，９）には、ＣＷＰ＋２ウィンドウに対するデータ転送制御信号ＭＯＶＥ＿ＣＷＰ＿ＰＬＵＳ２＿ＲＥＧと、ＧＬＯＢＡＬレジスタに対するデータ転送制御信号ＭＯＶＥ＿ＧＬＯＢＡＬ＿ＲＥＧがＨｉｇｈになる。
【００８８】
一方、ＬＯＡＤ＿ＧＬＯＢＡＬの場合には、図１０に示すように、ＬＯＡＤ＿ＣＷＰ＿ＯＰＥＲＡＴＩＯＮが発生しないので、ＭＯＶＥ＿ＣＷＰ＿ＲＥＧ、ＭＯＶＥ＿ＣＷＰ＿ＰＬＵＳ１＿ＲＥＧ、ＭＯＶＥ＿ＣＷＰ＿ＭＩＮＵＳ１＿ＲＥＧ、ＭＯＶＥ＿ＣＷＰ＿ＰＬＵＳ２＿ＲＥＧはＬｏｗのままであるが、ＧＬＯＢＡＬレジスタに対するデータ転送制御信号ＭＯＶＥ＿ＧＬＯＢＡＬ＿ＲＥＧはＨｉｇｈ（サイクルＷ２−Ｗ４）になる。
【００８９】
図７は、本実施形態におけるデータ書き込み制御装置１６を示す。データ書き込み制御装置１６は、ＪＷＲへのデータ書き込みを制御する装置である。データ書き込み制御装置１６は、コンパレータ８０，８１、ＡＮＤ回路８２，８３、ＯＲ回路８４、論理回路８５（入力の一方にインバータが設けられているＡＮＤ回路）、ラッチ回路８６，８７から構成される。
【００９０】
コンパレータ８０，８１には、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞が入力される。コンパレータ８０では、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞  ＞＝３（ＪＷＲに最初にデータが到着するのが３サイクル目であることを示す）の場合にはＨｉｇｈが出力され、それ以外ではＬｏｗが出力される。コンパレータ８１では、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞  ＞＝１（ＪＷＲに最初にデータが到着するのが１サイクル目であることを示す）の場合にはＨｉｇｈが出力され、それ以外ではＬｏｗが出力される。なお、コンパレータ８１は本実施形態では確認的に設けてあるので、なくてもよい。
【００９１】
ＡＮＤ回路８２には、ＬＯＡＤ＿ＣＷＰ＿ＯＰＥＲＡＴＩＯＮとコンパレータ８０からの出力信号が入力され、それらの信号の論理積が出力される。ＡＮＤ回路８３には、ＬＯＡＤ＿ＧＬＯＢＡＬ＿ＯＰＥＲＡＴＩＯＮとコンパレータ８１からの出力信号が入力され、それらの信号の論理積が出力される。
【００９２】
ＯＲ回路８４では、ＡＮＤ回路８２からの出力信号とＯＲ回路８３からの出力信号とが入力され、それらの論理和（Ｗ２＿ＭＯＶＥ＿Ｇ＿Ｌ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥ信号）が出力される。ＡＮＤ回路８５には、インバータを介してＬＯＡＤ＿ＧＬＯＢＡＬ＿ＯＰＥＲＡＴＩＯＮと、ＯＲ回路８４からの出力信号が入力され、それらの論理積（Ｗ２＿ＭＯＶＥ＿Ｉ＿Ｏ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥ信号）が出力される。
【００９３】
ラッチ回路８６では、ＯＲ回路８４からの出力信号（Ｗ２＿ＭＯＶＥ＿Ｇ＿Ｌ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥ信号）が入力され、Ｗ３＿ＭＯＶＥ＿Ｇ＿Ｌ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥ信号が出力される。ラッチ回路８７では、ＯＲ回路８５からの出力信号（Ｗ２＿ＭＯＶＥ＿Ｉ＿Ｏ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥ信号）が入力され、Ｗ３＿ＭＯＶＥ＿Ｉ＿Ｏ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥ信号が出力される。
【００９４】
このように構成することによって、ＬＯＡＤ＿ＣＷＰの場合には、図９に示すように、Ｗ３＿ＭＯＶＥ＿Ｇ＿Ｌ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥとＷ３＿ＭＯＶＥ＿Ｉ＿Ｏ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥは、サイクルＷ５→Ｗ６（ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞  ＞＝３）のときＨｉｇｈとなり、ＬＯＡＤ＿ＣＷＰ＿ＯＰＥＲＡＴＩＯＮがＬｏｗになったのを受けて、Ｌｏｗになる。
【００９５】
一方、ＬＯＡＤ＿ＧＬＯＢＡＬの場合には、図１０に示すように、Ｗ３＿ＭＯＶＥ＿Ｇ＿Ｌ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥは、サイクルＷ５→Ｗ６（ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞  ＞＝１）のときＨｉｇｈとなり、ＬＯＡＤ＿ＣＷＰ＿ＯＰＥＲＡＴＩＯＮがＬｏｗになったのを受けて、Ｌｏｗになる。このとき、３＿ＭＯＶＥ＿Ｉ＿Ｏ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥは、Ｌｏｗのままである。
【００９６】
図８は、本実施形態における命令発行抑止制御装置１４である。命令発行抑止制御装置１４は、ＧＰＲからＪＷＰへのデータ転送の間、実行ユニットからの命令を抑制するための信号（ＩＮＳＴＲＵＣＴＩＯＮ＿ＲＥＬＥＡＳＥ＿ＩＮＴＬＫ）を発生させる。
【００９７】
命令発行抑止制御装置１４は、ＯＲ回路９０、コンパレータ９１、デクリメータ９２、ラッチ回路９３，９４から構成される。
ＯＲ回路９０では、ＬＯＡＤ＿ＣＷＰとＬＯＡＤ＿ＧＬＯＢＡＬが入力され、それらの論理和が出力される。
【００９８】
ラッチ回路９４には、ＬＯＡＤ＿ＣＷＰとＬＯＡＤ＿ＧＬＯＢＡＬが入力される。ＬＯＡＤ＿ＣＷＰがＨｉｇｈの場合、ＬＯＡＤ＿ＣＷＰ＿ＣＯＵＮＴＥＲ＜３：０＞に１０がセットされ、デクリメンタ９２によりＬＯＡＤ＿ＣＷＰ＿ＣＯＵＮＴＥＲ＜３：０＞がサイクル毎にデクリメントされる。また、ＬＯＡＤ＿ＧＬＯＢＡＬがＨｉｇｈの場合、ＬＯＡＤ＿ＣＷＰ＿ＣＯＵＮＴＥＲ＜３：０＞に３がセットされ、デクリメンタ９２によりＬＯＡＤ＿ＣＷＰ＿ＣＯＵＮＴＥＲ＜３：０＞がサイクル毎にデクリメントされる。
【００９９】
コンパレータ９１では、ＬＯＡＤ＿ＣＷＰ＿ＣＯＵＮＴＥＲ＜３：０＞が入力され、デクリメントされてＬＯＡＤ＿ＣＷＰ＿ＣＯＵＮＴＥＲ＜３：０＞＝０となった場合には、Ｈｉｇｈが出力され、それ以外はＬｏｗが出力される。
【０１００】
ラッチ９３では、ＯＲ回路９０からの出力信号とコンパレータ９３からの出力信号が入力される。ＯＲ回路９０からの出力信号がＨｉｇｈでコンパレータ９３からの出力信号がＬｏｗの場合には、ラッチ９３の出力信号（ＩＮＳＴＲＵＣＴＩＯＮ＿ＲＥＬＥＡＳＥ＿ＩＮＴＬＫ）がＨｉｇｈで出力されるが、ＬＯＡＤ＿ＣＷＰ＿ＣＯＵＮＴＥＲ＜３：０＞＝０となると、ＩＮＳＴＲＵＣＴＩＯＮ＿ＲＥＬＥＡＳＥ＿ＩＮＴＬＫはＬｏｗになる。
【０１０１】
このように構成することにより、データ転送の間（ＬＯＡＤ＿ＣＷＰの場合にはＷ２−Ｗ１２の１１サイクル、ＬＯＡＤ＿ＣＷＰの場合にはＷ２−Ｗ４の３サイクル）、ＩＮＳＴＲＵＣＴＩＯＮ＿ＲＥＬＥＡＳＥ＿ＩＮＴＬＫがＨｉｇｈとなって、実行ユニットからの命令を阻害するが、データ転送が終了すると、ＩＮＳＴＲＵＣＴＩＯＮ＿ＲＥＬＥＡＳＥ＿ＩＮＴＬＫをＬｏｗにして、実行ユニットからの命令が受信可能となるので、プロセスを再開する。
【０１０２】
以上では、データ転送制御装置１１を構成する各装置について説明したが、図９及び図１０を参照しながら、再度ＬＯＡＤ＿ＣＷＰのフラグが立った場合と、ＬＯＡＤ＿ＧＬＯＢＡＬのフラグが立った場合について考察する。
【０１０３】
図９の場合では、ＬＯＡＤ＿ＣＷＰがＨｉｇｈになると（サイクルＷ１）、ＬＯＡＤ＿ＣＷＰ＿ＬＣＨがＨｉｇｈになる（サイクルＷ２）。そうすると、ＬＯＡＤ＿ＣＷＰ＿ＯＰＥＲＡＴＩＯＮ、及びＭＯＶＥ＿ＣＯＵＮＴＥＲ＿ＶＡＬＩＤがＨｉｇｈとなる（サイクルＷ３）。そうすると、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞によりサイクルがカウントされる。この場合、サイクルＷ３から１０サイクルカウントして、ＬＯＡＤ＿ＣＷＰ＿ＯＰＥＲＡＴＩＯＮ、及びＭＯＶＥ＿ＣＯＵＮＴＥＲ＿ＶＡＬＩＤをＬｏｗとする（サイクルＷ１３）。
【０１０４】
そうすると、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞に同期して、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞＝２，３時にＣＷＰ（ｉｎ／ｏｕｔ，ｌｏｃａｌ）、カウンタ＝４，５時にＣＷＰ＋1（ｉｎ／ｏｕｔ，ｌｏｃａｌ）、カウンタ＝６，７時にＣＷＰ−1（ｉｎ／ｏｕｔ，ｌｏｃａｌ）、カウンタ＝８，９時にＣＷＰ＋２（ｉｎ／ｏｕｔ，ｇｌｏｂａｌ）の順に１サイクル８エントリずつ選択され、バスを通してＧＰＲよりＪＷＲに転送される。ＪＷＲの書き込みフラグ（Ｗ３＿ＭＯＶＥ＿Ｇ＿Ｌ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥ、３＿ＭＯＶＥ＿Ｉ＿Ｏ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥ）はＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞＝３時にセットされ、その１サイクル後から８サイクルかけてＪＷＲへの書き込みが行われる。すなわち、ＬＯＡＤ＿ＣＷＰのフラグが立ってからＪＷＲへのデータ転送終了まで、１１サイクル必要であった（この間は、ＩＮＳＴＲＵＣＴＩＯＮ＿ＲＥＬＥＡＳＥ＿ＩＮＴＬＫをＨｉｇｈにして、実行ユニットからの命令を阻害する状態となっている。）。
【０１０５】
一方、本実施形態におけるＬＯＡＤ＿ＧＬＯＢＡＬが立った場合には、図１０に示すように、このフラグがたつと同時にＧＬＯＢＡＬレジスタに対するデータ転送制御信号ＭＯＶＥ＿ＧＬＯＢＡＬ＿ＲＥＧがＨｉｇｈになり、ＭＯＶＥ＿ＣＯＵＮＴＥＲ＜３：０＞＝１の時にＪＷＲの書き込みフラグ（Ｗ３＿ＭＯＶＥ＿Ｇ＿Ｌ＿ＷＲＩＴＥ＿ＥＮＡＢＬＥ）がセットされる。
【０１０６】
このとき、ＬＯＡＤ＿ＣＷＰはＬＯＡＤ＿ＧＬＯＢＡＬによって抑止されているため、バスにはＧＬＯＢＡＬレジスタのみが選択される。また、ＪＷＲのｉｎ／ｏｕｔに対する書き込みフラグはＬＯＡＤ＿ＧＬＯＢＡＬにより抑止されており、ＧＬＯＢＡＬレジスタに対してのみ書き込みが実行されるように制御される。
【０１０７】
ＪＷＲへの書き込みは、書き込みフラグが立った１サイクル後に２サイクルかけて実行されるため、ＬＯＡＤ＿ＧＬＯＢＡＬのフラグが立ってから３サイクルでＪＷＲへのデータ転送が完了する。
【０１０８】
以上より、図９と図１０を比較すると、ｗｉｎｄｏｗ−ｔｒａｐ以外のトラップ発生時にＧＰＲからＪＷＲへのデータ転送に要する時間は１１−３＝８サイクル短縮される。
なお、命令抑止信号（ＩＮＳＴＲＵＣＴＩＯＮ＿ＲＥＬＥＡＳＥ＿ＩＮＴＬＫ）は、ＬＯＡＤ＿ＣＷＰとＬＯＡＤ＿ＧＬＯＢＡＬとの論理和を使って作成する（図８のＯＲ回路９０）。この信号はどちらかのフラグが立ったサイクルでセットされ、ＪＷＲへのデータ転送が終了するタイミングに合わせて、リセットされる。このため、命令抑止時間は本実施形態により８サイクル分削減され、ＣＰＵの性能向上が可能となる。
【０１０９】
（付記１）レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送動作を行う情報処理装置において、
例外処理の発生を示す例外処理発生情報を取得する取得手段と、
前記例外処理発生情報を判別する判別手段と、
前記判別手段による判別結果に基づいて、所定のデータの転送を制御する転送制御手段と、
を備えることを特徴とする情報処理装置。
【０１１０】
（付記２）前記判別手段は、前記例外処理発生情報に基づいて、該例外処理がウィンドウの切り替えが起こる処理であるか否か、または前記ワークレジスタを初期状態にする処理か否かを判別することを特徴とする付記１に記載の情報処理装置。
【０１１１】
（付記３）前記転送制御手段は、前記判別の結果、前記例外処理がウィンドウの切り替えが起こらない処理または前記ワークレジスタを初期状態にしない処理である場合には、所定のデータのみを転送することを特徴とする付記１に記載の情報処理装置。
【０１１２】
（付記４）レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送動作を行う情報処理装置において、
例外処理の発生を示す例外処理発生情報を検出する検出手段と、
前記例外処理発生情報を判別し、該判別結果を示すフラグ情報を生成するフラグ生成手段と、
前記フラグ情報に対応したデータ転送サイクルをカウントするデータ転送制御カウンタ手段と、
前記データ転送サイクルに基づいて、所定のタイミングで前記データを転送するように制御するデータ転送タイミング制御手段と、
を備えることを特徴とする情報処理装置。
【０１１３】
（付記５）前記フラグ生成手段は、前記例外処理発生情報に基づいて、該例外処理がウィンドウの切り替えが起こる処理であるか否か、または前記ワークレジスタを初期状態にする処理か否かを判別し、該例外処理がウィンドウの切り替えが起こらない処理または前記ワークレジスタを初期状態にしない処理の場合には第１のフラグ情報を生成し、それら以外の処理の場合には第２のフラグ情報を生成することを特徴とする付記４に記載の情報処理装置。
【０１１４】
（付記６）前記データ転送タイミング制御手段は、前記第１のフラグ情報が生成された場合には、所定のデータのみを転送することを特徴とする付記５に記載の情報処理装置。
（付記７）レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送動作を行う場合、該データとして所定ウィンドウ分のデータと該所定ウィンドウに関するデータ処理に共通するデータであるグローバルレジスタについてのデータとのデータ転送を行う情報処理装置において、
例外処理の発生を示す例外処理発生情報を検出する検出手段と、
前記例外処理発生情報に基づいて、該例外処理がウィンドウの切り替えが起こる処理であるか否か、または前記ワークレジスタを初期状態にする処理か否かを判別し、該例外処理がウィンドウの切り替えが起こらない処理または前記ワークレジスタを初期状態にしない処理の場合には第１のフラグ情報を生成し、それら以外の処理の場合には第２のフラグ情報を生成するフラグ生成手段と、
前記フラグ情報に対応したデータ転送サイクルをカウントするデータ転送制御カウンタ手段と、
前記第１のフラグ情報が生成した場合、前記データ転送サイクルに基づいて、所定のタイミングで前記グローバルレジスタについてのデータのみを転送するように制御するデータ転送タイミング制御手段と、
を備えることを特徴とする情報処理装置。
【０１１５】
（付記８）前記データ転送タイミング制御手段は、前記第２のフラグ情報が生成した場合、前記データ転送サイクルに基づいて、所定のタイミングで所定ウィンドウ分のデータと前記グローバルレジスタについてのデータとを転送するように制御することを特徴とする付記７に記載の情報処理装置。
【０１１６】
（付記９）レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送を制御する情報処理装置のデータ転送制御方法において、
例外処理の発生を示す例外処理発生情報を取得し、
前記例外処理発生情報を判別し、
前記判別結果に基づいて、所定のデータの転送を制御する
ことを特徴とするデータ転送制御方法。
【０１１７】
（付記１０）前記例外処理発生情報に基づいて、該例外処理がウィンドウの切り替えが起こる処理であるか否か、または前記ワークレジスタを初期状態にする処理か否かを判別することを特徴とする付記９に記載のデータ転送制御方法。
【０１１８】
（付記１１）前記判別の結果、前記例外処理がウィンドウの切り替えが起こらない処理または前記ワークレジスタを初期状態にしない処理である場合には、前記所定のデータのみを転送することを特徴とする付記９に記載のデータ転送制御方法。
【０１１９】
（付記１２）レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送を制御する情報処理装置のデータ転送制御方法において、
例外処理の発生を示す例外処理発生情報を検出し、
前記例外処理発生情報を判別し、該判別結果を示すフラグ情報を生成し、
前記フラグ情報に対応したデータ転送サイクルをカウントし、
前記データ転送サイクルに基づいて、所定のタイミングで前記データを転送するように制御する
ことを特徴とするデータ転送制御方法。
【０１２０】
（付記１３）前記フラグ情報の生成に際し、前記例外処理発生情報に基づいて、該例外処理がウィンドウの切り替えが起こる処理であるか否か、または前記ワークレジスタを初期状態にする処理か否かを判別し、該例外処理がウィンドウの切り替えが起こらない処理または前記ワークレジスタを初期状態にしない処理の場合には第１のフラグ情報を生成し、それら以外の処理の場合には第２のフラグ情報を生成することを特徴とする付記１２に記載のデータ転送制御方法。
【０１２１】
（付記１４）前記第１のフラグ情報が生成された場合には、前記所定のデータのみを転送することを特徴とする付記１３に記載のデータ転送制御方法。
（付記１５）レジスタウィンドウ方式における例外処理時でのマスタレジスタからワークレジスタへのデータ転送動作を行う場合、該データとして所定ウィンドウ分のデータと該所定ウィンドウに関するデータ処理に共通するデータであるグローバルレジスタのデータとのデータ転送の制御を行う情報処理装置のデータ転送制御方法において、
例外処理の発生を示す例外処理発生情報を検出し、
前記例外処理発生情報に基づいて、該例外処理がウィンドウの切り替えが起こる処理であるか否か、または前記ワークレジスタを初期状態にする処理か否かを判別し、該例外処理がウィンドウの切り替えが起こらない処理または前記ワークレジスタを初期状態にしない処理の場合には第１のフラグ情報を生成し、それら以外の処理の場合には第２のフラグ情報を生成し、
前記フラグ情報に対応したデータ転送サイクルをカウントし、
前記第１のフラグ情報が生成した場合、前記データ転送サイクルに基づいて、所定のタイミングで前記グローバルレジスタデータのみを転送するように制御する
ことを特徴とするデータ転送制御方法。
【０１２２】
（付記１６）前記第２のフラグ情報が生成した場合、前記データ転送サイクルに基づいて、所定のタイミングで所定ウィンドウ分のデータと前記グローバルレジスタデータとを転送するように制御することを特徴とする付記１５に記載のデータ転送制御方法。
【図面の簡単な説明】
【０１２３】
【図１】本実施形態におけるプロセッサの概念図である。
【図２】本実施形態におけるデータ転送制御装置の概略を示す図である。
【図３】本実施形態におけるトラップ検出装置１０を示す図である。
【図４】本実施形態におけるフラグ生成装置１２の構成を示す図である。
【図５】本実施形態におけるデータ転送制御カウンタ１３の構成を示す図である。
【図６】本実施形態におけるデータ転送タイミング制御装置１５を示す図である。
【図７】本実施形態におけるデータ書き込み制御装置１６を示す図である。
【図８】本実施形態における命令発行抑止制御装置１４を示す図である。
【図９】本実施形態におけるＬＯＡＤ＿ＣＷＰ発行時のＧＰＲ→ＪＷＲ動作タイムチャート図である。
【図１０】本実施形態におけるＬＯＡＤ＿ＧＬＯＢＡＬ発行時のＧＰＲ→ＪＷＲ動作タイムチャートを示す図である。
【図１１】一般的なレジスタウィンドウの構成を示す概念図である。
【図１２】一般的なＧＰＲ／ＪＷＲ相関図である。
【符号の説明】
【０１２４】
１    プロセッサ
２    外部インターフェース部
３    メモリ
４    メモリ制御部
５    命令発光制御部
６    演算実行部
７    ＧＰＲ
８    ＪＷＲ
１０    トラップ検出装置
１１    データ転送制御装置
１２    フラグ生成装置
１３    データ転送制御カウンタ
１４    命令発行抑制制御装置
１５    データ転送タイミング制御装置
１６    データ書き込み制御装置
【図１】
2006039874.tif 000003
【図２】
2006039874.tif 000004
【図３】
2006039874.tif 000005
【図４】
2006039874.tif 000006
【図５】
2006039874.tif 000007
【図６】
2006039874.tif 000008
【図７】
2006039874.tif 000009
【図８】
2006039874.tif 000010
【図９】
2006039874.tif 000011
【図１０】
2006039874.tif 000012
【図１１】
2006039874.tif 000013
【図１２】
2006039874.tif 000014