(57)【特許請求の範囲】
【請求項１】
メモリ管理方法であって、
メモリマネージャによって、メモリアクセス要求を受信するステップであって、前記メモリアクセス要求は、仮想アドレスを搬送し、オペレーティングシステムがプロセスを起動する場合には、前記仮想アドレスが前記オペレーティングシステムによって前記プロセスに割り振られる、ステップと、
前記メモリマネージャが、トランスレーション・ルックアサイド・バッファTLBおよびメモリにおいて、前記仮想アドレスに対応するページテーブルエントリを見つけられなかった場合には、前記メモリマネージャによって、前記仮想アドレスのページフォルトタイプを判定するステップと、
前記メモリマネージャによって、前記仮想アドレスの前記ページフォルトタイプがブランクページに起因するページフォルトである場合には、対応するページを前記仮想アドレスに割り振るステップであって、前記ブランクページに起因するページフォルトは、対応するページが前記仮想アドレスに割り振られていないことを意味する、ステップと、
前記メモリマネージャによって、前記メモリおよび前記TLBに対して前記仮想アドレスに対応するページテーブルエントリを更新するステップであって、前記ページテーブルエントリは、前記ページの前記仮想アドレスと物理アドレスとの間のマッピング関係を含む、ステップとを含む、方法。
【請求項２】
前記メモリアクセス要求は、前記プロセスのプロセス番号をさらに搬送し、前記メモリマネージャは、前記プロセス番号に従って、前記メモリから前記プロセスに対応するページを検索して、前記仮想アドレスに従って、前記プロセスに対応する前記ページから前記仮想アドレスに対応する前記ページテーブルエントリを検索する、請求項1に記載の方法。
【請求項３】
前記メモリマネージャによって、対応するページを前記仮想アドレスに割り振るステップは、
ブランクページが前記メモリに存在する場合には、前記メモリマネージャによって、前記ブランクページを前記仮想アドレスに対応する前記ページとして使用するステップ、または、
ブランクページが前記メモリに存在していない場合には、前記メモリマネージャによって、置換対象のページを割り振り済みのページから選択して、前記置換対象のページの仮想アドレスを前記メモリアクセス要求において搬送された前記仮想アドレスに変更するステップであって、前記変更された置換対象のページは、前記仮想アドレスに対応する前記ページである、ステップを含む、請求項1または2に記載の方法。
【請求項４】
前記方法は、前記メモリマネージャによって、ダーティデータが前記置換対象のページに存在するかどうかを判定するステップと、
ダーティデータが前記置換対象のページに存在していない場合には、前記メモリマネージャによって、前記置換対象のページの前記仮想アドレスを前記メモリアクセス要求において搬送された前記仮想アドレスに変更するステップと、または、
ダーティデータが前記置換対象のページに存在する場合には、前記オペレーティングシステムが前記置換対象のページのアドレス情報に従って前記置換対象のページのデータを前記メモリから空き位置へと移行するように、前記メモリマネージャによって、前記置換対象のページの前記アドレス情報を前記オペレーティングシステムに送信して、前記オペレーティングシステムが前記置換対象のページの前記データを前記メモリから前記空き位置へと移行した後に、前記メモリマネージャによって、前記置換対象のページの前記仮想アドレスを前記メモリアクセス要求において搬送された前記仮想アドレスに変更するステップとをさらに含む、請求項3に記載の方法。
【請求項５】
前記方法は、前記メモリマネージャによって、ダーティデータが前記置換対象のページに存在するかどうかを判定するステップと、
ダーティデータが前記置換対象のページに存在していない場合には、前記メモリマネージャによって、前記置換対象のページの前記仮想アドレスを前記メモリアクセス要求において搬送された前記仮想アドレスに変更するステップと、または、
ダーティデータが前記置換対象のページに存在する場合には、前記メモリマネージャによって、前記置換対象のページのアドレス情報に従って、前記置換対象のページのデータを前記メモリから空き位置へと移行するステップであって、前記メモリマネージャおよび前記空き位置のアクセス機構は、同一のデバイスにあり、前記空き位置の前記アクセス機構は、前記メモリマネージャの制御下で前記空き位置にアクセスするために使用される、ステップと、
前記メモリマネージャが前記置換対象のページの前記データを前記メモリから前記空き位置へと移行した後に、前記メモリマネージャによって、前記置換対象のページの前記仮想アドレスを前記メモリアクセス要求において搬送された前記仮想アドレスに変更するステップとをさらに含む、請求項3に記載の方法。
【請求項６】
前記仮想アドレスの前記ページフォルトタイプが既存のデータページフォルトである場合には、前記メモリマネージャによって、前記オペレーティングシステムにページフォルトの発生を通知するステップであって、スワップに起因するページフォルトは、対応するページが前記仮想アドレスに割り振られていたことを意味する、ステップと、
前記メモリマネージャによって、前記対応するページを前記仮想アドレスに割り振り、前記メモリおよび前記TLB内の前記仮想アドレスに対応する前記ページテーブルエントリを更新するステップであって、前記ページテーブルエントリは、前記ページの前記仮想アドレスと前記物理アドレスとの間の前記マッピング関係を含む、ステップとをさらに含む、請求項1に記載の方法。
【請求項７】
前記プロセスを実行するプロセッサコアが変わる場合には、前記方法は、
前記メモリマネージャによって、前記オペレーティングシステムによって送信された変更後のプロセッサコアに関する情報を受信するステップをさらに含む、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記オペレーティングシステムが前記プロセスを終了した場合には、前記方法は、
前記メモリマネージャによって、前記オペレーティングシステムによって送信されたメモリ開放命令を受信して、前記メモリ開放命令に従って、前記プロセスによって占有されているメモリ領域を開放するステップをさらに含む、請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記メモリマネージャは、メモリコントローラに統合されている、または、メッセージベースのメモリシステムのバッファスケジューラに統合されている、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
メモリアクセス要求を受信するように構成される、受信モジュールであって、前記メモリアクセス要求は、仮想アドレスを搬送し、オペレーティングシステムがプロセスを起動する場合には、前記仮想アドレスが前記オペレーティングシステムによって前記プロセスに割り振られる、受信モジュールと、
トランスレーション・ルックアサイド・バッファTLBおよびメモリから前記仮想アドレスに対応するページテーブルエントリを検索するように構成される、検索モジュールと、
前記検索モジュールが、前記TLBおよび前記メモリにおいて、前記仮想アドレスに対応するページテーブルエントリを見つけられなかった場合には、前記仮想アドレスのページフォルトタイプを判定するように構成される、判定モジュールと、
前記仮想アドレスの前記ページフォルトタイプがブランクページに起因するページフォルトである場合には、対応するページを前記仮想アドレスに割り振るように構成される、ページ割り振りモジュールであって、前記ブランクページに起因するページフォルトは、対応するページが前記仮想アドレスに割り振られていないことを意味する、ページ割り振りモジュールと、
前記ページ割り振りモジュールが前記対応するページを前記仮想アドレスに割り振った後に、前記メモリおよび前記TLBに対して前記仮想アドレスに対応するページテーブルエントリを更新するように構成される、更新モジュールであって、前記ページテーブルエントリは、前記ページの前記仮想アドレスと物理アドレスとの間のマッピング関係を含む、更新モジュールとを備える、メモリマネージャ。
【請求項１１】
前記メモリアクセス要求は、前記プロセスのプロセス番号をさらに搬送し、前記検索モジュールは、前記プロセス番号に従って、前記メモリから前記プロセスに対応するページを検索して、前記仮想アドレスに従って、前記プロセスに対応する前記ページから前記仮想アドレスに対応する前記ページテーブルエントリを検索するように構成される、請求項10に記載のメモリマネージャ。
【請求項１２】
前記ページ割り振りモジュールは、
ブランクページが前記メモリに存在する場合には、前記ブランクページを前記仮想アドレスに対応する前記ページとして使用する、または、
ブランクページが前記メモリに存在していない場合には、置換対象のページを割り振り済みのページから選択して、前記置換対象のページの仮想アドレスを前記メモリアクセス要求において搬送された前記仮想アドレスに変更するように構成され、前記変更された置換対象のページは、前記仮想アドレスに対応する前記ページである、請求項10または11に記載のメモリマネージャ。
【請求項１３】
前記ページ割り振りモジュールは、
ダーティデータが前記置換対象のページに存在するかどうかを判定し、
ダーティデータが前記置換対象のページに存在していない場合には、前記置換対象のページの前記仮想アドレスを前記メモリアクセス要求において搬送された前記仮想アドレスに変更する、または、
ダーティデータが前記置換対象のページに存在する場合には、前記オペレーティングシステムが前記置換対象のページのアドレス情報に従って前記置換対象のページのデータを前記メモリから空き位置へと移行するように、前記置換対象のページの前記アドレス情報を前記オペレーティングシステムに送信して、前記オペレーティングシステムが前記置換対象のページの前記データを前記メモリから前記空き位置へと移行した後に、前記置換対象のページの前記仮想アドレスを前記メモリアクセス要求において搬送された前記仮想アドレスに変更するように構成される、請求項12に記載のメモリマネージャ。
【請求項１４】
前記ページ割り振りモジュールは、
ダーティデータが前記置換対象のページに存在するかどうかを判定し、
ダーティデータが前記置換対象のページに存在していない場合には、前記置換対象のページの前記仮想アドレスを前記メモリアクセス要求において搬送された前記仮想アドレスに変更する、または、
ダーティデータが前記置換対象のページに存在する場合には、前記置換対象のページのアドレス情報に従って、前記置換対象のページのデータを前記メモリから空き位置へと移行することであって、前記メモリマネージャおよび前記空き位置のアクセス機構は、同一のデバイスにあり、前記空き位置の前記アクセス機構は、前記メモリマネージャの制御下で前記空き位置にアクセスするために使用される、移行することを行い、
前記置換対象のページの前記データを前記メモリから前記空き位置へと移行した後に、前記置換対象のページの前記仮想アドレスを前記メモリアクセス要求において搬送された前記仮想アドレスに変更するように構成される、請求項12に記載のメモリマネージャ。
【請求項１５】
前記プロセスを実行するプロセッサコアが変わる場合には、前記受信モジュールは、
前記オペレーティングシステムによって送信された変更後のプロセッサコアに関する情報を受信するようにさらに構成される、請求項10から14のいずれか一項に記載のメモリマネージャ。
【請求項１６】
前記オペレーティングシステムが前記プロセスを終了した場合には、前記受信モジュールは、
前記オペレーティングシステムによって送信されたメモリ開放命令を受信するようにさらに構成され、
前記メモリマネージャは、
前記メモリ開放命令に従って、前記プロセスによって占有されているメモリ領域を開放するように構成される、メモリ開放モジュールをさらに備える、請求項10から15のいずれか一項に記載のメモリマネージャ。
【請求項１７】
前記メモリマネージャは、メモリコントローラに統合されている、または、メッセージベースのメモリシステムのバッファスケジューラに統合されている、請求項10から16のいずれか一項に記載のメモリマネージャ。
【請求項１８】
プロセッサ、メモリ、およびシステムバスを備える、メモリ管理を実施するための装置であって、
前記システムバスは、前記プロセッサと前記メモリとを接続するとともに相互通信を実施するために使用され、
前記メモリは、コンピュータ実行可能命令を記憶するように構成され、
前記プロセッサは、前記コンピュータ実行可能命令を実行して請求項1から9のいずれか一項に記載の方法を行うように構成される、装置。
【請求項１９】
コンピュータに請求項1から9のいずれか一項に記載のメモリ管理方法を実行させるように構成される、コンピュータプログラム。
【請求項２０】
請求項19に記載のコンピュータプログラムを記憶する、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、コンピュータ技術に関し、詳細には、メモリ管理方法およびデバイスに関する。
【背景技術】
【０００２】
近年のコンピュータシステムにおいては、メモリ管理タスクは、オペレーティングシステム、メモリ管理ユニット(Memory Management Unit、略して、MMU)、およびトランスレーション・ルックアサイド・バッファ(Translation Lookaside Buffer、略して、TLB)によって連携して実施される。
【０００３】
既存のメモリ管理フローでは、オペレーティングシステムがメモリ管理タスクの大部分を担当しており、最も頻繁に処理されることになる仮想-物理アドレスマッピングおよびページ検索のタスクはTLBおよびMMUなどのハードウェアによって実施される。そのようなメモリ管理方式は、2つの固有のボトルネックを有している。(1) TLBおよびMMUがプロセッサによってキャッシュにアクセスする主要経路に位置しており、プロセッサはキャッシュにアクセスするときにはいつでもTLBにまずアクセスしなければならない。TLBミスが増大すると、MMUがページを頻繁に検索することになり、このことが、システムボトルネックを引き起こす可能性が高い。(2) ページフォルト処理およびバインディング: MMUがページを検索することに失敗すると、ページフォルトがトリガされ、プロセッサはページフォルトを処理することに多くの時間を費やすことになる。Linux(登録商標)システムがページを検索する平均時間は35.8処理期間であり、Linux(登録商標)システムがページフォルトを処理する平均時間は2687処理期間である。2つのボトルネックを回避することができればまたは2つのボトルネックの発生の数量を低減することができれば、コンピュータシステム全体のメモリ管理効率を大幅に改善することになる。
【０００４】
従来技術では、仮想インデックス仮想タグ(Virtual indexed Virtual Tagged)キャッシュ技術といった、効果的なメモリ管理技術が提案されている。仮想インデックス仮想タグキャッシュの主な考え方は、TLBおよびMMUなどのハードウェアをキャッシュにアクセスする主要経路から除去することにある、ここで、プログラムは、仮想アドレスを直接使用してキャッシュにインデックスを付けており、TLBは、キャッシュミスの後の物理アドレスがキャッシュにアクセスするために使用されるときのみ、仮想-物理アドレス変換を行う。前記方法は、プロセッサによってキャッシュにアクセスする主要経路を短縮することができる。加えて、TLBがキャッシュにアクセスする主要経路に存在しないため、極めて大規模なTLBを実現することができ、TLBのヒットレートが増大することになる、それによって、TLBミスの数量を効率的に低減している。したがって、仮想インデックス仮想タグキャッシュは、上述した第1の固有のボトルネックを効率的に軽減することを可能にしている。
【０００５】
しかしながら、ページフォルトを処理する方式はプロセッサに縛られたままである。ページ検索がMMUハードウェアまたはオペレーティングシステムによって行われようが行われまいが、ページ検索が失敗するとページフォルトが発生する。プロセッサはページフォルトを処理するのに膨大な時間を浪費することになり、ひいては低いメモリ管理効率の原因となる。
【発明の概要】
【課題を解決するための手段】
【０００６】
本発明の実施形態は、メモリ管理効率を改善することができる、メモリ管理方法およびデバイスを提供している。
【０００７】
本発明の第1の態様は、メモリ管理方法を提供しており、メモリ管理方法は、
メモリマネージャによって、メモリアクセス要求を受信するステップであって、メモリアクセス要求は、仮想アドレスを搬送し、オペレーティングシステムがプロセスを起動する場合には、仮想アドレスがオペレーティングシステムによってプロセスに割り振られる、ステップと、
メモリマネージャが、トランスレーション・ルックアサイド・バッファTLBおよびメモリにおいて、仮想アドレスに対応するページテーブルエントリを見つけられなかった場合には、メモリマネージャによって、仮想アドレスのページフォルトタイプを判定するステップと、
メモリマネージャによって、仮想アドレスのページフォルトタイプがブランクページに起因するページフォルトである場合には、対応するページを仮想アドレスに割り振るステップであって、ブランクページに起因するページフォルトは、対応するページが仮想アドレスに割り振られていないことを意味する、ステップと、
メモリマネージャによって、メモリおよびTLBに対して仮想アドレスに対応するページテーブルエントリを更新するステップであって、ページテーブルエントリは、ページの仮想アドレスと物理アドレスとの間のマッピング関係を含む、ステップとを含む。
【０００８】
本発明の第1の態様に準拠している、本発明の第1の態様の第1の可能な実施様態においては、メモリアクセス要求は、プロセスのプロセス番号をさらに搬送し、メモリマネージャは、プロセス番号に従って、メモリからプロセスに対応するページを検索して、仮想アドレスに従って、プロセスに対応するページから仮想アドレスに対応するページテーブルエントリを検索する。
【０００９】
本発明の第1の態様および第1の態様の第1の可能な実施様態に準拠している、本発明の第1の態様の第2の可能な実施様態においては、メモリマネージャによって、対応するページを仮想アドレスに割り振るステップは、
ブランクページがメモリに存在する場合には、メモリマネージャによって、ブランクページを仮想アドレスに対応するページとして使用するステップ、または、
ブランクページがメモリに存在していない場合には、メモリマネージャによって、置換対象(to-be-substituted)のページを割り振り済みのページから選択して、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するステップであって、変更された置換対象のページは、仮想アドレスに対応するページである、ステップを含む。
【００１０】
本発明の第1の態様の第2の可能な実施様態に準拠している、本発明の第1の態様の第3の可能な実施様態においては、
方法は、メモリマネージャによって、ダーティデータが置換対象のページに存在するかどうかを判定するステップと、
ダーティデータが置換対象のページに存在していない場合には、メモリマネージャによって、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するステップと、または、
ダーティデータが置換対象のページに存在する場合には、オペレーティングシステムが置換対象のページのアドレス情報に従って置換対象のページのデータをメモリから空き位置へと移行するように、メモリマネージャによって、置換対象のページのアドレス情報をオペレーティングシステムに送信して、オペレーティングシステムが置換対象のページのデータをメモリから空き位置へと移行した後に、メモリマネージャによって、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するステップとをさらに含む。
【００１１】
本発明の第1の態様の第2の可能な実施様態に準拠している、本発明の第1の態様の第4の可能な実施様態においては、
方法は、メモリマネージャによって、ダーティデータが置換対象のページに存在するかどうかを判定するステップと、
ダーティデータが置換対象のページに存在していない場合には、メモリマネージャによって、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するステップと、または、
ダーティデータが置換対象のページに存在する場合には、メモリマネージャによって、置換対象のページのアドレス情報に従って、置換対象のページのデータをメモリから空き位置へと移行するステップであって、メモリマネージャおよび空き位置のアクセス機構は、同一のデバイスにあり、空き位置のアクセス機構は、メモリマネージャの制御下で空き位置にアクセスするために使用される、ステップと、
メモリマネージャが置換対象のページのデータをメモリから空き位置へと移行した後に、メモリマネージャによって、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するステップとをさらに含む。
【００１２】
本発明の第1の態様に準拠している、本発明の第1の態様の第5の可能な実施様態においては、方法は、
仮想アドレスのページフォルトタイプが既存のデータページフォルトである場合には、メモリマネージャによって、オペレーティングシステムにページフォルトの発生を通知するステップであって、スワップに起因するページフォルトは、対応するページが仮想アドレスに割り振り済みであることを意味する、ステップと、
メモリマネージャによって、対応するページを仮想アドレスに割り振り、メモリおよびTLB内の仮想アドレスに対応するページテーブルエントリを更新するステップであって、ページテーブルエントリは、ページの仮想アドレスと物理アドレスとの間のマッピング関係を含む、ステップとをさらに含む。
【００１３】
本発明の第1の態様および第1の態様の第1から第5の可能な実施様態に準拠している、本発明の第1の態様の第6の可能な実施様態においては、プロセスを実行するプロセッサコアが変わる場合には、方法は、
メモリマネージャによって、オペレーティングシステムによって送信された変更後のプロセッサコアに関する情報を受信するステップをさらに含む。
【００１４】
本発明の第1の態様および第1の態様の第1から第6の可能な実施様態に準拠している、本発明の第1の態様の第7の可能な実施様態においては、オペレーティングシステムがプロセスを終了した場合には、方法は、
メモリマネージャによって、オペレーティングシステムによって送信されたメモリ開放命令を受信して、メモリ開放命令に従って、プロセスによって占有されているメモリ領域を開放するステップをさらに含む。
【００１５】
本発明の第1の態様および第1の態様の第1から第7の可能な実施様態に準拠している、本発明の第1の態様の第8の可能な実施様態においては、メモリマネージャは、メモリコントローラに統合されている、または、メッセージベースのメモリシステムのバッファスケジューラに統合されている。
【００１６】
本発明の第2の態様は、メモリ管理方法を提供しており、方法は、
オペレーティングシステムによって、置換対象のページについてのものであるとともにメモリマネージャによって送信されたアドレス情報を受信して、置換対象のページのアドレス情報に従って置換対象のページのデータをメモリから空き位置へと移行するステップであって、ダーティデータがメモリアクセス要求において搬送された仮想アドレスのために選択された置換対象のページに存在する場合には、置換対象のページのアドレス情報がメモリマネージャによって送信される、ステップと、
オペレーティングシステムが置換対象のページのデータをメモリから空き位置へと移行した後に、メモリマネージャが置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するように、オペレーティングシステムによって、置換対象のページが利用可能であることをメモリマネージャに通知するステップとを含む。
【００１７】
本発明の第2の態様に準拠している、本発明の第2の態様の第1の可能な実施様態においては、ページフォルトが発生した場合には、方法は、
オペレーティングシステムによって、メモリマネージャによって送信されたページフォルト通知を受信して、ページフォルト通知に従って、状態を保存するステップであって、仮想アドレスのページフォルトタイプが既存のデータページフォルトであるとメモリマネージャが判定すると、ページフォルト通知が送信される、ステップをさらに含む。
【００１８】
本発明の第3の態様は、メモリマネージャを提供しており、メモリマネージャは、
メモリアクセス要求を受信するように構成される、受信モジュールであって、メモリアクセス要求は、仮想アドレスを搬送し、オペレーティングシステムがプロセスを起動する場合には、仮想アドレスがオペレーティングシステムによってプロセスに割り振られる、受信モジュールと、
トランスレーション・ルックアサイド・バッファTLBおよびメモリから仮想アドレスに対応するページテーブルエントリを検索するように構成される、検索モジュールと、
検索モジュールが、TLBおよびメモリにおいて、仮想アドレスに対応するページテーブルエントリを見つけられなかった場合には、仮想アドレスのページフォルトタイプを判定するように構成される、判定モジュールと、
仮想アドレスのページフォルトタイプがブランクページに起因するページフォルトである場合には、対応するページを仮想アドレスに割り振るように構成される、ページ割り振りモジュールであって、ブランクページに起因するページフォルトは、対応するページが仮想アドレスに割り振られていないことを意味する、ページ割り振りモジュールと、
ページ割り振りモジュールが対応するページを仮想アドレスに割り振った後に、メモリおよびTLBに対して仮想アドレスに対応するページテーブルエントリを更新するように構成される、更新モジュールであって、ページテーブルエントリは、ページの仮想アドレスと物理アドレスとの間のマッピング関係を含む、更新モジュールとを備える。
【００１９】
本発明の第3の態様に準拠している、本発明の第3の態様の第1の可能な実施様態においては、メモリアクセス要求は、プロセスのプロセス番号をさらに搬送し、検索モジュールは、プロセス番号に従って、メモリからプロセスに対応するページを検索して、仮想アドレスに従って、プロセスに対応するページから仮想アドレスに対応するページテーブルエントリを検索するように構成される。
【００２０】
本発明の第3の態様および第3の態様の第1の可能な実施様態に準拠している、本発明の第3の態様の第2の可能な実施様態においては、ページ割り振りモジュールは、
ブランクページがメモリに存在する場合には、ブランクページを仮想アドレスに対応するページとして使用する、または、
ブランクページがメモリに存在していない場合には、置換対象のページを割り振り済みのページから選択して、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するように特に構成され、変更された置換対象のページは、仮想アドレスに対応するページである。
【００２１】
本発明の第3の態様の第2の可能な実施様態に準拠している、本発明の第3の態様の第3の可能な実施様態においては、ページ割り振りモジュールは、
ダーティデータが置換対象のページに存在するかどうかを判定し、
ダーティデータが置換対象のページに存在していない場合には、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更する、または、
ダーティデータが置換対象のページに存在する場合には、オペレーティングシステムが置換対象のページのアドレス情報に従って置換対象のページのデータをメモリから空き位置へと移行するように、置換対象のページのアドレス情報をオペレーティングシステムに送信して、オペレーティングシステムが置換対象のページのデータをメモリから空き位置へと移行した後に、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するように構成される。
【００２２】
本発明の第3の態様の第2の可能な実施様態に準拠している、本発明の第3の態様の第4の可能な実施様態においては、ページ割り振りモジュールは、
ダーティデータが置換対象のページに存在するかどうかを判定し、
ダーティデータが置換対象のページに存在していない場合には、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更する、または、
ダーティデータが置換対象のページに存在する場合には、置換対象のページのアドレス情報に従って、置換対象のページのデータをメモリから空き位置へと移行することであって、メモリマネージャおよび空き位置のアクセス機構は、同一のデバイスにあり、空き位置のアクセス機構は、メモリマネージャの制御下で空き位置にアクセスするために使用される、移行することを行い、
置換対象のページのデータをメモリから空き位置へと移行した後に、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するように構成される。
【００２３】
本発明の第3の態様および第3の態様の第1から第4の可能な実施様態に準拠している、本発明の第3の態様の第5の可能な実施様態においては、プロセスを実行するプロセッサコアが変わる場合には、受信モジュールは、
オペレーティングシステムによって送信された変更後のプロセッサコアに関する情報を受信するようにさらに構成される。
【００２４】
本発明の第3の態様および第3の態様の第1から第5の可能な実施様態に準拠している、本発明の第3の態様の第6の可能な実施様態においては、オペレーティングシステムがプロセスを終了した場合には、受信モジュールは、
オペレーティングシステムによって送信されたメモリ開放命令を受信するようにさらに構成され、
メモリマネージャは、
メモリ開放命令に従って、プロセスによって占有されているメモリ領域を開放するように構成される、メモリ開放モジュールをさらに備える。
【００２５】
本発明の第3の態様および第3の態様の第1から第6の可能な実施様態に準拠している、本発明の第3の態様の第7の可能な実施様態においては、メモリマネージャは、メモリコントローラに統合されている、または、メッセージベースのメモリシステムのバッファスケジューラに統合されている。
【００２６】
本発明の第4の態様は、プロセッサ、メモリ、およびシステムバスを備える、メモリ管理を実施するための装置を提供しており、
システムバスは、プロセッサとメモリとを接続するとともに相互通信を実施するために使用され、
メモリは、コンピュータ実行可能命令を記憶するように構成され、
プロセッサは、コンピュータ実行可能命令を実行して本発明の第1の態様および第1の態様の第1から第8の可能な実施様態において提供した方法を行うように構成される。
【００２７】
本発明の第5の態様は、プロセッサ、メモリ、およびシステムバスを備える、コンピュータを提供しており、システムバスは、プロセッサとメモリとを接続するとともに相互通信を実施するために使用され、
メモリは、コンピュータ実行可能命令を記憶するように構成され、
プロセッサは、コンピュータ実行可能命令を実行して本発明の第2の態様および第2の態様の第1の可能な実施様態において提供した方法を行うように構成される。
【００２８】
本発明の実施形態において提供したメモリ管理方法およびデバイスによれば、メモリマネージャが、TLBおよびメモリにおいて、メモリアクセス要求において搬送された仮想アドレスを見つけられなかった場合には、メモリマネージャは、仮想アドレスのページフォルトタイプを判定し、仮想アドレスのページフォルトタイプがブランクページに起因するページフォルトである場合には、メモリマネージャは、対応するページを仮想アドレスに割り振る、ここで、ブランクページに起因するページフォルトは、対応するページが仮想アドレスに割り振られていないことを意味しており、メモリマネージャは、メモリおよびTLBに対して仮想アドレスに対応するページテーブルエントリを更新する。仮想アドレスのページフォルトタイプを判定することによって、メモリマネージャは、ブランクページに起因するページフォルトが発生した場合には、ページフォルトを生成せずに、対応するページを仮想アドレスに割り振る。したがって、実施形態における方法は、ページフォルトの発生の数量を低減することができ、それによって、メモリ管理効率を改善している。
【００２９】
本発明の実施形態または従来技術における技術的解決手法をより明確に説明するために、実施形態または従来技術を説明するために必要となる添付の図面を以下に簡単に説明する。以下で説明している添付の図面は本発明の実施形態の一部を示しており、当業者が創造的努力なしにこれらの添付の図面から他の図面をさらに導出し得ることは明らかであろう。
【図面の簡単な説明】
【００３０】
【図１】本発明による、メモリ管理方法の第1の実施形態のフローチャートである。
【図２】本発明による、メモリ管理方法の第2の実施形態のフローチャートである。
【図３】本発明による、メモリ管理方法の第3の実施形態のフローチャートである。
【図４】本発明による、メモリ管理方法の第4の実施形態のフローチャートである。
【図５】本発明の実施形態による、メモリコントローラの概略構造図である。
【図６】オペレーティングシステムがプロセスを作成する際の作成についての概略フローチャートである。
【図７】オペレーティングシステムによるプロセスの終了の概略フローチャートである。
【図８】メニーコアプロセッサシステムの概略構造図である。
【図９】メッセージベースのメモリシステムの概略構造図である。
【図１０】NUMAシステムの概略構造図である。
【図１１】本発明の実施形態による、メモリマネージャの概略構造図である。
【図１２】本発明の実施形態による、別のメモリマネージャの概略構造図である。
【図１３】本発明の実施形態による、メモリ管理を実施するための装置の概略構造図である。
【図１４】本発明の実施形態による、コンピュータの概略構造図である。
【発明を実施するための形態】
【００３１】
本発明の実施形態の目的、技術的解決手法、および利点をより明確にするために、本発明の実施形態における添付の図面を参照して、本発明の実施形態における技術的解決手法を以下に明確かつ完全に説明する。説明した実施形態が本発明の実施形態のすべてではなく一部であることは明らかであろう。創造的努力なしに本発明の実施形態に基づいて当業者によって取得した他の実施形態のすべては、本発明の保護範囲に含まれるものとする。
【００３２】
従来技術では、オペレーティングシステムがメモリ管理タスクの大部分を担当している。オペレーティングシステムがメモリ管理を行う場合には、ページフォルトが発生した場合には、オペレーティングシステムは割り込みサービスルーチンを開始し、プロセッサはカレントプログラムの実行を停止するとともにページフォルト処理フローに移行する。プロセッサがページフォルトを処理する平均時間は2687処理期間であり、このことがメモリ管理効率を低減することになる。従来技術におけるこの不利益は、オペレーティングシステム(software)とプロセッサ(hardware)との間のバインディングに主に起因している。
【００３３】
従来技術におけるメモリ管理方式の不利益に関して、本発明の実施形態はメモリ管理機構を提案している。メモリ管理機構においては、メモリ管理タスクを分割し、メモリの仮想アドレス領域および物理アドレス領域を別々に管理している。物理アドレス領域はメモリマネージャによって管理されており、仮想アドレス領域はオペレーティングシステムによって管理されている。メモリマネージャは、(仮想アドレスと物理アドレスとの間のマッピング)アドレスマッピング、ページメンテナンス、ページ割り振り、空きメモリ管理、ページ置換、フラグメント管理、越境チェック、保護チェックなどのコンテンツを主に管理する。オペレーティングシステムは、仮想アドレスの割り振りおよび開放を主に管理する。
【００３４】
図1は、本発明による、メモリ管理方法の第1の実施形態のフローチャートである。本実施形態における方法はメモリマネージャによって行われる、ここで、メモリマネージャはプロセッサに比較的近いところにあるハードウェアに統合されていてもよい。例えば、メモリマネージャはメモリコントローラに統合される、または、メモリマネージャはメッセージベースのメモリシステムのバッファスケジューラに統合される。本実施形態は、メモリマネージャの実施形態を限定するものではない。図1に示したように、本実施形態における方法は、以下のステップを含み得る。
【００３５】
ステップ101: メモリマネージャは、メモリアクセス要求を受信する、ここで、メモリアクセス要求は、仮想アドレスを搬送し、オペレーティングシステムがプロセスを起動する場合には、仮想アドレスがオペレーティングシステムによってプロセスに割り振られる。
【００３６】
メモリアクセス要求は、プロセッサによって送信される、ここで、プロセッサは、中央処理ユニット(Central Processing Unit、略して、CPU)のコア部分であって、CPUコアまたは複数のCPUコアのセットでもあり得る、コア部分を主に指す。
【００３７】
必要に応じて、メモリアクセス要求は、プロセスのプロセス番号をさらに搬送し、メモリマネージャは、プロセス番号に従って、メモリからプロセスに対応するページを検索して、仮想アドレスに従って、プロセスに対応するページから仮想アドレスに対応するページテーブルエントリを検索する。
【００３８】
ステップ102: メモリマネージャが、TLBおよびメモリにおいて、仮想アドレスに対応するページテーブルエントリを見つけられなかった場合には、メモリマネージャは、仮想アドレスのページフォルトタイプを判定する。
【００３９】
メモリアクセス要求を受信した後に、メモリマネージャは、ローカルトランスレーション・ルックアサイド・バッファ(Translation Lookaside Buffer、略して、TLB)から仮想アドレスに対応するページテーブルエントリを検索する。仮想アドレスに対応するページテーブルエントリがTLBに存在していなかった場合には、メモリマネージャは、メモリ(Memory)から仮想アドレスに対応するページテーブルエントリを検索する。メモリマネージャが対応するページテーブルエントリを仮想アドレスに割り振り済みであるならば、メモリマネージャは、メモリにおいて、仮想アドレスに対応するページテーブルエントリを見つけることができ、また、メモリマネージャが対応するページテーブルエントリを仮想アドレスに割り振っていなければ、メモリマネージャは、メモリにおいて、仮想アドレスに対応するページテーブルエントリを見つけられない。一般的に、メモリマネージャは、TLBから仮想アドレスをまず検索して、仮想アドレスがTLBに存在していなかった場合のみ、メモリマネージャはメモリから仮想アドレスに対応するページテーブルエントリを検索する。
【００４０】
従来技術では、CPUハードウェアがTLBから仮想アドレスを検索している。仮想アドレスをTLBで見つけられなかった場合には、メモリ管理ユニット(Memory Management Unit、略して、MMU)は、ページテーブルを検索する。MMUが、メモリにおいて、仮想アドレスに対応するページテーブルエントリを見つけられなかった場合には、MMUは、ページフォルトを生成する。従来技術におけるページフォルトを生成する主な理由は、オペレーティングシステムがブランクページを適切に割り振っていなかったことにある。仮想アドレスがはじめてアクセスされた場合には、オペレーティングシステムは対応するページを仮想アドレスに割り振っていないため、MMUは、メモリにおいて、仮想アドレスに対応するページを見つけられない。本実施形態における方法によれば、メモリマネージャが、メモリおよびTLBにおいて、仮想アドレスに対応するページテーブルエントリを見つけられなかった場合には、メモリマネージャは、ページフォルトを生成せずに、仮想アドレスのページフォルトタイプを判定する。
【００４１】
メモリマネージャは、ページ割り振り情報に従って、仮想アドレスのページフォルトタイプを判定し得る、ここで、ページフォルトタイプは、ブランクページに起因するページフォルトおよび既存のデータページフォルトを含む。ブランクページに起因するページフォルトは、対応するページが仮想アドレスに割り振られていないことを意味している。すなわち、仮想アドレスは、はじめてアクセスされており、対応するページに関連付けられていない。スワップに起因するページフォルトは、対応するページが仮想アドレスに割り振られていたが、仮想アドレスに対応するページが長時間使用されていないことを意味しており、したがって、仮想アドレスに対応するページのデータは、空き位置に移行される。メモリマネージャは、ページ割り振り情報をメンテナンスする。ページ割り振り情報内には、割り振り済みのページの仮想アドレスに関する情報が記録されている。ページが仮想アドレスに割り振られていることがページ割り振り情報内に記録されている場合には、メモリマネージャは、ページフォルトタイプがスワップに起因するページフォルトであると判定する。仮想アドレスの割り振り記録がページ割り振り情報に存在していない場合には、メモリマネージャは、ページフォルトタイプがブランクページに起因するページフォルトであると判定する。
【００４２】
必要に応じて、メモリマネージャが、TLBおよびメモリにおいて、仮想アドレスに対応するページテーブルエントリを見つけられなかった場合には、メモリマネージャは、仮想アドレスが有効であるどうかをさらにチェックする必要がある。メモリマネージャが仮想アドレスが有効であるかどうかをチェックするということは、特に、メモリマネージャが、仮想アドレスが境界を越えていないかどうかをまずチェックし、メモリマネージャが、仮想アドレスがプロセスの事前に記憶されている仮想アドレス範囲内にあるかどうかを判定し、仮想アドレスが事前に記憶されている仮想アドレス範囲内にない場合には、仮想アドレスが境界を越えており仮想アドレスは無効な仮想アドレスであることを示すことである。メモリマネージャ上のプロセスについての事前に記憶されている仮想アドレス範囲は、オペレーティングシステムによって割り振られるとともに送信され、オペレーティングシステムは、仮想アドレスの割り振りおよび管理を担当している。仮想アドレス範囲は、動的仮想アドレス範囲および静的仮想アドレス範囲を含み得る。オペレーティングシステムがプロセスを作成する場合には、静的仮想アドレス範囲がプロセスに割り振られる。静的仮想アドレス範囲内の仮想アドレスがプロセスによる使用に対して十分でない場合には、オペレーティングシステムは、追加として動的仮想アドレス範囲をプロセスに割り振る。静的仮想アドレス範囲内の仮想アドレスがプロセスによる使用に対して十分である場合には、オペレーティングシステムは、動的仮想アドレス範囲をプロセスに割り振らない。
【００４３】
加えて、メモリマネージャは、仮想アドレスが境界を越えているかどうかをチェックするだけでなく、仮想アドレスに対応するページが読み込み専用ページであるかどうかもチェックする必要がある。メモリアクセス要求は、読み込みアクセス要求および書き込みアクセス要求の2つのタイプに分類される。ページのパーミッションは、読み込み専用に設定されている場合がある。ページのパーミッションが読み込み専用に設定されていた場合には、読み込みアクセスのみをページに対して行うことができ、書き込みアクセスを行うことはできない。例えば、メモリアクセス要求が書き込みアクセス要求であるが仮想アドレスに対応するページが読み込み専用ページであるとメモリマネージャが判定した場合には、メモリマネージャは、仮想アドレスが無効であると判定する。仮想アドレスが前述した2つの条件の両方を満たす場合には、仮想アドレスは有効である。仮想アドレスが有効であることを前提条件にして、メモリマネージャは、仮想アドレスのページフォルトタイプをさらに判定する。仮想アドレスが前述した2つの条件のいずれかを満たしていない場合には、仮想アドレスは無効であり、メモリマネージャは仮想アドレスが無効であることをオペレーティングシステムにフィードバックする。
【００４４】
ステップ103: メモリマネージャは、仮想アドレスのページフォルトタイプがブランクページに起因するページフォルトである場合には、対応するページを仮想アドレスに割り振る、ここで、ブランクページに起因するページフォルトは、対応するページが仮想アドレスに割り振られていないことを意味している。
【００４５】
メモリマネージャが対応するページを仮想アドレスに割り振るということは、特に、メモリマネージャが、ブランクページがメモリに存在しているかどうかを判定し、ブランクページがメモリに存在する場合には、メモリマネージャが、ブランクページを仮想アドレスに対応するページとして使用する、または、ブランクページがメモリに存在していない場合には、メモリマネージャが、置換対象のページを割り振り済みのページから選択して、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更することであり、ここで、変更された置換対象のページは、仮想アドレスに対応するページである。メモリマネージャがブランクページがメモリに存在しているかどうかを判定するということは、特に、メモリマネージャが、メモリ内の占有されていないブランクページのすべてを記録している空きリストを検索し、ブランクページが空きリストに存在する場合には、メモリマネージャが、ブランクページがメモリに存在していると判定する、または、ブランクページが空きリストに存在していない場合には、メモリマネージャが、ブランクページがメモリに存在していないと判定することである。
【００４６】
ブランクページがメモリに存在していない場合には、物理メモリが枯渇していることを示し、メモリマネージャは、置換対象のページを割り振り済みのページから選択し、置換対象のページのデータをメモリから空き位置へと移行し、その後、使用のために置換対象のページを仮想アドレスに割り振る必要がある。メモリマネージャが置換対象のページを割り振り済みのページから選択した場合には、置換対象のページを、本明細書において詳細に記載していない既存のページ置換アルゴリズムに従って選択してもよい。一般的に、メモリマネージャは、長時間使用されていなかったページを置換対象のページとして選択する。
【００４７】
メモリマネージャが置換対象のページを割り振り済みのページから選択した後に、必要に応じて、メモリマネージャは、次のような処理をさらに行う。メモリマネージャは、ダーティデータが置換対象のページに存在するかどうかを判定し、ダーティデータが置換対象のページに存在していない場合には、メモリマネージャは、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更する。ダーティデータが置換対象のページに存在していないということは、置換対象のページが、置換対象のページのデータが変更されていないことを示す、クリーン(clean)であることを意味している。ダーティデータが置換対象のページに存在する場合には、オペレーティングシステムが置換対象のページのアドレス情報に従って置換対象のページのデータをメモリから空き位置へと移行するように、メモリマネージャは、置換対象のページのアドレス情報をオペレーティングシステムに送信する。ダーティデータが置換対象のページに存在しているということは、置換対象のページが、置換対象のページのデータが変更済みであることを示す、ダーティ(dirty)であることを意味している。置換対象のページのアドレス情報は、置換対象のページの仮想アドレスまたは置換対象のページの物理アドレスであり得る。空き位置をまず見つけた後に、オペレーティングシステムは、ダイレクトメモリアクセス(Direct Memory Access、略して、DMA)を開始し、DMAアクセス機構を使用して置換対象のページのデータをメモリから空き位置へと移行する。
【００４８】
オペレーティングシステムが置換対象のページのデータをメモリから空き位置へと移行した後に、メモリマネージャが置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するように、オペレーティングシステムは、置換対象のページが利用可能であることをメモリマネージャに通知する。メモリマネージャが置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するということは、メモリマネージャが置換対象のページの仮想アドレスと物理アドレスとの間のマッピング関係を変更することを意味している、ここで、変更された置換対象のページは、メモリアクセス要求において搬送された仮想アドレスに対応するページである。
【００４９】
空き位置は、メモリ内で使用されていないデータを一時的に記憶するために使用される。物理メモリが枯渇している場合には、メモリ内で長時間使用されていなかったデータを空き位置に移行し得る。空き位置内のデータを呼び出す必要がある場合には、使用するためにデータを空き位置からメモリにコピーし得る。本実施形態における空き位置は、SWAPパーティションであり得る。SWAPパーティションは、ディスクまたはFLASH上の仮想メモリの一部を一般的に指す。本発明の本実施形態においては、SWAPパーティションはまた、不揮発性メモリ(Non-Volatile Memory、略して、NVM)にあってもよい。不揮発性メモリは、大きな容量を有しており、ディスクおよびFLASHのものよりかなり小さな読み込み遅延を有しており、SWAPパーティションの記憶媒体として機能するのに非常に適している。一般的な不揮発性メモリは、強誘電体メモリ、磁気ランダムアクセスメモリ、および相変化メモリ(Phase Change Memory、略して、PCM)を含む。オペレーティングシステムによってディスクもしくはFLASHからデータを読み込むまたはディスクもしくはFLASHにデータを書き込む速度は、NVMからデータを読み込むまたはNVMにデータを書き込む速度よりかなり低い。したがって、SWAPパーティションがNVMに設けられている場合には、置換対象のページのデータをメモリから空き位置へと移行することにオペレーティングシステムが費やす時間を大幅に短縮することができる、その結果、ページ割り振り時間を短縮するとともに、メモリアクセス効率を改善している。
【００５０】
前述した方式においては、ダーティデータが置換対象のページに存在する場合には、オペレーティングシステムおよびメモリマネージャは、対応するページを仮想アドレスに割り振るために互いに連携する必要がある。別の方式においては、メモリマネージャは、オペレーティングシステムが関与することなく、対応するページを仮想アドレスに独立して割り振る。特に、メモリマネージャが置換対象のページを割り振り済みのページから選択した後に、メモリマネージャは、ダーティデータが置換対象のページに存在するかどうかを判定し、ダーティデータが置換対象のページに存在していない場合には、メモリマネージャは、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更する、または、ダーティデータが置換対象のページに存在する場合には、置換対象のページのアドレス情報に従って、メモリマネージャは、置換対象のページのデータをメモリから空き位置へと移行することであって、メモリマネージャおよび空き位置のアクセス機構(accessor)は、同一のデバイスにあり、空き位置のアクセス機構は、メモリマネージャの制御下で空き位置にアクセスするために使用される、移行することを行い、メモリマネージャが置換対象のページのデータをメモリから空き位置へと移行した後に、メモリマネージャは、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更する。
【００５１】
前述した2つの方式における、後者の方式と前者の方式との間の主な違いは、前者の方式では、ダーティデータが置換対象のページに存在する場合に、メモリマネージャが、置換対象のページのアドレス情報をオペレーティングシステムに送信し、オペレーティングシステムが、置換対象のページのアドレス情報に従って置換対象のページのデータをメモリから空き位置へと移行するのに対し、後者の方式では、ダーティデータが置換対象のページに存在する場合に、メモリマネージャが、置換対象のページのアドレス情報に従って置換対象のページのデータをメモリから空き位置へと移行することにある。
【００５２】
後者の方式を実施する前提条件は、メモリマネージャおよび空き位置のアクセス機構が同一のデバイスにあり、空き位置のアクセス機構がメモリマネージャの制御下で空き位置にアクセスするために使用されることである。空き位置がディスクである場合には、空き位置のアクセス機構は、ディスクコントローラであり、空き位置がNVMである場合には、空き位置のアクセス機構はNVMコントローラである。空き位置がNVMである場合には、メモリマネージャおよびNVMの双方が、メモリコントローラにまたはメッセージベースのメモリシステムのバッファスケジューラに統合され得る。
【００５３】
ステップ104: メモリマネージャは、メモリおよびTLBに対して仮想アドレスに対応するページテーブルエントリを更新する、ここで、ページテーブルエントリは、ページの仮想アドレスと物理アドレスとの間のマッピング関係を含む。
【００５４】
対応するページを仮想アドレスに割り振った後に、メモリマネージャは、TLBおよびメモリのページテーブルを更新する。特に、メモリマネージャは、仮想アドレスに対応するページテーブルエントリをメモリのページテーブルに追加するとともに、仮想アドレスに対応するページテーブルエントリをTLBに追加する。メモリおよびTLBに対して仮想アドレスに対応するページテーブルエントリを更新した後に、メモリマネージャは、TLBおよびメモリにおいて、仮想アドレスに対応するページテーブルエントリを見つけ、その後、仮想アドレスに対応するページテーブルエントリに従って、仮想アドレスに対応する物理アドレスを見つけて、仮想アドレスに対応する物理アドレスを使用してメモリにアクセスすることができる。
【００５５】
本実施形態においては、メモリは、メモリマネージャを使用して管理される。メモリマネージャが、TLBおよびメモリにおいて、仮想アドレスに対応するページテーブルエントリを見つけられなかった場合には、メモリマネージャは、仮想アドレスのページフォルトタイプを判定する。仮想アドレスのページフォルトタイプがブランクページに起因するページフォルトである場合には、メモリマネージャは、対応するページを仮想アドレスに割り振り、メモリおよびTLBに対して仮想アドレスに対応するページテーブルエントリを更新する。従来技術では、ページフォルトは、仮想アドレスに割り振られている対応するページの欠如にほとんど起因している。本実施形態における方法によれば、仮想アドレスのページフォルトタイプを判定することによって、メモリマネージャは、ブランクページに起因するページフォルトが発生した場合には、ページフォルトを生成せずに、対応するページを仮想アドレスに割り振る。したがって、本実施形態における方法は、ページフォルトの発生の数量を大幅に低減することができ、それによって、メモリ管理効率を改善している。
【００５６】
仮想アドレスのページフォルトタイプが既存のデータページフォルトであるとメモリマネージャが判定すると、メモリマネージャが、ページフォルトが発生したことをオペレーティングシステムに通知し、対応するページを仮想アドレスに割り振り、メモリおよびTLB内の仮想アドレスに対応するページテーブルエントリを更新する、前述した第1の実施形態に基づいて、本発明の第2の実施形態は、ページフォルトの発生後の処理フローを主に説明している。従来技術と比較して、本実施形態における方法は、ページフォルトの処理時間を低減し得る。図2は、本発明による、メモリ管理方法の第2の実施形態のフローチャートである。本実施形態の前提条件は、ページフォルトが発生したとメモリマネージャが判定することである。ページフォルトを判定する方式に関する詳細については、第1の実施形態における説明を参照されたい、そのため、ここでは繰り返し説明することはしない。図2に示したように、本実施形態における方法は、以下のステップを含み得る。
【００５７】
ステップ201: メモリマネージャは、ページフォルト通知をオペレーティングシステムに送信する、ここで、ページフォルト通知は、仮想アドレスを搬送する。
【００５８】
メモリマネージャは、仮想アドレスのページフォルトタイプが既存のデータページフォルトであると判定すると、ページフォルト通知をオペレーティングシステムに送信する。本発明の実施形態においては、ページフォルトが発生した場合には、仮想アドレスに対応するページのデータがメモリから空き位置へと移行されていることを示す。
【００５９】
ステップ202: オペレーティングシステムは、メモリマネージャによって送信されたページフォルト通知を受信して、ページフォルト通知に従って、状態を保存する。
【００６０】
ステップ203: オペレーティングシステムは、仮想アドレスに従って空き位置を検索して、仮想アドレスに対応するページのデータの、空き位置にある、アドレスを検索する。
【００６１】
仮想アドレスに対応するページのデータがメモリから空き位置へと移行されているため、仮想アドレスがアクセスされた場合には、仮想アドレスに対応するページのデータを継続して使用することができるように、仮想アドレスに対応するページのデータを、空き位置で見つけて、メモリに移行する必要がある。
【００６２】
ステップ204: ブランクページがメモリに存在する場合には、メモリマネージャは、ブランクページを仮想アドレスに対応するページとして使用する。
【００６３】
ステップ205: メモリマネージャは、メモリおよびTLBに対して仮想アドレスに対応するページテーブルエントリを更新する。
【００６４】
ステップ206: メモリマネージャは、仮想アドレスに対応するページが利用可能であることをオペレーティングシステムに通知する。
【００６５】
従来技術では、ページフォルトが発生した後に、対応するページを仮想アドレスに割り振る処理もオペレーティングシステムによって行われる。しかしながら、本実施形態においては、オペレーティングシステムがステップ202から203を行う場合には、メモリマネージャはステップ204から205を並行して行ってもよい。オペレーティングシステムおよびメモリマネージャは並行して動作することができるため、ページフォルトの処理時間が低減される。
【００６６】
ステップ207: 仮想アドレスに対応するページのデータの、空き位置にある、アドレスに従って、オペレーティングシステムは、仮想アドレスに対応するページのデータを空き位置からメモリへとコピーする。
【００６７】
ページが利用可能であるとの、メモリマネージャによって送信された、通知を受信した後に、オペレーティングシステムは、仮想アドレスに対応するページのデータの、空き位置にある、アドレスに従って、仮想アドレスに対応するページのデータを空き位置からメモリへとコピーし、その後、オペレーティングシステムは、プロセスをスケジューリングし得る。
【００６８】
本実施形態における方法によれば、仮想アドレスのページフォルトタイプが既存のデータページフォルトであるとメモリマネージャが判定すると、ページフォルトが発生しており、オペレーティングシステムは、ページフォルトが発生したことが通知される。オペレーティングシステムおよびメモリマネージャは、互いに連携してページフォルト処理フローを実行する。ページフォルト処理フローを行う際にオペレーティングシステムおよびメモリマネージャは並行して動作することができるため、ページフォルトの処理時間が低減され、メモリ管理効率がさらに改善される。
【００６９】
第2の実施形態においては、仮想アドレスに割り振られるためにブランクページがメモリに存在している場合に行われる割り込み処理フロー、すなわち、物理メモリが枯渇していないケースにおけるページフォルト処理フローを主に説明する。本発明の第3の実施形態においては、物理メモリが枯渇している場合に行われるページフォルト処理フローを主に説明する。図3は、本発明による、メモリ管理方法の第3の実施形態のフローチャートである。図3に示したように、本実施形態における方法は、以下のステップを含み得る。
【００７０】
ステップ301: メモリマネージャは、ページフォルト通知をオペレーティングシステムに送信する、ここで、ページフォルト通知は、仮想アドレスを搬送する。
【００７１】
メモリマネージャは、仮想アドレスのページフォルトタイプが既存のデータページフォルトであると判定すると、ページフォルト通知をオペレーティングシステムに送信する。
【００７２】
ステップ302: オペレーティングシステムは、メモリマネージャによって送信されたページフォルト通知を受信して、ページフォルト通知に従って、状態を保存する。
【００７３】
ステップ303: オペレーティングシステムは、仮想アドレスに従って空き位置を検索して、仮想アドレスに対応するページのデータの、空き位置にある、アドレスを検索する。
【００７４】
ステップ304: ブランクページがメモリに存在していない場合には、メモリマネージャは、置換対象のページを割り振り済みのページから選択する。
【００７５】
ステップ305: メモリマネージャは、ダーティデータが置換対象のページに存在するかどうかを判定する。
【００７６】
ダーティデータが置換対象のページに存在する場合にはステップ306を行う、または、ダーティデータが置換対象のページに存在していない場合にはステップ308から311を行う。
【００７７】
ステップ306: メモリマネージャは、置換対象のページのアドレス情報をオペレーティングシステムに送信する。
【００７８】
本実施形態においては、オペレーティングシステムがステップ302および303を行う場合には、メモリマネージャはステップ304と305とを並行して行ってもよい。
【００７９】
ステップ307: オペレーティングシステムは、置換対象のページの、メモリマネージャによって送信された、アドレス情報を受信して、置換対象のページのアドレス情報に従って置換対象のページのデータをメモリから空き位置へと移行する。
【００８０】
ステップ308: メモリマネージャは、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更する。
【００８１】
ステップ309: メモリマネージャは、TLBおよびメモリに対して仮想アドレスに対応するページテーブルエントリを更新する。
【００８２】
ステップ310: メモリマネージャは、仮想アドレスに対応するページが利用可能であることをオペレーティングシステムに通知する。
【００８３】
ステップ311: 仮想アドレスに対応するページのデータの、空き位置にある、アドレスに従って、オペレーティングシステムは、仮想アドレスに対応するページのデータを空き位置からメモリへと移行する。
【００８４】
本発明の第4の実施形態は、メモリ管理方法を提供する。本実施形態は、ダーティデータが置換対象のページに存在する場合にメモリマネージャが置換対象のページのアドレス情報に従って置換対象のページのデータをメモリから空き位置へと移行する点で、第3の実施形態と異なる。メモリマネージャおよびNVMがメモリコントローラに統合されている例を使用して本実施形態を説明する。本実施形態の前提条件は、ページフォルトが発生したとメモリマネージャが判定することである。ページフォルトを判定する方式に関する詳細については、第1の実施形態における説明を参照されたい、そのため、ここでは繰り返し説明することはしない。
【００８５】
図5は、本発明の実施形態による、メモリコントローラの概略構造図である。図5に示したように、メモリマネージャ、NVMアクセス機構、およびダイナミックランダムアクセスメモリ(Dynamic Random Access memory、略して、DRAM)アクセス機構は、メモリコントローラに統合されている。NVMアクセス機構およびDRAMアクセス機構の双方がメモリマネージャと通信し得る。NVMアクセス機構はメモリコントローラの制御下でNVMにアクセスし、DRAMアクセス機構はメモリコントローラの制御下でDRAMにアクセスする。図4は、本発明による、メモリ管理方法の第4の実施形態のフローチャートである。図4および図5を参照すれば、本実施形態において提供した方法は、以下のステップを含み得る。
【００８６】
ステップ401: メモリマネージャは、ページフォルト通知をオペレーティングシステムに送信する。
【００８７】
既存のデータページフォルトが発生したとメモリマネージャが判定した場合には、メモリマネージャは、ページフォルト通知に従って、オペレーティングシステムが状態を保存するように、ページフォルト通知をオペレーティングシステムに送信する。
【００８８】
ステップ402: ブランクページがメモリに存在していない場合には、メモリマネージャは、置換対象のページを割り振り済みのページから選択する。
【００８９】
ステップ403: メモリマネージャは、ダーティデータが置換対象のページに存在するかどうかを判定する。
【００９０】
ダーティデータが置換対象のページに存在していない場合にはステップ404を行う、または、ダーティデータが置換対象のページに存在する場合にはステップ405を行う。
【００９１】
ステップ404: メモリマネージャは、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更する。
【００９２】
ステップ407は、ステップ404を行った後に行われる。変更された置換対象のページは、仮想アドレスに対応するページである。
【００９３】
ステップ405: 置換対象のページのアドレス情報に従って、メモリマネージャは、置換対象のページのデータをDRAMからNVMに移行して、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更する。
【００９４】
変更された置換対象のページは、仮想アドレスに対応するページである。
【００９５】
特に、メモリマネージャは、NVMからNVMの空き領域を検索する。NVMの空き領域を見つけた後に、メモリマネージャは、置換対象のページのアドレス情報に従って、DRAMから置換対象のページのデータを検索するようにDRAMコントローラに命令する。置換対象のページのデータを見つけた後に、DRAMコントローラは、置換対象のページのデータをDRAMから取得して、置換対象のページのデータをNVMコントローラに送信し、NVMコントローラは、置換対象のページのデータをNVMの空き領域に書き込む。
【００９６】
ステップ406: メモリマネージャは、仮想アドレスに従って、NVMから仮想アドレスに対応するページのデータを検索して、仮想アドレスに対応するページのデータをNVMからDRAMへとコピーする。
【００９７】
メモリマネージャによってデータを不揮発性メモリから読み込む読み込み遅延は、データをディスクおよびFLASHから読み込む読み込み遅延よりかなり小さい、したがって、割り込み処理時間が低減され得る。
【００９８】
ステップ407: メモリマネージャは、メモリおよびTLBに対して仮想アドレスに対応するページテーブルエントリを更新する。
【００９９】
メモリマネージャが対応するページを仮想アドレスに割り振った後に、メモリマネージャは、割り込み処理の終了をオペレーティングシステムにフィードバックし、オペレーティングシステムは、状態の復旧を行うとともにページフォルトの発生前の状態にスタックアウトする。プロセスは、レディ状態に移行し、いつでもオペレーティングシステムにスケジューリングおよび実行され得る。
【０１００】
本実施形態における方法によれば、ページフォルトが発生した場合には、オペレーティングシステムは状態の保存のみを行い、対応するページを仮想アドレスに割り振る処理はメモリマネージャによって専ら完遂される、このことが、オペレーティングシステムの負荷を軽減している。オペレーティングシステムの割り込み処理プロセスにおいては、プロセッサは、プロセッサの使用量を改善する別の処理をさらに行ってもよい。
【０１０１】
前述した実施形態においては、メモリマネージャは、メモリコントローラに統合され得る、または、メッセージベースのメモリシステムのバッファスケジューラに統合され得ることに留意されたい。
【０１０２】
前述した実施形態においては、オペレーティングシステムは、メモリマネージャと通信する必要があり、メモリマネージャとプロセッサとの間に2つの経路を追加する必要がある。1つの経路は、要求経路であり、オペレーティングシステムがメモリアクセス要求をメモリマネージャに送信するために使用される、ここで、要求経路のアドレスバスのフォーマットは、プロセス番号に仮想アドレスを付加したものである。残りの経路は、インタラクション経路であり、オペレーティングシステムとメモリマネージャとの間の直接的な情報伝送のために使用される。オペレーティングシステムによってメモリマネージャにインタラクション経路を介して送信される情報は、プロセスのプロセス番号およびプロセスの仮想アドレス範囲を含み、オペレーティングシステムは、プロセスによって使用されているプロセッサコア、プロセスのプロパティ、物理メモリ割り振りポリシーなどに関する情報をメモリマネージャにさらに送信し得る。メモリマネージャによってオペレーティングシステムにインタラクション経路を介してフィードバックされる情報は、ページフォルト、越境割り込み、保護割り込み、ページ割り振りおよびページ置換情報などを含む。特に、オペレーティングシステムとメモリコントローラとの間の情報インタラクションプロセスを以下に説明する。
【０１０３】
図6は、オペレーティングシステムがプロセスを作成する際の作成についての概略フローチャートである。図6に示したように、ユーザがアプリケーションを開始した場合には、オペレーティングシステムは、アプリケーションのためのプロセスを作成し、仮想アドレス範囲をプロセスに割り振る。オペレーティングシステムがプロセスを作成することに成功した後に、オペレーティングシステムは、プロセス情報をメモリマネージャに送信する。プロセス情報は、プロセスのプロセス番号およびプロセスの仮想アドレス範囲を含む。プロセス情報を受信した後に、メモリマネージャは、プロセスのために対応するデータ構造を作成し、プロセス番号および仮想アドレス範囲を記憶する。
【０１０４】
オペレーティングシステムがプロセスを作成した際に送信される仮想アドレス範囲は、静的仮想アドレス範囲である。プロセスの仮想アドレス範囲が不十分である場合には、オペレーティングシステムは、動的仮想アドレス範囲をプロセスにさらに動的に割り振ってもよい。仮想アドレス範囲は、メモリアクセス要求において搬送されたプロセスの仮想アドレスが境界を越えているかどうかを判定するために使用される。プロセス番号は、メモリマネージャが、プロセス番号に従って、メモリからプロセスに対応するページを検索するために使用される。詳細な説明については、第1の実施形態における説明を参照してもよいため、ここでは繰り返し説明することはしない。
【０１０５】
システムがマルチコアシステムまたはメニーコアシステムである場合には、メモリマネージャがオペレーティングシステムと情報をやりとりする際に情報がプロセッサコアのIDに従ってプロセッサコアに送信されるように、オペレーティングシステムは、メモリマネージャに、プロセッサコアのIDなどの、プロセスによって使用されているプロセッサコアに関する情報を送信する必要がさらにある。プロセスを実行するプロセッサコアが変わる場合には、オペレーティングシステムは、変更後のプロセッサコアに関する情報をメモリマネージャにさらに送信する。
【０１０６】
図7は、オペレーティングシステムによるプロセスの終了の概略フローチャートである。図7に示したように、ユーザがプログラムを終了する場合には、Free関数が呼び出される。Free関数は、メモリ開放関数である。Free関数を受信した場合には、オペレーティングシステムは、メモリ開放命令をメモリマネージャに送信する。メモリ開放命令を受信した後に、メモリマネージャは、メモリ開放命令をパースし、その後、TLB、ページテーブル、および空きリストをメンテナンスし、プロセスの仮想アドレス領域を管理する。TLBおよびページテーブルをメンテナンスするということは、プロセスに対応する仮想アドレス範囲をTLBおよびページテーブルから削除する、すなわち、プロセスによって占有されている仮想アドレス領域を開放することを特に指す。空きリストをメンテナンスするということは、メモリマネージャがプロセスによって占有されている仮想アドレス領域を開放した後に、空きリストに対して仮想アドレス領域に対応するページを更新することを指す。
【０１０７】
プロセスが終了すると、オペレーティングシステムはメモリ開放命令をメモリマネージャに送信することだけが必要であり、以降のメモリ管理処理のすべてはメモリマネージャによって行われる。メモリマネージャが以降のメモリ管理処理を行う際に、オペレーティングシステムは、別のユーザプログラムを並行して動作してもよい。しかしながら、従来技術では、プロセスが終了すると、メモリ管理処理のすべては、オペレーティングシステムによって行われる。本実施形態における方法によれば、メモリ管理処理を行う際にユーザプログラムを並行して動作し得る、このことが、プロセッサの運用を改善することを可能にしている。
【０１０８】
本発明の実施形態によるメモリ管理方法のいくつか典型的な適用シナリオを以下に説明する。
【０１０９】
本発明の実施形態において提供したメモリ管理方法は、シングルコアプロセッサ、マルチコアプロセッサ、およびメニーコアプロセッサを含む、様々なプロセッサの設計に適用され得る。マルチコアプロセッサシステムおよびメニーコアプロセッサシステムにおいては、プロセッサは、ホモジニアスプロセッサであり得るしまたはヘテロジニアスプロセッサであり得る。図8は、メニーコアプロセッサシステムの概略構造図である。メニーコアプロセッサシステムは、マスタコア(Master Core)、複数のスレーブコア(Slave Core)、メモリコントローラ、周辺機器デバイス、およびメモリを備える。マスタコアは、バスを使用して、複数のスレーブコアに相互に接続されている。メモリマネージャは、メモリコントローラに統合されている。メモリマネージャは、メモリコントローラポート物理レイヤ(Memory Controller Port Physical Layer、略して、MC PHY)を使用して、メモリに接続されている。メモリマネージャは、チップ上のすべてのプロセッサコアの物理アドレス領域を一元管理し得る。マスタコアは、メモリマネージャと協調することによって、図中の経路(1)に沿ってプロセッサコア全体のメモリ領域を管理し得る。各スレーブコアは、メモリマネージャと協調することによって、図中の経路(2)に沿ってそのプライベートメモリ領域を管理し得る。
【０１１０】
加えて、仮想インデックス仮想タグキャッシュ技術を適用しているため、各プロセッサコアは、TLBおよびMMUをもはや必要としておらず、プロセッサコアの設計を大幅に簡素化している。加えて、物理アドレス領域のすべてのメモリ管理タスクはメモリマネージャによって行われる、このことが、各プロセッサコアにかかるオペレーティングシステムのメモリ管理タスク負荷を軽減するとともに、メニーコアプロセッサシステムのソフトウェア設計を大幅に簡素化している。
【０１１１】
本発明の実施形態において提供したメモリ管理方法はまた、メッセージベースのメモリシステムに適用され得る。図9は、メッセージベースのメモリシステムの概略構造図である。図9に示したように、メッセージベースのメモリコントローラをCPUに統合している。CPUは、メッセージチャネルを使用して、メッセージベースのメモリアクセス要求をバッファスケジューラに送信する、ここで、メッセージチャネルは高速シリアルバスを使用する。バッファスケジューラ内のメッセージパースユニットは、メッセージベースのメモリアクセス要求をパースし得るし、バッファスケジューラは、メモリチャネルを効率的に使用することができるように、多くのメッセージベースのメモリアクセス要求についてのスケジューリングおよびバッファリングを行う。複数のバッファスケジューラが、超大容量のメモリシステムを形成するために、メッセージチャネルを使用して、カスケード接続されている。各バッファスケジューラは、メモリシステムのメモリの一部を呼び出し得る。各バッファスケジューラによって呼び出されるメモリシステムの一部をメモリサブシステムと称する。
【０１１２】
本発明の各実施形態における方法を実施するために、メモリマネージャを各バッファスケジューラに統合してもよい。各バッファスケジューラは、そのメモリサブシステムを独立して管理し得る。したがって、メモリシステム全体の最も高い使用効率を保証するために、各バッファスケジューラは、その要件に従って、適切なメモリ管理方式を選択し得る。
【０１１３】
本発明の実施形態において提供したメモリ管理方法はまた、非均質メモリアクセス機構(Non-Uniform Memory Access Architecture、略して、NUMA)システムに適用され得る。図10は、NUMAシステムの概略構造図である。図10に示したように、NUMAシステムは、ノード0、ノード1、ノード2、およびノード3の4つのノードを含む。ノードは、NUMA相互接続モジュールを使用して接続されており、各ノードは、CPU、メモリコントローラ、メモリ、およびIOインターフェースを備える。各ノードのメモリコントローラは、ローカルインターフェースを使用してノードのメモリにアクセスすることができ、リモートインターフェースを使用して別のノードのメモリにさらにアクセスし得る。
【０１１４】
本発明の実施形態における方法を実施するために、メモリマネージャを各ノードのメモリコントローラに統合してもよい。各ノードのメモリマネージャは、ローカル物理アドレス領域を管理することを担当しており、リモートノードのメモリにアクセスすることができる。ローカルメモリマネージャがリモートメモリ領域にアクセスする必要がある場合には、ローカルメモリマネージャは、リモートインターフェースを使用して、メモリアクセス要求をリモートノードのメモリマネージャに送信する必要があり、リモートノードのメモリマネージャは、ページ割り振りなどの実際の管理タスクを行う。NUMAシステムにおいては、異なるノードのメモリマネージャ間で行われるインタラクションは、オペレーティングシステムに対して透過的である。本解決手法は、オペレーティングシステムの管理負荷を軽減するとともにNUMAシステムのメモリ管理効率を改善することができる。
【０１１５】
図11は、本発明の実施形態による、メモリマネージャの概略構造図である。メモリマネージャは、メモリコントローラに統合され得る、または、メッセージベースのメモリシステムのバッファスケジューラに統合され得る。図11に示したように、本実施形態におけるメモリマネージャは、受信モジュール51、検索モジュール52、判定モジュール53、ページ割り振りモジュール54、および更新モジュール55を備える。
【０１１６】
受信モジュール51は、メモリアクセス要求を受信するように構成される、ここで、メモリアクセス要求は、仮想アドレスを搬送し、オペレーティングシステムがプロセスを起動する場合には、仮想アドレスがオペレーティングシステムによってプロセスに割り振られる。
【０１１７】
検索モジュール52は、メモリアクセス要求において搬送された仮想アドレスに従って、トランスレーション・ルックアサイド・バッファTLBおよびメモリから仮想アドレスに対応するページテーブルエントリを検索するように構成される。
【０１１８】
検索モジュール52が、TLBおよびメモリにおいて、仮想アドレスに対応するページテーブルエントリを見つけられなかった場合には、判定モジュール53は、仮想アドレスのページフォルトタイプを判定するように構成される。
【０１１９】
ページ割り振りモジュール54は、仮想アドレスのページフォルトタイプがブランクページに起因するページフォルトである場合には、対応するページを仮想アドレスに割り振るように構成される、ここで、ブランクページに起因するページフォルトは、対応するページが仮想アドレスに割り振られていないことを意味している。
【０１２０】
更新モジュール55は、ページ割り振りモジュール54が対応するページを仮想アドレスに割り振った後に、メモリおよびTLBに対して仮想アドレスに対応するページテーブルエントリを更新するように構成される、ここで、ページテーブルエントリは、ページの仮想アドレスと物理アドレスとの間のマッピング関係を含む。
【０１２１】
必要に応じて、メモリアクセス要求は、プロセスのプロセス番号をさらに搬送し、検索モジュール52は、プロセス番号に従って、メモリからプロセスに対応するページを検索して、仮想アドレスに従って、プロセスに対応するページから仮想アドレスに対応するページテーブルエントリを検索するように構成される。
【０１２２】
ページ割り振りモジュール54は、ブランクページがメモリに存在する場合には、ブランクページを仮想アドレスに対応するページとして使用する、または、ブランクページがメモリに存在していない場合には、置換対象のページを割り振り済みのページから選択して、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するように特に構成される、ここで、変更された置換対象のページは、仮想アドレスに対応するページである。
【０１２３】
ブランクページがメモリに存在していない場合には、メモリマネージャが置換対象のページを選択した後に、ページ割り振りモジュール54は、ダーティデータが置換対象のページに存在するかどうかを判定し、ダーティデータが置換対象のページに存在していない場合には、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更する、または、ダーティデータが置換対象のページに存在する場合には、オペレーティングシステムが置換対象のページのアドレス情報に従って置換対象のページのデータをメモリから空き位置へと移行するように、置換対象のページのアドレス情報をオペレーティングシステムに送信して、オペレーティングシステムが置換対象のページのデータをメモリから空き位置へと移行した後に、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するように構成される。
【０１２４】
前述した方式においては、ダーティデータが置換対象のページに存在する場合には、オペレーティングシステムおよびメモリマネージャは、対応するページを仮想アドレスに割り振るために互いに連携する必要がある。別の方式においては、メモリマネージャは、オペレーティングシステムが関与することなく、対応するページを仮想アドレスに独立して割り振る。特に、ページ割り振りモジュールは、ダーティデータが置換対象のページに存在するかどうかを判定し、ダーティデータが置換対象のページに存在していない場合には、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更する、または、ダーティデータが置換対象のページに存在する場合には、置換対象のページのアドレス情報に従って、置換対象のページのデータをメモリから空き位置へと移行することであって、メモリマネージャおよび空き位置のアクセス機構は、同一のデバイスにあり、空き位置のアクセス機構は、メモリマネージャの制御下で空き位置にアクセスするために使用される、移行することを行い、置換対象のページのデータをメモリから空き位置へと移行した後に、置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するようにさらに構成される。後者の方式においては、置換対象のページのデータをメモリから空き位置へと移行する処理は、オペレーティングシステムが関与することなく、メモリマネージャによって行わる。
【０１２５】
本実施形態におけるメモリマネージャは、図1から図4に示した任意の実施形態における方法を実施するために使用されてもよく、具体的な実施様態および技術的効果は類似しているためここでは再び説明しない。
【０１２６】
図12は、本発明の実施形態による、別のメモリマネージャの概略構造図である。図12に示したように、図11に示した構造に基づいて、本実施形態におけるメモリマネージャは、仮想アドレスのページフォルトタイプが既存のデータページフォルトである場合には、オペレーティングシステムにページフォルトの発生を通知するように構成される、送信モジュール56であって、スワップに起因するページフォルトは、対応するページが仮想アドレスに割り振り済みであることを意味する、送信モジュール56をさらに含み、ページ割り振りモジュール54は、対応するページを仮想アドレスに割り振るようにさらに構成され、更新モジュール55は、メモリおよびTLB内の仮想アドレスに対応するページテーブルエントリを更新するようにさらに更新される、ここで、ページテーブルエントリは、ページの仮想アドレスと物理アドレスとの間のマッピング関係を含む。
【０１２７】
仮想アドレスのページフォルトタイプが既存のデータページフォルトであると判定モジュール53が判定した後に、メモリマネージャは、オペレーティングシステムにページフォルトの発生を通知し、オペレーティングシステムは、状態を保存してページフォルト処理フローを開始する。ページフォルトが発生した後に、メモリマネージャは、対応するページを仮想アドレスに割り振る。ページ割り振りフローは、ブランクページに起因するページフォルトが発生した際に行われるページ割り振りフローと基本的に同一であるが、ページフォルトが発生した場合には、オペレーティングシステムは、メモリマネージャが、仮想アドレスに対応するページのデータを空き位置からさらに取得して、データをメモリに返す場合にのみ、仮想アドレスに対応するページのデータを呼び出すことができるという点で異なる。
【０１２８】
システムがマルチコアシステムまたはメニーコアシステムである場合には、プロセスを実行するプロセッサコアが変わる場合には、オペレーティングシステムは、変更後のプロセッサコアに関する情報をメモリマネージャにさらに送信する。受信モジュール51は、オペレーティングシステムによって送信された変更後のプロセッサコアに関する情報を受信するようにさらに構成される。
【０１２９】
オペレーティングシステムがプロセスを終了した場合には、受信モジュール51は、オペレーティングシステムによって送信されたメモリ開放命令を受信するようにさらに構成される、ここで、メモリ開放命令は、メモリを開放するようにメモリマネージャに命令するために使用され、それに対応して、メモリマネージャは、メモリ開放命令に従って、プロセスによって占有されているメモリ領域を開放するように構成される、メモリ開放モジュール57をさらに含む。
【０１３０】
本実施形態における装置は、図1から図4中の方法の実施形態における技術的解決手法を実施するために使用されてもよく、その実施原理および技術的効果は類似しているためここでは再び説明しない。
【０１３１】
図13は、本発明の実施形態による、メモリ管理を実施するための装置の概略構造図である。図13に示したように、本実施形態において提供したメモリ管理を実施するための装置600は、プロセッサ61、メモリ62、およびシステムバス63を備える。システムバス63は、プロセッサ61とメモリ62とを接続するとともに相互通信を実施するために使用される。メモリ62は、コンピュータ実行可能命令621を記憶するように構成される。プロセッサ61は、コンピュータ実行可能命令621を実行して図1から図4に示した任意の実施形態における方法を実施するように構成され、その実施原理および技術的効果は類似しているためここでは再び説明しない。
【０１３２】
図14は、本発明の実施形態による、コンピュータの概略構造図である。図14に示したように、本実施形態において提供したコンピュータ700は、プロセッサ71、メモリ72、およびシステムバス73を備える。システムバス73は、プロセッサ71とメモリ72とを接続するとともに相互通信を実施するために使用される。メモリ72は、コンピュータ実行可能命令721を記憶するように構成される。プロセッサ71は、コンピュータ実行可能命令721を実行して、
置換対象のページについてのものであるとともにメモリマネージャによって送信されたアドレス情報を受信して、置換対象のページのアドレス情報に従って置換対象のページのデータをメモリから空き位置へと移行することであって、ダーティデータがメモリアクセス要求において搬送された仮想アドレスのために選択された置換対象のページに存在する場合には、置換対象のページのアドレス情報がメモリマネージャによって送信される、移行することを行い、置換対象のページのデータをメモリから空き位置へと移行した後に、メモリマネージャが置換対象のページの仮想アドレスをメモリアクセス要求において搬送された仮想アドレスに変更するように、置換対象のページが利用可能であることをメモリマネージャに通知する、方法を行うように構成される。
【０１３３】
ページフォルトが発生した場合には、プロセッサ71は、メモリマネージャによって送信されたページフォルト通知を受信して、ページフォルト通知に従って、状態を保存するようにさらに構成される、ここで、仮想アドレスのページフォルトタイプが既存のデータページフォルトであるとメモリマネージャが判定すると、ページフォルト通知が送信される。
【０１３４】
当業者は、方法の実施形態のステップのすべてまたは一部が関連ハードウェアに命令するプログラムによって実施され得ることを理解されよう。プログラムは、コンピュータ可読記憶媒体に記憶され得る。プログラムが動作する場合には、方法の実施形態のステップを行う。前述した記憶媒体は、ROM、RAM、磁気ディスク、または光ディスクなどの、プログラムコードを記憶することができる、任意の媒体を含む。
【０１３５】
最後に、前述した実施形態は、本発明の技術的解決手法を説明することを意図したものにすぎず、本発明を限定することを意図したものではないことに留意されたい。本発明を前述した実施形態を参照して詳細に説明しているが、当業者は、本発明の実施形態の技術的解決手法の範囲を逸脱しない限り、前述した実施形態において説明した技術的解決手法に対して修正をさらに行い得る、または、その技術的特徴の一部もしくはすべてに対して均等物との置換をさらに行い得ることを理解すべきである。
【符号の説明】
【０１３６】
51  受信モジュール
52  検索モジュール
53  判定モジュール
54  ページ割り振りモジュール
55  更新モジュール
56  送信モジュール
57  メモリ開放モジュール
600  装置
61  プロセッサ
62  メモリ
63  システムバス
621  コンピュータ実行可能命令
700  コンピュータ
71  プロセッサ
72  メモリ
73  システムバス
721  コンピュータ実行可能命令
【図１】
0006314355.tif 000002
【図２】
0006314355.tif 000003
【図３】
0006314355.tif 000004
【図４】
0006314355.tif 000005
【図５】
0006314355.tif 000006
【図６】
0006314355.tif 000007
【図７】
0006314355.tif 000008
【図８】
0006314355.tif 000009
【図９】
0006314355.tif 000010
【図１０】
0006314355.tif 000011
【図１１】
0006314355.tif 000012
【図１２】
0006314355.tif 000013
【図１３】
0006314355.tif 000014
【図１４】
0006314355.tif 000015