JP6640776B2 - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP6640776B2
JP6640776B2 JP2017052154A JP2017052154A JP6640776B2 JP 6640776 B2 JP6640776 B2 JP 6640776B2 JP 2017052154 A JP2017052154 A JP 2017052154A JP 2017052154 A JP2017052154 A JP 2017052154A JP 6640776 B2 JP6640776 B2 JP 6640776B2
Authority
JP
Japan
Prior art keywords
credit
processor
memory
processing unit
memory system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017052154A
Other languages
English (en)
Other versions
JP2018156350A (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.)
Kioxia Corp
Original Assignee
Kioxia 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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2017052154A priority Critical patent/JP6640776B2/ja
Priority to US15/695,773 priority patent/US10802752B2/en
Publication of JP2018156350A publication Critical patent/JP2018156350A/ja
Application granted granted Critical
Publication of JP6640776B2 publication Critical patent/JP6640776B2/ja
Priority to US17/022,652 priority patent/US11693592B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0625Power saving in 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/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/0658Controller construction arrangements
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/04Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

本実施形態は、メモリシステムに関する。
メモリシステムは、使用状況などに応じて性能の調整を行う場合がある。使用状況としては、メモリシステムの消費電力または温度が挙げられる。一例では、メモリシステムは、消費電力または温度が上がり過ぎないように、自身の動作を制限する。
一つの実施形態は、簡単なアルゴリズムで性能の調整を行うことが可能なメモリシステムを提供することを目的とする。
一つの実施形態によれば、メモリシステムは、不揮発性の第1メモリと、第1プロセッサと、第2プロセッサとを備える。第1プロセッサは、第1割当量を設定する。第2プロセッサは、第1メモリへのアクセスを実行し、アクセスの際の第1メモリの動作時間に応じた量である消費量を演算し、消費量が第1割当量に至った場合、第1プロセッサに通知を送信する。第1プロセッサは、有効期限付きの複数の第2割当量のそれぞれを、それぞれ異なるタイミングで設定する。第1割当量は、1以上の第3割当量の合計量である。第3割当量は、設定された複数の第2割当量のうちの有効期限が切れていない第2割当量である。
図1は、第1の実施形態のメモリシステムの構成例を示す図である。 図2は、第1の実施形態のマルチコアプロセッサのより詳細な構成を示す図である。 図3は、第1の実施形態のFIFO領域の構成例を示す模式図である。 図4は、第1の実施形態のFIFO領域に記録されたデータの状態の一例を説明するための図である。 図5は、第1の実施形態のFIFO領域に記録されたデータの状態の一例を説明するための図である。 図6は、第1の実施形態のFIFO領域に記録されたデータの状態の一例を説明するための図である。 図7は、第1の実施形態のFIFO領域に記録されたデータの状態の一例を説明するための図である。 図8は、第1の実施形態のFIFO領域に記録されたデータの状態の一例を説明するための図である。 図9は、第1の実施形態のFIFO領域に記録されたデータの状態の一例を説明するための図である。 図10は、通常モードにおいてクレジットの供給時の第1の実施形態のメモリシステムの動作を説明するフローチャートである。 図11は、通常モードにおいてクレジットの消費時の第1の実施形態のメモリシステムの動作を説明するフローチャートである。 図12は、第1の実施形態のメモリシステムの動作モードの切り替えの動作を説明するフローチャートである。 図13は、第2の実施形態のメモリシステムの構成例を示す図である。 図14は、第2の実施形態のメモリシステムの動作の一例を説明するためのシーケンス図である。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のメモリシステムの構成例を示す図である。メモリシステム1aは、ホスト2と所定の通信インタフェースで接続される。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。メモリシステム1aは、ホスト2からアクセス要求(リード要求およびライト要求)を受け付けることができる。各アクセス要求は、アクセス先を示す論理アドレスを伴う。論理アドレスは、メモリシステム1aがホスト2に提供する論理アドレス空間内の位置を示す。メモリシステム1aは、ライト要求とともに、書き込み対象のデータを受け付ける。
メモリシステム1aは、NAND型のフラッシュメモリ(NANDメモリ)10と、ホスト2とNANDメモリ10との間のデータ転送を実行するメモリコントローラ11と、を備えている。なお、メモリシステム1aは、NANDメモリ10の代わりに任意の不揮発性メモリを具備することができる。例えば、メモリシステム1aは、NANDメモリ10の代わりにNOR型のフラッシュメモリを具備することができる。
NANDメモリ10は、1以上のメモリチップを含む。各メモリチップは、複数のブロックを備える。ブロックは、例えばデータのイレースが実行され得る最小の記憶領域である。ブロックは、複数のページを備える。ページは、例えばデータのリードまたはデータのライトが実行され得る最小の記憶領域である。
メモリシステム1aは、さらに、メモリシステム1aの温度を検出する温度センサ16を備える。温度センサ16による検出値は、メモリコントローラ11に送られる。
メモリコントローラ11は、ホストインタフェースコントローラ(ホストI/Fコントローラ)12と、マルチコアプロセッサ13と、NANDコントローラ14と、RAM(Random Access Memory)15とを備える。
マルチコアプロセッサ13は、ファームウェアプログラムに基づいてメモリコントローラ11の制御を実行する。ファームウェアプログラムは、例えばNANDメモリ10などの不揮発性メモリに予め格納されており、起動時にNANDメモリ10から読み出されてマルチコアプロセッサ13によって実行される。
ホストI/Fコントローラ12は、ホスト2との間の通信インタフェースの制御を実行する。ホストI/Fコントローラ12は、マルチコアプロセッサ13による制御の下で、ホスト2とRAM15との間のデータ転送を実行する。NANDコントローラ14は、マルチコアプロセッサ13による制御の下で、NANDメモリ10とRAM15との間のデータ転送を実行したりする。
マルチコアプロセッサ13は、複数のプロセッサ(CPU13)を備える。ここでは一例として、マルチコアプロセッサ13は、CPU13a、CPU13b、CPU13c、およびCPU13dを備える。
図2は、マルチコアプロセッサ13のより詳細な構成を示す図である。メモリコントローラ11の制御は、複数の処理に分割されており、4つのCPU13によって分担される。メモリコントローラ11の制御を構成する複数の処理は、例えば、ホスト2からの要求を受け付ける処理、アクセス要求に含まれる論理アドレスとNANDメモリ10内の物理的な位置(物理アドレス)とを対応付ける処理、ホスト2から送られてきた書き込み対象のデータからNANDメモリ10に書き込むページ単位のデータを生成する処理、NANDメモリ10から読み出されたページ単位のデータからホスト2に送るデータを生成する処理、NANDメモリ10にアクセスする処理、などを含む。
特に、CPU13aは、メモリコントローラ11の制御を構成する複数の処理のうち、ホスト2からの要求を受け付ける処理を実行する第1処理部131として機能する。また、CPU13bは、NANDメモリ10にアクセスする処理を実行する第2処理部132として機能する。
NANDメモリ10へのアクセスは、複数の種類のアクセスを含む。複数の種類は、リード、ライト、およびイレースを含む。第2処理部132は、NANDメモリ10からデータをリードする場合には、リード元のページを指定する物理アドレスを含むリードコマンドをNANDコントローラ14を経由してNANDメモリ10に送信する。また、第2処理部132は、NANDメモリ10にデータをライトする場合には、ライト先のページを指定する物理アドレスを含むライトコマンドをNANDコントローラ14を経由してNANDメモリ10に送信する。また、第2処理部132は、NANDメモリ10に対してイレースを実行する場合には、イレース対象のブロックを指定する物理アドレスを含むイレースコマンドをNANDコントローラ14を経由してNANDメモリ10に送信する。
ここで、第1処理部131は、クレジットを設定する。クレジットを設定するとは、第2処理部132にクレジットを供給することである。クレジットとは、NANDメモリ10の動作時間に応じた量であり、クレジットを供給するとは、NANDメモリ10の動作時間に応じた量を割り当てることである。クレジットは、NANDメモリ10の動作時間に対応する限り、任意の単位で表記され得る。例えば、クレジットは、NANDメモリ10の動作時間にリニアに対応する整数値の「ポイント」によって表記される。
第2処理部132は、供給されたクレジットを消費しながらNANDメモリ10へのアクセスを実行する。換言すると、第2処理部132は、アクセスの際のNANDメモリ10の動作時間に応じた量を、供給されたクレジットに対する消費量とする。クレジットが枯渇した場合、即ちクレジットの消費量がクレジットの供給量に至った場合、第2処理部132は、クレジットが枯渇した旨を示す枯渇通知を第1処理部131に送信する。
第1処理部131は、枯渇通知を受信した場合、NANDメモリ10の動作を制限することができる。ここでは、NANDメモリ10の動作の制限の一例として、第1処理部131は、CPU13bの動作モードを通常モードからスヌーズモードに遷移させる。第1の実施形態においては、通常モードは、NANDメモリ10へのアクセスが実行可能なモードであり、スヌーズモードは、NANDメモリ10へのアクセスが実行できないモードである。一例では、スヌーズモードでは、CPU13bに供給されるクロックが遮断される。CPU13bの動作モードが通常モードからスヌーズモードに遷移することによって、第2処理部132は、NANDメモリ10へのアクセスが不可能となるので、メモリシステム1aの性能が抑制される。
第1処理部131がクレジットの供給量を小さくすると、第2処理部132においてクレジットが枯渇しやすくなる。その結果、NANDメモリ10は、動作が抑制される傾向になる。反対に、第1処理部131は、クレジットの供給量を大きくすると、第2処理部132においてクレジットは枯渇しにくくなる。その結果、NANDメモリ10は、動作が抑制されにくい傾向になる。即ち、第1処理部131は、クレジットの供給量を調整することによって、メモリシステム1aの性能を調整することが可能である。
クレジットの供給量の調整方法は、特定の方法に限定されない。ここでは一例として、第1処理部131は、クレジットの供給量を演算する際に、温度センサ16による検出値をフィードバックする。第1処理部131は、温度センサ16による検出値をフィードバックとして用いてPID制御に基づく演算を実行することによって、温度センサ16による検出値がターゲット温度を超えないように、クレジットの供給量を演算する。
第1処理部131は、クレジットを複数回、それぞれ異なるタイミングで供給する。供給された各クレジットは、有効期限が定められている。第2処理部132は、複数回供給されたクレジットのうち、有効期限が早く切れるクレジットから順番に消費する。第2処理部132は、有効期限が切れたクレジットを使用することはできない。クレジットに有効期限が付されることによって、クレジットの供給量の調整に対する性能の追従性が向上する。
なお、クレジットは必ずしも複数回設定されなくてもよい。また、クレジットには有効期限が設定されなくてもよい。
有効期限の管理方法は、特定の方法に限定されない。ここでは一例として、第2処理部132は、供給された複数のクレジットのうち、最後に供給された所定数のクレジットのそれぞれを、有効期限が切れていないクレジットとして扱い、その他の全てのクレジットを、有効期限が切れたクレジットとして扱う。
CPU13bは、CPU13aからのアクセスが可能なSRAM133を備える。SRAM133には、クレジットの供給のためのメモリ領域として、FIFO領域134が設けられている。FIFO領域134には、各クレジットが、供給された順番で記録される。SRAM133には、FIFO領域134を管理するためのポインタであるヘッドポインタ135およびテイルポインタ136がさらに記録される。
図3は、FIFO領域134の構成例を示す模式図である。FIFO領域134は、論理的にリング状に配置され、時系列順にデータが書き込まれる複数の単位領域20を備える。各単位領域20には、供給されたクレジットの量(供給クレジット)が記録され得る領域と消費されたクレジットの量(消費クレジット)が記録され得る領域とを備える。供給クレジットは、第1処理部131によってFIFO(First In、 First Out)のルールに従って入力される。消費クレジットは、第2処理部132によって、クレジットの消費に応じて入力または更新される。
テイルポインタ136は、次に供給クレジットが記録される予定の単位領域20を指すポインタである。第1処理部131は、テイルポインタ136が示す単位領域20に供給クレジットを記録するとともに、最も古くに供給クレジットが記録された単位領域20を指すようにテイルポインタ136を更新する。
ヘッドポインタ135は、有効期限が切れていない複数の供給クレジットのうちの有効期限が最も早く切れる供給クレジットが記録されている単位領域20を指すポインタである。第2処理部132は、ヘッドポインタ135を、所定数(図3の例では5つ)の単位領域20をおいてテイルポインタ136に追従させる。
ヘッドポインタ135が指している単位領域20に記録された供給クレジット、および、ヘッドポインタ135が指している単位領域20に記録された供給クレジットよりも時間的に後に記録された全ての供給クレジットは、有効期限が切れていないクレジットに該当する。即ち、ヘッドポインタ135が指している単位領域20から、テイルポインタ136が最後の更新の直前まで指していた単位領域20まで、に書き込まれた全ての供給クレジットは、有効期限が切れていないクレジットに該当する。以降、ヘッドポインタ135が指している単位領域20から、テイルポインタ136が最後の更新の直前まで指していた単位領域20まで、の範囲を、有効クレジットウインドウ、と表記する場合がある。
第2処理部132は、有効クレジットウインドウに記録された複数の供給クレジットのうちの、有効期限がより早く切れる供給クレジットを優先して消費する。
図4〜図9は、FIFO領域134に記録されたデータの状態の推移の一例を説明するための図である。
図4の例では、単位領域20a〜20eが有効クレジットウインドウに含まれる。単位領域20a、20b、20c、20d、20eの順番で、それぞれの単位領域20に供給クレジットが記録される。また、単位領域20aには「100」ポイントの供給クレジット、単位領域20bには「100」ポイントの供給クレジット、単位領域20cには「80」ポイントの供給クレジット、単位領域20dには「70」ポイントの供給クレジット、単位領域20eには「60」ポイントの供給クレジット、が記録されている。また、単位領域20a〜20eのそれぞれには、「0」ポイントの消費クレジットが記録されている。即ち、単位領域20a〜20eに記録された供給クレジットは、何れも消費が完了していない。単位領域20a、20b、20c、20d、20eに記録された供給クレジットの合計値である「410」ポイントのクレジットが利用可能である。
第2処理部132がアクセスを実行する場合、第2処理部132は、「410」ポイントの利用可能なクレジットのうちの有効期限が最も早く切れる供給クレジットを消費する。例えば、FIFO領域134に記録されたデータが図4に示される状態において第2処理部132が「50」ポイントに相当するアクセスを実行する場合、第2処理部132は、有効クレジットウインドウに含まれる消費が完了していない供給クレジットのうちの有効期限が最も早く切れる供給クレジットである、単位領域20aに記録された供給クレジットを消費する。即ち、第2処理部132は、単位領域20aに記録された消費クレジットを、「0」ポイントから「50」ポイントに更新する。この更新により、FIFO領域134に記録されたデータは、図5に示される状態になる。この状態では、「360」ポイントのクレジットが利用可能である。
続いて、第2処理部132が「70」ポイントに相当するアクセスを実行する場合、第2処理部132は、単位領域20aに記録された供給クレジットのうちの未消費の「50」ポイントを優先して消費する。そして、第2処理部132は、単位領域20aに記録された供給クレジットの次に有効期限が切れる単位領域20bに記録された供給クレジットから、残りの「20」ポイントを消費する。即ち、第2処理部132は、単位領域20aに記録された消費クレジットを、「50」ポイントから「100」ポイントに更新し、単位領域20bに記録された消費クレジットを、「0」ポイントから「20」ポイントに更新する。この更新により、FIFO領域134に記録されたデータは、図6に示される状態になる。この状態では、「290」ポイントのクレジットが利用可能である。
続いて、第1処理部131が「50」ポイントのクレジットを供給する場合、第1処理部131は、テイルポインタ136が指している単位領域20fに供給クレジットとして「50」を記録し、テイルポインタ136を更新する。第2処理部132は、テイルポインタ136の更新に応じてヘッドポインタ135を更新する。この更新により、FIFO領域134に記録されたデータは、図7に示される状態になる。単位領域20aに記録された供給クレジットは、この更新により、有効クレジットウインドウから除外される。即ち、単位領域20aに記録された供給クレジットの有効期限が切れる。また、単位領域20fに記録された供給クレジットは、有効クレジットウインドウに追加される。図7に示される状態では、「340」ポイントのクレジットが利用可能である。
なお、図7の例では、単位領域20aに記録された供給クレジットの消費が完了している。供給クレジットの有効期限は、その供給クレジットの消費が完了していない場合であっても切れ得る。例えばFIFO領域134に記録されたデータが図5に示される状態でありかつ新たに「50」ポイントのクレジットが供給される場合、図8に示されるように、単位領域20aに記録された供給クレジットのうちの「50」ポイントが未消費の状態で、単位領域20aが有効クレジットウインドウから除外される。
また、各単位領域20において、記録された供給クレジットの有効期限が切れた後、供給クレジットおよび消費クレジットがそれぞれ「0」で上書きされてもよい。または、各単位領域20において、新たに供給クレジットが記録される際に、当該新たな供給クレジットが上書きされ、消費クレジットが「0」で上書きされてもよい。
FIFO領域134に記録されたデータが図7に示される状態でありかつ新たに「340」ポイントのクレジットが消費される場合、上述した方法で消費クレジットが更新されることによって、FIFO領域134に記録されたデータは、図9に示される状態になる。この更新により、有効クレジットウインドウに含まれる全ての単位領域20において、供給クレジットと消費クレジットとが等しくなる。FIFO領域134に記録されたデータがこのような状態になった場合、第2処理部132は、供給クレジットが枯渇したと判断し、第1処理部131に枯渇通知を送信する。
次に、第1の実施形態のメモリシステム1aの動作例を説明する。図10は、通常モードにおいてクレジットの供給時の動作を説明するフローチャートである。
通常モードにおいては、図10に例示されるように、第1処理部131は、クレジットを供給するタイミングに至ったか否かを判定する(S101)。クレジットを供給するタイミングに至っていないと判定された場合には(S101、No)、S101の処理が再び実行される。
クレジットの供給のタイミングは、任意に設計可能である。一例では、第1処理部131は、前回のクレジットの供給から所定の時間が経過した場合に、クレジットを供給するタイミングに至ったと判定し、前回のクレジットの供給から所定の時間が経過していない場合に、クレジットを供給するタイミングに至っていないと判定する。まだ一度もクレジットを供給していない場合には、第1処理部131は、動作開始から所定の時間が経過した場合に、クレジットを供給するタイミングに至ったと判定する。または、まだ一度もクレジットを供給していない場合には、第1処理部131は、経過時間に関係なくクレジットを供給するタイミングに至ったと判定してもよい。
第1処理部131がクレジットを供給するタイミングに至ったと判定した場合(S101、Yes)、第1処理部131は、温度センサ16から温度検出値を取得する(S102)。そして、第1処理部131は、温度検出値に基づいてクレジットの供給量(供給クレジット)を演算する(S103)。
S103の処理では、第1処理部131は、例えば、下記の式1を用いることによってクレジットの供給量を演算する。この式1は、PID制御に基づく演算によってクレジットの供給量を求める式の一例である。
Credit(n)=Credit(n-1)+Kp*(e(n)-e(n-1))+Ki*e(n)+Kd*((e(n)-e(e-1))-(e(n-1)-e(n-2))) ・・・(式1)
なお、S101〜S107のループ処理のループカウンタを「i(ただしiは0以上の整数)」と表記した場合に、Credit(i)は、i+1回目のループ処理において演算されるクレジットの供給量であり、e(i)は、i+1回目のループ処理において演算される、ターゲット温度から温度検出値を減算して得られる値である。また、Kpは比例係数であり、Kiは積分係数であり、Kdは微分係数である。Kp、Ki、およびKdのそれぞれは、チューニングによって決定される。ターゲット温度は、例えば仕様によって予め決められている。
なお、式1によれば、最初の2回のループ処理においては、Credit(n-1)、e(n-1)、およびe(n-2)は定まっていない。その場合、第1処理部131は、一例では、Credit(n-1)、e(n-1)、およびe(n-2)としてそれぞれ予め定められた値を使用する。
第1処理部131は、S103の処理によって得られた供給クレジットを、FIFO領域134に書き込む(S104)。供給クレジットの書き込み位置は、テイルポインタ136が示す単位領域20である。第1処理部131は、S103の処理の実行に応じて、テイルポインタ136を更新する(S105)。
続いて、第1処理部131は、供給完了通知を第2処理部132に送信する(S106)。供給完了通知は、例えばプロセッサ間通信(Inter-Processor Communication)を利用して送信される。第2処理部132は、供給完了通知を受信すると、FIFO領域134に供給クレジットが書き込まれたことを認識する。そして、第2処理部132は、ヘッドポインタ135を更新する(S107)。S107の処理の後、制御がS101に移る。
図11は、通常モードにおいてクレジットの消費時の動作を説明するフローチャートである。
第2処理部132は、NANDメモリ10へのアクセスを実行すると(S201)、実行したアクセスの種類に応じてクレジットの消費量を演算する(S202)。
リード、ライト、イレース時のNANDメモリ10の動作時間は、それぞれおよそ決まっている。したがって、リード、ライト、イレース毎に要するクレジットを予め求め、記憶しておくことによって、NANDメモリ10の動作時間を実測することなくクレジットの消費量を推定することが可能である。一例では、クレジットの単位消費量がアクセスコマンドの種類と対応付けて記憶されている。例えば、リードコマンドに関するクレジットの単位消費量は「5」ポイント、ライトコマンドに関するクレジットの単位消費量は「20」ポイント、イレースコマンドに関するクレジットの単位消費量は「100」ポイントである場合において、第2処理部132がS201の処理において6つのリードコマンドを発行した場合、第2処理部132は、リードコマンドに関するクレジットの単位消費量「5」にリードコマンドの数「6」を乗じることによって、クレジットの消費量「30」を演算する。このように、第2処理部132は、NANDメモリ10の動作時間を実測することなくクレジットの消費量を演算することが可能である。
なお、第2処理部132は、NANDメモリ10の動作時間を実測してもよい。一例では、第2処理部132は、NANDメモリ10のレディービジー信号を監視し、アクセスコマンドの発行後、レディービジー信号がビジー状態に遷移してからレディー状態に戻るまでの時間(ビジー時間)をカウントする。そして、第2処理部132は、得られたビジー時間を、クレジットの消費量とする。
また、S201の処理とS202の処理との順番は上記に限定されない。例えば、第2処理部132は、発行予定のアクセスコマンドが決まった場合、発行予定のアクセスコマンドが発行される前にクレジットの消費量を演算してもよい。
第2処理部132は、S202の処理によって得られたクレジットの消費量に基づいて、FIFO領域134に記録されている消費クレジットを更新する(S203)。消費クレジットの更新方法は上述したとおりである。
なお、利用可能なクレジットがS202の処理によって得られたクレジットの消費量よりも少ない場合、第2処理部132は、一例として、利用可能なクレジットの全量をクレジットの消費量と見なして、消費クレジットを更新する。
続いて、第2処理部132は、クレジットが枯渇したか否かを判定する(S204)。第2処理部132がクレジットが枯渇したと判定した場合(S204、Yes)、第2処理部132は、第1処理部131に枯渇通知を送信する(S205)。枯渇通知は、例えばプロセッサ間通信を利用して送信される。S205の処理の後、制御がS201の処理に移行する。第2処理部132がクレジットが枯渇していないと判定した場合(S204、No)、S205の処理はスキップされる。
図12は、動作モードの切り替えの動作を説明するフローチャートである。
第1処理部131は、枯渇通知を受信すると(S301)、第2処理部132に、スヌーズモード移行通知を送信する(S302)。なお、スヌーズモード移行通知、後述の各種応答、および後述のスヌーズモード終了通知は、例えばプロセッサ間通信を利用して送信される。
第2処理部132は、スヌーズモード移行通知を受信すると、CPU13bの処理が落ち着くまで待ち、CPU13bの処理が落ち着いた後、第1処理部131に応答を送信する(S303)。
第1処理部131は、応答を受信すると、CPU13bへのクロック供給を遮断する(S304)。これにより、CPU13bは、第2処理部132としての機能を失い、NANDメモリ10へのアクセスが不可能となる。
第1処理部131は、S304の処理の実行後から所定の時間が経過したか否かを判定する(S305)。第1処理部131がS304の処理の実行後から所定の時間が経過していないと判定した場合(S305、No)、第1処理部131は、S305の処理を再び実行する。
第1処理部131がS304の処理の実行後から所定の時間が経過したと判定した場合(S305、Yes)、第1処理部131は、CPU13bへのクロック供給を再開する(S306)。そして、第1処理部131は、第2処理部132にスヌーズモード終了通知を送信する(S307)。
第2処理部132は、スヌーズモード終了通知を受信すると、復帰処理を実行し、復帰処理が完了した後、第1処理部131に応答を送信する(S308)。
第2処理部132は、応答を送信後、通常モードでの動作を開始する(S309)。また、第1処理部131は、応答を受信後、通常モードでの動作を開始する(S309)。そして、処理が終了する。
以上述べたように、第1の実施形態によれば、第1処理部131は、クレジットの割当量である供給クレジットを演算する。クレジットは、NANDメモリ10の動作時間に応じた量である。第2処理部132は、NANDメモリ10へのアクセスの際に、当該アクセスの際のNANDメモリ10の動作時間に応じた量である消費クレジットを演算する。第2処理部132は、クレジットの消費量がクレジットの割当量に至った場合、第1処理部131に枯渇通知を送信する。
第1処理部131は、枯渇通知をNANDメモリ10に対するアクセスを制限するか否かの判断に供することができる。その場合、供給クレジットを調整することは、NANDメモリ10へのアクセスを実行できる時間を調整することに相当する。よって、簡単に性能を調整することが可能となる。
また、NANDメモリ10の動作時間は、温度および消費電力に大きな影響を及ぼす。よって、クレジットの供給量を調整することによって、温度および消費電力の調整が可能となる。即ち、簡単に温度および消費電力を調整することが可能となる。
なお、第1処理部131は、複数回、それぞれ異なるタイミングで供給クレジットを設定する。それぞれの供給クレジットは、有効期限を有する。第2処理部132は、消費クレジットが有効期限が切れていない1以上の供給クレジットの合計量に至った場合に、枯渇通知を送信する。供給クレジットに有効期限を設定することによって、未消費の供給クレジットがいつまでもキープされることが防止される。その結果、供給クレジットの調整に対する性能の追従性が向上する。
また、メモリシステム1aは、温度センサ16を備える。そして、第1処理部131は、温度センサ16による温度検出値に応じてそれぞれの供給クレジットを演算する。よって、メモリシステム1aの温度が上がり過ぎないように性能を調整することが可能である。
なお、温度センサ16による温度検出値は、メモリシステム1aの使用状況を示す情報の一例である。第1処理部131は、温度センサ16による検出値に代えて、メモリシステム1aの使用状況を示す他の情報を使用してもよい。メモリシステム1aの使用状況を示す他の情報は、例えば、メモリシステム1aの消費電力である。
また、第1処理部131は、温度センサ16による温度検出値をフィードバック入力とするPID制御の演算に基づいて供給クレジットを演算する。よって、比例係数、微分係数、および積分係数をチューニングすることによって、温度センサ16による温度検出値がターゲット温度をオーバーシュートしないようにするなど、高性能な温度制御が可能となる。
なお、第1処理部131は、PID制御に代えて、PI制御など、他の任意のフィードバック制御に基づく演算を実行してもよい。さらに、第1処理部131は、フィードバック制御以外の演算アルゴリズムによって供給クレジットを演算してもよい。
さらに、第1処理部131は、メモリシステム1aの使用状況を示す情報以外の情報を用いてクレジットの供給量を演算してもよい。例えば、第1処理部131は、外部(例えばホスト2)から要求性能を受信して、メモリシステム1aの性能が受信した要求性能を超えないように供給クレジットを演算してもよい。
また、第1処理部131は、枯渇通知の受信に応じて、第2処理部132をNANDメモリ10へのアクセスを実行しないモードに遷移させる。よって、供給クレジットの枯渇に応じて性能が抑制される。
また、NANDメモリ10へのアクセスは、リード、ライト、およびイレースを含む複数の種類のアクセスを含み、第2処理部132は、アクセスの種類に応じて消費クレジットを演算する。NANDメモリ10の動作時間を実測することが不要であるので、簡単なアルゴリズムで消費クレジットを演算することが可能である。
また、CPU13bは、FIFOのルールで管理されるFIFO領域134を備える。第1処理部131は、各供給クレジットをFIFO領域に順次書き込む。第2処理部132は、最後に書き込まれた所定数の供給クレジットのそれぞれを、有効期限が切れていない供給クレジットとして見なす。よって、簡単なアルゴリズムで有効期限の管理が実現する。
なお、FIFO領域134が設けられる位置は、CPU13bの内部だけに限定されない。FIFO領域134は、CPU13a内に設けられてもよいし、マルチコアプロセッサ13の外(例えばRAM15)に設けられてもよい。
なお、FIFO領域134を構成する各単位領域20には、供給クレジットと消費クレジットとの対が記録される。FIFO領域134に記録された各対は、外部から参照可能であってもよい。その場合、各対を不具合解析に供することが可能となる。なお、各対は、時系列順に不揮発に保存されてもよい。
また、第1処理部131は、第2処理部132をスヌーズモードに遷移させてから所定時間が経過した後に、第2処理部132を通常モードに遷移させる。よって、簡単なアルゴリズムで性能の調整が実現する。
なお、スヌーズモードは、一例では、CPU13bへのクロック供給が遮断されるモードである。第1処理部131は、クロック供給の遮断以外の方法で、NANDメモリ10へのアクセスの実行を禁止してもよい。
(第2の実施形態)
図13は、第2の実施形態のメモリシステムの構成例を示す図である。メモリシステム1bは、ホスト2と所定の通信インタフェースで接続される。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。メモリシステム1bは、メモリシステム1bの外部の電源3に接続され、電源3から電力が供給される。メモリシステム1bは、電源3からの電力を利用して動作する。メモリシステム1bは、ホスト2からアクセス要求(リード要求およびライト要求)を受け付けることができる。各アクセス要求は、アクセス先を指定する論理アドレスを伴う。論理アドレスは、メモリシステム1bがホスト2に提供する論理アドレス空間内の位置を示す。メモリシステム1bは、ライト要求とともに、書き込み対象のデータを受け付ける。
メモリシステム1bは、NAND型のフラッシュメモリ(NANDメモリ)10と、ホスト2とNANDメモリ10との間のデータ転送を実行するメモリコントローラ11と、を備えている。なお、メモリシステム1bは、NANDメモリ10の代わりに任意の不揮発性メモリを具備することができる。例えば、メモリシステム1bは、NANDメモリ10の代わりにNOR型のフラッシュメモリを具備することができる。
NANDメモリ10は、1以上のメモリチップを含む。各ブロックは、複数のブロックを備える。ブロックは、例えばデータのイレースが実行され得る最小の記憶領域である。ブロックは、複数のページを備える。ページは、例えばデータのリードまたはデータのライトが実行され得る最小の記憶領域である。
メモリシステム1bは、さらに、電力供給回路17およびキャパシタ18を備える。
電力供給回路17は、電源3から供給される電力を、変換して、または、そのまま、NANDメモリ10およびメモリコントローラ11に供給する。メモリコントローラ11およびNANDメモリ10は、電力供給回路17から供給される電力を利用して動作する。
キャパシタ18は、充電可能な電池である。電源3から電力が供給されているとき、電力供給回路17によってキャパシタ18は充電される。電源断時には、電力供給回路17によって電力供給源が電源3からキャパシタ18に切り替えられ、キャパシタ18からNANDメモリ10およびメモリコントローラ11に電力供給回路17を経由して電力が供給される。
一例では、電力供給回路17は、電源3の電圧を監視する。電圧が所定のしきい値を下回った場合、電力供給回路17は、電源断が発生したと判断し、電源断信号をマルチコアプロセッサ13に送信する。そして、電力供給回路17は、電力供給源を電源3からキャパシタ18に切り替える。マルチコアプロセッサ13は、電源断信号の受信に応じて切り替え信号を電力供給回路17に送信し、電力供給回路17は、切り替え信号に応じて電力供給源を切り替えてもよい。
なお、メモリシステム1bは、キャパシタ18として、任意の電池が採用可能である。例えば、電解コンデンサ(electrolytic capacitor)または電気二重層コンデンサ(electrical double layer capacitor)が採用可能である。
メモリコントローラ11は、ホストインタフェースコントローラ(ホストI/Fコントローラ)12と、マルチコアプロセッサ13と、NANDコントローラ14と、RAM15とを備える。
マルチコアプロセッサ13は、ファームウェアプログラムに基づいてメモリコントローラ11の制御を実行する。ファームウェアプログラムは、例えばNANDメモリ10などの不揮発性メモリに予め格納されており、起動時にNANDメモリ10から読み出されてマルチコアプロセッサ13によって実行される。
マルチコアプロセッサ13は、電源3から電力が供給されている場合には、ホスト2とNANDメモリ10との間のデータ転送を実行することができる。RAM15は、バッファ151を備え、マルチコアプロセッサ13は、データ転送の際に、バッファ151を使用する。
バッファ151には、任意の情報が格納され得る。一例では、バッファ151には、転送データがバッファされる。別の例では、バッファ151には、論理アドレスとNANDメモリ10内の物理的な位置(物理アドレス)との対応を管理するための翻訳情報を含む。翻訳情報は、例えばNANDメモリ10に格納されている。マルチコアプロセッサ13は、翻訳情報をNANDメモリ10からバッファ151にキャッシュし、バッファ151上の翻訳情報を参照したり更新したりする。マルチコアプロセッサ13は、バッファ151上の翻訳情報のうちの少なくとも更新された部分を、所定のタイミングでNANDメモリ10に書き戻す。
RAM15は、揮発性のメモリである。よって、RAM15への電力供給が停止すると、バッファ151内の情報は失われる。バッファ151内の情報がメモリシステム1bから失われることを防止するために、マルチコアプロセッサ13は、電源3の電源断が発生した場合、キャパシタ18に蓄えられていた限られた電力を用いて、バッファ151内の情報をNANDメモリ10に退避する。次回の起動時に、NANDメモリ10に退避された情報は、例えば次回の起動時にバッファ151内に復元される。
マルチコアプロセッサ13は、バッファ151内の情報のうちの特定の情報のみを退避してもよいし、バッファ151内の全ての情報を退避してもよい。例えば、マルチコアプロセッサ13は、バッファ151内の翻訳情報のうちの、キャッシュされた後に更新された部分を退避してもよいし、バッファ151内の全ての翻訳情報を退避してもよい。また、マルチコアプロセッサ13は、バッファ151内の情報をそのまま退避してもよいし、バッファ151内の情報を例えばフォーマットの変換などの加工を行ってから退避してもよい。
第2の実施形態において、電源3から供給される電力を用いてデータ転送を実行する動作モードを、通常モードと表記する。また、キャパシタ18に蓄えられていた電力を用いてバッファ151内の情報をNANDメモリ10に退避するモードを、PLP(Power Loss Protection)モードと表記する。
ホストI/Fコントローラ12は、ホスト2との間の通信インタフェースの制御を実行する。ホストI/Fコントローラ12は、マルチコアプロセッサ13による制御の下で、ホスト2とRAM15との間のデータ転送を実行する。NANDコントローラ14は、マルチコアプロセッサ13による制御の下で、NANDメモリ10とRAM15との間のデータ転送を実行したりする。
マルチコアプロセッサ13は、複数のCPU13を備える。ここでは一例として、マルチコアプロセッサ13は、4つのCPU13(CPU13a、CPU13b、CPU13c、およびCPU13d)を備える。
メモリコントローラ11の制御は、複数の処理に分割されており、4つのCPU13によって分担される。メモリコントローラ11の制御を構成する複数の処理は、例えば、ホスト2からの要求を受け付ける処理、アクセス要求に含まれる論理アドレスとNANDメモリ10内の物理的な位置(物理アドレス)とを対応付ける処理、ホスト2から送られてきた書き込み対象のデータからNANDメモリ10に書き込むページ単位のデータを生成する処理、NANDメモリ10から読み出されたページ単位のデータからホスト2に送るデータを生成する処理、NANDメモリ10にアクセスする処理、全体の処理のシーケンスを制御する処理、などを含む。
4つのCPU13は、通常モードにおいては、それぞれに割り当てられた処理を実行することによって、ホスト2とNANDメモリ10との間のデータ転送を実行する。
また、4つのCPU13は、PLPモードにおいて、それぞれに割り当てられた処理を実行することによってバッファ151内の情報をNANDメモリ10に退避する1以上のCPU13を含む。バッファ151内の情報の退避を実現するCPU13を、第1プロセッサと表記する。
また、4つのCPU13は、マルチコアプロセッサ13の動作シーケンスを統括する1以上のCPU13を含む。マルチコアプロセッサ13の動作シーケンスを統括するCPU13を、第2プロセッサと表記する。
また、4つのCPU13は、通常モードでの動作の実現には必要とされるが、PLPモードでの動作の実現には不要とされる1以上のCPU13を備え得る。そのようなCPU13を、第3プロセッサと表記する。
なお、RAM15には、モード識別情報152が格納される。第2プロセッサは、モード識別情報152に、メモリシステム1bの動作モードがPLPモードであるか否かを示す情報を書き込む。各CPU13は、モード識別情報152を参照することによって、現在の動作モードがPLPモードであるか否かを認識することができる。モード識別情報152は、例えば1ビットのフラグ情報であってもよいし、動作モードの種類が記述されてもよい。モード識別情報152が格納されるメモリは、RAM15に限定されない。
図14は、第2の実施形態のメモリシステム1bの動作の一例を説明するためのシーケンス図である。本図の例では、CPU13bおよびCPU13dが第1プロセッサに該当し、CPU13aが第2プロセッサに該当し、CPU13cが第3プロセッサに該当する。
電源3の電源断が発生すると、電力供給回路17によって電源断が検知される。そして、電力供給回路17は、電源断信号をマルチコアプロセッサ13に送信する。各CPU13は、電源断信号を受信する(S401)。
第1プロセッサである、CPU13bおよびCPU13dは、電源断信号に応じて、それぞれが担当するハードウェアをリセットする(S402、S403)。
また、第3プロセッサであるCPU13cは、電源断信号に応じて、自身をストールする(S404)。以降は、PLPモードでの動作に必要なCPU13(CPU13a、CPU13b、およびCPU13d)だけが動作することになる。
なお、CPU13cは、他のプロセッサ(例えば第2プロセッサであるCPU13a)によってストールされてもよい。
CPU13bおよびCPU13dのそれぞれは、ハードウェアのリセットを完了後、ハードウェアリセット完了通知を第2プロセッサであるCPU13aに送信する(S405)。
CPU13aは、電源断信号に応じて、モード識別情報152にPLPモードを書き込む(S406)。
また、CPU13bおよびCPU13dのそれぞれは、ハードウェアリセット完了通知の送信後、自身をリセットする(S407、S408)。CPU13bおよびCPU13dのそれぞれは、リセットの後、ファームウェアに含まれる初期化プログラムを実行する(S409、S410)。
S409、S410において実行される初期化プログラムは、起動時に実行される初期化プログラムと同じプログラムである。即ち、S409、S410において実行される初期化プログラムは、起動時に実行される初期化プログラムと共通化されている。
従来、通常モードからPLPモードに動作モードが遷移する際には、CPUは、リセットされることなくPLPモードのプログラムを実行するかもしれない。しかしながら、PLPモードのプログラムを実行する前には、初期化を行う必要がある。そのため、ファームウェアプログラムは、起動時の初期化プログラムと同様の動作を実現するプログラムを、PLPモードのために別途含んでいる必要があった。
第2の実施形態では、PLPモードに遷移する際に、CPU13bおよびCPU13dのそれぞれは、リセットされ、その後、初期化プログラムを実行する。リセット後に初期化プログラムを実行する手順は、起動時の手順と同一である。よって、起動時に実行される初期化プログラムとPLPモードへの遷移時に実行される初期化プログラムとが共通化され得る。起動時に実行される初期化プログラムとPLPモードへの遷移時に実行される初期化プログラムとが共通化されることによって、ファームウェアプログラムの規模がコンパクトになる。また、リセットされることによって、初期化プログラムに速やかに制御を移行することができるので、PLPモードの動作を実行を開始するまでの時間が短縮される。
なお、ここでは、CPU13bおよびCPU13dのそれぞれは、自身をリセットする。CPU13bおよびCPU13dのそれぞれは、第2プロセッサ(CPU13a)によってリセットされてもよい。
CPU13bおよびCPU13dのそれぞれは、初期化プログラムの実行後、CPUリセット完了通知をCPU13aに送信する(S411)。そして、CPU13bおよびCPU13dのそれぞれは、モード識別情報152を参照する(S412、S413)。
CPU13bおよびCPU13dのそれぞれは、モード識別情報152を参照することによって、現在の動作モードが通常モードではなくPLPモードであることを認識する。CPU13bおよびCPU13dのそれぞれは、PLPモードであることを認識した後、PLPモード用のプログラムの実行を開始する。
なお、仮にモード識別情報152にPLPモードが書き込まれていない場合、またはモード識別情報152に通常モードが書き込まれている場合、各CPU13は、ファームウェアプログラムに含まれるプログラムのうちの、通常モードでの動作を実現するプログラムの実行を開始し得る。
以降の動作は、PLPモードでの動作の一例である。PLPモードでの動作は以下に説明される動作だけに限定されない。
PLPモードでは、CPU13aは、バッファ151内の情報をNANDメモリ10に退避するための退避要求をCPU13bに送信する(S414)。CPU13bは、退避要求を受信すると、バッファ151内の退避対象の情報を特定する。そして、CPU13bは、退避対象の情報をNANDメモリ10に書き込むためのライトコマンドを生成し、CPU13dに送信する(S415)。
一例では、一つのライトコマンドは、1ページのサイズのデータを伴う。CPU13bは、退避対象の情報から1以上のページのサイズのデータを生成する。そして、CPU13bは、生成されたデータ毎にライトコマンドを生成し、生成した各ライトコマンドをCPU13dに送信する。
CPU13dは、受信したライトコマンドを、NANDコントローラ14を介してNANDメモリ10に送信する(S416)。CPU13dは、ライトコマンドの実行の進捗を管理する。CPU13dは、ライトコマンドの実行が完了すると、ライトコマンド完了通知をCPU13bに送信する(S417)。CPU13bは、ライトコマンド完了通知を受信すると、退避完了通知をCPU13aに送信する(S418)。CPU13aは、退避完了通知を受信すると、例えばメモリシステム1bをパワーオフする。
以上述べたように、第2の実施形態によれば、マルチコアプロセッサ13は、第1プロセッサ(CPU13b、CPU13d)を備える。第1プロセッサは、電源3の電源断が発生した場合に、リセットされ、その後、初期化プログラムを実行する。そして、第1プロセッサは、初期化プログラムの実行が完了した後、バッファ151内の情報をNANDメモリ10に退避させる。この構成により、第1プロセッサは、リセットされることによって、初期化プログラムに速やかに制御を移行することができるので、PLPモードの動作を開始するまでの時間が短縮される。
また、起動時に実行される初期化プログラムとPLPモードへの遷移時に実行される初期化プログラムとが共通化されていてもよい。この構成により、ファームウェアプログラムの規模がコンパクトになる。
また、マルチコアプロセッサ13は、電源3の電源断が発生した場合に、RAM15内のモード識別情報152に現在の動作モードがPLPモードである旨を書き込む第2プロセッサ(CPU13a)を備える。第1プロセッサは、初期化プログラムの実行後、モード識別情報152を参照することによって、現在の動作モードを確認する。そして、現在の動作モードがPLPモードであることが確認された場合、第1プロセッサは、PLPモードでの動作を開始する。第1プロセッサは、初期化プログラムの実行後に動作モードに応じた処理を開始するので、起動時に実行される初期化プログラムとPLPモードへの遷移時に実行される初期化プログラムとが可能である。
また、マルチコアプロセッサ13は、バッファ151内の情報の退避に関与しない第3プロセッサ(CPU13c)をさらに備える。第3プロセッサは、電源3の電源断が発生した場合に、ストールされる。これにより、PLPモードにおいては不要なプロセッサが動作を行わないので、PLPモード時における消費電力が抑制される。よって、キャパシタ18の容量を節約することが可能である。または、PLPモード時において不要なCPU13が停止されるので、キャパシタ18に蓄えられた限られた電力によって、PLPモードの動作に必要なCPU13をより長く動作させることが可能である。その結果、退避可能な情報の量を増やすことが可能となる。
なお、電源3の電源断が発生した場合に、第3プロセッサへのクロック供給が停止されてもよい。また、電源3の電源断が発生した場合に、第3プロセッサへの電力供給が停止されてもよい。第3プロセッサは、電源3の電源断が発生した場合に、ストール、クロック供給の停止、電力供給の停止などにより、動作を停止する。よって、キャパシタ18の容量を節約することが可能である。第3プロセッサは、動作を停止すると、バスに対して信号を出力しなくなる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1a、1b メモリシステム、2 ホスト、3 電源、10 NANDメモリ、11 メモリコントローラ、12 ホストI/Fコントローラ、13 マルチコアプロセッサ、13a,13b,13c,13d CPU、14 NANDコントローラ、15 RAM、16 温度センサ、17 電力供給回路、18 キャパシタ、20 単位領域、20,20a,20b,20c,20d,20e,20f 各単位領域、131 第1処理部、132 第2処理部、134 FIFO領域、135 ヘッドポインタ、136 テイルポインタ、151 バッファ、152 モード識別情報。

