JP2011028540A - 情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラ - Google Patents

情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラ Download PDF

Info

Publication number
JP2011028540A
JP2011028540A JP2009174041A JP2009174041A JP2011028540A JP 2011028540 A JP2011028540 A JP 2011028540A JP 2009174041 A JP2009174041 A JP 2009174041A JP 2009174041 A JP2009174041 A JP 2009174041A JP 2011028540 A JP2011028540 A JP 2011028540A
Authority
JP
Japan
Prior art keywords
instruction
external memory
instructions
cache memory
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009174041A
Other languages
English (en)
Other versions
JP2011028540A5 (ja
Inventor
Tomoaya Kimura
智礼 木村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2009174041A priority Critical patent/JP2011028540A/ja
Publication of JP2011028540A publication Critical patent/JP2011028540A/ja
Publication of JP2011028540A5 publication Critical patent/JP2011028540A5/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】外部メモリからの不要な命令のリードを抑止することにより、システムの性能を向上することができる情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラを提供すること
【解決手段】本発明にかかる情報処理システムは、複数の命令をパイプライン処理によって実行する情報処理システム90であって、キャッシュメモリ111と、少なくとも1つ以上の分岐命令を含む複数の命令からなるプログラム51が格納された外部メモリ2から、複数の命令を順次読み出し、キャッシュメモリ111に一時的に格納するキャッシュメモリ制御部と、キャッシュメモリ111に格納された命令をパイプライン処理するとともに、分岐命令のフェッチ後であって、当該分岐命令をパイプライン処理している期間中、キャッシュメモリ制御部による外部メモリ2からの命令の読み出しを抑止する制御部と、を備える。
【選択図】図1

Description

本発明は、情報処理システム、キャッシュメモリの制御方法及びプログラムに関し、特に命令をパイプライン処理によって実行する技術に関する。
一般的に、プロセッサには、処理の高速化を図るために、アクセス速度が速いキャッシュメモリが備えられている。アクセス速度が遅い外部メモリのデータを一時的にキャッシュメモリに格納することで、外部メモリにアクセスする回数を減らし、処理の高速化を実現している。
特開2002−182902号公報
ここで、図10を参照して、キャッシュメモリを有するプロセッサと外部メモリとを備える情報処理システムの一例について説明する。
情報処理システム92は、LSI(Large Scale Integration)3及び外部メモリ4を備える。LSI3は、プロセッサコア300及びキャッシュ310を含むプロセッサ30及びメモリコントローラ31を有する。キャッシュ310は、キャッシュメモリ311とキャッシュコントローラ312を有する。外部メモリ4には、プロセッサ30によって実行されるプログラム50が格納されている。
LSI3及び外部メモリ4は、バス83によって相互に接続されている。また、プロセッサ30及びメモリコントローラ31は、内部バス82によって相互に接続されている。これにより、プロセッサ30は、メモリコントローラ31を介して、外部メモリ4に格納されるデータのリード又はライトを行うことができる。また、プロセッサ30に含まれるプロセッサコア300及びキャッシュ310は、バス81によって相互に接続されている。
続いて、図11及び図12を参照して、図10に示した情報処理システム92の処理について説明する。図11に示すプログラム50には、プロセッサコア300が実行する複数の命令が含まれる。ここでは、プログラム50の命令500〜503を含むブロック及び命令510及び511を含むブロックがキャッシュメモリ311に格納されており、命令504を含むブロックがキャッシュメモリ311に格納されていない場合において、プログラム50に含まれる命令のうち、命令500から実行を開始する処理について説明する。なお、ブロックとは、外部メモリ4において、キャッシュメモリ311のキャッシュブロックに対応する領域のことである。キャッシュメモリ311は、複数のキャッシュブロックに区分されている。また、外部メモリ4も複数のブロックに区分され、外部メモリ4のブロックは、キャッシュメモリ311の任意のキャッシュブロックに割り当てられる。外部メモリ4から読み出された命令は、このブロック単位で割り当てられたキャッシュブロックに格納される。また、命令502は、自身の実行結果によって次に実行するべき命令を決める命令(以下、「分岐命令」とする)である。
ここで、プロセッサコア300は、3段のパイプライン処理を行い、1サイクルのうちに、命令のフェッチ(IF)と、1サイクル前にフェッチした命令のデコード(DE)と、2サイクル前にデコードした命令の実行(EX)を並列に処理する。
プロセッサコア300が命令をフェッチする場合、プロセッサコア300は、命令のリード要求をキャッシュコントローラ312に出力する。キャッシュコントローラ312は、プロセッサコア300から出力されたリード要求に応じて、要求された命令がキャッシュメモリ311に格納されている場合、この命令をプロセッサコア300に出力する。
一方、キャッシュコントローラ312は、要求された命令がキャッシュメモリ311に格納されていない場合、要求された命令のリード要求をメモリコントローラ31に出力する。メモリコントローラ31は、キャッシュコントローラ312から出力されたリード要求に応じて、要求された命令を外部メモリ4に格納されているプログラム50からリードして、リードした命令をキャッシュコントローラ312に出力する。そして、キャッシュコントローラ312は、メモリコントローラ31から出力された命令をキャッシュメモリ311に格納するとともに、プロセッサコア300に出力する。
このようにして、プロセッサコア300は、フェッチによって、命令をリードする。
以下、図11及び12を参照して、図11に示す命令を実行する処理について説明する。なお、図12における701〜831は、プロセッサコア300の各実行サイクルを示している。
サイクル701:プロセッサコア300は、命令500をフェッチする。
サイクル711:プロセッサコア300は、命令501をフェッチし、命令500をデコードする。
サイクル721:プロセッサコア300は、分岐命令502をフェッチし、命令501をデコードし、命令500を実行する。
サイクル731:プロセッサコア300は、命令503をフェッチし、分岐命令502をデコードし、命令501を実行する。ここでは、分岐命令502による分岐処理を実行するまでは、分岐先のアドレスの命令は分からないが、プロセッサコア300は、分岐命令502の次に実行する可能性のある命令として、次のアドレスの命令503をフェッチして実行する準備を行う。
サイクル741:プロセッサコア300は、命令504をフェッチし、命令503をデコードし、分岐命令502を実行する。ここでも、分岐命令502による分岐処理を実行するまでは、分岐先のアドレスの命令は分からないが、プロセッサコア300は命令503の次のアドレスの命令504をフェッチして実行する準備を行う。ここで、図11に示すように、命令504は、キャッシュメモリ311に格納されていないため、キャッシュコントローラ312は、メモリコントローラ31を介して、外部メモリ4から命令504をリードする。なお、外部メモリ4から命令504をリードするのに6サイクルかかるものとする。
サイクル751、761、771及び781:プロセッサコア300は、命令504のリードが完了するまでウェイトする。
サイクル791:プロセッサコア300は、キャッシュコントローラ312から命令504の出力を受けるとウェイトを解除し、命令504のフェッチが完了する。また、同時にウェイトしていた、命令503のデコード及び分岐命令502の実行も完了する。また、ここで、分岐命令502の実行結果によって、次に実行する命令が、命令510となるものとする。この場合、命令504及び503は次に実行する命令ではなくなるため、プロセッサコア300は、パイプラインをフラッシュして、実行する準備をしていた命令504及び503を破棄する。
サイクル801:プロセッサコア300は、命令510をフェッチする。
サイクル811:プロセッサコア300は、命令511をフェッチし、命令510をデコードする。
プロセッサコア300は、以降のサイクルも同様にして、プログラム50に含まれる命令を実行していく。
以上に説明したように、プロセッサコア300は、分岐命令502の実行結果が得られるまで、分岐先の命令が分からないため、分岐命令502の実行後に実行される可能性のある命令をフェッチして実行する準備を行うようになっている。そのため、分岐先の命令が実行する準備をしていた命令ではない場合、プロセッサコア300は、不要な命令を取得していることとなる。
この場合であっても、プロセッサコア300が要求した命令がキャッシュメモリ311に格納されているときは、アクセス速度が速いキャッシュメモリから命令を取得するため、大きな処理遅延が発生することはない。
しかし、プロセッサコア300が要求した命令がキャッシュメモリ311に格納されていないときは、アクセス速度が遅い外部メモリ4からの命令をリードすることによって、プロセッサコア300がウェイトしてしまい、大きな処理遅延が発生してしまう。また、これにより、外部メモリ4からリードされた不要な命令によってキャッシュメモリ311の内容が書き換えられてしまうこととなり、書き換え前の命令が再度必要となってしまった場合には、再びアクセス速度が遅い外部メモリ4からの命令のリードを行わなければいけなくなってしまう。つまり、不要な命令を外部メモリ4からリードすることにより、システムの性能が低下してしまっているという問題がある。
このような問題を解決するため、特許文献1では、パイプラインプロセッサにおいて、現在実行される命令が分岐命令であるかを反映させた実行結果の制御信号をキャッシュメモリに転送し、この制御信号に従って、キャッシュメモリが、自身が保持していない命令を外部メモリからフェッチするべきであるかを決定することにより、浪費される動作クロックを効果的に節約する技術が開示されている。
ここで、図13及び図14を参照して、特許文献1に開示の技術を5段のパイプライン処理を行うプロセッサコアを有する情報処理システムに適用した場合について説明する。この5段のパイプライン処理を行うプロセッサコアは、命令のフェッチを2サイクル(IF1、IF2)かけて行い、命令のデコードを2サイクル(DE1、DE2)かけて行い、命令の実行を1サイクル(EX)かけて行う。そして、この5段のパイプライン処理を行うプロセッサコアは、1サイクルのうちに、IF1、IF2、DE1、DE2及びEXのそれぞれの処理を並列に処理する。
なお、ここでは、図13に示すプログラム60が、外部メモリに格納されており、命令600〜606を含むブロック及び命令610を含むブロックがキャッシュメモリに格納されており、命令607を含むブロックがキャッシュメモリに格納されていない場合において、プログラム60に含まれる命令のうち、命令600から実行を開始する処理について説明する。なお、命令603は、分岐命令である。また、分岐命令603の実行結果によって実行される命令が、命令610となるものとする。
この場合、プロセッサコアは、図14に示すように、プログラム60を命令600のフェッチから実行していく。
サイクル703〜763において、プロセッサコアは、命令600〜606を順次フェッチして、それらの命令のパイプライン処理を行っていく。
そして、サイクル773において、プロセッサコアは、実行する命令603が分岐命令であることを示す制御信号をキャッシュメモリに出力する。そして、キャッシュメモリは、プロセッサコアから出力された制御信号に分岐命令であることが示されているため、外部メモリから不要な命令607をリードしないようにすることができる。
しかし、特許文献1に開示の技術では、図15に示すプログラム62のように、命令606もキャッシュメモリに格納されていないような場合、サイクル763の時点においては、分岐命令603は実行段階(EX)となっていないため、プロセッサコアは、制御信号をキャッシュメモリに出力することができない。また、図16に示すプログラム64のように、命令605もキャッシュメモリに格納されていない場合においても、サイクル753の時点においては、分岐命令603は実行段階(EX)となっていないため、プロセッサは、制御信号をキャッシュメモリに出力することができない。
そのため、これらの場合のように、分岐命令603が実行されるまでにフェッチされる命令が、分岐命令と異なるブロックに含まれており、かつ、その命令がキャッシュメモリに格納されていない場合は、アクセス速度が遅い外部メモリから不要な命令606又は605をリードしてしまう。また、これにより、外部メモリからリードされた不要な命令によってキャッシュメモリの内容が書き換えられてしまうという問題点がある。
本発明の第1の態様にかかる情報処理システムは、複数の命令をパイプライン処理によって実行する情報処理システムであって、キャッシュメモリと、少なくとも1つ以上の分岐命令を含む複数の命令からなるプログラムが格納された外部メモリから、前記複数の命令を順次読み出し、前記キャッシュメモリに一時的に格納するキャッシュメモリ制御部と、前記キャッシュメモリに格納された命令をパイプライン処理するとともに、前記分岐命令のフェッチ後であって、当該分岐命令をパイプライン処理している期間中、前記キャッシュメモリ制御部による前記外部メモリからの命令の読み出しを抑止する制御部と、を備える。
本発明の第2の態様にかかる情報処理システムは、複数の命令をパイプライン処理によって実行する情報処理システムであって、キャッシュメモリと、少なくとも1つ以上の分岐命令を含む複数の命令からなるプログラムが格納され、複数のブロックに区分される外部メモリから、前記複数の命令を順次読み出し、前記キャッシュメモリに一時的に格納するキャッシュメモリ制御部と、前記キャッシュメモリに格納された命令をパイプライン処理するとともに、前記分岐命令と同じブロックに含まれ、前記分岐命令に後続するいずれかの命令がフェッチされた後であって、前記分岐命令をパイプライン処理している期間中は、前記キャッシュメモリ制御部による前記外部メモリからの命令の読み出しを抑止する制御部と、を備える。
本発明の第3の態様にかかるキャッシュメモリの制御方法は、外部メモリに格納され、少なくとも1つ以上の分岐命令を含む複数の命令からなるプログラムをパイプライン処理によって実行する際に、前記外部メモリから前記複数の命令を順次読み出し格納するキャッシュメモリの制御方法であって、前記分岐命令のフェッチ後であって、当該分岐命令をパイプライン処理している期間中、前記キャッシュメモリへの前記外部メモリからの命令の読み出しを禁止する。
本発明の第4の態様にかかるプログラムは、外部メモリからキャッシュメモリに読み出され、パイプライン処理されるプログラムであって、所定の動作を行わせる複数の命令と、前記外部メモリへのアクセスを制御する命令である外部メモリアクセス制御命令とを有し、前記複数の命令は、分岐命令を有し、前記外部メモリアクセス制御命令は、前記分岐命令のフェッチ後の前記キャッシュメモリへの前記外部メモリからの命令の読み出しを抑止する。
本発明の第5の態様にかかるコンパイラは、外部メモリからキャッシュメモリに読み出されてパイプライン処理され、少なくとも1つ以上の分岐命令を含む複数の命令からなるプログラムをコンパイルするコンパイラであって、前記分岐命令のフェッチ後の前記キャッシュメモリへの前記外部メモリからの命令の読み出しを抑止する外部メモリアクセス制御命令を挿入する処理をプロセッサに実行させる。
これにより、分岐命令の実行結果によっては不要となる可能性のある命令の外部メモリからのリードを抑止することができる。
上述した各態様により、外部メモリからの不要な命令のリードを抑止することにより、システムの性能を向上することができる情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラを提供することができる。
本発明の実施の形態1にかかる情報処理システムの構成図である。 本発明の実施の形態1にかかる情報処理システムが実行するプログラムを示す図である。 本発明の実施の形態1にかかる情報処理システムのパイプライン処理を示す図である。 本発明の実施の形態1にかかる情報処理システムのアクセス抑止命令の挿入処理を示す図である。 本発明の実施の形態2にかかる情報処理システムの構成図である。 本発明の実施の形態2にかかる情報処理システムが実行するプログラムを示す図である。 本発明の実施の形態2にかかる情報処理システムのパイプライン処理を示す図である。 本発明の実施の形態2にかかるアクセス抑止命令の挿入処理を実施後のプログラムを示す図である。 本発明の実施の形態2にかかるアクセス抑止命令の挿入処理を実施後のプログラムを示す図である。 本発明に関連する情報処理システムを示す図である。 本発明に関連する情報処理システムが実行するプログラムを示す図である。 本発明に関連する情報処理システムのパイプライン処理を示す図である。 特許文献1に開示の技術によって実行するプログラムを示す図である。 特許文献1に開示の技術によるパイプライン処理を示す図である。 特許文献1に開示の技術によって問題を解決できないプログラムの例を示す図である。 特許文献1に開示の技術によって問題を解決できないプログラムの例を示す図である。
本発明の実施の形態1.
まず、図1を参照して、本発明の実施の形態1にかかる情報処理システムの構成について説明する。
情報処理システム90は、LSI1及び外部メモリ2を備える。LSI1は、プロセッサ10及びメモリコントローラ11を有する。
プロセッサ10は、プロセッサコア100及びキャッシュ110を有する。プロセッサ10は、パイプライン処理をするとともに、キャッシュメモリ制御部の外部メモリ2へのアクセスを制御する制御部として機能する。
キャッシュ110は、キャッシュメモリ111及びキャッシュコントローラ112を有する。キャッシュコントローラ112は、分岐命令を含み複数の命令からなるプログラム51が格納された外部メモリ2から、パイプライン処理をする命令を読み出し、キャッシュメモリ111に一時的に格納するキャッシュメモリ制御部として機能する。
外部メモリ2は、プロセッサ10によって実行されるプログラム51が格納される。
LSI1及び外部メモリ2は、バス73によって相互に接続されている。また、プロセッサ10及びメモリコントローラ11は、内部バス72によって相互に接続されている。これにより、プロセッサ10は、メモリコントローラ11を介して、外部メモリ2に格納されるデータのリード又はライトを行うことができる。また、プロセッサ10に含まれるプロセッサコア100及びキャッシュ110は、バス71によって相互に接続されている。また、プロセッサコア100及びキャッシュ110は、信号線70によって相互に接続されている。
続いて、上述した情報処理システム90の構成要素について詳細に説明する。
LSI1は、プロセッサ10及びメモリコントローラ11が実装された半導体集積回路である。
外部メモリ2には、プロセッサ10によるプログラム51の実行に必要な情報が格納される。外部メモリ2は、例えば、DRAM(Dynamic Random Access Memory)やDDR SDRAM(Double Data Rate SDRAM)等のキャッシュメモリと比べてアクセス速度が遅い記憶装置である。
プロセッサ10は、外部メモリ2に格納されるプログラム51を実行する。
メモリコントローラ11は、プロセッサ10が外部メモリ2に格納されているデータをリード又はライトするためのインタフェースとして機能する。
プログラム51には、プロセッサコア100によって実行される複数の命令が含まれる。
プロセッサコア100は、キャッシュ110を介して、プログラム51に含まれる命令を取得して、取得した命令を実行する。プロセッサコア100は、3段のパイプライン処理を行い、1サイクルのうちに、命令のフェッチ(IF)と、1サイクル前にフェッチした命令のデコード(DE)と、2サイクル前にデコードした命令の実行(EX)を並列に処理する。また、プロセッサコア100は、信号線70を介して、キャッシュコントローラ112による外部メモリ2からの命令のリードを抑止する制御信号をキャッシュ110に出力する。
制御信号は、キャッシュ110に対して、外部メモリ2からの命令のリードを抑止するか否かを指示する信号である。プロセッサコア100は、キャッシュコントローラ112による外部メモリ2からの命令のリードを抑止する場合は、制御信号をアクティブにしてキャッシュ110に出力し、命令のリードを抑止しない場合は、制御信号をディアクティブにしてキャッシュ110に出力する。なお、キャッシュ110に入力される制御信号は、キャッシュコントローラ112に入力され、キャッシュコントローラ112がその値を認識する。
ここで、フェッチとは、プロセッサコア100がキャッシュ110へ命令のリード要求をしてから、リード要求に応じてキャッシュ110が出力した命令を、プロセッサコア100が取得するまでの動作のことである。また、デコードとは、フェッチでリードした命令をデコードし、どういう命令であるかを判定するまでの動作のことである。また、実行とは、デコードによって判定した命令を実際に実行する動作のことである。よって、プログラム51に含まれる命令とは、厳密には、プロセッサコア100によるデコードによって解釈されてから、プロセッサコア100が命令として実行可能となる命令データである。
キャッシュ110は、プロセッサコア100からの要求に応じて、要求された命令をプロセッサコア100に出力する。
キャッシュメモリ111は、プロセッサ10によるプログラム51の実行を高速化するために、プログラム51に含まれる命令を一時的に格納する。キャッシュメモリ111は、例えば、SRAM(Static Random Access Memory)等のアクセス速度が速い記憶装置である。
キャッシュコントローラ112は、プロセッサ10がキャッシュメモリ111又は外部メモリ2に格納されるデータをリード又はライトするためのインタフェースとして機能する。また、キャッシュコントローラ112は、プロセッサ10からアクティベートされた制御信号が入力されている場合は、外部メモリ2からの命令のリードを行わない。
続いて、図2を参照して、本発明の実施の形態1にかかるプログラム51について説明する。
本実施の形態1では、上述した図11に示すプログラム50を実行する場合に、図2に示すようにアクセス抑止命令を示す命令599(以下、「アクセス抑止命令」とする)を挿入する。なお、命令503は、アクセス抑止命令599を挿入することによって、次のブロックにずれ込む。
アクセス抑止命令599は、外部メモリアクセス制御命令であり、キャッシュメモリ制御部による外部メモリ2からの命令の読み出しを抑止する。アクセス抑止命令599は、キャッシュコントローラ112の外部メモリ2からの命令のリードを抑止する命令で、プロセッサコア100が行ってしまう、不要な外部メモリ2からの命令のリードを抑止する。図2に示すように、アクセス抑止命令599を分岐命令502よりも先にフェッチされる位置に挿入して、分岐命令502がフェッチされるときにアクセス抑止命令599を実行するようにすることで、分岐命令502のフェッチ後からフェッチされ、分岐命令502の実行結果によっては不要となってしまう命令503及び504が外部メモリ2からリードされないようにしている。
具体的には、アクセス抑止命令599は、信号線70を介して、プロセッサコア100にアクティベートした制御信号を出力させる命令である。プロセッサコア100は、アクセス抑止命令599を実行した場合、アクセス抑止命令599に基づいて、アクティベートした制御信号をキャッシュコントローラ112に出力して、キャッシュコントローラ112の外部メモリ2からの命令のリードを抑止する。また、プロセッサコア100は、分岐命令502を実行したときに、制御信号をディアクティベートする。
続いて、図1〜4を参照して、本発明の実施の形態1にかかる情報処理システム90の処理について説明する。
ここでは、図2に示すプログラム51の命令500〜502及び599を含むブロック及び命令510及び511を含むブロックがキャッシュメモリ111に格納されており、命令503及び504を含むブロックがキャッシュメモリ111に格納されていない場合において、プログラム51に含まれる命令のうち、命令500から実行を開始する処理について説明する。
ここで、プロセッサ10が命令をフェッチする場合、プロセッサコア100は、命令のリード要求をキャッシュコントローラ112に出力する。キャッシュコントローラ112は、プロセッサコア100から出力されたリード要求に応じて、要求された命令がキャッシュメモリ111に格納されている場合、この命令をプロセッサコア100に出力する。
一方、キャッシュコントローラ112は、要求された命令がキャッシュメモリ111に格納されていない場合、要求された命令のリード要求をメモリコントローラ11に出力する。メモリコントローラ11は、キャッシュコントローラ112から出力されたリード要求に応じて、要求された命令を外部メモリ2に格納されるプログラムからリードして、リードした命令をキャッシュコントローラ112に出力する。そして、キャッシュコントローラ112は、メモリコントローラ11から出力された命令をキャッシュメモリ111に格納するとともに、プロセッサコア100に出力する。
このようにして、プロセッサコア100は、フェッチによって、命令をリードする。
以下、図2及び3を参照して、図2に示す命令を実行する処理について説明する。なお、図3Aにおける700〜790は、プロセッサコア100の各実行サイクルを示している。
サイクル700:プロセッサコア100は、命令500をフェッチする。
サイクル710:プロセッサコア100は、アクセス抑止命令599をフェッチし、命令500をデコードする。
サイクル720:プロセッサコア100は、命令501をフェッチし、アクセス抑止命令599をデコードし、命令500を実行する。
サイクル730:プロセッサコア100は、分岐命令502をフェッチし、命令501をデコードし、アクセス抑止命令599を実行する。ここで、プロセッサコア100は、図3Bに示すように、実行したアクセス抑止命令599に基づいて、信号線70を介して、アクティベートした制御信号をキャッシュ110に出力する。キャッシュコントローラ112は、プロセッサコア100からアクティベートされた制御信号がキャッシュ110に入力されている場合、外部メモリ2からの命令のリードを行わなくする。このサイクル730でフェッチする分岐命令502のように、制御信号がアクティベートされる前にフェッチ動作を開始した場合は、外部メモリ2からの命令のリードを抑止しない。なお、図3Bでは、制御信号を正論理としているが、制御信号は、負論理としてもよい。
サイクル740:プロセッサコア100は、命令503をフェッチし、分岐命令502をデコードし、命令501を実行する。ここで、図2に示すように、命令503は、キャッシュメモリ111に格納されていないが、キャッシュコントローラ112は、プロセッサコア100からアクティベートされた制御信号が入力されているため、外部メモリ2からのリードを行わない。このように、キャッシュコントローラ112は、アクティベートされた制御信号が入力されている場合は、プロセッサコア100から要求された命令がキャッシュメモリ111に入力されていか否かにかかわらず、外部メモリ2からの命令のリードは行わない。
また、キャッシュコントローラ112は、プロセッサコア100から要求された命令がキャッシュメモリ111に格納されている場合は、その命令をプロセッサコア100に出力するが、要求された命令503のようにキャッシュメモリ111に格納されていない場合は、例えばNOP(No Operation)命令や同一のレジスタ値のAND処理等のダミーの命令をプロセッサコア100に出力する。
ここで、ダミーの命令は、分岐命令の実行結果によっては破棄されるため、基本的には、どのような命令であってもよい。しかし、パイプライン処理における各段階の中に、命令の実行前に、命令の実行で使用するデータをフェッチする段階が含まれている場合、データがキャッシュメモリに格納されていないと外部メモリへのアクセスが発生してしまう。したがって、この場合は、NOP(No Operation)命令や同一のレジスタ値のAND処理等のキャッシュメモリや外部メモリへのデータフェッチが不要な命令をダミーの命令とすることで、不要な外部メモリへのアクセスをなくすことができる。なお、本実施の形態のように3段のパイプライン処理を行う場合、データのフェッチは実行段階(EX)で行われているが、実行段階で使用されるデータはキャッシュメモリに格納されているものとして説明している。
サイクル750:命令504をフェッチし、命令503をデコードし、分岐命令502を実行する。ここで、図2に示すように、命令504も、キャッシュメモリ111に格納されていないため、サイクル740における命令503と同様に、外部メモリ2からのリードは抑止される。そのため、キャッシュコントローラ112は、ダミーの命令をプロセッサコア100に出力する。また、プロセッサコア100は、分岐命令502の実行に連動して、キャッシュ110に出力している制御信号をディアクティベートする。このサイクル750でフェッチする命令504のように、制御信号がディアクティベートされる前にフェッチ動作を開始した場合は、外部メモリ2からのリードが抑止される。
ここで、分岐命令502の実行結果によって、次に実行する命令が、命令510となるものとする。プロセッサコア100は、命令504及び503は次に実行する命令ではなくなるため、パイプラインをフラッシュして、命令504及び503の代わりに実行する準備をしていたダミーの命令を破棄する。
なお、プロセッサコア100は、サイクル740において分岐命令502をデコードする段階で、分岐命令502が分岐命令であることを知ることができる。プロセッサコア100は、デコードした命令が分岐命令である場合に、次のサイクルで実行する命令のデコード結果に制御信号をディアクティベートする命令を含めるようにしてデコード結果を生成している。これによって、プロセッサコア100は、サイクル750の分岐命令502の実行段階において、分岐命令を実行するとともに、制御信号をディアクティベートする処理を行うことを可能としている。
外部メモリ2から命令をリードするのに6サイクルかかるものとした時に、アクセス抑止命令599を挿入しないで、外部メモリ2へのアクセス抑止を行っていない場合に外部メモリ2へのアクセスが発生すると、図12に示すように、外部メモリ2から命令のリードが発生してしまう。しかし、ここでリードされる命令のように、分岐命令502のフェッチ後であって、分岐命令502のフェッチから分岐命令502を実行するまでの分岐命令502のパイプライン処理期間中にフェッチされる命令は、分岐命令の実行結果によっては、不要となってしまう命令である。そこで、本実施の形態1では、図3に示すように、分岐命令502のフェッチ後であって、分岐命令502をパイプライン処理している期間中は、外部メモリ2からの命令のリードを抑止するようにしたことによって、外部メモリ2からの不要な命令のリードが発生しなくなる。
また、分岐命令502の実行結果によって、次に実行する命令が、命令503となってしまった場合、ダミーの命令をフェッチしたことによって命令503が準備されていないため、プロセッサコア100は、再度命令503をフェッチして、外部メモリ2から命令503をリードすることとなる。しかし、一般的に、外部メモリから命令をリードする場合に比べて、キャッシュメモリから命令をリードするのにかかるサイクルは非常に小さい。そのため、分岐命令502の実行結果によって、命令503及び504が不要となってしまう場合に、命令503及び504の外部メモリ2からのリードを抑止できることを考慮すると、再度の命令503のフェッチが必要となるとしても、キャッシュメモリ111からのダミーの命令のフェッチによる遅延は非常に小さく、システムの性能に与える影響はほとんどない。
サイクル760:プロセッサコア100は、命令510をフェッチする。
サイクル770:プロセッサコア100は、命令511をフェッチし、命令510をデコードする。
プロセッサコア100は、以降のサイクルも同様にして、プログラム51に含まれる命令を実行していく。
続いて、図4を参照して、本実施の形態1にかかる情報処理システム90のアクセス抑止命令の挿入処理について説明する。
アクセス抑止命令は、図11に示すプログラム50をコンパイルするときに、コンパイラによる処理によって挿入する。これにより、図2に示すプログラム51が生成される。ここで、コンパイラは、例えば、プロセッサと、RAM(Random Access Memory)、ROM(Read Only Memory)及びHDD(Hard Disk Drive)等の任意の記憶装置と、マウスやキーボード等の任意の入力装置と、CRT(Cathode Ray Tube)又はPDP(Plasma Display Panel)等の任意の出力装置等を有するPC(Personal Computer)、サーバ等の情報処理装置に供給されて実行される。また、ここでは、リンカにおける処理もコンパイラに含めて説明する。
情報処理システムのパイプライン段数やキャッシュブロックの大きさ等は、システムのハードウェア構成が決まれば分かる。また、コンパイラは、コンパイルをするときに、外部メモリのどのアドレスにプログラムを配置するかを決定することができ、プログラムにおけるブロックの境界が分かる。そのため、コンパイラは、これらの情報に基づいて、コンパイル時に、外部メモリからの不要な命令のリードが発生する可能性のある箇所を判定して、アクセス抑止命令を挿入することができる。
図4Aは、図11に示すプログラム50の分岐命令502周辺の命令を示している。コンパイラは、パイプライン段数が3段であることから、分岐命令502のフェッチ後から分岐命令502を実行して分岐先が分かるまでにフェッチされて、分岐先によっては不要となる可能性のある命令を命令503及び504と判断する。そして、コンパイラは、不要となる可能性のある命令504が、分岐命令502と異なるブロックに含まれており、外部メモリ2からリードしてしまう可能性があると判断する。
そのように判断した場合、コンパイラは、図4Dに示すように、アクセス抑止命令を挿入する。ここで、コンパイラは、不要となる可能性のある命令503及び504の外部メモリ2からのリードを抑止することができるように、分岐命令502をフェッチするサイクルでアクセス抑止命令599が実行されるような位置にアクセス抑止命令599を挿入する。つまり、パイプライン段数が3段であるため、分岐命令502より2命令前に実行されるアドレス位置に、アクセス抑止命令599を挿入する。このようにして、図4D及び図2に示すようなプログラム51が生成される。
なお、図11に示すプログラム50の分岐命令502周辺の命令が、図4Bのような配置となっている場合、コンパイラは、不要となる可能性のある命令503及び504が分岐命令502と同じブロックに含まれており、外部メモリ2からリードすることはないため、アクセス抑止命令599の挿入は行わない。
また、図11に示すプログラム50の分岐命令502周辺の命令が、図4Cのような配置となっている場合、コンパイラは、不要となる可能性のある命令503及び504が、分岐命令502と異なるブロックに含まれており、外部メモリ2からリードしてしまう可能性があると判断する。しかし、アクセス抑止命令599を挿入すると、図4Eに示すように、分岐命令502も、命令503及び504が含まれる次のブロックにずれ込んでしまう。この場合、コンパイラは、図4Cも図4Eも命令503及び504が不要となった場合であっても、命令502〜504の処理にかかるサイクル数は変わらず、かえってアクセス抑止命令599を挿入した分の処理遅延が発生してしまうため、アクセス抑止命令599の挿入は行わない。
以上に説明したように、本実施の形態1によれば、アクセス抑止命令を分岐命令よりも先にフェッチされる位置に挿入して、分岐命令がフェッチされるときにそのアクセス抑止命令を実行するようにしている。また、外部メモリからの命令のリードの抑止を解除する解除命令を分岐命令のデコード結果に含めて、分岐命令と共に実行するようにしている。これにより、分岐命令のフェッチ後であって、分岐命令をパイプライン処理している期間中にフェッチされるが、分岐命令の実行結果によっては、不要となる可能性のある命令の外部メモリからのリードを抑止することができる。そのため、外部メモリから、不要となる命令のリードを抑止することができ、システムの性能を向上することができる。
また、本実施の形態1によれば、外部メモリからの不要となる命令のリードを抑止することによって、外部メモリからリードされた不要な命令によってキャッシュメモリの内容が書き換えられてしまうことを防ぐことができるため、書き換え前の命令が再度必要となった時に、再びアクセス速度が遅い外部メモリからの命令のリードが必要となってしまう事態を防ぐことができる。これによっても、システムの性能を向上することができる。
また、本実施の形態1によれば、外部メモリからの不要となる命令のリードを抑止することによって、外部メモリへのアクセス回数を減らすことができるため、消費電力を低減することもできる。
本発明の実施の形態2.
続いて、図5を参照して、本発明の実施の形態2にかかる情報処理システムの構成について説明する。なお、実施の形態1と同様の構成要素については、説明を省略する。
本実施の形態2にかかる情報処理システム91は、実施の形態1におけるプロセッサコア100及びプログラム51に代わって、プロセッサコア120及びプログラム61を有する点が異なる。
プロセッサコア120は、キャッシュ110を介して、プログラム61に含まれる命令を取得して、取得した命令を実行する。プロセッサコア120は、プロセッサコア100と異なり、5段のパイプライン処理を行う。プロセッサコア120は、命令のフェッチを2サイクル(IF1、IF2)かけて行い、命令のデコードを2サイクル(DE1、DE2)かけて行い、命令の実行を1サイクル(EX)かけて行う。そして、この5段のパイプライン処理を行うプロセッサコアは、1サイクルのうちに、IF1、IF2、DE1、DE2及びEXのそれぞれの処理を並列に処理する。
プログラム61は、プロセッサコア120によって実行される複数の命令が含まれる。
続いて、図6を参照して、本発明の実施の形態2にかかるプログラム61について説明する。
本実施の形態2では、特許文献1に開示の技術の説明において例示した図13に示すプログラム60を実行する場合に、図6に示すようにアクセス抑止命令699を挿入する。なお、命令606は、アクセス抑止命令699を挿入することによって、次のブロックにずれ込む。
続いて、図6及び7を参照して、図6に示す命令を実行する処理について説明する。ここでは、図6に示すプログラム61の命令600〜605及び699を含むブロック及び命令610を含むブロックがキャッシュメモリ111に格納されており、命令606及び607を含むブロックがキャッシュメモリ111に格納されていない場合において、プログラム61に含まれる命令のうち、アクセス抑止命令699から実行を開始する処理について説明する。なお、図7Aにおける702〜832は、プロセッサコア120の各実行サイクルを示している。
サイクル702:プロセッサコア120は、アクセス抑止命令699をフェッチする。
サイクル712:プロセッサコア120は、命令600及びアクセス抑止命令699をフェッチする。
サイクル722:プロセッサコア120は、命令601及び600をフェッチし、アクセス抑止命令699をデコードする。
サイクル732:プロセッサコア120は、命令602及び601をフェッチし、命令600及びアクセス抑止命令699をデコードする。
サイクル742:プロセッサコア120は、分岐命令603及び命令602をフェッチし、命令601及び600をデコードし、アクセス抑止命令699を実行する。ここで、プロセッサコア120は、図7Bに示すように、実行したアクセス抑止命令699に基づいて、信号線70を介して、アクティベートした制御信号をキャッシュ110に出力する。実施の形態1と同様に、キャッシュコントローラ112は、プロセッサコア120からアクティベートされた制御信号がキャッシュ110に入力されている場合、外部メモリ2からの命令のリードが抑止される。
サイクル752:プロセッサコア120は、命令604及び分岐命令603をフェッチし、命令602及び601をデコードし、命令600を実行する。ここで、キャッシュコントローラ112は、外部メモリ2からの命令のリードは抑止されているが、プロセッサコア120から要求された命令604がキャッシュメモリ111に格納されているため、命令604をプロセッサコア120に出力する
サイクル762:プロセッサコア120は、命令605及び604をフェッチし、分岐命令603及び命令602をデコードし、命令601を実行する。ここで、キャッシュコントローラ112は、外部メモリ2へのアクセスは抑止されているが、プロセッサコア120から要求された命令605がキャッシュメモリ111に格納されているため、命令605をプロセッサコア120に出力する
サイクル772:プロセッサコア120は、命令606及び605をフェッチし、命令604及び分岐命令603をデコードし、命令602を実行する。キャッシュコントローラ112は、命令606がキャッシュメモリ111に格納されていないが、外部メモリ2からの命令のリードが抑止されているため、ダミーの命令をプロセッサコア120に出力する。
サイクル782:プロセッサコア120は、命令607及び606をフェッチし、命令605及び604をデコードし、分岐命令603を実行する。キャッシュコントローラ112は、命令607がキャッシュメモリ111に格納されていないが、外部メモリ2からの命令のリードが抑止されているため、ダミーの命令をプロセッサコア120に出力する。また、分岐命令603の実行に連動して、プロセッサコア120は、キャッシュ110に出力している制御信号をディアクティベートする。
また、分岐命令603の実行結果によって、次に実行する命令が、命令610となるものとする。プロセッサコア120は、命令604〜607は次に実行する命令ではなくなるため、パイプラインをフラッシュして、命令604及び605と、命令606及び606の代わりに実行する準備をしていた命令ダミーの命令とを破棄する。
サイクル792:プロセッサコア120は、命令610をフェッチする。
プロセッサコア120は、以降のサイクルも同様にして、プログラム61に含まれる命令を実行していく。
続いて、図6、8及び9を参照して、本実施の形態2にかかるアクセス抑止命令の挿入処理について説明する。
アクセス抑止命令699は、実施の形態1と同様に、図13に示すプログラム60をコンパイルするときに、コンパイラによる処理によって挿入する。これにより、図6に示すプログラム61が生成される。
本実施の形態2では、図6に示すように、コンパイラは、実施の形態1と同様に、不要となる可能性のある命令604〜607がフェッチされる場合に、外部メモリ2からのリードを抑止することができるように、分岐命令603をフェッチするサイクルでアクセス抑止命令699が実行されるような位置にアクセス抑止命令699を挿入する。つまり、パイプライン段数が5段であるため、分岐命令603の4命令前に実行されるアドレス位置に、アクセス抑止命令699を挿入する。
ここで、図6に示すように、フェッチするときに、外部メモリ2へのアクセスが発生する命令は、キャッシュメモリ111に格納されていないブロックにおいて最初にフェッチされる命令606である。
そのため、コンパイラは、アクセス抑止命令699を命令600及び601の間に挿入するようにしてもよい。このようにしても、命令605以降の命令605〜607の外部メモリ2からのリードが抑止されるため、キャッシュメモリ111に格納されていない命令606及び607の外部メモリ2からのリードは抑止される。
また、アクセス抑止命令699を命令601及び602の間に挿入するようにしてもよい。このようにしても、命令606以降の命令606及び607の外部メモリ2からのリードが抑止されるため、キャッシュメモリ111に格納されていない命令606及び607の外部メモリ2からのリードは抑止される。
このように、分岐命令603がキャッシュメモリ111に格納されている場合には、命令604及び命令605もキャッシュメモリ111に格納されていることとなるため、外部メモリ2からのリードは発生しないが、分岐命令と異なるブロックに含まれる命令606をフェッチするときには、外部メモリ2からのリードが発生する可能性がある。そのため、分岐命令と同じブロックに含まれ、分岐命令に後続するいずれかの命令がフェッチされた後であって、分岐命令をパイプライン処理している期間中に、外部メモリからの命令の読み出しを抑止するようにすることによっても、分岐命令の実行結果によっては不要となる可能性のある命令の外部メモリからのリードを抑止することができる。
また、本実施の形態2では、図15に示すプログラム62のように、特許文献1に開示の技術では、外部メモリから不要な命令をリードしてしまうような場合でも、コンパイラによって、アクセス抑止命令699を挿入して、図8に示すプログラム63を生成することができるため、不要となる可能性のある命令604〜607がフェッチされる場合に、外部メモリからのリードを抑止することができる。なお、上述したように、アクセス抑止命令699を命令600及び601の間に挿入するようにして、命令605のフェッチから外部メモリ2へのアクセスを抑止するようにしてキャッシュメモリに格納されていない命令605〜607の外部メモリ2からのリードを抑止するようにしてもよい。
また、本実施の形態2では、図16に示すプログラム64のように、特許文献1に開示の技術では、外部メモリから不要な命令をリードしてしまうような場合でも、コンパイラによって、アクセス抑止命令699を挿入して、図9に示すプログラム65を生成することができるため、不要となる可能性のある命令604〜607がフェッチされる場合に、外部メモリからのリードを抑止することができる。
以上に説明したように、本実施の形態2によれば、本実施の形態1と同様に、分岐命令のフェッチ後であって、分岐命令をパイプライン処理している期間中は、外部メモリからの命令のリードを抑止する制御信号を用いる事によって、外部メモリからの不要となる命令のリードを抑止することができ、システムの性能を向上することができる。
また、本実施の形態2によれば、アクセス抑止命令を分岐命令と同じブロックに含まれ、分岐命令に後続するいずれかの命令よりも先にフェッチされる位置にアクセス抑止命令を挿入して、この分岐命令と同じブロックに含まれるいずれかの命令がフェッチされるときにそのアクセス抑止命令を実行するようにしている。また、分岐命令のデコード結果に外部メモリからの命令のリードの抑止を解除する解除命令を含めて、分岐命令と共に実行するようにしている。これにより、分岐命令と同じブロックに含まれ、分岐命令に後続するいずれかの命令がフェッチされた後であって、分岐命令をパイプライン処理している期間中にフェッチされる命令の外部メモリからのリードを抑止することができる。このようにすると、分岐命令のフェッチ後であって、分岐命令のパイプライン処理期間中にフェッチされるが、分岐命令の実行結果によっては、不要となる可能性のある命令のうち、分岐命令と異なるブロックに含まれ、外部メモリからのリードが発生してしまう可能性のある命令について、外部メモリからのリードを抑止することができる。そのため、外部メモリから、不要となる命令のリードを抑止することができ、システムの性能を向上することができる。
なお、本発明は上述した実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、パイプラインの段数やプログラムに含まれる命令の構成等は、本実施の形態において例示したものに限られない。
また、アクセス抑止命令は、新規追加して命令であってもよい。また、既存の命令の空き領域を使いまわして、例えば、その領域に特定のデータが格納されている場合にはアクセス抑止命令として扱う等してもよい。
以上に説明した本発明にかかるプログラム及びコンパイラは様々な種類の記憶媒体に格納することが可能であり、通信媒体を介して伝達されることが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、CD−ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)、BD(Blu-ray(登録商標) Disc)、ROMカートリッジ、バッテリバックアップ付きRAM(Random Access Memory)、メモリカートリッジ、フラッシュメモリカートリッジ、不揮発性RAMカートリッジを含む。また、通信媒体には、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体を含む。また、上述のプログラムは、インターネットを介して伝達することも可能である。
また、プロセッサが上述したプログラム及びコンパイラを実行することにより、上述の実施の形態の機能が実現されるだけではなく、このプログラム及びコンパイラの指示に基づき、プロセッサによって動作しているOS(Operating System)もしくはアプリケーションソフトと共同して上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
さらに、このコンパイラの処理の全てもしくは一部が情報処理システムに挿入された機能拡張ボードや情報処理システムに接続された機能拡張ユニットにより行われて上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
1、3 LSI
2、4 外部メモリ
10、30 プロセッサ
11、31 メモリコントローラ
50、51、60、61、62、63、64、65 プログラム
70 信号線
71、72、73、81、82、83 バス
90、91、92 情報処理システム
100、120、300 プロセッサコア
110、310 キャッシュ
111、311 キャッシュメモリ
112、312 キャッシュコントローラ

