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

メモリシステム Download PDF

Info

Publication number
JP2021043907A
JP2021043907A JP2019167658A JP2019167658A JP2021043907A JP 2021043907 A JP2021043907 A JP 2021043907A JP 2019167658 A JP2019167658 A JP 2019167658A JP 2019167658 A JP2019167658 A JP 2019167658A JP 2021043907 A JP2021043907 A JP 2021043907A
Authority
JP
Japan
Prior art keywords
temperature
parameter set
phy parameter
phy
parameter
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.)
Granted
Application number
JP2019167658A
Other languages
English (en)
Other versions
JP7332406B2 (ja
Inventor
戈 王
Ge Wang
戈 王
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 JP2019167658A priority Critical patent/JP7332406B2/ja
Priority to US16/807,845 priority patent/US11016663B2/en
Publication of JP2021043907A publication Critical patent/JP2021043907A/ja
Application granted granted Critical
Publication of JP7332406B2 publication Critical patent/JP7332406B2/ja
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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/10Programming or data input circuits
    • 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/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or 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/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
    • 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/26Sensing or reading circuits; Data output circuits
    • 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
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • 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
    • 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/7207Details relating to flash memory management management of metadata or control data
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)

Abstract

【課題】 温度が変化した場合にも不揮発性メモリへの高速アクセスを継続できるメモリシステムを実現する。【解決手段】 実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、温度センサとを具備する。コントローラは、不揮発性メモリへのアクセスを制御するインタフェース回路を含む。温度センサは、メモリシステム内の温度を計測する。コントローラは、温度センサから第1温度を取得し、複数の温度にそれぞれ対応する複数のパラメータセットを含むパラメータ情報から第1温度に対応する第1パラメータセットを取得し、インタフェース回路に第1パラメータセットを設定するように構成される。【選択図】図1

Description

