(57)【要約】補助メモリを用いてメモリにアクセスする方法及びシステムを示す。この発明によれば、同一メモリ位置にアクセスする記憶命令及びそれに続く読込命令を識別し、時間差を求める。記憶命令は、記憶命令により記憶されるデータ要素が読込動作により初めて読み込まれるまでに経過する時間間隔の指標を含む。この指標に基づいて、記憶命令は、主メモリに直接アクセスし、又は補助メモリを介して主メモリに送られる。
2009505267.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムをマシンプログラムにコンパイルする方法であって、
記憶命令を識別するステップと、
前記記憶命令によりアクセスされるメモリ位置を識別するステップと、
その後に記憶命令が続く同一のメモリ位置にアクセスする第１の読込命令を認識するステップと、
前記読込命令と記憶命令との間のクロックサイクル数を示す指標を記憶動作に与えるステップと
を含むことを特徴とする方法。
【請求項２】
メモリにアクセスする方法であって、
マシンプログラムを読み出すステップと、
前記マシンプログラム内の第１及び第２のタイプの記憶命令を識別するステップと、
前記第１のタイプの記憶命令により識別されたデータを補助メモリを介して主メモリに選択的に送り、第２のタイプの記憶命令により識別されたデータを主メモリに直接送るステップと
を含むことを特徴とする方法。
【請求項３】
マシンプログラム内の記憶命令を実行するプロセッサと、前記記憶命令によりアドレス指定されたデータを記憶する主メモリ及び補助メモリとを備えるメモリアクセスシステムであって、
前記プロセッサは、第１及び第２のタイプの記憶命令を実行するよう構成されており、第１のタイプの記憶命令により識別されたデータは補助メモリを介して主メモリに送られ、第２のタイプの記憶命令により識別されたデータは主メモリに直接送られることを特徴とするシステム。
【請求項４】
それぞれが２次補助メモリを有し、前記主メモリに接続された１つ以上のさらなるプロセッサと、
プロセッサ間での主メモリのアクセスを調停するためのアービトレータを備える、請求項３に記載のメモリアクセスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はメモリにアクセスする方法及びシステムに関し、より具体的には、この発明は補助メモリを用いてメモリにアクセスする方法及びシステムに関する。この発明はさらに、ソースプログラムをマシンプログラムにコンパイルする方法に関する。
【背景技術】
【０００２】
マイクロプロセッサは、近代的な生活様式における日々の活動の自動化に重要な役割を果たしており、業界では、自動化プロセッサをより高速にする継続的な努力がなされている。
【０００３】
現在、実行用データを利用可能であるという前提の下で、命令を高速で実行できるマイクロプロセッサが入手可能である。実行用データにアクセスするため、プロセッサはメモリと通信を行わなければならない。このことは、メモリ速度の向上がプロセッサ速度の向上に遅れをとっていることから、ボトルネックとなる。速度の不一致のため、メモリアクセスのステップは一般にプロセッサの失速を招く。
【０００４】
従来、プロセッサは、主メモリと、メモリの高速アクセスのための補助メモリとを備える。補助メモリは、バッファ又はライトバックバッファと呼ばれることが多く、データ及びデータを記憶すべき主メモリ内のメモリ位置のアドレスを一時的に記憶するための中間メモリとして用いられる。これにより、主メモリが、同一のプロセッサの他の命令によりアクセスされていたり、他のプロセッサによりアクセスされていたり、又はリフレッシュ動作に供せられていたりする場合にも、プロセッサが迅速にデータを書き込むことが可能となる。
【０００５】
プロセッサは、読込命令又は記憶命令を用いてメモリにアクセスする。従来、各記憶命令は補助メモリを介してデータを主メモリに送り、各読込メモリは補助メモリ内のメモリアドレスの検索を伴う。補助メモリ内にアドレスが存在する場合には、補助メモリからデータを持ってくる。そうでなければ、主メモリの特定のアドレスからデータを持ってくる。
【０００６】
この技術は、データ及びアドレスを補助メモリに一時的に記憶することにより、記憶命令に対して読込命令の実行を優先させる。これにより、プロセッサが主メモリ内のデータの位置に到達する以前に、補助メモリからデータを読み出すことを可能にする。さらに、この技術は、主メモリからのデータの読み込みを、他のデータの主メモリへの記憶を待機させたままで可能とする。しなし、この仕様は、各読込命令が、主メモリにアクセス可能となる前に、補助メモリ内のアドレスを検索することを本質的に必要とし、これは付加的な時間を必要とする。他方で、マシンプログラムの一部が複数の連続した記憶動作を有する場合には、補助メモリのサイズの制約によるデータロスを回避するために、記憶動作は読込動作に対して優先されるとみなされる。このことは、さらにプロセッサの失速を招く。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、この発明の目的は、プロセッサのストールサイクルの数を低減する、メモリアクセス方法及びシステムを提供することにある。
【課題を解決するための手段】
【０００８】
この目的は、記憶命令を識別するステップと、前記記憶命令によりアクセスされるメモリ位置を識別するステップと、以下では記憶命令の第１関連読込命令又は第１関連読込命令とも称される、その後に記憶命令が続く同一のメモリ位置にアクセスする第１の読込命令を認識するステップと、前記読込命令と記憶命令との間のクロックサイクル数を示す指標を記憶動作に与えるステップとを含むコンパイル方法を提供することにより達成される。
【０００９】
この発明はさらに、マシンプログラムを読み出すステップと、前記コンパイラにより提供される指示に基づいて第１及び第２のタイプの記憶命令を識別するステップと、前記第１のタイプの記憶命令により識別されたデータを補助メモリを介して主メモリに選択的に送り、第２のタイプの記憶命令により識別されたデータを主メモリに直接送るステップとを含むメモリアクセス方法を提供する。さらに、この発明は、記憶命令を実行するプロセッサと、記憶命令によりアドレス指定されたデータを記憶する主メモリ及び補助メモリとを備えるメモリアクセスシステムにおいて、前記プロセッサは、第１及び第２のタイプの記憶命令を実行するよう構成されており、第１のタイプの記憶命令により識別されたデータは補助メモリを介して主メモリに送られ、第２のタイプの記憶命令により識別されたデータは主メモリに直接送られることを特徴とするシステムを提供する。
【００１０】
この方法及びシステムは、データを所定のメモリ位置に記憶するために記憶命令が実行される瞬間から、前記メモリ位置よりデータが読み込まれる瞬間までに経過する時間に応じて、異なったデータ記憶法を可能とする。
【００１１】
この技術は、記憶命令とその第１の関連する読込命令との間の、経過時間とも称される時間経過に関する情報を利用して、記憶命令を優先する機構を提案する。
【００１２】
第１及び第２のタイプの記憶命令は、２つの明確なタイプのオペコードを有することができる。代替的に、両タイプの命令は、同一のオペコードを有することができるが、命令を第１のタイプの記憶命令として実行するか、第２のタイプの記憶命令として実行するかを決めるオペランドを有する。オペランドはバイナリであってよいが、代替的に２より大きい範囲の数としてもよく、例えば、オペランドは記憶命令と第１関連読込命令との間の命令数を表すこともでき、また、オペランドは前記記憶命令と読込命令との間のクロックサイクル数を表すこともできる。いずれの場合も、記憶命令は、オペランドが所定の閾値より小さい数を識別した場合には、第２のタイプの命令として実行される。
【００１３】
この方法及びシステムは、期待される経過時間に従って記憶動作の識別を可能とし、したがって、記憶命令のオペコード又はオペランドが、記憶すべきデータを所定の時間内に必要とすることを示す場合にのみ、データを主メモリに直接送る。効果的には、この方法及びシステムによれば、記憶命令は、直接主メモリにアクセスする前に識別され、与えられる。さらに、この方法及びシステムは、プロセッサがデータを要求する前に、データが補助メモリから主メモリに到達することも確実とする。プロセッサが要求するデータを主メモリ内で入手可能であるというこの確実性は、読込命令を実行する際に補助メモリを検索する必要をなくし、読込命令の実行の高速化につながる。読込命令に際して、所望のデータを主メモリから直接的に取り出すことができる。
【００１４】
この発明は、それぞれが２次補助メモリを有し、前記主メモリに接続された１つ以上のさらなるプロセッサと、プロセッサ間での主メモリのアクセスを調停するためのアービトレータを備えるマルチプロセッサシステムに用いると特に好適である。
【発明を実施するための最良の形態】
【００１５】
この発明の上記及び他の態様は、添付の図面に示し、以下で説明する実施形態を参照すると、明白かつ明瞭となるであろう。
【００１６】
この発明の方法及びシステムの実施形態で述べられる順序は必須ではなく、例示的なものに過ぎない。この発明の範囲は、説明される実施形態に限定されない。当業者であれば、この発明の意図する概念から離れることなく、スレッディングモデル、マルチプロセッサシステム又はマルチプロセスを用いて、ステップの順序を変更したり、複数のステップを同時に行ったりすることができる。かかる実施形態は、この発明の範囲に入り、保護の対象である。
【００１７】
上記の実施形態は、この発明を限定するものではなく例示であり、当業者であれば、添付の特許請求の範囲から離れることなく、多数の代替実施形態を設計することが可能であろう。請求の範囲において、括弧内の参照符号は請求の範囲を限定すると解釈すべきではない。「含む」、「備える」との語は、請求の範囲に記載された要素又はステップ以外の要素又はステップの存在を除外するものではない。単数で表された要素は、かかる要素が複数存在することを除外するものではない。この発明は、複数の分離した要素を含むハードウエアを用いて、及び、適当にプログラムされたコンピュータを用いて実施することができる。複数の手段を列挙するシステムの請求項において、これら複数の手段は、コンピュータで可読なソフトウエア又はハードウエアの同一アイテムにより実現することができる。いくつかの手段が相互に異なる従属形式請求項に記載されているという事実のみをもって、これらの手段の組み合わせを有利に用いることができないということを示すものではない。
【００１８】
ここで図１を参照する。図１は、プロセッサアーキテクチャ１００を示しており、プロセッサアーキテクチャ１００は、主メモリ１０１及び補助メモリ１０３に接続されたプロセッサ１０２を備える。コンパイラ１０４は、ソースコードをマシンコードにコンパイル（翻訳）する。コンパイラプログラム１０４は、プロセッサ１０２により、又は外部プロセッサにより実行することができる。例示のため、図１は、プロセッサ１０２内のコンパイラを示しており、コンパイラプログラムがこのプロセッサにより実行されることを示している。この場合、プロセッサ１０２は、ソースコードを受け取り、翻訳のためにこれをコンパイラ１０４でコンパイルする。しかし、コンパイラ１０４が他のプロセッサで行われる場合には、プロセッサはコンパイルされたマシンコードを受け取る。ソースコードのコンパイルの間、コンパイラ１０４は、記憶命令を識別し、この命令によりアクセスされるメモリ位置を決定する。さらに、コンパイラ１０４は、その後に記憶命令が続く同一のメモリ位置にアクセスする読込命令を決定し、記憶命令と読込命令との間のサイクル数を計算する。次いで、コンパイラ１０４は、記憶命令によりアクセスされるメモリ位置が再び読込命令によりアクセスされるまでに経過するクロック数を示す指標を記憶命令に与える。この指標は、正確な指標、例えば明確なクロック数又は明確な命令数とすることができる。あるいは、これを相対的な指標、例えば２０クロックサイクル又は２０命令より小さいとか大きいとかにすることもできる。コンパイルが完了すると、プロセッサ１０２はコードの各命令を実行する。記憶命令を実行する一方で、プロセッサ１０２は記憶命令に与えられた指標をチェックする。記憶命令の指標が、経過時間が比較的大きい、すなわち前記の記憶命令が比較的低い優先度で処理され得るということを示している場合、プロセッサ１０２は、その記憶命令に関連するデータ及びアドレスを補助メモリ１０３に送る。さらに、プロセッサは、アドレス及びデータを、データを主メモリ１０１に送る前に補助メモリ１０３に記憶することのできる最大クロック数を表す指数とともに、補助メモリに記憶することができ、これによって、補助メモリ１０３におけるデータの保持期間を効果的に定義することができる。あるいは、補助メモリ内の全てのデータが固定された保持期間を有していてもよい。後者の場合、保持期間を表す指数は不必要である。前記の指数は、前記の指標から計算することができ、または、指標自体と同一であり、バイナリ指標の場合には、補助メモリ１０３内に存在する任意のデータは所定の保持期間を有することができ、指数を補助メモリ１０３に送る必要はない。次いで、補助メモリ１０３は、主メモリ１０１がアクセス可能であるが、補助メモリ１０３のデータの最大保持期間より前の任意の時点において、データを主メモリ１０１に送る。プロセッサ１０２を、第１又は第２のタイプの記憶命令を定義する基準を含むようにプログラムすることもできる。
【００１９】
換言すれば、この発明は次のように理解することができる。この発明によれば、記憶命令は、記憶命令が実行されるレイテンシ（待ち時間）を特定する指標を、すなわちオペコード又はオペランドの形式で有するプロセッサ１０２の命令セット内に導入される。コンパイラにより割り当てられる指標は、メモリ位置が記憶命令によりアクセスされる瞬間とメモリ位置が読込命令により最初にアクセスされる瞬間との間の時間経過により決まる。
【００２０】
例えば、ソースコードには、レイテンシの短い（例えば２クロックサイクルの）記憶命令が存在し、また、レイテンシの長い（例えば３０クロックサイクルの）記憶命令も存在する。コンパイラ１０４は、ソースコードをマシンコードにコンパイルする一方で、記憶命令のレイテンシを決め、記憶命令の種類を表す指標を各記憶命令に与える。コンパイラ１０４は、入力ソースコードに由来する読込動作と記憶動作との間の依存性に基づいてこの決定を行う。この例では、レイテンシが２クロックサイクルの記憶命令を短レイテンシ命令として識別し、レイテンシが３０クロックサイクルの記憶命令を長レイテンシ記憶命令として識別してもよい。コンパイラがスケジュールを生成した後に、依存性から、同一のメモリアドレスが３０クロックサイクル以内にアクセスされないと結論される場合には、レイテンシの短い動作をレイテンシの長い動作に置換することができる。プロセッサ１０２は、命令を実行する一方で、長レイテンシ記憶命令に対し、アドレス及びデータを補助メモリ１０３に書き込む。記憶命令に割り当てられた指標が、許容されるレイテンシが「短い」か「長い」かを特定するだけでない場合には、さらにデータが主メモリに送られるまでのクロックサイクル数を表す数値を記憶することができる。
【００２１】
さらに、この発明を実施することのできるマイクロプロセッサアーキテクチャ２００を示す図２を参照する。このようなアーキテクチャは、バス２０６等を介してマルチプルプロセッサ２０２ａ、２０２ｂにより共有される主メモリ２０１ａ、２０１ｂを有する。各プロセッサ２０２ａ、２０２ｂ等は、補助メモリ２０３ａ、２０３ｂ等を有する。主メモリ２０１ａ、２０１ｂのアクセスを調停するために、アービトレータ２０４ａ、２０４ｂを設ける。各プロセッサ２０２ａ、２０２ｂ等が、タスクの実行時間を拘束するように、所定の時間内に共有メモリ２０１にアクセスできることをアービトレータ２０４は保証する。スイッチ２０５ａ、２０５ｂを設け、データバスのデータ及び制御ルーティングを可能にする。タスクの実行時間は、例えば、アプリケーションの最少スループット又は最大レイテンシを保証しなければならないリアルタイムシステムの典型的な要求により抑制することができる。所定のメモリアクセス時間の可能性のある例の一つは、時分割多重アクセス（ＴＤＭＡ）調停ポリシー又は特定用途に最もよく適合した任意の他の時分割ポリシーを適応することにより得ることができる。
【００２２】
ここで、コンパイル３００に続くステップを示す図３を参照する。この図によれば、第１ステップ３０１及び第２ステップ３０２において、記憶命令及びこの記憶命令によりアクセスされるメモリ位置が識別される。次いで、同一のメモリ位置にアクセスする第１読込命令がステップ３０３において識別される。次のステップ３０４で、前記読込命令と記憶命令との間のクロックサイクル数を表す指標を前記記憶命令に与える。その後、ステップ３０５の制御は、全ての記憶命令が識別され、前記の指標を与えられるまで「Ａ」に移行し、ステップ３０１〜３０４を繰り返す。
【００２３】
命令のフロー（流れ）が単一である（いかなる条件もない）場合には、コンパイラは、同一のメモリ位置にアクセスする記憶及び読込命令を識別し、前記の命令間の時間的な分離を求めることにより、指標を記憶命令に与えることができる。
【００２４】
しかし、命令のフローが１以上の枝に分岐する場合（条件付き命令フロー）には、各枝は、異なる時間間隔を有することができる。この場合には、フローが分かれる前に記憶命令が発行され、読込命令は命令フローの分岐した枝内で発行され、全ての読込命令が記憶命令と同一のメモリ位置にアクセスし、コンパイラは、前記記憶命令と最先の前記読込命令との間の最短の時間差を求め、適宜に指標を前記記憶命令に割り付けることができる。
【００２５】
上記して説明した方法及びシステムは例示的なものに過ぎず、当業者であれば、例えば主メモリに加えてキャッシュを有する階層メモリの一部を主メモリが形成する、システムにも本発明を適用可能であることは理解されよう。この場合には、主メモリに記憶されるべきデータを、種々の公知のキャッシュポリシー、例えばライトスルー、ライトバック、ライトアロケート、及びノーライトアロケートに応じて取り扱うことができる。この発明の実施形態において、キャッシュメモリは補助メモリとして機能することができる。また、当業者であれば、ステップの順番を単に変えるだけ、又はブロックを配置／再配置するだけでは、上記したと同様の結果となり、このような変更又は再配置はこの発明の範囲内にあることを理解されよう。
【図面の簡単な説明】
【００２６】
【図１】この発明を実施するのに適当なプロセッサアーキテクチャを示す。
【図２】この発明を実施するのに適当なマルチプロセッサアーキテクチャを示す。
【図３】コンパイルの手順を示す。
【図１】
2009505267.tif 000003
【図２】
2009505267.tif 000004
【図３】
2009505267.tif 000005
【国際調査報告】
2009505267.tif 000006
2009505267.tif 000007
2009505267.tif 000008