Claims (11)

  1. 複数の命令をパイプライン処理によって実行する情報処理システムであって、
    キャッシュメモリと、
    少なくとも1つ以上の分岐命令を含む複数の命令からなるプログラムが格納された外部メモリから、前記複数の命令を順次読み出し、前記キャッシュメモリに一時的に格納するキャッシュメモリ制御部と、
    前記キャッシュメモリに格納された命令をパイプライン処理するとともに、前記分岐命令のフェッチ後であって、当該分岐命令をパイプライン処理している期間中、前記キャッシュメモリ制御部による前記外部メモリからの命令の読み出しを抑止する制御部と、を備えた情報処理システム。
  2. 複数の命令をパイプライン処理によって実行する情報処理システムであって、
    キャッシュメモリと、
    少なくとも1つ以上の分岐命令を含む複数の命令からなるプログラムが格納され、複数のブロックに区分される外部メモリから、前記複数の命令を順次読み出し、前記キャッシュメモリに一時的に格納するキャッシュメモリ制御部と、
    前記キャッシュメモリに格納された命令をパイプライン処理するとともに、前記分岐命令と同じブロックに含まれ、前記分岐命令に後続するいずれかの命令がフェッチされた後であって、前記分岐命令をパイプライン処理している期間中は、前記キャッシュメモリ制御部による前記外部メモリからの命令の読み出しを抑止する制御部と、を備えた情報処理システム。
  3. 前記プログラムは、前記キャッシュメモリ制御部による前記外部メモリからの命令の読み出しを抑止する命令である外部メモリアクセス制御命令を含み、
    前記制御部は、前記命令のフェッチと同じサイクルで前記外部メモリアクセス制御命令を実行することによって、前記外部メモリからの命令の読み出しを抑止する、請求項1又は2に記載の情報処理システム。
  4. 前記制御部は、前記分岐命令を実行したときに、前記外部メモリからの命令の読み出しの抑止を解除する請求項1乃至3のいずれか1項に記載の情報処理システム。
  5. 前記制御部は、前記命令をデコードしたときに、当該命令が分岐命令である場合は、前記外部メモリからの命令の読み出しの抑止を解除する命令を含めたデコード結果を生成し、当該デコード結果を実行することによって、前記外部メモリからの命令の読み出しの抑止を解除する、請求項4に記載の情報処理システム。
  6. 前記キャッシュメモリ制御部は、前記外部メモリからの命令の読み出しを抑止されている場合に、前記制御部による命令のフェッチがあったときは、ダミーの命令を前記制御部に出力する、請求項1乃至5のいずれか1項に記載の情報処理システム。
  7. 前記制御部は、前記外部メモリからの命令の読み出しを抑止するか否かを示す信号を前記キャッシュメモリ制御部に出力することによって、前記外部メモリからの命令の読み出しを抑止する、請求項1乃至6のいずれか1項に記載の情報処理システム。
  8. 前記制御部は、プロセッサコアであり、
    前記キャッシュメモリ制御部は、キャッシュコントローラである、請求項1乃至7のいずれか1項に記載の情報処理システム。
  9. 外部メモリに格納され、少なくとも1つ以上の分岐命令を含む複数の命令からなるプログラムをパイプライン処理によって実行する際に、前記外部メモリから前記複数の命令を順次読み出し格納するキャッシュメモリの制御方法であって、
    前記分岐命令のフェッチ後であって、当該分岐命令をパイプライン処理している期間中、前記キャッシュメモリへの前記外部メモリからの命令の読み出しを禁止する、キャッシュメモリの制御方法。
  10. 外部メモリからキャッシュメモリに読み出され、パイプライン処理されるプログラムであって、
    所定の動作を行わせる複数の命令と、
    前記外部メモリへのアクセスを制御する命令である外部メモリアクセス制御命令とを有し、
    前記複数の命令は、分岐命令を有し、
    前記外部メモリアクセス制御命令は、前記分岐命令のフェッチ後の前記キャッシュメモリへの前記外部メモリからの命令の読み出しを抑止するプログラム。
  11. 外部メモリからキャッシュメモリに読み出されてパイプライン処理され、少なくとも1つ以上の分岐命令を含む複数の命令からなるプログラムをコンパイルするコンパイラであって、
    前記分岐命令のフェッチ後の前記キャッシュメモリへの前記外部メモリからの命令の読み出しを抑止する外部メモリアクセス制御命令を挿入する処理をプロセッサに実行させる、コンパイラ。