本発明の実施形態は、不揮発性メモリを備えるメモリシステムに関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの1つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
NAND型フラッシュメモリの動作の高速化に伴い、メモリコントローラ内の、NAND型フラッシュメモリへのアクセスを制御するNANDインタフェースの高速化も必要とされている。NANDインタフェースを高速化するための1つの方法として、NANDインタフェースのためのキャリブレーションやトレーニングを行う方法がある。
米国特許第8693246号明細書 米国特許出願公開第2019/0080730号明細書 米国特許出願公開第2017/0083259号明細書
このようなキャリブレーションやトレーニングは、SSDの使用環境が変化したことに応じて行われ得る。例えばSSDの温度が変化した場合に、キャリブレーションやトレーニングが行われる。
しかし、SSDでキャリブレーションやトレーニングが行われた場合、NAND型フラッシュメモリへの高速なアクセスを継続して行えない可能性がある。
実施形態の一つは、温度が変化した場合にも不揮発性メモリへの高速アクセスを継続できるメモリシステムを提供する。
実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、温度センサとを具備する。コントローラは、不揮発性メモリへのアクセスを制御するインタフェース回路を含む。温度センサは、メモリシステム内の温度を計測する。コントローラは、温度センサから第1温度を取得し、複数の温度にそれぞれ対応する複数のパラメータセットを含むパラメータ情報から第1温度に対応する第1パラメータセットを取得し、インタフェース回路に第1パラメータセットを設定するように構成される。
第1実施形態に係るメモリシステムの構成例を示すブロック図。 同実施形態のメモリシステムのキャリブレーションに関する構成例を示すブロック図。 同実施形態のメモリシステムのキャリブレーションに関する別の構成例を示すブロック図。 同実施形態のメモリシステムのリードトレーニングに関する構成の例を示すブロック図。 同実施形態のメモリシステムにおけるBit Skewのリードトレーニングの例を示す図。 同実施形態のメモリシステムにおけるCenteringのリードトレーニングの例を示す図。 同実施形態のメモリシステムのライトトレーニングに関する構成の例を示すブロック図。 同実施形態のメモリシステムにおけるBit Skewのライトトレーニングの例を示す図。 同実施形態のメモリシステムにおけるCenteringのライトトレーニングの例を示す図。 同実施形態のメモリシステムにおいて用いられるPHYパラメータテーブルの一構成例を示す図。 同実施形態のメモリシステムにおいて実行されるPHYパラメータ設定処理の手順の例を示すフローチャート。 第2実施形態に係るメモリシステムにおいて用いられるPHYパラメータテーブルの一構成例を示す図。 図12のPHYパラメータテーブルが更新される例を示す図。 同実施形態のメモリシステムにおいて実行されるPHYパラメータ更新処理の手順の例を示すフローチャート。 第3実施形態に係るメモリシステムにおいて用いられるPHYパラメータテーブルの一構成例を示す図。 図15のPHYパラメータテーブルが更新される例を示す図。 図16のPHYパラメータテーブルが更新される例を示す図。 同実施形態のメモリシステムにおいて実行されるPHYパラメータ制御処理の手順の例を示すフローチャート。 同実施形態のメモリシステムにおいて実行されるPHYパラメータ推測処理の手順の例を示すフローチャート。 同実施形態のメモリシステムにおいて実行されるPHYパラメータ更新処理の手順の例を示すフローチャート。
以下、実施の形態について図面を参照して説明する。
(第1実施形態)
まず図1を参照して、第1実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。このメモリシステムは、NAND型フラッシュメモリチップ5のような不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスであり、ストレージデバイスとも称される。このメモリシステムは、例えば、複数のNAND型フラッシュメモリチップ5を備えるソリッドステートドライブ(SSD)3として実現されている。以下では、メモリシステム(すなわちストレージデバイス)がSSD3として実現される場合について例示する。また、複数のNAND型フラッシュメモリチップ5を総称して、NAND型フラッシュメモリ5と称することがある。
情報処理システム1は、ホストデバイス2(以下、ホスト2とも称する)と、SSD3とを含む。ホスト2は、大量且つ多様なデータをSSD3に保存するストレージサーバであってもよいし、パーソナルコンピュータであってもよい。
SSD3は、ホスト2として機能する情報処理装置のストレージとして使用され得る。SSD3は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを接続するためのインタフェースは、SCSI、Serial Attached SCSI(SAS)、ATA(AT Attachment)、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)等に準拠する。
SSD3は、コントローラ4およびNAND型フラッシュメモリ5を備える。コントローラ4は、System−on−a−chip(SoC)のような回路によって実現され得る。
また、SSD3は、揮発性メモリであるランダムアクセスメモリ(RAM)、例えばダイナミックランダムアクセスメモリ(DRAM)6を備えていてもよい。あるいは、スタティックランダムアクセスメモリ(SRAM)のようなRAMがコントローラ4に内蔵されていてもよい。なお、DRAM6が、コントローラ4に内蔵されていてもよい。
DRAM6等のRAMには、NAND型フラッシュメモリ5からロードされるファームウェア(FW)21の格納領域とPHYパラメータテーブル22のキャッシュ領域が設けられる。PHYパラメータテーブル22で管理される情報は、コントローラ4とNAND型フラッシュメモリ5との間の信号伝送をSSD3の温度に応じて制御するために用いられるPHYパラメータを含む制御情報である。例えば、PHYパラメータテーブル22からSSD3の現在の温度に対応するPHYパラメータが取得され、そのPHYパラメータを用いて信号が伝送されるタイミングが調整される。なお、1つのチャネル(Ch)に複数のNAND型フラッシュメモリチップ5が接続される場合には、これら複数のNAND型フラッシュメモリチップ5にそれぞれ対応する複数のPHYパラメータテーブル22が用いられる。チャネルは、データ信号(DQ)、データストローブ信号(DQS)、およびリードイネーブル信号(RE)を少なくとも含む。PHYパラメータテーブル22の詳細については、図10を参照して後述する。
また、DRAM6等のRAMには、NAND型フラッシュメモリ5に書き込まれるデータや、NAND型フラッシュメモリ5から読み出されたデータを一時的に格納するためのバッファ領域が設けられる。DRAM6等のRAMには、論理物理アドレス変換テーブルとして機能するルックアップテーブル(LUT)23のキャッシュ領域が設けられてもよい。LUT23は、論理アドレス(例えば論理ブロックアドレス(LBA))それぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間のマッピングを管理する。
NAND型フラッシュメモリ5は複数のブロックB0〜Bm−1を含む。ブロックB0〜Bm−1の各々は複数のページ(ここでは、ページP0〜Pn−1)を含む。ブロックB0〜Bm−1はデータ消去動作の最小単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。ページP0〜Pn−1の各々は、同一ワード線に接続された複数のメモリセルを含む。ページP0〜Pn−1は、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
各ブロックB0〜Bm−1に対するプログラム/イレーズサイクル数(P/Eサイクル数)には上限があり、最大P/Eサイクル数と称される。あるブロックの1回のP/Eサイクルは、このブロック内のすべてのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作とを含む。
NAND型フラッシュメモリ5には、SSD3の出荷前に、FW21とPHYパラメータテーブル22とが格納されている。
コントローラ4は、Toggle DDR、Open NAND Flash Interface(ONFI)等のインタフェース規格に対応するNANDインタフェース(NAND I/F)13を介して、NAND型フラッシュメモリ5に電気的に接続されている。NAND I/F13は、NAND型フラッシュメモリ5を制御するように構成されたNAND制御回路として機能する。
NAND I/F13は、複数のチャネル(Ch)を介して、複数のNAND型フラッシュメモリチップ5にそれぞれ接続されていてもよい。複数のNAND型フラッシュメモリチップ5が並列に駆動されることにより、NAND型フラッシュメモリ全体に対するアクセスを広帯域化することができる。
NAND I/F13は、物理層の機能を実現するNAND PHY131を含む。NAND PHY131は、1つ以上のコンポーネントを含む。各コンポーネントは、アナログ回路、アナログ素子等である。
NAND PHY131は、コントローラ4とNAND型フラッシュメモリ5との間の様々な信号の伝送を物理的に制御するインタフェース回路である。NAND PHY131は、例えば各信号が伝送されるタイミングを調整できる。より具体的には、NAND PHY131に含まれる1つ以上のコンポーネントに設定されるPHYパラメータを変更することにより、各信号が伝送されるタイミングを調整できる。例えば、NAND PHY131に含まれる遅延素子に設定される遅延量を変更することにより、ある信号が伝送されるタイミングを遅延させることができる。
コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして機能する。
コントローラ4は、ホストインタフェース(ホストI/F)11、CPU12、NAND I/F13、DRAMインタフェース(DRAM I/F)14、温度センサ15等を含んでもよい。これらホストI/F11、CPU12、NAND I/F13、DRAM I/F14、および温度センサ15は、バス10を介して接続されていてもよい。
ホストI/F11は、ホスト2から様々なコマンド、例えば、I/Oコマンド、各種制御コマンドを受信する回路として機能する。I/Oコマンドには、ライトコマンド、リードコマンド、が含まれ得る。制御コマンドには、アンマップコマンド(トリムコマンド)、フォーマットコマンドが含まれ得る。フォーマットコマンドは、SSD3全体をアンマップするためのコマンドである。
DRAMインタフェース14は、DRAM6のアクセスを制御するように構成されたDRAM制御回路として機能する。DRAM6の記憶領域は、FW21、PHYパラメータテーブル22、LUT23等を格納するための領域や、リード/ライトバッファとして利用されるバッファ領域に割り当てられる。
温度センサ15はSSD3の温度を計測する。温度センサ15は、例えば定期的にSSD3の温度を計測する。図1には温度センサ15がコントローラ4内に設けられる例を示しているが、温度センサ15はSSD3の内部に設けられるか、あるいはSSD3の表面に取り付けられていればよい。例えば、温度センサ15はNAND型フラッシュメモリ5内に設けられていてもよい。温度センサ15は計測した温度を、バス10を介してコントローラ4内の各部に送出し得る。
CPU12は、ホストI/F11、NAND I/F13、およびDRAM I/F14を制御するように構成されたプロセッサである。CPU12はNAND型フラッシュメモリ5からDRAM6にロードされたFW21を実行することによって、様々な処理を行う。FW21は、CPU12に様々な処理を実行させるための命令群を含む制御プログラムである。CPU12は、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、CPU12によって実行される上述のFW21によって制御される。なお、コマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行されてもよい。
コントローラ4はさらに、NAND PHY131に設定されるPHYパラメータセットを制御するための機能も有している。PHYパラメータセットは、NAND PHY131に含まれる1つ以上のコンポーネントにそれぞれ設定されるべき1つ以上のPHYパラメータを含んでいる。つまり、NAND PHY131にPHYパラメータセットを設定するとは、NAND PHY131に含まれる1つ以上のコンポーネントに1つ以上のPHYパラメータをそれぞれ設定することを意味する。
ところで、NAND型フラッシュメモリ5の動作の高速化に伴い、NAND型フラッシュメモリ5へのアクセスを制御するNAND I/F13の高速化が必要とされている。NAND I/F13を高速化する方法の1つとして、NAND I/F13の物理層の機能を実現するNAND PHY131に、SSD3の温度に適したPHYパラメータセットを設定する方法がある。
NAND PHY131には、例えばSSD3の温度に応じて、NAND PHY131を介して信号が伝送されるタイミングを調整するための適切なPHYパラメータセットが設定される。これにより、NAND PHY131を介して伝送される複数の信号間のタイミングを温度に応じて精密に調整でき、信号の品質を向上させることができる。
このようなPHYパラメータセットは、NAND PHY131のためのキャリブレーションやトレーニングにより取得される。しかし、NAND I/F13をより高速に動作させるために、キャリブレーションやトレーニングが行われる頻度や設定されるべきPHYパラメータの数が増大した場合、PHYパラメータセットの取得のために要する時間や消費電力量が増大する。そのため、SSD3の温度が変化した場合に、PHYパラメータセットを取得するためのキャリブレーションやトレーニングによって、NAND型フラッシュメモリ5への高速なアクセスを継続して行えない可能性がある。
そのため本実施形態では、SSD3の出荷前にNAND型フラッシュメモリ5に格納された複数の温度に対応する複数のPHYパラメータセットを用い、SSD3の温度変化に応じて、NAND PHY131に設定されるPHYパラメータセットを更新する。これにより、SSD3の温度が変化した際にキャリブレーションやトレーニングを行うことなく、NAND PHY131に設定されるPHYパラメータセットを更新できるので、NAND型フラッシュメモリ5への高速なアクセスを継続して行うことができる。さらに、キャリブレーションやトレーニングを行わないことにより、SSD3の消費電力量を低減できる。
なお、SSD3の温度が変化した場合には、SSD3の動作中にその温度が変化した場合だけでなく、SSD3が起動または再起動された場合のような、新たにSSD3の温度が取得された場合も含まれ得る。起動に要する時間はSSD3全体の性能の指標として評価されるので、短縮されることが望ましい。本実施形態では、SSD3が起動または再起動された場合にも、SSD3の出荷前にNAND型フラッシュメモリ5に格納された複数の温度に対応する複数のPHYパラメータセットを用いて、SSD3の温度に応じたPHYパラメータセットをNAND PHY131に設定することにより、NAND型フラッシュメモリ5への高速なアクセスを迅速に開始できる。
NAND型フラッシュメモリ5には、SSD3の出荷前にPHYパラメータテーブル22が格納されている。PHYパラメータテーブル22は、例えば複数の温度に対応する複数のPHYパラメータセットを含む。この複数の温度は、SSD3が動作可能な温度範囲内の特定の温度間隔毎の複数の温度である。温度範囲は、0℃から80℃、−40℃から100℃等、使用が想定される環境に応じて設計されたSSD3が動作可能な温度範囲である。なお、SSD3が動作可能な温度範囲は、余剰の温度範囲をさらに含めて設定されてもよい。例えば、SSD3が動作可能な温度範囲が0℃から80℃である場合、5℃の余剰の温度範囲を含めて−5℃から85℃の温度範囲が設定される。NAND型フラッシュメモリ5には、余剰の温度範囲を含むSSD3が動作可能な温度範囲に対応するPHYパラメータテーブル22が格納され得る。また、特定の温度間隔は、例えば1℃間隔であるが、2℃間隔や0.5℃間隔のような、いずれの温度間隔であってもよい。
PHYパラメータテーブル22をNAND型フラッシュメモリ5に格納するために、出荷前のSSD3では、NAND PHY131のためのキャリブレーションとトレーニングの少なくとも一方(以下、キャリブレーション/トレーニングとも称する)が行われる。NAND PHY131のためのキャリブレーションおよびトレーニングには、例えば、Delay Calibration、REのIO Duty Calibration、DQSのIO Duty Calibration、CenteringのRead Training、Bit SkewのRead Training、CenteringのWrite Training、およびBit SkewのWrite Trainingが含まれる。
図2から図6を参照して、これらキャリブレーションおよびトレーニングのいくつかの例を説明する。
図2は、Delay Calibrationに関連するNAND PHY131内の構成例を示す。NAND型フラッシュメモリ5へのデータ書き込みが行われる場合、あるいはNAND型フラッシュメモリ5からのデータ読み出しが行われる場合、DQとDQSとは位相を1/4周期ずらす必要がある。この位相ずれを生じさせるために、一般に、NAND PHY131内のキャリブレーション回路311とアナログ遅延素子312とが用いられる。
キャリブレーション回路311は、上記の位相ずれを生じさせるための遅延量を算出する演算部である。キャリブレーション回路311は、算出する遅延量の精度を維持するために、例えば常時動作する。
アナログ遅延素子312には、NAND型フラッシュメモリ5へのデータ書き込み、またはNAND型フラッシュメモリ5からのデータ読み出しが行われる前に、キャリブレーション回路311によって算出された最新の遅延量が設定される。これにより、DQとDQSとの間に適切な位相ずれを生じさせることができる。
SSD3の出荷前に、SSD3が動作可能な温度範囲内の各温度において、上述したDelay Calibrationが行われる。これにより、DQとDQSの位相ずれのための各温度に応じた遅延量がPHYパラメータセットとして含まれるPHYパラメータテーブル22を作成できる。
図3は、REのIO Duty Calibration、およびDQSのIO Duty Calibrationに関連するNAND PHY131内の構成例を示す。NAND型フラッシュメモリ5へのデータ書き込みが行われる場合、DQSのDutyサイクルを、50%に近付けることが理想である。また、NAND型フラッシュメモリ5からのデータ読み出しが行われる場合、REおよびDQSのDutyサイクルを、50%に近付けることが理想である。例えば高速データ転送が行われる前に、REおよびDQSのDutyサイクルを、50%に近付けるために、NAND PHY131内のサンプリングクロック生成器321、キャリブレーションシーケンサ322、位相検出器(Phase Detector:PHD)323、Dutyサイクル調整モジュール(Duty Cycle Adjustment module:DCA)324、およびNAND入出力部(NAND I/O)325が用いられる。
サンプリングクロック生成器321はサンプリングクロック信号を生成する。PHD323は、入力される信号間の位相差を検出する。
キャリブレーションシーケンサ322は、REおよびDQSのDutyサイクルを、50%に近付けるためのDuty設定値を算出する演算部である。キャリブレーションシーケンサ322は、あるDuty設定値をDCA324に設定してNAND I/O325から得られた信号と、サンプリングクロック信号との位相差を用いて、適切なDuty設定値を算出する。
SSD3の出荷前に、SSD3が動作可能な温度範囲内の各温度において、上述したREのIO Duty Calibration、およびDQSのIO Duty Calibrationが行われる。これにより、REおよびDQSのDuty設定値がPHYパラメータセットとして含まれるPHYパラメータテーブル22を作成できる。
図4は、リードトレーニングに関連するNAND PHY131内の構成例を示す。リードトレーニングでは、例えば、入出力部(I/O for DQS)330および入出力部(I/O for DQ)331を介したDQSと8ビットのDQ[0]〜DQ[7]のトレーニングが行われ、そのトレーニング結果に基づいて、DQSおよび8ビットのDQ[0]〜DQ[7]にそれぞれ対応する遅延素子332に設定される遅延量が調整される。これにより、DQSおよびDQ[0]〜DQ[7]の伝送タイミングを調整できる。
図5は、Bit Skewのリードトレーニングによって8ビットのDQ[0]〜DQ[7]の伝送タイミングが調整される例を示す。以下では、DQSの値が変化する位置をDQSのエッジと称する。また、図5ではDQ[0]に含まれる、データを取得可能なデータ区間45とデータを取得できない遷移区間46との一例を示している。DQ[0]は、複数のデータ区間45と複数の遷移区間46とを含んでいる。同様に、DQ[1]〜DQ[7]の各々は、複数のデータ区間45と複数の遷移区間46とを含んでいる。DQ[0]〜DQ[7]に含まれる各データ区間45の端部をDQのエッジと称する。
図5に示すように、DQSのエッジに基づく各区間411,412において、Bit Skewのトレーニングが行われる前のDQ[0]〜DQ[7]のエッジは揃っていない。そのため、DQ[0]〜DQ[7]のデータ区間45が重なっている部分に相当するValid Data Window421,422が狭い。
一方、Bit Skewのリードトレーニングが行われた後のDQ[0]〜DQ[7]は、DQSのエッジに基づく各区間431,432において、NAND型フラッシュメモリ5との通信に応じて各ビットに対応する遅延素子332に適切な遅延量が設定されたことにより、各DQのエッジが揃っている。これにより、DQSの各区間431,432において、広いValid Data Window441,442が得られている。
図6は、CenteringのリードトレーニングによってDQSの伝送タイミングが調整される例を示す。図6に示す例では、Bit Skewのリードトレーニングが行われた後のDQ[0]〜DQ[7](すなわちエッジが揃えられたDQ[0]〜DQ[7])に対してCenteringのリードトレーニングが行われることを想定している。このため、図6は、DQ[0]〜DQ[7]のうちの任意の1つをDQとして図示している。
DQに含まれるデータは、DQの遷移区間46から離れた位置でサンプリング(キャプチャ)されることにより、安定して取得できる。そのため、DQSのエッジ431E,432E(すなわちサンプリングタイム)がValid Data Window421,422の中心と一致するように、DQSをDQに対して遅延させる必要がある。
Centeringのリードトレーニングが行われた場合、NAND型フラッシュメモリ5との通信に応じてDQSに対応する遅延素子332に適切な遅延量が設定される。これにより、遅延されたDQS(Delayed DQS)のエッジ431E,432EはValid Data Window441,442の中心441C,442Cとそれぞれ一致する。
SSD3の出荷前に、SSD3が動作可能な温度範囲内の各温度において、上述したBit Skewのリードトレーニング、およびCenteringのリードトレーニングが行われる。これにより、DQSおよびDQ[0]〜DQ[7]にそれぞれ対応する遅延素子332に設定されるべき遅延量が算出される。したがって、各温度に対応する遅延素子332の遅延量がPHYパラメータセットとして含まれるPHYパラメータテーブル22を作成できる。
図7は、ライトトレーニングに関連するNAND PHY131内の構成例を示す。ライトトレーニングでは、例えば、入出力部(I/O for DQS)330および入出力部(I/O for DQ)331を介した8ビットのDQ[0]〜DQ[7]のライトトレーニングが行われ、そのトレーニング結果に基づいて、DQSおよび8ビットのDQ[0]〜DQ[7]にそれぞれ対応する遅延素子333に設定される遅延量が調整される。これにより、DQSおよびDQ[0]〜DQ[7]の伝送タイミングを調整できる。
図8は、Bit Skewのライトトレーニングによって8ビットのDQ[0]〜DQ[7]の伝送タイミングが調整される例を示す。DQ[0]は、複数のデータ区間55と複数の遷移区間56とを含んでいる。同様に、DQ[1]〜DQ[7]の各々は、複数のデータ区間55と複数の遷移区間56とを含んでいる。
図8に示すように、Bit Skewのライトトレーニングが行われる前のDQ[0]〜DQ[7]のエッジは揃っていない。そのため、DQ[0]〜DQ[7]のデータ区間55が重なっている部分に相当するValid Data Window521,522が狭い。なお、Valid Data Window521の決定に用いられるDQ[0]〜DQ[7]の各データ区間55は、DQSのエッジ511Eに対応する時刻を含む区間である。また、Valid Data Window522の決定に用いられるDQ[0]〜DQ[7]の各データ区間55は、DQSのエッジ512Eに対応する時刻を含む区間である。
一方、Bit Skewのライトトレーニングが行われた後のDQ[0]〜DQ[7]は、NAND型フラッシュメモリ5との通信に応じて各ビットに対応する遅延素子333に適切な遅延量が設定されたことにより、各DQのエッジが揃っている。これにより、広いValid Data Window541,542が得られている。なお、Valid Data Window541の決定に用いられるDQ[0]〜DQ[7]の各データ区間55は、DQSのエッジ531Eに対応する時刻を含む区間である。また、Valid Data Window542の決定に用いられるDQ[0]〜DQ[7]の各データ区間55は、DQSのエッジ532Eに対応する時刻を含む区間である。
図9は、CenteringのライトトレーニングによってDQSの伝送タイミングが調整される例を示す。図9に示す例では、Bit Skewのライトトレーニングが行われた後のDQ[0]〜DQ[7](すなわちエッジが揃えられたDQ[0]〜DQ[7])に対してCenteringのライトトレーニングが行われることを想定している。このため、図9は、DQ[0]〜DQ[7]のうちの任意の1つをDQとして図示している。
DQに含まれるデータは、DQの遷移区間56から離れた位置でサンプリング(キャプチャ)されることにより、安定して取得できる。そのため、DQSのエッジ531E,532E(すなわちサンプリングタイム)がValid Data Window521,522の中心と一致するように、DQSをDQに対して遅延させる必要がある。
Centeringのライトトレーニングが行われた場合、NAND型フラッシュメモリ5との通信に応じてDQSに対応する遅延素子333に適切な遅延量が設定される。これにより、DQ[0]〜DQ[7]に基づくValid Data Window541,542の中心541C,542Cは、遅延されたDQSのエッジ531E,532Eとそれぞれ一致する。
SSD3の出荷前に、SSD3が動作可能な温度範囲内の各温度において、上述したBit Skewのライトトレーニング、およびCenteringのライトトレーニングが行われる。これにより、DQSおよびDQ[0]〜DQ[7]にそれぞれ対応する遅延素子333に設定されるべき遅延量が算出される。したがって、各温度に対応する遅延素子333の遅延量がPHYパラメータセットとして含まれるPHYパラメータテーブル22を作成できる。
以上のようなキャリブレーション/トレーニングが、SSD3の出荷前に、SSD3を複数の温度にそれぞれ設定して行われることにより、キャリブレーション/トレーニング結果に基づくPHYパラメータセットを含むPHYパラメータテーブル22を作成できる。PHYパラメータテーブル22は、SSD3内のNAND型フラッシュメモリ5に格納される。
なお、上述したキャリブレーション/トレーニングの例の代わりに、あるいはこれらの例に加えて、NAND PHY131のための種々のキャリブレーション/トレーニングが行われ得る。つまり、NAND PHY131に含まれるコンポーネントに設定されるべきPHYパラメータが取得されるならば、どのようなキャリブレーション/トレーニングが行われてもよい。
図1に戻る。CPU12は、例えばリード制御部121、ライト制御部122、およびPHYパラメータ制御部123として機能し得る。これら各部121、122、123は、例えば、NAND型フラッシュメモリ5からDRAM6にロードされたFW21をCPU12が実行することにより実現される。
リード制御部121は、論理アドレスに対応するLUT23のエントリに基づいて、論理アドレスに対応する物理アドレスを求め、NAND型フラッシュメモリ5からリードコマンドに応じたデータを読み出す。
ライト制御部122は、ライトコマンドとともにホスト2から受信されたユーザデータを、DRAM6上のライトバッファに蓄積する。また、ライト制御部122は、このライトコマンドよってユーザデータをある論理アドレスに書き込むことが要求されている場合、このユーザデータが書き込まれるべき物理アドレスを決定する。そして、ライト制御部122は、そのユーザデータを、決定された物理アドレスに対応するブロックおよびページに書き込むことをNAND型フラッシュメモリ5に要求する。より具体的には、ライト制御部122は、NAND型フラッシュメモリ5に、物理アドレスを示す情報(例えばブロックおよびページ)と、ユーザデータとを送出する。
次いで、ライト制御部122は、NAND型フラッシュメモリ5にプログラムを指示する。すなわち、ライト制御部122は、NAND型フラッシュメモリ5にプログラムコマンドを送ることにより、NAND型フラッシュメモリ5に対して、送出されたユーザデータを書き込み先のブロックおよびページにプログラムさせる。
NAND型フラッシュメモリ5は複数のブロックを含んでいる。ブロックは、有効データを格納しているブロック(アクティブブロック)と、有効データを格納しておらず、イレーズ処理を経ることで新たなデータの書き込みに利用可能なブロック(フリーブロック)とに大別される。1つ以上のフリーブロックから1つのブロックが選択され、イレーズ処理を経ることで、書き込み先ブロックとして割り当てられる。書き込み先ブロックは、有効データを格納し得る。
また、ライト制御部122は、ライトバッファ内の、送出されたユーザデータが蓄積されていた領域を解放する。ライト制御部122は、論理アドレスと物理アドレスとをマッピングする。このマッピングは、LUT23のエントリに記録される。
PHYパラメータ制御部123は、SSD3が起動されたことに応じ、NAND型フラッシュメモリ5からDRAM6にPHYパラメータテーブル22をロードする。
また、PHYパラメータ制御部123は温度センサ15によって計測されたSSD3の現在の温度を取得し、PHYパラメータテーブル22からこの温度に対応するPHYパラメータセットを取得する。そして、PHYパラメータ制御部123は取得されたPHYパラメータセットをNAND PHY131に設定する。より具体的には、PHYパラメータ制御部123は、NAND PHY131に含まれる1つ以上のコンポーネントに、取得されたPHYパラメータセットに含まれる1つ以上のPHYパラメータをそれぞれ設定する。
さらにPHYパラメータ制御部123は、温度センサ15から取得された温度が変化した場合、例えば温度センサ15から取得された新たな現在の温度と、その直前に取得された温度とが、閾値以上異なっている場合、PHYパラメータテーブル22から新たな現在の温度に対応するPHYパラメータセットを取得し、NAND PHY131に設定する。上述した通り、PHYパラメータテーブル22は、例えば複数の温度に対応する複数のPHYパラメータセットを含んでいる。PHYパラメータ制御部123は、温度センサ15から取得された新たな現在の温度に最も近いPHYパラメータテーブル22内の第1温度と、その直前に取得された温度に最も近いPHYパラメータテーブル22内の第2温度とが異なる場合、PHYパラメータテーブル22から第1温度に対応するPHYパラメータセットを取得し、NAND PHY131に設定する。つまり、NAND PHY131に含まれる1つ以上のコンポーネントにそれぞれ設定されている1つ以上のPHYパラメータが、新たな現在の温度に対応するPHYパラメータセットに含まれる1つ以上のPHYパラメータでそれぞれ更新される。
以上の構成により、NAND型フラッシュメモリ5にアクセスするリード制御部121、ライト制御部122等の各部は、SSD3の現在の温度に適したPHYパラメータセットが設定されたNAND PHY131を介して、NAND型フラッシュメモリ5にアクセスする。これにより、NAND PHY131を介して伝送される複数の信号間のタイミングが、SSD3の現在の温度に応じて精密に調整されるので、リード制御部121やライト制御部122による動作に応じて送受信される信号の品質が向上する。なお、リード制御部121およびライト制御部122以外の様々な制御部によるNAND PHY131を介したNAND型フラッシュメモリ5へのアクセスにおいても、同様の効果を得ることができる。
また上述した通り、SSD3の出荷前にNAND型フラッシュメモリ5に格納された複数の温度に対応する複数のPHYパラメータセットを含むPHYパラメータテーブル22を用いて、SSD3の温度変化に応じて、NAND PHY131に設定されているPHYパラメータセットが更新される。これにより、SSD3の温度が変化した際に、キャリブレーションやトレーニングを行うことなく、NAND PHY131に設定されるPHYパラメータセットを更新できるので、NAND型フラッシュメモリ5に継続してアクセスできる。つまり、SSD3の温度が変化した場合に、キャリブレーションやトレーニングを行うためにNAND型フラッシュメモリ5へのアクセスを停止させることなく、SSD3の出荷前に格納されたPHYパラメータテーブル22を用いて、NAND PHY131に設定されるPHYパラメータセットを迅速に更新できる。また、SSD3でキャリブレーションやトレーニングを行う必要がないので、PHYパラメータセットの更新に関わるSSD3のリソースへの影響や消費電力を低減できる。
図10はPHYパラメータテーブル22の一構成例を示す。PHYパラメータテーブル22は、例えばSSD3の出荷前に行われたキャリブレーション/トレーニングの結果に基づいて作成され、NAND型フラッシュメモリ5に格納される。したがって、出荷時のSSD3のNAND型フラッシュメモリ5には、PHYパラメータテーブル22が格納されている。
PHYパラメータテーブル22は複数のレコードを含む。これら複数のレコードは、SSD3が動作可能な温度範囲に含まれる特定の間隔の複数の温度に対応する。各レコードは、例えば温度フィールドとPHYパラメータセットフィールドとを含む。
ある温度に対応するレコードにおいて、温度フィールドはその温度を示す。PHYパラメータセットフィールドは、SSD3が(すなわち温度センサ15を用いて計測された温度が)、その温度である場合にNAND PHY131に設定されるべきPHYパラメータセットを示す。PHYパラメータセットは1つ以上のPHYパラメータを含む。1つ以上のPHYパラメータは、NAND PHY131の1つ以上のコンポーネント(回路、素子等)にそれぞれ設定され得る。1つ以上のPHYパラメータは、リードに関するPHYパラメータとライトに関するPHYパラメータとを含み得る。
図10に示す例では、PHYパラメータテーブル22は0℃から80℃までの温度範囲に含まれる1℃間隔の複数の温度に対応する81個のレコードを含んでいる。0℃に対応するレコードには、SSD3が0℃である場合にNAND PHY131に設定されるべきPHYパラメータセットP0が含まれている。1℃に対応するレコードには、SSD3が1℃である場合にNAND PHY131に設定されるべきPHYパラメータセットP1が含まれている。後続する各温度に対応するレコードにも、同様にして、SSD3がその温度である場合にNAND PHY131に設定されるべきPHYパラメータセットが含まれている。
コントローラ4はPHYパラメータテーブル22を参照することにより、SSD3の現在の温度に適したPHYパラメータセットを取得できる。
なお、SSD3は各温度に対応するPHYパラメータセットを含むPHYパラメータテーブル22の代わりに、各温度に対応する1つ以上のPHYパラメータをそれぞれ含む1つ以上のPHYパラメータテーブルを用いてもよい。この場合、コントローラ4は、これら1つ以上のPHYパラメータテーブルから、SSD3の現在の温度に適したPHYパラメータをそれぞれ取得する。
図11のフローチャートを参照して、コントローラ4によって実行されるPHYパラメータ設定処理の手順の例を説明する。
まずコントローラ4は、SSD3が電源オンまたは再起動されたかどうかを判定する(ステップS101)。SSD3が電源オンも再起動もされていない場合(ステップS101のNO)、ステップ101に戻り、SSD3が電源オンまたは再起動されたかどうかが再度判定される。
SSD3が電源オンまたは再起動された場合(ステップS101のYES)、コントローラ4はLow speed settingを行う(ステップS102)。つまり、コントローラ4はSSD3内の各部が低速で動作するための設定を行う。そして、コントローラ4はNAND型フラッシュメモリ5へのアクセスを開始するための初期化を行う(ステップS103)。この初期化において、コントローラ4は、例えばNAND型フラッシュメモリ5を起動し、各種の設定をリセットする。
次いで、コントローラ4はNAND型フラッシュメモリ5からDRAM6に、FW21とPHYパラメータテーブル22とをロードする(ステップS104)。図10を参照して上述した通り、PHYパラメータテーブル22は、SSD3が動作可能な温度範囲に含まれる特定の間隔の複数の温度にそれぞれ対応する複数のPHYパラメータセットを含んでいる。
そして、コントローラ4はHigh speed settingを行う(ステップS105)。つまり、コントローラ4はSSD3内の各部が高速で動作するための設定(例えばコントローラ4およびNAND型フラッシュメモリ5のモード切替)を行う。これにより、SSD3内の各部はLow speed settingが行われている場合よりも高速に動作できる。なお、High speed settingには、PHYパラメータセットの設定は含まれていない。
次いで、コントローラ4は温度センサ15を用いてSSD3の現在の温度を取得する(ステップS106)。コントローラ4は、現在の温度がSSD3の動作可能な温度範囲内であるか否かを判定する(ステップS107)。現在の温度がSSD3の動作可能な温度範囲内である場合(ステップS107のYES)、コントローラ4は閾値以上の温度変化があったか否かを判定する(ステップS108)。コントローラ4は、例えば、取得した現在の温度がその直前に取得した温度から閾値以上変化しているか否かを判定する。なお、取得した現在の温度が電源オンまたは再起動されてから最初に取得した温度であるならば、コントローラ4は、取得した現在の温度に関わらず温度変化があったと判断してもよい。温度変化がない場合(ステップS108のNO)、ステップS106に戻り、温度変化の監視が続行される。
一方、温度変化があった場合(ステップS108のYES)、コントローラ4はPHYパラメータテーブル22から現在の温度に対応するPHYパラメータセットを取得する(ステップS109)。コントローラ4は取得したPHYパラメータセットを、NAND I/F13内の物理層の機能を実現するNAND PHY131に設定する(ステップS110)。より詳しくは、コントローラ4は取得したPHYパラメータセットに含まれる1つ以上のPHYパラメータを、NAND PHY131に含まれる1つ以上のコンポーネントにそれぞれ設定する。
コントローラ4は、ステップS109でPHYパラメータセットをNAND PHY131に設定した後、ステップS106に戻る。これにより、メモリシステム3内の温度変化に応じて適切なPHYパラメータセットをNAND PHY131に設定できる。
現在の温度がSSD3の動作可能な温度範囲外である場合(ステップS107のNO)、コントローラ4は、NAND型フラッシュメモリ5に対する入出力処理を中断し、SSD3の現在の温度が、SSD3が動作可能な温度範囲を超えていることを、ホスト2に通知し(ステップS111)、PHYパラメータ設定処理を終了する。
以上により、SSD3の温度が変化した場合にも、現在の温度に応じた適切なPHYパラメータセットがNAND PHY131に設定されるので、NAND型フラッシュメモリ5への高速アクセスを継続できる。
(第2実施形態)
第1実施形態では、SSD3の出荷時にNAND型フラッシュメモリ5に格納されているPHYパラメータテーブル22が、SSD3が動作可能な温度範囲に含まれる特定の間隔の複数の温度にそれぞれ対応する複数のPHYパラメータセットを含んでいる。これに対して、第2実施形態では、ある温度に対応するPHYパラメータセットを、SSD3が動作している間に行われるキャリブレーション/トレーニングの結果に基づいて取得し、PHYパラメータテーブル22に追加する。
第2実施形態に係るSSD3の構成は第1実施形態のSSD3と同様であり、第2実施形態と第1実施形態とでは、PHYパラメータ制御部123によって実行される処理の手順のみが異なる。以下、第1実施形態と異なる点のみを説明する。
PHYパラメータ制御部123はPHYパラメータテーブル22に、温度センサ15から取得した現在の温度に対応するPHYパラメータセットが含まれている場合、このPHYパラメータセットを取得し、NAND PHY131に設定する。
一方、PHYパラメータテーブル22に、現在の温度に対応するPHYパラメータセットが含まれていない場合、PHYパラメータ制御部123はNAND PHY131のためのキャリブレーション/トレーニングを行い、このキャリブレーション/トレーニングの結果に基づくPHYパラメータセットを、現在の温度と関連付けてPHYパラメータテーブル22に追加する。これにより、現在の温度に対応するPHYパラメータセットを含むように、PHYパラメータテーブル22を更新できる。PHYパラメータ制御部123はさらに、キャリブレーション/トレーニングの結果に基づくPHYパラメータセットをNAND PHY131に設定する。
PHYパラメータ制御部123は、上述の動作を、例えばSSD3がアイドル状態である間にSSD3の温度が変化したことに応じて行う。アイドル状態は、SSD3が、例えばホスト2による要求(例えばライト要求、リード要求)に応じた処理を行っていない状態、SSD3に設けられる各種のリソース(CPU12、DRAM6等)の使用率や使用量が閾値未満である状態、である。
SSD3の出荷時にNAND型フラッシュメモリ5に格納されているPHYパラメータテーブル22は、例えば、SSD3が動作可能な温度範囲に含まれる特定の間隔の複数の温度に対応する複数のレコードを含んでいるが、各レコードはPHYパラメータセットを含んでいない。あるいは、PHYパラメータ制御部123が、このようなPHYパラメータテーブル22を、SSD3の使用が開始されたことに応じて作成してもよい。
そして、ある温度のSSD3において、一度、NAND PHY131のためのキャリブレーション/トレーニングが行われたならば、キャリブレーション/トレーニングの結果に基づくPHYパラメータセットが、当該温度に関連付けてPHYパラメータテーブル22に追加される。したがって、温度毎に1回のキャリブレーション/トレーニングが行われることにより、PHYパラメータテーブル22を完成できる。
なお、第2実施形態では、SSD3の出荷時のPHYパラメータテーブル22にPHYパラメータセットを含めないので、出荷前にキャリブレーション/トレーニングを行う必要がない。したがって、第2実施形態では、第1実施形態と比較して、SSD3の出荷前に、PHYパラメータテーブル22を準備するために要する作業コストを低減できる。
図12は、PHYパラメータ制御部123によって更新されたPHYパラメータテーブル22の例を示す。図12に示す例では、NAND PHY131のためのキャリブレーション/トレーニングが既に行われた25℃および26℃に対応するPHYパラメータセットP25,P26が、PHYパラメータテーブル22に追加されている。つまり、PHYパラメータテーブル22に含まれる25℃および26℃に対応する各レコードでは、PHYパラメータセットフィールドに値が設定されている。
しかし、NAND PHY131のためのキャリブレーション/トレーニングが行われていない温度(例えば24℃)に対応するPHYパラメータセットは、PHYパラメータテーブル22にまだ追加されていない。図12に示すPHYパラメータテーブル22に含まれる、25℃および26℃以外の温度に対応する各レコードでは、PHYパラメータセットフィールドに値が設定されていない。
図13は、ある温度のSSD3でキャリブレーション/トレーニングが行われたことによって、図12に示したPHYパラメータテーブル22が更新された例を示す。図13に示す例では、PHYパラメータ制御部123は、SSD3の現在の温度が24℃である場合に、PHYパラメータテーブル22に24℃に対応するPHYパラメータセットが含まれていないので、NAND PHY131のためのキャリブレーション/トレーニングを行っている。そして、PHYパラメータ制御部123は、このキャリブレーション/トレーニングの結果に基づくPHYパラメータセットP24を、24℃と関連付けてPHYパラメータテーブル22に追加している。つまり、PHYパラメータ制御部123は、24℃に対応するレコードにPHYパラメータセットP24を設定している。
これにより、PHYパラメータテーブル22に含まれていなかった24℃に対応するPHYパラメータセットP24を、PHYパラメータテーブル22に追加できる。同様にして、SSD3の現在の温度が、PHYパラメータセットがまだ取得されていない温度になった場合には、その温度に対応するPHYパラメータセットがPHYパラメータテーブル22に追加され得る。
図14のフローチャートは、コントローラ4によって実行されるPHYパラメータ更新処理の手順の例を示す。
まず、コントローラ4はSSD3がアイドル状態であるか否かを判定する(ステップS201)。SSD3がアイドル状態でない場合(ステップS201のNO)、ステップS201に戻り、SSD3がアイドル状態であるか否かが再度判定される。
SSD3がアイドル状態である場合(ステップS201のYES)、コントローラ4は温度センサ15を用いてSSD3の現在の温度を取得する(ステップS202)。コントローラ4は、現在の温度がSSD3の動作可能な温度範囲内であるか否かを判定する(ステップS203)。現在の温度がSSD3の動作可能な温度範囲内である場合(ステップS203のYES)、コントローラ4は閾値以上の温度変化があったか否かを判定する(ステップS204)。温度変化がない場合(ステップS204のNO)、ステップS201に戻る。
温度変化があった場合(ステップS204のYES)、コントローラ4はPHYパラメータテーブル22に現在の温度に対応するPHYパラメータセットがあるか否かを判定する(ステップS205)。PHYパラメータテーブル22に現在の温度に対応するPHYパラメータセットがある場合(ステップS205のYES)、コントローラ4はPHYパラメータテーブル22から現在の温度に対応するPHYパラメータセットを取得し(ステップS206)、取得したPHYパラメータセットをNAND PHY131に設定する(ステップS207)。
一方、PHYパラメータテーブル22に現在の温度に対応するPHYパラメータセットがない場合(ステップS205のNO)、コントローラ4はNAND PHY131のためのキャリブレーション/トレーニングを行い(ステップS208)、その結果に基づくPHYパラメータセットを用いてPHYパラメータテーブル22を更新する(ステップS209)。より詳しくは、コントローラ4は、キャリブレーション/トレーニングの結果に基づくPHYパラメータセットを、PHYパラメータテーブル22内の現在の温度に対応するレコードに追加する。そして、コントローラ4は、キャリブレーション/トレーニングの結果に基づくPHYパラメータセットをNAND PHY131に設定する(ステップS210)。なお、ステップS209とステップS210とは、逆の順序で実行されてもよいし、並行して実行されてもよい。
現在の温度がSSD3の動作可能な温度範囲外である場合(ステップS203のNO)、コントローラ4は、NAND型フラッシュメモリ5に対する入出力処理を中断し、SSD3の現在の温度が、SSD3が動作可能な温度範囲を超えていることを、ホスト2に通知し(ステップS211)、PHYパラメータ更新処理を終了する。
以上により、SSD3がアイドル状態であって、温度センサ15から取得された温度が変化した場合、NAND PHY131に設定されるPHYパラメータセットが更新されると共に、PHYパラメータテーブル22が更新され得る。すなわち、PHYパラメータテーブル22に現在の温度に対応するPHYパラメータセットが含まれていれば、そのPHYパラメータセットがNAND PHY131に設定される。また、PHYパラメータテーブル22に現在の温度に対応するPHYパラメータセットが含まれていなければ、NAND PHY131のためのキャリブレーション/トレーニングが行われ、キャリブレーション/トレーニングの結果に基づくPHYパラメータセットがPHYパラメータテーブル22に追加される。SSD3では温度毎に1回のキャリブレーション/トレーニングが行われ、これによりPHYパラメータテーブル22を完成できる。完成したPHYパラメータテーブル22を用いることにより、温度が変化した場合にもNAND型フラッシュメモリ5への高速アクセスを継続できる。
(第3実施形態)
第1実施形態では、SSD3の出荷時にNAND型フラッシュメモリ5に格納されているPHYパラメータテーブル22が、SSD3が動作可能な温度範囲に含まれる特定の間隔の複数の温度にそれぞれ対応する複数のPHYパラメータセットを含んでいる。第2実施形態では、ある温度に対応するPHYパラメータセットを、SSD3が動作している間に行われるキャリブレーション/トレーニングの結果に基づいて取得し、PHYパラメータテーブル22に追加する。これに対して、第3実施形態では、SSD3の出荷時にNAND型フラッシュメモリ5に格納されているPHYパラメータテーブル22が、SSD3が動作可能な温度範囲に含まれる特定の間隔の複数の温度の内の、1つ以上の温度に対応するPHYパラメータセットを含むが、それ以外の1つ以上の温度に対応するPHYパラメータセットを含んでいない。
第3実施形態では、PHYパラメータテーブル22に含まれていない、ある温度に対応するPHYパラメータセットは、PHYパラメータテーブル22に含まれている別のいくつかの温度に対応するPHYパラメータセットを用いた推測により、あるいはSSD3が使用されている間に行われるキャリブレーション/トレーニングの結果に基づいて、取得され、PHYパラメータテーブル22に追加される。さらに第3実施形態では、推測により得られたPHYパラメータセットと、PHYパラメータテーブル22に設定されてから経過した時間が閾値時間を超えたPHYパラメータセットとはそれぞれ、SSD3が使用されている間に行われるキャリブレーション/トレーニングの結果に基づいて更新される。
なお、第3実施形態では、SSD3の出荷時のPHYパラメータテーブル22に、SSD3が動作可能な温度範囲に含まれる複数の温度の内の、1つ以上の温度に対応するPHYパラメータセットを含めないので、それら1つ以上の温度に関して、出荷前にキャリブレーション/トレーニングを行う必要がない。したがって、第3実施形態では、第1実施形態と比較して、SSD3の出荷前に、PHYパラメータテーブル22を準備するために要する作業コストを低減できる。
第3実施形態に係るSSD3の構成は第1および第2実施形態のSSD3と同様であり、第3実施形態と第1および第2実施形態とでは、PHYパラメータ制御部123によって実行される処理の手順のみが異なる。以下、第1および第2実施形態と異なる点のみを説明する。
図15は、SSD3の出荷時にNAND型フラッシュメモリ5に格納されているPHYパラメータテーブル22の一構成例を示す。このPHYパラメータテーブル22は、例えばSSD3の出荷前に行われたキャリブレーション/トレーニングの結果に基づいて作成され、NAND型フラッシュメモリ5に格納される。したがって、ユーザによる使用が開始される時点のSSD3のNAND型フラッシュメモリ5に、このPHYパラメータテーブル22が格納されている。
PHYパラメータテーブル22は複数のレコードを含む。これら複数のレコードは、SSD3が動作可能な温度範囲に含まれる特定の間隔の複数の温度に対応する。各レコードは、例えば温度、PHYパラメータセット、更新日時、および実測/推測の4つのフィールドを含む。
ある温度に対応するレコードにおいて、温度フィールドはその温度を示す。PHYパラメータセットフィールドは、SSD3が(すなわち温度センサ15を用いて計測された温度が)その温度である場合にNAND PHY131に設定されるべきPHYパラメータセットを示す。PHYパラメータセットに含まれる1つ以上のPHYパラメータは、NAND PHY131の1つ以上のコンポーネント(回路、素子等)にそれぞれ設定され得る。
更新日時フィールドは、その温度に対応するPHYパラメータセット(すなわちPHYパラメータセットフィールドに設定された値)が更新された日時を示す。
実測/推測フィールドは、その温度に対応するPHYパラメータセットが実測と推測のいずれのPHYパラメータセットであるかを示す。実測/推測フィールドには、例えば「実測」と「推測」のいずれかの値が設定され得る。
実測のPHYパラメータセットは、NAND PHY131のためのキャリブレーション/トレーニングを行って得られたPHYパラメータセットである。推測のPHYパラメータセットは、PHYパラメータテーブル22を用いて推測されたPHYパラメータセットである。より詳しくは、ある温度に対応する推測のPHYパラメータセットは、PHYパラメータテーブル22に含まれる、別のいくつかの温度に対応する実測のPHYパラメータセットを用いて推測されたPHYパラメータセットである。
SSD3の出荷時にNAND型フラッシュメモリ5に格納されているPHYパラメータテーブル22は、SSD3が動作可能な温度範囲に含まれる特定の間隔の複数の温度に対応する複数のレコードを含んでいるが、これら複数の温度の内の少なくとも1つの温度に対応するPHYパラメータセットを含んでいないことがある。
例えば、SSD3の出荷時のPHYパラメータテーブル22は、SSD3が動作可能な温度範囲を分割した複数の温度範囲の各々において、PHYパラメータセットが取得される温度の間隔が異なるように作成されてもよい。例えば、下限値を含む温度範囲と上限値を含む温度範囲とでは、PHYパラメータセットが取得される温度の間隔を大きくする一方、常温と想定される温度を含む温度範囲ではPHYパラメータセットが取得される温度の間隔を小さくする。つまり、下限値を含む温度範囲と上限値を含む温度範囲とではPHYパラメータセットが取得される温度が粗く設定され、常温と想定される温度を含む温度範囲ではPHYパラメータセットが取得される温度が細かく設定され得る。したがって例えば、下限値0℃を含む0℃から20℃の温度範囲と上限値80℃を含む60℃から80℃の温度範囲とでは、5℃間隔でPHYパラメータセットが取得されるように、常温40℃を含む21℃から59℃の温度範囲では1℃間隔でPHYパラメータセットが取得されるように、PHYパラメータテーブル22が作成され得る。
あるいは、出荷時のPHYパラメータテーブル22は、下限値を含む温度範囲、上限値を含む温度範囲、および常温と想定される温度を含む温度範囲の各々で、1つ以上の温度に対応するPHYパラメータセットが取得されるように、PHYパラメータテーブル22が作成されてもよい。SSD3の出荷時のPHYパラメータテーブル22に、いずれの温度に対応するPHYパラメータセットを含めるかは、SSD3の使用が想定される環境に応じて任意に設定可能である。
図15に示す例では、2℃、24℃、および79℃に対応するPHYパラメータセットがPHYパラメータテーブル22に含まれていない。換言すると、PHYパラメータテーブル22に含まれる2℃、24℃、および79℃に対応する各レコードでは、PHYパラメータセット、更新日時、および実測/推測の各フィールドに値が設定されていないと云える。
PHYパラメータ制御部123はSSD3が電源オンまたは再起動された場合に、あるいは実測のPHYパラメータセットがPHYパラメータテーブル22に追加された場合に、PHYパラメータテーブル22を用いた推測処理を行う。PHYパラメータテーブル22は、例えば複数の温度にそれぞれ対応する複数の実測のPHYパラメータセットを含んでいる。推測処理において、PHYパラメータ制御部123はPHYパラメータテーブル22内の、対応する実測のPHYパラメータセットが含まれていない1つ以上の温度(以下、推定対象温度とも称する)を、すなわち複数の実測のPHYパラメータセットに対応する複数の温度とは異なる1つ以上の温度を、取得する。そして、PHYパラメータ制御部123は、それら1つ以上の推定対象温度にそれぞれ対応する1つ以上のPHYパラメータセットを、複数の実測のPHYパラメータセットを用いて推測(算出)する。
PHYパラメータ制御部123は、それら1つ以上の推定対象温度にそれぞれ関連付けて、推測された1つ以上のPHYパラメータセットをPHYパラメータテーブル22に追加する。より詳しくは、PHYパラメータ制御部123は、1つ以上の推定対象温度に対応する各レコードに含まれるPHYパラメータセットのフィールドに、推測されたPHYパラメータセットを設定し、更新日時のフィールドにそのPHYパラメータセットが推測された日時(あるいは更新が行われた日時)を設定し、実測/推測のフィールドに「推測」を設定する。
ここで、第1温度に対応するPHYパラメータセットが推測される場合について例示する。なお、説明を分かりやすくするために、PHYパラメータセットが1つのパラメータを含むことを想定する。
PHYパラメータ制御部123は、例えば、PHYパラメータテーブル22から、第1温度よりも低く、且つ第1温度に最も近い第2温度に対応する実測のPHYパラメータセットと、第1温度よりも高く、且つ第1温度に最も近い第3温度に対応する実測のPHYパラメータセットとを取得する。PHYパラメータ制御部123は、例えば、第2温度に対応する実測のPHYパラメータセットと第3温度に対応する実測のPHYパラメータセットとの線形補間により、第1温度に対応するPHYパラメータセットを推測する。PHYパラメータ制御部123は、推測されたPHYパラメータセットを、第1温度と関連付けてPHYパラメータテーブル22に追加する。
なお、上述した例では、PHYパラメータテーブル22に含まれる2つの実測のPHYパラメータセットを用いた線形補間により、第1温度に対応するPHYパラメータセットが推測される場合について説明したが、さらに多くの実測のPHYパラメータセットを用いた線形補間により、第1温度に対応するPHYパラメータセットが推定されてもよい。また、線形補間の代わりに、種々の補間方法が用いられてもよい。
さらに、PHYパラメータ制御部123は、推測されたPHYパラメータセットの推測精度が第1閾値を超えている場合に、そのPHYパラメータセットをPHYパラメータテーブル22に追加するようにしてもよい。推測精度は、例えば推測されたPHYパラメータセットの信頼度を示す。第1閾値は、例えばNAND PHY131が正常に動作可能である推測PHYパラメータセットだけがPHYパラメータテーブル22に追加されるように、設定される。
より具体的には、図15に示す例において、2℃に対応するPHYパラメータセットが推測される場合、PHYパラメータ制御部123は、PHYパラメータテーブル22から、2℃よりも低く、且つ2℃に最も近い1℃に対応する実測のPHYパラメータセットP1と、2℃よりも高く、且つ2℃に最も近い3℃に対応する実測のPHYパラメータセットP3とを取得する。PHYパラメータ制御部123は、例えば1℃に対応する実測のPHYパラメータセットP1と3℃に対応する実測のPHYパラメータセットP3との線形補間により、2℃に対応するPHYパラメータセットP2を推測する。
なお、2つのPHYパラメータセットP1,P3がそれぞれ、NAND PHY131内の複数のコンポーネントに設定されるべき複数のPHYパラメータを含む場合も同様に、各パラメータセットP1,P3からコンポーネント毎のPHYパラメータを取得し、それらを用いた線形補間を行うことにより、PHYパラメータセットP2として用いられる複数のPHYパラメータを推測する。
PHYパラメータ制御部123は、推測されたPHYパラメータセットP2を、2℃に対応するレコード内のPHYパラメータセットフィールドに設定する。なお、PHYパラメータ制御部123は、推測されたPHYパラメータセットP2の推測精度が第1閾値を超えている場合に、PHYパラメータセットP2を、2℃に対応するレコード内のPHYパラメータセットフィールドに設定してもよい。
例えば、推測に用いられるPHYパラメータセットP1とPHYパラメータセットP3とが同じ値を示している場合、その同じ値が、PHYパラメータセットP2として推測され、推測精度は高くなる。一方、推測に用いられたPHYパラメータセットP1とPHYパラメータセットP3との差が大きいほど、PHYパラメータセットP2の推測精度は低下する。したがって例えば、推測に用いられる複数のPHYパラメータセットのばらつきが大きいほど、推測されるPHYパラメータセットの推測精度は低くなり、推測に用いられる複数のPHYパラメータセットのばらつきが小さいほど、推測されるPHYパラメータセットの推測精度は高くなる。
図16は、図15に示したPHYパラメータテーブル22が、推測されたPHYパラメータセットを用いて更新された例を示す。図16に示す例では、2℃に対応するPHYパラメータセットP2と24℃に対応するPHYパラメータセットP24とが推測され、PHYパラメータテーブル22に追加されている。
2℃に対応するレコードでは、PHYパラメータセットフィールドにPHYパラメータセットP2が、更新日時フィールドにPHYパラメータセットP2の更新日時(あるいは推測された日時)が、実測/推測フィールドに「推測」が、設定される。また、24℃に対応するレコードでは、PHYパラメータセットフィールドにPHYパラメータセットP24が、更新日時フィールドにPHYパラメータセットP24の更新日時が、実測/推測フィールドに「推測」が、設定される。
なお、79℃に対応するPHYパラメータセットは、その推測精度が第1閾値以下であったために、PHYパラメータテーブル22に追加されていない。
図17は、図16に示したPHYパラメータテーブル22が、キャリブレーション/トレーニングが行われたことによって更新された例を示す。図17に示す例では、79℃に対応するPHYパラメータセットP79が、キャリブレーション/トレーニングの結果に基づいて取得され、PHYパラメータテーブル22に追加されている。79℃に対応するレコードでは、PHYパラメータセットフィールドにPHYパラメータセットP79が、更新日時フィールドにPHYパラメータセットP79の更新日時(あるいは実測された日時)が、実測/推測フィールドに「実測」が、設定される。
PHYパラメータ制御部123は温度センサ15からSSD3の現在の温度を取得する。PHYパラメータ制御部123はPHYパラメータテーブル22に、現在の温度に対応する実測または推測のPHYパラメータセットがある場合、そのPHYパラメータセットを取得し、NAND PHY131に設定する。
PHYパラメータテーブル22に、現在の温度に対応する実測のPHYパラメータセットと推測のPHYパラメータセットとのいずれもがない場合、NAND PHY131のためのキャリブレーション/トレーニングを行い、このキャリブレーション/トレーニングの結果に基づく実測のPHYパラメータセットを、現在の温度と関連付けてPHYパラメータテーブル22に追加する。これにより、現在の温度に対応する実測のPHYパラメータセットを含むように、PHYパラメータテーブル22を更新できる。また、PHYパラメータ制御部123は、キャリブレーション/トレーニングの結果に基づく実測のPHYパラメータセットをNAND PHY131に設定する。
また、PHYパラメータ制御部123は、SSD3がアイドル状態である間にSSD3の温度が変化した場合、PHYパラメータテーブル22を更新し得る。例えば、(1)PHYパラメータテーブル22がSSD3の現在の温度に対応するPHYパラメータセットを含んでいない場合、(2)PHYパラメータテーブル22がSSD3の現在の温度に対応する推測PHYパラメータセットを含む場合、または(3)PHYパラメータテーブル22がSSD3の現在の温度に対応する実測PHYパラメータセットを含み、且つその実測PHYパラメータセットが更新されてからの経過時間が第2閾値を超えている場合、PHYパラメータ制御部123はNAND PHY131のためのキャリブレーション/トレーニングを行い、このキャリブレーション/トレーニングの結果に基づく実測PHYパラメータセットでPHYパラメータテーブル22を更新する。PHYパラメータ制御部123はさらに、新たな実測PHYパラメータセットが追加されたPHYパラメータテーブル22を用いた推測処理を行ってもよい。
以上により、PHYパラメータ制御部123は、SSD3の出荷前か、あるいは上述した(1)から(3)の場合にキャリブレーション/トレーニングの結果として得られた実測PHYパラメータセットと、PHYパラメータ推測処理で得られた推測PHYパラメータセットとのいずれかを、NAND PHY131に設定しながら、高精度の実測PHYパラメータセットをより多く含むようにPHYパラメータテーブル22を更新できる。
図18のフローチャートは、コントローラ4によって実行されるPHYパラメータ設定処理の手順の例を示す。ステップS301からステップS304までの手順は、図11のフローチャートを参照して上述したステップS101からステップS104までの手順と同様である。
ステップS304でFW21とPHYパラメータテーブル22とがNAND型フラッシュメモリ5からDRAM6にロードされた後、コントローラ4はPHYパラメータ推測処理を行う(ステップS305)。PHYパラメータ推測処理では、PHYパラメータテーブル22を用いて、まだキャリブレーション/トレーニングが行われていない温度に対応するPHYパラメータセットが推測される。つまり、PHYパラメータ推測処理では、PHYパラメータテーブル22内の、「実測」が設定されていない実測/推測フィールド(すなわち、「推測」が設定されるか、何も値が設定されていない実測/推測フィールド)を含む各レコードに対して、推測のPHYパラメータセットを設定するための処理が行われる。PHYパラメータ推測処理の具体的な手順については、図19のフローチャートを参照して後述する。
次いで、コントローラ4はHigh speed settingを行う(ステップS306)。そして、コントローラ4は温度センサ15を用いてSSD3の現在の温度を取得し(ステップS307)、現在の温度がSSD3の動作可能な温度範囲内であるか否かを判定する(ステップS308)。現在の温度がSSD3の動作可能な温度範囲内である場合(ステップS308のYES)、コントローラ4は閾値以上の温度変化があったか否かを判定する(ステップS309)。コントローラ4は、例えば、取得した現在の温度がその直前に取得した温度から閾値以上変化しているか否かを判定する。なお、取得した現在の温度が電源オンまたは再起動されてから最初に取得した温度であるならば、コントローラ4は、取得した現在の温度に関わらず温度変化があったと判断してもよい。温度変化がない場合(ステップS309のNO)、ステップS307に戻り、温度変化の監視が続行される。
一方、温度変化があった場合(ステップS309のYES)、コントローラ4はPHYパラメータテーブル22に、現在の温度に対応する実測PHYパラメータセットがあるか否かを判定する(ステップS310)。PHYパラメータテーブル22に、現在の温度に対応する実測PHYパラメータセットがある場合(ステップS310のYES)、コントローラ4はPHYパラメータテーブル22から、現在の温度に対応する実測PHYパラメータセットを取得する(ステップS311)。そして、コントローラ4は、取得した実測PHYパラメータセットをNAND PHY131に設定し(ステップS312)、ステップS307に戻る。ステップS307に戻ることにより、新たな温度変化に応じてPHYパラメータを制御できる。
PHYパラメータテーブル22に、現在の温度に対応する実測PHYパラメータセットがない場合(ステップS310のNO)、コントローラ4はPHYパラメータテーブル22に、現在の温度に対応する推測PHYパラメータセットがあるか否かを判定する(ステップS313)。PHYパラメータテーブル22に、現在の温度に対応する推測PHYパラメータセットがある場合(ステップS313のYES)、コントローラ4はPHYパラメータテーブル22から、現在の温度に対応する推測PHYパラメータセットを取得する(ステップS314)。そして、コントローラ4は、取得した推測PHYパラメータセットをNAND PHY131に設定し(ステップS315)、ステップS307に戻る。
PHYパラメータテーブル22に、現在の温度に対応する推測PHYパラメータセットがない場合(ステップS313のNO)、コントローラ4はNAND PHY131のためのキャリブレーション/トレーニングを行い(ステップS316)、その結果に基づく実測PHYパラメータセットを用いてPHYパラメータテーブル22を更新する(ステップS317)。より詳しくは、コントローラ4は、キャリブレーション/トレーニングの結果に基づく実測PHYパラメータセットを、PHYパラメータテーブル22内の現在の温度に対応するレコードに追加する。コントローラ4は、キャリブレーション/トレーニングの結果に基づく実測PHYパラメータセットをNAND PHY131に設定する(ステップS318)。そして、コントローラ4は、新たな実測PHYパラメータセットが追加されたPHYパラメータテーブル22を用いて、PHYパラメータ推測処理を行い(ステップS319)、ステップS307に戻る。
現在の温度がSSD3の動作可能な温度範囲外である場合(ステップS308のNO)、コントローラ4は、NAND型フラッシュメモリ5に対する入出力処理を中断し、SSD3の現在の温度が、SSD3が動作可能な温度範囲を超えていることを、ホスト2に通知し(ステップS320)、PHYパラメータ設定処理を終了する。
図19のフローチャートを参照して、コントローラ4によって実行されるPHYパラメータ推測処理の手順の例を説明する。このPHYパラメータ推測処理は、図18のフローチャートのステップS305およびステップS319の手順の各々に相当する。ここでは、説明を分かりやすくするために、PHYパラメータテーブル22が、SSD3が動作可能な温度範囲に含まれる1℃間隔の複数の温度に対応する複数のレコードを含む場合について例示する。
まず、コントローラ4は温度tに、SSD3が動作可能な温度範囲の下限値+1℃(例えば下限値が0℃である場合1℃)を設定する(ステップS41)。そして、コントローラ4はPHYパラメータテーブル22に、温度tに対応する実測PHYパラメータセットがあるか否かを判定する(ステップS42)。
PHYパラメータテーブル22に、温度tに対応する実測PHYパラメータセットがない場合(ステップS42のNO)、コントローラ4は、PHYパラメータテーブル22に含まれる他の温度に対応する実測PHYパラメータセットを用いて、温度tに対応するPHYパラメータセットを推測する(ステップS43)。より詳しくは、コントローラ4はPHYパラメータテーブル22から、温度tよりも低く、且つ温度tに最も近い温度t−xに対応する実測PHYパラメータセットと、温度tよりも高く、且つ温度tに最も近い温度t+yに対応する実測PHYパラメータセットとを取得する。PHYパラメータ制御部123は、例えば、温度t−xに対応する実測PHYパラメータセットと温度t+yに対応する実測PHYパラメータセットとの線形補間により、温度tに対応するPHYパラメータセットを推測する。なお、xおよびyは正の整数である。
次いで、コントローラ4は、推測されたPHYパラメータセットの推測精度が第1閾値を超えているか否かを判定する(ステップS44)。推測されたPHYパラメータセットの推測精度が第1閾値を超えている場合(ステップS44のYES)、コントローラ4は温度tに関連付けて、推測されたPHYパラメータセットをPHYパラメータテーブル22に追加し(ステップS45)、ステップS46に進む。
推測されたPHYパラメータセットの推測精度が第1閾値以下である場合(ステップS44のNO)、ステップS45の手順がスキップされ、ステップS46に進む。
PHYパラメータテーブル22に、温度tに対応する実測PHYパラメータセットがある場合(ステップS42のYES)、ステップS43からステップS45の手順がスキップされ、ステップS46に進む。
ステップS46において、コントローラ4は温度tに1を加える。そしてコントローラ4は、温度tが、SSD3が動作可能な温度範囲の上限値(例えば80℃)以上であるか否かを判定する(ステップS47)。温度tが、SSD3が動作可能な温度範囲の上限値未満である場合(ステップS47のNO)、ステップS42に戻り、PHYパラメータセットを推測するための処理が続行される。
一方、温度tが、SSD3が動作可能な温度範囲の上限値以上である場合(ステップS47のYES)、PHYパラメータ推測処理を終了する。
以上により、PHYパラメータテーブル22を用いて、まだキャリブレーション/トレーニングが行われていない温度に対応するPHYパラメータセットを推測できる。
図20のフローチャートは、コントローラ4によって実行されるPHYパラメータ更新処理の手順の例を示す。PHYパラメータ更新処理のステップS501からステップS505までの手順とステップS511の手順は、図14のフローチャートを参照して上述したステップS201からステップS205までの手順とステップS211の手順とそれぞれ同様である。
PHYパラメータテーブル22に、現在の温度に対応するPHYパラメータセットがある場合(ステップS505のYES)、コントローラ4は、現在の温度に対応するPHYパラメータセットが実測PHYパラメータセットであるか否かを判定する(ステップS506)。現在の温度に対応するPHYパラメータセットが実測PHYパラメータセットである場合(ステップS506のYES)、コントローラ4は、その実測PHYパラメータセットが更新されてからの経過時間が第2閾値を超えているか否かを判定する(ステップS507)。より詳しくは、コントローラ4は、PHYパラメータテーブル22内の、その実測PHYパラメータセットを含むレコードから、更新日時フィールドに設定された更新日時を取得し、現在の日時と取得された更新日時との差が第2閾値を超えているか否かを判定する。現在の温度に対応する実測PHYパラメータセットが更新されてからの経過時間が第2閾値以下である場合(ステップS507のNO)、ステップS501に戻る。
現在の温度に対応する実測PHYパラメータセットが更新されてからの経過時間が第2閾値を超えている場合(ステップS507のNO)、PHYパラメータテーブル22に現在の温度に対応するPHYパラメータセットがない場合(ステップS505のNO)、または現在の温度に対応するPHYパラメータセットが推測PHYパラメータセットである場合(ステップS506のNO)、コントローラ4はNAND PHY131のためのキャリブレーション/トレーニングを行い(ステップS508)、その結果に基づく実測PHYパラメータセットを用いてPHYパラメータテーブル22を更新する(ステップS509)。より詳しくは、コントローラ4は、キャリブレーション/トレーニングの結果に基づく実測PHYパラメータセットを、PHYパラメータテーブル22内の現在の温度に対応するレコードに追加する。
そして、コントローラ4はPHYパラメータ推測処理を行い(ステップS510)、ステップS501に戻る。つまり、コントローラ4は、新たな実測PHYパラメータセットが追加されたPHYパラメータテーブル22を用いて、PHYパラメータ推測処理を行った後、ステップS501に戻る。PHYパラメータ推測処理の手順については、図19のフローチャートを参照して上述した通りである。
以上により、SSD3がアイドル状態である間に、実測PHYパラメータセットを取得するためのキャリブレーション/トレーニングが行われる。これにより、SSD3の実際の動作により適したPHYパラメータセットが設定されるように、PHYパラメータテーブル22を更新できる。
なお、第2実施形態のPHYパラメータ制御部123に、上述したPHYパラメータ推測処理を行うための構成が適用されてもよい。PHYパラメータ制御部123は、キャリブレーション/トレーニングの結果として得られた実測PHYパラメータセットと、PHYパラメータ推測処理で得られた推測PHYパラメータセットのいずれかをNAND PHY131に設定しながら、実測PHYパラメータセットをより多く含むようにPHYパラメータテーブル22を更新できる。
以上説明したように、第1乃至第3実施形態によれば、温度が変化した場合にも不揮発性メモリ(例えばNAND型フラッシュメモリ5)への高速アクセスを継続できる。NAND型フラッシュメモリ5は、複数の温度にそれぞれ対応する複数のPHYパラメータセットを含むPHYパラメータテーブル22を格納する。コントローラ4は、NAND型フラッシュメモリ5へのアクセスを制御するNAND PHY131を含む。温度センサ15は、SSD3内の温度を計測する。コントローラ4(より詳しくはPHYパラメータ制御部123)は、SSD3が起動されたことに応じ、NAND型フラッシュメモリ5からDRAM6にPHYパラメータテーブル22をロードする。コントローラ4は、温度センサ15から第1温度を取得し、PHYパラメータテーブル22から第1温度に対応する第1パラメータセットを取得し、NAND PHY131に第1パラメータセットを設定する。
このように、第1温度に応じたPHYパラメータセットがPHYパラメータテーブル22から取得され、NAND PHY131に設定されるので、温度が変化した場合にもNAND型フラッシュメモリ5への高速アクセスを継続できる。
第1乃至第3実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実現する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。これら実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…情報処理システム、2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、10…バス、11…ホストインタフェース、12…CPU、121…リード制御部、122…ライト制御部、123…PHYパラメータ制御部、13…NANDインタフェース、131…NAND PHY、14…DRAMインタフェース、15…温度センサ、21…ファームウェア、22…PHYパラメータテーブル、23…LUT。

