JP2012033047A - 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム - Google Patents

情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム Download PDF

Info

Publication number
JP2012033047A
JP2012033047A JP2010172758A JP2010172758A JP2012033047A JP 2012033047 A JP2012033047 A JP 2012033047A JP 2010172758 A JP2010172758 A JP 2010172758A JP 2010172758 A JP2010172758 A JP 2010172758A JP 2012033047 A JP2012033047 A JP 2012033047A
Authority
JP
Japan
Prior art keywords
data
write
information
unit
memory
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.)
Withdrawn
Application number
JP2010172758A
Other languages
English (en)
Inventor
Kenta Yasufuku
健太 安福
Masanori Miyagawa
雅紀 宮川
Takeshi Kamimura
剛 上村
Tsutomu Owa
勤 大輪
Tsutomu Azezaki
勉 畦崎
Atsushi Kunimatsu
敦 国松
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2010172758A priority Critical patent/JP2012033047A/ja
Priority to US13/052,203 priority patent/US8612692B2/en
Publication of JP2012033047A publication Critical patent/JP2012033047A/ja
Withdrawn legal-status Critical Current

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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory

Abstract

【課題】キャッシュメモリから他の不揮発性半導体メモリへの書き戻しの効率化を図る。
【解決手段】実施形態に係る情報処理装置1は、メインメモリとして用いられる不揮発性半導体メモリ61〜6n上の第1のデータと、不揮発性半導体メモリ61〜6nのキャッシュメモリとして用いられる半導体メモリ5上の第1のデータと対応する第2のデータとの不一致が発生しているか否かを判断する第1の判断部91と、第1の判断部91によって第1のデータと第2のデータとが不一致であると判断された場合、第2のデータのアクセス頻度情報に基づいて、第1のデータと第2のデータとを一致させる書き戻しの実行タイミングを設定する設定部92と、第2のデータが最後に書き戻されてからの経過時間が、設定部92により設定された実行タイミングとなったか否か判断する第2の判断部93と、第2の判断部93によって、第2のデータの書き戻しの実行タイミングとなったと判断された場合、書き戻しを実行する書き戻し部94とを具備する。
【選択図】 図1

Description

本発明の実施形態は、情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラムに関する。
一般的な仮想記憶技術では、主記憶装置と2次記憶装置とが用いられ、実際の主記憶装置のメモリ容量以上のメモリ空間が提供される。仮想記憶技術では、主記憶装置上に存在していないデータの読み出しが要求された場合には、2次記憶装置から主記憶装置へデータの転送が行われ、これにより、あたかもそのデータが主記憶装置上に存在していたように見せかける。しかしながら、この転送処理に時間がかかると、システム全体の性能が低下してしまう。
仮想記憶技術において、あるデータは、主記憶装置上で更新され、2次記憶装置上のこのデータと一致しない状態(以下、ダーティ(dirty)状態という)になる場合がある。
一般的なOS(オペレーティングシステム)では、定期的に主記憶装置上のデータがダーティ状態であるか否かの確認を行い、ダーティ状態である場合には、主記憶装置から2次記憶装置にデータを書き戻す処理(制御)を行う機能が実装されている。
しかし、既存の書き戻し処理は、最後(最新)の書き込みアクセスから一定時間以上(例えば30秒など)、書き込みアクセスが発生しない場合に、主記憶装置から2次記憶装置にデータの書き戻しを行う、というアルゴリズムになっており、すべての主記憶装置のデータにおいて一律の時間を適用して書き戻しを行っている。
詳細Linux(登録商標)カーネル 第3版 15章「ページキャッシュ」 17章「ページフレームの回収」 Understanding the LINUX(登録商標) KERNEL THIRD EDITION
特開2008−242944号公報 特開平7−146820号公報 特開2001−266580号公報
本発明の実施形態は、キャッシュメモリとして使用される半導体メモリから他の半導体メモリへのデータの書き戻しを効率化する情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラムを提供することを目的とする。
実施形態によれば、情報処理装置は、第1の判断部と、設定部と、第2の判断部と、書き戻し部とを具備する。第1の判断部は、メインメモリとして用いられる不揮発性半導体メモリ上の第1のデータと、不揮発性半導体メモリのキャッシュメモリとして用いられる半導体メモリ上の第1のデータと対応する第2のデータとの不一致が発生しているか否かを判断する。設定部は、第1の判断部によって第1のデータと第2のデータとが不一致であると判断された場合、第2のデータのアクセス頻度情報に基づいて、第1のデータと第2のデータとを一致させる書き戻しの実行タイミングを設定する。第2の判断部は、第2のデータが最後に書き戻されてからの経過時間が、設定部により設定された実行タイミングとなったか否か判断する。書き戻し部は、第2の判断部によって、第2のデータの書き戻しの実行タイミングとなったと判断された場合、書き戻しを実行する。
第1の実施形態に係る情報処理装置の構成の一例を示すブロック図。 第1の実施形態に係る第1のデータと第2のデータとの関係を示すブロック図。 第1の実施形態に係るデータ管理テーブルの一例を示す図。 第1の実施形態に係るダーティ状態判断カウントテーブルの一例を示す図。 第1の実施形態に係る情報処理装置の書き戻し処理の一例を示すフローチャート。 第2の実施形態に係る情報処理装置の構成の一例を示すブロック図。 第2の実施形態に係る情報処理装置の書き戻し処理の一例を示すフローチャート。 書き込みカウントテーブルの一例を示す図。 第3の実施形態に係る情報処理装置の構成の一例を示すブロック図。 第3の実施形態に係るプロファイル部の一例を示すブロック図。 第3の実施形態に係る書き込みアクセスの発生状態のシーケンスと、このシーケンスの条件でプロファイル部を動作させた場合のプロファイルテーブルの変化との一例を示す図。 第3の実施形態に係る情報処理装置の書き戻し処理の一例を示すフローチャート。 第3の実施形態に係る情報処理装置の第1の変形例を示すブロック図。 第3の実施形態に係る情報処理装置の第2の変形例を示すブロック図。 第3の実施形態に係る情報処理装置の第3の変形例を示すブロック図。 第3の実施形態に係る情報処理装置の第4の変形例を示すブロック図。 第4の実施形態に係る情報処理装置の構成の一例を示すブロック図。 第4の実施形態に係るメモリ管理装置と、記憶装置に記憶される各種データとの関係の一例を示すブロック図。 第4の実施形態に係るカラーリング情報とカラーリングテーブルの一例を示す図。
以下、図面を参照しながら本発明の各実施の形態について説明する。なお、以下の説明において、略または実質的に同一の機能および構成要素については、同一符号を付し、必要に応じて説明を行う。
(第1の実施形態)
図1は、本実施形態に係る情報処理装置の構成の一例を示すブロック図である。
情報処理装置1は、例えばSoC(System-on-a-Chip)で構成される。情報処理装置1は、プロセッサP1〜P4、2次キャッシュメモリL2、バス2、メモリ管理装置3を具備する。
プロセッサP1〜P4は、それぞれが1次キャッシュメモリL1−1〜L1−4、MMU41〜44を具備する。プロセッサP1〜P4としては、例えばCPU(Central Processing Unit)が用いられるが、MPU(Micro Processor Unit)、GPU(Graphic Processor Unit)などのような他の処理ユニットが用いられてもよい。この図1において、プロセッサP1〜P4の数は4つであるが、プロセッサの数は1以上であればよい。
プロセッサP1〜P4は、2次キャッシュメモリL2を共有し、バス2を介して、メモリ管理装置3と電気的に接続される。
メモリ管理装置3は、外部の揮発性半導体メモリ5、不揮発性半導体メモリ61〜6nと電気的に接続されている。プロセッサP1〜P4は、メモリ管理装置3を介して、揮発性半導体メモリ5、不揮発性半導体メモリ61〜6nにアクセス可能である。
プロセッサP1〜P4とメモリ管理装置3とは、バス2によってデータを送受信可能に接続されている。また、例えば、プロセッサP1〜P4とメモリ管理装置3とは、非同期に動作可能であり、プロセッサP1〜P4で処理実行中に、メモリ管理装置3が不揮発性半導体メモリ61〜6nに対してウェアレベリング、ガーベージコレクション、コンパクションを実行することができる。
なお、本実施の形態において、情報処理装置1と、揮発性半導体メモリ5及び不揮発性半導体メモリ61〜6nとは、別チップとされているが、情報処理装置1内に、揮発性半導体メモリ5及び不揮発性半導体メモリ61〜6nが含まれる構成としてもよい。
メモリ管理装置3の内部には、処理部7が備えられている。この処理部7としては、例えばMPUが用いられるが、他の処理ユニットが用いられるとしてもよい。
処理部7は、不揮発性半導体メモリ61〜6nを使用するための種々の処理を、ソフトウェア8に基づいて制御する。本実施形態において、プロセッサP1〜P4と処理部7とで、不揮発性半導体メモリ61〜6nに対する処理を分担して実行するとしてもよい。例えば、ソフトウェア8は、不揮発性半導体メモリ61〜6nに記憶されており、起動時に処理部7によって不揮発性半導体メモリ61〜6nから読み出され、実行される。
揮発性半導体メモリ5と不揮発性半導体メモリ61〜6nは、メインメモリとして使用される。本実施形態では、不揮発性半導体メモリ61〜6nに、十分なメモリ量が確保される。不揮発性半導体メモリ61〜6nのメモリ容量は、揮発性半導体メモリ5よりも大きい。そして、揮発性半導体メモリ5には、例えば、最近アクセスされたデータ、使用頻度の高いデータなどのアクセスされる可能性の高いデータが不揮発性半導体メモリ61〜6nからキャッシュされる。プロセッサP1〜P4が揮発性半導体メモリ5にアクセスする場合に、揮発性半導体メモリ5にアクセス対象データが存在しない場合、不揮発性半導体メモリ61〜6nと揮発性半導体メモリ5との間でデータ転送が実行される。このように、揮発性半導体メモリ5と不揮発性半導体メモリ61〜6nとを組み合わせて使用することで、揮発性半導体メモリ5のメモリ容量より大きいメモリ空間がメインメモリとして使用可能となる。
本実施形態において揮発性半導体メモリ5は、例えば、DRAM(Dynamic Random Access Memory)であるとする。しかしながら、揮発性半導体メモリ5としては、DRAMに代えて、FPM−DRAM(Fast Page Mode)、EDO−DRAM(Extended Data Out DRAM)、SDRAM(Synchronous DRAM)などのような、コンピュータにおいてメインメモリとして利用されるメモリを用いるとしてもよい。また、DRAM程度の高速ランダムアクセスが可能であり、アクセス可能上限回数に実質的な制限がないのであれば、揮発性半導体メモリ5に代えて、MRAM(Magnetoresistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)などの不揮発性ランダムアクセスメモリが用いられるとしてもよい。
本実施形態において不揮発性半導体メモリ61〜6nは、例えば、NAND型フラッシュメモリであるとする。しかしながら、不揮発性半導体メモリ61〜6nは、例えばNOR型フラッシュメモリなど、他の不揮発性半導体メモリが用いられるとしてもよい。
揮発性半導体メモリ5は、不揮発性半導体メモリ61〜6nよりも小容量(例えば128MByte〜4GByteなど)だが高速にアクセス可能である。
不揮発性半導体メモリ61〜6nは、揮発性半導体メモリ5よりも大容量(例えば32GByte〜512GByteなど)だがアクセス時間が長い。本実施形態のように、不揮発性半導体メモリ61〜6nがNAND型フラッシュメモリの場合、書き込みと読み出しとはページ単位で実行される。消去は複数ページを含むブロック単位で行われる。NAND型フラッシュメモリでは、書き込みは、消去後に実行されなければならない。したがって、ページ単位のデータ書き替えにおいては、このページ単位のデータを含むブロックの内容がすべて読み出されて一時記憶され、ブロック領域が消去され、一時記憶されているブロックの内容に含まれているページ単位のデータの書き替えが実行され、書き替え後のブロックの内容が、消去されたブロック領域に書き込まれる。
不揮発性半導体メモリ61〜6nは、最大の書き込み回数(例えば1万回や3万回など)に制限があり、その回数を超えると、エラー率が上昇し、デバイスとして正しいデータ書き込みの保証ができなくなる場合がある。
情報処理装置1では、プロセッサP1〜P4により、OS9及びアプリケーションなどのソフトウェア10が実行される。
OS9は、不一致判断部91、設定部92、判断部93、書き戻し部94を含む。不一致判断部91は、メインメモリとして用いられる不揮発性半導体メモリ61〜6n上の第1のデータと、不揮発性半導体メモリ61〜6nのキャッシュメモリとして用いられる揮発性半導体メモリ5上に記憶され、第1のデータと対応する第2のデータとの不一致が発生しているか否かを判断する。
ここで、図2を参照して、不揮発性半導体メモリ61〜6n上の第1のデータと、揮発性半導体メモリ5上の第2のデータとの関係について説明する。
不揮発性半導体メモリ61〜6n上には、複数のデータが記憶されている。前述のように、不揮発性半導体メモリ61上に記憶された複数のデータのうちアクセス可能性の高いデータは、揮発性半導体メモリ5上にキャッシュされる。本実施形態では、不揮発性半導体メモリ61〜6n上のデータを第1のデータと称し、揮発性半導体メモリ5にキャッシュされたデータを第2のデータと称する。つまり、不揮発性半導体メモリ61〜6n上の第1のデータが揮発性半導体メモリ5上にキャッシュされた場合、このキャッシュされたデータを、第2のデータと称する。また、第1のデータと第2のデータとの関係を「対応する」と称する。
第1のデータと第2のデータとは、第2のデータがキャッシュされた直後においては同一のデータであり、一致している。しかし、第2のデータに対して、プロセッサP1〜P4から書き込みアクセスが発生すると、第2のデータは更新され、第1のデータと第2のデータとが不一致となる状態(ダーティ状態)が発生する。その後、第2のデータと第1のデータとが一致するように、揮発性半導体メモリ5の第2のデータを不揮発性半導体メモリ61〜6n上の第1のデータに書き戻す。これにより、第1のデータと第2のデータとが一致する。このように、第2のデータへの書き込みアクセス発生から書き戻しが行われるまでの間において、第1のデータと第2のデータとの間で不一致の状態が発生する。
設定部92は、不一致判断部91によって第1のデータと第2のデータとが不一致であると判断された場合に、第2のデータのアクセス頻度情報に基づいて、第1のデータと第2のデータを一致させる書き戻しの実行タイミングを設定する。アクセス頻度情報及び設定部92の書き戻しの実行タイミングの設定についての詳細は後述する。
判断部93は、第2のデータが最後に書き戻されてからの経過時間が、設定部92により設定された実行タイミングとなったか否か判断する。
書き戻し部94は、判断部93によって、第2のデータの書き戻しの実行タイミングとなったと判断された場合、書き戻しを実行する。
次に、OS9の動作について詳細に説明する。
前述のように、揮発性半導体メモリ5にアクセス対象データが存在しない場合、不揮発性半導体メモリ61〜6nと揮発性半導体メモリ5との間でデータ転送が実行される。本実施形態において、このデータ転送を実現するために、一般的な仮想記憶技術と同様に、プロセッサP1〜Pnに実装されているメモリ管理ユニット(MMU:Memory Management Unit)41〜44が利用される。揮発性半導体メモリ5に存在するデータは、メモリ管理ユニット41〜4nに登録され、アクセスを可能な状態となっている。一方、揮発性半導体メモリ5に存在しないデータは、MMU41〜44に登録されておらず、この揮発性半導体メモリ5に存在しないデータにアクセスする場合には、MMU例外を発生させる。このMMU例外により、プロセッサP1〜Pn上のソフトウェア10からOS9への切り替えが実行され、OS9は、不揮発性半導体メモリ61〜6nから揮発性半導体メモリ5へのデータ転送が実行される。そして、OS9により、不揮発性半導体メモリ61〜6nから揮発性半導体メモリ5に必要なデータが転送されると、MMU41〜44の動作に必要なテーブルを書き換え、転送されたデータをアクセス可能とし、OS9からソフトウェア10に処理を戻す。このデータ転送のデータ処理単位は4KByteや1MByteなどのサイズであり、一般的にはページサイズと呼ばれる。なお、このデータ転送動作の処理単位であるページサイズと、NAND型フラッシュメモリの書き込み単位又は読み出し単位のページサイズとは異なる意味で使用される。
このデータ転送によって、OS9及びソフトウェア10は、本来の揮発性半導体メモリ5のメモリ容量以上のメモリ空間を使用可能になる。しかしながら、OS9及びソフトウェア10にとって、上記のデータ転送動作が発生した場合、データ転送の時間分、処理が中断し、性能の低下が生じる。そのため、上記のデータ転送の処理時間を短くすることが重要である。
上記のデータ転送により、新しいデータを不揮発性半導体メモリ61〜6nから揮発性半導体メモリ5に転送する場合に、揮発性半導体メモリ5上のデータ転送先の領域に記憶されたデータがダーティ状態の場合には、一旦、転送先に記憶されているダーティ状態のデータを揮発性半導体メモリ5から不揮発性半導体メモリ61〜6nに書き戻した後でなければ、不揮発性半導体メモリ61〜6nから揮発性半導体メモリ5に新しいデータをデータ転送することができない。このため、データ転送を実行する場合に、転送先の領域がダーティ状態である場合、データ転送の処理時間が長くなる。
このような処理時間の長時間化を抑制することを目的として、ダーティ状態の領域を減らすために書き戻しを頻繁に実行すると、不揮発性半導体メモリ61〜6nへの書き込み回数が増加し、不揮発性半導体メモリ61〜6nの寿命が低下する可能性がある。
本実施形態の情報処理装置1は、後述するアクセス頻度情報に基づき、揮発性半導体メモリ5上の第2のデータのアクセス頻度情報に応じて、揮発性半導体メモリ61〜6nへの書き戻しの実行タイミングを制御することにより、データ転送の処理時間の短縮化を図り、かつ、不揮発性半導体メモリ61〜6nの寿命低下の抑制を図ることを可能とする。
次に、アクセス頻度情報について説明する。
情報処理装置1は、書き戻しを行うか否か判断するために、データ固有のアクセス頻度情報を用いる。アクセス頻度情報は、例えば、ページサイズごとのデータに対して付与され、当該データの特性(データの特徴又は属性)に基づいて決定される情報であり、データのアクセス頻度を表す情報である。本実施形態において、アクセス頻度は、例えば、データの特性に基づいて決定され、当該データの単位時間当たりに発生するアクセスの回数などを表すとする。アクセス頻度情報は、例えば、アクセス頻度情報管理テーブル(図示せず)で管理される。アクセス頻度情報管理テーブルは、例えば、OS9又はメモリ管理装置3によって管理され、揮発性半導体メモリ5又はメモリ管理装置3内の記憶部(図示せず)に配置される。
アクセス頻度情報は、例えば、プログラム自身が持つ特徴、プログラムのテキスト(txt)領域、スタック(stack)領域、ヒープ(heap)領域、データ(data)領域のうちのどの領域に配置されるかなどの、データの特性に基づいて定義される。
なお、アクセス頻度情報としては、例えば、後述するカラーリング情報を用いることもできる。
前述のOS9に備えられる設定部92は、既存の書き戻し処理(書き戻し制御)において一定に決められていた最後に書き込みアクセスが発生してから書き戻しを行なうまでの時間を、アクセス頻度情報に基づいて変更させる。
書き戻し処理の第1の例について説明する。
例えば、既存の書き戻し処理において、書き込みアクセスから30秒経過後にダーティ領域のデータの書き戻しが実行されるように設定されているとする。この場合、あるデータに対して書き込みアクセスから32秒後に次の書き込みアクセスが発生すると、ダーティ状態を解消するために、2回の書き戻しが必要となる。すなわち、第1の書き込みアクセスによりデータがダーティ状態となり、第1の書き込みアクセスから30秒後に第1の書き戻しが実行され、その第1の書き戻しの2秒後に当該データに対する第2の書き込みアクセスが実行されて再びダーティ状態となり、第2の書き込みアクセスから30秒後に第2の書き戻しが発生する。
これに対して、本実施形態のOS9は、アクセス頻度情報に基づいて、このデータの書き戻しを、最後の書き込みアクセスから32秒より長い時間経過した後に実行するように設定する。これにより、上記の第1の書き込みアクセス及び第2の書き込みアクセスの後に1回の書き戻し処理を実行することでダーティ状態を解消することが可能である。したがって、書き戻しの発生回数を抑制することが可能となる。
書き戻し処理の第2の例について説明する。
既存の書き戻し処理では、書き込み頻度の低いデータについて書き込みアクセスが発生した場合、設定された期間が経過するまでダーティ状態が続く。
これに対して、本実施形態のOS9は、アクセス頻度情報に基づいて、書き込みアクセスが単発であり、次の書き込みアクセスがしばらく発生しないデータについて、書き込みアクセスから短い時間経過後に書き戻しを実行する。これにより、ダーティ状態のデータ領域を減少させることができる。
このように、本実施形態では、揮発性半導体メモリ5から不揮発性半導体メモリ61〜6nへの書き戻し回数を減少させることができ、その結果、不揮発性半導体メモリ61〜6nの寿命低下を抑制することができる。また、本実施形態では、ダーティ状態を少なくすることができ、不揮発性半導体メモリ61〜6nから揮発性半導体メモリ5へのデータ転送の処理時間を抑制することができる。
ここで、アクセス頻度情報に基づく最後の書き込みアクセスから書き戻しを実行するまでの時間の設定方法の具体例について説明する。
スタック領域又はヒープ領域に配置されるデータ(スタック領域又はヒープ領域に基づくデータ)は、ある一定期間アクセスが発生しなくても、再度、アクセスされる可能性が非常に高いデータであり、他のデータ領域に配置されるデータと異なる特徴を持つ。スタック領域又はヒープ領域に配置されるデータは、他のデータ領域に配置されるデータと比較して、書き戻し後すぐに書き込みアクセスが発生する確率が高い。したがって、スタック領域又はヒープ領域に配置されるデータと他のデータ領域に配置されるデータを区別せず、最後の書き込みアクセスから共通の一定時間で書き戻しを行うのではなく、スタック領域又はヒープ領域に配置されるデータに対する書き戻しは、最後の書き込みアクセスから書き戻しが実行されるまでの時間を通常よりも長く設定する。
これにより、書き戻し後すぐに書き込みアクセスが発生する回数を減少させることができ、結果として不揮発性半導体メモリ61〜6nへの書き込み回数を減らすことができる。
ここで説明した具体例は本実施形態の一例であり、他のアクセスパターン又は領域においても別の観点から、最後の書き込みアクセスから書き戻しまでの時間を増減させることが可能である。
図3は、本実施形態に係るデータ管理テーブルの一例を示す図である。
データ管理テーブル11は、例えばOS9の判断部93によって管理されており、例えば揮発性半導体メモリ5に記憶されている。
このデータ管理テーブル11は、各エントリにおいて、データ識別情報と、このデータに対する最後の書き込みアクセスが発生した時刻情報とを含む。このデータ管理テーブル11を参照することにより、OS9の判断部93は、各データについて、最後の書き込みアクセスから経過した時間を求めることができる。
図4は、本実施形態に係るダーティ状態判断カウントテーブルの一例を示す図である。
ダーティ状態判断カウントテーブル12は、例えばOS9の判断部93によって管理されており、例えば揮発性半導体メモリ5に記憶されている。
このダーティ状態判断カウントテーブル12は、各エントリにおいて、データ識別情報と、このデータの最後の書き戻し後にダーティ状態と判断されたが書き戻しが行われなかった回数とを含む。このダーティ状態判断カウントテーブル12を参照することにより、OS9の判断部93は、最後の書き戻し後にダーティ状態と判断された回数が所定の回数以上の場合に書き戻しを実行する、などの判断を行うことができる。
図5は、本実施形態に係る情報処理装置1の書き戻し処理の一例を示すフローチャートである。図5は、スタック領域又はヒープ領域に配置されるデータの書き戻し処理について例示している。
OS9は、例えば、一定の周期で、書き戻し処理を開始する。
OS9は、揮発性半導体メモリ5に割り当てられているデータのうち、処理対象データ(未処理のデータ)を選択する(ステップS1)。
OS9の不一致判断部91は、処理対象データがダーティ状態か否か判断する(ステップS2)。
処理対象データがダーティ状態でない場合、書き戻し処理は、ステップS11に移動する。
処理対象データがダーティ状態の場合、OS9の設定部92は、データ管理テーブル11に基づいて、処理対象データがダーティ状態となった時点から所定の時間が経過しているか否か判断する(ステップS3)。
処理対象データがダーティ状態となった時点から所定の時間が経過していない場合、書き戻し処理はステップS11に移動する。
処理対象データがダーティ状態となった時点から所定の時間が経過している場合、OS9の設定部92は、処理対象データがスタック領域又はヒープ領域に配置されるデータであるかなどを示すアクセス頻度情報を確認する(ステップS4)。
処理対象データがスタック領域又はヒープ領域に配置されるデータでない場合、書き戻し処理はステップS9に移動し、処理対象データがスタック領域又はヒープ領域に配置されるデータである場合、書き戻し処理はステップS6に移動する(ステップS5)。
処理対象データがスタック領域又はヒープ領域に配置されるデータである場合、OS9の判断部93はダーティ状態判断カウントテーブル12に基づいて、揮発性半導体5のスタック領域又はヒープ領域に配置される処理対象データに対して、最後の書き戻し後から所定の回数(例えば4回など)ダーティ状態であると判断されたか否か確認する(ステップS6)。なお、この所定の回数は、アクセス頻度情報などに基づいて、設定部92によって変更可能であるとする。
処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態であると判断された場合、書き戻し処理はステップS8に移動し、処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態でないと判断された場合、書き戻し処理はステップS10に移動する(ステップS7)。
処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態と判断された場合、OS9の判断部93は、ダーティ状態判断カウントテーブル12において、処理対象データに対する最後の書き戻し後からのダーティ状態判断回数をクリアし(ステップS8)、さらに、OS9の書き戻し部94は、この処理対象データに対する揮発性半導体メモリ5から不揮発性半導体メモリ61〜6nへの書き戻しを実行する(ステップS9)。なお、このステップS8及びステップS9の実行順序は、逆でもよく、並列に実行されてもよい。その後、処理はステップS11に移動する。
一方、処理対象データに対して、最後の書き戻し後からの所定の回数ダーティ状態と判断されていない場合、OS9の判断部93は、ダーティ状態判断カウントテーブル12における処理対象データに対して、最後の書き戻し後からダーティ状態と判断された回数をインクリメントする(ステップS10)。その後、処理はステップS11に移動する。
そして、OS9は、上記ステップS1においてすべてのデータが選択されたか否か判断する。まだ、未選択のデータが揮発性半導体メモリ5に存在する場合、書き戻し処理はステップS1に戻る。揮発性半導体メモリ5のすべてのデータが選択された場合、書き戻し処理は終了する(ステップS11)。
以上説明した本実施形態において、情報処理装置1は、データ固有のアクセス頻度情報に基づいて、書き戻し処理(同期処理)のタイミングを制御する。例えば、本実施形態では、特定のデータ領域に配置されるデータに対する、最終の書き込みアクセスから書き戻しを実行するまでの時間が変化され、データ領域に適したタイミングで書き戻しが実行される。これにより、本実施形態においては、既存の書き戻し処理と比較して、不揮発性半導体メモリ61〜6nへの書き戻し回数を減少させることができる。
また、本実施形態においては、既存の書き戻し処理と比べて、書き戻しを早めに実行することができる。これにより、新たなデータが不揮発性半導体メモリ61〜6nから揮発性半導体メモリ5にデータ転送される場合に、揮発性半導体メモリ5のデータを不揮発性半導体メモリ61〜6nに書き戻すことを抑制でき、データのロード処理のオーバーヘッドを軽減させることができる。
(第2の実施形態)
本実施形態では、上記第1の実施形態の変形例として第1から第4の変形例について説明する。
第1の変形例においては、上記図5で説明したOS9による書き戻し処理を、ソフトウェア8を実行する処理部7によって実現する。
これにより、プロセッサP1〜P4の負荷の増加を防止することができる。また、OS9に処理の追加をしなくてもよい。
第2の変形例において、メモリ管理装置3は、図6に示すように、揮発性半導体メモリ5用のコントローラ13と、不揮発性半導体メモリ61〜6n用のコントローラ14とを備えているとしてもよい。
この図6において、コントローラ13は、揮発性半導体メモリ5に対する書き込みアクセス、読み出しアクセス、データの消去などの各種処理を制御する。コントローラ14は、不揮発性半導体メモリ61〜6nに対する書き込みアクセス、読み出しアクセス、データの消去などの各種処理を制御する。
揮発性半導体メモリ5のデータは、コントローラ13、バス2、コントローラ14を経由して、不揮発性半導体メモリ61〜6nに転送される。
一方、不揮発性半導体メモリ61〜6nのデータは、コントローラ14、バス2、コントローラ13を経由して、揮発性半導体メモリ5に転送される。
第3の変形例において、書き戻し処理は、図7に示すフローチャートにしたがって実行される。この図7の書き戻し処理は、揮発性半導体メモリ5上の各データに対して書き戻しを行うか否か判断し、各データに対する判断の終了後に書き戻しを行うと判断されたデータに対して書き戻しを実行する点で、揮発性半導体メモリ5上の各データに対して、書き戻しの判断と実行を繰り返す上記図5の書き戻し処理と異なっている。
図7の書き戻し処理においては、まず、OS9は、処理対象データを選択する(ステップT1)。
OS9の不一致判断部91は、前回の書き戻し後から現時点までについて、処理対象データに対して書き込みアクセスが発生しており、処理対象データがダーティ情報か否か判断する(ステップT2)。
処理対象データがダーティ状態でなければ、書き戻し処理はステップT8に移動する。
処理対象データがダーティ状態の場合、OS9の設定部92は、アクセス頻度情報に基づいて、処理対象データに対する書き戻しを早くするか、遅らせるか、変化させないか判断し、所定回数を設定する(ステップT3)。
OS9の判断部93は、ダーティ状態判断カウントテーブル12に基づいて、処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態であると判断されたか否か判断する(ステップT4)。
処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態であると判断された場合、書き戻し処理はステップT5に移動し、処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態でないと判断された場合、書き戻し処理はステップT7に移動する。
処理対象データに対して、最後の書き戻し後から所定の回数ダーティ状態と判断された場合、OS9の判断部93は、ダーティ状態判断カウントテーブル12において、処理対象データに対する最後の書き戻し後からのダーティ状態判断回数をクリアし(ステップT5)、さらに、OS9の判断部93は、この処理対象データを、書き戻し対象として選択する(ステップT6)。なお、このステップT5及びステップT6の実行順序は、逆でもよく、並列に実行されてもよい。
一方、処理対象データに対して、最後の書き戻し後からの所定の回数ダーティ状態と判断されていない場合、OS9は、ダーティ状態判断カウントテーブル12における処理対象データに対して、最後の書き戻し後からダーティ状態と判断された回数をインクリメントする(ステップT7)。
そして、OS9の書き戻し部94は、上記ステップT1においてすべてのデータが選択されたか否か判断する(ステップT8)。
未選択のデータが揮発性半導体メモリ5に存在する場合、書き戻し処理はステップT1に戻る。
揮発性半導体メモリ5のすべてのデータが選択された場合、OS9の書き戻し部94は、書き戻し対象として選択されたデータに対する書き戻しを実行し(ステップT9)、書き戻し処理を終了する。
このように、書き戻し処理は、様々に最適化して適用することができる。
なお、この図7についても、後述の第4の実施形態で説明するように、OS9に代えて、ソフトウェア8を実行する処理部7が処理主体であるとしてもよい。
第4の変形例において、OS9は、図8に示すような書き込みカウントテーブル15に基づいて、書き戻しを実行するか否か判断するとしてもよい。
書き込みカウントテーブル15は、例えば揮発性半導体メモリ5に記憶されている。この書き込みカウントテーブル15は、各エントリにおいて、データ識別情報と、このデータに対する最後の書き戻し後の揮発性半導体メモリ5への書き込みアクセス回数とを含む。
OS9は、書き込みカウントテーブル15を用いて、揮発性半導体メモリ5に記憶されている各データに対して、このデータの最後の書き戻し後から書き込みアクセスの実行された回数を管理する。
そして、OS9は、アクセス頻度情報に基づいて、各データの所定の回数を設定し、各データについて、設定された所定の回数以上、最後の書き戻しから書き込みアクセスが実行された場合に、書き戻しを実行する。
このように、書き戻しを遅らせる又は早めるための判断には、様々な基準を用いることができる。
(第3の実施形態)
本実施形態では、上記第1及び第2の実施形態の変形例であり、プロファイル部を具備する情報処理装置について説明する。
上記第1の実施形態で説明されたアクセス頻度情報は、データの特性に基づいて、予め決定(予測)される情報である。アクセス頻度情報に基づいて、書き戻しを実行するか否か判断される場合、情報処理装置毎の差異が吸収されない場合がある。情報処理装置毎に、プロセッサ自体の速度、プロセッサの1次キャッシュメモリの動作周波数、共有の2次キャッシュメモリの動作周波数、容量は変わることがある。このような情報処理装置の相違に応じて揮発性半導体メモリ5に対するアクセスパターンも変わる場合がある。
そこで、本実施形態では、例えば、第1の実施形態の情報処理装置1に、さらにアクセス頻度情報を収集するプロファイル部を具備する。プロファイル部はハードウェアで構成される。そして、本実施形態では、第1の実施形態で説明したアクセス頻度情報を補正し、より高精度の書き戻し処理を実現する。
第1の実施形態で説明したアクセス頻度情報は、データ特性に基づいて、予め決定される情報であり、以下において「静的なアクセス頻度情報」と称する。本実施形態で説明される、プロファイル部によって収集されるアクセス頻度情報は、以下において、単に「アクセス頻度情報」と称する。
また、本実施形態では、ハードウェアで構成されたプロファイル部によってアクセス頻度情報の収集を行うため、ソフトウェアでの収集に比べて細かい時間単位での収集がシステム性能の低下を起こさずに可能になる。
図9は、本実施形態に係る情報処理装置の構成の一例を示すブロック図である。
この図9の情報処理装置16においては、上記図6の構成に対して、さらにコントローラ13に隣接してプロファイル部17が備えられている。
プロファイル部17は、コントローラ13へのアクセス情報(アクセス要求信号)を監視し、揮発性半導体メモリ5へのアクセス頻度情報(例えばアクセス履歴情報など)を収集し、記憶する。プロセッサP1〜P4及び処理部7は、バス2を介して、プロファイル部17をアクセスし、プロファイル部17によって収集されたアクセス頻度情報を読み出すことが可能である。
プロファイル部17によって収集される情報には様々な情報が考えられ、さらに、その情報を表現するための実装形態にも様々な構成が考えられる。本実施形態では、プロファイル部17は、データ領域への書き込みアクセスの間隔を監視する。
図10は、本実施形態に係るプロファイル部17の一例を示すブロック図である。
プロファイル部17は、イネーブルレジスタ18、ティックジェネレータ19、マスタカウンタ20、プロファイルテーブル21を記憶する記憶部22、プロファイル制御部23を具備する。
イネーブルレジスタ18は、アクセス頻度情報の収集を行うか否かを示すフラグを記録する。例えば、イネーブルレジスタ18に1がセットされると、プロファイル部17の動作が開始され、所定の時間ごとのティック(Tick)の発生と、揮発性半導体メモリ5に対するアクセス情報の収集が開始される。
ティックジェネレータ19は、アクセス頻度情報を所定の時間単位でアップデートするために、この所定の時間単位でアップデート命令を発する。本実施形態では、ティックが発生されるごとに、アクセス頻度情報が更新される。このように、ティックという概念を用いることにより、あるティック間隔において集中的にアクセスが発生しても、1単位のアクセスとしてカウントすることができる。このティックの間隔は、OS9による書き戻しチェック間隔より短い時間とすることにより、ハードウェアでティックを生成する意義が生じる。ティックの間隔は、例えばOS9、ソフトウェア8などのソフトウェア(以下、単に「ソフトウェア」という)で設定可能とする。
マスタカウンタ20は、ティックが発生されるたびに、値を1インクリメントする32bit長のカウンタである。マスタカウンタ20の値は、ソフトウェアから読み出し可能である。
プロファイルテーブル21は、プロファイル部17によって収集されるアクセス頻度情報の本体である。本実施形態において、プロファイルテーブル21のエントリ数は、128とする。プロファイルテーブル21のすべてのフィールドについて、ソフトウェアから読み出し及び書き込み可能である。
プロファイルテーブル21の各エントリは、有効/無効ビット、アドレス情報、サイズ情報、ティック間書き込み検出情報、最終アクセスティック時間、前最終アクセスティック時間を含む。この図10において、有効/無効ビットは「Valid」、アドレス情報は「Address」、サイズ情報は「Size」、ティック間書き込み検出情報は「Write」、最終アクセスティック時間は「Last Tick Count」、前最終アクセスティック時間は「Prev Tick Count」で表現されている。
有効/無効ビット(1bit)は、そのエントリが有効であるか無効であるかを示す。有効/無効ビットが1の時に、そのエントリはアクセス頻度情報を収集する。
アドレス情報(32bit長)は、このエントリが、どのアドレスについてのアクセス頻度情報を示すかを特定するために基準として用いられる情報である。アドレス情報は、例えばソフトウェアによって設定される。アドレス情報のビット長は、揮発性半導体メモリ5のアドレス範囲と同じであり、本実施形態では揮発性半導体メモリ5は4GByteの容量があるとして、32bitとする。使用されるプロセッサ、揮発性半導体メモリの容量によって、アドレス情報のビット長は変化する。
サイズ情報(2bit長)は、このエントリが、アドレス情報からどの範囲までについてのアクセス頻度情報を管理するかを特定するための情報である。サイズ情報は例えばソフトウェアによって設定される。
例えば、サイズ情報に0が設定されている場合、このエントリはアドレス情報+4KByteの領域に関するアクセス頻度情報を管理する。
例えば、サイズ情報に1が設定されている場合、このエントリはアドレス情報+16KByteの領域に関するアクセス頻度情報を管理する。
例えば、サイズ情報に2が設定されている場合、このエントリはアドレス情報+1MByteの領域に関するアクセス頻度情報を管理する。
例えば、サイズ情報に3が設定されている場合、このエントリはアドレス情報+4MByteの領域部に関するアクセス頻度情報を管理する。
ティック間書き込み検出情報(1bit)は、基本的にハードウェアによってセット、リセットされる。ティック間書き込み検出情報には、ティック区間内でこのエントリに対応する領域に書き込みアクセスが1回でも発生した場合に、1がセットされる。ティック処理の終了時に、ティック間書き込み検出情報には0がセットされる。ティック間書き込み検出情報には、ティック区間内でこのエントリに対応する領域に書き込みアクセスが発生しない場合に、0がセットされる。
最終アクセスティック時間(32bit)は、基本的にハードウェアによって更新される。ティックジェネレータ19によるアップデート命令が発行された際に、ティック間書き込み検出情報に1がセットされている場合、最終アクセスティック時間に、マスタカウンタ20の値がコピーされる。
前最終アクセスティック時間(32bit)は、基本的にハードウェアによって更新される。ティックジェネレータ19によるアップデート命令が発行された際に、ティック間書き込み検出情報に1がセットされている場合、前最終アクセスティック時間に、更新される前の最終アクセスティック時間の値がコピーされる。
プロファイル制御部23は、ティックジェネレータ19からのティック(割り込み)、揮発性半導体メモリ5のアクセス情報を受信し、プロファイルテーブル21の内容を更新する。
本実施形態に係るプロファイル部17が使用される場合には、ソフトウェアによって次の初期設定が実行される。
第1に、プロファイルテーブル21の全エントリに共通的な処理として、ティック間隔が決定される。本実施形態では、1マイクロ秒に1回、ティックが発生されるように、ティック間隔が設定されたとする。
第2に、アクセス頻度情報の測定が求められる揮発性半導体メモリ5のデータ領域毎に、基準となるアドレス情報及び範囲が、プロファイルテーブル21のエントリのアドレス情報及びサイズ情報にセットされ、有効/無効ビットに1がセットされる。エントリ中のその他のフィールドには、初期的に0がセットされる。
第3に、マスタカウンタの値が0にリセットされる。
第4に、イネーブルレジスタ18に1がセットされる。
上記の初期設定後、プロファイル部17の動作は開始され、プロファイル制御部23は、例えば1マイクロ秒ごとに揮発性半導体メモリ5に対するアクセスが発生したか否かを判断し、アクセスが発生していた場合には、プロファイルテーブル21のエントリにおいて、最後(今回)アクセスティック時間と、前回の最終アクセスティック時間とを保存する。
図11は、本実施形態に係る書き込みアクセスの発生状態のシーケンスと、このシーケンスの条件でプロファイル部17を動作させた場合のプロファイルテーブル21の変化との一例を示す図である。
この図11において、1ティックは1マイクロ秒、アクセスのチェック範囲は、アドレス「0x1000_0000から0x1000_0FFF」(4KByte)、アドレス「0x2000_0000から0x2000_3FFF」(16KByte)、アドレス「0x3000_0000から0x300F_FFFF」(1MByte)の3領域とする。
図11のシーケンス図における破線とその数字は、数字が示すアドレスへの書き込みアクセスが発生したことを示す。
この図11のプロファイルテーブル21の変化では、初期設定完了直後のタイミングAと、ティックが発生し、マスタカウンタ20の値がインクリメントされた直後のタイミングB,D,Fのプロファイルテーブル21の状態と、ティックが発生したことに基づいて処理が実行された直後C,E,Gのプロファイルテーブル21の値が図示されている。
タイミングAにおいては、ソフトウェアによりプロファイル部17の初期設定が完了された状態が表されている。設定されたフィールドを除く他のフィールドには、0が設定される。
タイミングBにおいては、該当ティック間隔において、アドレス「0x1000_0000」の属する領域とアドレス「0x3000_0000」の属する領域へアクセスが発生したため、これらの領域に対応するエントリのティック間書き込み検出情報に1がセットされている。
タイミングBに対する処理が実行されたタイミングCにおいて、ティック間書き込み検出情報に1がセットされていたエントリに対して、前最終アクセスティック時間にその時の最終アクセスティック時間の値がセーブされ、最終アクセスティック時間にその時のマスタカウンタの値がセーブされる。このため、1行目のエントリと、3行目のエントリの値が書き換えられる。その後、ティック間書き込み検出情報にはすべて0がセットされる。
タイミングDにおいては、該当ティック間隔において、アドレス「0x1000_0000」の属する領域にのみ書き込みアクセスが発生している。このため、この領域に対応する1行目のエントリのみ、ティック間書き込み検出情報に1がセットされている。
タイミングDに対する処理が実行されたタイミングEにおいて、ティック間書き込み検出情報に1がセットされていた1行目のエントリに対して、前最終アクセスティック時間にその時の最終アクセスティック時間の値「1」がセーブされ、最終アクセスティック時間にその時のマスタカウンタの値「2」がセーブされる。その後、ティック間書き込み検出情報にはすべて0がセットされる。
タイミングFにおいては、タイミングBと同様に、該当ディック間隔において、アドレス「0x1000_0000」の属する領域とアドレス「0x3000_0000」の属する領域へのアクセスが発生している。このため、これらの領域に対応する1行目と3行目のエントリのティック間書き込み検出情報に1がセットされる。
タイミングFに対する処理が実行されたタイミングGにおいて、ティック間書き込み検出情報に1がセットされていた1行目のエントリに対して、前最終アクセスティック時間にその時の最終アクセスティック時間の値「2」がセーブされ、最終アクセスティック時間にその時のマスタカウンタの値「3」がセーブされる。さらに、ティック間書き込み検出情報に1がセットされていた3行目のエントリに対して、前最終アクセスティック時間にその時の最終アクセスティック時間の値「1」がセーブされ、最終アクセスティック時間にその時のマスタカウンタの値「3」がセーブされる。その後、ティック間書き込み検出情報にはすべて0がセットされる。
上記の図11のように、プロファイル部17は動作を進める。ソフトウェアは、適当なタイミングでその瞬間のマスタカウンタ20の値と、各エントリの前最終アクセスティック時間の値及び最終アクセスティック時間の値を参照する。これにより、アクセス頻度情報の調査対象のデータ領域についての、現在から最終の書き込みアクセスまでの間隔と、現在から前回の最後の書き込みアクセスまでの間隔(最後の2アクセス分の間隔)を算出することができる。そして、これら間隔に基づいて、書き戻しを行うか否か判断することができる。
例えば、ソフトウェアは、現在から前回の最後の書き込みアクセスまでの間隔の値が大きい場合には、書き込み間隔が長いデータ領域と判断し、その更新間隔に応じて、データの書き戻しの発生を遅らせる。
また、ソフトウェアは、上記第1の実施形態で説明した静的なアクセス頻度情報を、本実施形態のアクセス頻度情報と併せて利用することも可能である。ソフトウェアは、第1の実施形態で説明した静的なアクセス頻度情報を、本実施形態のアクセス頻度情報よりも重視したい場合には、プロファイル部17によって収集された本実施形態のアクセス頻度情報を無視して書き戻し処理を実行してもよい。第1の実施形態の静的なアクセス頻度情報と、本実施形態のハードウェアによるアクセス頻度情報とを柔軟に組み合わせることで、最適なタイミングで書き戻しを実行することができる。
また、ソフトウェアは、どのデータ領域に対して、プロファイル部17によってアクセス頻度情報を収集するかを、第1の実施形態の静的なアクセス頻度情報に基づいて決定するとしてもよい。
なお、本実施形態では、マスタカウンタ20を32bitとし、ティック間隔を1マイクロ秒としている。このため、最大で振り返られる過去の時間は、2の32乗×1マイクロ秒=約4295秒=約72分となる。つまり約72分後にはマスタカウンタ20の値が0に戻り、また1からカウントされる。つまり、約72分が経過すると、プロファイルテーブル21に登録される前最終アクセスティック時間及び最終アクセスティック時間の大小と、実際にアクセスされた時間との関係が整合しないことになる。このため、ソフトウェアは、マスタカウンタ20が0に戻る可能性を考慮してアクセス頻度の解析を行うか、あるいは72分に一回、プロファイル部17を停止し、設定をやり直す。
本実施形態において、プロファイル部17は、ハードウェアにより実装される。このため、プロファイル部17では、収集できる情報量に上限が存在する。例えば、プロファイル部17は、2GByteのメモリ空間に対するアクセスを4KByte単位で管理するとする。この場合、プロファイル部17は、2GByte/4KByte=512K個のエントリを管理する必要がある。また、プロファイル部17は、1エントリあたり16Byteの情報量を必要とする場合、512K×16Byte=8MByteの情報量を必要とする。8MByteの記憶容量は現在の半導体デバイスでは実装可能なサイズであるが、大きなコストとなる。
また、すべての情報処理装置がメモリ空間2GByteを提供するわけではない。情報処理装置ごとに、提供されるメモリ空間の記憶容量は増減する。したがって、プロファイル部17に求められるエントリ数は情報処理装置ごとに変化する。
そのため、本実施形態においてプロファイル部17は、上述したようにソフトウェアによって指定された領域に対してのみ、アクセス頻度情報を収集する。
しかし、プロファイル部17としては、ソフトウェアによって指示された領域に対してアクセス頻度情報を収集する他にも、効率的にアクセス頻度情報を収集するために、様々な制御を行うことが考えられる。例えば、収集されたアクセス頻度情報のデータ容量が、プロファイル部17の記憶部22に記憶可能なデータ容量を超えた場合(プロファイル部17からアクセス頻度情報が溢れた場合)、プロファイル部17のプロファイル制御部23は、収集されたアクセス頻度情報の一部を、揮発性半導体メモリ5に出力する。このプロファイル制御部23の制御においては、不揮発性半導体メモリ5の領域及びバンド幅が使用される。また、例えば、収集されたアクセス頻度情報のデータ容量が、記憶部22に記憶可能なデータ容量を超えた場合、プロファイル部17のプロファイル制御部23は、記憶部22に直近のアクセス頻度情報を残し、記憶部22から古いアクセス頻度情報を消去する。
なお、本実施形態に係るプロファイル部17は一例であり、本質的にはデータの更新間隔が取得できる仕組みを備えることで様々に構成を変更することができる。本実施形態においては、マスタカウンタ20の値、プロファイルテーブル21の前最終アクセスティック時間の値、最終アクセスティック時間の値から書き込みアクセスの間隔が算出されているが、プロファイルテーブル21の構成を変更することにより、前最終アクセスティック時間よりもさらに前のアクセスティック時間を保存できるようにし、それらの値を用いて書き込みアクセスの間隔が算出されるとしてもよい。これにより、書き込みアクセスの間隔の見積もり精度を向上させることができる。また、プロファイルテーブル21のティック間書き込み検出情報を多ビットにし、ティックが発生するたびに値をシフトさせることで、書き込みアクセスの発生の有無とその発生時間(ティック数)を記憶するなどにより、マスタカウンタ20の値を用いることなく、書き込みアクセスの間隔が算出されるとしてもよい。このように、プロファイル部17の実装は様々に変更して適用できる。
図12は、本実施形態に係る情報処理装置16の書き戻し処理の一例を示すフローチャートである。
この図12において、ステップU1,U2,U4〜U9は、上記図7のステップT1,T2,T4〜T9と同様である。
本実施形態において、ステップU3は、上記第1の実施形態の静的なアクセス頻度情報とプロファイル部17によって収集されたアクセス頻度情報とに基づいて、書き戻しを実行するタイミングを早めたいか、遅くしたいか、変更しないかを判断し、所定の回数を設定する。
上述したプロファイル部17の動作により、プロセッサP1〜P4で実行されるOS9、処理部7で実行されるソフトウェア8などのソフトウェアは、情報処理装置1における各種のデータ領域への書き込みアクセスの間隔を認識することができる。このため、本実施形態では、第1の実施形態の静的なアクセス頻度情報による書き戻し処理の時間決定を補正することができる。
以上説明した本実施形態においては、静的なアクセス頻度情報に加えて、情報処理装置16における実際のアクセス頻度情報(例えば、最後にアクセスした時間情報)が利用され、実際のアクセス頻度の偏りに応じて、静的なアクセス頻度情報だけではカバーしきれなかった、情報処理装置毎に変化するメインメモリへのアクセス回数、同一種別のデータ領域内のアクセス頻度の偏りに対処することができ、書き戻しが実行されるまでの時間を変化させることができる。
また、本実施形態では、指定された一定時間よりも速いタイミングで書き戻しを行うことができ、結果として情報処理装置16の性能を向上させることができる。
なお、本実施形態に係る情報処理装置16は様々に変更することができる。
例えば、図13に示すように、コントローラ14は、DMAC(Direct Memory Access Controler)50を備えるとしてもよい。DMAC50は、揮発性半導体メモリ5と不揮発性半導体メモリ61〜6nの間のデータ転送を行う。この図13の構成においては、プロファイル部17の独立性を高くすることができる。
例えば、図14に示すように、プロファイル部17は、コントローラ13に備えられるとしてもよい。この図14の構成においては、情報処理装置16内のバス2の構造を変更することなく、プロファイル部17を追加することができる。
例えば、図15に示すように、プロファイル部17は、2次キャッシュメモリL2に備えられるとしてもよい。このように、2次キャッシュメモリL2内にプロファイル部17を実装させることにより、プロセッサP1〜P4からのアクセスのみ確認することができ、プロセッサP1〜P4からのアクセスに対するアクセス頻度情報を収集することができる。
例えば、図16に示すように、プロファイル部17は、メモリ管理装置3に備えられるとしてもよい。この図16の構成においては、情報処理装置16内のバス2の構造を変更することなく、プロファイル部17を追加することができる。
(第4の実施形態)
上記第1の実施形態では、OS9により書き戻し処理が実行されているが、本実施形態では、メモリ管理装置3によって書き戻し処理が実行される場合について詳細に説明する。
また、本実施形態では、アクセス頻度情報としてカラーリング情報を用いる。
図17は、本実施形態に係る情報処理装置の構成の一例を示すブロック図である。
本実施形態において、処理部7は、ソフトウェア8を実行し、これによりキャッシュ制御部24、キャッシュミス検出部25、データ配置領域決定部26、書き戻し処理部27を実現する。
本実施形態において、不揮発性半導体メモリ61〜6nは、第1のメモリ、第2のメモリを備えているとしてもよい。第1のメモリは、第2のメモリよりもアクセス可能上限回数が多い。ここでアクセス可能上限回数とは、統計的に予想される期待値であって、常にこの関係が保証されることを意味してはいないことに注意すべきである。
不揮発性半導体メモリ61〜6nに含まれている第1のメモリは、例えば、SLC(Single Level Cell)のNAND型フラッシュメモリであるとする。不揮発性半導体メモリ61〜6nに含まれている第2のメモリは、例えば、MLC(Multi Level Cell)のNAND型フラッシュメモリであるとする。
SLCは、MLCと比較して、読み出しおよび書き込みが高速であり、信頼性が高く、耐久性が高い。しかしながら、SLCは、MLCと比較して、ビットコストが高く、大容量化には向いていない。一方、MLCは、SLCと比較して、読み出しおよび書き込みが低速であり、信頼性が低く、耐久性が低い。しかしながら、MLCは、SLCと比較して、ビットコストが低く、大容量化に向いている。
なお、信頼性とは、記憶装置からデータを読み出す場合におけるデータの欠損の起こりにくさの程度を意味する。また、耐久性が高いとは、アクセス可能上限回数が多く、耐久性が低いとは、アクセス可能上限回数が少ないことを意味する。
本実施形態では、不揮発性半導体メモリ61〜6nは、NAND型フラッシュメモリであるとして説明するが、不揮発性半導体メモリ61〜6nはこれに限定されず、例えば、NOR型フラッシュメモリなどのような他の種類のフラッシュメモリ、PRAM(Phase change memory)、ReRAM(Resistive Random access memory)であるとしてもよい。
本実施形態では、不揮発性半導体メモリ61〜6nがSLCのNAND型フラッシュメモリと、MLCのNAND型フラッシュメモリとを含むが、例えば、不揮発性半導体メモリ61〜6nが2bit/CellのMLCのNAND型フラッシュメモリと、3bit/CellのMLCのNAND型フラッシュメモリとを含むとしてもよい。
また、第2のメモリとしてMLCを採用し、第1のメモリとして、MLCの下位ページのみを使用してデータ書き込みを行う擬似SLCモードが利用可能なMLCを採用してもよい。この場合、第1のメモリと第2のメモリとを共通のチップのみで構成することが可能であり、製造コスト面で有利となる。
本実施形態では、不揮発性半導体メモリ61〜6nをメインメモリとして用いる。メインメモリとして不揮発性半導体メモリ61〜6nを利用する場合、従来の2次記憶装置として不揮発性半導体メモリ61〜6nを利用する場合(例えば、SSD(Solid State Drive)等)と比べ、不揮発性半導体メモリ61〜6nへのアクセス頻度が高くなり、不揮発性半導体メモリ61〜6nの寿命を短くする。本実施形態において、不揮発性半導体メモリ61〜6n、揮発性半導体メモリ5に対するデータの配置を管理することにより、不揮発性半導体メモリ61〜6nの寿命の長期化を実現する。
メモリ管理装置3は、例えばプロセッサP1〜P4からの揮発性半導体メモリ5と不揮発性半導体メモリ61〜6nとに対する読み出し、書き込み、消去を制御する。
なお、メモリ管理装置3は、プロセッサP1〜P4に備えられ、プロセッサP1〜P4からの揮発性半導体メモリ5と不揮発性半導体メモリ61〜6nとに対する読み出し、書き込み、消去を制御する構成としてもよい。本実施形態において、揮発性半導体メモリ5、不揮発性半導体メモリ61〜6nに対する書き込みデータ、読み出しデータのデータサイズは、例えば、ページサイズであり、消去サイズはブロックサイズである。
プロセッサP1〜P4のMMU41〜44は、仮想アドレスと物理アドレスの間のアドレス変換機能などの各種機能を具備する。
上記のメモリ管理装置3の各種処理は、ソフトウェア8で実行するが、ハードウェアで実行してもよい。また、メモリ管理装置3のこれらの処理を、メモリ管理装置3とソフトウェア8で分担して行ってもよい。
揮発性半導体メモリ5は、不揮発性半導体メモリ61〜6nのキャッシュメモリとして用いられる。
ソフトウェア10又はOS9は、1次キャッシュメモリL1−1〜L1−4、2次キャッシュメモリL2にアクセスしながらデータの処理を実行する。処理対象データが1次キャッシュメモリL1−1〜L1−4、2次キャッシュメモリL2に存在しない場合(1次キャッシュメモリL1−1〜L1−4、2次キャッシュメモリL2におけるキャッシュミス)、揮発性半導体メモリ5又は不揮発性半導体メモリ61〜6nから処理データを読み出す。処理データが揮発性半導体メモリ5に存在しない場合、キャッシュミス(揮発性半導体メモリ5におけるキャッシュミス)が発生する。後述のように、揮発性半導体メモリ5におけるキャッシュミスは、キャッシュミス検出部25により検出される。
キャッシュ制御部24は、不揮発性半導体メモリ61〜6nから揮発性半導体メモリ5へのデータキャッシュを制御する。例えば、ソフトウェア10又はOS9によりアクセスされるデータを不揮発性半導体メモリ61〜6nから揮発性半導体メモリ5へキャッシュする。これにより、ソフトウェア10又はOS9は、不揮発性半導体メモリ61〜6nより高速にアクセス可能な揮発性半導体メモリ5からデータの読み出しが可能となり、データへのアクセスが高速化される。
キャッシュミス検出部25は、揮発性半導体メモリ5におけるキャッシュミスを検出する。前述のように、キャッシュミス制御部24は、ソフトウェア10又はOS9からアクセスされるデータを揮発性半導体メモリ5へキャッシュするが、ソフトウェア10又はOS9からアクセスされるデータが揮発性半導体メモリ5にキャッシュされていない場合には、キャッシュミスが発生する。
データ配置領域決定部26は、ソフトウェア10又はOS9において、新たにデータが生成された場合等に、当該データの配置領域(書き込み領域)を決定する。データ配置領域決定部26は、当該データのアクセス頻度に応じて、揮発性半導体メモリ5、不揮発性半導体メモリ61〜6nのSLCのNAND型フラッシュメモリ、MLCのNAND型フラッシュメモリから配置領域を決定する。
書き戻し処理部27は、上記第1の実施形態又は上記第2の実施形態で説明した書き戻し処理を実行し、例えば、不一致判断部91、設定部92、判断部93、書き戻し部94を具備する。
本実施形態では、各データについての読み出し回数、書き込み回数、読み出し頻度、書き込み頻度などを含むカラーリング情報を用いてウェアレベリング、書き戻し処理が実行される。各データのカラーリング情報は、例えばOS9によって生成される。
データ配置領域決定部26は、プロセスP1〜Pnにおいて、新たにデータが生成された場合等に、当該データの配置領域(書き込み領域)を決定する。データ配置領域決定部26は、カラーリング情報に基づいて、揮発性半導体メモリ5、不揮発性半導体メモリ61〜6nのSLCのNAND型フラッシュメモリ、MLCのNAND型フラッシュメモリから配置領域を決定する。カラーリング情報についての詳細は後述する。
書き戻し処理部27は、前述のアクセス頻度情報に加えて、後で詳しく説明するカラーリング情報に基づいて、書き戻しを行うか否かの判断を行い、書き戻しが必要と判断されたデータに対する書き戻しを行う。
メモリ管理装置3は、カラーリング情報に基づいて、ウェアレベリングを行う。例えば、メモリ管理装置3は、書き込み頻度の高いデータを、揮発性半導体メモリ5と不揮発性半導体メモリ61〜6nのうち、揮発性半導体メモリ5に配置する。また、例えば、メモリ管理装置3は、書き込み頻度の高いデータを、不揮発性半導体メモリ61〜6nのSLCのNAND型フラッシュメモリとMLCのNAND型フラッシュメモリとのうち、SLCのNAND型フラッシュメモリに記憶する。
なお、本実施形態のOS9は、不揮発性半導体メモリ61〜6nのSLCのNAND型フラッシュメモリのメモリ領域をMLCのNAND型フラッシュメモリに変更する制御、不揮発性半導体メモリ61〜6nのMLCのNAND型フラッシュメモリのメモリ領域をSLCのNAND型フラッシュメモリに変更する制御を実行するとしてもよい。
図18は、本実施形態に係るメモリ管理装置3と、記憶装置に記憶される各種データとの関係の一例を示すブロック図である。
記憶装置28は、揮発性半導体メモリ5及び不揮発性半導体メモリ61〜6nに相当する。
メモリ管理装置3は、メモリ使用情報29と、メモリ固有情報30と、アドレス変換情報31と、カラーリングテーブル32とを記憶装置28に格納する。
揮発性半導体メモリ5には、不揮発性半導体メモリ61〜6nに格納されているカラーリングテーブル32の一部が格納されるとしてもよい。例えば、不揮発性半導体メモリ61〜6nに格納されているカラーリングテーブル32のうち、頻繁に用いられるカラーリング情報を、揮発性半導体メモリ5に格納するとしてもよい。メモリ管理装置3は、カラーリングテーブル32等を参照し、記憶装置28に対するアクセスを管理する。
メインメモリとして不揮発性半導体メモリ61〜6nを利用する場合、不揮発性半導体メモリ61〜6nへのアクセス頻度は、2次記憶装置として不揮発性半導体メモリ61〜6nを利用する場合よりも高くなり、不揮発性半導体メモリ61〜6nの寿命は短期化する。本実施形態においては、揮発性半導体メモリ5とSLCの不揮発性半導体メモリとMLCの不揮発性半導体メモリとを混成してメインメモリとする記憶装置28を、情報処理装置1は用いる。記憶装置28は、異機種混在型のメインメモリであり、メモリ管理装置3によってデータの配置が管理される。
メモリ使用情報29は、不揮発性半導体メモリ61〜6nの各ページ領域の書き込み発生回数および読み出し発生回数と、各ブロック領域の消去回数と、使用中領域サイズを含む。
メモリ固有情報30は、揮発性半導体メモリ5のメモリサイズと、不揮発性半導体メモリ61〜6nのメモリサイズと、不揮発性半導体メモリ61〜6nのページサイズおよびブロックサイズと、各メモリ領域のアクセス可能上限回数(書き込み可能上限回数、読み出し可能上限回数、消去可能上限回数)と、を含む。ここで、ページサイズとは、不揮発性半導体メモリ61〜6nの書き込み、読み出しのデータサイズの単位である。ブロックサイズとは、不揮発性半導体メモリ61〜6nのデータ消去サイズの単位である。不揮発性半導体メモリ61〜6nにおいて、ブロックサイズはページサイズよりも大きい。
アドレス変換情報31は、プロセッサP1〜P4から与えられる論理アドレスを、論理アドレスに対応する物理アドレスに変換する情報である。
カラーリングテーブル32は、データ毎のカラーリング情報が保持されるテーブルである。カラーリング情報は、静的カラー情報と動的カラー情報を含む。
メモリ管理装置3は、アドレス管理部33、読み出し管理部34、書き込み管理部35、カラーリング情報管理部36、メモリ使用情報管理部37、再配置部38を備える。さらに、カラーリング情報管理部36は、アクセス頻度算出部39、動的カラー情報管理部40を備える。
アドレス管理部33は、論理アドレスに対して物理アドレスを割り当て、アドレス変換情報31に記憶する。これにより、メモリ管理装置3は、アドレス変換情報31を参照することにより、論理アドレスに対応する物理アドレスを取得することができる。
読み出し管理部34は、プロセッサP1〜P4が読み出し要求を発生した場合に、記憶装置28に対して読み出し対象データの読み出し処理を管理する。
書き込み管理部35は、プロセッサP1〜P4が書き込み要求を発生した場合に、記憶装置28に対して書き込み対象データを書き込む処理を管理する。
カラーリング情報管理部36は、カラーリングテーブル32を管理する。
メモリ使用情報管理部37は、記憶装置28のメモリ使用情報29を管理する。
再配置部38は、プロセッサP1〜P4の動作と非同期に、カラーリングテーブル32に含まれているカラーリング情報に基づき、任意の論理アドレスに対応する物理アドレスに配置されているデータの再配置を行う。再配置部38は、例えば、動的カラー情報に基づき、MLCの不揮発性半導体メモリに含まれるデータのうち、読み出し頻度、書き込み頻度が高いデータを、定期的に、SLCの不揮発性半導体メモリに再配置する。また、再配置部38は、例えば、動的カラー情報に基づき、SLCの不揮発性半導体メモリに含まれるデータのうち、読み出し頻度、書き込み頻度が低いデータを、定期的に、MLCの不揮発性半導体メモリに再配置する。同様に、再配置部38は、揮発性半導体メモリ、不揮発性半導体メモリ61〜6nの間でもデータの再配置を行うことが可能である。書き込み管理部35による書き込み処理は、データの更新が発生するたびに、書き込み先メモリ領域の判断処理と書き込み先ブロック領域の判断処理を行うことで再配置を行う。
アクセス頻度算出部39は、カラーリングテーブル32に含まれているカラーリング情報に基づき、データのアクセス頻度情報(動的書き込み頻度DW_color、動的読み出し頻度DR_color)を算出する。
動的カラー情報管理部40は、カラーリングテーブル32に含まれている動的カラー情報を管理する。
図19は、本実施形態に係るカラーリング情報とカラーリングテーブル32の一例を示す図である。
本実施形態では、データ毎にカラーリング情報が付与される。カラーリング情報が付与されるデータのデータサイズ単位は、例えば、読み出し、書き込みの最小の単位である。例えば、読み出し、書き込みの最小の単位は、NAND型フラッシュメモリのページサイズである。以下において、カラーリングテーブル32によりカラーリング情報が対応付けられるデータのデータサイズはページサイズであるとして説明するが、これに限定されるものではない。
カラーリングテーブル32は、データ毎にカラーリング情報を対応付け、エントリ単位でカラーリング情報を格納する。カラーリングテーブル32の各エントリには、インデックスが付されている。インデックスとは、論理アドレスを基に生成される値である。上記の読み出し管理部27、書き込み管理部28、カラーリング情報管理部29、再配置部31などは、データを指定する論理アドレスが与えられると、論理アドレスに対応するインデックスにより管理されているエントリを参照し、データのカラーリング情報を取得する。
カラーリング情報は、各データの配置領域を決定する基準として用いられる情報であり、静的カラー情報と、動的カラー情報とを含む。静的カラー情報は、カラーリング情報が付与される当該データの特性に基づいて生成される情報であり、当該データの記憶装置28上の配置(書き込み)領域を決定するヒントとなる情報である。動的カラー情報は、データの読み出しと書き込みの回数と頻度の少なくとも一方を含む情報である。
静的カラー情報は、当該データの重要度、静的書き込み頻度を示す値SW_color、静的読み出し頻度を示すSR_color、データ寿命SL_color、データの生成された時刻ST_colorを含む。
重要度とは、データの種類等に基づいて、当該データの重要性を推測して設定される値である。重要度は、例えば、ファイルシステムに保持されるファイルの特性、またはプログラムに一次的に使用される領域(例えばスタック領域、ヒープ領域など)の特性により推測される。
静的書き込み頻度SW_colorとは、データの種類等に基づいて、当該データが書き込まれる頻度を推測して設定される値である。静的読み出し頻度SR_colorとは、データの種類等に基づいて、当該データが読み出される頻度を推測して設定される値である。例えば、静的書き込み頻度SW_colorは、書き込み頻度が高いと推測されるデータほど、高い値が設定される。例えば、静的読み出し頻度SR_colorは、読み出し頻度が高いと推測されるデータほど、高い値が設定される。
データ寿命SL_colorとは、データの種類等に基づいて、当該データが消去されずにデータとして使用される期間(データの寿命)を推測して設定される値である。
静的カラー情報は、データを生成するプログラム(プロセス)により、静的に、予め決められた値である。また、OS9が、データのファイル拡張子またはファイルヘッダ等に基づいて、静的カラー情報を予測してもよい。
動的カラー情報は、データの書き込み回数DWC_color、データの読み出し回数DRC_colorを含む。ここで、データの書き込み回数DWC_colorとは、当該データが記憶装置5に書き込まれた回数である。データの読み出し回数DRC_colorとは、当該データが記憶装置28から読み出された回数である。動的カラー情報管理部40は、データの書き込み回数DWC_colorにより、データ毎に、当該データが記憶装置28に書き込まれた回数を管理する。動的カラー情報管理部40は、データ読み出し回数DRC_colorにより、データ毎に、当該データが記憶装置28から読み出された回数を管理する。前述のように、記憶装置28は、メインメモリとして用いられる。このため、プロセッサP1〜P4で処理されるデータは、記憶装置28に書き込まれ、記憶装置28から読み出される。動的カラー情報管理部40は、データが書き込まれる度に、当該データの書き込み回数DWC_colorをインクリメントする。また、動的カラー情報管理部40は、データが読み出される度に、当該データの読み出し回数DRC_colorをインクリメントする。
アクセス頻度算出部39は、データの書き込み回数DWC_colorから、動的書き込み頻度DW_colorを算出する。アクセス頻度算出部39は、データの読み出し回数DRC_colorから、動的読み出し頻度DR_colorを算出する。
動的書き込み頻度DW_colorとは、当該データが記憶装置28に書き込まれた頻度を示す値である。動的読み出し頻度DR_colorとは、当該データが記憶装置28から読み出された頻度を示す値である。
ここで、動的カラー情報と静的カラー情報に基づいて動的書き込み頻度DW_colorと動的読み出し頻度DR_colorを算出する方法について説明する。
新たなデータがデータ生成時刻において生成されると、新たに生成されたデータに対してカラーリング情報(データ生成時刻を含む)が生成され、カラーリングテーブル32の新たなエントリに登録された上で、データは記憶装置28に書き込まれる。データ生成時刻以降、このデータに対するアクセス(読み出し、書き込み)が発生することにより、時間の経過とともに、アクセス回数(書き込み回数DWC_color、読み出し回数DRC_color)が増加する。このアクセス回数の増加は、動的カラー情報管理部40によって行われる。メモリ管理装置3によって実現されるアクセス頻度算出部39は、アクセス回数から動的書き込み頻度DW_color、動的読み出し頻度DR_colorを算出する。
現在時刻における、当該データの書き込み回数DWC_color、データの読み出し回数DRC_colorは、カラーリングテーブル32を参照することにより求めることができる。例えば、現在時刻における当該動的書き込み頻度DW_colorは、データ生成時刻ST_colorから現在時刻までの書き込み回数DWC_colorの時間平均により求める。また、例えば、現在時刻における当該動的読み出し頻度DR_colorは、データ生成時刻ST_colorから現在時刻までの読み出し回数DRC_colorの時間平均により求める。これにより、動的カラー情報(書き込み回数DWC_color、読み出し回数DRC_color)から、当該データの動的書き込み頻度DW_colorと、動的読み出し頻度DR_colorとが算出される。
書き込み管理部35は、メモリ使用情報29、メモリ固有情報30、カラーリングテーブル32に基づいて、記憶装置28に対して書き込み対象データを書き込むメモリ領域を決定し、この決定されたメモリ領域に書き込み対象データを書き込む。
例えば、書き込み管理部35は、記憶装置28の各メモリ領域に対して、消耗度(=書き込み回数/書き込み可能上限回数)を算出し、消耗度の高いメモリ領域に動的書き込み頻度の低いデータを書き込む。
例えば、書き込み管理部35は、消耗度の低いメモリ領域に動的書き込み頻度の高いデータを書き込む。
例えば、書き込み管理部35は、動的読み出し頻度または動的書き込み頻度が「高」のデータを揮発性半導体メモリ5のメモリ領域に書き込み、動的読み出し頻度または動的書き込み頻度が「中」のデータをSLCのNAND型フラッシュメモリのメモリ領域に書き込み、動的読み出し頻度または動的書き込み頻度が「低」のデータをMLCのNAND型フラッシュメモリのメモリ領域に書き込む。
上記の処理により書き込み対象のメモリ領域が決定された場合、書き込み管理部35は、書き込み先の物理アドレスを決定する。この場合、書き込み管理部35は、カラーリングテーブル32を参照し、書き込み先の物理アドレスを適切に選択することでウェアレベリングの発生を抑え、不要な消去処理を低減する。
ここでウェアレベリングとは、例えば、消去回数が最大のブロックと、消去回数が最小のブロックとの消去回数の差が、所定の閾値以内に収まるように、ブロック間でデータの入れ替え(交換)を行うことを意味する。例えば、NAND型フラッシュメモリは消去処理なしでのデータ上書きができないため、データ移動先は未使用のブロックである必要があり、元々データを記憶していたブロックの消去処理が発生することになる。
なお、本実施の形態においては、算出された各メモリの消耗度に応じて、SLCのメモリ領域をMLCのメモリ領域に切り替えてもよく、MLCのメモリ領域をSLCのメモリ領域に切り替えてもよい。
以上に説明した本実施形態では、メモリ管理装置3によって、記憶装置28に対する書き込み、読み出し、消去の処理が制御される。
なお、記憶装置28に対する書き込み、読み出し、消去の処理の一部をソフトウェアで実行させると、自由度の高い、高度なウェアレベリングを実行させることができ、記憶装置28の一部のメモリ領域だけが劣化することを防止することができ、記憶装置28の長寿命化を実現させることができる。
本実施形態では、OS9から、メモリ管理装置3に、カラーリング情報が送信され、このカラーリング情報に基づいて効率的かつ高度なウェアレベリングが実施される。
なお、本実施の形態において、ソフトウェア8は、OS9の一部であるとしてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
16…情報処理装置、P1〜P4…プロセッサ、L1−1〜L1−4…1次キャッシュメモリ、L2…2次キャッシュメモリ、2…バス、3…メモリ管理装置、41〜44…MMU、5…揮発性半導体メモリ、61〜6n…不揮発性半導体メモリ、7…処理部、8,10…ソフトウェア、9…OS、91…不一致判断部、92…設定部、93…判断部、94…書き戻し部、11…データ管理テーブル、12…ダーティ状態判断カウントテーブル、13,14…コントローラ、15…書き込みカウントテーブル、17…プロファイル部、18…イネーブルレジスタ、19…ティックジェネレータ、20…マスタカウンタ、21…プロファイルテーブル、22…記憶部、23…プロファイル制御部、24…キャッシュ制御部、25…キャッシュミス検出部、26…データ配置領域決定部、27…書き戻し処理部、28…記憶装置、29…メモリ使用情報、30…メモリ固有情報、31…アドレス変換情報、32…カラーリングテーブル、33…アドレス管理部、34…読み出し管理部、35…書き込み管理部、36…カラーリング情報管理部、37…メモリ使用情報管理部、38…再配置部、39…アクセス頻度算出部、40…動的カラー情報管理部、50…DMAC。

