(57)【要約】【課題】外部メモリからの不要な命令のリードを抑止することにより、システムの性能を向上することができる情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラを提供すること【解決手段】本発明にかかる情報処理システムは、複数の命令をパイプライン処理によって実行する情報処理システム９０であって、キャッシュメモリ１１１と、少なくとも１つ以上の分岐命令を含む複数の命令からなるプログラム５１が格納された外部メモリ２から、複数の命令を順次読み出し、キャッシュメモリ１１１に一時的に格納するキャッシュメモリ制御部と、キャッシュメモリ１１１に格納された命令をパイプライン処理するとともに、分岐命令のフェッチ後であって、当該分岐命令をパイプライン処理している期間中、キャッシュメモリ制御部による外部メモリ２からの命令の読み出しを抑止する制御部と、を備える。【選択図】図１
2011028540.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令をパイプライン処理によって実行する情報処理システムであって、
キャッシュメモリと、
少なくとも１つ以上の分岐命令を含む複数の命令からなるプログラムが格納された外部メモリから、前記複数の命令を順次読み出し、前記キャッシュメモリに一時的に格納するキャッシュメモリ制御部と、
前記キャッシュメモリに格納された命令をパイプライン処理するとともに、前記分岐命令のフェッチ後であって、当該分岐命令をパイプライン処理している期間中、前記キャッシュメモリ制御部による前記外部メモリからの命令の読み出しを抑止する制御部と、を備えた情報処理システム。
【請求項２】
複数の命令をパイプライン処理によって実行する情報処理システムであって、
キャッシュメモリと、
少なくとも１つ以上の分岐命令を含む複数の命令からなるプログラムが格納され、複数のブロックに区分される外部メモリから、前記複数の命令を順次読み出し、前記キャッシュメモリに一時的に格納するキャッシュメモリ制御部と、
前記キャッシュメモリに格納された命令をパイプライン処理するとともに、前記分岐命令と同じブロックに含まれ、前記分岐命令に後続するいずれかの命令がフェッチされた後であって、前記分岐命令をパイプライン処理している期間中は、前記キャッシュメモリ制御部による前記外部メモリからの命令の読み出しを抑止する制御部と、を備えた情報処理システム。
【請求項３】
前記プログラムは、前記キャッシュメモリ制御部による前記外部メモリからの命令の読み出しを抑止する命令である外部メモリアクセス制御命令を含み、
前記制御部は、前記命令のフェッチと同じサイクルで前記外部メモリアクセス制御命令を実行することによって、前記外部メモリからの命令の読み出しを抑止する、請求項１又は２に記載の情報処理システム。
【請求項４】
前記制御部は、前記分岐命令を実行したときに、前記外部メモリからの命令の読み出しの抑止を解除する請求項１乃至３のいずれか１項に記載の情報処理システム。
【請求項５】
前記制御部は、前記命令をデコードしたときに、当該命令が分岐命令である場合は、前記外部メモリからの命令の読み出しの抑止を解除する命令を含めたデコード結果を生成し、当該デコード結果を実行することによって、前記外部メモリからの命令の読み出しの抑止を解除する、請求項４に記載の情報処理システム。
【請求項６】
前記キャッシュメモリ制御部は、前記外部メモリからの命令の読み出しを抑止されている場合に、前記制御部による命令のフェッチがあったときは、ダミーの命令を前記制御部に出力する、請求項１乃至５のいずれか１項に記載の情報処理システム。
【請求項７】
前記制御部は、前記外部メモリからの命令の読み出しを抑止するか否かを示す信号を前記キャッシュメモリ制御部に出力することによって、前記外部メモリからの命令の読み出しを抑止する、請求項１乃至６のいずれか１項に記載の情報処理システム。
【請求項８】
前記制御部は、プロセッサコアであり、
前記キャッシュメモリ制御部は、キャッシュコントローラである、請求項１乃至７のいずれか１項に記載の情報処理システム。
【請求項９】
外部メモリに格納され、少なくとも１つ以上の分岐命令を含む複数の命令からなるプログラムをパイプライン処理によって実行する際に、前記外部メモリから前記複数の命令を順次読み出し格納するキャッシュメモリの制御方法であって、
前記分岐命令のフェッチ後であって、当該分岐命令をパイプライン処理している期間中、前記キャッシュメモリへの前記外部メモリからの命令の読み出しを禁止する、キャッシュメモリの制御方法。
【請求項１０】
外部メモリからキャッシュメモリに読み出され、パイプライン処理されるプログラムであって、
所定の動作を行わせる複数の命令と、
前記外部メモリへのアクセスを制御する命令である外部メモリアクセス制御命令とを有し、
前記複数の命令は、分岐命令を有し、
前記外部メモリアクセス制御命令は、前記分岐命令のフェッチ後の前記キャッシュメモリへの前記外部メモリからの命令の読み出しを抑止するプログラム。
【請求項１１】
外部メモリからキャッシュメモリに読み出されてパイプライン処理され、少なくとも１つ以上の分岐命令を含む複数の命令からなるプログラムをコンパイルするコンパイラであって、
前記分岐命令のフェッチ後の前記キャッシュメモリへの前記外部メモリからの命令の読み出しを抑止する外部メモリアクセス制御命令を挿入する処理をプロセッサに実行させる、コンパイラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、キャッシュメモリの制御方法及びプログラムに関し、特に命令をパイプライン処理によって実行する技術に関する。
【背景技術】
【０００２】
一般的に、プロセッサには、処理の高速化を図るために、アクセス速度が速いキャッシュメモリが備えられている。アクセス速度が遅い外部メモリのデータを一時的にキャッシュメモリに格納することで、外部メモリにアクセスする回数を減らし、処理の高速化を実現している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−１８２９０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、図１０を参照して、キャッシュメモリを有するプロセッサと外部メモリとを備える情報処理システムの一例について説明する。
情報処理システム９２は、ＬＳＩ(Large Scale Integration)３及び外部メモリ４を備える。ＬＳＩ３は、プロセッサコア３００及びキャッシュ３１０を含むプロセッサ３０及びメモリコントローラ３１を有する。キャッシュ３１０は、キャッシュメモリ３１１とキャッシュコントローラ３１２を有する。外部メモリ４には、プロセッサ３０によって実行されるプログラム５０が格納されている。
【０００５】
ＬＳＩ３及び外部メモリ４は、バス８３によって相互に接続されている。また、プロセッサ３０及びメモリコントローラ３１は、内部バス８２によって相互に接続されている。これにより、プロセッサ３０は、メモリコントローラ３１を介して、外部メモリ４に格納されるデータのリード又はライトを行うことができる。また、プロセッサ３０に含まれるプロセッサコア３００及びキャッシュ３１０は、バス８１によって相互に接続されている。
【０００６】
続いて、図１１及び図１２を参照して、図１０に示した情報処理システム９２の処理について説明する。図１１に示すプログラム５０には、プロセッサコア３００が実行する複数の命令が含まれる。ここでは、プログラム５０の命令５００〜５０３を含むブロック及び命令５１０及び５１１を含むブロックがキャッシュメモリ３１１に格納されており、命令５０４を含むブロックがキャッシュメモリ３１１に格納されていない場合において、プログラム５０に含まれる命令のうち、命令５００から実行を開始する処理について説明する。なお、ブロックとは、外部メモリ４において、キャッシュメモリ３１１のキャッシュブロックに対応する領域のことである。キャッシュメモリ３１１は、複数のキャッシュブロックに区分されている。また、外部メモリ４も複数のブロックに区分され、外部メモリ４のブロックは、キャッシュメモリ３１１の任意のキャッシュブロックに割り当てられる。外部メモリ４から読み出された命令は、このブロック単位で割り当てられたキャッシュブロックに格納される。また、命令５０２は、自身の実行結果によって次に実行するべき命令を決める命令(以下、「分岐命令」とする)である。
【０００７】
ここで、プロセッサコア３００は、３段のパイプライン処理を行い、１サイクルのうちに、命令のフェッチ(ＩＦ)と、１サイクル前にフェッチした命令のデコード(ＤＥ)と、２サイクル前にデコードした命令の実行(ＥＸ)を並列に処理する。
【０００８】
プロセッサコア３００が命令をフェッチする場合、プロセッサコア３００は、命令のリード要求をキャッシュコントローラ３１２に出力する。キャッシュコントローラ３１２は、プロセッサコア３００から出力されたリード要求に応じて、要求された命令がキャッシュメモリ３１１に格納されている場合、この命令をプロセッサコア３００に出力する。
【０００９】
一方、キャッシュコントローラ３１２は、要求された命令がキャッシュメモリ３１１に格納されていない場合、要求された命令のリード要求をメモリコントローラ３１に出力する。メモリコントローラ３１は、キャッシュコントローラ３１２から出力されたリード要求に応じて、要求された命令を外部メモリ４に格納されているプログラム５０からリードして、リードした命令をキャッシュコントローラ３１２に出力する。そして、キャッシュコントローラ３１２は、メモリコントローラ３１から出力された命令をキャッシュメモリ３１１に格納するとともに、プロセッサコア３００に出力する。
このようにして、プロセッサコア３００は、フェッチによって、命令をリードする。
【００１０】
以下、図１１及び１２を参照して、図１１に示す命令を実行する処理について説明する。なお、図１２における７０１〜８３１は、プロセッサコア３００の各実行サイクルを示している。
【００１１】
サイクル７０１：プロセッサコア３００は、命令５００をフェッチする。
サイクル７１１：プロセッサコア３００は、命令５０１をフェッチし、命令５００をデコードする。
サイクル７２１：プロセッサコア３００は、分岐命令５０２をフェッチし、命令５０１をデコードし、命令５００を実行する。
サイクル７３１：プロセッサコア３００は、命令５０３をフェッチし、分岐命令５０２をデコードし、命令５０１を実行する。ここでは、分岐命令５０２による分岐処理を実行するまでは、分岐先のアドレスの命令は分からないが、プロセッサコア３００は、分岐命令５０２の次に実行する可能性のある命令として、次のアドレスの命令５０３をフェッチして実行する準備を行う。
【００１２】
サイクル７４１：プロセッサコア３００は、命令５０４をフェッチし、命令５０３をデコードし、分岐命令５０２を実行する。ここでも、分岐命令５０２による分岐処理を実行するまでは、分岐先のアドレスの命令は分からないが、プロセッサコア３００は命令５０３の次のアドレスの命令５０４をフェッチして実行する準備を行う。ここで、図１１に示すように、命令５０４は、キャッシュメモリ３１１に格納されていないため、キャッシュコントローラ３１２は、メモリコントローラ３１を介して、外部メモリ４から命令５０４をリードする。なお、外部メモリ４から命令５０４をリードするのに６サイクルかかるものとする。
【００１３】
サイクル７５１、７６１、７７１及び７８１：プロセッサコア３００は、命令５０４のリードが完了するまでウェイトする。
サイクル７９１：プロセッサコア３００は、キャッシュコントローラ３１２から命令５０４の出力を受けるとウェイトを解除し、命令５０４のフェッチが完了する。また、同時にウェイトしていた、命令５０３のデコード及び分岐命令５０２の実行も完了する。また、ここで、分岐命令５０２の実行結果によって、次に実行する命令が、命令５１０となるものとする。この場合、命令５０４及び５０３は次に実行する命令ではなくなるため、プロセッサコア３００は、パイプラインをフラッシュして、実行する準備をしていた命令５０４及び５０３を破棄する。
【００１４】
サイクル８０１：プロセッサコア３００は、命令５１０をフェッチする。
サイクル８１１：プロセッサコア３００は、命令５１１をフェッチし、命令５１０をデコードする。
プロセッサコア３００は、以降のサイクルも同様にして、プログラム５０に含まれる命令を実行していく。
【００１５】
以上に説明したように、プロセッサコア３００は、分岐命令５０２の実行結果が得られるまで、分岐先の命令が分からないため、分岐命令５０２の実行後に実行される可能性のある命令をフェッチして実行する準備を行うようになっている。そのため、分岐先の命令が実行する準備をしていた命令ではない場合、プロセッサコア３００は、不要な命令を取得していることとなる。
この場合であっても、プロセッサコア３００が要求した命令がキャッシュメモリ３１１に格納されているときは、アクセス速度が速いキャッシュメモリから命令を取得するため、大きな処理遅延が発生することはない。
【００１６】
しかし、プロセッサコア３００が要求した命令がキャッシュメモリ３１１に格納されていないときは、アクセス速度が遅い外部メモリ４からの命令をリードすることによって、プロセッサコア３００がウェイトしてしまい、大きな処理遅延が発生してしまう。また、これにより、外部メモリ４からリードされた不要な命令によってキャッシュメモリ３１１の内容が書き換えられてしまうこととなり、書き換え前の命令が再度必要となってしまった場合には、再びアクセス速度が遅い外部メモリ４からの命令のリードを行わなければいけなくなってしまう。つまり、不要な命令を外部メモリ４からリードすることにより、システムの性能が低下してしまっているという問題がある。
【００１７】
このような問題を解決するため、特許文献１では、パイプラインプロセッサにおいて、現在実行される命令が分岐命令であるかを反映させた実行結果の制御信号をキャッシュメモリに転送し、この制御信号に従って、キャッシュメモリが、自身が保持していない命令を外部メモリからフェッチするべきであるかを決定することにより、浪費される動作クロックを効果的に節約する技術が開示されている。
【００１８】
ここで、図１３及び図１４を参照して、特許文献１に開示の技術を５段のパイプライン処理を行うプロセッサコアを有する情報処理システムに適用した場合について説明する。この５段のパイプライン処理を行うプロセッサコアは、命令のフェッチを２サイクル(ＩＦ１、ＩＦ２)かけて行い、命令のデコードを２サイクル(ＤＥ１、ＤＥ２)かけて行い、命令の実行を１サイクル(ＥＸ)かけて行う。そして、この５段のパイプライン処理を行うプロセッサコアは、１サイクルのうちに、ＩＦ１、ＩＦ２、ＤＥ１、ＤＥ２及びＥＸのそれぞれの処理を並列に処理する。
【００１９】
なお、ここでは、図１３に示すプログラム６０が、外部メモリに格納されており、命令６００〜６０６を含むブロック及び命令６１０を含むブロックがキャッシュメモリに格納されており、命令６０７を含むブロックがキャッシュメモリに格納されていない場合において、プログラム６０に含まれる命令のうち、命令６００から実行を開始する処理について説明する。なお、命令６０３は、分岐命令である。また、分岐命令６０３の実行結果によって実行される命令が、命令６１０となるものとする。
【００２０】
この場合、プロセッサコアは、図１４に示すように、プログラム６０を命令６００のフェッチから実行していく。
サイクル７０３〜７６３において、プロセッサコアは、命令６００〜６０６を順次フェッチして、それらの命令のパイプライン処理を行っていく。
そして、サイクル７７３において、プロセッサコアは、実行する命令６０３が分岐命令であることを示す制御信号をキャッシュメモリに出力する。そして、キャッシュメモリは、プロセッサコアから出力された制御信号に分岐命令であることが示されているため、外部メモリから不要な命令６０７をリードしないようにすることができる。
【００２１】
しかし、特許文献１に開示の技術では、図１５に示すプログラム６２のように、命令６０６もキャッシュメモリに格納されていないような場合、サイクル７６３の時点においては、分岐命令６０３は実行段階(ＥＸ)となっていないため、プロセッサコアは、制御信号をキャッシュメモリに出力することができない。また、図１６に示すプログラム６４のように、命令６０５もキャッシュメモリに格納されていない場合においても、サイクル７５３の時点においては、分岐命令６０３は実行段階(ＥＸ)となっていないため、プロセッサは、制御信号をキャッシュメモリに出力することができない。
【００２２】
そのため、これらの場合のように、分岐命令６０３が実行されるまでにフェッチされる命令が、分岐命令と異なるブロックに含まれており、かつ、その命令がキャッシュメモリに格納されていない場合は、アクセス速度が遅い外部メモリから不要な命令６０６又は６０５をリードしてしまう。また、これにより、外部メモリからリードされた不要な命令によってキャッシュメモリの内容が書き換えられてしまうという問題点がある。
【課題を解決するための手段】
【００２３】
本発明の第１の態様にかかる情報処理システムは、複数の命令をパイプライン処理によって実行する情報処理システムであって、キャッシュメモリと、少なくとも１つ以上の分岐命令を含む複数の命令からなるプログラムが格納された外部メモリから、前記複数の命令を順次読み出し、前記キャッシュメモリに一時的に格納するキャッシュメモリ制御部と、前記キャッシュメモリに格納された命令をパイプライン処理するとともに、前記分岐命令のフェッチ後であって、当該分岐命令をパイプライン処理している期間中、前記キャッシュメモリ制御部による前記外部メモリからの命令の読み出しを抑止する制御部と、を備える。
【００２４】
本発明の第２の態様にかかる情報処理システムは、複数の命令をパイプライン処理によって実行する情報処理システムであって、キャッシュメモリと、少なくとも１つ以上の分岐命令を含む複数の命令からなるプログラムが格納され、複数のブロックに区分される外部メモリから、前記複数の命令を順次読み出し、前記キャッシュメモリに一時的に格納するキャッシュメモリ制御部と、前記キャッシュメモリに格納された命令をパイプライン処理するとともに、前記分岐命令と同じブロックに含まれ、前記分岐命令に後続するいずれかの命令がフェッチされた後であって、前記分岐命令をパイプライン処理している期間中は、前記キャッシュメモリ制御部による前記外部メモリからの命令の読み出しを抑止する制御部と、を備える。
【００２５】
本発明の第３の態様にかかるキャッシュメモリの制御方法は、外部メモリに格納され、少なくとも１つ以上の分岐命令を含む複数の命令からなるプログラムをパイプライン処理によって実行する際に、前記外部メモリから前記複数の命令を順次読み出し格納するキャッシュメモリの制御方法であって、前記分岐命令のフェッチ後であって、当該分岐命令をパイプライン処理している期間中、前記キャッシュメモリへの前記外部メモリからの命令の読み出しを禁止する。
【００２６】
本発明の第４の態様にかかるプログラムは、外部メモリからキャッシュメモリに読み出され、パイプライン処理されるプログラムであって、所定の動作を行わせる複数の命令と、前記外部メモリへのアクセスを制御する命令である外部メモリアクセス制御命令とを有し、前記複数の命令は、分岐命令を有し、前記外部メモリアクセス制御命令は、前記分岐命令のフェッチ後の前記キャッシュメモリへの前記外部メモリからの命令の読み出しを抑止する。
【００２７】
本発明の第５の態様にかかるコンパイラは、外部メモリからキャッシュメモリに読み出されてパイプライン処理され、少なくとも１つ以上の分岐命令を含む複数の命令からなるプログラムをコンパイルするコンパイラであって、前記分岐命令のフェッチ後の前記キャッシュメモリへの前記外部メモリからの命令の読み出しを抑止する外部メモリアクセス制御命令を挿入する処理をプロセッサに実行させる。
【００２８】
これにより、分岐命令の実行結果によっては不要となる可能性のある命令の外部メモリからのリードを抑止することができる。
【発明の効果】
【００２９】
上述した各態様により、外部メモリからの不要な命令のリードを抑止することにより、システムの性能を向上することができる情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラを提供することができる。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施の形態１にかかる情報処理システムの構成図である。
【図２】本発明の実施の形態１にかかる情報処理システムが実行するプログラムを示す図である。
【図３】本発明の実施の形態１にかかる情報処理システムのパイプライン処理を示す図である。
【図４】本発明の実施の形態１にかかる情報処理システムのアクセス抑止命令の挿入処理を示す図である。
【図５】本発明の実施の形態２にかかる情報処理システムの構成図である。
【図６】本発明の実施の形態２にかかる情報処理システムが実行するプログラムを示す図である。
【図７】本発明の実施の形態２にかかる情報処理システムのパイプライン処理を示す図である。
【図８】本発明の実施の形態２にかかるアクセス抑止命令の挿入処理を実施後のプログラムを示す図である。
【図９】本発明の実施の形態２にかかるアクセス抑止命令の挿入処理を実施後のプログラムを示す図である。
【図１０】本発明に関連する情報処理システムを示す図である。
【図１１】本発明に関連する情報処理システムが実行するプログラムを示す図である。
【図１２】本発明に関連する情報処理システムのパイプライン処理を示す図である。
【図１３】特許文献１に開示の技術によって実行するプログラムを示す図である。
【図１４】特許文献１に開示の技術によるパイプライン処理を示す図である。
【図１５】特許文献１に開示の技術によって問題を解決できないプログラムの例を示す図である。
【図１６】特許文献１に開示の技術によって問題を解決できないプログラムの例を示す図である。
【発明を実施するための形態】
【００３１】
本発明の実施の形態１．
まず、図１を参照して、本発明の実施の形態１にかかる情報処理システムの構成について説明する。
情報処理システム９０は、ＬＳＩ１及び外部メモリ２を備える。ＬＳＩ１は、プロセッサ１０及びメモリコントローラ１１を有する。
プロセッサ１０は、プロセッサコア１００及びキャッシュ１１０を有する。プロセッサ１０は、パイプライン処理をするとともに、キャッシュメモリ制御部の外部メモリ２へのアクセスを制御する制御部として機能する。
キャッシュ１１０は、キャッシュメモリ１１１及びキャッシュコントローラ１１２を有する。キャッシュコントローラ１１２は、分岐命令を含み複数の命令からなるプログラム５１が格納された外部メモリ２から、パイプライン処理をする命令を読み出し、キャッシュメモリ１１１に一時的に格納するキャッシュメモリ制御部として機能する。
外部メモリ２は、プロセッサ１０によって実行されるプログラム５１が格納される。
【００３２】
ＬＳＩ１及び外部メモリ２は、バス７３によって相互に接続されている。また、プロセッサ１０及びメモリコントローラ１１は、内部バス７２によって相互に接続されている。これにより、プロセッサ１０は、メモリコントローラ１１を介して、外部メモリ２に格納されるデータのリード又はライトを行うことができる。また、プロセッサ１０に含まれるプロセッサコア１００及びキャッシュ１１０は、バス７１によって相互に接続されている。また、プロセッサコア１００及びキャッシュ１１０は、信号線７０によって相互に接続されている。
【００３３】
続いて、上述した情報処理システム９０の構成要素について詳細に説明する。
ＬＳＩ１は、プロセッサ１０及びメモリコントローラ１１が実装された半導体集積回路である。
外部メモリ２には、プロセッサ１０によるプログラム５１の実行に必要な情報が格納される。外部メモリ２は、例えば、ＤＲＡＭ(Dynamic Random Access Memory)やＤＤＲ ＳＤＲＡＭ(Double Data Rate SDRAM)等のキャッシュメモリと比べてアクセス速度が遅い記憶装置である。
【００３４】
プロセッサ１０は、外部メモリ２に格納されるプログラム５１を実行する。
メモリコントローラ１１は、プロセッサ１０が外部メモリ２に格納されているデータをリード又はライトするためのインタフェースとして機能する。
プログラム５１には、プロセッサコア１００によって実行される複数の命令が含まれる。
【００３５】
プロセッサコア１００は、キャッシュ１１０を介して、プログラム５１に含まれる命令を取得して、取得した命令を実行する。プロセッサコア１００は、３段のパイプライン処理を行い、１サイクルのうちに、命令のフェッチ(ＩＦ)と、１サイクル前にフェッチした命令のデコード(ＤＥ)と、２サイクル前にデコードした命令の実行(ＥＸ)を並列に処理する。また、プロセッサコア１００は、信号線７０を介して、キャッシュコントローラ１１２による外部メモリ２からの命令のリードを抑止する制御信号をキャッシュ１１０に出力する。
【００３６】
制御信号は、キャッシュ１１０に対して、外部メモリ２からの命令のリードを抑止するか否かを指示する信号である。プロセッサコア１００は、キャッシュコントローラ１１２による外部メモリ２からの命令のリードを抑止する場合は、制御信号をアクティブにしてキャッシュ１１０に出力し、命令のリードを抑止しない場合は、制御信号をディアクティブにしてキャッシュ１１０に出力する。なお、キャッシュ１１０に入力される制御信号は、キャッシュコントローラ１１２に入力され、キャッシュコントローラ１１２がその値を認識する。
【００３７】
ここで、フェッチとは、プロセッサコア１００がキャッシュ１１０へ命令のリード要求をしてから、リード要求に応じてキャッシュ１１０が出力した命令を、プロセッサコア１００が取得するまでの動作のことである。また、デコードとは、フェッチでリードした命令をデコードし、どういう命令であるかを判定するまでの動作のことである。また、実行とは、デコードによって判定した命令を実際に実行する動作のことである。よって、プログラム５１に含まれる命令とは、厳密には、プロセッサコア１００によるデコードによって解釈されてから、プロセッサコア１００が命令として実行可能となる命令データである。
【００３８】
キャッシュ１１０は、プロセッサコア１００からの要求に応じて、要求された命令をプロセッサコア１００に出力する。
キャッシュメモリ１１１は、プロセッサ１０によるプログラム５１の実行を高速化するために、プログラム５１に含まれる命令を一時的に格納する。キャッシュメモリ１１１は、例えば、ＳＲＡＭ(Static Random Access Memory)等のアクセス速度が速い記憶装置である。
【００３９】
キャッシュコントローラ１１２は、プロセッサ１０がキャッシュメモリ１１１又は外部メモリ２に格納されるデータをリード又はライトするためのインタフェースとして機能する。また、キャッシュコントローラ１１２は、プロセッサ１０からアクティベートされた制御信号が入力されている場合は、外部メモリ２からの命令のリードを行わない。
【００４０】
続いて、図２を参照して、本発明の実施の形態１にかかるプログラム５１について説明する。
本実施の形態１では、上述した図１１に示すプログラム５０を実行する場合に、図２に示すようにアクセス抑止命令を示す命令５９９(以下、「アクセス抑止命令」とする)を挿入する。なお、命令５０３は、アクセス抑止命令５９９を挿入することによって、次のブロックにずれ込む。
【００４１】
アクセス抑止命令５９９は、外部メモリアクセス制御命令であり、キャッシュメモリ制御部による外部メモリ２からの命令の読み出しを抑止する。アクセス抑止命令５９９は、キャッシュコントローラ１１２の外部メモリ２からの命令のリードを抑止する命令で、プロセッサコア１００が行ってしまう、不要な外部メモリ２からの命令のリードを抑止する。図２に示すように、アクセス抑止命令５９９を分岐命令５０２よりも先にフェッチされる位置に挿入して、分岐命令５０２がフェッチされるときにアクセス抑止命令５９９を実行するようにすることで、分岐命令５０２のフェッチ後からフェッチされ、分岐命令５０２の実行結果によっては不要となってしまう命令５０３及び５０４が外部メモリ２からリードされないようにしている。
【００４２】
具体的には、アクセス抑止命令５９９は、信号線７０を介して、プロセッサコア１００にアクティベートした制御信号を出力させる命令である。プロセッサコア１００は、アクセス抑止命令５９９を実行した場合、アクセス抑止命令５９９に基づいて、アクティベートした制御信号をキャッシュコントローラ１１２に出力して、キャッシュコントローラ１１２の外部メモリ２からの命令のリードを抑止する。また、プロセッサコア１００は、分岐命令５０２を実行したときに、制御信号をディアクティベートする。
【００４３】
続いて、図１〜４を参照して、本発明の実施の形態１にかかる情報処理システム９０の処理について説明する。
ここでは、図２に示すプログラム５１の命令５００〜５０２及び５９９を含むブロック及び命令５１０及び５１１を含むブロックがキャッシュメモリ１１１に格納されており、命令５０３及び５０４を含むブロックがキャッシュメモリ１１１に格納されていない場合において、プログラム５１に含まれる命令のうち、命令５００から実行を開始する処理について説明する。
【００４４】
ここで、プロセッサ１０が命令をフェッチする場合、プロセッサコア１００は、命令のリード要求をキャッシュコントローラ１１２に出力する。キャッシュコントローラ１１２は、プロセッサコア１００から出力されたリード要求に応じて、要求された命令がキャッシュメモリ１１１に格納されている場合、この命令をプロセッサコア１００に出力する。
【００４５】
一方、キャッシュコントローラ１１２は、要求された命令がキャッシュメモリ１１１に格納されていない場合、要求された命令のリード要求をメモリコントローラ１１に出力する。メモリコントローラ１１は、キャッシュコントローラ１１２から出力されたリード要求に応じて、要求された命令を外部メモリ２に格納されるプログラムからリードして、リードした命令をキャッシュコントローラ１１２に出力する。そして、キャッシュコントローラ１１２は、メモリコントローラ１１から出力された命令をキャッシュメモリ１１１に格納するとともに、プロセッサコア１００に出力する。
このようにして、プロセッサコア１００は、フェッチによって、命令をリードする。
【００４６】
以下、図２及び３を参照して、図２に示す命令を実行する処理について説明する。なお、図３Ａにおける７００〜７９０は、プロセッサコア１００の各実行サイクルを示している。
【００４７】
サイクル７００：プロセッサコア１００は、命令５００をフェッチする。
サイクル７１０：プロセッサコア１００は、アクセス抑止命令５９９をフェッチし、命令５００をデコードする。
サイクル７２０：プロセッサコア１００は、命令５０１をフェッチし、アクセス抑止命令５９９をデコードし、命令５００を実行する。
【００４８】
サイクル７３０：プロセッサコア１００は、分岐命令５０２をフェッチし、命令５０１をデコードし、アクセス抑止命令５９９を実行する。ここで、プロセッサコア１００は、図３Ｂに示すように、実行したアクセス抑止命令５９９に基づいて、信号線７０を介して、アクティベートした制御信号をキャッシュ１１０に出力する。キャッシュコントローラ１１２は、プロセッサコア１００からアクティベートされた制御信号がキャッシュ１１０に入力されている場合、外部メモリ２からの命令のリードを行わなくする。このサイクル７３０でフェッチする分岐命令５０２のように、制御信号がアクティベートされる前にフェッチ動作を開始した場合は、外部メモリ２からの命令のリードを抑止しない。なお、図３Ｂでは、制御信号を正論理としているが、制御信号は、負論理としてもよい。
【００４９】
サイクル７４０：プロセッサコア１００は、命令５０３をフェッチし、分岐命令５０２をデコードし、命令５０１を実行する。ここで、図２に示すように、命令５０３は、キャッシュメモリ１１１に格納されていないが、キャッシュコントローラ１１２は、プロセッサコア１００からアクティベートされた制御信号が入力されているため、外部メモリ２からのリードを行わない。このように、キャッシュコントローラ１１２は、アクティベートされた制御信号が入力されている場合は、プロセッサコア１００から要求された命令がキャッシュメモリ１１１に入力されていか否かにかかわらず、外部メモリ２からの命令のリードは行わない。
【００５０】
また、キャッシュコントローラ１１２は、プロセッサコア１００から要求された命令がキャッシュメモリ１１１に格納されている場合は、その命令をプロセッサコア１００に出力するが、要求された命令５０３のようにキャッシュメモリ１１１に格納されていない場合は、例えばＮＯＰ(No Operation)命令や同一のレジスタ値のＡＮＤ処理等のダミーの命令をプロセッサコア１００に出力する。
【００５１】
ここで、ダミーの命令は、分岐命令の実行結果によっては破棄されるため、基本的には、どのような命令であってもよい。しかし、パイプライン処理における各段階の中に、命令の実行前に、命令の実行で使用するデータをフェッチする段階が含まれている場合、データがキャッシュメモリに格納されていないと外部メモリへのアクセスが発生してしまう。したがって、この場合は、ＮＯＰ(No Operation)命令や同一のレジスタ値のＡＮＤ処理等のキャッシュメモリや外部メモリへのデータフェッチが不要な命令をダミーの命令とすることで、不要な外部メモリへのアクセスをなくすことができる。なお、本実施の形態のように３段のパイプライン処理を行う場合、データのフェッチは実行段階(ＥＸ)で行われているが、実行段階で使用されるデータはキャッシュメモリに格納されているものとして説明している。
【００５２】
サイクル７５０：命令５０４をフェッチし、命令５０３をデコードし、分岐命令５０２を実行する。ここで、図２に示すように、命令５０４も、キャッシュメモリ１１１に格納されていないため、サイクル７４０における命令５０３と同様に、外部メモリ２からのリードは抑止される。そのため、キャッシュコントローラ１１２は、ダミーの命令をプロセッサコア１００に出力する。また、プロセッサコア１００は、分岐命令５０２の実行に連動して、キャッシュ１１０に出力している制御信号をディアクティベートする。このサイクル７５０でフェッチする命令５０４のように、制御信号がディアクティベートされる前にフェッチ動作を開始した場合は、外部メモリ２からのリードが抑止される。
【００５３】
ここで、分岐命令５０２の実行結果によって、次に実行する命令が、命令５１０となるものとする。プロセッサコア１００は、命令５０４及び５０３は次に実行する命令ではなくなるため、パイプラインをフラッシュして、命令５０４及び５０３の代わりに実行する準備をしていたダミーの命令を破棄する。
【００５４】
なお、プロセッサコア１００は、サイクル７４０において分岐命令５０２をデコードする段階で、分岐命令５０２が分岐命令であることを知ることができる。プロセッサコア１００は、デコードした命令が分岐命令である場合に、次のサイクルで実行する命令のデコード結果に制御信号をディアクティベートする命令を含めるようにしてデコード結果を生成している。これによって、プロセッサコア１００は、サイクル７５０の分岐命令５０２の実行段階において、分岐命令を実行するとともに、制御信号をディアクティベートする処理を行うことを可能としている。
【００５５】
外部メモリ２から命令をリードするのに６サイクルかかるものとした時に、アクセス抑止命令５９９を挿入しないで、外部メモリ２へのアクセス抑止を行っていない場合に外部メモリ２へのアクセスが発生すると、図１２に示すように、外部メモリ２から命令のリードが発生してしまう。しかし、ここでリードされる命令のように、分岐命令５０２のフェッチ後であって、分岐命令５０２のフェッチから分岐命令５０２を実行するまでの分岐命令５０２のパイプライン処理期間中にフェッチされる命令は、分岐命令の実行結果によっては、不要となってしまう命令である。そこで、本実施の形態１では、図３に示すように、分岐命令５０２のフェッチ後であって、分岐命令５０２をパイプライン処理している期間中は、外部メモリ２からの命令のリードを抑止するようにしたことによって、外部メモリ２からの不要な命令のリードが発生しなくなる。
【００５６】
また、分岐命令５０２の実行結果によって、次に実行する命令が、命令５０３となってしまった場合、ダミーの命令をフェッチしたことによって命令５０３が準備されていないため、プロセッサコア１００は、再度命令５０３をフェッチして、外部メモリ２から命令５０３をリードすることとなる。しかし、一般的に、外部メモリから命令をリードする場合に比べて、キャッシュメモリから命令をリードするのにかかるサイクルは非常に小さい。そのため、分岐命令５０２の実行結果によって、命令５０３及び５０４が不要となってしまう場合に、命令５０３及び５０４の外部メモリ２からのリードを抑止できることを考慮すると、再度の命令５０３のフェッチが必要となるとしても、キャッシュメモリ１１１からのダミーの命令のフェッチによる遅延は非常に小さく、システムの性能に与える影響はほとんどない。
【００５７】
サイクル７６０：プロセッサコア１００は、命令５１０をフェッチする。
サイクル７７０：プロセッサコア１００は、命令５１１をフェッチし、命令５１０をデコードする。
プロセッサコア１００は、以降のサイクルも同様にして、プログラム５１に含まれる命令を実行していく。
【００５８】
続いて、図４を参照して、本実施の形態１にかかる情報処理システム９０のアクセス抑止命令の挿入処理について説明する。
アクセス抑止命令は、図１１に示すプログラム５０をコンパイルするときに、コンパイラによる処理によって挿入する。これにより、図２に示すプログラム５１が生成される。ここで、コンパイラは、例えば、プロセッサと、ＲＡＭ(Random Access Memory)、ＲＯＭ(Read Only Memory)及びＨＤＤ(Hard Disk Drive)等の任意の記憶装置と、マウスやキーボード等の任意の入力装置と、ＣＲＴ(Cathode Ray Tube)又はＰＤＰ(Plasma Display Panel)等の任意の出力装置等を有するＰＣ(Personal Computer)、サーバ等の情報処理装置に供給されて実行される。また、ここでは、リンカにおける処理もコンパイラに含めて説明する。
【００５９】
情報処理システムのパイプライン段数やキャッシュブロックの大きさ等は、システムのハードウェア構成が決まれば分かる。また、コンパイラは、コンパイルをするときに、外部メモリのどのアドレスにプログラムを配置するかを決定することができ、プログラムにおけるブロックの境界が分かる。そのため、コンパイラは、これらの情報に基づいて、コンパイル時に、外部メモリからの不要な命令のリードが発生する可能性のある箇所を判定して、アクセス抑止命令を挿入することができる。
【００６０】
図４Ａは、図１１に示すプログラム５０の分岐命令５０２周辺の命令を示している。コンパイラは、パイプライン段数が３段であることから、分岐命令５０２のフェッチ後から分岐命令５０２を実行して分岐先が分かるまでにフェッチされて、分岐先によっては不要となる可能性のある命令を命令５０３及び５０４と判断する。そして、コンパイラは、不要となる可能性のある命令５０４が、分岐命令５０２と異なるブロックに含まれており、外部メモリ２からリードしてしまう可能性があると判断する。
【００６１】
そのように判断した場合、コンパイラは、図４Ｄに示すように、アクセス抑止命令を挿入する。ここで、コンパイラは、不要となる可能性のある命令５０３及び５０４の外部メモリ２からのリードを抑止することができるように、分岐命令５０２をフェッチするサイクルでアクセス抑止命令５９９が実行されるような位置にアクセス抑止命令５９９を挿入する。つまり、パイプライン段数が３段であるため、分岐命令５０２より２命令前に実行されるアドレス位置に、アクセス抑止命令５９９を挿入する。このようにして、図４Ｄ及び図２に示すようなプログラム５１が生成される。
【００６２】
なお、図１１に示すプログラム５０の分岐命令５０２周辺の命令が、図４Ｂのような配置となっている場合、コンパイラは、不要となる可能性のある命令５０３及び５０４が分岐命令５０２と同じブロックに含まれており、外部メモリ２からリードすることはないため、アクセス抑止命令５９９の挿入は行わない。
【００６３】
また、図１１に示すプログラム５０の分岐命令５０２周辺の命令が、図４Ｃのような配置となっている場合、コンパイラは、不要となる可能性のある命令５０３及び５０４が、分岐命令５０２と異なるブロックに含まれており、外部メモリ２からリードしてしまう可能性があると判断する。しかし、アクセス抑止命令５９９を挿入すると、図４Ｅに示すように、分岐命令５０２も、命令５０３及び５０４が含まれる次のブロックにずれ込んでしまう。この場合、コンパイラは、図４Ｃも図４Ｅも命令５０３及び５０４が不要となった場合であっても、命令５０２〜５０４の処理にかかるサイクル数は変わらず、かえってアクセス抑止命令５９９を挿入した分の処理遅延が発生してしまうため、アクセス抑止命令５９９の挿入は行わない。
【００６４】
以上に説明したように、本実施の形態１によれば、アクセス抑止命令を分岐命令よりも先にフェッチされる位置に挿入して、分岐命令がフェッチされるときにそのアクセス抑止命令を実行するようにしている。また、外部メモリからの命令のリードの抑止を解除する解除命令を分岐命令のデコード結果に含めて、分岐命令と共に実行するようにしている。これにより、分岐命令のフェッチ後であって、分岐命令をパイプライン処理している期間中にフェッチされるが、分岐命令の実行結果によっては、不要となる可能性のある命令の外部メモリからのリードを抑止することができる。そのため、外部メモリから、不要となる命令のリードを抑止することができ、システムの性能を向上することができる。
【００６５】
また、本実施の形態１によれば、外部メモリからの不要となる命令のリードを抑止することによって、外部メモリからリードされた不要な命令によってキャッシュメモリの内容が書き換えられてしまうことを防ぐことができるため、書き換え前の命令が再度必要となった時に、再びアクセス速度が遅い外部メモリからの命令のリードが必要となってしまう事態を防ぐことができる。これによっても、システムの性能を向上することができる。
【００６６】
また、本実施の形態１によれば、外部メモリからの不要となる命令のリードを抑止することによって、外部メモリへのアクセス回数を減らすことができるため、消費電力を低減することもできる。
【００６７】
本発明の実施の形態２．
続いて、図５を参照して、本発明の実施の形態２にかかる情報処理システムの構成について説明する。なお、実施の形態１と同様の構成要素については、説明を省略する。
本実施の形態２にかかる情報処理システム９１は、実施の形態１におけるプロセッサコア１００及びプログラム５１に代わって、プロセッサコア１２０及びプログラム６１を有する点が異なる。
【００６８】
プロセッサコア１２０は、キャッシュ１１０を介して、プログラム６１に含まれる命令を取得して、取得した命令を実行する。プロセッサコア１２０は、プロセッサコア１００と異なり、５段のパイプライン処理を行う。プロセッサコア１２０は、命令のフェッチを２サイクル(ＩＦ１、ＩＦ２)かけて行い、命令のデコードを２サイクル(ＤＥ１、ＤＥ２)かけて行い、命令の実行を１サイクル(ＥＸ)かけて行う。そして、この５段のパイプライン処理を行うプロセッサコアは、１サイクルのうちに、ＩＦ１、ＩＦ２、ＤＥ１、ＤＥ２及びＥＸのそれぞれの処理を並列に処理する。
プログラム６１は、プロセッサコア１２０によって実行される複数の命令が含まれる。
【００６９】
続いて、図６を参照して、本発明の実施の形態２にかかるプログラム６１について説明する。
本実施の形態２では、特許文献１に開示の技術の説明において例示した図１３に示すプログラム６０を実行する場合に、図６に示すようにアクセス抑止命令６９９を挿入する。なお、命令６０６は、アクセス抑止命令６９９を挿入することによって、次のブロックにずれ込む。
【００７０】
続いて、図６及び７を参照して、図６に示す命令を実行する処理について説明する。ここでは、図６に示すプログラム６１の命令６００〜６０５及び６９９を含むブロック及び命令６１０を含むブロックがキャッシュメモリ１１１に格納されており、命令６０６及び６０７を含むブロックがキャッシュメモリ１１１に格納されていない場合において、プログラム６１に含まれる命令のうち、アクセス抑止命令６９９から実行を開始する処理について説明する。なお、図７Ａにおける７０２〜８３２は、プロセッサコア１２０の各実行サイクルを示している。
【００７１】
サイクル７０２：プロセッサコア１２０は、アクセス抑止命令６９９をフェッチする。
サイクル７１２：プロセッサコア１２０は、命令６００及びアクセス抑止命令６９９をフェッチする。
サイクル７２２：プロセッサコア１２０は、命令６０１及び６００をフェッチし、アクセス抑止命令６９９をデコードする。
サイクル７３２：プロセッサコア１２０は、命令６０２及び６０１をフェッチし、命令６００及びアクセス抑止命令６９９をデコードする。
【００７２】
サイクル７４２：プロセッサコア１２０は、分岐命令６０３及び命令６０２をフェッチし、命令６０１及び６００をデコードし、アクセス抑止命令６９９を実行する。ここで、プロセッサコア１２０は、図７Ｂに示すように、実行したアクセス抑止命令６９９に基づいて、信号線７０を介して、アクティベートした制御信号をキャッシュ１１０に出力する。実施の形態１と同様に、キャッシュコントローラ１１２は、プロセッサコア１２０からアクティベートされた制御信号がキャッシュ１１０に入力されている場合、外部メモリ２からの命令のリードが抑止される。
【００７３】
サイクル７５２：プロセッサコア１２０は、命令６０４及び分岐命令６０３をフェッチし、命令６０２及び６０１をデコードし、命令６００を実行する。ここで、キャッシュコントローラ１１２は、外部メモリ２からの命令のリードは抑止されているが、プロセッサコア１２０から要求された命令６０４がキャッシュメモリ１１１に格納されているため、命令６０４をプロセッサコア１２０に出力する
【００７４】
サイクル７６２：プロセッサコア１２０は、命令６０５及び６０４をフェッチし、分岐命令６０３及び命令６０２をデコードし、命令６０１を実行する。ここで、キャッシュコントローラ１１２は、外部メモリ２へのアクセスは抑止されているが、プロセッサコア１２０から要求された命令６０５がキャッシュメモリ１１１に格納されているため、命令６０５をプロセッサコア１２０に出力する
【００７５】
サイクル７７２：プロセッサコア１２０は、命令６０６及び６０５をフェッチし、命令６０４及び分岐命令６０３をデコードし、命令６０２を実行する。キャッシュコントローラ１１２は、命令６０６がキャッシュメモリ１１１に格納されていないが、外部メモリ２からの命令のリードが抑止されているため、ダミーの命令をプロセッサコア１２０に出力する。
【００７６】
サイクル７８２：プロセッサコア１２０は、命令６０７及び６０６をフェッチし、命令６０５及び６０４をデコードし、分岐命令６０３を実行する。キャッシュコントローラ１１２は、命令６０７がキャッシュメモリ１１１に格納されていないが、外部メモリ２からの命令のリードが抑止されているため、ダミーの命令をプロセッサコア１２０に出力する。また、分岐命令６０３の実行に連動して、プロセッサコア１２０は、キャッシュ１１０に出力している制御信号をディアクティベートする。
【００７７】
また、分岐命令６０３の実行結果によって、次に実行する命令が、命令６１０となるものとする。プロセッサコア１２０は、命令６０４〜６０７は次に実行する命令ではなくなるため、パイプラインをフラッシュして、命令６０４及び６０５と、命令６０６及び６０６の代わりに実行する準備をしていた命令ダミーの命令とを破棄する。
サイクル７９２：プロセッサコア１２０は、命令６１０をフェッチする。
プロセッサコア１２０は、以降のサイクルも同様にして、プログラム６１に含まれる命令を実行していく。
【００７８】
続いて、図６、８及び９を参照して、本実施の形態２にかかるアクセス抑止命令の挿入処理について説明する。
アクセス抑止命令６９９は、実施の形態１と同様に、図１３に示すプログラム６０をコンパイルするときに、コンパイラによる処理によって挿入する。これにより、図６に示すプログラム６１が生成される。
【００７９】
本実施の形態２では、図６に示すように、コンパイラは、実施の形態１と同様に、不要となる可能性のある命令６０４〜６０７がフェッチされる場合に、外部メモリ２からのリードを抑止することができるように、分岐命令６０３をフェッチするサイクルでアクセス抑止命令６９９が実行されるような位置にアクセス抑止命令６９９を挿入する。つまり、パイプライン段数が５段であるため、分岐命令６０３の４命令前に実行されるアドレス位置に、アクセス抑止命令６９９を挿入する。
【００８０】
ここで、図６に示すように、フェッチするときに、外部メモリ２へのアクセスが発生する命令は、キャッシュメモリ１１１に格納されていないブロックにおいて最初にフェッチされる命令６０６である。
そのため、コンパイラは、アクセス抑止命令６９９を命令６００及び６０１の間に挿入するようにしてもよい。このようにしても、命令６０５以降の命令６０５〜６０７の外部メモリ２からのリードが抑止されるため、キャッシュメモリ１１１に格納されていない命令６０６及び６０７の外部メモリ２からのリードは抑止される。
【００８１】
また、アクセス抑止命令６９９を命令６０１及び６０２の間に挿入するようにしてもよい。このようにしても、命令６０６以降の命令６０６及び６０７の外部メモリ２からのリードが抑止されるため、キャッシュメモリ１１１に格納されていない命令６０６及び６０７の外部メモリ２からのリードは抑止される。
このように、分岐命令６０３がキャッシュメモリ１１１に格納されている場合には、命令６０４及び命令６０５もキャッシュメモリ１１１に格納されていることとなるため、外部メモリ２からのリードは発生しないが、分岐命令と異なるブロックに含まれる命令６０６をフェッチするときには、外部メモリ２からのリードが発生する可能性がある。そのため、分岐命令と同じブロックに含まれ、分岐命令に後続するいずれかの命令がフェッチされた後であって、分岐命令をパイプライン処理している期間中に、外部メモリからの命令の読み出しを抑止するようにすることによっても、分岐命令の実行結果によっては不要となる可能性のある命令の外部メモリからのリードを抑止することができる。
【００８２】
また、本実施の形態２では、図１５に示すプログラム６２のように、特許文献１に開示の技術では、外部メモリから不要な命令をリードしてしまうような場合でも、コンパイラによって、アクセス抑止命令６９９を挿入して、図８に示すプログラム６３を生成することができるため、不要となる可能性のある命令６０４〜６０７がフェッチされる場合に、外部メモリからのリードを抑止することができる。なお、上述したように、アクセス抑止命令６９９を命令６００及び６０１の間に挿入するようにして、命令６０５のフェッチから外部メモリ２へのアクセスを抑止するようにしてキャッシュメモリに格納されていない命令６０５〜６０７の外部メモリ２からのリードを抑止するようにしてもよい。
【００８３】
また、本実施の形態２では、図１６に示すプログラム６４のように、特許文献１に開示の技術では、外部メモリから不要な命令をリードしてしまうような場合でも、コンパイラによって、アクセス抑止命令６９９を挿入して、図９に示すプログラム６５を生成することができるため、不要となる可能性のある命令６０４〜６０７がフェッチされる場合に、外部メモリからのリードを抑止することができる。
【００８４】
以上に説明したように、本実施の形態２によれば、本実施の形態１と同様に、分岐命令のフェッチ後であって、分岐命令をパイプライン処理している期間中は、外部メモリからの命令のリードを抑止する制御信号を用いる事によって、外部メモリからの不要となる命令のリードを抑止することができ、システムの性能を向上することができる。
また、本実施の形態２によれば、アクセス抑止命令を分岐命令と同じブロックに含まれ、分岐命令に後続するいずれかの命令よりも先にフェッチされる位置にアクセス抑止命令を挿入して、この分岐命令と同じブロックに含まれるいずれかの命令がフェッチされるときにそのアクセス抑止命令を実行するようにしている。また、分岐命令のデコード結果に外部メモリからの命令のリードの抑止を解除する解除命令を含めて、分岐命令と共に実行するようにしている。これにより、分岐命令と同じブロックに含まれ、分岐命令に後続するいずれかの命令がフェッチされた後であって、分岐命令をパイプライン処理している期間中にフェッチされる命令の外部メモリからのリードを抑止することができる。このようにすると、分岐命令のフェッチ後であって、分岐命令のパイプライン処理期間中にフェッチされるが、分岐命令の実行結果によっては、不要となる可能性のある命令のうち、分岐命令と異なるブロックに含まれ、外部メモリからのリードが発生してしまう可能性のある命令について、外部メモリからのリードを抑止することができる。そのため、外部メモリから、不要となる命令のリードを抑止することができ、システムの性能を向上することができる。
【００８５】
なお、本発明は上述した実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、パイプラインの段数やプログラムに含まれる命令の構成等は、本実施の形態において例示したものに限られない。
また、アクセス抑止命令は、新規追加して命令であってもよい。また、既存の命令の空き領域を使いまわして、例えば、その領域に特定のデータが格納されている場合にはアクセス抑止命令として扱う等してもよい。
【００８６】
以上に説明した本発明にかかるプログラム及びコンパイラは様々な種類の記憶媒体に格納することが可能であり、通信媒体を介して伝達されることが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＤＶＤ(Digital Versatile Disc)、ＢＤ(Blu-ray(登録商標) Disc)、ＲＯＭカートリッジ、バッテリバックアップ付きＲＡＭ(Random Access Memory)、メモリカートリッジ、フラッシュメモリカートリッジ、不揮発性ＲＡＭカートリッジを含む。また、通信媒体には、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体を含む。また、上述のプログラムは、インターネットを介して伝達することも可能である。
【００８７】
また、プロセッサが上述したプログラム及びコンパイラを実行することにより、上述の実施の形態の機能が実現されるだけではなく、このプログラム及びコンパイラの指示に基づき、プロセッサによって動作しているＯＳ(Operating System)もしくはアプリケーションソフトと共同して上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
【００８８】
さらに、このコンパイラの処理の全てもしくは一部が情報処理システムに挿入された機能拡張ボードや情報処理システムに接続された機能拡張ユニットにより行われて上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
【符号の説明】
【００８９】
１、３    ＬＳＩ
２、４    外部メモリ
１０、３０    プロセッサ
１１、３１    メモリコントローラ
５０、５１、６０、６１、６２、６３、６４、６５    プログラム
７０    信号線
７１、７２、７３、８１、８２、８３    バス
９０、９１、９２    情報処理システム
１００、１２０、３００    プロセッサコア
１１０、３１０    キャッシュ
１１１、３１１    キャッシュメモリ
１１２、３１２    キャッシュコントローラ
【図１】
2011028540.tif 000003
【図２】
2011028540.tif 000004
【図３】
2011028540.tif 000005
【図４】
2011028540.tif 000006
【図５】
2011028540.tif 000007
【図６】
2011028540.tif 000008
【図７】
2011028540.tif 000009
【図８】
2011028540.tif 000010
【図９】
2011028540.tif 000011
【図１０】
2011028540.tif 000012
【図１１】
2011028540.tif 000013
【図１２】
2011028540.tif 000014
【図１３】
2011028540.tif 000015
【図１４】
2011028540.tif 000016
【図１５】
2011028540.tif 000017
【図１６】
2011028540.tif 000018