Claims (9)

  1. 不揮発性の第1メモリと、
    第1割当量を設定する第1プロセッサと、
    前記第1メモリへのアクセスを実行し、前記アクセスの際の前記第1メモリの動作時間に応じた量である消費量を演算し、前記消費量が前記第1割当量に至った場合、前記第1プロセッサに通知を送信する、第2プロセッサと、
    を備え
    前記第1プロセッサは、有効期限付きの複数の第2割当量のそれぞれを、それぞれ異なるタイミングで設定し、
    前記第1割当量は、1以上の第3割当量の合計量であり、
    前記第3割当量は、前記設定された複数の第2割当量のうちの有効期限が切れていない第2割当量である、
    モリシステム。
  2. 前記第1プロセッサは、前記メモリシステムの使用状況に応じてそれぞれの第2割当量を演算する、
    ことを特徴とする請求項1に記載のメモリシステム。
  3. 前記第2プロセッサは、第1モードで前記第1メモリへのアクセスを実行し、
    前記第1プロセッサは、前記通知を受信した場合、前記第1メモリへのアクセスが実行できない第2モードに前記第2プロセッサを遷移させる、
    ことを特徴とする請求項2に記載のメモリシステム。
  4. 温度センサをさらに備え、
    前記使用状況は、前記温度センサの検出値である、
    ことを特徴とする請求項2に記載のメモリシステム。
  5. 前記第1プロセッサは、前記検出値をそれぞれの第2割当量の演算にフィードバックする、
    ことを特徴とする請求項4に記載のメモリシステム。
  6. 前記第1プロセッサは、PID制御に基づく演算によってそれぞれの第2割当量を演算する、
    ことを特徴とする請求項5に記載のメモリシステム。
  7. FIFOルールで管理される第2メモリをさらに備え、
    前記第1プロセッサは、前記複数の第2割当量を前記第2メモリに順次設定し、
    前記第2プロセッサは、前記第2メモリに設定された複数の第2割当量のうちの最後に設定された所定数の第2割当量を、有効期限が切れていない第2割当量と見なす、
    ことを特徴とする請求項1に記載のメモリシステム。
  8. 前記第1プロセッサは、前記第2プロセッサを前記第2モードに遷移させてから所定時間が経過した場合、前記第2プロセッサを前記第1モードに遷移させる、
    ことを特徴とする請求項3に記載のメモリシステム。
  9. 前記第2モードは、前記第2プロセッサへのクロック供給が遮断されるモードである、
    ことを特徴とする請求項3に記載のメモリシステム。