Claims (12)

  1. メモリシステムであって、
    不揮発性メモリと、
    前記不揮発性メモリへのアクセスを制御するインタフェース回路を含むコントローラと、
    前記メモリシステム内の温度を計測する温度センサと、を具備し、
    前記コントローラは、
    前記温度センサから第1温度を取得し、
    複数の温度にそれぞれ対応する複数のパラメータセットを含むパラメータ情報から前記第1温度に対応する第1パラメータセットを取得し、
    前記インタフェース回路に前記第1パラメータセットを設定するように構成されるメモリシステム。
  2. 前記パラメータ情報は、前記不揮発性メモリに格納される請求項1に記載のメモリシステム。
  3. ランダムアクセスメモリをさらに具備し、
    前記コントローラは、前記メモリシステムが起動されたことに応じ、前記ランダムアクセスメモリに前記パラメータ情報をロードするように構成される請求項2に記載のメモリシステム。
  4. 前記第1パラメータセットは、1つ以上のパラメータを含み、
    前記コントローラは、前記インタフェース回路に含まれる1つ以上のコンポーネントに、前記1つ以上のパラメータをそれぞれ設定するように構成される請求項1記載のメモリシステム。
  5. 前記コントローラはさらに、
    前記温度センサから、前記第1温度を取得した後に、第2温度を取得し、
    前記第2温度が前記第1温度と閾値以上異なる場合、前記パラメータ情報から前記第2温度に対応する第2パラメータセットを取得し、
    前記インタフェース回路に前記第2パラメータセットを設定するように構成される請求項1記載のメモリシステム。
  6. 前記コントローラはさらに、
    前記パラメータ情報に、前記第1温度に対応する前記第1パラメータセットが含まれている場合、前記第1パラメータセットを取得し、前記インタフェース回路に前記第1パラメータセットを設定し、
    前記パラメータ情報に、前記第1温度に対応するパラメータセットが含まれていない場合、前記インタフェース回路のためのキャリブレーションとトレーニングの少なくとも一方を行い、前記キャリブレーションと前記トレーニングの少なくとも一方を行った結果に基づく第3パラメータセットを、前記第1温度と関連付けて前記パラメータ情報に追加し、前記第3パラメータセットを前記インタフェース回路に設定するように構成される請求項1記載のメモリシステム。
  7. 前記コントローラは、さらに、
    前記メモリシステムがアイドル状態である場合、前記温度センサから第4温度を取得し、
    前記パラメータ情報に、前記第4温度に対応するパラメータセットが含まれていない場合、前記インタフェース回路のためのキャリブレーションとトレーニングの少なくとも一方を行い、前記キャリブレーションと前記トレーニングの少なくとも一方を行った結果に基づく第4パラメータセットを、前記第4温度と関連付けて前記パラメータ情報に追加し、前記第4パラメータセットを前記インタフェース回路に設定するように構成される請求項1記載のメモリシステム。
  8. 前記不揮発性メモリに格納された前記パラメータ情報は、複数の第5温度にそれぞれ対応する複数の実測パラメータセットを含み、
    前記コントローラはさらに、
    前記メモリシステムが起動されたことに応じ、前記不揮発性メモリから前記ランダムアクセスメモリに前記パラメータ情報をロードし、
    前記パラメータ情報を用いて、前記複数の第5温度とは異なる1つ以上の温度にそれぞれ対応する第1推測パラメータセットを含む1つ以上の推測パラメータセットを算出し、
    前記1つ以上の温度にそれぞれ関連付けて、前記1つ以上の推測パラメータセットを前記パラメータ情報に追加する請求項3記載のメモリシステム。
  9. 前記コントローラはさらに、前記第1推測パラメータセットの推測精度が第1閾値を超えている場合に、前記第1推測パラメータセットを前記パラメータ情報に追加する請求項8記載のメモリシステム。
  10. 前記コントローラはさらに、
    前記温度センサによって計測された第6温度を取得し、
    前記パラメータ情報に、前記第6温度に対応する実測パラメータセットが含まれている場合、前記パラメータ情報から前記第6温度に対応する実測パラメータセットを取得し、前記インタフェース回路に前記第6温度に対応する実測パラメータセットを設定し、
    前記パラメータ情報に、前記第6温度に対応する推測パラメータセットが含まれている場合、前記パラメータ情報から前記第6温度に対応する推測パラメータセットを取得し、前記インタフェース回路に前記第6温度に対応する推測パラメータセットを設定し、
    前記パラメータ情報に、前記第6温度に対応する実測パラメータセットと前記第6温度に対応する推測パラメータセットのいずれも含まれていない場合、前記インタフェース回路のためのキャリブレーションとトレーニングの少なくとも一方を行い、前記キャリブレーションと前記トレーニングの少なくとも一方を行った結果に基づく第6温度に対応する実測パラメータセットを、前記第6温度と関連付けて前記パラメータ情報に追加し、前記第6温度に対応する実測パラメータセットを前記インタフェース回路に設定するように構成される請求項8記載のメモリシステム。
  11. 前記コントローラはさらに、
    前記メモリシステムがアイドル状態である場合、前記温度センサによって計測された第7温度を取得し、
    前記パラメータ情報に、前記第7温度に対応する実測パラメータセットが含まれ、且つ前記第7温度に対応する実測パラメータセットが更新されてからの経過時間が第2閾値を超えている場合、前記インタフェース回路のためのキャリブレーションとトレーニングの少なくとも一方を行い、前記キャリブレーションと前記トレーニングの少なくとも一方を行った結果に基づくパラメータセットで、前記パラメータ情報内の前記第7温度に対応する実測パラメータセットを更新し、
    前記パラメータ情報に、前記第7温度に対応する推測パラメータセットが含まれている場合、前記インタフェース回路のためのキャリブレーションとトレーニングの少なくとも一方を行い、前記キャリブレーションと前記トレーニングの少なくとも一方を行った結果に基づくパラメータセットで、前記パラメータ情報内の前記第7温度に対応する推測パラメータセットを更新するように構成される請求項8記載のメモリシステム。
  12. 前記コントローラは、前記温度センサを含む請求項1記載のメモリシステム。
JP2019167658A 2019-09-13 2019-09-13 メモリシステム Active JP7332406B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019167658A JP7332406B2 (ja) 2019-09-13 2019-09-13 メモリシステム
US16/807,845 US11016663B2 (en) 2019-09-13 2020-03-03 Memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019167658A JP7332406B2 (ja) 2019-09-13 2019-09-13 メモリシステム

Publications (2)

Publication Number Publication Date
JP2021043907A true JP2021043907A (ja) 2021-03-18
JP7332406B2 JP7332406B2 (ja) 2023-08-23

Family

ID=74862440

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019167658A Active JP7332406B2 (ja) 2019-09-13 2019-09-13 メモリシステム

Country Status (2)

Country Link
US (1) US11016663B2 (ja)
JP (1) JP7332406B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023080624A1 (ko) * 2021-11-04 2023-05-11 삼성전자 주식회사 휘발성 메모리의 동작을 제어하는 전자 장치와 이의 동작 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11340831B2 (en) * 2020-08-28 2022-05-24 Micron Technology, Inc. Systems and methods for adaptive read training of three dimensional memory
KR20220049397A (ko) * 2020-10-14 2022-04-21 삼성전자주식회사 메모리 장치, 이를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
KR20220067282A (ko) * 2020-11-17 2022-05-24 삼성전자주식회사 스토리지 장치, 스토리지 장치를 포함하는 서버 장치 및 스토리지 장치의 구동 방법
US20230133234A1 (en) * 2021-11-04 2023-05-04 Samsung Electronics Co., Ltd. Electronic device controlling an operation of a volatile memory and method for operating the same

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004102389A1 (ja) * 2003-05-16 2004-11-25 Fujitsu Limited 初期設定装置、初期設定方法、初期設定プログラムおよび情報処理装置
JP2011059762A (ja) * 2009-09-07 2011-03-24 Ricoh Co Ltd メモリ制御システム及びメモリ制御方法
JP2011170516A (ja) * 2010-02-17 2011-09-01 Elpida Memory Inc メモリコントローラ、半導体記憶装置およびこれらを備えるメモリシステム
JP2014102741A (ja) * 2012-11-21 2014-06-05 Ricoh Co Ltd メモリコントローラ及びメモリコントローラのライトレベリング制御方法
JP2018173782A (ja) * 2017-03-31 2018-11-08 ルネサスエレクトロニクス株式会社 半導体装置およびタイミング較正方法
JP2019079520A (ja) * 2017-10-19 2019-05-23 三星電子株式会社Samsung Electronics Co.,Ltd. ストレージ装置及びストレージ装置の作動方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7817467B2 (en) 2007-09-07 2010-10-19 Micron Technology, Inc. Memory controller self-calibration for removing systemic influence
KR102373543B1 (ko) * 2015-04-08 2022-03-11 삼성전자주식회사 멀티칩 패키지에서 온도 편차를 이용하여 동작 제어하는 방법 및 장치
KR102389820B1 (ko) * 2015-09-22 2022-04-22 삼성전자주식회사 트레이닝 동작을 제어하는 메모리 컨트롤러, 메모리 시스템 및 그의 동작방법
KR102458918B1 (ko) * 2016-02-24 2022-10-25 삼성전자주식회사 메모리 장치 및 메모리 시스템
US9996281B2 (en) * 2016-03-04 2018-06-12 Western Digital Technologies, Inc. Temperature variation compensation
JP6171066B1 (ja) 2016-09-01 2017-07-26 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
KR102273191B1 (ko) 2017-09-08 2021-07-06 삼성전자주식회사 스토리지 장치 및 그것의 데이터 트레이닝 방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004102389A1 (ja) * 2003-05-16 2004-11-25 Fujitsu Limited 初期設定装置、初期設定方法、初期設定プログラムおよび情報処理装置
JP2011059762A (ja) * 2009-09-07 2011-03-24 Ricoh Co Ltd メモリ制御システム及びメモリ制御方法
JP2011170516A (ja) * 2010-02-17 2011-09-01 Elpida Memory Inc メモリコントローラ、半導体記憶装置およびこれらを備えるメモリシステム
JP2014102741A (ja) * 2012-11-21 2014-06-05 Ricoh Co Ltd メモリコントローラ及びメモリコントローラのライトレベリング制御方法
JP2018173782A (ja) * 2017-03-31 2018-11-08 ルネサスエレクトロニクス株式会社 半導体装置およびタイミング較正方法
JP2019079520A (ja) * 2017-10-19 2019-05-23 三星電子株式会社Samsung Electronics Co.,Ltd. ストレージ装置及びストレージ装置の作動方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023080624A1 (ko) * 2021-11-04 2023-05-11 삼성전자 주식회사 휘발성 메모리의 동작을 제어하는 전자 장치와 이의 동작 방법

Also Published As

Publication number Publication date
US11016663B2 (en) 2021-05-25
US20210081109A1 (en) 2021-03-18
JP7332406B2 (ja) 2023-08-23

Similar Documents

Publication Publication Date Title
JP7332406B2 (ja) メモリシステム
US10573389B2 (en) Storage device having parameter calibration function, and operating method thereof
US9652156B2 (en) Host read command return reordering based on time estimation of flash read command completion
AU2011203893B2 (en) Controlling and staggering operations to limit current spikes
US20200394135A1 (en) Trim setting determination on a memory device
US11853207B2 (en) Configurable trim settings on a memory device
TW202006530A (zh) 用於計數器更新操作之設備及方法
JP6640776B2 (ja) メモリシステム
EP3639637A1 (en) Adaptive throttling
CN111316365B (zh) 存储器装置的修整设置确定
JP2020046918A (ja) 記憶装置及び制御方法
JP2019530124A (ja) 不揮発性メモリのリフレッシュサイクルを制御する装置および方法
US11822401B1 (en) History-based prediction modeling of solid-state device temperature
KR20180081239A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20190087299A1 (en) Memory system and method
CN110083496B (zh) 非易失存储设备的掉电时间估计方法和装置
US11694728B2 (en) Storage device and operating method thereof
US11886335B2 (en) Memory system and controlling method of performing rewrite operation at maximum rewrite speed
US20230367377A1 (en) Solid-state device with multi-tier extreme thermal throttling
KR20240078010A (ko) 데이터 출력 시점을 조절하는 메모리 장치 및 그 동작방법
KR20240049864A (ko) 메모리 시스템 및 그 동작 방법
AU2014100558B4 (en) Controlling and staggering operations to limit current spikes
JP2013152677A (ja) 情報処理装置及びその起動制御方法
JP2018124725A (ja) メモリシステムおよび方法
JP2008217295A (ja) システムコントローラ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230131

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230418

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230612

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230810

R151 Written notification of patent or utility model registration

Ref document number: 7332406

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151