JP2011227664A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2011227664A JP2011227664A JP2010096172A JP2010096172A JP2011227664A JP 2011227664 A JP2011227664 A JP 2011227664A JP 2010096172 A JP2010096172 A JP 2010096172A JP 2010096172 A JP2010096172 A JP 2010096172A JP 2011227664 A JP2011227664 A JP 2011227664A
- Authority
- JP
- Japan
- Prior art keywords
- bank
- command
- banks
- control unit
- host
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/14—Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Engineering (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
【課題】ホストからの指示に応じて消費電力の上限を抑制可能なメモリシステムを提供する。
【解決手段】並列動作可能な複数のバンクを有する不揮発性半導体メモリと、ホストからの電源管理コマンドを受信すると、受信した電源管理コマンドを解析するコマンド解析部と、このコマンド解析部の解析結果に応じて書き込みの際に並列動作させるバンクの上限数を動的に可変制御する記録制御部とを備える。
【選択図】図6
【解決手段】並列動作可能な複数のバンクを有する不揮発性半導体メモリと、ホストからの電源管理コマンドを受信すると、受信した電源管理コマンドを解析するコマンド解析部と、このコマンド解析部の解析結果に応じて書き込みの際に並列動作させるバンクの上限数を動的に可変制御する記録制御部とを備える。
【選択図】図6
Description
本発明は、不揮発性半導体メモリを備えたメモリシステムに関する。
NAND型フラッシュメモリを備えたメモリシステムは、複数のチップを並列駆動することで転送性能を向上させている。特許文献1では、物理ブロックを複数個組み合わせた仮想ブロックの概念を導入し、この仮想ブロック単位に並列に書き込みを行っている。
本発明は、ホストからの指示に応じて消費電力の上限を抑制可能なメモリシステムを提供することを目的とする。
本願発明の一態様によれば、並列動作可能な複数のバンクを有する不揮発性半導体メモリと、ホスト装置からの電源管理コマンドを受信すると、受信した電源管理コマンドを解析するコマンド解析部と、このコマンド解析部の解析結果に応じて書き込みの際に並列動作させるバンクの上限数を動的に可変制御する記録制御部とを備えることを特徴とする。
本発明によれば、ホストからの指示に応じて消費電力の上限を動的に抑制可能なメモリシステムを提供することが可能となる。
SSD(Solid State Drive)はホスト機器の外部メモリとして機能する。ホスト機器がノートパソコンのように携帯可能な機器の場合、長期の携帯状態での使用には、電源供給に限界がある。したがって、SSDが、特に、携帯可能な機器に搭載される場合は、ホストからの要求に応じて消費電力を制御可能にしたほうが望ましい。本実施形態のSSDでは、ホストからの電源管理コマンドに応じてバンク並列度を動的に変化させ、これにより消費電力を制御可能とする。
以下に添付図面を参照して、本発明の実施の形態にかかるメモリシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
[第1の実施形態]
図1は、メモリシステムの一例としてのSSD100の構成例を示すブロック図である。SSD100は、SSDコントローラとしてのドライブ制御回路4と、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、バッファメモリ、作業用メモリ領域などとして機能する例えば揮発性半導体メモリで構成されるRAM20と、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースなどを備えている。SSD100は、ATA I/F2を介してパーソナルコンピュータあるいはCPUコアなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部メモリとして機能する。
図1は、メモリシステムの一例としてのSSD100の構成例を示すブロック図である。SSD100は、SSDコントローラとしてのドライブ制御回路4と、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、バッファメモリ、作業用メモリ領域などとして機能する例えば揮発性半導体メモリで構成されるRAM20と、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースなどを備えている。SSD100は、ATA I/F2を介してパーソナルコンピュータあるいはCPUコアなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部メモリとして機能する。
NANDメモリ10は、ホスト1によって指定されたユーザデータを記憶したり、RAM20で管理される管理情報をバックアップ用に記憶したりする。NANDメモリ10は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。NANDメモリ10は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、NANDメモリ10では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。図1では、NANDメモリ10は、4チャネル(4ch:ch0〜ch3)を介して、ドライブ制御回路4内部のNANDコントローラ113に並列接続されており、4つのチャネル並列動作要素10a〜10dを並列動作させることが可能である。チャネル数は4つに限らず、任意のチャネル数を採用可能である。
RAM20は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部としてのバァファ部21は、ホスト1から書込要求があったデータをNANDメモリ10に書込む前に一時的に保存したり、ホスト1から読出要求があったデータをNANDメモリ10から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、NANDメモリ10に記憶されるデータの格納位置などを管理するための管理情報(NANDメモリ10に記憶されている各種管理テーブルが起動時などに展開された管理テーブル、これら管理テーブルの変更差分情報であるログなど)を格納するために使用される。
ドライブ制御回路4は、ホスト1とNANDメモリ10との間でRAM20を介してデータ転送制御を行うとともに、SSD100内の各構成要素を制御する。
ドライブ制御回路4は、データアクセス用バス101、回路制御用バス102を備えている。回路制御用バス102には、ドライブ制御回路4全体を制御するプロセッサ104が接続されている。回路制御用バス102には、NANDメモリ10に記憶された各管理プログラム(FW:ファームウエア)をブートするブート用プログラムが格納されたブートROM105がROMコントローラ106を介して接続されている。
ATAインタフェースコントローラ(ATAコントローラ)111、NANDコントローラ113、及びRAMコントローラ114は、データアクセス用バス101と回路制御用バス102との両方に接続されている。通信制御部としてのATAコントローラ111は、ATAインタフェース2を介してホスト1との間でコマンド(ライト、リード、フラッシュなど)およびデータなどを送受信する。データアクセス用バス101には、データ作業領域及びファームウェア展開領域として使用されるSRAM115がSRAMコントローラ116を介して接続されている。NANDメモリ10に記憶されているファームウェアは起動時、ブートROM105に記憶されたブート用プログラムによってSRAM115に転送される。
RAMコントローラ114は、プロセッサ104とRAM20とのインタフェース処理などを実行する。NANDコントローラ113は、プロセッサ104とNANDメモリ10とのインタフェース処理、NANDメモリ10−RAM20間のデータ転送制御、誤り訂正符号のエンコード/デコード処理などを実行する。
図2は、NANDコントローラ113とNANDメモリ10との接続態様を示すものである。NANDメモリ10は、前述したように、複数個のチャネル並列動作要素10a〜10dによって構成されている。各チャネル並列動作要素10a〜10dは、バンクインターリーブが可能な複数のバンク(図2では4バンク、Bank0〜Bank3)によって構成されており、各チャネル並列動作要素10a〜10d内の各々のバンクは、複数のメモリチップ(図2では、2メモリチップ、Chip0、Chip1)によって構成されている。
図2に示すように、NANDコントローラ113は、複数のチャネルを有し、各チャネルでは、コントロールI/O信号(CtrlI/O)を共有する複数のメモリチップを4本のチップイネーブル信号(CE)でバンク毎に個別に制御する。また、複数のチャネルを跨って4本のレディ/ビジー信号(RyBy)を共有し、レディ/ビジー信号(RyBy)を共有する各チャネルのメモリチップが同時に動作するように制御を行う。レディ/ビジー信号(RyBy)を共有するメモリチップ群をバンクと呼び、各々のバンクは独立して書き込み/読み出し/消去動作を行うことが可能である。
図3は、NANDコントローラ113の内部構成例を示すものである。NANDコントローラ113では、各チャネルを独立して動作させるために、チャネル毎に、DMAコントローラ(DMAC)50と、誤り訂正回路(ECC)51、コマンド発行を行うNANDインタフェース(NANDI/F)52を備える。各NANDI/F52には、4バンク分のチップイネーブル信号CE(CE0〜CE3)が接続され、アクセスするバンクに応じてCE信号(CE0〜CE3)を制御する。また、4バンクを独立して動作させるために、バンク毎に共通接続されたRyBy信号を監視してバンクの状態を管理するバンクコントローラ(BANK−C)53を4つ備える。BANK−C53は、それぞれのバンクに対する要求をキューイングする機能を備え、各バンクへの要求がある場合にチャネルの使用権を確保し、自らが管理するバンクへの読み出し/書き込み/消去要求を実行する。調停制御回路54は、NANDI/F52及びBANK−C53を監視し、各バンクのチャネル使用権を所定の規則に従って調停する。
このように、NANDメモリは、複数のバンクから構成される。NANDメモリ10は、ページ単位の書き込み/読み出しが可能であるが、以下では、説明の単純化のために、便宜上、書込み(記録)は、ブロック単位に行われるとする。また、NANDメモリ10内の各並列動作要素10a〜10d内の物理ブロックを組み合わせて仮想的なブロックを構成することも可能であるが、以下では、説明の単純化のために、NANDメモリ10は1つのチャネル(並列動作要素)のみを有し、NANDメモリ10での並列動作は、バンク単位(インタリーブ動作)のみで行われるとする。
このような前提によると、各バンクは一回の記録で書き込まれる単位(記録単位)である物理ブロック(以下、単にブロックということもある)を複数個有する。前述したように、バンクインタリーブでは、あるバンクに属するブロックへの記録が終わる前でも、これと異なるバンクに属するブロックへ書き込みを始めることが出来る。書き込み中のブロックと同じバンクに属するブロックへは、前の書き込みが終了するまで書込みを実行することができない。以下の説明では、本SSD100においては、バンクの個数をM、回路的に並列動作(インタリーブ)可能なバンク数の上限値をNとする。本実施形態では例えば、M=8、N=4とするが、一般的にはM≧Nの関係を満たしているならM,Nの値は任意である。
また、本第1の実施形態では、ホスト1が使用する論理ブロックアドレスAddrを実際に記憶すべき物理ブロックのアドレスPAは、Addr毎に決まったあるバンクに属する物理ブロックの中から選択する必要がある。このような関係の例として
Addr%M=PA%M=バンク番号(#B) …(1)
があげられる。但し、X%Yは、XをYで割った剰余を求める演算である。第1の実施形態では(1)の関係を満たすようにAddrに対応したPAを選択する。例えば、M=8とした場合、PA=0の場合、#B=0となり、PA=1の場合、#B=1となり、PA=2の場合、#B=2となり、…、PA=7の場合、#B=7となり、PA=8の場合、#B=0となる。また、M=8とした場合、Addr=0の場合、#B=0となり、Addr=1の場合、#B=1となり、Addr=2の場合、#B=2となり、…、Addr=7の場合、#B=7となり、Addr=8の場合、#B=0となる。
Addr%M=PA%M=バンク番号(#B) …(1)
があげられる。但し、X%Yは、XをYで割った剰余を求める演算である。第1の実施形態では(1)の関係を満たすようにAddrに対応したPAを選択する。例えば、M=8とした場合、PA=0の場合、#B=0となり、PA=1の場合、#B=1となり、PA=2の場合、#B=2となり、…、PA=7の場合、#B=7となり、PA=8の場合、#B=0となる。また、M=8とした場合、Addr=0の場合、#B=0となり、Addr=1の場合、#B=1となり、Addr=2の場合、#B=2となり、…、Addr=7の場合、#B=7となり、Addr=8の場合、#B=0となる。
図4は、Addr=0、1、2,3、4を持つシーケンシャルライトによる書き込みデータがホスト1から順次入力された場合の、本SSD100によるバンクインタリーブ動作を示す図である。先の(1)式から、Addr=0のデータは、#B=0のバンクに書き込まれ、Addr=1のデータは、#B=1のバンクに書き込まれ、Addr=2のデータは、#B=2のバンクに書き込まれ、Addr=3のデータは、#B=3のバンクに書き込まれ、Addr=4のデータは、#B=4のバンクに書き込まれる。但し、同時並列可能な最大バンク数N=4であるので、図4に示すように、最初、#B=0、#B=1、#B=2、#B=3の4バンクについてのインタリーブ動作が行われるが、これらの4バンクの何れかへの書き込み動作が終了するまでは、つぎのバンク#B=4への書き込み動作が発生することはない。図4では、#B=1のバンクが最初に時点t0に書き込み動作を終了しているので、この時点t0でつぎのバンク#B=4への書き込み動作が発生している。このように、同時並列可能な最大バンク数がN=4に抑えられたインタリーブ動作が行われている。なお、Addr=0、1、2,3、8をもつデータ書込みが行われる場合は、Addr=8のデータは#B=0のバンクにしか書込みが行えないので、時点t1で#B=0のバンクに対するAddr=0のデータの書込みが終了しないと、Addr=8のデータの書込みを行うことができない。
また、Addr=0、3、5、7を持つランダムライトによる書き込みデータがホスト1から順次入力された場合は、8バンクのうち、#B=0、#B=3、#B=5、#B=7の4バンクが選択されて、これら選択された4バンクに対するインタリーブ動作が行われる。
以下の説明では、RAM20内のバッファ部21はその機能構成を単純化し、バッファ部21は、ブロック単位にデータが書き込まれ、ブロック単位にデータ読み出されるリングバッファ的な構成であるとする。
図5は、前述したドライブ制御回路4内の構成における本実施形態の要部の機能構成を示す図である。ドライブ制御回路4は、ホスト1からのATAコマンドを解析するコマンド解析部71と、バッファ部21に対する書込み/読み出し制御と、NANDメモリ10に対する書込み制御を実行する記録制御部72とを備える。コマンド解析部71は、プロセッサ104を動作させる前述したファームウェアによってその主な機能が実現されるものであり、ホスト1からのATAコマンドを解析し、その解析結果である管理情報(内部変数)としてのホスト許容並列度mを更新する。ホスト許容並列度mは、記録制御部72によって参照され、記録制御部72は、ホスト許容並列度mに基づきNANDメモリ10に対する書込みの際のバンク並列度の上限値(≦N)を決定する。また、コマンド解析結果としての記録要求(論理ブロックアドレスAddrと、バッファ位置Bufpと、記録ブロック数Sizeを含む)がコマンド解析部71から記録制御部72に出力される。記録制御部72は、プロセッサ104を動作させる前述したファームウェア、RAMコントローラ114、NANDコントローラ113によってその主な機能が実現される。
図6は、ホスト1から受信したデータの書き込み処理を示すもので、ホスト1から受信したデータは、一旦バッファ部21にバッファリングされた後、NANDメモリ10に書き込まれる。
ホスト1から送信される電源管理コマンド(例えば、ATAコマンド体系のSET FEATURESのEnable/Disable the APM feature set)について説明する。下記に、APM feature setを示す。count値によって、電力消費とパフォーマンスとの対応が指定されている。
値(count) 解説
(a) 00h 予約済み、使用禁止
(b) 01h 最小消費電力/スタンバイあり
(c) 02h-7Fh 中間消費電力/スタンバイあり
(d) 80h 最小消費電力/スタンバイなし
(e) 81h-FDh 中間消費電力/スタンバイなし
(f) FEh 最大パフォーマンス
(g) FFh 予約済み、使用禁止
値(count) 解説
(a) 00h 予約済み、使用禁止
(b) 01h 最小消費電力/スタンバイあり
(c) 02h-7Fh 中間消費電力/スタンバイあり
(d) 80h 最小消費電力/スタンバイなし
(e) 81h-FDh 中間消費電力/スタンバイなし
(f) FEh 最大パフォーマンス
(g) FFh 予約済み、使用禁止
本実施形態では、かかるATAの電源管理コマンドに対応するために、count値が「01h」、「80h」である場合に、ホスト許容並列度m=1として同時並列駆動するバンクの上限値を1とし、SSD100での消費電力を最小とする。また、count値が「01h」、「80h」以外である場合には、ホスト許容並列度m=Nとして、同時並列駆動するバンクの上限値をNとする。Nは、回路的に可能な同時書込可能なバンク数の上限値である。本実施形態では、ATAコマンド体系のスタンバイあり/スタンバイなしには対応しない。
以下、図7〜図13に従って、本実施形態の動作を説明する。図7は、ホスト1から受信したデータをNANDメモリ10に書き込む際のドライブ制御回路4での全体的動作手順を示すフローチャートである。図8は、図7での登録情報初期化処理(ステップS100)の詳細手順を示すフローチャートである。図9は、図7でのコマンド解析処理(ステップS200)の詳細手順を示すフローチャートである。図10は、図7での記録動作実行処理(ステップS300)の詳細手順を示すフローチャートである。図11は、図10でのPAの登録済み判定処理(ステップS330)の詳細手順を示すフローチャートである。図12は、図10でのPAの登録処理(ステップS370)の詳細手順を示すフローチャートである。図13は、図7でのバンク登録の解除処理(ステップS400)の詳細手順を示すフローチャートである。
図7において、先ず、ドライブ制御回路4内のプロセッサ104では、登録情報の初期化処理を実行する(ステップS100)。プロセッサ104で使用する管理情報(内部変数)であるバンク使用情報bank[]は、バンク数であるM個の要素から成る配列であり、各要素は論理値(真偽値)を取る。論理値が「真」であるときは、そのバンクが使用中(記録実行中)であり、論理値が「偽」であるときは、そのバンクは未使用(記録未実行)であるように真偽値が更新される。登録情報の初期化処理においては、プロセッサ104は、まず、図8に示すように、バンク使用情報bank[0]〜bank[M−1]を「偽」、則ち未使用に初期化し(ステップS101)、現在並列度n(現在の実際のバンク並列度)を0に初期化する(ステップS102)。
つぎに、プロセッサ104は、ホスト許容並列度mを初期値N0とする(図7、ステップS110)。この初期値N0は、ホスト1から電源管理コマンドが入力されていないときのNANDメモリ10でのバンク並列度を決めるものであり、初期値N0=1としてバンク並列動作を行わないようにしてもよいし、N0=4として最大バンク並列度を確保するようにしてもよく、SSD100の仕様に応じて適宜設定する。つぎに、プロセッサ104は、管理情報としての記録ブロック数Sizeを0に初期化する(ステップS120)。記録ブロック数Sizeは、後述するが、書込み開始待ちのブロック個数である。
図7のフローチャートにおいては、ステップS130でバンク単位の記録が終了したか否かが判断され、バンク単位の記録が終了した場合は、バンク登録の解除処理が行われる(ステップS400)。ステップS130で、バンク単位の記録が終了していない場合は、ステップS150で記録ブロック数Sizeを0と比較することで、NANDメモリ10に対する書込み待ちのブロックがまだあるか否かが判定され、書込み待ちのブロックが残っている場合は、記録動作が実行される(ステップS300)。ステップS150で、書込み待ちのブロックが残っていないと判定された場合は、ホストコマンドを受信したか否かが判定され(ステップS160)、ホストコマンドを受信した場合は、コマンド取得処理(ステップS160)、コマンド解析処理(ステップS200)が行われる。すなわち、図7のフローチャートにおいては、記録動作中は、S130の判定を行いつつ、記録ブロック数Sizeが0になるまでは、ステップS300での記録動作実行と、ステップS400でのバンク登録解除処理が繰り返し実行される。
電源を立ち上げた直後は、ステップS130の判断はNOとなり、ステップS150の判断もNOとなる。ステップS160では、ATAコントローラ111は、ホスト1からのコマンドを受信したか否かを判断する。ホスト1からのコマンドを受信していない場合、プロセッサ104は、ホスト1からの指示以外の、例えばウェアレベリング、レフレッシュなどのSSD100の内部処理を実行させる(ステップS175)その他の処理にはバッファ部21中の空きメモリを適正量に保つためのバッファ整理も含まれる。ATAコントローラ111は、ホスト1からのコマンドを受信した場合、受信したコマンド、フィーチャ(feature:コマンド修飾)、カウント(count:コマンド引数)をプロセッサ104に通知する。プロセッサ104のコマンド解析部71は、受信したコマンド、フィーチャ(feature)、カウント(count)を解析する(ステップS200)。
コマンド解析処理の詳細は図9に示されている。コマンド解析部71は、受信したコマンドが「EFh」であるか否かを判定することで、受信したコマンドがセットフィーチャ(set feature)であるか否かを判定する(図9、ステップS201)。受信したコマンドがセットフィーチャでない場合、コマンド解析部71は、受信したコマンドがライト系のコマンド、フラッシュ系のコマンド(バッファ部21からNANDメモリ10へのデータフラッシュ)であるか否かを判定し(ステップS280)、受信したコマンドがライト系のコマンドかフラッシュ系のコマンドでない場合は、他のコマンドの解析処理と、解析結果に対応する処理を実行する(ステップS295)。また、コマンド解析部71は、受信したコマンドがライト系のコマンドかフラッシュ系のコマンドである場合は、ライト系のコマンド、フラッシュ系のコマンドの解析処理と、その解析結果に応じた処理を実行する(ステップS290)。
ステップS290で行われる処理について説明する。コマンド解析部71は、ホスト1からデータ書き込み、または記録済みデータのフラッシュ処理命令などを受けたとき、必要に応じてバッファ部21にバッファリングされたデータをNANDメモリ10に転送する書き込み要求(記録要求)を記録制御部72に出力する。同様にステップS175においてバッファ整理を行った場合も必要に応じてバッファ部21にバッファリングされたデータをNANDメモリ10に転送する書き込み要求を記録制御部72に出力する。コマンド解析部71は、記録要求を記録制御部72に出力する際、記録要求に対応するデータの論理ブロックアドレスAddrと、記録要求に対応するデータのバッファ部21での先頭記憶位置を示す管理情報としてのバッファ位置Bufpと、記録要求に対応するデータの書込み待ちのブロック個数を示す記録ブロック数Sizeに必要な値を書き込む。
記録制御部72は、コマンド解析部71から記録要求を受信すると、論理ブロックアドレスAddr、バッファ位置Bufp、記録ブロック数Sizeを参照して、バッファ部21にバッファリングされたデータをNANDメモリ10に書き込むための制御を実行する。記録制御部72は、ホスト1より、電源管理コマンドが受信されていない場合は、前述したように、ステップS110で初期設定したホスト許容並列度m=N0(初期値)にしたがったバンク並列度をもってNANDメモリ10に対する書込みを実行する。一旦、記録ブロック情報Sizeに0より大きな値が書き込まれたら、ステップS160以下を実行できなくなるため、この記録ブロック情報Sizeが記録制御部72によって0に戻されるまで、コマンド解析部71は、バッファ部21上のデータをNANDメモリ10に書き込む新たな記録要求を発行できない。
コマンド解析部71は、ステップS201で受信したコマンドがセットフィーチャ「EFh」である場合は、つぎに、フィーチャが「05h」であるか否かを判定することで、電源管理をイネーブルとする「Enable the APM feature set」が指定されたか否かを判定する(ステップS210)。フィーチャで、電源管理のイネーブルが指定された場合、コマンド解析部71は、つぎに、前述したカウント(count)に指定された値と、「7Fh」とを論理積をとることで、カウント(count)の最上位ビットを無視させる(ステップS220)。コマンド解析部71は、上記論理積が「01h」以下であるか否かを判定し(ステップS230)、論理積が「01h」以下である場合は、ホスト許容並列度m=1として同時並列駆動するバンクの上限値を1とし(ステップS240)、SSD100での消費電力を最小とする。一方、論理積が「01h」より大きい場合は、ホスト許容並列度m=Nとして同時並列駆動するバンクの上限値を前述した回路的最大値Nとする(ステップS245)。
論理積が「01h」以下である場合には、上記したthe APM feature setにおいて、(b)の01h:最小消費電力/スタンバイありと、(d)の80h:最小消費電力/スタンバイなしが指定された場合を含んでいる。また、論理積が「01h」以下でない場合には、(d)の80h:最小消費電力/スタンバイなしと、(f)のFEh:最大パフォーマンスが指定された状態を含んでいる。count値が01h,80h,FEh以外の中間消費電力においてホスト許容並列度は1またはNの何れかになる。
ステップS210の判定がNOである場合、コマンド解析部71は、フィーチャが「85h」であるか否かを判定することで、電源管理をディスエーブルとする「Disable the APM feature set」が指定されたか否かを判定する(ステップS250)。フィーチャで、電源管理のディスエーブルが指定されていない場合、コマンド解析部71は、他のフィーチャ解析、およびその解析結果に対応する処理を実行する(ステップS270)。フィーチャで、電源管理のディスエーブルが指定されている場合、コマンド解析部71は、ホスト許容並列度mを初期値N0とする。
前述したように、図9のステップS290において、ライト系処理あるいはフラッシュ系処理が発生すると、コマンド解析部71から記録制御部72に記録要求が発生され、管理情報としての、論理アドレスAddr、バッファ位置Bufp、記録ブロック数Sizeに所要の値が書き込まれる。したがって、ライト系処理あるいはフラッシュ系処理が発生すると、最初は、図7のステップS130の判定がNOとなり、図7のステップS150の判定がYESとなり、記録制御部72による記録動作が実行される(ステップS300)。
ステップS300での記録動作の詳細は図10に示されている。記録動作が開始されると、記録制御部72は、現在並列度nがホスト許容並列度m以上であるか否かを判定する(図10、ステップS310)。まず、ホスト1から電源管理コマンドが入力される前の動作について説明する。ホスト1から電源管理コマンドが入力される前は、記録制御部72は、図7のステップS110で設定されたホスト許容並列度m=N0(初期値)をもってバンク並列動作を行う。ここでは、N0=4として設定されている場合について説明する。
記録制御部72は、ステップS310において、現在並列度n≧ホスト許容並列度mである場合は、手順をステップS340にスキップし、PAに無効値をセットする。記録制御部72は、ステップS310において、現在並列度n<ホスト許容並列度mである場合は、論理ブロックアドレスAddrに基づき、論理ブロックアドレスAddrのデータを格納可能な物理ブロックアドレスを求める。前述したように、この実施形態では、論理ブロックアドレスAddrによって求められた物理ブロックの属するバンク番号は決定されている。そして、記録制御部72は、計算した物理ブロックアドレスを物理ブロックアドレスPAにセットする(ステップS320)。つぎに、記録制御部72は、物理ブロックアドレスPAが登録済みであるか否か、すなわち使用中であるか否かを判定する(ステップS330)。
図11に、ステップS330の詳細手順を示す。まず、記録制御部72は、(1)式に基づき、PAをバンク個数M(この場合M=8)で割った剰余を求め、求めた剰余をバンク番号とする(ステップS331)。記録制御部72は、ステップS331で求めた剰余値に対応するバンク使用情報bank[バンク番号]の状態を参照し、bank[バンク番号]が偽の場合は、物理アドレス情報PAが登録ずみでない(記録未実行)と判断し、手順をステップS350に移行させ、bank[バンク番号]が真の場合は、物理アドレス情報PAが登録ずみである(記録実行中)と判断し、手順をステップS340に移行させる。
ステップS340においては、記録制御部72は、物理ブロックアドレスPAに無効値をセットする。ステップS350では、記録制御部72は、当該物理ブロックアドレスPAが無効値であるか否かを判断し、物理ブロックアドレスPAが無効値である場合は、処理を終了して、手順を図7のステップS130に移行させる。記録制御部72は、物理ブロックアドレスPAが無効値でないと判断すると、バッファ位置Bufpで指定されたバッファ部21の位置からデータを読み出し、読み出したデータをNANDメモリ10の物理ブロックアドレスPAで指定される物理ブロックにデータを書き込む(ステップS360)。つぎに、記録制御部72は、物理ブロックアドレスPAの登録処理を実行する(ステップS370)。
ステップS370でのPAの登録処理は、図12にその詳細が示されている。PAの登録処理においては、記録制御部72は、まず、先の(1)式によって求めた剰余をバンク番号(#B)にセットし(ステップS371)、セットしたバンク番号に対応するバンク使用情報bank[#B]を真に、すなわち使用中とする(ステップS372)。そして、現在並列度nを+1する(ステップS373)。
つぎに、記録制御部72は、論理ブロックアドレスAddrを+1し、バッファ位置Bufpを+1し、記録ブロック数Sizeを−1する(図10、ステップS380)。ステップS380の処理が終了すると、手順は図7のステップS130に移行される。
図7のステップS130では、記録制御部72は、バンク単位の記録が終了したか否かを判定しており、記録制御部72は、あるバンクについての記録動作が終了した場合、バンク登録の解除処理を実行する(ステップS400)。
ステップS400でのバンク登録の解除処理の詳細は、図13に示されている。記録制御部72は、まず、バンク番号(#B)に書込みが終了したバンク番号をセットする。そして、そのバンク番号に対応するバンク使用情報bank[#B]を偽に、すなわち未使用とする(ステップS420)。そして、現在並列度nを−1する(ステップS430)。
例えば、先の図4に示したようなAddr=0、1、2,3、4を持つデータ(5つのブロック)をバッファ部21からNANDメモリ10へ書き込むシーケンシャルライトが発生したとする。このシーケンシャルライト開始時点での、現在並列度n=0であるとする。ホスト許容並列度は初期値N0(=4)であるとする。以下、Addr=0、1、2,3、4のブロックの書込みの際の手順を順に説明する。この場合の初期の記録ブロック数Size=5である。
(1)Addr=0のブロック
ステップS310の判断はNOとなり、ステップS320でAddr=0のブロックを書き込む物理ブロックアドレスPAが決められる。この場合、ステップS330の判断はNOとなり、ステップS350の判断はNOとなり、ステップS360でPAにデータが書き込まれる。図12のステップS371では、バンク番号#B=0がセットされ、ステップS372では、バンク使用情報bank[#B=0]に真(記録実行中)がセットされ、現在並列度nが+1され、n=1となる。つぎに、図10のステップS380で、論理ブロックアドレスAddrが+1され、バッファ位置Bufpが+1され、記録ブロック数Sizeが−1され、4となる。
ステップS310の判断はNOとなり、ステップS320でAddr=0のブロックを書き込む物理ブロックアドレスPAが決められる。この場合、ステップS330の判断はNOとなり、ステップS350の判断はNOとなり、ステップS360でPAにデータが書き込まれる。図12のステップS371では、バンク番号#B=0がセットされ、ステップS372では、バンク使用情報bank[#B=0]に真(記録実行中)がセットされ、現在並列度nが+1され、n=1となる。つぎに、図10のステップS380で、論理ブロックアドレスAddrが+1され、バッファ位置Bufpが+1され、記録ブロック数Sizeが−1され、4となる。
(2)Addr=1〜3のブロック
Addr=0のブロックと同様の処理が実行され、結果的に、現在並列度n=4となり、記録ブロック数Size=1となる。
Addr=0のブロックと同様の処理が実行され、結果的に、現在並列度n=4となり、記録ブロック数Size=1となる。
(3)Addr=4のブロック
現在並列度n=4で、ホスト許容並列度m=4であるので、ステップS310の判断はYESとなり、ステップS340で物理ブロックアドレスPAに無効値がセットされ、ステップS350の判断の結果、手順は、図7のステップS130に移行される。#B=0〜3のうちの何れかのバンクで、記録動作が終了するまで、ステップS130、ステップS150、ステップS310、ステップS340、ステップS350のループが繰り返される。図4に示したように、#B=0のバンクでAddr=0のデータの記録動作が終了したとする。この結果、図7のステップS130の判定がYESとなり、バンク登録の解除が実行される。図13のステップS410で記録動作が終了した「0」がバンク番号#Bにセットされ、バンク使用情報bank[#B=0]に偽(未使用)がセットされ(ステップS420)、現在並列度nが−1され、n=3となる。その後、手順は、ステップS130、ステップS150を経由して、図10のステップS310に移行する。この段階で、ステップS310の判定がNOとなり、Addr=4のデータを格納可能な#B=4のバンクの物理ブロックが選択されて、PAにセットされる(ステップS320)。その後、ステップS330、ステップS350、ステップS350を経由し、ステップS360において、#B=4のバンクの物理ブロックにAddr=4のデータが書き込まれる。
現在並列度n=4で、ホスト許容並列度m=4であるので、ステップS310の判断はYESとなり、ステップS340で物理ブロックアドレスPAに無効値がセットされ、ステップS350の判断の結果、手順は、図7のステップS130に移行される。#B=0〜3のうちの何れかのバンクで、記録動作が終了するまで、ステップS130、ステップS150、ステップS310、ステップS340、ステップS350のループが繰り返される。図4に示したように、#B=0のバンクでAddr=0のデータの記録動作が終了したとする。この結果、図7のステップS130の判定がYESとなり、バンク登録の解除が実行される。図13のステップS410で記録動作が終了した「0」がバンク番号#Bにセットされ、バンク使用情報bank[#B=0]に偽(未使用)がセットされ(ステップS420)、現在並列度nが−1され、n=3となる。その後、手順は、ステップS130、ステップS150を経由して、図10のステップS310に移行する。この段階で、ステップS310の判定がNOとなり、Addr=4のデータを格納可能な#B=4のバンクの物理ブロックが選択されて、PAにセットされる(ステップS320)。その後、ステップS330、ステップS350、ステップS350を経由し、ステップS360において、#B=4のバンクの物理ブロックにAddr=4のデータが書き込まれる。
なお、図10のステップS330の判断がYESとなるのは、例えば、図4に示したように、Addr=0、1、2,3、8をもつデータ書込みが行われる場合において、Addr=8のデータを書き込む際に発生する。すなわち、Addr=8のデータは#B=0のバンクにしか書込みが行えないので、#B=0のバンクに対するAddr=0のデータの書込みが終了しないと、Addr=8のデータの書込みを行うことができないからである。
このように、電源管理コマンドがホスト1から入力される前においては、図10のステップS320で、PAに代入される値は、現在並列度nがホスト許容並列度mであるN以上であるならば、無効値である。PAが無効値の場合は、ステップS350の判断によって直ちに記録動作実行処理を終了し、図7に示す制御ループに戻って再び記録動作実行処理が呼び出される。このような処理が繰り返される。この繰り返しは、図7のステップS130で記録終了と判断され、ステップS400でバンク登録が解除されるまで続く。
一方、現在並列度nがホスト許容並列度mであるNに満たない場合は、図10のステップS320でPAにセットする値は、該当バンクに属する記録単位に既に書き込みを行っているか否かに従い、既に書き込みを行っているなら無効値、そうでないなら書き込むべき記録単位の物理ブロック番号をセットする。そして、PAが無効値でないときPAが指す物理ブロックに書き込みを行う。
このように、図4に示したように、現在並列度nがホスト許容並列度mになるまでは、同時に書き込むブロックの個数は増加しうるが、現在並列度nがホスト許容並列度mに一致した時、現在並列度nがホスト許容並列度mより小さくなるまで次の書き込みは待たされ、結果として常にホスト許容並列度m以下の並列度で書き込みを実行することができる。
次に、ホスト1がCmd=EFh、Feature=05h、Count=1を持つ電源管理コマンドを発行し、その後、上記と同様の記録動作を行ったとする。ホスト1がCount=1を持つ電源管理コマンドを発行した後、図9のステップS240でホスト許容並列度mは1にセットされる。この結果、上記と同様の処理によって現在並列度nは常に1またはそれ以下の状態を保ちながら書き込みが実行されることになる。このように、SSD100は常にホスト1が要求する以下のバンク並列度をもって書き込みを行うことが可能となる。ホスト1が、節電状態を解消するために、Feature=05hでCount>1とするか、Feature=85hとすると、バンク並列による書込みが再開される。
このように第1の実施形態では、SSD100側では、ホスト1が発行した電源管理コマンドを通じて要求した最大並列度を超えない範囲のバンク並列度をもって書き込みが実行される。これによって、例えば電源容量の制約が大きなノートPCでも、ホスト1が電源管理コマンドを発行することで安全に書き込みを遂行することが出来る。
なお、図7のフローチャートでは、バンク単位での記録終了の検出(ステップS130)と、バンク登録解除(ステップS400)、Size>0のときの記録実行動作(ステップS300)を図7のループから繰り返し実行する形式を取っているが、バンク単位での記録終了の検出はその事象を割り込みベクタとして取り扱うことで割り込み処理の形式で実現することも出来る。またバンク登録を解除する処理を割り込み処理に移動することで、バンク単位での記録終了の検出を図7のループからの実行ではなく、必要な全ての書き込み命令を出し終わるまで制御を戻さない形式に改めることも出来る。
また、上記実施形態では、ATA規格のSET FEATUREコマンドで、その中のAPMという機能を使用してホスト許容並列度mを書き換えるようにしているが、同様の目的を適当なベンダコマンドで作成したり、あるいはATA規格とは異なる別のインタフェース規格上の同様の目的を持ったコマンドを用いてホスト許容並列度mを書き換えるようにしてもよい。同様にWRITE,Flush系コマンドもATA規格の場合、Cmd=CAh(WRITE DMA)、35h(WRITE DMA EXT), E7h(FLUSH CACHE)等の複数のコマンドに対応するが、これらに限られるものではなく、ベンダコマンド、あるいはATAとは異なる別のインタフェース規格上の同様の目的を持ったコマンドにも同様に適用可能である。
[第2の実施形態]
第1の実施形態では、ATAコマンドのCount値に応じて、ホスト許容並列度mを、最大のN個と並列無しの1個の二段階に制御するようにしたが、第2の実施形態では、ホスト許容並列度mを、最大のN個と並列無しの1個の間で、三段階以上に制御する。すなわち、第1の実施形態では、SSDは2つの電源管理モードを有するようにしたが、第2の実施形態では、3つ以上の電源管理モードを有するようにし、各電源管理モード間で、並列動作させるバンク数の上限値を異ならせる。第2の実施形態では、先の図9に示したコマンド解析処理に代えて、図14に示すコマンド解析処理を採用する。その他の手順は第1の実施形態と同様であり、重複する説明は省略する。図14では、図9のステップS245を、ステップS248に置換している。
第1の実施形態では、ATAコマンドのCount値に応じて、ホスト許容並列度mを、最大のN個と並列無しの1個の二段階に制御するようにしたが、第2の実施形態では、ホスト許容並列度mを、最大のN個と並列無しの1個の間で、三段階以上に制御する。すなわち、第1の実施形態では、SSDは2つの電源管理モードを有するようにしたが、第2の実施形態では、3つ以上の電源管理モードを有するようにし、各電源管理モード間で、並列動作させるバンク数の上限値を異ならせる。第2の実施形態では、先の図9に示したコマンド解析処理に代えて、図14に示すコマンド解析処理を採用する。その他の手順は第1の実施形態と同様であり、重複する説明は省略する。図14では、図9のステップS245を、ステップS248に置換している。
ステップS230で、コマンド解析部71は、カウント(count)と「7Fh」とを論理積が「01h」以下であるか否かを判定し、論理積が「01h」以下である場合は、ホスト許容並列度m=1として同時並列駆動するバンクの上限値を1とし(ステップS240)、SSD100での消費電力を最小とする。一方、論理積が「01h」より大きい場合は、コマンド解析部71は、ホスト許容並列度mに数値変換機能(P2C)の値をセットする(ステップS248)。
P2C(Count)の定義は以下の通りである。C0をある電力の刻み幅、例えば100mWとする。
・Count<ホスト許容並列度=2での動作に必要な最大電力/C0であるならば、P2C(Count)=1とし、
・ホスト許容並列度=2での動作に必要な最大電力/C0≦Count<ホスト許容並列度=3での動作に必要な最大電力/C0であるならば、P2C(Count)=2とし、
…
・ホスト許容並列度=N−1での動作に必要な最大電力/C0≦Count<ホスト許容並列度=Nでの動作に必要な最大電力/C0であるならば、P2C(Count)=N−1とし、
・Count≧ホスト許容並列度=Nでの動作に必要な最大電力/C0であるならば、P2C(Count)=Nとする。
なお、各並列度で動作するとき必要な最大電力は当該製品を製造する過程で実際に計測して得る。
・Count<ホスト許容並列度=2での動作に必要な最大電力/C0であるならば、P2C(Count)=1とし、
・ホスト許容並列度=2での動作に必要な最大電力/C0≦Count<ホスト許容並列度=3での動作に必要な最大電力/C0であるならば、P2C(Count)=2とし、
…
・ホスト許容並列度=N−1での動作に必要な最大電力/C0≦Count<ホスト許容並列度=Nでの動作に必要な最大電力/C0であるならば、P2C(Count)=N−1とし、
・Count≧ホスト許容並列度=Nでの動作に必要な最大電力/C0であるならば、P2C(Count)=Nとする。
なお、各並列度で動作するとき必要な最大電力は当該製品を製造する過程で実際に計測して得る。
このように、第2の実施形態では、ホストからの電源管理コマンドに応じてホスト許容並列度mを三段階以上に制御するようにしたので、より高精度に消費電力管理を行うことが可能となる。
[第3の実施形態]
第1の実施形態では、論理アドレスAddrと、バンク番号#Bの間に、式(1)で示す所定の関係が成立することとしたが、第3の実施形態では、この関係を無くし、ある論理アドレスAddrのデータを記録するべきブロックが複数のバンクのうちの任意のバンクに所属してもよいものとする。すなわち、第3の実施形態では、ホスト1が指定するデータの論理アドレスAddrと、NANDメモリ10上での実際の記憶領域である物理アドレスとの関係を、データ更新の都度、動的に関係付ける論物変換方式を採用する。このこの論物変換方式では、バンク並列を実現する場合、有効なデータが記憶されていない空きブロックをバンク毎に分類し、各バンクから空きブロックを選択して並列処理を実現する。
第1の実施形態では、論理アドレスAddrと、バンク番号#Bの間に、式(1)で示す所定の関係が成立することとしたが、第3の実施形態では、この関係を無くし、ある論理アドレスAddrのデータを記録するべきブロックが複数のバンクのうちの任意のバンクに所属してもよいものとする。すなわち、第3の実施形態では、ホスト1が指定するデータの論理アドレスAddrと、NANDメモリ10上での実際の記憶領域である物理アドレスとの関係を、データ更新の都度、動的に関係付ける論物変換方式を採用する。このこの論物変換方式では、バンク並列を実現する場合、有効なデータが記憶されていない空きブロックをバンク毎に分類し、各バンクから空きブロックを選択して並列処理を実現する。
このような論物変換方式では、同時書き込みの可能性をなるべく高くするため、空きブロックの個数を全てのバンク間で均一にする、または空きブロックの選択をなるべく高速に行うなどの様々な目的を考慮して、ある瞬間に論理アドレスAddrのデータを記録するに望ましいバンク、あるいは空きブロックを決める。望ましいバンク、あるいは空きブロックを決定するためのルールはSSDの実現形態により様々である。この第3の実施形態では、単に、物理ブロックのアドレスPAを選択する際には、まず、最も望ましいバンクとこのバンクに属する物理ブロックを選択し、選択したバンクの物理ブロックが使用可能であれば、選択したバンクの物理ブロックを選択する。また、選択した最も望ましいバンクの物理ブロックが書き込み実施中のため使用できない場合は、つぎに望ましいバンクとこのバンクに属する物理ブロックを選択し、選択したつぎに望ましいバンクの物理ブロックが使用可能であれば、選択したつぎに望ましいバンクの物理ブロックを選択する。また、選択したつぎに望ましいバンクの物理ブロックが書き込み実施中のため使用できない場合は、さらにそのつぎに望ましいバンクとこのバンクに属する物理ブロックを選択する。以下、これを繰り返す。
第3の実施形態では、先の図10に示した記録動作実行処理に代えて、図15に示す記録動作実行処理を採用する。その他の手順は第1の実施形態と同様であり、重複する説明は省略する。図15では、図10のステップS310〜S340を、ステップS800〜S880に置換している。
図15において、記録動作が開始されると、記録制御部72は、現在並列度nがホスト許容並列度m以上であるか否かを判定する(ステップS800)。記録制御部72は、ステップS800において、現在並列度n≧ホスト許容並列度mである場合は、PAに無効値をセットする(ステップS870)。記録制御部72は、ステップS800において、現在並列度n<ホスト許容並列度mである場合は、論理ブロックアドレスAddrのデータを格納可能な最も望ましい物理ブロックアドレスを一つ選び、選択した物理ブロックアドレスをPAにセットする(ステップS810)。
つぎに、記録制御部72は、先の図12で示した手順で、最も望ましい物理ブロックアドレスがセットされたPAのバンクが書き込み実施中か否かを判断し(ステップS820)、書き込み実施中でない場合は、手順をステップS350に移行させて、前述と同様の処理を実行する。ステップS820の判断で、最も望ましい物理ブロックアドレスがセットされたPAが書き込み実施中であると判断された場合、カウント用の変数cを1に初期化し(ステップS830)、つぎに、変数cが定数C1以下であるか否かを判定する(ステップS840)。定数C1は、バンク数M以下の値であり、望ましい物理ブロックアドレスを選択する際の最大選択回数を表す。
ステップS840の判定がNOの場合、記録制御部72は、論理ブロックアドレスAddrのデータを格納可能なつぎに望ましい物理ブロックアドレスを一つ選び、選択した物理ブロックアドレスをPAにセットする(ステップS850)。つぎに、記録制御部72は、変数cを+1し(ステップS860)、さらに、つぎに望ましい物理ブロックアドレスがセットされたPAがのバンク書き込み実施中か否かを判断し(ステップS880)、書き込み実施中でない場合は、手順をステップS350に移行させて、前述と同様の処理を実行する。
ステップS880の判定がYESである場合は、変数cが定数C1に一致するまでは、使用中でない物理ブロックが選択されるまで、順次、次に望ましい(最適度が低下した)物理ブロックの選択処理を実行する。ただし、変数cが定数C1に一致するまで、物理ブロックを選択することができない場合は、変数cが定数C1に一致した地点で、PAに無効値をセットして、手順をステップS350に移行させる。
このように第3の実施形態においては、論理アドレスと物理アドレスとの関係が、データの書き込みの度に、動的に関係付ける論物変換方式を採用している場合においても、ホストからの電源管理コマンドに応じてバンク並列度を動的に可変制御することが可能となる。
1 ホスト装置、2 ATAインタフェース、4 ドライブ制御回路、10 NANDメモリ、21 バッファ部、71 コマンド解析部、72 記録制御部、100 SSD。
Claims (7)
- 並列動作可能な複数のバンクを有する不揮発性半導体メモリと、
ホスト装置からの電源管理コマンドを受信すると、受信した電源管理コマンドを解析するコマンド解析部と、
前記コマンド解析部の解析結果に応じて書き込みの際に並列動作させるバンクの上限数を動的に可変制御する記録制御部と、
を備えることを特徴とするメモリシステム。 - 前記コマンド解析部は、受信した前記電源管理コマンドに応じて複数の電源管理モードのうちの1つを動作させ、各電源管理モードで並列動作させるバンクの上限数を異ならせることを特徴とする請求項1に記載のメモリシステム。
- 前記コマンド解析部の解析結果が最小消費電力を指定する場合、前記記録制御部は、並列動作させるバンクの上限数を1とする第1の電源管理モードを動作させ、コマンド解析部の解析結果が最小消費電力を指定していない場合、前記記録制御部は、並列動作させるバンクの上限数を同時並列可能な最大バンク数とする第2の電源管理モードを動作させることを特徴とする請求項2に記載のメモリシステム。
- 前記ホスト装置から前記電源管理コマンドが入力されていない場合、前記記録制御部は、並列動作させるバンクの上限数の初期値を1とすることを特徴とする請求項1に記載のメモリシステム。
- 書き込みの際に前記ホスト装置から入力される論理アドレスと書き込み動作を実行するバンクの番号とが関連付けられていることを特徴とする請求項1に記載のメモリシステム。
- 前記不揮発性半導体メモリに書き込まれるデータを一時的に保持するバッファメモリを更に具備し、
前記記録制御部は、現在並列動作しているバンク数が前記上限数未満である場合に、前記バッファメモリから前記不揮発性半導体メモリへの書き込みを実行することを特徴とする請求項1に記載のメモリシステム。 - 前記記録制御部は、現在並列動作しているバンク数が前記上限数に等しい場合に、前記バッファメモリから前記不揮発性半導体メモリへの書き込みを待機させるすることを特徴とする請求項1に記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010096172A JP2011227664A (ja) | 2010-04-19 | 2010-04-19 | メモリシステム |
US13/072,208 US8677051B2 (en) | 2010-04-19 | 2011-03-25 | Memory system, control method thereof, and information processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010096172A JP2011227664A (ja) | 2010-04-19 | 2010-04-19 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011227664A true JP2011227664A (ja) | 2011-11-10 |
Family
ID=44789075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010096172A Pending JP2011227664A (ja) | 2010-04-19 | 2010-04-19 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US8677051B2 (ja) |
JP (1) | JP2011227664A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015225458A (ja) * | 2014-05-27 | 2015-12-14 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置および調停方法 |
JP2016529618A (ja) * | 2013-08-08 | 2016-09-23 | クアルコム,インコーポレイテッド | 選択的な電力または性能の最適化を伴うメモリチャネルインターリービングのためのシステムおよび方法 |
JP2017049965A (ja) * | 2015-09-01 | 2017-03-09 | 株式会社東芝 | ストレージおよびストレージシステム |
US9792989B2 (en) | 2013-02-07 | 2017-10-17 | Toshiba Memory Corporation | Memory system including nonvolatile memory |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120098325A (ko) * | 2011-02-28 | 2012-09-05 | 에스케이하이닉스 주식회사 | 비휘발성 메모리 시스템 및 이를 위한 특성 정보 설정 방법 |
JP2012203863A (ja) * | 2011-03-28 | 2012-10-22 | Toshiba Corp | メモリシステム |
JP2013137674A (ja) * | 2011-12-28 | 2013-07-11 | Toshiba Corp | メモリシステム |
US9348380B2 (en) * | 2013-12-28 | 2016-05-24 | Samsung Electronics Co., Ltd. | Dynamic thermal budget allocation for memory array |
US9846541B2 (en) * | 2014-12-11 | 2017-12-19 | Toshiba Memory Corporation | Memory system for controlling perforamce by adjusting amount of parallel operations |
US10599349B2 (en) | 2015-09-11 | 2020-03-24 | Samsung Electronics Co., Ltd. | Method and apparatus of dynamic parallelism for controlling power consumption of SSDs |
US11216323B2 (en) | 2015-09-16 | 2022-01-04 | Samsung Electronics Co., Ltd. | Solid state memory system with low power error correction mechanism and method of operation thereof |
US10241701B2 (en) * | 2015-09-16 | 2019-03-26 | Samsung Electronics Co., Ltd. | Solid state memory system with power management mechanism and method of operation thereof |
US10453502B2 (en) * | 2016-04-04 | 2019-10-22 | Micron Technology, Inc. | Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions |
US10289321B1 (en) * | 2017-05-05 | 2019-05-14 | Amazon Technologies, Inc. | Bad block table recovery in a solid state drives |
US10956057B2 (en) * | 2018-08-29 | 2021-03-23 | Qualcomm Incorporated | Adaptive power management of dynamic random access memory |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3552280B2 (ja) | 1993-11-29 | 2004-08-11 | ソニー株式会社 | 情報転送装置及び情報記録装置 |
JP4176933B2 (ja) | 1999-10-29 | 2008-11-05 | 株式会社東芝 | 外部記憶装置ドライバプログラムを記録した記録媒体、及び外部記憶装置アクセス機能を有する計算機 |
JP2001344875A (ja) | 2000-05-30 | 2001-12-14 | Ricoh Co Ltd | 情報記録システム及び情報記憶媒体 |
JP2004310651A (ja) | 2003-04-10 | 2004-11-04 | Fujitsu Ltd | コスト解析に基づいてループの自動並列化処理を行う情報処理装置 |
US7383375B2 (en) | 2003-12-30 | 2008-06-03 | Sandisk Corporation | Data run programming |
US8572349B2 (en) * | 2006-01-31 | 2013-10-29 | Agere Systems Llc | Processor with programmable configuration of logical-to-physical address translation on a per-client basis |
JP2009087282A (ja) | 2007-10-03 | 2009-04-23 | Fuji Xerox Co Ltd | 並列計算システムおよび並列計算方法 |
US8385148B2 (en) * | 2009-06-15 | 2013-02-26 | Broadcom Corporation | Scalable, dynamic power management scheme for switching architectures utilizing multiple banks |
US8335123B2 (en) | 2009-11-20 | 2012-12-18 | Sandisk Technologies Inc. | Power management of memory systems |
US8555095B2 (en) | 2010-07-26 | 2013-10-08 | Apple Inc. | Methods and systems for dynamically controlling operations in a non-volatile memory to limit power consumption |
-
2010
- 2010-04-19 JP JP2010096172A patent/JP2011227664A/ja active Pending
-
2011
- 2011-03-25 US US13/072,208 patent/US8677051B2/en not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9792989B2 (en) | 2013-02-07 | 2017-10-17 | Toshiba Memory Corporation | Memory system including nonvolatile memory |
JP2016529618A (ja) * | 2013-08-08 | 2016-09-23 | クアルコム,インコーポレイテッド | 選択的な電力または性能の最適化を伴うメモリチャネルインターリービングのためのシステムおよび方法 |
JP2015225458A (ja) * | 2014-05-27 | 2015-12-14 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置および調停方法 |
JP2017049965A (ja) * | 2015-09-01 | 2017-03-09 | 株式会社東芝 | ストレージおよびストレージシステム |
US10198061B2 (en) | 2015-09-01 | 2019-02-05 | Toshiba Memory Corporation | Storage and storage system |
US10824217B2 (en) | 2015-09-01 | 2020-11-03 | Toshiba Memory Corporation | Storage and storage system |
Also Published As
Publication number | Publication date |
---|---|
US8677051B2 (en) | 2014-03-18 |
US20110258367A1 (en) | 2011-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011227664A (ja) | メモリシステム | |
US20230244296A1 (en) | Device power control | |
JP5404483B2 (ja) | メモリシステム | |
JP5323199B2 (ja) | メモリシステム及びメモリシステムの制御方法 | |
JP4829365B1 (ja) | データ記憶装置及びデータ書き込み方法 | |
US9128618B2 (en) | Non-volatile memory controller processing new request before completing current operation, system including same, and method | |
KR101311116B1 (ko) | 비-휘발성 메모리를 구비한 시스템에 대한 전력 예산의 동적 할당 | |
JP5762930B2 (ja) | 情報処理装置および半導体記憶装置 | |
JP2012068936A (ja) | メモリシステム | |
US20140019672A1 (en) | Memory system and control method thereof | |
US20160283114A1 (en) | Semiconductor memory device | |
TW201007735A (en) | Block management method for flash memory and storage system and controller using the same | |
JP2001350665A (ja) | ブロックアラインメント機能付き半導体記憶装置 | |
KR20070118533A (ko) | 불휘발성 메모리 | |
US8185687B2 (en) | Semiconductor storage device and method of controlling semiconductor storage device | |
KR20200040544A (ko) | 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 스토리지 장치, 및 상기 메모리 컨트롤러의 동작 방법 | |
KR20130112210A (ko) | 메모리 시스템 및 그것의 페이지 교체 방법 | |
CN111796759B (zh) | 多平面上的片段数据读取的计算机可读取存储介质及方法 | |
US10146483B2 (en) | Memory system | |
CN105786722B (zh) | 基于异构混合内存的nvm内存擦写控制方法和系统 | |
US20210294528A1 (en) | Data processing device | |
US20150254011A1 (en) | Memory system, memory controller and control method of non-volatile memory | |
JP2019053522A (ja) | メモリシステムおよび方法 | |
US20240004578A1 (en) | Memory system and method of operating memory controller included in the memory system | |
US20230376433A1 (en) | Memory system and control method |