JP2017052154A 2017-03-17 2017-03-17 メモリシステム Active JP6640776B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017052154A JP6640776B2 (ja) 2017-03-17 2017-03-17 メモリシステム
US15/695,773 US10802752B2 (en) 2017-03-17 2017-09-05 Memory system for controlling memory access based on access time of memory
US17/022,652 US11693592B2 (en) 2017-03-17 2020-09-16 Memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017052154A JP6640776B2 (ja) 2017-03-17 2017-03-17 メモリシステム

Publications (2)

Publication Number Publication Date
JP2018156350A JP2018156350A (ja) 2018-10-04
JP6640776B2 true JP6640776B2 (ja) 2020-02-05

Family

ID=63519241

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017052154A Active JP6640776B2 (ja) 2017-03-17 2017-03-17 メモリシステム

Country Status (2)

Country Link
US (2) US10802752B2 (ja)
JP (1) JP6640776B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11545195B2 (en) 2020-09-16 2023-01-03 Kioxia Corporation Memory system

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102293069B1 (ko) * 2017-09-08 2021-08-27 삼성전자주식회사 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치, 제어기, 그리고 스토리지 장치의 동작 방법
US11435909B2 (en) * 2019-04-22 2022-09-06 Intel Corporation Device, system and method to generate link training signals
JP2023136083A (ja) * 2022-03-16 2023-09-29 キオクシア株式会社 メモリシステムおよび制御方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4430698A (en) * 1981-08-20 1984-02-07 Harrel, Incorporated Three-mode process control
US6987578B2 (en) * 2001-03-21 2006-01-17 Hewlett-Packard Development Company, L.P. Printer priority bidding scheme
US8200887B2 (en) * 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US7444526B2 (en) * 2005-06-16 2008-10-28 International Business Machines Corporation Performance conserving method for reducing power consumption in a server system
US8645723B2 (en) * 2011-05-11 2014-02-04 Apple Inc. Asynchronous management of access requests to control power consumption
JP6243424B2 (ja) * 2013-07-10 2017-12-06 任天堂株式会社 情報処理システム、情報処理装置、情報処理プログラム、および、動作モードの制御方法
KR102114109B1 (ko) * 2013-10-17 2020-05-22 에스케이하이닉스 주식회사 데이터 저장 장치
JP2015089231A (ja) * 2013-10-30 2015-05-07 富士通株式会社 電力量管理装置、方法、及びプログラム
US9479610B2 (en) * 2014-04-14 2016-10-25 Microsoft Technology Licensing, Llc Battery efficient synchronization of communications using a token bucket
US20160372160A1 (en) 2015-06-16 2016-12-22 Sandisk Technologies Inc. Memory System and method for power management
US10275001B2 (en) 2015-06-26 2019-04-30 Intel Corporation Thermal throttling of electronic devices
US9760311B1 (en) * 2016-06-23 2017-09-12 Sandisk Technologies Llc Storage system and method for adaptive thermal throttling

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11545195B2 (en) 2020-09-16 2023-01-03 Kioxia Corporation Memory system