Claims (7)

  1. メインメモリとして用いられる不揮発性半導体メモリ上の第1のデータと、前記不揮発性半導体メモリのキャッシュメモリとして用いられる半導体メモリ上の前記第1のデータと対応する第2のデータとの不一致が発生しているか否かを判断する第1の判断部と、
    前記第1の判断部によって前記第1のデータと前記第2のデータとが不一致であると判断された場合、前記第2のデータのアクセス頻度情報に基づいて、前記第1のデータと前記第2のデータとを一致させる書き戻しの実行タイミングを設定する設定部と、
    前記第2のデータが最後に書き戻されてからの経過時間が、前記設定部により設定された実行タイミングとなったか否か判断する第2の判断部と、
    前記第2の判断部によって、前記第2のデータの書き戻しの実行タイミングとなったと判断された場合、前記書き戻しを実行する書き戻し部と
    を具備することを特徴とする情報処理装置。
  2. 前記アクセス頻度情報は、前記第2のデータがスタック領域又はヒープ領域に配置されるデータか否かを示す情報であり、
    前記設定部は、前記第2のデータが前記スタック領域又は前記ヒープ領域に配置されるデータである場合に、前記第2のデータが前記スタック領域又は前記ヒープ領域に配置されるデータではない場合よりも書き戻しの実行間隔が長くなるように、前記実行タイミングを設定する
    ことを特徴とする請求項1記載の情報処理装置。
  3. 前記設定部は、前記第2のデータが書き戻されてから次に書き戻しを実行するまでの書き込みアクセスの発生回数を前記第2の判断部に対して設定し、
    前記第2の判断部は、前記第2のデータの最後の書き戻しからカウントされた書き込みアクセス回数が、前記設定手段によって設定された前記発生回数になった場合に、前記実行タイミングとなったと判断する
    ことを特徴とする請求項1又は請求項2記載の情報処理装置。
  4. 前記第2のデータに対する書き込みアクセスが発生したか否かを監視し、前記第2のデータに対する書き込みアクセス頻度情報を算出するプロファイル部をさらに具備し、
    前記設定部は、前記書き込みアクセス頻度情報に基づいて、前記書き戻しの実行タイミングを設定する
    ことを特徴とする請求項1乃至請求項3のいずれか1項に記載の情報処理装置。
  5. メインメモリとして用いられる不揮発性半導体メモリ上の第1のデータと、前記不揮発性半導体メモリのキャッシュメモリとして用いられる半導体メモリ上の前記第1のデータと対応する第2のデータとの不一致が発生しているか否かを判断する第1の判断部と、
    前記第1の判断部によって前記第1のデータと前記第2のデータとが不一致であると判断された場合、前記第2のデータのアクセス頻度情報に基づいて、前記第1のデータと前記第2のデータとを一致させる書き戻しの実行タイミングを設定する設定部と、
    前記第2のデータが最後に書き戻されてからの経過時間が、前記設定部により設定された実行タイミングとなったか否か判断する第2の判断部と、
    前記第2の判断部によって、前記第2のデータの書き戻しの実行タイミングとなったと判断された場合、前記書き戻しを実行する書き戻し部と
    を具備するメモリ管理装置。
  6. 処理ユニットが、メインメモリとして用いられる不揮発性半導体メモリ上の第1のデータと、前記不揮発性半導体メモリのキャッシュメモリとして用いられる半導体メモリ上の前記第1のデータと対応する第2のデータとの不一致が発生しているか否かを判断し、
    前記処理ユニットが、前記第1のデータと前記第2のデータとが不一致であると判断された場合、前記第2のデータのアクセス頻度情報に基づいて、前記第1のデータと前記第2のデータとを一致させる書き戻しの実行タイミングを設定し、
    前記処理ユニットが、前記第2のデータが最後に書き戻されてからの経過時間が、前記設定部により設定された実行タイミングとなったか否か判断し、
    前記処理ユニットが、前記第2のデータの書き戻しの実行タイミングとなったと判断された場合、前記書き戻しを実行する
    ことを特徴とするメモリ管理方法。
  7. 処理ユニットに、メインメモリとして用いられる不揮発性半導体メモリ上の第1のデータと、前記不揮発性半導体メモリのキャッシュメモリとして用いられる半導体メモリ上の前記第1のデータと対応する第2のデータとの不一致が発生しているか否かを判断する第1の判断機能を実現させ、
    前記処理ユニットに、前記第1の判断機能によって前記第1のデータと前記第2のデータとが不一致であると判断された場合、前記第2のデータのアクセス頻度情報に基づいて、前記第1のデータと前記第2のデータとを一致させる書き戻しの実行タイミングを設定する設定機能を実現させ、
    前記処理ユニットに、前記第2のデータが最後に書き戻されてからの経過時間が、前記設定機能により設定された実行タイミングとなったか否か判断する第2の判断機能を実現させ、
    前記処理ユニットに、前記第2の判断機能によって、前記第2のデータの書き戻しの実行タイミングとなったと判断された場合、前記書き戻しを実行する書き戻し機能を実現させる
    ためのプログラム。
