(57)【要約】【課題】  メモリを管理する方法及びその装置を提供する。【解決手段】  第１データの保存要請が受信されると、ページプールに基づいて、第１データに対応するデスティネーションページを割り当て、割り当てられたデスティネーションページに係わる情報に基づいて、ページテーブルを更新するプロセスを含む、メモリを管理する方法である。【選択図】      図３
2018085098.tif 000002
【特許請求の範囲】
【請求項１】
メモリを構成する複数のページを整列させることにより、ページプールを生成する段階と、
第１データの保存要請が受信されると、前記ページプールに基づいて、前記第１データに対応するデスティネーションページを割り当てる段階と、
前記割り当てられたデスティネーションページに係わる情報に基づいて、ページテーブルを更新する段階と、を含むことを特徴とするメモリを管理する方法。
【請求項２】
前記デスティネーションページは、前記メモリに保存された前記第１データがコピーされるページを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記割り当てる段階は、前記デスティネーションページと、前記第１データが保存されたページとが同一ランクに含まれるように、前記デスティネーションページを割り当てることを特徴とする請求項１または２に記載の方法。
【請求項４】
前記割り当てる段階は、前記デスティネーションページと、前記第１データが保存されたページとが同一チャネルに含まれるように、前記デスティネーションページを割り当てることを特徴とする請求項１または２に記載の方法。
【請求項５】
前記生成する段階は、前記複数のページを、前記メモリに含まれたランク別に整列することにより、前記ページプールを生成することを特徴とする請求項１乃至４の何れか一項に記載の方法。
【請求項６】
前記更新する段階は、前記デスティネーションページに対応する物理アドレスを、連続した論理アドレスにマッピングすることにより、前記ページテーブルを更新することを特徴とする請求項１乃至５の何れか一項に記載の方法。
【請求項７】
前記メモリにおいて、前記第１データが占める空間を除いた残りの空間に基づいて、チャンクプールを生成する段階をさらに含むことを特徴とする請求項１乃至６の何れか一項に記載の方法。
【請求項８】
第２データの保存要請が受信されると、前記チャンクプールに基づいて、前記第２データに対応するデスティネーションチャンクを割り当てる段階をさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記デスティネーションチャンクを割り当てる段階は、前記デスティネーションチャンクと、前記第２データが保存されたチャンクとが同一ランクに含まれるように、前記デスティネーションチャンクを割り当てることを特徴とする請求項８に記載の方法。
【請求項１０】
前記第２データは、前記ページに対応する保存空間より小さい保存空間を占めるデータを含むことを特徴とする請求項８または９に記載の方法。
【請求項１１】
前記メモリは、ＤＲＡＭを含むことを特徴とする請求項１乃至１０の何れか一項に記載の方法。
【請求項１２】
請求項１乃至１１の何れか一項に記載の方法をコンピュータで実行させるためのプログラムを記録したコンピュータ読み取り可能記録媒体。
【請求項１３】
メモリを構成する複数のページを整列させることにより、ページプールを生成し、第１データの保存要請が受信されると、前記ページプールに基づいて、前記第１データに対応するデスティネーションページを割り当て、前記割り当てられたデスティネーションページに係わる情報に基づいて、ページテーブルを更新する制御部を含むことを特徴とするメモリを管理する装置。
【請求項１４】
前記デスティネーションページは、前記メモリに保存された前記第１データがコピーされるページを含むことを特徴とする請求項１３に記載の装置。
【請求項１５】
前記制御部は、前記デスティネーションページと、前記第１データが保存されたページとが同一ランクに含まれるように、前記デスティネーションページを割り当てることを特徴とする請求項１３または１４に記載の装置。
【請求項１６】
前記制御部は、前記デスティネーションページと、前記第１データが保存されたページとが同一チャネルに含まれるように、前記デスティネーションページを割り当てることを特徴とする請求項１３または１４に記載の装置。
【請求項１７】
前記制御部は、前記複数のページを、前記メモリに含まれたランク別に整列することにより、前記ページプールを生成することを特徴とする請求項１３乃至１６の何れか一項に記載の装置。
【請求項１８】
前記制御部は、前記デスティネーションページに対応する物理アドレスを、連続した論理アドレスにマッピングすることにより、前記ページテーブルを更新することを特徴とする請求項１３乃至１７の何れか一項に記載の装置。
【請求項１９】
前記制御部は、前記メモリにおいて、前記第１データが占める空間を除いた残りの空間に基づいて、チャンクプールを生成することを特徴とする請求項１３乃至１８の何れか一項に記載の装置。
【請求項２０】
前記制御部は、第２データの保存要請が受信されると、前記チャンクプールに基づいて、前記第２データに対応するデスティネーションチャンクを割り当てることを特徴とする請求項１９に記載の装置。
【請求項２１】
前記制御部は、前記デスティネーションチャンクと、前記第２データが保存されたチャンクとが同一ランクに含まれるように、前記デスティネーションチャンクを割り当てることを特徴とする請求項２０に記載の装置。
【請求項２２】
前記第２データは、前記ページに対応する保存空間より小さい保存空間を占めるデータを含むことを特徴とする請求項２０または２１に記載の装置。
【請求項２３】
前記メモリを管理する装置は、ＤＲＡＭに含まれることを特徴とする請求項１３乃至２２の何れか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリを管理する方法及びその装置に関する。
【背景技術】
【０００２】
最近、アプリケーションプログラムが、データ処理システムの高い性能を要求するにつれ、メモリのレイテンシ（latency）オーバーヘッドを避けることができるin  memory  data  copy方法が多様に活用されている。
【０００３】
In  ＤＲＡＭ（dynamic  random  access  memory）  datacopyは、ＤＲＡＭメモリの一領域から他の領域にデータをコピーするプロセスを意味する。一方、ＤＲＡＭの一領域から他の領域にデータをコピーするとき、中央処理装置（ＣＰＵ）がデータのコピープロセスに関与する場合、ＤＲＡＭ性能が低下するという問題点が発生してしまう。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、メモリを管理する方法及びその装置を提供するところにある。また、前記方法をコンピュータで実行させるためのプログラムを記録した、コンピュータ読み取り可能記録媒体を提供するところにある。当該解決しようとする技術的課題は、前述のような技術的課題に限定されるものではなく、他の技術的課題も存在しうる。
【課題を解決するための手段】
【０００５】
一態様による、メモリを管理する方法は、メモリを構成する複数のページ（page）を整列させることによりページプール（page  pool）を生成する段階と、第１データの保存要請が受信されると、前記ページプールに基づいて、前記第１データに対応するデスティネーション（destination）ページを割り当てる段階と、前記割り当てられたデスティネーションページに係わる情報に基づいて、ページテーブル（page  table）を更新する段階と、を含む。
【０００６】
他の一態様によるコンピュータ読み取り可能記録媒体は、前述の方法をコンピュータで実行させるためのプログラムを記録した記録媒体を含む。
【０００７】
さらに他の一態様によるメモリを管理する装置は、メモリを構成する複数のページを整列させることにより、ページプールを生成し、第１データの保存要請が受信されると、前記ページプールに基づいて、前記第１データに対応するデスティネーション（destination）ページを割り当て、前記割り当てられたデスティネーションページに係わる情報に基づいて、ページテーブルを更新する制御部；を含む。
【発明の効果】
【０００８】
本発明によれば、中央処理装置（ＣＰＵ）の関与なしに、メモリに保存されたデータをメモリの他の空間にコピーすることができるために、メモリ内でデータがコピーされるプロセスの効率が向上する。
【図面の簡単な説明】
【０００９】
【図１】一実施形態によるデータ処理システムの一例を図示した構成図である。
【図２】一実施形態による、データがコピーされる一例について説明するための図である。
【図３】一実施形態による、メモリを管理する方法の一例を示すフローチャートである。
【図４】一実施形態によるメモリの一例について説明するための構成図である。
【図５】一実施形態による、制御部がページを整列させる一例について説明するための図である。
【図６】一実施形態によるページプールの一例を示す図である。
【図７】制御部がページテーブルを更新する一例について説明するための図である。
【図８】一実施形態による、メモリを管理する方法の他の例を示すフローチャートである。
【図９】一実施形態による、メモリを管理する方法のさらに他の例を示すフローチャートである。
【図１０】一実施形態による、制御部がチャンクプールを生成する一例について説明するための図である。
【図１１】一実施形態によるチャンクプールの一例を示す図である。
【図１２】一実施形態による、メモリを管理する方法が遂行されるためのＡＰＩ（application  programming  interface）の一例を示す図である。
【図１３Ａ】一実施形態による、メモリを管理する装置が配置された例を示した図である。
【図１３Ｂ】一実施形態による、メモリを管理する装置が配置された例を示した図である。
【発明を実施するための形態】
【００１０】
本実施形態で使用される用語は、本発明での機能を考慮しながら、可能な限り現在汎用される一般的な用語を選択したが、それは、当分野の当業者の意図、判例、または新たな技術の出現などによっても異なる。また、特定の場合、出願人が任意に選定した用語もあり、その場合、当該発明の説明部分で、詳細にその意味を記載する。従って、本発明で使用される用語は、単純な用語の名称ではなく、その用語が有する意味と、本発明の全般にわたる内容とを基に定義されなければならない。
【００１１】
明細書全体において、ある部分がある構成要素を「含む」するとするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。また、明細書に記載された「…部」、「…モジュール」のような用語は、少なくとも１つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアによって具現されるか、あるいはハードウェアとソフトウェアとの結合によっても具現される。
【００１２】
以下、添付した図面を参照し、本発明の実施形態について、本発明が属する技術分野で当業者が容易に実施することができるように詳細に説明する。しかし、本発明は、さまざまに異なる形態に具現され、ここで説明する実施形態に限定されるものではない。
【００１３】
以下、図面を参照し、本発明の実施形態について詳細に説明する。
【００１４】
図１は、一実施形態によるデータ処理システムの一例を図示した構成図である。図１を参照すれば、データ処理システム１は、中央処理装置（ＣＰＵ）１０及びメモリ３０を含む。また、データ処理システム１は、グラフィック処理装置（ＧＰＵ）２０をさらに含んでもよい。
【００１５】
中央処理装置（ＣＰＵ）１０は、外部から情報を入力され、コンピュータプログラムの命令語を解釈して演算し、演算結果を外部に出力する。例えば、中央処理装置（ＣＰＵ）１０は、機械語で構成されたコンピュータプログラムの命令語を解釈して実行することができる。中央処理装置（ＣＰＵ）１０は、データ処理システム１と情報を交換することにより、データ処理システム１の全体動作を制御することができる。
【００１６】
一方、データ処理システム１がグラフィック処理装置（ＧＰＵ）２０を含む場合、中央処理装置（ＣＰＵ）１０は、経路データ（path  data）を利用して、グラフィック処理装置（ＧＰＵ）２０に伝送されるドローコール（draw  call）を生成する。ここで、該経路は、レンダリングの対象であるオブジェクトを構成する要素（element）を意味する。言い換えれば、該オブジェクトは、少なくとも１以上の経路が連結されて形成された閉多角形（closed  polygon）または閉経路（closed  path）を含んでもよい。例えば、該経路は、ライン（line）またはカーブ（curve）が該当する。
【００１７】
グラフィック処理装置（ＧＰＵ）２０は、ドローコールを受信し、メモリ３０に保存されたプリミティブデータを利用して、経路レンダリングを行う。言い換えれば、グラフィック処理装置（ＧＰＵ）２０は、プリミティブデータを利用して、フレームに含まれたピクセルそれぞれのカラー値を演算することができる。ここで、該フレームは、画面に表示されるイメージに対応する概念であり、該フレームに含まれたピクセルそれぞれにカラーが設定されることにより、１つのイメージが構成される。
【００１８】
例えば、グラフィック処理装置（ＧＰＵ）２０は、バーテックスシェーダ（vertex  shader）、ラスタライザ（rasterizer）、フラグメントシェーダ（fragment  shader）、ピクセルシェーダ（pixel  shader）及びフレームバッファ（frame  buffer）を含んでもよい。該プリミティブは、レンダリングに利用されるエレメントを意味する。ある場合には、経路が分割された結果がプリミティブにもなり、またある場合には、経路とプリミティブとが同一対象を指すこともある。
【００１９】
メモリ３０は、中央処理装置（ＣＰＵ）１０及びグラフィック処理装置（ＧＰＵ）２０の動作に必要な情報またはデータを保存し、中央処理装置（ＣＰＵ）１０及びグラフィック処理装置（ＧＰＵ）２０がデータを処理した結果を保存する。例えば、メモリ３０は、ＤＲＡＭ（dynamic  random  access  memory）でもある。
【００２０】
一方、メモリ３０に保存されたデータは、メモリ３０の他の領域にもコピーされる。言い換えれば、データはまた、メモリ３０のソース（source）領域からメモリ３０のデスティネーション（destination）領域にコピーされる。
【００２１】
以下、図２を参照し、データがメモリ３０のソース領域からデスティネーション領域にコピーされる一例について説明する。
【００２２】
図２は、一実施形態による、データがコピーされる一例について説明するための図である。図２を参照すれば、データ処理システム２は、中央処理装置（ＣＰＵ）１０、複数のグラフィック処理装置（ＧＰＵ）（第１グラフィック処理装置２１、第２グラフィック処理装置２２）及びメモリ３０を含む。図２には、グラフィック処理装置（ＧＰＵ）（第１グラフィック処理装置２１、第２グラフィック処理装置２２）が２個であるように図示されているが、それに限定されるものではない。
【００２３】
メモリ３０は、中央処理装置（ＣＰＵ）１０及びグラフィック処理装置（ＧＰＵ）（第１グラフィック処理装置（ＧＰＵ）２１、第２グラフィック処理装置（ＧＰＵ）２２）と連結され、データを保存する。このとき、メモリ３０は、複数の領域（第１領域３１、第２領域３２、第３領域３３）に区分され、中央処理装置（ＣＰＵ）１０及びグラフィック処理装置（ＧＰＵ）（第１グラフィック処理装置（ＧＰＵ）２１、第２グラフィック処理装置（ＧＰＵ）２２）には、該領域（第１領域３１、第２領域３２、第３領域３３）のうち少なくとも一つが割り当てられる。例えば、中央処理装置（ＣＰＵ）１０には、第１領域３１が割り当てられ、第１グラフィック処理装置（ＧＰＵ）２１には、第２領域３２が割り当てられ、第２グラフィック処理装置（ＧＰＵ）２２には、第３領域３３が割り当てられる。従って、中央処理装置（ＣＰＵ）１０の動作に必要な情報またはデータ、及び中央処理装置（ＣＰＵ）１０の演算結果は、第１領域３１に保存されることができる。
【００２４】
もし第１グラフィック処理装置（ＧＰＵ）２１が中央処理装置（ＣＰＵ）１０の演算結果を利用して動作すると仮定すれば、第１領域３１（すなわち、ソース領域）に保存されたデータは、第２領域３２（すなわち、デスティネーション領域）にコピーされなければならない。第１グラフィック処理装置（ＧＰＵ）２１に割り当てられた領域は、第２領域３２であるために、第１グラフィック処理装置（ＧＰＵ）２１は、第１領域３１に保存されたデータにアクセスすることができないからである。従って、データ処理システム２に含まれた装置（中央処理装置（ＣＰＵ）１０、第１グラフィック処理装置（ＧＰＵ）２１、第２グラフィック処理装置（ＧＰＵ）２２）が動作することにより、メモリ３０は、ソース領域に保存されたデータをデスティネーション領域にコピーするプロセスを遂行することができる。
【００２５】
再び図１を参照すれば、中央処理装置（ＣＰＵ）１０は、データがソース領域からデスティネーション領域にコピーされるプロセスに介入することができる。例えば、中央処理装置（ＣＰＵ）１０は、ソース領域に保存されたデータを読み取った後、読み取られたデータをデスティネーション領域に記録することができる。このとき、中央処理装置（ＣＰＵ）１０とメモリ３０との間のチャネル（channel）の帯域幅（bandwidth）及びレイテンシ（latency）によって、メモリ３０の性能が低くなってしまう。
【００２６】
一実施形態による、メモリを管理する装置は、データのデスティネーション領域がソース領域と同一メモリモジュールになるように、デスティネーション領域を割り当てることができる。例えば、メモリを管理する装置は、ソース領域とデスティネーション領域とが同じチャネルであり、同じランク（rank）になるようにデスティネーション領域を割り当てることができる。ここで、該ソース領域と該デスティネーション領域は、メモリ３０を構成するページ（page）またはチャンク（chunk）でもあるが、それらに限定されるものではない。従って、メモリを管理する装置（apparatus  for  managing  memory）の動作により、メモリ３０の性能が高くなる。
【００２７】
例えば、メモリを管理する装置は、メモリ３０に含まれ、データ処理システム１内に独立した装置として含まれてもよい。また、メモリを管理する装置は、制御部を含み、該制御部がメモリを管理する装置の全体動作を制御することができる。以下では、説明の便宜のために、メモリを管理する装置の制御部が、一実施形態によるメモリを管理する方法を遂行するとして説明する。
【００２８】
図３は、一実施形態によるメモリを管理する方法の一例を示すフローチャートである。
【００２９】
３１０段階において、該制御部は、メモリを構成する複数のページを整列させることにより、ページプール（page  pool）を生成する。例えば、該制御部は、複数のページをランク別に整列することにより、ページプールを生成することができる。ここで、該メモリは、ＤＲＡＭでもあるが、それに限定されるものではない。
該メモリは、複数のランクを含んでもよく、１つのランクには、複数のページが含まれてもよい。該制御部は、メモリに含まれた複数のページそれぞれをランク別に整列させることができる。
【００３０】
以下、図４を参照し、該メモリの構造について説明する。
【００３１】
図４は、一実施形態によるメモリの一例について説明するための構成図である。図４には、メモリ３０の構造の一例が図示されている。メモリ３０は、バンク（bank）４１０が複数個連結されて構成され、１つのバンク４１０には、ランク（rank）４２０が複数個含まれてもよい。例えば、バンク４１０が１２８ＭＢ（mega-byte）の容量を有するモジュールであると仮定すれば、バンク４１０には、１６，３８４＊１，０２４byteの容量を有するランク４２０が８個含まれてもよい。
【００３２】
１つのランク４２０は、複数の行（row）、及び複数の列（column）を含む行列（matrix）構造によって表現される。従って、バンク４１０には、複数のランク４２０の行にデータを書き込んだり読み取ったりするロウデコーダ（row  decoder）、及び複数のランク４２０の列にデータを書き込んだり読み取ったりするカラムデコーダ（column  decoder）が連結される。
【００３３】
バンク４１０に含まれた複数のランク４２０それぞれにおいて、同一行または同一列は、ページ４３０を意味する。例えば、バンク４１０には、１６，３８４＊１，０２４byteの容量を有するランク４２０が８個含まれると仮定すれば、ページ４３０は、１ＫＢ（kilo−byte）の保存容量を有することができる。
【００３４】
メモリ３０内でのデータのコピーは、ページ４３０単位で行われる。従って、制御部は、メモリ３０を構成する複数のページ４３０を整列させ、ページプールを生成することができる。また、メモリ３０内でのデータのコピーは、ページ４３０より小さいチャンク単位でも行われる。従って、該制御部は、メモリ３０を構成するチャンクを整列させ、チャンクプールを生成することもできる。
【００３５】
以下、図５及び図６を参照し、該制御部がページ４３０を整列させ、ページプールを生成する例について説明する。
【００３６】
図５は、一実施形態による、該制御部がページを整列させる一例について説明するための図である。図５には、中央処理装置（ＣＰＵ）１０と、複数のチャネル５１１，５１２に連結されたメモリ３０との一例が図示されている。ここで、チャネル５１１，５１２それぞれは、中央処理装置（ＣＰＵ）１０とメモリ３０との間でデータが送受信される経路を意味する。
【００３７】
チャネル５１１，５１２それぞれには、複数のランク５２１，５２２，５２３，５２４が連結される。例えば、チャネル０  ５１１には、Ｎ個のランク５２１，５２２が連結され、チャネルＮ  ５１２にも、Ｎ個のランク５２３，５２４が連結される。
【００３８】
もしソース領域がランク５２１であり、デスティネーション領域がランク５２２であると仮定すれば、データは、ランク５２１から読み取られ、チャネル５１１を介して、ランク５２２に記録されなければならない。従って、データがコピーされるために、チャネル５１１が介入されなければならないために、メモリ３０の性能が低くなってしまう。
【００３９】
また、ソース領域がランク５２１であり、デスティネーション領域がランク５２３であると仮定すれば、データは、ランク５２１から読み取られ、チャネル５１１，５１２及び中央処理装置（ＣＰＵ）１０を介して、ランク５２３に記録されなければならない。従って、データがコピーされるために、チャネル５１１，５１２及び中央処理装置（ＣＰＵ）１０が介入されなければならないために、メモリ３０の性能が低くなってしまう。
【００４０】
もしソース領域とデスティネーション領域とが同一ランク５２１であると仮定すれば、データは、短時間内に効率的にコピーされる。例えば、ソース領域とデスティネーション領域とが、いずれもランク５２１内のページである場合、該データは、短時間内に効率的にコピーされる。従って、データのソース領域とデスティネーション領域とが同一ランク５２１内のページに割り当てられれば、その後、データがコピーされるプロセスにおいて発生する電力消費量が節減され、データコピーにかかる時間が短縮される。
【００４１】
該制御部は、メモリ３０に含まれた複数のページをランク５２１，５２２，５２３，５２４別に整列させ、ページプールを生成する。そして、該制御部は、データの保存要請が受信されると、データが保存されるソースページと、データがコピーされるデスティネーションページとが同一ランク５２１に含まれるように、デスティネーションページを割り当てることができる。
【００４２】
図６は、一実施形態によるページプールの一例を示す図である。図６には、ページプール６１０の一例が図示されている。例えば、ページプール６１０は、ページ６４１ないし６４８をランク６２０，６３０別に整列したテーブルでもある。
【００４３】
例えば、該制御部は、ページ６４１ないし６４４が同一ランク６２０に含まれているということを識別し、ページ６４１ないし６４４をランク６２０に対応するようにグルーピングする。かような方式で、該制御部は、ページ６４５ないし６４８をランク６３０に対応するようにグルーピングすることができる。
【００４４】
該制御部がページプール６１０を生成することにより、該制御部は、データのソースページとデスティネーションページとが同一ランク６２０に含まれるように、デスティネーションページを割り当てることができる。
【００４５】
再び図３を参照すれば、３２０段階において、該制御部は、第１データの保存要請が受信されると、ページプールに基づいて、第１データに対応するデスティネーションページを割り当てる。ここで、該第１データは、ページの容量と対応する大きさのデータでもあるが、それに限定されるものではない。
【００４６】
一例として、該制御部は、デスティネーションページと第１データが保存されたページ（すなわち、ソースページ）とが同一ランクに含まれるように、デスティネーションページを割り当てることができる。他の例として、該制御部は、デスティネーションページとソースページとが同一ランク及び同一チャネルに含まれるように、デスティネーションページを割り当てることもできる。
【００４７】
第１データの保存要請が受信されると、該制御部は、ページプールを確認し、第１データが保存されるページを検索する。一例として、該制御部は、ページプールに含まれたページのうち、第１データのソースページとデスティネーションページとが同一ランクに含まれるページを検索することができる。他の例として、該制御部は、ページプールに含まれたページのうち、第１データのソースページとデスティネーションページとが、同一ランク及び同一チャネルに含まれるページを検索することもできる。そして、該制御部は、検索されたページを、第１データのデスティネーションページに割り当てる。
【００４８】
３３０段階において、該制御部は、割り当てられたデスティネーションページに係わる情報に基づいて、ページテーブル（page  table）を更新する。ここで、該ページテーブルは、ページの論理アドレス（logical  address）と物理アドレス（physical  address）をマッピングしたテーブルを意味する。例えば、該制御部は、デスティネーションページに対応する物理アドレスを、連続した論理アドレスにマッピングすることにより、ページテーブルを更新することができる。
【００４９】
該制御部は、アドレス空間（address  space）にデータコピー領域（以下、「ＩＤＤＣ領域」とする）をあらかじめ割り当てておく。ここで、該アドレス空間は、メモリ３０（または、メモリ３０のページ）の論理アドレスが記録された空間を意味する。例えば、中央処理装置（ＣＰＵ）１０（または、グラフィック処理装置（ＧＰＵ）２０）は、アドレス空間に記載された論理アドレスを参照し、データがメモリ３０のいずれの位置に保存されているかということを確認することができる。
【００５０】
一方、アドレス空間に記載された論理アドレスと、メモリ３０（または、メモリ３０のページ）の物理アドレスは、互いに異なっていてもよい。従って、中央処理装置（ＣＰＵ）１０（または、グラフィック処理装置（ＧＰＵ）２０）は、アドレス空間に記載された論理アドレスと、ページテーブルとを参照し、該データがメモリ３０のいずれの位置に保存されているかということを確認することができる。
【００５１】
以下、図７を参照し、該制御部がページテーブルを更新する一例について説明する。
【００５２】
図７は、該制御部がページテーブルを更新する一例について説明するための図である。図７には、ＩＤＤＣ領域７２０を含むアドレス空間７１０の一例、及びページ７３０にランクが割り当てられた一例が図示されている。
【００５３】
ページ７３０は、少なくとも１つのランクに割り当てられた部分が組み合わされて構成される。言い換えれば、ページ７３０を構成する部分それぞれは、ランクに割り当てられ、ランクの種類は、多様である。例えば、ページ７３０の一部は、「Rank  ０」に含まれてもよく、ページ７３０の残りは、「Rank  １」に含まれてもよい。また、ページ７３０の部分それぞれには、物理アドレスが設定される。
【００５４】
アドレス空間７１０は、システムの設定が記録される空間、及びユーザの設定が記録される空間に区分される。該制御部は、システムの設定が記録される空間に、ＩＤＤＣ領域７２０を割り当てることができる。ＩＤＤＣ領域７２０には、ページ７３０の部分それぞれの論理アドレスが記録される。
【００５５】
物理アドレスと論理アドレスは、互いに異なっていてもよい。従って、該制御部は、ページ７３０の同一部分に係わる物理アドレスと論理アドレスとをマッピングするページテーブルを生成し、デスティネーションページが割り当てられることにより、ページテーブルを更新する。
【００５６】
例えば、該制御部は、メモリをページ単位に分割し、ソースページと同一ランクを有する余裕ページをデスティネーションページに割り当てることができる。そして、該制御部は、デスティネーションページの物理アドレスと論理アドレスとをマッピングすることにより、ページテーブルを更新することができる。
【００５７】
図８は、一実施形態による、メモリを管理する方法の他の例を示すフローチャートである。図８に図示された、メモリを管理する方法は、図１ないし図７を参照して説明した制御部によって遂行する段階によっても構成される。従って、以下で省略された内容であるとしても、図１ないし図７を参照して説明した内容は、図８のメモリを管理する方法にも適用されるということが分かる。
【００５８】
８１０段階において、該制御部は、メモリをページ単位に分割する。具体的には、該制御部は、メモリを複数のページに分割し、分割されたページを整列させることにより、ページプールを生成する。例えば、該制御部は、複数のページをランク別に整列させることにより、ページプールを生成することができる。
【００５９】
８２０段階において、該制御部は、デスティネーションページを、ソースページと同一ランクであるページに割り当てる。一例として、該制御部は、デスティネーションページと、第１データが保存されたページ（すなわち、ソースページ）とが同一ランクに含まれるように、デスティネーションページを割り当てることができる。他の例として、該制御部は、デスティネーションページとソースページとが同一ランク及び同一チャネルに含まれるように、デスティネーションページを割り当てることもできる。
【００６０】
８３０段階において、該制御部は、ページテーブルを更新する。例えば、該制御部は、デスティネーションページに対応する物理アドレスを、連続した論理アドレスにマッピングすることにより、ページテーブルを更新することができる。
【００６１】
そして、該制御部は、８２０段階及び８３０段階を、全てのソースページそれぞれに対して遂行する。言い換えれば、データ保存要請が受信されるたびに、該制御部は、８２０段階及び８３０段階を反復的に遂行する。
【００６２】
一方、保存要請が受信されたデータの大きさは、ページより小さいチャンク単位でもある。従って、該制御部は、メモリ３０を構成するチャンクを整列させ、チャンクプールを生成することもできる。そして、該制御部は、チャンクプールに基づいて、保存要請が受信されたデータのデスティネーションチャンクを割り当てることができる。
【００６３】
以下、図９ないし図１１を参照し、該制御部がチャンクプールを生成し、デスティネーションチャンクを割り当てる一例について説明する。
【００６４】
図９は、一実施形態による、メモリを管理する方法のさらに他の例を示すフローチャートである。図９に図示された、メモリを管理する方法は、図１ないし図８を参照して説明した制御部によって遂行する段階によって構成される。従って、以下で省略された内容であるとしても、図１ないし図８を参照して説明した内容は、図９のメモリを管理する方法にも適用されるということが分かる。
【００６５】
図９の９１０段階ないし９３０段階は、図３の３１０段階ないし３３０段階と同一である。従って、９１０段階ないし９３０段階に係わる具体的な説明は省略する。
【００６６】
９４０段階において、該制御部は、メモリにおいて第１データが占める空間を除いた残りの空間に基づいて、チャンクプールを生成する。具体的には、該制御部は、第１データのデスティネーションページを割り当て、第１データに割り当てられたデスティネーションページを除いた残りの空間をチャンクプールに挿入する。
【００６７】
以下、図１０及び図１１を参照し、制御部がチャンクプールを生成する一例について説明する。
【００６８】
図１０は、一実施形態による、該制御部がチャンクプールを生成する一例について説明するための図である。図１０には、ページ１０１０にランクが割り当てられた一例が図示されている。ページ１０１０を構成する部分それぞれは、ランクに割り当てられ、ランクの種類は、多様である。例えば、ページ１０１０の一部は、「Rank  ０」に含まれてもよく、ページ１０１０の残りは、「Rank  １」に含まれてもよい。
【００６９】
第１データの保存要請が受信されると、該制御部は、第１データのデスティネーションページを割り当てる。例えば、該制御部は、第１データのデスティネーションページを「Rank  ０」に割り当てることができる。その場合、ページ１０１０を構成する部分１０１１，１０１２，１０１３，１０１４において、デスティネーションページに割り当てられた部分１０１２，１０１４には、余裕保存空間であるチャンク１０２０が生じる。
【００７０】
該制御部は、チャンク１０２０が生じた部分１０１２，１０１４を、チャンクプール１０３０に挿入する。それにより、第２データの保存要請が受信されると、該制御部は、チャンクプール１０３０に基づいて、第２データのデスティネーションチャンクを割り当てることができる。
【００７１】
図１１は、一実施形態によるチャンクプールの一例を示す図である。図１１には、チャンクプール１１１０の一例が図示されている。例えば、チャンクプール１１１０は、チャンクを含む部分１１４１ないし１１４７をランク１１２０，１１３０別に整列したテーブルでもある。
【００７２】
例えば、該制御部は、部分１１４１ないし１１４３が同一ランク１１２０に含まれていると識別し、部分１１４１ないし１１４３をランク１１２０に対応するように、グルーピングすることができる。かような方式で、制御部は、部分１１４４ないし１１４７をランク１１３０に対応するようにグルーピングすることができる。
【００７３】
該制御部がチャンクプール１１１０を生成することにより、該制御部は、データのソースチャンクとデスティネーションチャンクとが同一ランク１１２０，１１３０に含まれるようにデスティネーションチャンクを割り当てることができる。
【００７４】
再び図９を参照すれば、第２データの保存要請が受信されると、該制御部は、チャンクプールに基づいて、第２データに対応するデスティネーションチャンクを割り当てる。ここで、第２データは、ページに対応する保存空間より小さい保存空間を占めるデータを意味する。
【００７５】
一例として、該制御部は、デスティネーションチャンクと、第２データが保存されたチャンク（すなわち、ソースチャンク）とが同一ランクに含まれるように、デスティネーションチャンクを割り当てることができる。他の例として、該制御部は、デスティネーションチャンクとソースチャンクとが同一ランク及び同一チャネルに含まれるように、デスティネーションチャンクを割り当てることもできる。
【００７６】
また、図９には図示されていないが、該制御部は、割り当てられたデスティネーションチャンクに係わる情報に基づいて、ページテーブルを更新する。例えば、該制御部は、デスティネーションチャンクに対応する物理アドレスを、連続した論理アドレスにマッピングすることにより、ページテーブルを更新することができる。該制御部がページテーブルを更新する例は、図７を参照して説明した通りである。
【００７７】
図１２は、一実施形態によるメモリを管理する方法が遂行されるためのＡＰＩ（application  programming  interface）の一例を示す図である。
【００７８】
ＩＤＤＣｏｐｙＤｓｔＡｌｌｏｃ（ｓｒｃ，ｓｉｚｅ）が入力された場合、該制御部は、ソースページ／チャンク（ｓｒｃ）の物理アドレスを分析し、ソースページ／チャンク（ｓｒｃ）のようなチャネル、及び同じなランクにあるページ／チャンクをデスティネーションページ／チャンクに割り当てる。
【００７９】
ＩＤＤＣｏｐｙＳｅｔ（ｄｅｓｔ，ｓｒｃ，ｓｉｚｅ）が入力された場合、該制御部は、メモリ３０に位置したデータコピーモジュールに、ソースページ／チャンク（ｓｒｃ）のアドレス、及びデスティネーションページ／チャンク（ｄｅｓｔ）のアドレスなどレジスタ値を設定する。
【００８０】
ＩＤＤＣｏｐｙＳｔａｒｔ（）が入力された場合、該制御部は、データコピーモジュールに、ソースページ／チャンク（ｓｒｃ）からデスティネーションページ／チャンク（ｄｅｓｔ）にデータをコピーすることを命令する。
【００８１】
図１３Ａ及び図１３Ｂは、一実施形態による、メモリを管理する装置が配置された例を示した図である。
【００８２】
図１３Ａ及び図１３Ｂに図示されたデータ処理システム３，４は、中央処理装置（ＣＰＵ）１０、グラフィック処理装置（ＧＰＵ）２０、メモリ１３２０，１３４０、及びメモリを管理する装置１３１０，１３４０を含む。また、メモリを管理する装置１３１０，１３４０は、図１ないし図１２を参照して説明した制御部を含む。
【００８３】
図１３Ａを参照すれば、メモリを管理する装置１３１０は、メモリ１３２０内に含まれてもよい。その場合、一般的なデータ処理システム３のハードウェア構造を変更することなしに、一実施形態によるメモリを管理する方法が遂行される。
【００８４】
図１３Ｂを参照すれば、メモリを管理する装置１３３０は、データ処理システム４に独立した装置にも埋め込まれる。その場合、メモリを管理する装置１３３０は、中央処理装置（ＣＰＵ）１０、グラフィック処理装置（ＧＰＵ）２０及びメモリ（１３４０）と連結され、一実施形態によるメモリを管理する方法を遂行することができる。
【００８５】
前述のところによれば、中央処理装置（ＣＰＵ）が関与することがなしに、メモリに保存されたデータをメモリの他の空間にコピーすることができるために、メモリ内でデータがコピーされるプロセスの効率が向上する。
【００８６】
一方、前述の方法は、コンピュータで実行されるプログラムでもって作成可能であり、コンピュータ読み取り可能記録媒体を利用して、前記プログラムを動作させる汎用デジタルコンピュータで具現される。また、前述の方法で使用されたデータの構造は、コンピュータ読み取り可能記録媒体に、多くの手段を介して記録される。前記コンピュータ読み取り可能記録媒体は、マグネチック記録媒体（例えば、ＲＯＭ（read-only  memory）、ＲＡＭ（random  access  memory）、ＵＳＢ（universal  serial  bus）、フロッピー（登録商標）ディスク、ハードディスクなど）；光学的判読媒体（例えば、ＣＤ−ＲＯＭ（compact  disc  read  only  memory）、ＤＶＤ（digital  versatile  disc）など）のような記録媒体を含む。
【００８７】
本実施形態と係わる技術分野で当業者は、前述の記載の本質的な特性から外れない範囲で変形された形態に具現されるということを理解することができるであろう。従って、開示された方法は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての差異は、本発明に含まれたものであると解釈されなければならないのである。
【産業上の利用可能性】
【００８８】
本発明の、メモリを管理する方法及びその装置は、例えば、データ処理関連の技術分野に効果的に適用可能である。
【符号の説明】
【００８９】
１，２    データ処理システム
１０      中央処理装置（ＣＰＵ）
２０      グラフィック処理装置（ＧＰＵ）
２１      第１グラフィック処理装置（ＧＰＵ）
２２      第２グラフィック処理装置（ＧＰＵ）
３０，１３２０，１３４０  メモリ
３１      第１領域
３２      第２領域
３３      第３領域
４１０    バンク（bank）
４２０    ランク（rank）
４３０，７３０，１０１０  ページ
５１１    チャネル０
５１２    チャネルＮ
６１０    ページプール
７１０    アドレス空間
７２０    ＩＤＤＣ領域
１０２０  チャンク
１０３０，１１１０  チャンクプール
１３１０，１３３０  メモリを管理する装置
【図１】
2018085098.tif 000003
【図２】
2018085098.tif 000004
【図３】
2018085098.tif 000005
【図４】
2018085098.tif 000006
【図５】
2018085098.tif 000007
【図６】
2018085098.tif 000008
【図７】
2018085098.tif 000009
【図８】
2018085098.tif 000010
【図９】
2018085098.tif 000011
【図１０】
2018085098.tif 000012
【図１１】
2018085098.tif 000013
【図１２】
2018085098.tif 000014
【図１３Ａ】
2018085098.tif 000015
【図１３Ｂ】
2018085098.tif 000016