JP2009174041A 2009-07-27 2009-07-27 情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラ Pending JP2011028540A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009174041A JP2011028540A (ja) 2009-07-27 2009-07-27 情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009174041A JP2011028540A (ja) 2009-07-27 2009-07-27 情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラ

Publications (2)

Publication Number Publication Date
JP2011028540A true JP2011028540A (ja) 2011-02-10
JP2011028540A5 JP2011028540A5 (ja) 2012-04-05

Family

ID=43637208

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009174041A Pending JP2011028540A (ja) 2009-07-27 2009-07-27 情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラ

Country Status (1)

Country Link
JP (1) JP2011028540A (ja)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018117325A (ja) * 2017-01-20 2018-07-26 株式会社日立国際電気 ソフトウェア無線機の制御装置、ソフトウェア無線機及びソフトウェア無線機の起動方法
JP7089505B2 (ja) 2016-08-26 2022-06-22 サンライズ メモリー コーポレイション 3次元アレイにおける容量結合型不揮発性薄膜トランジスタストリング
US11488676B2 (en) 2015-09-30 2022-11-01 Sunrise Memory Corporation Implementing logic function and generating analog signals using NOR memory strings
US11508693B2 (en) 2020-02-24 2022-11-22 Sunrise Memory Corporation High capacity memory module including wafer-section memory circuit
US11508445B2 (en) 2015-09-30 2022-11-22 Sunrise Memory Corporation Capacitive-coupled non-volatile thin-film transistor strings in three dimensional arrays
US11515309B2 (en) 2019-12-19 2022-11-29 Sunrise Memory Corporation Process for preparing a channel region of a thin-film transistor in a 3-dimensional thin-film transistor array
US11675500B2 (en) 2020-02-07 2023-06-13 Sunrise Memory Corporation High capacity memory circuit with low effective latency
US11705496B2 (en) 2020-04-08 2023-07-18 Sunrise Memory Corporation Charge-trapping layer with optimized number of charge-trapping sites for fast program and erase of a memory cell in a 3-dimensional NOR memory string array
US11730000B2 (en) 2017-06-20 2023-08-15 Sunrise Memory Corporation 3-dimensional nor string arrays in segmented stacks
US11729980B2 (en) 2017-06-20 2023-08-15 Sunrise Memory Corporation 3-dimensional NOR memory array architecture and methods for fabrication thereof
US11749344B2 (en) 2015-09-30 2023-09-05 Sunrise Memory Corporation Three-dimensional vertical nor flash thin-film transistor strings
US11751388B2 (en) 2017-06-20 2023-09-05 Sunrise Memory Corporation 3-dimensional nor strings with segmented shared source regions
US11789644B2 (en) 2020-02-24 2023-10-17 Sunrise Memory Corporation Memory centric system incorporating computational memory
US11817156B2 (en) 2015-09-30 2023-11-14 Sunrise Memory Corporation Multi-gate nor flash thin-film transistor strings arranged in stacked horizontal active strips with vertical control gates
US11839086B2 (en) 2021-07-16 2023-12-05 Sunrise Memory Corporation 3-dimensional memory string array of thin-film ferroelectric transistors
US11842777B2 (en) 2020-11-17 2023-12-12 Sunrise Memory Corporation Methods for reducing disturb errors by refreshing data alongside programming or erase operations
US11910612B2 (en) 2019-02-11 2024-02-20 Sunrise Memory Corporation Process for forming a vertical thin-film transistor that serves as a connector to a bit-line of a 3-dimensional memory array

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5140824A (ja) * 1974-10-04 1976-04-06 Hitachi Ltd
JPS56123041A (en) * 1980-02-29 1981-09-26 Hitachi Ltd Information processor
JPS6431228A (en) * 1987-07-27 1989-02-01 Matsushita Electric Ind Co Ltd Instruction prefetching control device
JPH0227430A (ja) * 1988-07-15 1990-01-30 Fujitsu Ltd 分岐命令のフェッチ方式
JPH04188245A (ja) * 1990-11-22 1992-07-06 Toshiba Corp キャッシュメモリ制御装置
JPH0683621A (ja) * 1992-08-31 1994-03-25 Fujitsu Ltd フェッチ方式
JPH07105093A (ja) * 1993-10-04 1995-04-21 Mitsubishi Electric Corp データ処理装置
JP2001154845A (ja) * 1999-11-30 2001-06-08 Fujitsu Ltd キャッシュミスした後のメモリバスアクセス制御方式
JP2002182902A (ja) * 2000-12-05 2002-06-28 Faraday Technology Corp メモリデータアクセス構造およびその方法
JP2008529191A (ja) * 2005-02-03 2008-07-31 クゥアルコム・インコーポレイテッド 電力的に効率的な命令プリフェッチ機構

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5140824A (ja) * 1974-10-04 1976-04-06 Hitachi Ltd
JPS56123041A (en) * 1980-02-29 1981-09-26 Hitachi Ltd Information processor
JPS6431228A (en) * 1987-07-27 1989-02-01 Matsushita Electric Ind Co Ltd Instruction prefetching control device
JPH0227430A (ja) * 1988-07-15 1990-01-30 Fujitsu Ltd 分岐命令のフェッチ方式
JPH04188245A (ja) * 1990-11-22 1992-07-06 Toshiba Corp キャッシュメモリ制御装置
JPH0683621A (ja) * 1992-08-31 1994-03-25 Fujitsu Ltd フェッチ方式
JPH07105093A (ja) * 1993-10-04 1995-04-21 Mitsubishi Electric Corp データ処理装置
JP2001154845A (ja) * 1999-11-30 2001-06-08 Fujitsu Ltd キャッシュミスした後のメモリバスアクセス制御方式
JP2002182902A (ja) * 2000-12-05 2002-06-28 Faraday Technology Corp メモリデータアクセス構造およびその方法
JP2008529191A (ja) * 2005-02-03 2008-07-31 クゥアルコム・インコーポレイテッド 電力的に効率的な命令プリフェッチ機構

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11488676B2 (en) 2015-09-30 2022-11-01 Sunrise Memory Corporation Implementing logic function and generating analog signals using NOR memory strings
US11915768B2 (en) 2015-09-30 2024-02-27 Sunrise Memory Corporation Memory circuit, system and method for rapid retrieval of data sets
US11508445B2 (en) 2015-09-30 2022-11-22 Sunrise Memory Corporation Capacitive-coupled non-volatile thin-film transistor strings in three dimensional arrays
US11817156B2 (en) 2015-09-30 2023-11-14 Sunrise Memory Corporation Multi-gate nor flash thin-film transistor strings arranged in stacked horizontal active strips with vertical control gates
US11749344B2 (en) 2015-09-30 2023-09-05 Sunrise Memory Corporation Three-dimensional vertical nor flash thin-film transistor strings
JP7089505B2 (ja) 2016-08-26 2022-06-22 サンライズ メモリー コーポレイション 3次元アレイにおける容量結合型不揮発性薄膜トランジスタストリング
JP2018117325A (ja) * 2017-01-20 2018-07-26 株式会社日立国際電気 ソフトウェア無線機の制御装置、ソフトウェア無線機及びソフトウェア無線機の起動方法
US11730000B2 (en) 2017-06-20 2023-08-15 Sunrise Memory Corporation 3-dimensional nor string arrays in segmented stacks
US11729980B2 (en) 2017-06-20 2023-08-15 Sunrise Memory Corporation 3-dimensional NOR memory array architecture and methods for fabrication thereof
US11751388B2 (en) 2017-06-20 2023-09-05 Sunrise Memory Corporation 3-dimensional nor strings with segmented shared source regions
US11910612B2 (en) 2019-02-11 2024-02-20 Sunrise Memory Corporation Process for forming a vertical thin-film transistor that serves as a connector to a bit-line of a 3-dimensional memory array
US11515309B2 (en) 2019-12-19 2022-11-29 Sunrise Memory Corporation Process for preparing a channel region of a thin-film transistor in a 3-dimensional thin-film transistor array
US11844204B2 (en) 2019-12-19 2023-12-12 Sunrise Memory Corporation Process for preparing a channel region of a thin-film transistor in a 3-dimensional thin-film transistor array
US11675500B2 (en) 2020-02-07 2023-06-13 Sunrise Memory Corporation High capacity memory circuit with low effective latency
US11789644B2 (en) 2020-02-24 2023-10-17 Sunrise Memory Corporation Memory centric system incorporating computational memory
US11508693B2 (en) 2020-02-24 2022-11-22 Sunrise Memory Corporation High capacity memory module including wafer-section memory circuit
US11705496B2 (en) 2020-04-08 2023-07-18 Sunrise Memory Corporation Charge-trapping layer with optimized number of charge-trapping sites for fast program and erase of a memory cell in a 3-dimensional NOR memory string array
US11842777B2 (en) 2020-11-17 2023-12-12 Sunrise Memory Corporation Methods for reducing disturb errors by refreshing data alongside programming or erase operations
US11839086B2 (en) 2021-07-16 2023-12-05 Sunrise Memory Corporation 3-dimensional memory string array of thin-film ferroelectric transistors

Similar Documents

Publication Publication Date Title
JP2011028540A (ja) 情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラ
JP4837305B2 (ja) マイクロプロセッサ及びマイクロプロセッサの制御方法
JP6837011B2 (ja) アルゴリズム整合、機能無効化、または性能制限による後方互換性
JP4202244B2 (ja) Vliw型dsp,及びその動作方法
JP2017191503A (ja) 演算処理装置、および演算処理装置の制御方法
JP2008047124A (ja) コンピュータグラフィックスデータの処理方法とその処理装置
JP3683248B2 (ja) 情報処理装置及び情報処理方法
US20070260857A1 (en) Electronic Circuit
JP2008204357A (ja) 情報処理装置
JP2006216040A (ja) ソフトウエアによる動的予測方法および装置
JP5863855B2 (ja) 分岐命令を高速に処理するためのインストラクションキャッシュを有するプログラマブルコントローラ
US8443174B2 (en) Processor and method of performing speculative load operations of the processor
JP2007257349A (ja) プロセッサ及びその処理方法
JP2008071061A (ja) 情報処理装置
JP5209390B2 (ja) 情報処理装置及び命令フェッチ制御方法
JP3670646B2 (ja) レジスタ転送オペレーション
JP5843804B2 (ja) 演算装置およびエラー処理方法
JP2011070290A (ja) データプロセッサ
JP5229383B2 (ja) プリフェッチ要求回路
JP5292831B2 (ja) プログラマブルコントローラ
JP2011081623A (ja) シミュレーション装置、方法およびプログラム
JP5679263B2 (ja) 情報処理装置及びマイクロ命令処理方法
JP2006331415A (ja) データプロセッサ、データ処理方法
JP2008090411A (ja) 情報処理装置、命令制御機構及び命令制御方法
KR100300875B1 (ko) 캐쉬 미스 시 처리 방법

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120217

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121204

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130402