JP2010172758A 2010-07-30 2010-07-30 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム Withdrawn JP2012033047A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010172758A JP2012033047A (ja) 2010-07-30 2010-07-30 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム
US13/052,203 US8612692B2 (en) 2010-07-30 2011-03-21 Variable write back timing to nonvolatile semiconductor memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010172758A JP2012033047A (ja) 2010-07-30 2010-07-30 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2012033047A true JP2012033047A (ja) 2012-02-16

Family

ID=45527891

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010172758A Withdrawn JP2012033047A (ja) 2010-07-30 2010-07-30 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム

Country Status (2)

Country Link
US (1) US8612692B2 (ja)
JP (1) JP2012033047A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014220021A (ja) * 2013-04-30 2014-11-20 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法
JP2015141575A (ja) * 2014-01-29 2015-08-03 京セラドキュメントソリューションズ株式会社 画像形成装置および制御方法
JP2016162021A (ja) * 2015-02-27 2016-09-05 京セラドキュメントソリューションズ株式会社 情報処理装置およびメモリー管理プログラム
JP2017045457A (ja) * 2015-08-27 2017-03-02 三星電子株式会社Samsung Electronics Co.,Ltd. トランザクション基盤のハイブリッドメモリモジュール、及びそれを動作させる方法
JP2017068806A (ja) * 2015-10-02 2017-04-06 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置および情報処理方法
US10474569B2 (en) 2014-12-29 2019-11-12 Toshiba Memory Corporation Information processing device including nonvolatile cache memory and processor
US11294821B1 (en) 2020-09-11 2022-04-05 Kabushiki Kaisha Toshiba Write-back cache device

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7903486B2 (en) * 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
WO2011007599A1 (ja) 2009-07-17 2011-01-20 株式会社 東芝 メモリ管理装置
JP2011128792A (ja) 2009-12-16 2011-06-30 Toshiba Corp メモリ管理装置
JP2011145838A (ja) 2010-01-13 2011-07-28 Toshiba Corp 記憶装置管理装置および記憶装置の管理方法
JP2012033047A (ja) 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム
CA2896128C (en) * 2013-06-29 2018-04-03 Huawei Technologies Co., Ltd. Method, apparatus, and controller for managing storage array
EP3129891B1 (de) * 2014-04-08 2018-12-12 Fujitsu Technology Solutions Intellectual Property GmbH Verfahren zum verbesserten zugriff auf einen hauptspeicher eines computersystems, entsprechendes computersystem sowie computerprogramm-produkt
KR102292172B1 (ko) * 2014-06-23 2021-08-25 삼성전자주식회사 불휘발성 메모리 장치 및 메모리 컨트롤러의 동작 방법
US20160071597A1 (en) * 2014-09-09 2016-03-10 Kabushiki Kaisha Toshiba Storage device, memory controller and memory control method
US10007691B2 (en) * 2014-09-24 2018-06-26 Oracle International Corporation Prioritizing repopulation of in-memory compression units
US20170075812A1 (en) * 2015-09-16 2017-03-16 Intel Corporation Technologies for managing a dynamic read cache of a solid state drive
TWI611405B (zh) * 2015-11-25 2018-01-11 旺宏電子股份有限公司 將資料自記憶體寫回儲存裝置的方法及應用其的資料存取系統
US11170002B2 (en) 2018-10-19 2021-11-09 Oracle International Corporation Integrating Kafka data-in-motion with data-at-rest tables
JP2022032569A (ja) * 2020-08-12 2022-02-25 キオクシア株式会社 メモリシステム
DE102020123220A1 (de) * 2020-09-04 2022-03-10 Harman Becker Automotive Systems Gmbh Speichersystem, Verfahren zum Betrieb desselben

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07146820A (ja) 1993-04-08 1995-06-06 Hitachi Ltd フラッシュメモリの制御方法及び、それを用いた情報処理装置
US6134634A (en) * 1996-12-20 2000-10-17 Texas Instruments Incorporated Method and apparatus for preemptive cache write-back
JP3159118B2 (ja) * 1997-04-18 2001-04-23 日本電気株式会社 ライトバックデータ選択方法及びプログラムを記録した機械読み取り可能な記録媒体
KR100383774B1 (ko) 2000-01-26 2003-05-12 삼성전자주식회사 공통 인터페이스 방식의 메모리 장치들을 구비한 시스템
US7310707B2 (en) * 2003-05-15 2007-12-18 Seagate Technology Llc Adaptive resource controlled write-back aging for a data storage device
US20060236033A1 (en) * 2005-04-18 2006-10-19 Dell Products L.P. System and method for the implementation of an adaptive cache policy in a storage controller
US9153337B2 (en) * 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
JP5032172B2 (ja) 2007-03-28 2012-09-26 株式会社東芝 統合メモリ管理装置及び方法並びにデータ処理システム
US8135900B2 (en) 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
CN101673245B (zh) * 2008-09-09 2016-02-03 株式会社东芝 包括存储器管理装置的信息处理装置和存储器管理方法
JP2010165251A (ja) 2009-01-16 2010-07-29 Toshiba Corp 情報処理装置及びプロセッサ並びに情報処理方法
US8176282B2 (en) * 2009-03-11 2012-05-08 Applied Micro Circuits Corporation Multi-domain management of a cache in a processor system
WO2011007599A1 (ja) 2009-07-17 2011-01-20 株式会社 東芝 メモリ管理装置
US8463984B2 (en) * 2009-12-31 2013-06-11 Seagate Technology Llc Dynamic data flow management in a multiple cache architecture
JP2011145838A (ja) 2010-01-13 2011-07-28 Toshiba Corp 記憶装置管理装置および記憶装置の管理方法
JP2012033047A (ja) 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014220021A (ja) * 2013-04-30 2014-11-20 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法
JP2015141575A (ja) * 2014-01-29 2015-08-03 京セラドキュメントソリューションズ株式会社 画像形成装置および制御方法
US10474569B2 (en) 2014-12-29 2019-11-12 Toshiba Memory Corporation Information processing device including nonvolatile cache memory and processor
JP2016162021A (ja) * 2015-02-27 2016-09-05 京セラドキュメントソリューションズ株式会社 情報処理装置およびメモリー管理プログラム
JP2017045457A (ja) * 2015-08-27 2017-03-02 三星電子株式会社Samsung Electronics Co.,Ltd. トランザクション基盤のハイブリッドメモリモジュール、及びそれを動作させる方法
JP2017068806A (ja) * 2015-10-02 2017-04-06 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置および情報処理方法
US11294821B1 (en) 2020-09-11 2022-04-05 Kabushiki Kaisha Toshiba Write-back cache device

