JP5969130B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP5969130B2
JP5969130B2 JP2015527108A JP2015527108A JP5969130B2 JP 5969130 B2 JP5969130 B2 JP 5969130B2 JP 2015527108 A JP2015527108 A JP 2015527108A JP 2015527108 A JP2015527108 A JP 2015527108A JP 5969130 B2 JP5969130 B2 JP 5969130B2
Authority
JP
Japan
Prior art keywords
data
memory
host
information
memory subsystem
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.)
Expired - Fee Related
Application number
JP2015527108A
Other languages
English (en)
Other versions
JPWO2015008358A1 (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Application granted granted Critical
Publication of JP5969130B2 publication Critical patent/JP5969130B2/ja
Publication of JPWO2015008358A1 publication Critical patent/JPWO2015008358A1/ja
Expired - Fee Related 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Description

本発明は、不揮発性メモリを用いて大規模データの高速処理に適した情報処理装置に関するものである。
近年の大規模データの増加に応じて、大規模データを安価に低消費電力で記憶できる大容量不揮発性メモリの使用が望まれている。また、大規模データの処理では多くのデータを読み書きする必要があるため、読み書きの高速化も望まれている。
これに対し、従来の不揮発性メモリを用いた記憶装置では、データ消去単位(ブロック)がデータ書き込み単位より大きく、不要なデータであってもデータの上書きができないため、ブロックが必要なデータと不要なデータで満たされるとそのままでは新しいデータを書き込めない。そこで、ホストから記憶装置へ新しいデータを書き込む際、書き込み可能な領域が不足すると、記憶装置は、物理的に散在する必要なデータをそれぞれのブロックから読み出したのち、データを読み出したブロックを消去し、読み出したデータを消去されたブロックへ書き戻していた。これにより消去されたブロックの書き戻されたデータ以外の領域を書き込み可能な領域として確保するのが一般的であった。この処理はガーベッジコレクションと呼ばれている。
また、特許文献1には、不揮発性メモリを用いた記憶装置に対し、ホストはファイルデータを消去した段階で、そのファイル名もしくはアドレスを記憶装置へ通知し、記憶装置はホストから消去を通知された段階でデータを無効化し、記憶装置は消去対象のブロックに無効化したデータのみしかない場合にガーベッジコレクションを実行せず、単に消去する技術が開示されている。
特開2008-198208号公報
不揮発性メモリを用いた記憶装置ではガーベッジコレクションが必要であり、ガーベッジコレクションの処理中はホストの読み書きの処理が待たされて記憶装置の性能低下を招くと共に、ガーベッジコレクションそのものが書き込み処理を含むため、書き込み回数に上限のある記憶装置の寿命劣化を招く。
また、上記の特許文献1に開示された技術では消去ブロックに無効化したデータのみしかない場合にはガーベッジコレクションを不要とするものの、必ずしも消去ブロックが無効化したデータで満たされるとは限らないため、依然としてガーベッジコレクションの発生は回避できず、ガーベッジコレクションの課題を解決できていない。
そこで、本発明の目的は、安価で大容量な不揮発性メモリにおけるガーベッジコレクションの発生を排除することにより、不揮発性メモリを用いた記憶装置のデータ読み書きを高速化すると共に、記憶装置の寿命を延ばすことにある。
本発明にかかる情報処理装置は、ホストとメモリサブシステムとを備えた情報処理装置であって、前記ホストは、前記メモリサブシステムへデータに対応するタグ情報とともに書き込み命令または消去命令を発行し、前記データを処理する情報処理回路を備え、前記メモリサブシステムは、第2のメモリを管理する管理情報を記憶した第1のメモリと、データ消去単位のサイズがデータ書き込み単位のサイズより大きく、前記データを記憶する前記第2のメモリと、前記データ消去単位のn倍(nは自然数)を管理単位とする前記管理情報に基づいて、同一の前記タグ情報のデータを同一の前記管理単位へ書き込み、異なる前記タグ情報のデータを異なる前記管理単位へ書き込むメモリサブシステム制御回路と、を備えたことを特徴とする。
また、本発明にかかる情報処理装置は、前記ホストが、前記メモリサブシステムへ前記タグ情報とともに読み出し命令を発行する前記情報処理回路を備え、前記メモリサブシステムは、同一の前記タグ情報に対応するデータを、前記第2のメモリから読み出し、前記ホストに転送する前記メモリサブシステム制御回路を備えたことを特徴とする。
また、本発明にかかる情報処理装置は、前記メモリサブシステムが、同一の前記タグ情報に対応するデータを、前記第2のメモリから消去する前記メモリサブシステム制御回路を備えたことを特徴とする。
そして、本発明にかかる情報処理装置は、前記メモリサブシステムが、前記第2のメモリよりも高速にアクセス可能な前記第1のメモリと、不揮発性メモリである前記第2のメモリと、を備えたことを特徴とする。
本発明によれば、大規模データの解析などに必要な大規模なメモリ空間を不揮発性メモリで安価に提供でき、かつ、その場合でも、消去単位のn倍の管理単位で読み書き消去をするため、不揮発性メモリにおけるガーベッジコレクションの発生を排除できる。これにより高速なデータの読み書きを実現することができると共に、不揮発性メモリの寿命を延ばせる。
サーバ(情報処理装置)の構成の例を示す図である。 サーバ内のメモリサブシステムの構成の例を示す図である。 メモリサブシステム内の不揮発性メモリのチップ、ブロック、ページの構成と読み書き消去の処理対象の例を示す図である。 サーバの処理対象であり、大規模データであるグラフの例を示す図である。 サーバにおいて実行されるグラフ解析処理のシーケンスの例を示す図である。 ホストが扱う論理アドレスとデータとの対応関係の例を示す図である。 ホストからメモリサブシステムへ送信される情報の例を示す図である。 不揮発性メモリのチップ、ブロックとスーパーステップ、グループに属するデータとの対応関係の例を示す図である。 データ管理テーブルの例を示す図である。 不揮発性メモリへの書き込みのチップ、ブロック、ページの順番の例を示す図である。 異なるグループにおける書き込み開始チップの相違の例を示す図である。 異なるグループにおける書き込み開始チャネルの相違の例を示す図である。 サーバにおけるデータ書き込み処理の例を示すフローチャートである。 不揮発性メモリの状態管理テーブルの例を示す図である。 サーバにおけるデータ読み出し処理の例を示すフローチャートである。 サーバおけるデータ消去処理の例を示すフローチャートである。 不揮発性メモリにおけるデータ処理の例を示すフローチャートである。 不揮発性メモリの書き込みデータ量の管理テーブルの例を示す図である。 不揮発性メモリの書き込みデータ量とページとの対応関係の例を示す図である。
以下に添付図面を参照して、好ましいサーバ(情報処理装置)の実施の形態を詳細に説明する。
<A.サーバの構成>
まず、サーバ(SVR)0101の構成について、図1と図2を用いて説明する。図1に、情報処理装置であるサーバ0101全体の構成を示す。サーバ0101は、複数のホスト (Host(1)〜Host(N))0102と、全てのホスト0102を接続するインターコネクト(Interconnect) 0103と、それぞれのホスト0102に接続された複数のメモリサブシステム(MSS(1)〜MSS(N))0104とから構成される。
ホスト0102は、情報処理回路(CPU)0105と、この情報処理回路0105に接続された1個以上のメモリ(DRAM)0106から構成される。情報処理回路0105はメモリ0106から情報を読み込み、情報を書き込むことにより処理を実行する。
全てのホスト0102はインターコネクト0103を介して互いに通信することができる。また、ホスト0102はそれぞれ接続されたメモリサブシステム0104と互いに通信することができる。
メモリサブシステム0104は、それぞれ1個のメモリサブシステム制御回路(MSC)0107と1個以上の不揮発性メモリ(NVM)0108 と1個以上のメモリ(DRAM)0109から構成される。メモリサブシステム制御回路0107 はホスト0102、不揮発性メモリ0108、メモリ0109と互いに通信することができる。
メモリサブシステム0104の中のメモリ0109は管理情報などを格納するメモリであり、高速なDRAMが好ましいが、DRAM以外にMRAM、相変化メモリ、SRAM、NORフラッシュメモリ、ReRAMなどのランダムアクセスメモリでもよい。また、不揮発性メモリ0108へ書き込むデータと読み出すデータとを一時的に記憶して不揮発性メモリ0108のキャッシュとして使用してもよい。不揮発性メモリ0108はホスト0102から書き込まれたデータを格納するメモリであり、安価で大容量なNANDフラッシュメモリ、相変化メモリ、ReRAMなどのデータ消去単位のサイズがデータ書き込み単位のサイズ以上であるメモリである。
ホスト0102はメモリサブシステム0104を使用して処理するデータにタグ番号を付加し、メモリサブシステム制御回路0107は不揮発性メモリ0108の消去単位を管理して、同一のタグ番号の付加されたデータを不揮発性メモリ0108の同一の消去単位へ書き込む。この処理のシーケンスは図6を用いて後で説明する。なお、ホスト0102がメモリサブシステム制御回路0107に相当する機能を備え、消去単位の管理及びタグ番号との対応付けをメモリサブシステム0104の中ではなくホスト0102の中で行ってもよい。
図2はメモリサブシステム0104をさらに詳細に示したものである。
メモリサブシステム0104は、1個のメモリサブシステム制御回路0107と、不揮発性メモリ不揮発性メモリ(NVM(1,1)〜NVM(i,j))0108 と、メモリ(DRAM (1)〜DRAM(p))0109とから構成される(i、j、pは自然数)。メモリサブシステム制御回路0107は、メモリアクセス制御回路(DMAC)0201とコマンドバッファ(C-BF)0202と、データバッファ(D-BF)0203と、アドレスバッファ(A-BF)0204と、タグバッファ(T-BF)0205と、レジスタ(RG)0206と、ガーベッジコレクション排除制御ブロック(GCLS_CB)0207と、不揮発性メモリ制御回路(NVMC(1)〜NVMC(i))0208と、DRAM制御回路(DRAMC(1)〜DRAMC(p))0209とから構成される。
メモリアクセス制御回路0201は、図1におけるホスト0102と、コマンドバッファ0202と、データバッファ0203と、アドレスバッファ0204と、タグバッファ0205と、レジスタ0206と接続されており、接続先間の通信を中継する。コマンドバッファ0202、データバッファ0203、アドレスバッファ0204、タグバッファ0205、レジスタ0206のぞれぞれはガーベッジコレクション排除制御ブロック0207とも接続されており、コマンドバッファ0202は、データの読み出し命令、書き込み命令、消去命令を一時的に格納するバッファであり、データバッファ0203は、読み書きされるデータを一時的に格納するバッファである。アドレスバッファ0204は、ホスト0102からの読み出し、書き込み及び消去命令におけるデータのアドレスを一時的に格納するバッファである。なお、データのサイズも一時的に格納することができる。
タグバッファ0205は、ホスト0102からの読み出し、書き込み及び消去命令におけるデータのグループ(Gr.)の番号、スーパーステップ(S.S.)の番号、書き込み順(order)の番号、データ種類識別子(IDX)などのタグ番号を一時的に格納するバッファである。グループとスーパーステップについては図5を用いて後で説明し、書き込み順については図6、図10などを用いて後で説明し、データ種類識別子については図9などを用いて後で説明する。ただし、タグ番号はこれらの番号などに限定されるものではなく、これ以外の番号であってもよいし、例えば書き込み順の番号などが無くてもよい。タグ番号は不揮発性メモリ0108の消去単位内のすべてのデータにおいて同一の番号であり、異なるタグ番号に対応するデータは、不揮発性メモリ0108の異なる消去単位内に格納されていればよい。このようなタグ番号であるから、タグ番号そのものは書き込み順や不揮発性メモリ0108の物理アドレスなどを含み、タグ番号が同一の番号であるという基準が書き込み順や物理アドレスとは関係なく、不揮発性メモリ0108の消去単位として同一であるというものでもよい。
レジスタ0206は、ホスト0102が設定するガーベッジコレクション排除制御ブロック0207の処理に必要な制御情報を格納して、ガーベッジコレクション排除制御ブロック0207から読み出し可能とするレジスタである。
ガーベッジコレクション排除制御ブロック0207は、レジスタ0206、コマンドバッファ0202、データバッファ0203、アドレスバッファ0204、タグバッファ0205と通信し、不揮発性メモリ制御回路0208とDRAM制御回路0209を制御するものである。
不揮発性メモリ制御回路(NVMC(1)〜NVMC(i))0208は、不揮発性メモリ(NVM(i,1)〜NVM(i,j))0108に接続されており、接続された不揮発性メモリ0108のデータ読み出しと、データの書き込みと、データの消去を行う。ここで、iは1〜iの自然数であってチャネル番号を表し、複数のチャネル0210はそれぞれ独立して通信できるデータ転送バス(I/O)0212を備える。1つのチャネルi(Ch i)0210に属するj個の不揮発性メモリ(NVM(i,1), NVM(i,2), …, NVM(i,j))0108は、データ転送バス0212を共有する。また、各チャネルに属するj個の不揮発性メモリ0108は、メモリとしては独立しているため、不揮発性メモリ制御回路0208からの命令を独立に処理することができる。j個の不揮発性メモリ0108は、不揮発性メモリ制御回路0208から物理的に近い順にウェイ(Way1, Way2, …, Wayj)0211に属する。各不揮発性メモリ0108がデータ処理中か否かを、不揮発性メモリ制御回路0208は、各不揮発性メモリ0108に接続されたレディービジー線(RY/BY)0213の信号を読むことで判定することができる。不揮発性メモリ制御回路0208は、ガーベッジコレクション排除制御ブロック0207と接続され、互いに通信できる。
DRAM制御回路(DRAMC(1)〜DRAMC(p))0209は、それぞれメモリ(DRAM(1)〜DRAM(p))0109に接続され、メモリ0109からのデータ読み出しとメモリ0109へのデータの書き込みを行う。また、DRAM制御回路0209は、ガーベッジコレクション排除制御ブロック0207と接続され、互いに通信できる。
<B.不揮発性メモリの構造と読み書き消去処理>
次に、図3を用いて、不揮発性メモリ0108内の構成及びデータの読み出しと書き込みと消去の処理を説明する。それぞれの不揮発性メモリ0108は、N_br個のブロック(BLK)0301から構成され、各ブロック0301はN_pg個のページ(PG)0302から構成される。ここで、N_brとN_pgは自然数である。例えば、不揮発性メモリ0108である容量8GB/chipのNANDフラッシュメモリにおける1ブロック0301のデータサイズが1MBで、1ページ0302のデータサイズが8kBの時、N_br=8k=(8GB/1MB)であり、N_pg=128=(1MB/8kB)である。
不揮発性メモリ0108に格納されたデータはページ0302の単位で読み出され、不揮発性メモリ0108へデータを書き込む際はページ0302の単位で書き込む。また、不揮発性メモリ0108に格納されたデータはブロック0301の単位で消去される。不揮発性メモリ0108にデータを書き込む際、データの上書きはできない。したがって、例えば図3において消去されたブロック0303内のページ(PG_e)0304へデータを書き込むことはできるが、既にデータが書き込まれたページ(PG_d)0305には新しいデータを書き込むことはできない。以上をまとめると不揮発性メモリ0108は以下の2つの特徴を有する。
特徴1:消去単位(ブロック0301)のデータサイズは書き込み単位(ページ0302)のデータサイズ以上である。
特徴2:データが既に書き込まれたページ0305などには新しいデータを上書きできない。
以下、サーバ0101の処理について、大規模グラフ解析を例に挙げて説明する。まず、図4、5を用いて、サーバ0101で取り扱うグラフの例とそのグラフデータの解析シーケンスの例を説明する。
<C.グラフとグラフ解析シーケンス>
図4は、サーバ0101で取り扱うグラフの一例を示す図である。ここで例として挙げるグラフは、グラフの頂点0401に各頂点を一意に特定する頂点番号が割り当てられており、2つの頂点を繋ぐ一本のグラフの辺は、その2つの頂点の間に関係性があることを表す。グラフの各頂点0401が解析対象のグラフデータとなる。一般にグラフ解析の対象となるグラフの頂点0401は膨大な数となるため、複数の頂点0401は割り当てられた頂点番号に応じてグループに分けられ、グループごとに頂点0401すなわちグラフデータを解析する。
図5にサーバ0101におけるグラフ解析のシーケンスを示す。メモリサブシステム0107内の不揮発性メモリ0108には、グラフデータ(Graph)及びグラフ解析の結果(Result)が格納され、グラフデータ及びグラフ解析の結果は、グループに分割されて読み書きされて処理される。以下のシーケンスは、N個のホスト0102及びメモリサブシステム0104において、同時並行的に実行される。
時刻1:まず、メモリサブシステム0104は不揮発性メモリ0108に格納されたグループ1のグラフデータを読み出し(Read Gr.1)0501、ホスト0102へ送付する(Send)0502。
時刻2:次に、ホスト0102は、メモリサブシステム0104から送られてきたグループ1のグラフデータを解析する(Analyze Gr.1)0503。これと並行して、メモリサブシステム0104は、次にホスト0102で解析されるグループ2のグラフデータを読み出す(0504)。これらと並行して、メモリサブシステム0104は、グループ1のグラフデータを消去する(0505)。このグループ1のグラフデータはホストによる解析の後、二度と使われないため、このタイミングで消去が可能である。
時刻3:それぞれのホスト0102は、グループ1のグラフ解析の結果を他のホスト0102へ伝える。各ホスト0102は他のホスト0102から送られてきたグラフ解析の結果をグループごとに分類してメモリサブシステム0104へ送付する。メモリサブシステム0104はホスト0102から送付されたグループごとのグラフ解析の結果を不揮発性メモリ0108に書き込む(Write Gr. at random)0506。すなわち、ホスト0102からは不揮発性メモリ0108の書き込み単位である1ページ0302ごと、グループ番号がランダムな順でメモリサブシステム0104へデータを送付する。
以上のシーケンスをグループ順に繰り返し、全てのグループ1〜Mの処理の終了後、処理終了の確認のため、ホスト(Host(1)〜Host(N))0102間で同期が実行される(SYNC)。この一連のグループ1〜Mの処理及び同期をスーパーステップ(S.S.)と呼び、同期の後、再度グループ1から順に処理は繰り返される。前のスーパーステップでメモリサブシステム0104に書き込まれたグラフ解析の結果はグラフデータとなって、次のスーパーステップで読み出される。グラフ解析はこのスーパーステップの繰り返しによって実行される。
<D.ホストとメモリサブシステム間の通信>
図6、7を用いて、ホスト0102とメモリサブシステム0104の間の通信を説明する。図6に示すように、ホスト0102はメモリサブシステム0104内に格納されるデータを論理アドレス(LA)で管理する。グラフ解析において、ホスト0102は不揮発性メモリ0108の書き込み単位であるページ0302ごと、グループ番号がランダムな順でメモリサブシステム0104にデータを書き込む。その際、各グループデータの書き込み先論理アドレスは、グループごとホスト0102によって定められた管理単位(LAunit_host)で管理する。ホスト0102は、各グループのデータをメモリサブシステム0104へ送付する順に、各LAunit_hostの論理アドレスの先頭から順に埋めてゆき、グループごとにページ0302の単位の書き込み順(order)を付けて管理する。
図7は、ホスト0102がメモリサブシステム0104へ読み出し、書き込み、及び消去命令を送る際に、メモリサブシステム0104へ送付する情報を示す図である。
(a) 読み出し
ホスト0102がメモリサブシステム0104内のデータの読み出し命令を発行する際(Read)、ホスト0102はメモリサブシステム0104へ読み出すデータのスーパーステップ(S.S.)の番号と、グループ(Gr.)の番号と、データ種類識別子(IDX)を送付する。もしくは、ホスト0102はメモリサブシステム0104へ論理アドレス(Adr)及び読み出しデータサイズ(size)を送付する。データ種類識別子は、メモリサブシステム0104が異なるグラフデータを区別したり、グラフデータとグラフ解析の結果を区別したり、頂点番号を区別したりする際に用いられる付加情報である。メモリサブシステム0104は、ホスト0102から送付された上記情報を基に、データを読み出し、ホスト0102へ読み出したデータを返す。
(b) 書き込み
ホスト0102がメモリサブシステム0104へデータ書き込み命令を発行する際(Write)、ホスト0102はメモリサブシステム0104へ書き込みデータのスーパーステップ(S.S.)の番号と、グループ(Gr.)の番号と、データ種類識別子(IDX)と、グループ内の書き込み順(order)と、書き込みデータ(data)と、必要に応じて、論理アドレス(Adr)と書き込みデータサイズ(size)を送付する。メモリサブシステム0104はホスト0102から送付された上記情報を基に、データを不揮発性メモリ0108へ書き込む。なお、グループ内の書き込み順はタグ番号に含めなくてもよい。
(c)消去
ホスト0102がメモリサブシステム0104内のデータの消去命令を発行する際(Erase)、ホスト0102はメモリサブシステム0104へ消去するデータのスーパーステップ(S.S.)の番号とグループ(Gr.)の番号とデータ種類識別子(IDX)を送付する。もしくは、ホスト0102はメモリサブシステム0104へ論理アドレス(Adr)及び消去するデータサイズ(size)を送付する。メモリサブシステム0104は、ホスト0102から送付された上記情報を基に、データを消去する。
<E.メモリサブシステムでのデータ管理方法>
図8〜12を用いて、メモリサブシステム0104内でのデータの管理方法を説明する。図8に示すように、メモリサブシステム制御回路0107は各スーパーステップ及びグループの番号ごとに、データを複数の不揮発性メモリ0108のブロック0301から構成される管理単位(PAunit_ctrl)に割り当ててレジスタ0206に格納する。図8の例では、チャネル(Ch.1〜i)及び2つのウェイ0211に属する2i個の不揮発性メモリ0108の各ブロックをまとめて一つのPAunit_ctrlとし、同じPAunit_ctrlには同一スーパーステップ且つ同一グループのデータのみが格納され。異なるスーパーステップもしくは異なるグループのデータは異なるPAunit_ctrlに格納されて、図5のシーケンスにしたがって並列に処理される。図8では1つのPAunit_ctrlを2つのウェイ0211としたが、3つ以上としてもよい。異なるチャネル0210には異なる不揮発性メモリ0108が異なるデータ転送バス0212で接続されているため、複数の不揮発性メモリ0108を同時に動作させることができ、異なるウェイ0211ではデータ転送バス0212を共用するものの、異なる不揮発性メモリ0108を同時に動作させることができるので、高速なデータ転送を実現できる。また、一つのPAunit_ctrlを消去しても異なるスーパーステップもしくは異なるグループのブロック0301へは影響しないため、ガーベージコレクションを必要としないので、高速なデータ転送を実現できる。そして、高速なデータ転送により高速なグラフ解析を実現できる。
LAunit_hostとPAunit_ctrlで管理するため、メモリ0109に格納したテーブル(GR_PA)0900、テーブル(LA_GR)0910、テーブル(GR_PTR)1800、テーブル(PBA_ST)1400を使用するが、まずテーブル(GR_PA)0900とテーブル(LA_GR)0910を説明し、テーブル(GR_PTR)1800とテーブル(PBA_ST)1400についてはそれぞれ図18と図14を用いて後で説明する。
データのスーパーステップ及びグループの番号と、データの格納されるウェイ及びブロックの番号の対応は、図9(a)に示すテーブル(GR_PA)0900によって管理される。また、論理アドレスと、各スーパーステップ及びグループの番号との対応は、図9(b)のテーブル(LA_GR)0910によって管理される。これらのテーブル0900、0910は、グラフデータとグラフ解析の結果すなわちデータ種類識別子の内容などに応じて一つずつ用意してもよい。
スーパーステップ及びグループの番号とデータ種類識別子(IDX)が与えられれば、メモリサブシステム制御回路0107はテーブル(GR_PA)0900を用いて、対応するデータが格納されるPAunit_ctrlを構成する不揮発性メモリ0108の最初のウェイ(Way_S)とそのウェイ(Way_S)における最初のブロック番号(PBA_S)0903から最後のウェイ(Way_E)とそのウェイ(Way_E)における最後のブロック番号(PBA_E)0904を特定できる。図9(a)においてスーパーステップの番号が1、グループの番号が1、データ種類識別子がグラフ解析の結果の場合、最初のウェイ(Way_S)が1であり、ウェイ(Way_S)が1における最初のブロック番号(PBA_S)は0x33(16進数で33)である。一つのスーパーステップとグループとデータ種類識別子に対応するデータが1つのPAunit_ctrlに収まらず、複数のPAunit_ctrlにまたがる場合は、テーブル(GR_PA)0900に、それぞれのPAunit_ctrlにおけるウェイの番号やブロックの番号を順に格納し、ウェイ(Way_S(1))0903の次のPAunit_ctrlの先頭はウェイ(Way_S(2))0905などとする。すなわち、ウェイ(Way_S(1)〜Way_E(1))とウェイ(Way_S(2)〜Way_E(2))とはそれぞれ1つのPAunit_ctrlに対応する。
また、データの論理アドレスが与えられれば、メモリサブシステム制御回路0107は、テーブル(LA_GR)0910を用いて、データが属するスーパーステップ及びグループの番号とデータ種類識別子を判定できる。テーブル(LA_GR)0910におけるエントリ(LAunit_host)は、ホストによる論理アドレスの管理単位であるLAunit_hostの番号であり、該当する論理アドレスのデータが、各スーパーステップ及びグループの番号で何番目のデータに対応するかはOrder_LA_hostの値となる。
次に、メモリサブシステム制御回路0107のPAunit_ctrl内でのデータの配置を図10〜12を用いて説明する。まず、スーパーステップの番号がk、グループの番号が1のデータの配置の例を示す。メモリサブシステム制御回路0107はホスト0102からの書き込み順(order)に、ページ0302一つごとに不揮発性メモリ0108を分散させて書き込む。図11(a)に示すように、order=[1] 1101のデータは、不揮発性メモリ(1,Way_S)0108のブロック(BLK)の番号が PBA_Sのページ(PG)の番号が1である図10のページ1001に格納され、order=[2] 1102のデータは、次のチャネル(Ch.2)に属する不揮発性メモリ(2,Way_S)の同一ブロック番号(PBA_S)、且つ同一ページ番号(1)のページ1002に格納される。
以下同様に、order=[i] 1103のデータは、不揮発性メモリ(i,Way_S)の同一ブロック番号(PBA_S)の同一ページ番号(1)のページ1003に格納される。次のorder=[i+1]のデータは、次のウェイ(Way_S+1)のブロック番号(PBA_(S+1))、同一ページ番号(1)に格納される。以下、order=[iP]のデータまで順番に各不揮発性メモリの各ブロックの同一ページ番号に格納される(1104、1004)。ただし、iPは一つのPAunit_ctrlに割り当てられる不揮発性メモリ0108の数を表し、iP=i×(Way_E-Way_S+1)である。order=[iP]以降は、各不揮発性メモリ0108の次のページ番号のページ1005などに、order=[1]〜[iP]と同じ順番にデータが格納される。以上のような規則で格納されるため、ページの番号は計算することもできる。
以上ではグループの番号が1のデータを説明した。この場合、order=[1]のデータはチャネル(Ch.1)の不揮発性メモリ0108に格納されたが、グループの番号が異なるデータに関しては、order=[1]のデータを書き込む不揮発性メモリ0108のチャネルの番号を異なるように配置する。例えば、グループの番号が3のデータを格納する場合、図11(a)のNVM chip1105に対して図11(b)のNVM chip1106に示すようにorder=[1]のデータはチャネル(Ch.3)の不揮発性メモリ(3,Way_S’)から書き込まれる。以下後続のデータorder=[2],[3],…は、チャネル(ch.4,5,…)の順に格納される。
一般的には、図12に示すように、グループの番号がAのorder=[1]のデータの格納先の不揮発性メモリ0108が属するチャネル(Ch.)0210の番号は、StCh_GrAで表され、この値はStCh_GrA=A%i+1(Aをチャネル0210の個数iで割った時の余り+1)で決定される。グループの番号が1の場合はStCh_Gr1 1201となり、グループの番号が3の場合はStCh_Gr3 1202となる。ここで、グループの番号の異なるデータに関してウェイ(Way_SとWay_S’)、ブロック(PBA_SとPBA_S’)は必ずしも異なる必要はない。以上のような規則で格納されるため、チャネルの番号は計算することもできる。
サーバ0101がグラフ処理を行う際のメモリサブシステム0104の処理を図13〜図19を用いて説明する。
<F.グラフ解析におけるメモリサブシステム制御回路の処理>
(1)メモリサブシステムの制御に必要なデータの入力
グラフ解析を実行するホスト0102は、グラフ解析の前に、メモリサブシステム0104の制御に必要なデータを、メモリサブシステム0104のレジスタ0206に書き込む。メモリサブシステム0104の制御に必要なデータは、ホスト0102による論理アドレスの管理単位であるLAunit_host、スーパーステップやグループの数、グラフデータのデータサイズ、(異なるグラフを区別するために必要な)グラフデータの識別子、グラフの頂点数や辺の数などであり、グラフの最短経路探索の場合は、最短経路を求めたい2頂点、すなわち、始点と終点を特定する情報なども含まれる。
(2)データ書き込み処理
データの書き込みにおけるメモリサブシステム制御回路0107の処理を、図13、14に基づいて説明する。
図13に書き込み処理のフローチャートを示す。メモリサブシステム制御回路0107内のメモリアクセス制御回路0201は、ホスト0102の管理するメモリ0106内に格納されたデータ書き込み命令と、書き込みデータのスーパーステップの番号と、グループの番号と、データ種類識別子と、グループ内の書き込み順をメモリサブシステム0104に転送する。必要に応じて、上記と合わせて、書き込みデータと、書き込みデータの論理アドレスと、書き込みデータのサイズも転送する。次に、メモリアクセス制御回路0201は、書き込み命令をコマンドバッファ0202へ格納し、スーパーステップの番号と、グループの番号と、データ種類識別子と、グループ内の書き込み順の番号をタグバッファ0205に格納する。なお、書き込み順の番号はタグバッファ0205以外のバッファに格納してもよい。メモリアクセス制御回路0201は、必要に応じて、書き込みデータをデータバッファ0203に格納し、書き込みデータの論理アドレスと、書き込みデータのサイズをアドレスバッファ0204に格納する(Step1(Send to MSS)1301)。
次に、ガーベッジコレクション排除制御ブロック0207は、バッファからグループ内の書き込み順の番号を読み、ホスト0102が定めた論理アドレスの管理単位であるLAunit_hostをレジスタ0206から読む。この結果、もし次に書き込むデータの論理アドレスLAが、ホスト0102の定めた論理アドレスLAの管理単位であるLAunit_hostの先頭となる場合(Step2(LAunit_host full)1302がYes)、Step3 1303へ進む。一方、もし、次に書き込むデータの論理アドレスが、LAunit_hostの先頭とならない場合(Step2(LAunit_host full)1302がNo)、Step8 1308へ進む。例えば、ページのデータサイズが8kBであり、LAunit_hostが1MBであるとすると、1MB/8kB=128となるので、order=[128×n+1](nは自然数)の場合はStep2 1302のLAunit_host fullがYesとなり、それ以外はNoとなる。
次に、Step3 1303では、ガーベッジコレクション排除制御ブロック0207がバッファからグループ内の書き込み順の番号を読み、ガーベッジコレクション排除制御ブロック0207が定めた物理アドレスの管理単位であるPAunit_ctrlをレジスタ0206から読む。この結果、もし次に書き込むデータが、PAunit_ctrlの先頭となる場合(Step3(PAunit_ctrl full)1303がYes)、Step4 1304へ進む。一方、もし、次に書き込むデータが、PAunit_ctrlの先頭とならない場合(Step3(PAunit_ctrl full)1303がNo)、Step7 1307へ進む。例えば、ページのデータサイズが8kBであり、PAunit_ctrlが32MBであるとすると、32MB/8kB=4096となるので、order=[4096×n+1](nは自然数)の場合、Step3 1303のPAunit_ctrl fullはYesとなり、それ以外はNoとなる。
次に、ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209へ読み出し命令を送り、メモリ0109に格納されたテーブル(PBA_ST)1400を読み出す(Step4(Read PBA_ST)1304)。図14に示すように、テーブル(PBA_ST)1400は、各ウェイ、ブロック(Way, PBA)1401に対して物理ブロックの状態(Status of PBA)1402と、消去回数(Cycle_erase)1403を記録する。物理ブロックの状態(Status of PBA)1402は、「0:使用不可(不良ブロック)」、「1:データ消去済」、「2:ホストに読まれたデータなし(読み出し前)」、「3:ホストに読まれたデータあり(読み出し中)」、「4:未読データ無し(読み出し完)」、「5:データ書き込み先として確保済み」などが記録される。
ガーベッジコレクション排除制御ブロック0207は、テーブル(PBA_ST)1400の物理ブロックの状態(Status of PBA)1402を参照し、データ消去済となっているブロックを新たなPAunit_ctrlに割り当てる(Step5(Alloc. PAunit_ctrl)1305)。
Step5 1305の後、ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209にデータの書き込み命令を発行し、メモリ0109に格納されたテーブル(PBA_ST)1400の物理ブロックの状態(Status of PBA)1402を更新し、新たに割り当てられた物理ブロックを「5:データ書き込み先として確保済み」とする。また、ガーベッジコレクション排除制御ブロック0207は、同様にDRAM制御回路0209にデータの書き込み命令を発行し、図9(a)に示されたテーブル(GR_PA)0900を更新し、Step5 1305で新たに確保されたPAunit_ctrlを記録する。また、もし書き込みデータの論理アドレスがアドレスバッファ0204に格納されていた場合は、図9(b)に示されたテーブル(LA_GR)0910も更新する(Step6(Update table)1306)。
Step7 1307では、書き込みデータの論理アドレスがアドレスバッファに格納されていた場合、ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209にデータの書き込み命令を発行し、メモリ0109に格納された図9(b)に示されたテーブル(LA_GR)0910を更新する。
次に、ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209へ読み出し命令を送り、メモリ0109に格納されたテーブル(GR_PA)0900を読み出す(Step8(Read GR_PA)1308)。
Step8 1308の後、ガーベッジコレクション排除制御ブロック0207は、タグバッファ0205からスーパーステップの番号と、グループの番号と、データ種類識別子を読み出し、バッファからグループ内の書き込み順の番号を読み出す。また、ガーベッジコレクション排除制御ブロック0207は、Step8 1308で読み出したテーブル(GR_PA)0900を参照し、データ書き込み先の不揮発性メモリのウェイとブロックなど及びページを決定する(Step9(Det. Chip_Page)1309)。
最後に、ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209にデータ書き込み命令を発行し、ホスト0102からのデータ書き込み命令をコマンドバッファ0202からメモリ0109に転送し、スーパーステップの番号とグループの番号とデータ種類識別子をタグバッファ0205からメモリ0109に転送し、グループ内の書き込み順(order)をバッファ05からメモリ0109に転送する。これらと一緒に、ガーベッジコレクション排除制御ブロック0207は、データ書き込み先の不揮発性メモリ0108のウェイとブロックなどとページなどもメモリ0109に転送する。また、必要に応じて、ガーベッジコレクション排除制御ブロック0207は、書き込みデータをデータバッファ0203からメモリ0109に転送し、書き込みデータの論理アドレスと書き込みデータのサイズをアドレスバッファからメモリ0109に転送する(Step10(To DRAM)1310)。
(3)データ読み出し処理
データの読み出しにおけるメモリサブシステム制御回路0207の処理を、図15に基づいて説明する。
メモリサブシステム制御回路0107内のメモリアクセス制御回路0201は、ホスト0102の管理するメモリ0106内に格納されたデータ読み出し命令と、読み出しデータのスーパーステップの番号と、グループの番号と、データ種類識別子をメモリサブシステム0104に転送する。次に、メモリアクセス制御回路0201は、読み出し命令をコマンドバッファ0202へ格納し、スーパーステップの番号とグループの番号とデータ種類識別子をタグバッファ0205に格納する(Step1(Send to MSS)1501)。もしくは、まず、メモリアクセス制御回路0201は、ホスト0102の管理するメモリ0106内に格納されたデータ読み出し命令及び読み出しデータの論理アドレスとデータサイズをメモリサブシステム0104に転送し、その後、読み出しデータの論理アドレスと、読み出しデータのサイズをアドレスバッファ0204に格納する(Step1(Send to MSS)1501)。
次に、ガーベッジコレクション排除制御ブロック0207は、タグバッファを参照し、読み出しデータのスーパーステップの番号と、グループの番号と、データ種類識別子がホスト0102から転送されているか確認する(Step2(SS&GR?)1502)。その結果、これらがタグバッファ0205に格納されていればStep4 1504に進み(Step2 1502がYes)、格納されていなければStep3 1503に進む(Step2 1502がNo)。
Step3 1503では、ガーベッジコレクション排除制御ブロック0207が、アドレスバッファ0204から読み出しデータの論理アドレスと読み出しデータのサイズを読み出す。その後、ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209にデータ読み出し命令を発行して図9(b)に示されたテーブル(LA_GR)0910をメモリ0109から読み出し(Step3(Read LA_GR for Read Data)1503)、テーブル(LA_GR)0910に基づいて読み出しデータのスーパーステップの番号とグループの番号とデータ種類識別子を特定し、タグバッファ0205へ格納する。
次に、ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209にデータ読み出し命令を発行し、図9(a)に示されたテーブル(GR_PA)0900をメモリ0109から読み出す(Step4(Read GR_PA for Read Data)1504)。
ガーベッジコレクション排除制御ブロック0207は、タグバッファ0205からスーパーステップの番号と、グループの番号と、データ種類識別子を読み出す。そして、ガーベッジコレクション排除制御ブロック0207は、Step4 1504で読み出したテーブル(GR_PA)0900を参照し、データ読み出し先の不揮発性メモリのウェイとブロック及びページを決定する(Step5(Det. Chip_Page)1505)。
最後に、ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209にデータ書き込み命令を発行し、ホスト0102からのデータ読み出し命令をコマンドバッファからメモリ0109に転送し、スーパーステップの番号とグループの番号とデータ種類識別子をタグバッファ0205からメモリ0109に転送する。これらと一緒に、ガーベッジコレクション排除制御ブロック0207は、データ読み出し先の不揮発性メモリ0108のウェイとブロックなどとページなどもメモリ0109に転送する。また、必要に応じて、ガーベッジコレクション排除制御ブロック0207は、読み出しデータの論理アドレスとデータサイズをアドレスバッファ0204からメモリ0109に転送する(Step6(To DRAM)1506)。
(4)データ消去処理
データの消去におけるメモリサブシステム制御回路0107の処理を図16に基づいて説明する。
メモリサブシステム制御回路0107内のメモリアクセス制御回路0201は、ホスト0102の管理するメモリ0106内に格納されたデータ消去命令及び消去するデータのスーパーステップの番号とグループの番号とデータ種類識別子をメモリサブシステム0104に転送する。次に、メモリアクセス制御回路0201は消去命令をコマンドバッファ0202へ格納し、スーパーステップの番号とグループの番号とデータ種類識別子をタグバッファ0205に格納する(Step1(Send to MSS)1601)。もしくは、まず、メモリアクセス制御回路0201は、ホスト0102の管理するメモリ0106内に格納されたデータ消去命令及び消去するデータの論理アドレスとデータサイズをメモリサブシステム0104に転送し、その後、消去するデータの論理アドレスとデータサイズをアドレスバッファに格納する(Step1(Send to MSS)1601)。
次に、ガーベッジコレクション排除制御ブロック0207は、タグバッファ0205を参照し、消去するデータのスーパーステップの番号とグループの番号とデータ種類識別子がホスト0102から転送されているか確認する(Step2(SS&GR?)1602)。その結果、これらがタグバッファ0205に格納されていればStep4 1604に進み(Step2 1602がYes)、格納されていなければStep3 1603に進む(Step2 1602がNo)。
Step3 1603では、ガーベッジコレクション排除制御ブロック0207は、アドレスバッファ0204から消去するデータの論理アドレスと、データサイズを読み出す。その後、ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209にデータ読み出し命令を発行し、図9(b)に示されたテーブル(LA_GR)0910をメモリ0109から読み出し(Step3(Read LA_GR for Erase Data)1603)、消去するデータのスーパーステップの番号とグループの番号とデータ種類識別子を特定してタグバッファ0205へ格納する。
次に、ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209にデータ読み出し命令を発行し、図9(a)に示されたテーブル(GR_PA)0900をメモリ0109から読み出す(step4(Read GR_PA for Erase Data)1604)。
ガーベッジコレクション排除制御ブロック0207は、タグバッファ0205からスーパーステップの番号とグループの番号とデータ種類識別子を読み出す。また、ガーベッジコレクション排除制御ブロック0207は、Step4 1604で読み出したテーブル(GR_PA)0900を参照してデータ消去先の不揮発性メモリのウェイ及びブロックなどを決定する(Step5(Det. Chip_BLK)1605)。
ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209にデータ書き込み命令を発行し、ホスト0102からのデータ消去命令を、コマンドバッファからメモリ0109に転送し、スーパーステップの番号とグループの番号とデータ種類識別子をタグバッファからメモリ0109に転送する。これらと一緒に、ガーベッジコレクション排除制御ブロック0207は、データ消去先の不揮発性メモリ0108のウェイとブロックなどもメモリ0109に転送する。また、必要に応じて、ガーベッジコレクション排除制御ブロック0207は、消去するデータの論理アドレスとデータサイズをアドレスバッファ0204からメモリ0109に転送する(Step6(To DRAM)1606)。
(5)不揮発性メモリにおけるデータ処理
不揮発性メモリ0108におけるメモリサブシステム制御回路0107のデータ処理を図17〜19に基づいて説明する。
図17に上記(2)〜(4)の処理によりメモリ0109へ書き込まれた書き込み命令、読み出し命令、消去命令を不揮発性メモリ0108に適用する処理のフローチャートを示す。まず、ガーベッジコレクション排除制御ブロック0207は、各チャネル0210の不揮発性メモリ制御回路0208へ、不揮発性メモリ0108の状態を確認する命令を発行する。命令を受け、各チャネル0210の不揮発性メモリ制御回路0208は、それぞれのチャネル0210に属する各不揮発性メモリ0108に接続されたレディービジー線0213の信号を読み、処理が行われていない不揮発性メモリ0108の番号(Ch, Way)をガーベッジコレクション排除制御ブロック0207へ返す(Step1 (Find idle chip)1701)。
Step1 1701の結果を受け、ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209に読み出し命令を発行し、メモリ0109から処理が行われていない不揮発性メモリ0108宛の書き込み命令と読み出し命令と消去命令を読み出す。ガーベッジコレクション排除制御ブロック0207は、1つの不揮発性メモリ0108あたり、優先度の最も高い命令を1つ選び出し(Step2(Det. priority)1702)、その命令を各不揮発性メモリ制御回路0208に送る(Step3(CMD to NVMC)1703)。不揮発性メモリ0108へのデータ書き込み命令の場合、ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209に読み出し命令を発行し、メモリ0109から書き込むデータを読み出し、書き込み命令と一緒に不揮発性メモリ制御回路0208に送る。
各チャネル0210の不揮発性メモリ制御回路0208は、各不揮発性メモリ0108における処理が終わったことを確認次第、処理終了をガーベッジコレクション排除制御ブロック0207へ通知する(Step4(Receive from NVMC)1704)。データ読み出しの場合、読み出されたデータも、不揮発性メモリ制御回路0208から、ガーベッジコレクション排除制御ブロック0207へ送られる。ガーベッジコレクション排除制御ブロック0207は、読み出されたデータをメモリアクセス制御回路0201へ送る。または、必要に応じて、ガーベッジコレクション排除制御ブロック0207 は、DRAM制御回路0209に書き込み命令を発行し、メモリ0109へ読み出されたデータを転送する。その後、メモリアクセス制御回路0201は読み出されたデータをホスト0102へ送る。
最後に、ガーベッジコレクション排除制御ブロック0207は、メモリ0109に格納されたテーブルを更新する(step5(Update table)1705)。更新されるテーブルは、不揮発性メモリ0108での処理内容によって異なる。以下読み出し、書き込み、消去処理に分けて説明する。
(i)データ読み出しにおけるテーブルの更新
ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209に読み出し命令を発行し、メモリ0109に格納された図14に示すテーブル(PBA_ST)1400を読み出す。そして、データの読み出し先の不揮発性メモリ0108のウェイ、ブロック(Way, PBA)1401に対応するブロックの状態(Status of PBA)1403を「2:読み出し前」から「3:読み出し中」または「3:読み出し中」から「4:読み出し完」などに更新する。その後、ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209に書き込み命令を発行し、更新されたテーブル(PBA_ST)1400をメモリ0109に書き戻す。
(ii)データ書き込みにおけるテーブルの更新
ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209に読み出し命令を発行し、メモリ0109に格納された図18に示すテーブル(GR_PTR)1800と、書き込まれるデータのスーパーステップの番号と、グループの番号と、データ種類識別子と、グループ内の書き込み順を読み出す。以上の情報を用いて、ガーベッジコレクション排除制御ブロック0207は、テーブル(GR_PTR)1800の書き込みページポインタ(Ptr)1804のうち、書き込みデータのスーパーステップ(S.S.)1801の番号とグループ(Gr.)1802の番号とデータ種類識別子(IDX)1803に対応するページポインタ1804のP_R か P_Gを更新する。P_R(1,1)1805のRはデータ種類識別子1803のResultを表し、(1,1)はスーパーステップ1801の番号が1であってグループの番号が1であることを表す。P_G(1,1)1806のGはデータ種類識別子1803がGraphであることを表す。ここで、図19にテーブル(GR_PTR)1800の書き込みページポインタ1804と不揮発性メモリ0108の物理ブロック0301及びページ0302との関係を示す。図19に示すように、スーパーステップが k、グループが1の解析結果データにおける書き込みページポインタP_R(k,1)1901が、不揮発性メモリ(1,Way_S)0108のブロック(BLK PBA_S)の最後のページ(PG N_pg)1902となるとき、このスーパーステップk、グループ1の解析結果データは既にP_R(k,1)ページ分書き込み済みであることを示す。1ページ分のデータを書き込むごとに、ガーベッジコレクション排除制御ブロック0207は、このP_R(k,1)を1ずつ増やす。
(iii)データ消去におけるテーブルの更新
ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209に読み出し命令を発行し、テーブル(GR_PA)0900とテーブル(LA_GR)0910とテーブル(PBA_ST)1400を読み出し、消去されるデータのスーパーステップの番号とグループの番号とデータ種類識別子を読み出す。ガーベッジコレクション排除制御ブロック0207は、あるスーパーステップ及びグループの番号のデータが全て消去された場合、テーブル(GR_PA)0900及びテーブル(LA_GR)0910を更新する。また、テーブル(PBA_ST)1400の対応するブロックの状態(Status of PBA)1403を「1:消去済み」に更新する。ガーベッジコレクション排除制御ブロック0207は、DRAM制御回路0209に書き込み命令を発行し、更新されたテーブル(GR_PA)0900、テーブル(LA_GR)0910、テーブル(PBA_ST)1400をメモリ0109に書き戻す。
<G.効果のまとめ>
以上説明した構成及び処理により得られる主な効果は以下の通りである。
大容量で安価なメモリを使用可能とすることで、大規模データを処理する際に必要な大規模なメモリを安価に提供でき、かつ、その場合でもメモリに対して高速なデータアクセスを行うことができる。すなわち、大規模データの高速処理を行うサーバにおいて、DRAMなどよりビットコストが安価なNANDフラッシュメモリなどの不揮発性メモリにデータを格納し、かつ、その場合でもデータに対応したタグ番号を用いて不揮発性メモリを制御することによって、不揮発性メモリにおけるガーベッジコレクションを排除し、高速なデータアクセスが可能になる。さらに、データ処理を実行するホストがデータのアドレスやサイズを指定しなくても、タグ番号を指定するだけでデータを不揮発性メモリへ書き込んだり、不揮発性メモリからデータを読み出してホストに送ったり、不揮発性メモリのデータを消去することができる。
また、以上の説明では、データ処理を行うホスト0102、不揮発性メモリ0108、及び不揮発性メモリ0108を管理するメモリサブシステム制御回路0107から構成されるサーバ0101の例を挙げたが、サーバ0101はデータ解析及び不揮発性メモリ0108を管理するホスト0102、不揮発性メモリ0108、及びホスト0102の管理にしたがうメモリサブシステム制御回路とから構成してもよい。また、大規模グラフを頂点番号に応じて複数のグループ(Gr.)に分割して解析する例を挙げたが、取り扱う大規模データ処理は上記の例に限定されるものではなく、MapReduce処理において、Keyに応じて(keyとvalueで制御された)大規模データを複数のグループ(Gr.)に分割して、上記処理と同様にメモリ処理を行ってもよい。また、ソースコード上で大きな配列を確保する大規模データベース処理アプリケーションにおいて、同一配列を同一グループ(Gr.)とみなして上記メモリ処理を実行しても良く、また、上記処理の適用範囲は、大規模データベースの検索及びデータ抽出などを行う場合も含まれる。そして、これらの処理においても大規模データを高速に読み書きできるため、大規模データ処理を高速化できる。
以上、添付図面を参照して具体的に説明したが、好ましい実施の形態は以上の説明に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
0101 サーバ
0102 ホスト
0103 インターコネクト
0104 メモリサブシステム(MSS)
0105 情報処理回路(CPU)
0106、0109 メモリ(DRAM)
0107 メモリサブシステム制御回路(MSC)
0108 不揮発性メモリ(NVM)
0201 メモリアクセス制御回路(DMAC)
0202 コマンドバッファ(C-BF)
0203 データバッファ(D-BF)
0204 アドレスバッファ(A-BF)
0205 タグバッファ(T-BF)
0206 レジスタ(RG)
0207 ガーベッジコレクション排除制御ブロック(GCLS_CB)
0208 不揮発性メモリ制御回路(NVMC)
0209 DRAM制御回路(DRAMC)
0210 チャネル(Ch 1〜i)
0211 ウェイ(Way 1〜j)
0301 ブロック(BLK)
0302 ページ(PG)
0900 テーブル(GR_PA)
0910 テーブル(LA_GR)
1400 テーブル(PBA_ST)
1800 テーブル(GR_PTR)

Claims (8)

  1. ホストとメモリサブシステムとを備えた情報処理装置であって、
    前記ホストは、前記メモリサブシステムへデータに対応するタグ情報とともに書き込み命令または消去命令を発行し、前記データを処理する情報処理回路を備え、
    前記タグ情報は、
    前記ホストのデータ処理単位であるグループを識別する情報、前記ホストのデータ処理ステップであるスーパーステップを識別する情報、前記ホストが処理するデータの種類を識別するデータ種類識別子を含み、
    前記メモリサブシステムは、
    第2のメモリを管理する管理情報を記憶した第1のメモリと、
    データ消去単位のサイズがデータ書き込み単位のサイズより大きく、前記データを記憶する前記第2のメモリと、
    前記データ消去単位のn倍(nは自然数)を管理単位とする前記管理情報に基づいて、同一の前記タグ情報のデータを同一の前記管理単位へ書き込み、異なる前記タグ情報のデータを異なる前記管理単位へ書き込むメモリサブシステム制御回路と、を備えたこと
    を特徴とする情報処理装置。
  2. 前記管理情報は、前記データの前記第2のメモリにおけるアドレスと、前記データに対応する前記タグ情報との関係付けを含み、テーブルに記憶したことを特徴とする請求項に記載の情報処理装置。
  3. 前記管理情報は、前記タグ情報と、前記タグ情報に対応するデータが書き込まれる前記管理単位との関係付けを含み、テーブルに記憶したことを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記メモリサブシステムは、
    前記第2のメモリよりも高速にアクセス可能な前記第1のメモリと、
    不揮発性メモリである前記第2のメモリと、を備えたこと
    を特徴とする請求項1〜のいずれか1項に記載の情報処理装置。
  5. 前記メモリサブシステムは、
    前記第2のメモリのブロックを管理する管理情報を記憶した前記第1のメモリと、
    データ消去単位である前記ブロックを複数含み、書き込み単位であるページを前記ブロックの中に複数含む前記第2のメモリと、
    前記管理情報を参照して前記ブロックを特定し、計算により前記ページを特定する前記メモリサブシステム制御回路と、を備えたこと
    を特徴とする請求項1〜のいずれか1項に記載の情報処理装置。
  6. ホストとメモリサブシステムとを備えた情報処理装置であって、
    前記ホストは、前記メモリサブシステムへ書き込み命令または消去命令を発行し、前記メモリサブシステムの中のメモリのデータ消去単位のn倍(nは自然数)を管理単位とし、タグ情報と前記管理単位とを管理情報により関係付け、データを処理する情報処理回路を備え、
    前記タグ情報は、
    前記ホストのデータ処理単位であるグループを識別する情報、前記ホストのデータ処理ステップであるスーパーステップを識別する情報、前記ホストが処理するデータの種類を識別するデータ種類識別子を含み、
    前記メモリサブシステムは、
    前記データ消去単位のサイズがデータ書き込み単位のサイズより大きく、前記データを記憶する前記メモリと、
    前記ホストの前記書き込み命令により、同一の前記タグ情報のデータを同一の前記管理単位へ書き込み、異なる前記タグ情報のデータを異なる前記管理単位へ書き込むメモリサブシステム制御回路と、を備えたこと
    を特徴とする情報処理装置。
  7. 前記メモリサブシステムは、
    前記メモリよりも高速にアクセス可能な第1のメモリと、
    不揮発性メモリである前記メモリと、を備えたこと
    を特徴とする請求項に記載の情報処理装置。
  8. 前記ホストは、前記管理情報を参照して前記メモリのブロックを特定し、計算により前記メモリのページを特定する情報処理回路を備え、
    前記メモリサブシステムは、データ消去単位である前記ブロックを複数含み、書き込み単位である前記ページを前記ブロックの中に複数含む前記メモリを備えたこと
    を特徴とする請求項6または7に記載の情報処理装置。
JP2015527108A 2013-07-18 2013-07-18 情報処理装置 Expired - Fee Related JP5969130B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/069481 WO2015008358A1 (ja) 2013-07-18 2013-07-18 情報処理装置

Publications (2)

Publication Number Publication Date
JP5969130B2 true JP5969130B2 (ja) 2016-08-17
JPWO2015008358A1 JPWO2015008358A1 (ja) 2017-03-02

Family

ID=52345853

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015527108A Expired - Fee Related JP5969130B2 (ja) 2013-07-18 2013-07-18 情報処理装置

Country Status (3)

Country Link
US (1) US20160170873A1 (ja)
JP (1) JP5969130B2 (ja)
WO (1) WO2015008358A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10025530B2 (en) * 2014-09-29 2018-07-17 Western Digital Technologies, Inc. Optimized garbage collection for solid-state storage devices
WO2016147351A1 (ja) * 2015-03-18 2016-09-22 株式会社日立製作所 計算機システム、方法、及びホスト計算機
US11461010B2 (en) * 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US10509770B2 (en) 2015-07-13 2019-12-17 Samsung Electronics Co., Ltd. Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
JP6765321B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
JP6765322B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
US10915441B2 (en) 2017-08-23 2021-02-09 Hitachi, Ltd. Storage system having non-volatile memory device
US11899930B2 (en) 2019-07-25 2024-02-13 Sony Interactive Entertainment Inc. Storage management apparatus, storage management method, and program
CN111506778B (zh) * 2020-04-14 2023-04-28 中山大学 一种基于K-Truss图的存储系统缓存预取方法、系统及介质
JP2020198128A (ja) * 2020-08-31 2020-12-10 キオクシア株式会社 メモリシステム
JP7132291B2 (ja) * 2020-08-31 2022-09-06 キオクシア株式会社 メモリシステムおよび制御方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008004117A (ja) * 2001-01-19 2008-01-10 Sandisk Corp 不揮発性メモリにおける部分的ブロックデータのプログラミング動作および読出し動作
US20080155178A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Use of a Direct Data File System With a Continuous Logical Address Space Interface
JP2010515162A (ja) * 2006-12-26 2010-05-06 サンディスク コーポレイション 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用
JP2011186562A (ja) * 2010-03-04 2011-09-22 Toshiba Corp メモリ管理装置及び方法
US20120191900A1 (en) * 2009-07-17 2012-07-26 Atsushi Kunimatsu Memory management device

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005267501A (ja) * 2004-03-22 2005-09-29 Hitachi Ltd ストレージ管理方法及びシステム
JP4728031B2 (ja) * 2005-04-15 2011-07-20 株式会社日立製作所 リモートコピーペアの移行を行うシステム
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8688899B2 (en) * 2010-09-28 2014-04-01 Fusion-Io, Inc. Apparatus, system, and method for an interface between a memory controller and a non-volatile memory controller using a command protocol
JP5295286B2 (ja) * 2011-02-23 2013-09-18 株式会社日立製作所 記憶装置およびそれを搭載した計算機
JPWO2014010007A1 (ja) * 2012-07-09 2016-06-20 株式会社日立製作所 情報処理システムおよびグラフ処理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008004117A (ja) * 2001-01-19 2008-01-10 Sandisk Corp 不揮発性メモリにおける部分的ブロックデータのプログラミング動作および読出し動作
US20080155178A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Use of a Direct Data File System With a Continuous Logical Address Space Interface
JP2010515162A (ja) * 2006-12-26 2010-05-06 サンディスク コーポレイション 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用
US20120191900A1 (en) * 2009-07-17 2012-07-26 Atsushi Kunimatsu Memory management device
JP2011186562A (ja) * 2010-03-04 2011-09-22 Toshiba Corp メモリ管理装置及び方法

Also Published As

Publication number Publication date
WO2015008358A1 (ja) 2015-01-22
JPWO2015008358A1 (ja) 2017-03-02
US20160170873A1 (en) 2016-06-16

Similar Documents

Publication Publication Date Title
JP5969130B2 (ja) 情報処理装置
US10126964B2 (en) Hardware based map acceleration using forward and reverse cache tables
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
US10496334B2 (en) Solid state drive using two-level indirection architecture
JP2019020788A (ja) メモリシステムおよび制御方法
JP5813589B2 (ja) メモリシステムおよびその制御方法
US20180321883A1 (en) Data storage device and method for operating data storage device
KR20070104874A (ko) 기억장치
KR20200027045A (ko) 메모리 어드레싱
JP6139711B2 (ja) 情報処理装置
JPWO2009096180A1 (ja) メモリコントローラ、不揮発性記憶装置、及び、不揮発性記憶システム
KR20160105624A (ko) 데이터 처리 시스템 및 그것의 동작 방법
US10303368B2 (en) Storage device that determines data attributes based on continuity of address ranges
CN103389942A (zh) 控制装置、存储装置及存储控制方法
WO2017000821A1 (zh) 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法
JP4737223B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP6100927B2 (ja) 情報処理装置
US9798470B2 (en) Memory system for storing and processing translation information
US20200319999A1 (en) Storage device, control method of storage device, and storage medium
JP2013196155A (ja) メモリシステム
JP2008299455A (ja) データ記憶装置及びデータ管理方法
JP2005092678A (ja) 半導体メモリカード及び不揮発性メモリのデータ消去処理方法
CN110968520A (zh) 基于统一缓存架构的多流存储设备
KR20030095820A (ko) 메모리 억세스 제어장치 및 방법
US11144450B2 (en) Maintaining sequentiality for media management of a memory sub-system

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160524

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160608

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: 20160628

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160706

R150 Certificate of patent or registration of utility model

Ref document number: 5969130

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees