JP7184074B2 - メモリ管理装置及びメモリ管理方法、並びに情報処理装置 - Google Patents

メモリ管理装置及びメモリ管理方法、並びに情報処理装置 Download PDF

Info

Publication number
JP7184074B2
JP7184074B2 JP2020500283A JP2020500283A JP7184074B2 JP 7184074 B2 JP7184074 B2 JP 7184074B2 JP 2020500283 A JP2020500283 A JP 2020500283A JP 2020500283 A JP2020500283 A JP 2020500283A JP 7184074 B2 JP7184074 B2 JP 7184074B2
Authority
JP
Japan
Prior art keywords
address
region
virtual address
memory
physical
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.)
Active
Application number
JP2020500283A
Other languages
English (en)
Other versions
JPWO2019159472A1 (ja
Inventor
祐一 中村
マムン カジ
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.)
Sony Corp
Sony Group Corp
Original Assignee
Sony Corp
Sony Group 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 Sony Corp, Sony Group Corp filed Critical Sony Corp
Publication of JPWO2019159472A1 publication Critical patent/JPWO2019159472A1/ja
Application granted granted Critical
Publication of JP7184074B2 publication Critical patent/JP7184074B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本明細書で開示する技術は、ページ単位でアドレス変換を行うメモリ管理装置及びメモリ管理方法、並びに情報処理装置に関する。
メモリ管理ユニット(Memory Management Unit:MMU)は、ページテーブルを用いて仮想アドレスから物理アドレスへのアドレス変換を行うハードウェアである。通常、MMUは、仮想アドレス空間全体に対してこのようなアドレス変換を行うことで、プロセス毎の仮想アドレス空間を実現するとともに、実メモリ容量以上の仮想メモリを提供する。
ところが、組み込み向け機器のような小容量のメモリしか持たない機器に対して仮想アドレス空間全体にわたりページ単位でアドレス変換を行う仕組みを適用すると、仮想アドレス空間の中で実際に使われる領域が小さいため、ページテーブルの中でまったく使用されない箇所が多くなり、無駄なメモリ消費が発生する。
また、既存のMMUでは、アドレス変換の単位となるページサイズが固定されている(典型的には、1ページは4KB程度である)。小容量のヒープメモリ管理などで発生するフラグメンテーションを抑えるためには、ページサイズは小さいことが望ましい。一方、ページサイズが小さいと、同じアドレス範囲のアドレス変換を行うのに必要なページテーブルが大きくなり、ここでも無駄なメモリ消費が発生する。
例えば、複数のページテーブルを用いて異なるアドレス変換を行うシーケンサーアドレス管理について提案がなされている(例えば、特許文献1を参照のこと)。このシーケンサーアドレス管理によれば、実行する各スレッドがそれぞれ個別のページテーブルを持つため、小規模メモリのシステムで多数のスレッドを持っているような場合には必要なページテーブルの分量が大きくなってしまうことが懸念される。
また、基本となるページサイズの整数倍のメモリを1つのページとして扱って、可変のページサイズを実現するメモリ管理方式について提案がなされている(例えば、特許文献2を参照のこと)。このメモリ管理方式によれば、アドレス変換のためにページテーブル上でも複数のページテーブルエントリが必要であるため、ページ変換のためのページテーブルサイズが大きくなってしまうことが懸念される。
特表2008-536224号公報 特開平9-319658号公報
本明細書で開示する技術の目的は、小容量メモリシステム上でもページ単位で効率的にアドレス変換を行うメモリ管理装置及びメモリ管理方法、並びに情報処理装置を提供することにある。
本明細書で開示する技術は、上記課題を参酌してなされたものであり、その第1の側面は、ページ単位で仮想アドレスから物理アドレスへのアドレス変換を行うメモリ管理装置であって、
前記仮想アドレス空間に定義されたリージョンのアドレス変換情報と、リージョンが持つ固有のページサイズを保持するリージョン情報保持部と、
仮想アドレスを含むリージョンの前記アドレス変換情報を用いて、仮想アドレスに対応する物理アドレスの情報を探索する探索部と、
を具備するメモリ管理装置である。
前記リージョン情報保持部は、仮想アドレス空間上に定義された各リージョンのベース仮想アドレスと、物理メモリ上に置かれたリージョン毎のページテーブルのアドレスと、リージョンに定義されたページサイズ、及びリージョンサイズに関する情報をリージョン毎のエントリに保持している。したがって、前記探索部は、前記リージョン情報保持部内の、ベース仮想アドレスと、ベース仮想アドレスにリージョンのページサイズを加算したアドレス範囲に仮想アドレスが含まれるエントリから、仮想アドレスを含むリージョンのページテーブルアドレスを特定し、そのページテーブルアドレスで指定されるページテーブル上の、仮想アドレスとベース仮想アドレスの差分をページサイズで割算して特定されるページから物理アドレス情報を取得することができる。
また、第1の側面に係るメモリ管理装置は、ページ単位でベース仮想アドレスとベース物理アドレスの対応関係を示す情報と、その仮想アドレスを含むリージョンに定義されたページサイズの情報を保持するアドレス変換バッファと、前記アドレス変換バッファ中の仮想アドレスにヒットするエントリから取得されるベース物理アドレスと仮想アドレスを組み合わせて、仮想アドレスに対応する物理アドレスに変換するアドレス変換部をさらに備えている。そして、前記アドレス変換部は、ベース仮想アドレスと、ベース仮想アドレスにリージョンのページサイズを加算したアドレス範囲に仮想アドレスが含まれるエントリを、前記アドレス変換バッファ内で検索することができる。
また、第1の側面に係るメモリ管理装置は、用途が異なるデータを格納する複数のメモリ領域に対して、仮想アドレス空間上で異なるリージョンを割り当てる。具体的には、メモリ管理装置は、テキスト領域、ヒープ領域、及びスタック領域に対して、仮想アドレス空間上で、それぞれ固有のページサイズが定義された異なるリージョンを割り当てる。
また、本明細書で開示する技術の第2の側面は、ページ単位で仮想アドレスから物理アドレスへのアドレス変換を行うメモリ管理方法であって、
前記仮想アドレス空間に定義されたリージョンのアドレス変換情報とリージョンが持つ固有のページサイズを保持するリージョン情報保持部に保持された前記アドレス変換情報を用いて、仮想アドレスに対応する物理アドレスの情報を探索する探索ステップと、
ページ単位でベース仮想アドレスとベース物理アドレスの対応関係を示す情報と、その仮想アドレスを含むリージョンに定義されたページサイズの情報を保持するアドレス変換バッファ中の仮想アドレスにヒットするエントリから取得されるベース物理アドレスと仮想アドレスを組み合わせて、仮想アドレスに対応する物理アドレスに変換するアドレス変換ステップと、
を有するメモリ管理方法である。
また、本明細書で開示する技術の第3の側面は、
物理メモリと、
仮想アドレス空間に定義されたリージョンのアドレス変換情報とリージョンが持つ固有のページサイズを保持するリージョン情報保持部と、仮想アドレスを含むリージョンの前記アドレス変換情報を用いて仮想アドレスに対応する物理アドレスの情報を探索する探索部を備えて、ページ単位で仮想アドレスから物理アドレスへのアドレス変換を行うメモリ管理ユニットと、
を具備する情報処理装置である。
本明細書で開示する技術によれば、アドレス変換の対象となる複数のリージョンを定義するとともに、リージョン毎のページサイズを定義することによって、小容量メモリシステム上でもページ単位で効率的にアドレス変換を行うメモリ管理装置及びメモリ管理方法、並びに情報処理装置を提供することができる。
なお、本明細書に記載された効果は、あくまでも例示であり、本発明の効果はこれに限定されるものではない。また、本発明が、上記の効果以外に、さらに付加的な効果を奏する場合もある。
本明細書で開示する技術のさらに他の目的、特徴や利点は、後述する実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
図1は、本明細書で開示する技術を適用可能な組み込み機器を含むシステム1の構成例を模式的に示した図である。 図2は、センシングデバイス100のハードウェア構成例を示した図である。 図3は、MMU102の構成例をアドレス変換の仕組みとともに示した図である。 図4は、MMU102を初期化する処理手順を示したフローチャートである。 図5は、初期化した後のMMU102において仮想アドレスから物理アドレスに変換するための処理手順を示したフローチャートである。 図6は、アドレス変換機構303が仮想アドレスを物理アドレスに変換するための処理手順を示したフローチャートである。 図7は、ページウォーク機構304が物理メモリ305上のページテーブルを参照するための処理手順を示したフローチャートである。 図8は、MMU102を用いてアドレス変換を行う具体例を示した図である。 図9は、MMU102を用いてアドレス変換を行う具体例を示した図である。 図10は、MMU102を用いてアドレス変換を行う具体例を示した図である。 図11は、MMU102を用いてアドレス変換を行う具体例を示した図である。 図12は、MMU102を用いて実現される、仮想アドレス空間におけるリージョンの構成例を示した図である。 図13は、図1及び図2に示した組込み機器を実現するハードウェアで動作するソフトウェアの構成例を示した図である。 図14は、オペレーティングシステムを用いたメモリ管理方法を説明するための図である。 図15は、仮想メモリマネージャによって提供される仮想アドレス空間と、その上で実行される各タスクの関係を示した図である。 図16は、仮想メモリマネージャによって提供されるリージョンのうち、Region#0をテキスト領域として使用するための仕組みを説明するための図である。 図17は、フラッシュメモリ104内のファイルをメモリ空間へマッピングするための処理手順を示したフローチャートである。 図18は、メモリ空間へマッピングしたファイルを解放するための処理手順を示したフローチャートである。 図19は、Region#1及びRegion#2をヒープ領域として使用するための仕組みを説明するための図である。 図20は、ヒープ領域からメモリを確保するための処理手順を示したフローチャートである。 図21は、ヒープ領域に確保したメモリを解放するための処理手順を示したフローチャートである。 図22は、ページサイズが4KBに定義されているRegion#1からメモリを確保する処理を示したフローチャートである。 図23は、ページサイズが4KBに定義されているRegion#1に確保したメモリを解放する処理を示したフローチャートである。 図24は、ページサイズが1KBに定義されているRegion#2からメモリを確保する処理を示したフローチャートである。 図25は、ページサイズが1KBに定義されているRegion#2に確保したメモリを解放する処理を示したフローチャートである。 図26は、メモリブロックマネージャから空きメモリブロックを取得するための処理手順を示したフローチャートである。 図27は、メモリブロックマネージャへメモリブロックを返すための処理手順を示したフローチャートである。 図28は、仮想メモリマネージャによって提供されるリージョンのうち、Region#3をスタック領域として使用するための仕組みを説明するための図である。 図29は、スタック領域を動的に割り当てるための処理手順を示した図である。 図30は、タスク終了時にスタックを解放するための処理手順を示したフローチャートである。
以下、図面を参照しながら本明細書で開示する技術の実施形態について詳細に説明する。
本明細書では、仮想アドレス空間全体に対してアドレス変換を行うメモリ管理方式を小容量のメモリしか持たない機器に適用した場合に、仮想アドレス空間の中で実際に使われる領域が小さいために無駄なメモリ消費が発生することや、フラグメンテーション抑止のために小さいページサイズに固定するとページテーブルが大きくなり無駄なメモリ消費が発生することに鑑みて、新規のメモリ管理方式を提案する。
本明細書で開示する技術によれば、仮想アドレス空間の中で、アドレス変換の対象となる複数の領域(リージョン)を定義して、各リージョンにおいてページ単位でアドレス変換を行うが、リージョン毎に固有のページサイズを定義することが可能であり、したがって、小容量メモリシステム上でも効率的にMMUを用いたアドレス変換を実現することができる。また、本明細書で開示する技術によれば、リージョン毎に固定のページサイズを持ち、各リージョンのアドレス変換を行うページテーブル上では、ページサイズに拘わらず1ページは1エントリを使用するので、アドレス変換を効率的に行うことができる。
一般に、プログラムが動作する際にはテキスト領域、ヒープ領域、スタック領域といった複数の種類の領域を使用するが、これらの領域はそれぞれ異なる特徴を持つ。
テキスト領域は、命令コードやプログラムの実行時に参照する読み込み専用のデータなどが含まれる。組み込み機器の場合にはフラッシュメモリなどの不揮発メモリに置かれたデータがこれに使用されることが多い。フラッシュメモリへの書き込みは特定のブロックサイズ(典型的には64KB程度)を単位として行われることを考慮すると、テキスト領域はこうしたブロックサイズを単位として扱うことが効率的である。
ヒープ領域は、プログラムの実行中に保持する必要のあるデータを置くために、実行中に動的に確保と解放が行われる領域である。ヒープ領域からどのような単位でメモリを確保するかは、処理内容やプログラムの書き方に大きく依存し、数バイトのこともあれば数100KBを超えることもある。異なるサイズのメモリの確保と解放が繰り返されると、メモリの断片化が発生し、全体としては空きがあるにも関わらず要求を満たす連続したメモリを確保することができなくなることがある。メモリの断片化の状況を避けるためには、ヒープ領域をいくつかの領域に分類し、確保するメモリのサイズによってそれらを使い分けるといった方法が考えられる。
スタック領域は、プログラムの実行における関数呼び出しの進行などにより、動的に使用量が増えていく領域であるが、プログラムの書き方や処理内容によって使用量が大きく変化するため、事前に容量を決めておくことが難しい。そのため、使用状況に応じてページサイズ毎にメモリを動的に割り当てていくことが考えられるが、システムで動作するタスクの平均的なスタック消費量が小さい場合は、それに合わせて割り当て単位となるページサイズも小さいことが望ましい。
このように異なる特徴をもった複数のメモリ領域に対しても、本明細書で開示する技術を適用したMMUによって、それぞれに適切なページサイズを持ったリージョンを割り当てることができ、各メモリ領域それぞれの特徴に合致した、効率的なメモリ管理が行えるようになる。
図1には、本明細書で開示する技術を適用可能な組み込み機器を含むシステム1の構成例を模式的に示している。図示のシステム1は、組み込み機器に相当するセンシングデバイス100と、基地局200と、クラウド201上に設置されたサーバ202で構成される。センシングデバイス100は、基地局200に無線接続して、クラウド201経由でサーバ202にアクセスすることができる。
センシングデバイス100は、CPU(Central Processing Unit)101、MMU102、SRAM(Static RAM(Random Access Memory))103やフラッシュメモリ104などのメモリ、センサ105、通信モジュール106を備え、電池107で駆動する機器である。
センシングデバイス100は、例えば装着者に装着して用いられる。CPU101は、センサ105の検出信号に基づいて装着者の行動(止まっている、歩いている、走っているなど)を解析する。そして、解析結果を通信モジュール106から基地局200へ無線送信し、クラウド201経由でサーバ202に記録される。サーバ202は、センシングデバイス100から受け取ったデータを、装着者の見守りなどに使用する。
図2には、組み込み機器の一例としてのセンシングデバイス100のハードウェア構成例を示している。
CPU101は、MMU102経由でシステムバス110に接続されている。また、システムバス110上には、SRAM103、フラッシュメモリ104、センサ105、通信モジュール106といったデバイスが接続されている。
フラッシュメモリ104は、例えば、センサ105の信号に基づいて装着者の行動を推定するアプリケーションや、アプリケーションを実行する際に使用するライブラリ、装着者の行動を推定するための行動推定辞書などのデータを格納している。また、センサ105は、加速度センサ、気圧センサ、ジャイロ、GPS(Global Positioning System)、TOF(Time Of Flight)画像距離センサ、LIDAR(Light Detection and Ranging)センサなど、1以上のセンサデバイスで構成される。
システムバス110に接続されたこれらデバイスが配置される物理アドレス空間が、MMU102によるアドレス変換の対象となる。この物理アドレス空間には、SRAM103が配置される他、フラッシュメモリ104がその内容がCPU101若しくはMMU102から直接見える形で配置されていたり、通信モジュール106や、センサ105に含まれる各種センサデバイスのI/Oポートが配置されていたりする。
図3には、本実施形態に係るMMU102の構成例を示している。同図では、MMU102によって、仮想アドレス(Virtual Address:VA)から物理アドレス(Physical Address:PA)へ変換される流れを併せて示している。
図示のMMU102は、トランスレーションルックアサイドバッファ(TLB)301と、リージョンデスクリプタ302の2つのブロックを備えている。
TLB301は、一般的なMMUと同様に、ページ単位で仮想アドレスから物理アドレスへ変換するための情報を持つために用いられる。TLB301のエントリ数は任意である。例えば、アドレス変換の効率とMMUを実現する回路規模のトレードオフから、MMUの設計者がTLBのエントリ数を決定する。
TLB301の各エントリT0~Tnは、ベース仮想アドレスTB0~TBn、ベース物理アドレスTT0~TTn、ページサイズTP0~TPn、エントリ有効フラグTV0~TVnをそれぞれ持つ。ベース仮想アドレスTB0~TBnには、各々のTLBエントリT0~Tnによってアドレス変換が行われるページの仮想アドレスが格納される。ベース物理アドレスTT0~TTnには、各々のTLBエントリT0~Tnのベース仮想アドレスTB0~TBnに対応する変換後の物理アドレスが格納される。ページサイズTP0~TPnには、各々のTLBエントリT0~Tnが示すページのサイズ(すなわち、仮想アドレスTB0~TBnが属するリージョンに定義されているページのサイズ)が格納される。エントリ有効フラグTV0~TVnには、各々のTLBエントリT0~Tn自体の有効性(有効又は無効)を示すフラグが格納される。
リージョンデスクリプタ302は、MMU102によるアドレス変換の対象となる領域(リージョン)を設定するために用いられる。そのため、このMMU102が提供することのできるリージョンの個数だけのエントリをリージョンデスクリプタ302が持つ。図3に示す例では、リージョンデスクリプタ302は、R0~R3の4つのエントリを持っている。
リージョンデスクリプタ302の各エントリR0~R3は、ベース仮想アドレスRB0~RB3、ページテーブルアドレスRT0~RT3、ページサイズRP0~RP3、リージョンサイズRS0~RS3を持つ。ベース仮想アドレスRB0~RB3には、各々のリージョンR0~R3が配置される仮想アドレス空間上の先頭アドレスが格納される。ページテーブルアドレスRT0~RT3には、各々のリージョンR0~R3について仮想アドレスから物理アドレスへの変換に使用されるページテーブルP0~P3が置かれている物理アドレスが格納される。ページサイズRP0~RP3には、各々のリージョンR0~R3を構成するページのページサイズのサイズが格納される。リージョンサイズRS0~RS3には、各々のリージョンR0~R3自体のサイズが格納される。
物理メモリ305上には、リージョンの数と同数のページテーブルP0~P3が存在する。リージョン毎のページテーブルP0~P3はそれぞれ、対応するリージョンのページ数と同じエントリ数を持ち、各エントリには対応するリージョンにおけるページの変換先の物理アドレスが格納されている。リージョンサイズをそのリージョンのページサイズで割った値が、そのリージョンのページ数となる(リージョンRxの場合、RSx/RPxがそのリージョンのページ数となる)。
図示のMMU102における仮想アドレスから物理アドレスへのアドレス変換は、仮想アドレスとTLB301及びリージョンデスクリプタ302それぞれの各エントリのベースアドレスを比較し、一致するエントリが存在するかどうかに応じて行われる。仮想アドレスから物理アドレスへ変換する流れについて説明しておく。
CPU101は、仮想アドレスを用いてメモリ空間にアクセスする。MMU102は、アクセス要求された仮想アドレスのベースアドレス部分と、TLB301の各エントリT0~Tnのベース仮想アドレスTB0~TBnを比較する。ここで、対応するエントリが見つかった、すなわちTLBヒットした場合には、アドレス変換機構303はそのエントリを用いてベース仮想アドレスをベース物理アドレスに変換する。そして、そのベース物理アドレスと、アクセス要求された仮想アドレスのオフセットアドレスとを組み合わせて、物理アドレスを得ることができる。
一方、TLB301の中からアクセス要求された仮想アドレスのベースアドレス部分に対応するエントリが見つからなかった、すなわちTLBミスした場合には、MMU102は、アクセス要求された仮想アドレスのベースアドレス部分と、リージョンデスクリプタ302の各エントリR0~R3のベース仮想アドレスRB0~RB3と比較して、対応するエントリ内のページテーブルアドレスRTXを参照する。ページウォーク機構304は、そのページテーブルアドレスRTXを用いて物理メモリ305上の該当するページテーブルPXを参照して、アクセス要求された仮想アドレスに該当するページテーブルエントリを見つけ出すと、得られた内容に基づいてTLB301内の任意のエントリを更新する。このようにして、アクセス要求された仮想アドレスと物理アドレスをマッピングする新たなエントリがTLB301に格納される。
図4~図7には、アドレス変換に関連する処理手順を、それぞれフローチャートの形式で示している。
図4には、MMU102を初期化するための処理手順をフローチャートの形式で示している。MMU102の初期化は、基本的には、オペレーティングシステム(OS)の起動時に実施される。
まず、TLB301内のすべてのエントリを無効に設定する(ステップS401)。具体的には、すべてのエントリのエントリ有効フラグTV0~TVnにFalseを代入する。
そして、リージョンデスクリプタ302内の各エントリR0~R3に対して、各リージョンを定義するためにベース仮想アドレスRB0~RB3、ページテーブルアドレスRT0~RT3、ページサイズRP0~RP3、リージョンサイズRS0~RS3を設定する(ステップS402)。
なお、詳細な説明を省略するが、OSの起動時には、物理メモリ305上のリージョン毎の各ページテーブルP0~P3の初期化も実施される。
図5には、初期化した後のMMU102において仮想アドレスから物理アドレスに変換するための処理手順をフローチャートの形式で示している。
まず、要求された仮想アドレスとTLB301内の各エントリT0~Tnを比較して(ステップS501)、いずれかのエントリと合致するかどうかをチェックする(ステップS502)。ここで、x番目のエントリTxに関して、ベース仮想アドレスTBxと、ベース仮想アドレスTBxにページサイズTPxを加算した範囲内に仮想アドレスVAが含まれていれば(すなわち、TBx≦VA<TBx+TPx、且つ、TVx=True)、仮想アドレスVAはそのエントリTxと合致することになる。
そして、要求された仮想アドレスに合致するエントリがTLB301内で見つかった場合には(ステップS502のYes)、アドレス変換機構303による仮想アドレスから物理アドレスへの変換処理を実行する(ステップS503)。アドレス変換機構303による仮想アドレスから物理アドレスへの変換処理の詳細については、図6を参照されたい。
一方、要求された仮想アドレスに合致するエントリがTLB301内で見つからなかった場合(ステップS502のNo)、すなわちTLBミスした場合には、続いて、要求された仮想アドレスとリージョンデスクリプタ302内の各エントリR0~Rnを比較して(ステップS504)、いずれかのエントリと合致するかどうかをチェックする(ステップS505)。ここで、x番目のエントリRxに関して、ベース仮想アドレスRBxと、ベース仮想アドレスRBxにページサイズRSxを加算した範囲内に仮想アドレスVAが含まれていれば(すなわち、RBx≦VA<RBx+RSx)、仮想アドレスVAはそのエントリRxと合致することになる。
そして、要求された仮想アドレスに合致するエントリがリージョンデスクリプタ302内で見つかった場合には(ステップS505のYes)、ページウォーク機構304による物理メモリ305上のページテーブル参照処理を実行して(ステップS506)、アクセス要求された仮想アドレスと物理アドレスをマッピングする新たなエントリをTLB301に作成する。その後、ステップS501に戻り、アドレス変換機構303による仮想アドレスから物理アドレスへの変換処理を改めて実行する。ページウォーク機構304による物理メモリ305上のページテーブル参照処理の詳細については、図7を参照されたい。
なお、リージョンデスクリプタ302内でも、要求された仮想アドレスに合致するエントリが見つからなかった場合には(ステップS505のNo)、アドレス変換が不能なので、バスフォルトエラーを発生して、仮想アドレスから物理アドレスへの変換処理を中止する。
図6には、図5に示したフローチャート中のステップS506で実行される、アドレス変換機構303が仮想アドレスを物理アドレスに変換するための処理手順をフローチャートの形式で示している。
アドレス変換機構303は、TLB301内の、要求された仮想アドレスと合致するエントリTxからベース物理アドレスTTxを取得すると(ステップS601)、そのベース物理アドレスと、アクセス要求された仮想アドレスのオフセットアドレスとを組み合わせて、物理アドレスを計算する(ステップS602)。
ステップS602では、具体的には、TLB301内のエントリTxから取得した物理アドレスTTxに、要求された仮想アドレスVAとベース仮想アドレスTBxの差分を加算して、物理アドレスPAを求めることができる(すなわち、PA←TTx+(VA-TBx))。
図7には、図5に示したフローチャート中のステップS506で実行される、ページウォーク機構304が物理メモリ305上のページテーブルを参照して、仮想アドレスと物理アドレスをマッピングする新たなエントリをTLB301に作成するための処理手順をフローチャートの形式で示している。
ページウォーク機構304は、まず、リージョンデスクリプタ302の対応するエントリRxに格納されている情報と、要求された仮想アドレスVAに基づいて、物理メモリ305上の該当するページテーブルの何ページ目のエントリを取得すべきかを決定する(ステップS701)。具体的には、仮想アドレスVAとベース仮想アドレスRBxの差分をそのリージョンのページサイズRPxで割って、整数に切り捨てた値nが、ページテーブルのエントリとなる(すなわち、n←int((VA-RBx)/RPx))。
次いで、ページウォーク機構304は、リージョンデスクリプタ302の対応するエントリRxに格納されているページテーブルアドレスRTxの物理アドレスに置かれているページテーブルから、n番目のエントリの値PP、すなわち要求された仮想アドレスVAに対応するベース物理アドレスを取得する(すなわち、PP←Pxn)(ステップS702)。
次いで、ページウォーク機構304は、TLB301内に無効のエントリTVyが存在するかどうかをチェックする(すなわち、TVy=False)(ステップS703)。
ここで、TLB301内に無効のエントリTVyが存在しない場合には(ステップS703のNo)、ページウォーク機構304は、TLB301内の任意のy番目のエントリを選択して、無効エントリに設定する(すなわち、TVy←False)(ステップS704)。
そして、ページウォーク機構304は、TLB301内で見つけた無効のエントリy(若しくは、無効に設定したエントリy)を有効化して、当該エントリに新たなアドレス変換情報を設定する(ステップS705)。具体的には、エントリ有効フラグTVyを有効とし、新たなベース仮想アドレスTBy、ベース物理アドレスTTy、ページサイズTPyを設定する(すなわち、TBy←RBx+(RPx×n)、TTy←PP、TPy←RPx、TVy←True)。
このようにして、アクセス要求された仮想アドレスと物理アドレスをマッピングする新たなエントリがTLB301に格納される。
図8~図11には、MMU102を用いてアドレス変換を行う具体例を示している。ここでは、例として仮想アドレス空間上に以下の表1に示すような4つのリージョンが定義されているものする(但し、0xはその値が16進数であることを示す)。
Figure 0007184074000001
各リージョンは、ページテーブルアドレスに設定された物理アドレス(RT0~RT3)にそれぞれページテーブル(P0~P3)を持つ。各ページテーブル(P0~P3)には、ページ単位で仮想アドレスを変換した後の物理アドレス(P00~P3n)が格納されている。上記の表1に示す例では、リージョンR0の場合、リージョンサイズがRS0=16MB、ページサイズがRP0=64KBなので、RS0/RP0=256 が、このページテーブルのエントリ数となる。
したがって、リージョンデスクリプタ302のエントリR0には、ベース仮想アドレスRB0=0x10000000、ページテーブルアドレスRT0=0x00010000、ページサイズRP0=64KB、リージョンサイズRS0=16MBが格納される。また、エントリR1には、ベース仮想アドレスRB1=0x20000000、ページテーブルアドレスRT1=0x00020000、ページサイズRP0=4KB、リージョンサイズRS1=1MBが格納される。また、エントリR2には、ベース仮想アドレスRB2=0x30000000、ページテーブルアドレスRT2=0x00030000、ページサイズRP2=1KB、リージョンサイズRS2=256KBが格納される。また、エントリR3には、ベース仮想アドレスRB2=0x40000000、ページテーブルアドレスRT3=0x00040000、ページサイズRP3=1KB、リージョンサイズRS3=256KBが格納される。
また、図8に示すMMU102は、図4に示した処理手順に従って初期化した直後の状態であることを想定している。したがって、TLB301内のすべてのエントリ0~nのエントリ有効フラグTV0~TVnには、エントリが無効であることを示すFalseが代入されている。
図9には、初期化直後のMMU102(図8を参照のこと)に対して変換前の仮想アドレスとしてVA=0x10020010が与えられた場合に、アドレス変換を行う具体例を示している。仮想アドレスから物理アドレスへの変換は、図6に示した処理手順に従って実行される。
初期状態では、TLB301のすべてのエントリは無効なので(TV0~TVn=False)、要求された仮想アドレスに合致するエントリは存在しない。すなわちTLBミスするので、リージョンデスクリプタ302の中に、要求された仮想アドレスに合致するものがあるかが調べられる。ここでは、リージョンデスクリプタ302のエントリR0について、RB0≦VA<RB0+RS0を満たすので(0x10000000≦0x10020010<0x10000000+0x01000000)、この仮想アドレスはエントリR0と合致することになる。
次いで、ページウォーク機構304は、図7に示した処理手順に従って、ページウォーク機構304がページウォークを実行する。
ページウォーク機構304は、まず、リージョンデスクリプタ302のエントリR0から取得される情報に基づいて、物理メモリ305上のページテーブル参照処理を実行して、アクセス要求された仮想アドレスと物理アドレスをマッピングする新たなエントリをTLB301に作成する。具体的には、仮想アドレス0x10020010とベース仮想アドレスRB0(=0x10000000)の差分をそのリージョンのページサイズRP0=64KB(0x00010000)で割って、整数に切り捨てた値n=2(すなわち、n←int((VA-RBx)/RPx))が、物理メモリ305上の該当するページテーブルから取得すべきページとなる。
したがって、ページウォーク機構304は、物理メモリ305上の該当するページテーブルアドレスRT0の2番目のエントリの値P02(=0x00080000)を、要求された仮想アドレスVAに対応するベース物理アドレスTT0として取得する。
そして、ページウォーク機構304は、TLB301内に無効のエントリの中からエントリT0を選択して、以下のように新たなベース仮想アドレスTB0、ベース物理アドレスTT0、ページサイズTP0を設定して、当該エントリT0を有効化する。図10には、ページウォークによってエントリT0が設定される様子を示している。
TB0(ベース仮想アドレス)←RB0+(RP0×n)=0x10000000+(0x00010000×2)=0x10020000
TT0(ベース物理アドレス)←P02=0x00080000
TP0(ページサイズ)←RP0=64KB
TV0(エントリ有効フラグ)←True
上記のようにページウォークによって、要求された仮想アドレスと物理アドレスをマッピングする新たなエントリがTLB301に作成されると、アドレス変換機構303による仮想アドレスから物理アドレスへの変換処理を改めて実行する。
図11には、要求された仮想アドレスVA(=0x10020010)に対して、仮想アドレスから物理アドレスへの変換処理を再実行する様子を示している。今度は、リージョンデスクリプタ302に加えて、TLB301内にも、要求された仮想アドレスに合致するエントリT0が見つかる(すなわち、TB0≦VA<TB0+TP0、且つ、TV0=True)。要求された仮想アドレスVAがTLB301及びリージョンデスクリプタ302の両方で合致する場合には、TLB301のエントリT0が優先される。何故ならば、TLBヒットした場合には、アドレス変換機構303はそのエントリを用いてベース仮想アドレスをベース物理アドレスに直接変換することができ、ページウォークのためのアドレス計算が不要だからである。
アドレス変換機構303は、図6に示した処理手順に従って、TLB301のエントリT0とから取得されるベース物理アドレスTT0と、要求された仮想アドレスVAから、物理アドレスPAを計算する(すなわち、PA←TT0+(VA-TB0))。この例では、0x00080000+(0x10020010-0x10020000)=0x00080010が、TLB301を用いたアドレス変換によって得られる物理アドレスPAである。
要するに、本実施形態に係るMMU102は、仮想アドレスから物理アドレスへ変換するための情報を保持するTLB301の他に、アドレス変換の対象として定義された複数のリージョンの各々についてアドレス変換するための情報及びリージョン毎に定義されたページサイズの情報を保持するリージョンデスクリプタ302を備えている。ここまでの説明で、本実施形態に係るMMU102によれば、TLBミスした場合には、リージョン毎に異なるページサイズが定義されていても、リージョンデスクリプタ302を利用してページ単位で効率的にアドレス変換を行うことができる、という点を十分理解されたい。
図12には、本実施形態に係るMMU102を用いて実現される、仮想アドレス空間におけるリージョンの構成例を示している。
図示の仮想アドレス空間には、Region#0~#3の4つのリージョンが定義されている。各リージョンは、それぞれ64KB、4KB、1KB、1KBのページサイズを持つ。Region#0はテキスト領域、Region#1とRegion#2はヒープ領域、Region#3はスタック領域として使われる。但し、Region#1とRegion#2は、確保するメモリブロックのサイズによって、これら2つのリージョンを使い分ける。
図13には、図1及び図2に示した組込み機器(センシングデバイス100)を実現するハードウェアで動作するソフトウェアの構成例を示している。
センシングデバイス100は、例えば、スマートフォン、スマートウオッチ、スマートグラス、スマートヘッドフォンなど、ユーザが保持あるいは装着するような装置であってもよいし、電気自動車など移動交通手段に装備されてもよい。
センシングデバイス100のようなハードウェア上で動作するアプリケーションは、例えば、装着者の動きをセンシングするためのセンシング処理、センシング結果に基づいて装着者の行動を推定する行動推定処理、推定した結果をクラウド201経由でサーバ202に送信するための通信処理の3つに大別される。また、行動推定処理に使用される行動辞書がアプリケーションに含まれている。これらのアプリケーションは、図1又は図2に示した機器ハードウェアをサポートするとともに、図3に示したMMU102によって実現されるアドレス空間(図12を参照のこと)を各タスクに提供するOSの上で動作する。
センシングデバイス100は、センサ105からの入力に基づいてセンシング処理を行う。センサ105で認識可能なセンシングデバイス100の「動作/状況」を「行動」と関連付けて、「行動定義」として行動辞書に登録することで、行動推定処理において「行動」を認識し、認識された行動に基づいてデバイス自体の制御処理を行うとともに、必要に応じて推定した結果をクラウド201経由でサーバ202に送信するようにしてもよい。また、行動辞書は、センシング処理の結果や行動推定処理結果などを用いて、ディープニューラルネットワーク(Deep Neural Network)など人工知能の手法を利用して「動作/状況」と「行動」の関係を動的に学習するようになされていてもよい。動作の例としては、「ユーザの動作測定」などがある。状況の例としては、「加速度大」や「加速度小」などがある。例えば、動作「ユーザの動作測定」と状況「加速度大」に対して行動「ユーザが走っている」を関連付け、動作「ユーザの動作測定」と状況「加速度小」に対して行動「ユーザが歩行している」を関連付けて、行動辞書に定義することで、センサ105からの入力にしたがって行動認識処理を行うことにより、行動を認識することができる。
OSは、各タスクの動作を制御するタスク管理、フラッシュメモリ104上のファイルシステムを管理するフラッシュファイルマネージャ、MMU102を制御して仮想アドレス空間を構成する仮想メモリマネージャ、構成された仮想メモリに割り当てるための物理メモリの管理を行うメモリブロックマネージャ、などで構成される。また、OSには、接続されているセンサ105や通信モジュール106、フラッシュメモリ104などのデバイスを制御するデバイスドライバも含まれる。
このOSを用いたメモリ管理方法について、図14を参照しながら説明する。
仮想メモリマネージャは主に、MMU102に設定する各リージョンのページテーブルを管理する。仮想メモリマネージャは、あるリージョンのページに物理メモリを割り当てる場合には、その物理メモリを得るためにメモリブロックマネージャを呼び出す。また、仮想メモリマネージャは、あるリージョンのページにフラッシュメモリ104上のファイルを割り当てる場合には、フラッシュファイルマネージャを用いて、該当するファイルがフラッシュメモリ上のどのブロックに配置されているかの情報をファイルシステム内のファイルシステム管理データから取得し、そのブロックの存在する物理アドレスを配置したいリージョンのページテーブルに設定することで、対応する仮想アドレス上に該当ファイルのそのブロックが配置されるようになる。これらのメモリ管理を行うためのメモリ管理API(Application Programming Interface)は、OS自身又はOS上で動くアプリケーションから使用される。
OSは、起動すると自身の初期化が完了した後に、アプリケーション実行のための初期化を行う。アプリケーションはフラッシュメモリ104上にあらかじめファイルデータとして格納してあり、そのファイルをメモリ管理APIの呼び出しによって仮想アドレス空間に配置し、実行開始アドレスからの実行を行うタスクを生成することで、アプリケーションの実行が始まる。
図15には、仮想メモリマネージャによって提供される仮想アドレス空間と、その上で実行される各タスクの関係を表している。仮想メモリマネージャは、各タスクが呼び出すメモリ管理APIによるメモリ確保並びにメモリ解放要求に従って、その要求に対応するリージョンに対して物理メモリ305、あるいはフラッシュメモリ104上のブロックを随時割り当てていく。
図15に示す例では、センシングデバイス100上でアプリケーションの処理の実行に応じてOSが管理するセンシングタスク、行動推定タスク、及び通信タスクが動作していることを想定している。同時に動作する複数のタスク間で、仮想アドレス空間は共有される。
フラッシュメモリ104に格納されているセンシング処理、行動推定処理、通信処理などの各アプリケーションの命令コードやプログラムの実行時に参照する読み込み専用のデータなどは、仮想アドレス空間のうち、テキスト領域として使用されるRegion#0にマップされる。また、行動推定処理に使用する行動推定辞書も、同じくRegion#0にマップされる。
センシングデバイス100上で動作中のセンシングタスクは、Region#0にマップされるセンシング処理アプリケーションを利用する。また、センシングタスクは、プログラムの実行中に保持する必要のあるデータをヒープ領域として使用されるRegion#1に置き、実行中に当該領域内でメモリの確保と解放が動的に行われる。また、センシングタスクは、プログラムの実行中に呼び出される関数を、スタック領域として使用されるRegion#3に置く。
同様に、センシングデバイス100上で動作中の行動推定タスクは、Region#0にマップされる行動推定処理アプリケーション並びに行動推定辞書を利用する。また、行動推定タスクは、プログラムの実行中に保持する必要のあるデータをヒープ領域として使用されるRegion#1に置き、実行中に当該領域内でメモリの確保と解放が動的に行われる。また、行動推定タスクは、プログラムの実行中に呼び出される関数を、スタック領域として使用されるRegion#3に置く。
同様に、センシングデバイス100上で動作中の通信タスクは、Region#0にマップされる通信処理アプリケーションを利用する。また、通信タスクは、プログラムの実行中に保持する必要のあるデータをヒープ領域として使用されるRegion#1に置き、実行中に当該領域内でメモリの確保と解放が動的に行われる。また、通信タスクは、プログラムの実行中に呼び出される関数を、スタック領域として使用されるRegion#3に置く。
図16には、仮想メモリマネージャによって提供されるリージョンのうち、Region#0をテキスト領域として使用するための仕組みを示している。
物理メモリ305上のRegion#0用のページテーブルには、テキスト領域に貼り付けるフラッシュメモリ104上の特定のファイルについて、そのファイルのフラッシュメモリ104上のブロックの物理アドレスが設定される。
フラッシュメモリ104上にファイルシステムが構成されている場合、ブロックはフラッシュメモリ104の中で必ずしも連続したブロックとして並べられているとは限らないが、そうした場合でもページテーブルによるアドレス変換によって、仮想アドレス空間のテキスト領域(Region#0)上では連続した仮想アドレスとしてファイルを貼り付けることができる。
また、このRegion#0におけるページサイズはフラッシュメモリ104のブロックサイズ(典型的には64KB)と合致させてある。したがって、例えばフラッシュメモリ104上で3ブロックを占めているファイル(192KB)については、ページテーブル上でも3つのエントリがあればこのファイルをテキスト領域にマッピングことができる。
図17には、仮想メモリマネージャによって、フラッシュメモリ104内のファイルをメモリ空間(仮想アドレス空間のテキスト領域)へマッピングするための処理手順をフローチャートの形式で示している。
仮想メモリマネージャは、まず、マッピング先のリージョン(Region#0)の空きアドレス空間の取得を試みる(ステップS1701)。
ここで、マッピング先のリージョンから空きアドレス空間を取得できなかった場合には(ステップS1702のNo)、アドレス空間不足エラーとして、ファイルのマッピングを諦め、本処理を終了する。
また、マッピング先のリージョンから空きアドレス空間を取得できた場合には(ステップS1702のYes)、仮想メモリマネージャは、当該リージョンにマップするファイルの、フラッシュメモリ104内の配置情報の取得を試みる(ステップS1703)。ステップS1703の処理は、図14中において参照番号1402で示す処理に相当する。
ここで、当該リージョンにマップするファイルの配置情報を取得できない、すなわち、マッピングすべきファイルが存在しない場合には(ステップS1704のNo)、ファイル不存在エラーとして、ファイルのマッピングを諦め、本処理を終了する。
また、当該リージョンにマップするファイルの配置情報を取得できたとき、すなわち、マッピングすべきファイルが存在する場合には(ステップS1704のYes)、仮想メモリマネージャは、物理メモリ305上における当該リージョンのページテーブルに、そのファイルのメモリ内配置情報を書き込んで(ステップS1705)、ファイルのマッピング処理を終了する。ステップS1705の処理は、図14中において参照番号1403で示す処理に相当する。
また、図18には、仮想メモリマネージャによって、メモリ空間(仮想アドレス空間のテキスト領域)へマッピングしたファイルを解放するための処理手順をフローチャートの形式で示している。
仮想メモリマネージャは、解放を指定されたアドレスがファイルのマッピング先であるかどうかをチェックする(ステップS1801)。
そして、解放を指定されたアドレスがファイルのマッピング先である場合には(ステップS1801のYes)、仮想メモリマネージャは、リージョンのページテーブルを未使用に戻して(ステップS1802)、本処理を終了する。ステップS1802の処理は、図14中において参照番号1403で示す処理に相当する。
他方、解放を指定されたアドレスがファイルのマッピング先でない場合には(ステップS1801のNo)、アドレス指定エラーとして、マッピングの解放を諦めて、本処理を終了する。
図19には、仮想メモリマネージャによって提供されるリージョンのうち、Region#1及びRegion#2をヒープ領域として使用するための仕組みを示している。
先述したように、ヒープ領域からどのような単位でメモリを確保するかは、処理内容やプログラムの書き方に大きく依存する。確保するメモリが数バイトのことも数100KBのこともある。こうしたサイズのメモリを混在させることによる断片化を防ぐため、本実施形態では、確保するメモリを4KB以上かそうでないかによって、ヒープアロケータが、Region♯1とRegion♯2の2つのリージョンを使い分けている。
mallocは、動的にメモリを確保する関数であり、freeは、確保したメモリを動的に開放する関数である。図19に示す例では、ヒープアロケータが、確保するメモリサイズに応じて、使用するヒープ領域を選択する。
4KB未満の小さなメモリ確保要求に対しては、ヒープアロケータは、ページサイズを1KBに設定したRegion♯2に物理メモリを割り当てる。但し、ページサイズの1KBを超えるメモリ要求については、複数のページを割り当てて使用するようにする。また、4KB以上のメモリ確保要求に対しては、ヒープアロケータは、ページサイズを4KBに設定したRegion♯1に物理メモリを割り当てる。
ヒープ領域に対するメモリ要求をいくつに分類するか、分類の際に閾値として設定するサイズは、アプリケーションのメモリ要求のパターンによって変わってくるが、少なくともこのように確保するサイズによる分類を行うことで、メモリの断片化を抑えることができるようになる。
図20には、ヒープ領域からメモリを確保するための処理手順をフローチャートの形式で示している。
例えば、malloc関数を用いてメモリの動的確保が要求される。確保したいヒープ領域のメモリサイズが4KB以上の場合には(ステップS2001のYes)、ページサイズが4KBに定義されているRegion#1からメモリを確保する処理が実行される(ステップS2002)。Region#1からメモリを確保する処理の詳細については、後述に譲る。
一方、確保したいヒープ領域のメモリサイズが4KB未満の場合には(ステップS2001のNo)、ページサイズが1KBに定義されているRegion#2からメモリを確保する処理が実行される(ステップS2003)。Region#2からメモリを確保する処理の詳細については、後述に譲る。
また、図21には、ヒープ領域に確保したメモリを解放するための処理手順をフローチャートの形式で示している。
例えば、free関数を用いてメモリの動的解放が要求される。解放要求されたメモリのアドレスが、ページサイズが4KBに定義されているRegion#1である場合には(ステップS2101のYes)、Region#1(若しくは、ページサイズが4KBの領域)のメモリを解放する処理が実行される(ステップS2102)。Region#1に確保されたメモリを解放する処理の詳細については、後述に譲る。
一方、解放要求されたメモリのアドレスがRegion#1でない場合には(ステップS2101のNo)、Region#2(若しくは、ページサイズが1KBの領域)のメモリを解放する処理が実行される(ステップS2103)。Region#2に確保されたメモリを解放する処理の詳細については、後述に譲る。
図22には、図20に示したフローチャートのステップS2002で実行される、ページサイズが4KBに定義されているRegion#1からメモリを確保するための処理手順をフローチャートの形式で示している。
まず、仮想メモリマネージャは、Region#1内で指定されたサイズの空きアドレス空間の取得を試みる(ステップS2201)。
ここで、Region#1内で指定されたサイズの空きアドレス空間を取得できなかった場合には(ステップS2202のNo)、アドレス空間不足エラーとして、ファイルのマッピングを諦め、本処理を終了する。
また、Region#1内で指定されたサイズの空きアドレス空間を取得できた場合には(ステップS2202のYes)、仮想メモリマネージャは、メモリブロックマネージャから、空きメモリブロックを取得する(ステップS2203)。メモリマネージャから空きメモリブロックを取得する処理の詳細については、後述に譲る。
そして、メモリブロックマネージャから空きメモリブロックを取得することができた場合には(ステップS2204のYes)、仮想メモリマネージャは、物理メモリ305上における当該リージョンのページテーブルに、ステップS2201で取得したメモリブロックのアドレスを書き込んで(ステップS2205)、本処理を終了する。ステップS2205の処理は、図14中において参照番号1403で示す処理に相当する。
また、メモリブロックマネージャから空きメモリブロックを取得することができなかった場合には(ステップS2204のNo)、メモリ不足エラーとしてメモリの確保を諦め、本処理を終了する。
図23には、図21に示したフローチャートのステップS2102で実行される、ページサイズが4KBに定義されているRegion#1に確保したメモリを解放するための処理手順をフローチャートの形式で示している。
仮想メモリマネージャは、解放を指定されたアドレスがRegion#1に該当するかどうかをチェックする(ステップS2301)。
解放を指定されたアドレスがRegion#1に該当する場合には(ステップS2301のYes)、仮想メモリマネージャは、メモリブロックマネージャへメモリブロックを返すための処理を実行する(ステップS2302)。メモリブロックマネージャへメモリブロックを返す処理の詳細については、後述に譲る。
そして、仮想メモリマネージャは、リージョンのページテーブルを未使用に戻して(ステップS2303)、本処理を終了する。ステップS2303の処理は、図14中において参照番号1403で示す処理に相当する。
他方、解放を指定されたアドレスがRegion#1でない場合には(ステップS2301のNo)、アドレス指定エラーとして、メモリの解放を諦めて、本処理を終了する。
図24には、図20に示したフローチャートのステップS2003で実行される、ページサイズが1KBに定義されているRegion#2からメモリを確保するための処理手順をフローチャートの形式で示している。
まず、仮想メモリマネージャは、Region#2内で指定されたサイズの空きアドレス空間の取得を試みる(ステップS2401)。
ここで、Region#2内で指定されたサイズの空きアドレス空間を取得できなかった場合には(ステップS2402のNo)、アドレス空間不足エラーとして、ファイルのマッピングを諦め、本処理を終了する。
また、Region#2内で指定されたサイズの空きアドレス空間を取得できた場合には(ステップS2402のYes)、仮想メモリマネージャは、メモリブロックマネージャから、空きメモリブロックを取得する(ステップS2403)。メモリマネージャから空きメモリブロックを取得する処理の詳細については、後述に譲る。
そして、メモリブロックマネージャから空きメモリブロックを取得することができた場合には(ステップS2404のYes)、仮想メモリマネージャは、物理メモリ305上における当該リージョンのページテーブルに、ステップS2401で取得したメモリブロックのアドレスを書き込んで(ステップS2405)、本処理を終了する。ステップS2405の処理は、図14中において参照番号1403で示す処理に相当する。
また、メモリブロックマネージャから空きメモリブロックを取得することができなかった場合には(ステップS2404のNo)、メモリ不足エラーとしてメモリの確保を諦め、本処理を終了する。
図25には、図21に示したフローチャートのステップS2103で実行される、ページサイズが1KBに定義されているRegion#2に確保したメモリを解放するための処理手順をフローチャートの形式で示している。
仮想メモリマネージャは、解放を指定されたアドレスがRegion#2に該当するかどうかをチェックする(ステップS2501)。
解放を指定されたアドレスがRegion#2に該当する場合には(ステップS2501のYes)、仮想メモリマネージャは、メモリブロックマネージャへメモリブロックを返すための処理を実行する(ステップS2502)。メモリブロックマネージャへメモリブロックを返す処理の詳細については、後述に譲る。
そして、仮想メモリマネージャは、リージョンのページテーブルを未使用に戻して(ステップS2503)、本処理を終了する。ステップS2303の処理は、図14中において参照番号1403で示す処理に相当する。
他方、解放を指定されたアドレスがRegion#2でない場合には(ステップS2501のNo)、アドレス指定エラーとして、メモリの解放を諦めて、本処理を終了する。
図26には、図22に示したフローチャートのステップS2203、並びに図24に示したフローチャートのステップS2403で実行される、メモリブロックマネージャから空きメモリブロックを取得するための処理手順をフローチャートの形式で示している。
メモリブロックマネージャは、物理メモリブロックに空きがあるかどうかをチェックする(ステップS2601)。
そして、物理メモリブロックに空きがある場合には(ステップS2601のYes)、メモリブロックマネージャは、空きメモリブロックの状態を使用済みに変更して(ステップS2602)、本処理を終了する。
他方、物理メモリブロックに空きがない場合には(ステップS2601のNo)、メモリ不足エラーとして、空きメモリブロックの取得を諦め、本処理を終了する。
図27には、図23に示したフローチャートのステップS2302、並びに図25に示したフローチャートのステップS2503で実行される、メモリブロックマネージャへメモリブロックを返すための処理手順をフローチャートの形式で示している。
メモリブロックマネージャは、仮想メモリマネージャから返されたメモリブロックの状態を空きに変更して(ステップS2701)、本処理を終了する。
図28には、仮想メモリマネージャによって提供されるリージョンのうち、Region#3をスタック領域として使用するための仕組みを示している。
スタック領域は、プログラムを実現する各タスクについてそれぞれ1つずつ存在する。スタック領域は、プログラムの実行における関数呼び出しの進行などにより、動的に使用量が増えていく領域である。本実施形態では、システムで動作するタスクの平均的なスタック消費量が小さい場合を考慮して、スタック領域として使用されるRegion#3のページサイズを1KBとする。
タスクを初期化する際には、まず1ページ分の物理メモリがそのタスクのスタック領域として仮想アドレス空間に割り当てられ、タスクの動作中にそのページを使い切ると動的に1ページずつ追加の物理メモリが仮想アドレス空間に割り当てられていく。
タスクのスタック消費が進んで割り当てられた物理メモリを使い尽くすと、まだメモリが割り当てられていない仮想アドレスへのアクセスが発生するため、そのタスクがバスフォルトを起こす。OSは、そのバスフォルトのハンドラ内で、メモリブロックマネージャから確保した物理メモリをバスフォルトの起きた仮想アドレスに割り当てることによって、動的にスタック領域の伸長を実現している。
図29には、タスクのバスフォルト処理として、スタック領域を動的に割り当てるための処理手順をフローチャートの形式で示している。
タスクのバスフォルトが発生すると、バスフォルトハンドラは、そのフォルト発生アドレスが、スタック領域として使用しているRegion#3かどうかをチェックする(ステップS2901)。
フォルト発生アドレスがRegion#3でない場合には(ステップS2901のNo)、バスエラーによりタスクを停止して、本処理を終了する。
また、フォルト発生アドレスがRegion#3である場合には(ステップS2901のYes)、バスフォルトハンドラは、メモリブロックマネージャから、空きメモリブロックを取得する(ステップS2902)。メモリマネージャから空きメモリブロックを取得する処理は、図26に示した処理手順(前述)に従って実行される。
そして、メモリブロックマネージャから空きメモリブロックを取得することができた場合には(ステップS2903のYes)、バスフォルトハンドラは、物理メモリ305上における当該リージョンのページテーブルに、ステップS2902で取得したメモリブロックのアドレスを書き込んで(ステップS2904)、バスフォルトハンドラによる本処理を終了する。ステップS2904の処理は、図14中において参照番号1403で示す処理に相当する。
また、メモリブロックマネージャから空きメモリブロックを取得することができなかった場合には(ステップS2903のNo)、メモリ不足エラーとしてメモリの確保を諦め、本処理を終了する。
また、タスクが終了すると、それまでに割り当てられたスタックを解放する処理を実施する。
図30には、タスク終了時にスタックを解放するための処理手順をフローチャートの形式で示している。
タスクの終了時に、仮想メモリマネージャは、メモリブロックマネージャへメモリブロックを返すための処理を実行する(ステップS3001)。メモリブロックマネージャへメモリブロックを返す処理は、図27に示した処理手順(前述)に従って実行される。
そして、仮想メモリマネージャは、リージョンのページテーブルを未使用に戻して(ステップS3002)、本処理を終了する。ステップS3002の処理は、図14中において参照番号1403で示す処理に相当する。
なお、本実施形態における各リージョンのページサイズの設定(テキスト領域:64KB、ヒープ領域:4KB又は1KB、スタック領域:1KB)は、一例に過ぎない。実行するアプリケーションタスクの規模や性質、機器(センシングデバイス100)が搭載するメモリ容量などの条件に応じて、各リージョンにおける適切なページサイズは変わってくる。重要な点は、テキスト、ヒープ、スタックの各領域に対する要求は異なっており、本明細書で開示する技術によれば、かかる要求に対して少ないメモリで適切なページサイズを用いることができることである。
本実施形態では、センシングデバイス100上でセンシングタスク、行動推定タスク、及び通信タスクが動作していることを想定している(例えば、図15を参照のこと)。また、本実施形態では、これらのタスクが以下のような性質とメモリへの要求を持っていることを想定している。
(1)センシングタスク
センシングタスクは、定期的に一定の周期で各種センサ105から情報を取得して、行動推定タスクにセンサ値を渡す。センシングタスクの命令コードは、フラッシュメモリ104の1ブロック(64KB)に収まる程度であり、ヒープ領域からは1KB程度のメモリ領域数個を使用する。スタック領域の消費量は1KB程度である。
(2)行動推定タスク
行動推定タスクは、センシングタスクから渡されたセンサ値と、フラッシュメモリ104上の行動推定辞書を用い定期的に行動推定を行うアルゴリズムを実行し、推定した結果を通信タスクに渡す。行動推定タスクの命令コード、並びに行動推定辞書はそれぞれフラッシュメモリの1ブロック(64KB)に収まる程度であり、ヒープ領域からは16KB程度のメモリ領域と、1KB程度のメモリ領域数個を使用する。スタック領域の消費量は4KB程度である。
(3)通信タスク
通信タスクは、行動推定タスクの推定結果をクラウド202上のサーバ202に送信する。行動推定タスクからは定期的に送信データを受け取るが、サーバ202との通信中の接続遮断やその後の再試行など、不定期にエラー処理などの例外処理が必要となる場合がある。通信タスクの命令コードはフラッシュメモリ104上の256KB程度(4ブロック)であり、ヒープ領域からは4KB程度のメモリ領域数個と、1KB程度のメモリ領域を10数個使用する。スタック領域の消費量は、通常状態では2KB程度だが、例外処理などで4KB程度に増加する場合がある。
上記のような前提において、本明細書で開示する技術によれば、仮想アドレス空間で各リージョンを以下のように実現することができる。
(1)テキスト領域
テキスト領域を提供するRegion♯0は、フラッシュメモリ104のブロックサイズである64KBをページサイズとする。各タスクの必要ページ数はそれぞれ1ページ、2ページ、4ページであり、合計7ページ分のページテーブルがあれば、全タスクのテキスト領域を提供することができる。
(2)ヒープ領域
ヒープ領域を提供するRegion♯1及びRegion♯2は、前述した通り、各種のメモリ確保要求に応じるために、4KBページと1KBページの2つのページサイズを使用する。上述した実施形態ではメモリ要求は1KB程度のものと4KBを超えるものの2種類に大別できるため、それぞれでリージョンを使い分けることでメモリ断片化の防止に効果がある。
(3)スタック領域
スタック領域を提供するRegion♯3は、タスクの中で必要とするスタック消費量の最低値である1KBをページサイズとして使用する。各タスクはそれぞれ最大1ページ、4ページ、4ページ分の物理メモリをスタックとして割り当てることになる。例えば、ページサイズを4KBに指定した際はセンシングタスクの場合、1KBしか使われないために3KB分が無駄になるが、そうした無駄を抑えることができる。
このように用途に応じた適切なページサイズを使用することは、メモリの無駄やページテーブルのサイズを抑えることにつながる。それに加えて、MMU102においてアドレス変換に必要とするTLBのエントリ数を抑えることにもなる。MMU102によるアドレス変換には、最終的には変換元の仮想アドレス(ベース仮想アドレスTB)と変換先の物理アドレス(ベース物理アドレスTT)がTLB301に載ることが必要になる。ところが、TLB301のエントリ数には限りがあり、TLB301でのベース仮想アドレス比較が合致しなかった場合(すなわち、TLBミスした場合)には、リージョンデスクリプタ302を用いたページウォーク処理という追加の処理が必要になる(TLB301を用いたアドレス変換や、TLBミス時のリージョンデスクリプタ302を用いたページウォーク処理については、図3~図7を参照しながら、既に説明した通りである)。ページテーブルのサイズを抑えることは、こうしたページウォーク処理の頻度を下げることにもつながる。
以上、特定の実施形態を参照しながら、本明細書で開示する技術について詳細に説明してきた。しかしながら、本明細書で開示する技術の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。
本明細書で開示するメモリ管理技術は、例えば小容量のメモリしか持たない組み込み機器に適用して、アドレス変換の対象となる複数のリージョンを定義するとともに、リージョン毎のページサイズを定義することによって、無駄なメモリ消費を抑制して、ページ単位で効率的にアドレス変換を行うことができる。勿論、本明細書で開示するメモリ管理技術を、通常又は大容量のメモリを装備する情報処理装置にも同様に適用することができる。
要するに、例示という形態により本明細書で開示する技術について説明してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本明細書で開示する技術の要旨を判断するためには、特許請求の範囲を参酌すべきである。
なお、本明細書の開示の技術は、以下のような構成をとることも可能である。
(1)ページ単位で仮想アドレスから物理アドレスへのアドレス変換を行うメモリ管理装置であって、
前記仮想アドレス空間に定義されたリージョンのアドレス変換情報と、リージョンが持つ固有のページサイズを保持するリージョン情報保持部と、
仮想アドレスを含むリージョンの前記アドレス変換情報を用いて、仮想アドレスに対応する物理アドレスの情報を探索する探索部と、
を具備するメモリ管理装置。
(2)前記リージョン情報保持部は、仮想アドレス空間上に定義された各リージョンのベース仮想アドレスと、物理メモリ上に置かれたリージョン毎のページテーブルのアドレスと、リージョンに定義されたページサイズ、及びリージョンサイズに関する情報をリージョン毎のエントリに保持し、
前記探索部は、仮想アドレスを含むリージョンに対応するページテーブルアドレスに基づいて、前記物理メモリ上の該当するページテーブルから仮想アドレスに対応する物理アドレスの情報を探索する、
上記(1)に記載のメモリ管理装置。
(3)前記探索部は、
前記リージョン情報保持部内の、ベース仮想アドレスと、ベース仮想アドレスにリージョンのページサイズを加算したアドレス範囲に仮想アドレスが含まれるエントリから、仮想アドレスを含むリージョンのページテーブルアドレスを特定して、
そのページテーブルアドレスで指定されるページテーブル上の、仮想アドレスとベース仮想アドレスの差分をページサイズで割算して特定されるページから物理アドレス情報を取得する、
上記(2)に記載のメモリ管理装置。
(4)ページ単位でベース仮想アドレスとベース物理アドレスの対応関係を示す情報と、その仮想アドレスを含むリージョンに定義されたページサイズの情報を保持するアドレス変換バッファと、
前記アドレス変換バッファ中の仮想アドレスにヒットするエントリから取得されるベース物理アドレスと仮想アドレスを組み合わせて、仮想アドレスに対応する物理アドレスに変換するアドレス変換部と、
をさらに備える上記(1)乃至(3)のいずれかに記載のメモリ管理装置。
(5)前記アドレス変換部は、ベース仮想アドレスと、ベース仮想アドレスにリージョンのページサイズを加算したアドレス範囲に仮想アドレスが含まれるエントリを、前記アドレス変換バッファ内で検索する、
上記(4)に記載のメモリ管理装置。
(6)用途が異なるデータを格納する複数のメモリ領域に対して、仮想アドレス空間上で異なるリージョンを割り当てる、
上記(1)乃至(5)のいずれかに記載のメモリ管理装置。
(7)テキスト領域、ヒープ領域、及びスタック領域に対して、仮想アドレス空間上で異なるリージョンを割り当てる、
上記(1)乃至(6)のいずれかに記載のメモリ管理装置。
(8)テキスト領域に対して、所定のブロックサイズに基づいてページサイズが定義されたリージョンを割り当てる、
上記(1)乃至(7)のいずれかに記載のメモリ管理装置。
(9)ヒープ領域に対して、ページサイズが異なる2以上のリージョンを割り当てる、
上記(1)乃至(8)のいずれかに記載のメモリ管理装置。
(10)ヒープ領域からメモリ領域を確保する際に、確保したいメモリサイズを超えないページサイズが定義されたリージョンを割り当てる、
上記(9)に記載のメモリ管理装置。
(11)スタック領域に割り当てられたリージョンでバスフォルトが発生したことに応答して、ページサイズ単位で物理メモリを割り当てる、
上記(1)乃至(10)のいずれかに記載のメモリ管理装置。
(12)ページ単位で仮想アドレスから物理アドレスへのアドレス変換を行うメモリ管理方法であって、
前記仮想アドレス空間に定義されたリージョンのアドレス変換情報とリージョンが持つ固有のページサイズを保持するリージョン情報保持部に保持された前記アドレス変換情報を用いて、仮想アドレスに対応する物理アドレスの情報を探索する探索ステップと、
ページ単位でベース仮想アドレスとベース物理アドレスの対応関係を示す情報と、その仮想アドレスを含むリージョンに定義されたページサイズの情報を保持するアドレス変換バッファ中の仮想アドレスにヒットするエントリから取得されるベース物理アドレスと仮想アドレスを組み合わせて、仮想アドレスに対応する物理アドレスに変換するアドレス変換ステップと、
を有するメモリ管理方法。
(13)物理メモリと、
仮想アドレス空間に定義されたリージョンのアドレス変換情報とリージョンが持つ固有のページサイズを保持するリージョン情報保持部と、仮想アドレスを含むリージョンの前記アドレス変換情報を用いて仮想アドレスに対応する物理アドレスの情報を探索する探索部を備えて、ページ単位で仮想アドレスから物理アドレスへのアドレス変換を行うメモリ管理ユニットと、
を具備する情報処理装置。
100…センシングデバイス
101…CPU、102…MMU、103…SRAM
104…フラッシュメモリ、105…センサ
106…通信モジュール、107…電池、110…バス
200…基地局、201…クラウド、202…サーバ

Claims (12)

  1. ページ単位で仮想アドレスから物理アドレスへのアドレス変換を行うメモリ管理装置であって、
    前記仮想アドレス空間に定義されたリージョンのアドレス変換情報と、リージョンが持つ固有のページサイズを保持するリージョン情報保持部と、
    仮想アドレスを含むリージョンの前記アドレス変換情報を用いて、仮想アドレスに対応する物理アドレスの情報を探索する探索部と、
    を具備し、
    前記リージョン情報保持部は、仮想アドレス空間上に定義された各リージョンのベース仮想アドレスと、物理メモリ上に置かれたリージョン毎のページテーブルの物理アドレスと、リージョンに定義されたページサイズ、及びリージョンサイズに関する情報をリージョン毎のエントリに保持し、
    前記探索部は、仮想アドレスを含むリージョンに対応するページテーブルの物理アドレスに基づいて、前記物理メモリ上の該当するページテーブルから仮想アドレスに対応する物理アドレスの情報を探索する、
    メモリ管理装置。
  2. 前記探索部は、
    前記リージョン情報保持部内の、ベース仮想アドレスと、ベース仮想アドレスにリージョンのページサイズを加算したアドレス範囲に仮想アドレスが含まれるエントリから、仮想アドレスを含むリージョンのページテーブルの物理アドレスを特定して、
    そのページテーブルの物理アドレスで指定されるページテーブル上の、仮想アドレスとベース仮想アドレスの差分をページサイズで割算して特定されるページから物理アドレス情報を取得する、
    請求項1に記載のメモリ管理装置。
  3. ページ単位でベース仮想アドレスとベース物理アドレスの対応関係を示す情報と、その仮想アドレスを含むリージョンに定義されたページサイズの情報を保持するアドレス変換バッファと、
    前記アドレス変換バッファ中の仮想アドレスにヒットするエントリから取得されるベース物理アドレスと仮想アドレスを組み合わせて、仮想アドレスに対応する物理アドレスに変換するアドレス変換部と、
    をさらに備える請求項1に記載のメモリ管理装置。
  4. 前記アドレス変換部は、ベース仮想アドレスと、ベース仮想アドレスにリージョンのページサイズを加算したアドレス範囲に仮想アドレスが含まれるエントリを、前記アドレス変換バッファ内で検索する、
    請求項に記載のメモリ管理装置。
  5. 用途が異なるデータを格納する複数のメモリ領域に対して、仮想アドレス空間上で異なるリージョンを割り当てる、
    請求項に記載のメモリ管理装置。
  6. テキスト領域、ヒープ領域、及びスタック領域に対して、仮想アドレス空間上で異なるリージョンを割り当てる、
    請求項1に記載のメモリ管理装置。
  7. テキスト領域に対して、所定のブロックサイズに基づいてページサイズが定義されたリージョンを割り当てる、
    請求項1に記載のメモリ管理装置。
  8. ヒープ領域に対して、ページサイズが異なる2以上のリージョンを割り当てる、
    請求項1に記載のメモリ管理装置。
  9. ヒープ領域からメモリ領域を確保する際に、確保したいメモリサイズを超えないページサイズが定義されたリージョンを割り当てる、
    請求項に記載のメモリ管理装置。
  10. スタック領域に割り当てられたリージョンでバスフォルトが発生したことに応答して、ページサイズ単位で物理メモリを割り当てる、
    請求項に記載のメモリ管理装置。
  11. ページ単位で仮想アドレスから物理アドレスへのアドレス変換を行うメモリ管理方法であって、
    前記仮想アドレス空間に定義されたリージョンのアドレス変換情報とリージョンが持つ固有のページサイズを保持するリージョン情報保持部に保持された前記アドレス変換情報を用いて、仮想アドレスに対応する物理アドレスの情報を探索する探索ステップと、
    ページ単位でベース仮想アドレスとベース物理アドレスの対応関係を示す情報と、その仮想アドレスを含むリージョンに定義されたページサイズの情報を保持するアドレス変換バッファ中の仮想アドレスにヒットするエントリから取得されるベース物理アドレスと仮想アドレスを組み合わせて、仮想アドレスに対応する物理アドレスに変換するアドレス変換ステップと、
    を有し、
    前記リージョン情報保持部は、仮想アドレス空間上に定義された各リージョンのベース仮想アドレスと、物理メモリ上に置かれたリージョン毎のページテーブルの物理アドレスと、リージョンに定義されたページサイズ、及びリージョンサイズに関する情報をリージョン毎のエントリに保持し、
    前記探索ステップでは、仮想アドレスを含むリージョンに対応するページテーブルの物理アドレスに基づいて、前記物理メモリ上の該当するページテーブルから仮想アドレスに対応する物理アドレスの情報を探索する、
    メモリ管理方法。
  12. 物理メモリと、
    仮想アドレス空間に定義されたリージョンのアドレス変換情報とリージョンが持つ固有のページサイズを保持するリージョン情報保持部と、仮想アドレスを含むリージョンの前記アドレス変換情報を用いて仮想アドレスに対応する物理アドレスの情報を探索する探索部を備えて、ページ単位で仮想アドレスから物理アドレスへのアドレス変換を行うメモリ管理ユニットと、
    を具備し、
    前記リージョン情報保持部は、仮想アドレス空間上に定義された各リージョンのベース仮想アドレスと、物理メモリ上に置かれたリージョン毎のページテーブルの物理アドレスと、リージョンに定義されたページサイズ、及びリージョンサイズに関する情報をリージョン毎のエントリに保持し、
    前記探索部は、仮想アドレスを含むリージョンに対応するページテーブルの物理アドレスに基づいて、前記物理メモリ上の該当するページテーブルから仮想アドレスに対応する物理アドレスの情報を探索する、
    情報処理装置。
JP2020500283A 2018-02-15 2018-11-21 メモリ管理装置及びメモリ管理方法、並びに情報処理装置 Active JP7184074B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018025495 2018-02-15
JP2018025495 2018-02-15
PCT/JP2018/043083 WO2019159472A1 (ja) 2018-02-15 2018-11-21 メモリ管理装置及びメモリ管理方法、並びに情報処理装置

Publications (2)

Publication Number Publication Date
JPWO2019159472A1 JPWO2019159472A1 (ja) 2021-01-28
JP7184074B2 true JP7184074B2 (ja) 2022-12-06

Family

ID=67618557

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020500283A Active JP7184074B2 (ja) 2018-02-15 2018-11-21 メモリ管理装置及びメモリ管理方法、並びに情報処理装置

Country Status (2)

Country Link
JP (1) JP7184074B2 (ja)
WO (1) WO2019159472A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11200175B2 (en) * 2020-03-20 2021-12-14 Arm Limited Memory accessor invailidation
CN114035980B (zh) * 2021-11-08 2023-11-14 海飞科(南京)信息技术有限公司 基于便笺存储器来共享数据的方法和电子装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08329687A (ja) * 1995-06-05 1996-12-13 Hitachi Ltd 半導体集積回路
JPH10301848A (ja) * 1997-04-28 1998-11-13 Hitachi Ltd 多重ページサイズを有する仮想記憶装置

Also Published As

Publication number Publication date
JPWO2019159472A1 (ja) 2021-01-28
WO2019159472A1 (ja) 2019-08-22

Similar Documents

Publication Publication Date Title
US20230315342A1 (en) Memory system and control method
US8095736B2 (en) Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures
CN107844267B (zh) 缓冲区分配和存储器管理
Loh et al. Supporting very large dram caches with compound-access scheduling and missmap
US10572171B2 (en) Storage system
US10613796B2 (en) System and method of writing to nonvolatile memory using write buffers
CN113688062B (zh) 用于存储数据的方法和相关产品
JP7184074B2 (ja) メモリ管理装置及びメモリ管理方法、並びに情報処理装置
US11853223B2 (en) Caching streams of memory requests
CN110276454B (zh) 用于机器学习的系统和控制该系统的方法以及电子系统
KR102588113B1 (ko) 스토리지 장치를 포함하는 사용자 장치 및 그것의 트림 관리 방법
US11243877B2 (en) Method, apparatus for data management, and non-transitory computer-readable storage medium for storing program
CN112889038A (zh) 系统级缓存
CN110688345A (zh) 一种内存文件系统的多粒度结构化空间管理机制
US11126553B2 (en) Dynamic allocation of memory between containers
CN111538680A (zh) 基于逻辑饱和度选择用于垃圾收集的大容量存储装置流
US8275946B1 (en) Channel tags in memory components for optimizing logical to physical address translations
US11403213B2 (en) Reducing fragmentation of computer memory
JPWO2019167360A1 (ja) メモリ管理システム及びメモリ管理方法、並びに情報処理装置
CN113138851B (zh) 一种数据管理方法、相关装置及系统
JP7469306B2 (ja) 仮想ページを不連続なバッキング物理サブページに割り当てることを可能にする方法
US11726681B2 (en) Method and system for converting electronic flash storage device to byte-addressable nonvolatile memory module
US10725675B2 (en) Management apparatus, information processing apparatus, management method, and computer program product
US10394480B2 (en) Storage device and storage device control method
US20230289297A1 (en) Systems and methods for managing memory utilization

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211005

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220929

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221025

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221107

R151 Written notification of patent or utility model registration

Ref document number: 7184074

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151