Also Published As

Publication number Publication date
US8612692B2 (en) 2013-12-17
US20120030428A1 (en) 2012-02-02

Similar Documents

Publication Publication Date Title
JP2012033047A (ja) 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム
US10761780B2 (en) Memory system
JP7366795B2 (ja) メモリシステムおよび制御方法
US8296496B2 (en) Main memory with non-volatile memory and DRAM
US9355023B2 (en) Virtual address pager and method for use with a bulk erase memory
Kgil et al. Improving NAND flash based disk caches
US9678676B2 (en) Method for storage devices to achieve low write amplification with low over provision
TWI578157B (zh) 用於記憶體陣列中之平均抹寫之方法及設備
US8688894B2 (en) Page based management of flash storage
US10599345B2 (en) Memory device that writes data into a block based on time passage since erasure of data from the block
JP2012141946A (ja) 半導体記憶装置
US8645612B2 (en) Information processing device and information processing method
JP2012033002A (ja) メモリ管理装置およびメモリ管理方法
US10990325B2 (en) Write control method, associated data storage device and controller thereof
JP2009211225A (ja) メモリシステム
Agarwal et al. A closed-form expression for write amplification in nand flash
JP2010157133A (ja) メモリシステム
JP2016170682A (ja) 演算処理装置及び演算処理装置の制御方法
KR20100133710A (ko) 메모리 시스템 및 그것의 코드 데이터 로딩 방법
TWI697009B (zh) 寫入控制方法以及資料儲存裝置及其控制器
JP2019086974A (ja) ストレージシステム及びその制御方法
JP2010152778A (ja) 半導体記憶装置
KR20220052353A (ko) 조정된 파라미터를 사용한 메모리 컴포넌트의 가비지 수집
JP6430039B2 (ja) 記憶装置および記憶装置の制御方法
US11941247B2 (en) Storage device, storage system, and method

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20131001