(57)【要約】  本発明は、コンピュータシステムのランダムアクセスメモリを管理する方法を提供する。コンピュータシステムは、プロセッサと、第１の静的ランダムアクセスメモリと、第２の動的ランダムアクセスメモリと、を備える。本方法は、プロセッサにより実行される少なくとも１つの命令を受け取る工程と、プロセッサによる命令の実行についての優先レベルを判定する工程と、前記命令が優先性の高い命令であることを該命令の優先レベルが示す場合、前記プロセッサによる該命令の実行のために、該命令を前記第１のメモリに読み込む工程と、前記命令が優先性の高い命令であることを該命令の優先レベルが示さない場合、前記プロセッサによる該命令の実行のために、該命令を前記第２のメモリに読み込む工程と、を含む。
2013510355.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムのランダムアクセスメモリ（ＲＡＭ）を管理する方法であって、
前記コンピュータシステムはプロセッサ（１０）と、第１の静的ランダムアクセスメモリ（１２）と、第２の動的ランダムアクセスメモリ（１３）と、を備え、
前記方法は、
前記プロセッサにより実行される少なくとも１つの命令を受け取る工程（Ｓ５００，Ｓ７０）と、
前記プロセッサによる前記命令の前記実行についての優先レベルを判定する工程（Ｔ５０２，Ｔ５０４，Ｔ５１０，Ｓ７１）と、
前記命令が優先度の高い命令であることを該命令の優先レベルが示す場合、前記プロセッサによる該命令の実行のために、該命令を前記第１のメモリに読み込み（Ｓ５０３，Ｓ５０９，Ｓ５１５，Ｓ７２）、前記命令が優先度の高い命令であることを該命令の優先レベルが示さない場合、前記プロセッサによる該命令の実行のために、該命令を前記第２のメモリに読み込む（Ｓ５０８，Ｓ５１１，Ｓ５１３，Ｓ７４）工程と、
を含むことを特徴とする方法。
【請求項２】
前記プロセッサにより実行される命令セット（２２０，…，２２７）を受け取る工程と、
前記命令セット内で、前記命令のそれぞれについて判定された前記プロセッサによる実行のための優先レベルの関数として、第１の命令サブセットと第２の命令サブセットとを定義する工程と、
前記プロセッサによる実行のために、前記第１の命令サブセットを前記第１のメモリに読み込む工程と、
前記プロセッサによる実行のために、前記第２の命令サブセットを前記第２のメモリに読み込む工程と、をさらに有し、
前記第１のサブセットは優先命令を含み、該優先命令の実行優先レベルは、該優先命令が前記第２のサブセット内の命令に対して優先性を有することを示すことを特徴とする、請求項１に記載の方法。
【請求項３】
前記命令は少なくとも１つの優先度パラメータ（ＰＡＲＡＭ）と関連付けられ、前記命令の前記優先レベルの前記判定は、該命令のそれぞれの優先度パラメータに基づくことを特徴とする、請求項１又は２に記載の方法。
【請求項４】
優先度パラメータが、プロセッサの負荷の節約（％ＳＡＶ）を表すことを特徴とする、請求項３に記載の方法。
【請求項５】
優先度パラメータが、前記命令によって占有されるメモリ量（ＳＩＺ）を表すことを特徴とする、請求項３又は４に記載の方法。
【請求項６】
前記第１のメモリ又は前記第２のメモリへの前記命令の格納が、該命令のサイズと該命令が与えるプロセッサの負荷の軽減との間で妥協することによってなされることを特徴とする、請求項４又は５に記載の方法。
【請求項７】
前記命令と関連付けられた前記少なくとも１つのパラメータが、固定値を有することを特徴とする、請求項３乃至６の何れか１項に記載の方法。
【請求項８】
前記少なくとも１つのパラメータが、各命令と関連付けられたプロセッサの負荷の節約の測定値に基づいて優先度パラメータを割り当てる学習アルゴリズムに従って、動的に前記命令に関連付けられることを特徴とする、請求項３乃至６の何れか１項に記載の方法。
【請求項９】
前記第１のメモリ又は前記第２のメモリへの前記命令の格納が、前記第１のメモリが満たされる方法を最適化する、学習及び最適化アルゴリズムに従ってなされることを特徴とする、請求項１乃至８の何れか１項に記載の方法。
【請求項１０】
前記第１のメモリがＳＣＲＡＭメモリであり、前記第２のメモリがＳＤＲＡＭメモリであることを特徴とする、請求項１乃至９の何れか１項に記載の方法。
【請求項１１】
前記命令が、該命令の優先レベルの変化の関数として、前記第１のメモリと前記第２のメモリとの間で読み込まれ／消去されることを特徴とする、請求項１乃至１０の何れか１項に記載の方法。
【請求項１２】
前記コンピュータシステムによる機能の実行と関連付けられた命令セットが定義されていることを特徴とする、請求項２乃至１１の何れか１項に記載の方法。
【請求項１３】
コンピュータシステムのリソース管理部によって実行された際に、請求項１乃至１２の何れか１項に記載の方法を実行するための命令を含む、コンピュータプログラム。
【請求項１４】
プロセッサ（１０）と、
第１の静的ランダムアクセスメモリ（１２）と、
第２の動的ランダムアクセスメモリ（１３）と、
請求項１乃至１２の何れか１項に記載の全ての処理工程を実行するように構成された管理部（３０）と、
を備えることを特徴とするコンピュータシステム。
【請求項１５】
請求項１４に記載のシステムを備える集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本願はコンピュータシステムに関する。より詳細には、本願は、システムによるコンピュータプログラムの実行におけるよりよい性能を保証するために、コンピュータシステムのプロセッサと関連付けられたランダムアクセスメモリ（ＲＡＭ）の管理を改善することを目的とする。
【背景技術】
【０００２】
コンピュータシステムの性能は、特に、コンピュータシステムのプロセッサの性能（特にプロセッサの演算速度）、及びコンピュータシステムが実行している命令の実行に関連する演算を実行するためにコンピュータシステムが用いるランダムアクセスメモリの性能（特にメモリ読み出しアクセス時間及び書き込みアクセス時間）に依存する。
【０００３】
例えば通信システムにおいては、限られたコスト及び可能な限り短い通信システムの開発時間を確保しながらも、非常に高い演算性能が期待される。
【０００４】
期待される性能のタイプは、例えば、増加する大量の処理されるデータを含む通信ストリームの管理のような、リアルタイム機能を実装する可能性を含む。しかしながら、これらの機能の実装は、通信システムによる他の機能の実装に対して不利な影響を与えてはならない。これらのリアルタイム機能は、最小限の時間内での大量のデータの処理を伴うため、かなりの演算リソースを必要とする。
【０００５】
１つの解決策は、プロセッサをそれぞれのタイプの機能に専念させることからなり、１つのプロセッサはリアルタイムアプリケーション用であり、１つのプロセッサは他のアプリケーション用である。この解決策は、全てのアプリケーションを動作させるための大量の演算能力へのアクセスを提供するという利点を有する。
【０００６】
しかしながらこの解決策は、通信システムのコストを顕著に増加させる。
【０００７】
さらに、１つしかプロセッサを有さない既存のハードウェアシステムへと新しいリアルタイム機能を組み込むことを伴う場合、これはシステム構成を完全に変更することを伴い、これにはコストがかかりかつ長い開発期間を伴うため、この解決策は現実的に可能なものではない。
【０００８】
他の解決策は、キャッシュの一部をリアルタイムアプリケーション専用とし、他の部分を他のアプリケーション専用とするために、プライマリメモリキャッシュ（当業者には「Ｌ１キャッシュ」と呼ばれる）の容量を増加させることからなる。
【０００９】
こうして、大量のデータを用意し、データを素早くプロセッサに対して利用可能なものとすることが可能となる。実際、このキャッシュにおいてデータをアクセス可能とすることにより、他のメモリから記憶を取得するために必要な命令数が削減される。
【００１０】
しかしながらこの解決策は、システムが埋め込まれるチップのシリコン上の構成部品の大きさを増加させる。結果として、この解決策はシステムについてのより低いクロックレートを意味する。
【００１１】
さらに、Ｌ１キャッシュのサイズがどれだけ増加されうるかには限界が存在し、Ｌ１キャッシュから特定のデータをフェッチする（取り出す）ための命令数が多くなりすぎるために、この限界を超えると演算速度における利益は微々たるものとなる。
【発明の概要】
【００１２】
したがって、特に既存の基盤（プラットフォーム）に新しい機能を加える際における、限られたコスト及び妥当な開発期間を保証する一方で、コンピュータシステムの性能を改善する必要が存在する。
【００１３】
この目的のために、本発明の第１の態様は、コンピュータシステムのランダムアクセスメモリを管理する方法であって、
前記コンピュータシステムは、プロセッサと、第１の静的ランダムアクセスメモリと、第２の動的ランダムアクセスメモリと、を備え、
前記方法は、
前記プロセッサにより実行される少なくとも１つの命令を受け取る工程と、
前記プロセッサによる前記命令の前記実行についての優先レベルを判定する工程と、
前記命令が優先性の高い命令であることを該命令の優先レベルが示す場合、前記プロセッサによる該命令の実行のために、該命令を前記第１のメモリに読み込む工程と、
前記命令が優先性の高い命令であることを該命令の優先レベルが示さない場合、前記プロセッサによる該命令の実行のために、該命令を前記第２のメモリに読み込む工程と、
を含むことを特徴とする方法を提案する。
【００１４】
問題のメモリは、キャッシュとは異なるものでありうる。
【００１５】
動的（ダイナミック）ランダムアクセスメモリは、データのリフレッシュを必要とするランダムアクセスメモリとして定義されうる。静的（スタティック）ランダムアクセスメモリは、リフレッシュを全く必要としないランダムアクセスメモリとして定義されうる。
【００１６】
静的ランダムアクセスメモリは、一般に非常に高速だが、大きなシリコン上での面積（シリコンフットプリント）を有する。動的ランダムアクセスメモリは、一般に安価であり、より容量が小さい。
【００１７】
例えば、第１のランダムアクセスメモリはＳＣＲＡＭ（「静的カラムランダムアクセスメモリ」）であり、第２のランダムアクセスメモリはＳＤＲＡＭ（「同期（シンクロナス）動的ランダムアクセスメモリ」）である。
【００１８】
ＳＣＲＡＭメモリは、命令の高速な読み込み及び消去を可能とする。さらに、ＳＣＲＡＭメモリは様々な形式の回路に容易に含められうる。
【００１９】
例えば、第１の静的ランダムアクセスメモリはプロセッサ内部のメモリであり、第２の動的ランダムアクセスメモリはプロセッサ外部のメモリである。メモリをプロセッサに近づけることは、より高速なデータ転送を可能とする。
【００２０】
本発明によれば、命令は、命令に割り当てられた優先性に従って、動的に、第１のランダムアクセスメモリ及び第２のランダムアクセスメモリへと読み込まれ、かつ第１のランダムアクセスメモリ及び第２のランダムアクセスメモリから消去される。
【００２１】
命令に割り当てられた優先性は、コンピュータシステムによる特定の機能の実行の状況に依存しうる。
【００２２】
さらなる例として、命令が、特定の機能によってよく用いられるコンピュータコードからの命令であるという事実からも、この命令に与えられる優先性が生じてくる。
【００２３】
本発明のランダムアクセスメモリ管理は、ハードウェア開発に余計のコストを必要とせずに、プロセッサの演算能力を向上させ、かつコンピュータプログラムの実行を加速することを可能とする。
【００２４】
いくつかの実施形態において、本方法はさらに、前記プロセッサにより実行される命令セットを受け取る工程と、
前記命令セット内で、前記命令のそれぞれについて判定された前記プロセッサによる実行のための優先レベルの関数として、第１の命令サブセットと第２の命令サブセットとを定義する工程と、
前記プロセッサによる実行のために、前記第１の命令サブセットを前記第１のメモリに読み込む工程と、
前記プロセッサによる実行のために、前記第２の命令サブセットを前記第２のメモリに読み込む工程と、をさらに有し、
前記第１のサブセットは優先命令を含み、該優先命令の実行優先レベルは、該優先命令が前記第２のサブセット内の命令に対して優先性を有することを示す。
【００２５】
いくつかの実施形態において、命令は、その優先レベルが変化する際に、第１のランダムアクセスメモリと第２のランダムアクセスメモリとの間で読み込まれ／消去される。
【００２６】
従って、プロセッサ使用の状況に依存して、命令は高い優先レベルから低い優先レベルへと変化することができ、逆も成り立つ。
【００２７】
例えば、プロセッサによって実行される新しく呼び出された命令よりも、低い優先性を命令が有することが見いだされうる。
【００２８】
コンピュータシステムによる機能の実行と関連付けられた命令セットが特定されるようにも構成されうる。
【００２９】
例えば、「ユースケース（使用事例）」に依存して、よく用いられるある命令が好み（プリファレンス）を与えられてもよい。
【００３０】
例えば、遠距離電気通信アプリケーションが開始される場合、このアプリケーションによって頻繁に実行される命令に優先性を与え、この命令を静的ランダムアクセスメモリ（例えばＳＣＲＡＭメモリ）において利用可能とすることによって、このアプリケーションの実行は加速されうる。
【００３１】
いくつかの実施形態において、前記命令は少なくとも１つの優先度パラメータと関連付けられ、前記命令の前記優先レベルの前記判定は、該命令のそれぞれの優先度パラメータに基づく。
【００３２】
このことは、例えば、パラメータを含むテーブルから読み出すことによる、命令の優先レベルの高速な判定を可能とする。
【００３３】
例えば、優先度パラメータは、プロセッサの負荷の節約を表す。
【００３４】
例えば、この負荷の節約を判定するために、命令が第１のメモリ及び第２のメモリに格納された時の、プロセッサによって実行された命令毎のクロックサイクル数が比較される。
【００３５】
例えば、優先度パラメータは、前記命令によって占有されるメモリ量を表す。
【００３６】
いくつかの実施形態において、前記第１のメモリへの前記命令の格納が、該命令のサイズと該命令が与えるプロセッサの負荷の軽減との間で妥協することによってなされる。
【００３７】
静的ランダムアクセスメモリのサイズは限られているため、その最適な使用は、利用可能なメモリ量と、メモリに命令を格納することによって与えられるプロセッサの負荷の節約との比較に依存する。
【００３８】
例えば、前記命令と関連付けられた前記少なくとも１つのパラメータは、固定値を有する。
【００３９】
それぞれの命令ごとに関連付けられたパラメータを格納するテーブルが与えられうる。
【００４０】
さらなる例として、前記パラメータが、各命令と関連付けられたプロセッサの負荷の節約の測定値に基づいて優先度パラメータを割り当てる学習アルゴリズムに従って、動的に前記命令に関連付けられる。
【００４１】
パラメータを動的に確立するために、命令を実行するために必要な演算回数の動的な測定値が与えられうる。他の変形例において、命令の実行のそれぞれの瞬間における、プロセッサ負荷レベルへの動的アクセスが存在しうる。
【００４２】
いくつかの実施形態において、前記第１のメモリへの前記命令の格納は、前記第１のメモリが満たされる方法を最適化する、学習及び最適化アルゴリズムに従ってなされる。
【００４３】
例えば、このアルゴリズムは適応アルゴリズムであり、静的ランダムアクセスメモリに一緒に格納された際に静的ランダムアクセスメモリの良好な最適化を与えるような、命令の関連を特定しうる。
【００４４】
本発明の他の態様はまた、
コンピュータシステムのリソース管理部によって実行された際に、本発明に従う記載の方法を実行するための命令を含む、コンピュータプログラムと、
本発明に従うコンピュータシステムと、
本発明に従うシステムを備える集積回路と、を可能とする。
【００４５】
コンピュータプログラム、システム、及び集積回路は、本発明の第１の態様に従う処理によって与えられるのと同じ利点を、少なくとももたらす。
【図面の簡単な説明】
【００４６】
続く詳細な説明を読むことにより、本発明の他の特徴及び利点が明らかとなるだろう。この詳細な説明は、純粋に例示的なものであり、添付の図面を考慮して読まれるだろう。図面において、
【図１】本発明の一実施形態に従うコンピュータシステムの処理部の構成を概略的に表す。
【図２ａ】、
【図２ｂ】本発明の一実施形態に係るシステムのアーキテクチャ（構造）を表す。
【図３】本発明の一実施形態に従うリソース管理を表す。
【図４】一実施形態に従うランダムアクセスメモリの管理を表す。
【図５】本発明の一実施形態に従う方法において実行される工程のフローチャートである。
【図６】本発明の一実施形態に従う優先度パラメータを設定する方法において実行される工程のフローチャートである。
【図７】本発明の他の実施形態に従う優先度パラメータを設定する方法において実行される工程のフローチャートである。
【発明を実施するための形態】
【００４７】
コンピュータシステムの処理部の構成が、図１を参照して非常に概略的に説明される。
【００４８】
この構成には、より一般的な、コンピュータプログラムの実行という文脈において、いくぶん基礎的な命令を実行する役割を持つプロセッサ１０が存在する。
【００４９】
プロセッサ１０は、この目的のために利用可能な様々な形式のメモリを有する。
【００５０】
プロセッサは、プロセッサに利用可能ないくつかのキャッシュメモリを有する。この形式のメモリは、命令の実行のために役立つデータを一時的に格納するために用いられる。この形式のメモリは、プロセッサによって実行される演算のオペランド、又は実行される演算の識別子のような、処理されるデータを格納することができる。このメモリはアクセス時間の点で非常に高い性能を有し、用いられるデータを、プロセッサの近くに持ってくるようにコピーするために用いられる。
【００５１】
このようなキャッシュメモリの中に、「Ｌ１」キャッシュ１１がある。これはプロセッサに最も近いキャッシュであり、またアクセス時間の点で最も高い性能を有する。この形式のメモリは一般に非常に高価であり、それゆえそのサイズは一般に限られている。このようなキャッシュメモリの中に、静的ランダムアクセスメモリ１２がある。このランダムアクセスメモリもまた、Ｌ１キャッシュの性能には劣るものの、非常に良好な性能を有する。この形式のメモリのコストは、Ｌ１キャッシュよりもより多くのこの形式のメモリを備えることを可能とする。
【００５２】
プロセッサ１０はまた、利用可能な動的ランダムアクセスメモリ１３を有する。この形式のランダムアクセスメモリは、一般に、定期的にデータをリフレッシュすることを必要とするが、シリコン上には非常に限られた領域しか取らず、その構造が非常に単純であるために安価である。
【００５３】
最後に、処理ユニットは、永続的な方法でデータを格納するリードオンリーメモリ（読み出し専用メモリ）１４を有する。
【００５４】
例えばリードオンリーメモリ１４に格納されたコンピュータプログラムを実行するために、処理ユニットは、プログラムの実行を速くするために、コンピュータコードのある部分をランダムアクセスメモリ又はキャッシュへとコピーする。
【００５５】
プログラムの実行をさらに速くするために、プロセッサが利用可能なランダムアクセスメモリの使用、特に静的ランダムアクセスメモリ１２及び動的ランダムアクセスメモリ１３の管理を最適化することが提案される。
【００５６】
提案される最適化を説明するために、図２ａ及び２ｂを参照して、本発明を実装する状況が説明される。
【００５７】
図２ａにおいて、動的ランダムアクセスメモリ２０及び静的ランダムアクセスメモリ２１が表されている。
【００５８】
情報システムは、コンピュータプログラムを実行しなければならないことが仮定される。この目的のために、情報システムは、実行されるであろう決まった数の命令（又はコードの一部）について知っている。これらの命令は、仮想メモリ２２において特定される。この仮想メモリは、命令が格納されるリードオンリーメモリ内のアドレスを含むテーブルを表す。
【００５９】
メモリ管理部（ＭＭＵ）２３は、適切な時に、仮想アドレスを、ランダムアクセスメモリ内の物理アドレスへと変換する役割を有する。このメモリ管理部は、システム内の様々な種類のメモリ（ＲＡＭ又はＲＯＭ）についてこのような変換を扱う。
【００６０】
図２ａに表される例において、ここで実行される命令の中には、ＵＳＢポート上通信管理命令２２０、動画符号化命令２２１、動画復号化命令２２２、音声符号化命令２２３、音声復号化命令２２４、ＷｉＦｉ通信管理命令２２５、データストリーム管理命令２２６、及び遠距離電気通信実行命令２２７がある。
【００６１】
図２ａにより表される例においては、処理部が動画ストリームの受け取りを実行することが仮定される。
【００６２】
この目的のために、本発明に従って、この受け取りを実行するのに重要な命令が、仮想メモリにおいて特定される。この重要なアプリケーションは、例えば、それらの実行が速くされたならば、動画ストリーム受け取り機能の実行を速くすることができる命令である。
【００６３】
そして、動画復号化命令２２２、音声復号化命令２２４、データストリーム管理命令２２６、及び通信実行命令２２７が特定される。
【００６４】
次に、命令２２２、２２４、２２６、及び２２７が静的ランダムアクセスメモリ２１に格納され、他の命令が動的ランダムアクセスメモリ２０に格納される。
【００６５】
この例において優先性を有すると判定されている動画ストリームの受け取りは、こうして、静的ランダムアクセスメモリの性能から利益を得ながら実行され、一方で処理部によって実行される他の機能は動的ランダムアクセスメモリのみを用いる。
【００６６】
このことは、動画ストリームの受け取りの実行を速くする。
【００６７】
図２ｂに表される他の例においては、図２ａを参照して説明されたものと同様の要素が見出される。
【００６８】
この場合、コンピュータシステムがＵＳＢポート上でモデム機能を実行することが仮定される。
【００６９】
この機能を実行するために重要な命令が特定される。図２ｂに表される例においては、重要な機能は命令２２０及び２２７であると仮定される。
【００７０】
そしてこの命令はメモリ２１へと読み込まれる一方で、命令２２２、２２４、及び２２６はメモリ２１からは消去（アンロード）されてメモリ２０へと読み込まれる。
【００７１】
このことは、以前には優先性を有していた動画ストリーム受け取り機能に対して優先性を有するとみなされる、ＵＳＢポート上でのモデム機能の実行を速くする。
【００７２】
ランダムアクセスメモリの管理は、リソース管理部（リソース・マネージャ）によって実行されうる。
【００７３】
このようなリソース管理部が図３に表される。
【００７４】
リソース管理部３０は、インタフェース３１を介して、様々なリソース３２及び３３へと接続される。これらのリソースは、例えば、遠距離電気通信、マルチメディア、接続、又は他の機能のような機能のコンピュータコードを格納するファイルである。例えば、図２ａ及び２ｂの例についての命令は、これらのリソースからやってくる。
【００７５】
リソース管理部は、実行されるコンピュータプログラムに従って、リソースについての命令を静的メモリ３４及び動的メモリ３５へと格納する。
【００７６】
この目的のために、リソース管理部は直接メモリアクセス部（ダイレクト・メモリ・アクセス・ユニット）３６及びメモリ管理部（メモリ・マネジメント・ユニット）３７へのアクセスを有する。
【００７７】
既に述べたように、メモリ管理部は実行される命令の仮想メモリアドレスを知っており、これらの仮想アドレスをメモリ３４及び３５の物理アドレスへと変換する役割を有する。直接メモリアクセス部は、動的ランダムアクセスメモリ及び静的ランダムアクセスメモリへのデータのコピーを扱い、同様にこれら２つのメモリ間でのデータ交換を扱う。
【００７８】
リソース管理部３０は、それぞれのドライバ３８及び３９を介して、直接メモリアクセス部３６及びメモリ管理部３７を制御する。
【００７９】
一実施形態に従うランダムアクセスメモリ管理が、図４を参照して説明される。
【００８０】
テーブル４０は、４つの命令グループＩ１、Ｉ２、Ｉ３、及びＩ４（ＩＮＳＴＲ列）と、それらにそれぞれ関連付けられた優先度パラメータのセット（ＰＡＲＡＭ列）との関連付けを表す。
【００８１】
例えばキロビット単位のサイズ（ＳＩＺ列下）、及び例えばパーセント単位のプロセッサ負荷の節約（％Ｓａｖ列下）が、それぞれの命令と関連付けられている。
【００８２】
プロセッサ負荷節約パラメータを得るためには、例えば、一方として、命令が動的ＲＡＭから実行された時と命令が静的ＲＡＭから実行された時との間の命令についての実行時間の差、他方として、命令が動的ＲＡＭが実行された時の命令についての実行時間、この比率を算出することができる。
【００８３】
他の例としては、一方として、命令が動的ＲＡＭから実行される時と命令が静的ＲＡＭが実行される時との間のプロセッサが命令を実行するための演算回数の差、他方として、動的ＲＡＭからプロセッサが命令を実行するための演算回数、この比率を算出することができる。
【００８４】
そして、命令グループＩ１は１９ｋＢのサイズを有しかつプロセッサ負荷の５％の節約を可能とし、命令グループＩ２は５ｋＢのサイズを有しかつプロセッサ負荷の３％の節約を可能とし、命令グループＩ３は４ｋＢのサイズを有しかつプロセッサ負荷の２％の節約を可能とし、命令グループＩ４は５ｋＢのサイズを有しかつプロセッサ負荷の２％の節約を可能とする。
【００８５】
利用可能な２０ｋＢの静的ＲＡＭが存在するものと仮定する。
【００８６】
テーブル４１は、一実施形態に従う、静的ＲＡＭの最適化のための演算シーケンスを表す。
【００８７】
時刻ｔ１において、命令グループＩ１の実行が要求される（ＲＱＳＴ列）。静的ＲＡＭ及び動的ＲＡＭは空であることが仮定される（列ＳＣＲＡＭ  ＳＩＺ及びＳＤＲＡＭ  ＳＩＺ）。最適化はまた始まっておらず、それゆえプロセッサ負荷の節約はまだゼロである（％ＳＡＶ列）。代わりに、全ての命令を最初に動的ＲＡＭに格納することもでき、この場合静的ＲＡＭのみが空である。
【００８８】
静的ＲＡＭが空であり、命令グループＩ１が静的ＲＡＭに格納されうるサイズであって従ってプロセッサ負荷を減らしうるために、この命令は静的ＲＡＭに読み込まれる（ＯＰＥＲ列）。
【００８９】
時刻ｔ２において、命令グループＩ２の実行が要求される。
【００９０】
この命令グループは、５ｋＢのサイズを有する。しかしながら、静的ＲＡＭにおいては１ｋＢのみが開放されている（フリーである）。それゆえ、命令グループＩ１及びＩ２は、どれが最大のプロセッサ負荷の節約を与えるかを確かめるために調べられる。この例において、これはグループＩ１である。
【００９１】
それゆえ命令グループＩ１は静的ＲＡＭに保持され、命令グループＩ２は動的ＲＡＭに格納される。今度は命令グループＩ２は動的ＲＡＭへとコピーされ、ＭＭＵはこれに従って再構成される。上述のように、初期設定として命令グループが動的ＲＡＭに格納されていたならば、何も行われない。
【００９２】
時刻ｔ３において、命令Ｉ３の実行が要求される。
【００９３】
この命令グループは、４ｋＢのサイズを有する。しかしながら、静的ＲＡＭにおいては１ｋＢのみが開放されている。それゆえ、命令グループＩ１及びＩ３は、どれが最大のプロセッサ負荷の節約を与えるかを確かめるために調べられる。この例において、これはグループＩ１である。
【００９４】
命令グループＩ１の代わりに、命令グループＩ２及びＩ３を同時に静的ＲＡＭに格納することが、よりよい負荷の節約を与えるか否かがまた、調べられる。これら２つの命令を格納することはプロセッサの負荷の５％の節約を与え、これは静的ＲＡＭの命令グループＩ１を格納することにより与えられる節約と全く同じであるために、この例においてはそのような場合ではない。もし２つの命令がより少ない空間しか占有しない場合であっても、命令グループＩ１及びＩ２を移動させる演算はプロセッサ負荷を増加させるであろうから、これらを静的ＲＡＭに格納することは有利ではないだろう。
【００９５】
したがって、命令グループＩ１は静的ＲＡＭに保持され、命令グループＩ３は動的ＲＡＭに格納される。
【００９６】
時刻ｔ４において、命令グループＩ４の実行が要求される。
【００９７】
この命令グループは、５ｋＢのサイズを有する。しかしながら、静的ＲＡＭにおいては１ｋＢのみが開放されている。それゆえ、命令グループＩ１及びＩ４は、どれが最大のプロセッサ負荷の節約を与えるかを確かめるために調べられる。この例において、これはグループＩ１である。
【００９８】
命令グループＩ１の代わりに、命令グループＩ２、Ｉ３、及びＩ４の中からのいくつかの命令グループを同時に静的ＲＡＭに格納することが、よりよい負荷の節約を与えるか否かがまた、調べられる。これら３つのグループを格納することはプロセッサ負荷の７％（３＋２＋２）の節約を与え、これはグループＩ１を静的ＲＡＭに格納することによって与えられる節約、これは５％である、よりも大きいため、この例においてはそのような場合になる。さらに、３つのグループを併せたサイズは１４ｋＢであり、これは静的ＲＡＭに受け入れられうる。
【００９９】
メモリ間のデータ転送は、プロセッサの負荷の節約による利益に対して不利な影響を与えないことが仮定される。それゆえ、命令グループＩ１は静的ＲＡＭから動的ＲＡＭへと移動され、命令グループＩ２及びＩ３は動的ＲＡＭから静的ＲＡＭへと移動され、命令グループＩ４は静的ＲＡＭに格納される。
【０１００】
それゆえ時刻ｔ５において、我々は、命令グループがプロセッサの負荷の節約を最適化することを可能とするように、静的ＲＡＭに格納された命令を有する。
【０１０１】
一実施形態の方法において実行される工程が、図５を参照して提示される。
【０１０２】
本実施形態において、静的ＲＡＭの使用は、図４を参照して説明された例のように、命令サイズパラメータ及びプロセッサ負荷節約パラメータに従って最適化される。
【０１０３】
第１の工程Ｓ５００の間に、プロセッサによって実行されるように、命令が受け取られる。この命令が静的ＲＡＭに読み込まれるか又は動的ＲＡＭに読み込まれるかを判定することが試みられる。
【０１０４】
工程Ｓ５０１の間に、命令に関連付けられた、メモリにおいてこの命令が占有するサイズを表すパラメータが判定される。例えば、このパラメータは図４を参照して説明されたようなテーブルから読み出される。
【０１０５】
テストＴ５０２の間に、メモリにおいてこの命令が占有するサイズを表すパラメータが、この命令を静的ＲＡＭに直接格納することを許容するか否かが確立される。そのような場合、例えば静的ＲＡＭに十分な空間が存在する場合、この命令は工程Ｓ５０３の間に静的ＲＡＭに格納される。
【０１０６】
そうではない場合、例えば静的ＲＡＭに十分な空間が存在しない場合、工程Ｓ５０４において、この命令を静的ＲＡＭに格納することによって提供されるプロセッサの負荷の節約を表す、この命令と関連付けられたパラメータが判定される。例えば、このパラメータは図４を参照して説明されたようなテーブルから読み出される。
【０１０７】
すると、テストＴ５０５の間に、この命令が、既に静的ＲＡＭに格納されている他の命令よりもよりよい、プロセッサの負荷の節約を表すパラメータを有するか否かが判定される。
【０１０８】
そのような場合、静的ＲＡＭに既に存在する命令は工程Ｓ５０７の間に消去され、そしてこの命令は工程Ｓ５０８の間に動的ＲＡＭに格納される。さらに、工程Ｓ５００の間に受け取られた命令は、工程Ｓ５０９の間に静的ＲＡＭに格納される。
【０１０９】
もし、試験Ｔ５０５における試験が否定的であるならば、命令についてのプロセッサの負荷の節約を表すパラメータが、足し合わされた場合に、静的ＲＡＭに既に格納されている他の命令についてのプロセッサの負荷の節約を表すパラメータよりも、よりよいプロセッサの負荷の節約を表すパラメータを提供するような命令が、動的ＲＡＭに存在するか否かが判定される、試験Ｔ５１０へと、処理は進む。
【０１１０】
このような場合、工程Ｓ５１２の間にこの命令は静的ＲＡＭから消去され、そしてこの命令は工程Ｓ５１３の間に動的ＲＡＭに格納される。
【０１１１】
次に、工程Ｔ５０５の間に発見された命令が、工程Ｓ５１４の間に、動的ＲＡＭから消去される。これらの命令はすると、工程Ｓ５１５の間に、静的ＲＡＭに格納される。
【０１１２】
もし工程Ｔ５１０におけるテストが否定的であるならば、工程Ｓ５００の間に受け取られた命令は、工程Ｓ５１１の間に動的ＲＡＭに格納される。
【０１１３】
工程Ｓ５１５、Ｓ５１１、Ｓ５０３、及びＳ５０９が完了すると、実行される新しい命令を受け取るために、処理は工程Ｓ５００に戻る。
【０１１４】
プロセッサの負荷の節約を表すパラメータを判定するため、又は図４を参照して説明されたパラメータのテーブルを更新するために、学習アルゴリズムが実装されることができる。
【０１１５】
このようなアルゴリズムが、図６を参照して今から説明される。
【０１１６】
最初の工程Ｓ６０の間に、実行される命令が特定され、そして工程Ｓ６１の間に、プロセッサによる実行時間（又は上述のように、プロセッサが命令を実行するための演算数）が測定される。
【０１１７】
命令が静的ＲＡＭから実行されるか動的ＲＡＭから実行されるかに依存して（テストＴ６２）、静的ＲＡＭにおける実行時間の値（工程Ｓ６３）及び動的ＲＡＭにおける実行時間の値（工程Ｓ６４）が更新される。例えばこの実行時間は、プロセッサが命令を実行する時間の平均である。
【０１１８】
そして、工程Ｓ６５の間に、プロセッサの負荷の節約を表すパラメータが判定される。例えば、一方として、工程Ｓ６３及びＳ６４の間に得られた値の間の差分、他方として、工程Ｓ６４の間に得られた値、の比率か判定される。この比率を見出すために、値が同じ条件下で得られたこと、例えば同じ状況下で（例えば同じコンピュータプログラムを実行している間に）命令が実行されたこと、又は、得られた値が平均であるならば、これらの平均が同じ数の値を用いて算出されたこと、を前もって確かめることができる。
【０１１９】
他の実施形態に従う方法の工程が、図７を参照して今から説明される。
【０１２０】
この実施形態において、命令は、関連付けられた機能に依存して、静的ＲＡＭ又は動的ＲＡＭに格納される。
【０１２１】
したがって、この機能に高い優先性を与えることが望まれるならば、この機能に関連付けられた全ての命令は静的ＲＡＭに格納される。
【０１２２】
工程Ｓ７０の間に、コンピュータプログラムの機能又はコードが特定される。例として、この機能の実行が加速される。
【０１２３】
すると、工程Ｓ７１の間に、この機能と関連付けられた命令セットが特定される。
【０１２４】
特定された命令はすると、工程Ｓ７２の間に、静的ＲＡＭに格納される。
【０１２５】
工程Ｓ７３の間に、この機能が実行されたこと、又はこの機能がもはや加速されないことが検出される。この命令はすると、例えば動的ＲＡＭに格納されるように、静的ＲＡＭから消去される。さらなる例として、この命令は単純に他のより高い優先性の命令で置き換えられる。
【０１２６】
本発明のコンピュータプログラムは、図５、図６、及び図７のうちの少なくとも１つ、並びに本詳細な説明から導き出される、一般的なアルゴリズムに従って実現されうる。
【０１２７】
本発明の集積回路は、本発明の処理を実装するように構成されるために、当業者に既知の技術によって実現されうる。例えば本発明のシステムは、システム・オン・チップ（ＳｏＣ）の形をとる集積回路として実現されうる。
【０１２８】
例えば本発明のシステムは、端末又は他の通信装置へと、これらの装置によるよりよい通信性能を可能とするために、埋め込まれうる。
【０１２９】
本発明が、本詳細な説明及び図面において説明され、表された。本発明は、本明細書に表された実施形態には限定されない。当業者によって、本詳細な説明及び添付の図面を読んだ際に、他の変形例及び実施形態が導き出され、実現されうる。
【０１３０】
請求の範囲において、「備える(comprise)」との用語は、他の要素又は他の工程を排除しない。不定冠詞「ａ」は、複数を排除しない。単一のプロセッサ、又はいくつかの他のものが、本発明を実装するために用いられうる。提示された様々な特徴と、特許請求された様々な特徴との少なくとも一方が、有利に組み合わせられうる。それらの特徴が詳細な説明に存在すること、又は異なる従属請求項に存在することは、このような可能性を排除しない。参照符号は、本発明の範囲を限定するものとして考えられるべきではない。
【図１】
2013510355.tif 000003
【図２ａ】
2013510355.tif 000004
【図２ｂ】
2013510355.tif 000005
【図３】
2013510355.tif 000006
【図４】
2013510355.tif 000007
【図５】
2013510355.tif 000008
【図６】
2013510355.tif 000009
【図７】
2013510355.tif 000010
【国際調査報告】
2013510355.tif 000011
2013510355.tif 000012