Also Published As

Publication number Publication date
US20180267744A1 (en) 2018-09-20
US11693592B2 (en) 2023-07-04
US10802752B2 (en) 2020-10-13
US20200409610A1 (en) 2020-12-31
JP2018156350A (ja) 2018-10-04

Similar Documents

Publication Publication Date Title
US10891061B2 (en) Electronic device, computer system, and control method
TWI682278B (zh) 記憶體系統及控制方法
JP6640776B2 (ja) メモリシステム
JP5989574B2 (ja) 計算機、メモリ管理方法およびプログラム
US11073896B2 (en) Storage device and a power control method for storage device
US20070204270A1 (en) Apparatus and method for processing operations of nonvolatile memory in order of priority
JP2018049522A (ja) メモリシステム及び制御方法
KR20170035320A (ko) 솔리드 스테이트 드라이브들의 전력 소비를 컨트롤하기 위해 동적으로 불휘발성 메모리 오퍼레이션을 스케쥴링하는 메모리 장치 및 그것의 동작 방법
JP2013250791A (ja) プログラム、計算処理装置、メモリ管理方法および計算機
KR20130112210A (ko) 메모리 시스템 및 그것의 페이지 교체 방법
TW201918885A (zh) 記憶體系統及非揮發性記憶體之控制方法
JP6167646B2 (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
JP2011095916A (ja) 電子機器
KR20170129709A (ko) 고체 상태 드라이브에서 가비지 수집 리소스 할당을 적응시키는 메커니즘
JP2017142776A (ja) 寿命管理装置および寿命管理方法
US20220300172A1 (en) Memory system, information processing system, and host device
JP6054203B2 (ja) 情報処理装置、デバイス制御方法及びプログラム
US10216644B2 (en) Memory system and method
JP2017228010A (ja) ストレージ制御手段、ストレージ制御手段を有する情報処理装置、ストレージ制御方法及びそのプログラム
JP6150669B2 (ja) 情報処理装置、画像形成装置、及びその制御方法
CN110908595B (zh) 存储装置及信息处理系统
JP2016045563A (ja) Nandバックグラウンド処理制御装置
US11500584B2 (en) Memory system and control method
US20170249102A1 (en) Information processing apparatus
WO2018167890A1 (ja) 計算機システム及び管理方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170605

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180905

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191113

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191226

R150 Certificate of patent or registration of utility model

Ref document number: 6640776

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150