JP2019215662A - 不揮発性メモリデバイス、及びインターフェース設定方法 - Google Patents
不揮発性メモリデバイス、及びインターフェース設定方法 Download PDFInfo
- Publication number
- JP2019215662A JP2019215662A JP2018111929A JP2018111929A JP2019215662A JP 2019215662 A JP2019215662 A JP 2019215662A JP 2018111929 A JP2018111929 A JP 2018111929A JP 2018111929 A JP2018111929 A JP 2018111929A JP 2019215662 A JP2019215662 A JP 2019215662A
- Authority
- JP
- Japan
- Prior art keywords
- nonvolatile memory
- interface
- transfer rate
- value
- chip
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1048—Data bus control circuits, e.g. precharging, presetting, equalising
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1045—Read-write mode select circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/1063—Control signal output circuits, e.g. status or busy flags, feedback command signals
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】不揮発メモリコントローラと不揮発性メモリチップとの間のI/O処理に用いられるインターフェースにおけるパラメータを容易且つ適切に設定できるようにする。【解決手段】計算機システム1において、複数のFMチップ40と、FMチップとの間のI/O処理を実行するフラッシュI/Fを備えるFM−CTL30と、を有するFMD20において、FM−CTLは、複数のチャネルのそれぞれに対応してフラッシュI/Fが設けられており、FM−CTLを、DKC10とFM−CTLとの間の上位動作周波数を取得し、各チャネルのフラッシュI/FによるFMチップとの間の合計転送速度が、上位動作周波数に対応する上位転送速度と同じ又は上位転送速度に近い転送速度となるように、フラッシュI/Fの動作周波数を決定し、それぞれのフラッシュI/Fに対して決定した動作周波数の設定を行うように構成する。【選択図】図1
Description
本発明は、複数の不揮発性メモリチップと、前記不揮発性メモリチップとの間のデータのI/O処理を実行するインターフェースを備える不揮発性メモリコントローラと、を有する不揮発性メモリデバイス等に関する。
従来、複数の不揮発性メモリチップを備える不揮発メモリデバイスが知られている。不揮発性メモリチップとしては、例えば、NAND型のフラッシュメモリチップが知られている。
NAND型のフラッシュメモリチップとしては、多種の製品が存在しており、不揮発性メモリデバイスに、種類の異なるフラッシュメモリチップが搭載されることが考えられる。このような構成を想定すると、不揮発性メモリデバイス内のフラッシュメモリチップとのI/O処理を制御するフラッシュメモリコントローラと、フラッシュメモリチップとのそれぞれに設けられるインターフェース(フラッシュI/F)における各種パラメータを、フラッシュメモリチップの種類ごとに最適化する必要がある。
フラッシュI/Fにおける各種パラメータを最適化する場合には、例えば、フラッシュI/Fによる伝送波形をオシロスコープで評価して最適なパラメータを探索することが考えられる。
例えば、LSI間の伝送を行うI/Fのパラメータを最適化する方法として、複数の動作周波数帯ごとの電源電圧と設定パラメータとのテーブルを用意し、設定パラメータをテーブルから選択する技術が知られている(例えば、特許文献1参照)。
例えば、フラッシュI/Fによる伝送波形をオシロスコープで評価することによりパラメータを最適化する場合には、多くの工数を要することとなる。
また、使用されるフラッシュメモリチップが同一の種類のチップである場合においても、個体ごとのばらつきや、フラッシュメモリチップの実装位置等によって、フラシュメモリコントローラとの間の配線長や接続関係が異なり、必ずしも同じパラメータが最適であるとは限らない。このため、このような場合においても、フラッシュI/Fにおけるパラメータを最適化する必要がある。
また、不揮発性メモリデバイスを使用している状態等によっても、フラッシュI/Fにおけるパラメータの最適値が変化する場合もあり、このような場合においても、パラメータを最適化する必要がある。
本発明は、上記事情に鑑みなされたものであり、その目的は、不揮発メモリコントローラと不揮発性メモリチップとの間のI/O処理に用いられるインターフェースにおけるパラメータを容易且つ適切に設定することのできる技術を提供することにある。
上記目的を達成するため、一観点に係る不揮発性メモリデバイスは、複数の不揮発性メモリチップと、不揮発性メモリチップとの間のデータのI/O処理を実行するインターフェースを備える不揮発性メモリコントローラと、を有する不揮発性メモリデバイスであって、不揮発性メモリコントローラは、複数の不揮発性メモリチップと複数のチャネルを介して接続され、複数のチャネルのそれぞれに対応してインターフェースが設けられており、不揮発性メモリコントローラは、上位装置と不揮発性メモリコントローラとの間のデータ転送速度に関する上位転送速度情報を取得し、複数のチャネルに対応するそれぞれのインターフェースによる不揮発性メモリチップとの間の転送速度の合計である合計転送速度が、上位転送速度情報に対応する上位転送速度と同じ又は上位転送速度に近い転送速度となるように、インターフェースの転送速度に関する転送速度情報を決定し、それぞれのインターフェースに対して決定した転送速度情報に基づいて転送速度に関する設定を行う。
本発明によれば、不揮発メモリコントローラと不揮発性メモリチップとの間のI/O処理に用いられるインターフェースにおけるパラメータを容易且つ適切に設定することができる。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、「AAAテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「AAAテーブル」を「AAA情報」と呼ぶことができる。
また、以下の説明では、「RAID」は、Redundant Array of Independent (or Inexpensive) Disksの略である。
図1は、一実施形態に係る計算機システムの全体構成図である。
計算機システム1は、1以上のホスト(HOST)2と、1以上のストレージシステム3と、ホスト2とストレージシステム3とを接続するSAN(Storage Area Network)4とを備える。SAN4を別の種類の通信ネットワークとしてもよい。
ホスト2は、ストレージシステム3に対するI/O(入出力)要求、すなわち、ストレージシステム3に格納されているデータを読み出す読み出し要求(Read要求)や、ストレージシステム3にデータを書き込む書き込み要求(Write要求)をストレージシステム3に送信する。
ストレージシステム3は、1以上の上位装置の一例としてのディスクコントローラ(DKC)10と、1以上のFMD(フラッシュメモリデバイス)20とを有する。
FMD20は、ホスト2などからの書き込みデータを格納するための記憶デバイスであり、フラッシュメモリ等の不揮発性メモリを記憶媒体として採用した記憶デバイス(不揮発性メモリデバイス)である。
FMD20は、複数のFMチップ(フラッシュメモリチップ:不揮発性メモリチップ)40と、FM−CTL(フラッシュメモリコントローラ:不揮発性メモリコントローラ)30とを備える。FMD20の詳細な構成は後述する。FMD20は、例えば、SAS(Serial Attached SCSI)規格に従う伝送線(SASリンク)や、PCI(Peripheral Component Interconnect)規格に従う伝送線(PCIリンク)などによって、ディスクコントローラ10と接続されている。
ディスクコントローラ10は、ホスト2からのI/O要求を受信し、I/O要求に従ってI/O処理(FMD20からデータを読み出す読み出し処理や、FMD20にデータを書き込む書き込み処理)を実行する。なお、ディスクコントローラ10により、複数のFMD20により構成されるRAIDグループ(パリティグループ)を管理させ、RAIDグループに関連付けられたRAIDレベルに従って、RAIDグループに対する読み出し処理や、書き込み処理を実行させるようにしてもよい。
次に、FMD20について詳細に説明する。
図2は、一実施形態に係るフラッシュメモリデバイスの構成図である。
FMD20は、FM−CTL30と、複数のFMチップ40と、メインメモリ50と、ファームウェア用メモリ60とを備える。FM−CTL30は、メインメモリ50と、ファームウェア用メモリ60とに接続されている。また、FM−CTL30は、伝送路(バス:FM−BUS)70を介して、複数のFMチップ40と接続されている。本実施形態では、伝送路70は、複数のチャネル(図2では、例えば、4つ)を有しており、それぞれのチャネルに複数のFMチップ40が接続されている。各チャネルは、それぞれ独立してデータ転送を行うことができる。
FM−CTL30は、メインメモリ50に記憶されているプログラムを実行することにより、各種処理を実行する。例えば、FM−CTL30は、FMチップ40との間のデータのI/O処理を制御する。また、FM−CLT30は、自身とFMチップ40との間の通信を実行するインターフェース(フラッシュI/F32,42)のパラメータの設定を更新するパラメータ更新処理等を実行する。
FMチップ40は、例えば、NAND型フラッシュメモリ等の不揮発性半導体メモリチップである。FMチップ40としては、例えば、QLC方式のFMチップや、TLC方式のFMチップや、SLC(Single Level Cell)方式のFMチップなどがある。
メインメモリ50は、例えば、DRAM、SRAM等の揮発性記憶媒体で構成されてもよく、不揮発性メモリで構成されてもよい。メインメモリ50は、FM−CTL30で実行されるプログラムや必要な情報を記憶する。
ファームウェア用メモリ60は、例えば、フラッシュメモリ等の不揮発性メモリであり、FM−CTL30で実行されるプログラムや、各種テーブル等を記憶する。ファームウェア用メモリ60に対しては、FMD20の外部の装置から(FM−CTL30を介して、又は、FM−CTL30を介さずに)プログラムやテーブル等を格納させることができる。
ファームウェア用メモリ60は、更新条件テーブル61と、電圧値テーブル62と、設定値テーブル63と、設定管理テーブル64と、コマンド別タイミングテーブル65とを記憶する。各テーブルの構成については後述する。ファームウェア用メモリ60は、更新情報記憶部の一例である。
次に、FM−CTL30とFMチップ40との間のデータの伝送に関わる構成について説明する。
図3は、一実施形態に係るFM−CTLとFMチップとのデータの伝送に関わる構成を説明する図である。
FM−CTL30は、プロセッサの一例としてのCPU31と、1以上のフラッシュインターフェース(フラッシュI/F:Flash I/F)32と、電圧モニタユニット35と、I/Oエラーモニタユニット36と、温度モニタユニット37とを備える。
CPU31は、メインメモリ50に格納されたプログラムを実行することにより各種処理を実行する。CPU31は、FMチップ40との間のデータのI/O処理を制御する。また、CPU31は、FM−CTL30と各FMチップ40との間の通信を実行するインターフェース(フラッシュI/F32,42)のパラメータを更新するパラメータ更新処理等を実行する。
各フラッシュI/F32は、伝送路70におけるそれぞれのチャネルに対応付けられて備えられており、I/O制御ユニット33と、コマンド制御ユニット34とを備える。I/O制御ユニット33は、対応するチャネルに接続されている複数のFMチップ40との間のデータのI/O処理を制御する。コマンド制御ユニット34は、対応するチャネルに接続されているFMチップ40に対するコマンドの送受信を制御する。
電圧モニタユニット35は、各フラッシュI/F32とFMチップ40との間の信号線の電圧を測定し、測定結果をCPU31に通知する。I/Oエラーモニタユニット36は、FMチップ40から送信されるデータについてのI/Oエラーを監視し、監視結果をCPU31に通知する。I/Oエラーモニタユニット36は、CPU31が所定のプログラムを実行することにより構成される機能部としてもよい。温度モニタユニット37は、FM−CTL30の温度、FMD20への吸気温度、FMD20からの排気温度等を検出し、検出結果をCPU31に通知する。なお、電圧モニタユニット35、I/Oエラーモニタユニット36、及び温度モニタユニット37の少なくとも一つをFM−CTL30の外部に備えてもよい。
FMチップ40は、制御ユニット41と、フラッシュインターフェース(フラッシュI/F)42と、電圧モニタユニット45と、I/Oエラーモニタユニット46と、温度モニタユニット47とを備える。
制御ユニット41は、各種処理を実行する。
フラッシュI/F42は、I/O制御ユニット43と、コマンド制御ユニット44とを備える。I/O制御ユニット43は、FM−CTL30のフラッシュI/F32との間でデータのI/O処理を制御する。コマンド制御ユニット44は、FM−CTL30との間のコマンドの送受信を制御する。
電圧モニタユニット45は、FM−CTL30とFMチップ40との間の信号線の電圧を測定し、測定結果をFM−CTL30のCPU31に通知する。I/Oエラーモニタユニット46は、FM−CTL30から送信されるデータについてのI/Oエラーを監視し、監視結果をFM−CTL30のCPU31に通知する。I/Oエラーモニタユニット46は、制御ユニット41が所定のプログラムを実行することにより構成される機能部としてもよい。温度モニタユニット47は、FMチップ40の温度等を検出し、検出結果をFM−CTL30のCPU31に通知する。電圧モニタユニット45、I/Oエラーモニタユニット46、及び温度モニタユニット47の少なくとも一つをFMチップ40の外部に備えてもよい。
次に、FM−CTL30とFMチップ40との伝送路の信号電圧に関わる構成について説明する。
図4は、一実施形態に係るFM−CTLとFMチップとの伝送路の信号電圧に関わる構成を説明する図である。
FM−CTL30には、図示しない電源から電力が供給されている。FM−CTL30の各フラッシュI/F32においては、伝送路70の信号線70aとプラス側電源Vddとの間に、抵抗32aとスイッチ(SW)32bとの組が1以上配置されているとともに、信号線70aとマイナス側電源Vssとの間に、抵抗32cとスイッチ(SW)32dとの組が1以上配置されている。なお、図4では、伝送路70の1つの信号線70aに関わる構成を図示しているが、伝送路70の他の信号線に関わる構成についても同様となっている。
このような構成において、スイッチ32bの開閉を制御して、信号線70aと、プラス側電源との間の抵抗値を制御することにより、フラッシュI/F32から信号を送信する際の信号の電圧(出力電圧)を調整することができる。また、スイッチ32dの開閉を制御して、信号線70aと、マイナス側電源との間の抵抗値を制御することにより、FMチップ40のフラッシュI/F42から信号を受信する際の終端抵抗値を調整することができる。
FMチップ40には、図示しない電源から電力が供給されている。FMチップ40の各フラッシュI/F42においては、伝送路70の信号線70aとプラス側電源Vddとの間に、抵抗42aとスイッチ(SW)42bとの組が1以上配置されているとともに、信号線70aとマイナス側電源Vssとの間に、抵抗42cとスイッチ(SW)42dとの組が1以上配置されている。
このような構成において、スイッチ42bの開閉を制御して、信号線70aと、プラス側電源Vddとの間の抵抗値を制御することにより、フラッシュI/F42から信号を送信する際の信号の電圧(出力電圧)を調整することができる。また、スイッチ42dの開閉を制御して、信号線70aと、マイナス側電源Vssとの間の抵抗値を制御することにより、FM−CTL30のフラッシュI/F32から信号を受信する際の終端抵抗値を調整することができる。
なお、上記構成においては、スイッチ32b、スイッチ32d、スイッチ42b、スイッチ42d等の開閉を制御することにより、信号線70aに接続される抵抗値を調整するようにしているが、例えば、スイッチ及び抵抗の組に代えて可変抵抗器を備えるようにしてもよい。
次に、ファームウェア用メモリ60に格納されている各種テーブルについて説明する。
図5は、一実施形態に係る更新条件テーブルの構成図である。
更新情報テーブル61は、フラッシュI/F32,42のパラメータを更新するパラメータ更新処理を実行する条件(更新条件)に対応するエントリを管理する。更新情報テーブル61のエントリは、条件61aと、内容61bと、基準(前回値)61cと、誤差61dとのフィールドを含む。
条件61aには、エントリに対応する条件の名称が格納される。内容61bには、エントリに対応する条件の内容が格納される。基準(前回値)61cには、エントリに対応する条件における基準、又は前回値(前回のパラメータ更新処理の実行時の値)が格納される。誤差61dには、条件の内容が所定の値との不一致である場合において、不一致として判断されない誤差の範囲が格納される。
更新情報テーブル61のエントリ611は、FM−CTL30の温度変化の条件に対応し、FM−CTL30の温度が前回値と不一致、すなわち、前回値(図5の例では、70℃)に対して±0.5℃(誤差)の範囲を外れた場合に、パラメータ更新処理を実行することを示し、エントリ612は、FMD20の吸気温度の温度変化の条件に対応し、FMD20の吸気温度が前回値と不一致、すなわち、前回値(図5の例では、25℃)に対して±0.5℃(誤差)の範囲を外れた場合に、パラメータ更新処理を実行することを示し、エントリ613は、FMD20の排気温度の温度変化の条件に対応し、FMD20の排気温度が前回値と不一致、すなわち、前回値(図5の例では、50℃)に対して±0.5℃(誤差)の範囲を外れた場合に、パラメータ更新処理を実行することを示し、エントリ614は、フラッシュI/Fの電圧変化の条件に対応し、フラッシュI/F32,42による読取電圧(読み取る信号の電圧)が前回値と不一致、すなわち、前回値(図5の例では、1.80V)に対して±0.02V(誤差)の範囲を外れた場合に、パラメータ更新処理を実行することを示す。
また、エントリ615は、FMチップ40の温度変化の条件に対応し、複数のFMチップ40の平均温度が前回値と不一致、すなわち、前回値(図5の例では、30℃)に対して±0.5℃(誤差)の範囲を外れた場合に、パラメータ更新処理を実行することを示し、エントリ616は、I/Oエラーの条件に対応し、FMチップ40との間のI/O処理でのI/Oエラーが基準(図5の例では、5回/1時間)以上発生した場合に、パラメータ更新処理を実行することを示し、エントリ617は、FMD20の起動時間の条件に対応し、FMD20における前回のパラメータ更新処理からの経過時間が基準(図5の例では、30分)以上経過した場合に、パラメータ更新処理を実行することを示し、エントリ618は、FMD20の初回起動の条件に対応し、FMD20の電源がオン(ON)されてから1回目(まだ、パラメータ更新処理を実行していない)の場合に、パラメータ更新処理を実行することを示す。なお、更新条件は、図5の例に限られず、他の条件としてもよい。例えば、エントリ615では、複数のFMチップ40の平均温度の前回値との不一致としていたが、複数のFMチップ40の中の特定のFMチップ40の温度の前回値との不一致としてもよく、また、複数のFMチップ40の最高温度の前回値との不一致としてもよい。
次に、電圧値テーブル62について説明する。
図6は、一実施形態に係る電圧値テーブルの構成図である。
電圧値テーブル62は、フラッシュI/Fにおける信号の電圧値に関するエントリを格納する。電圧値テーブル62のエントリは、変数(Parameter)62aと、記号(Symnbol)62bと、最小値(Min)62cと、基準値(Typ)62dと、最大値(Max)62eと、単位(Unit)62fと、を含む。
変数62aには、エントリに対応する電圧値の変数の種類が格納される。本実施形態では、電圧値の変数としては、例えば、入力信号のHigh側(高電位側)の電圧(入力高電位電圧:Input high voltage)、入力信号のLow側(低電位側)の電位(入力低電位電圧:Input low voltage)等がある。記号62bは、エントリに対応する変数を示す記号が格納される。最小値62cには、エントリに対応する変数の基準値の最小値が格納される。基準値62dには、エントリに対応する変数の基準値が格納される。最大値62eには、エントリに対応する変数の基準値の最大値が格納される。単位62fには、エントリに対応する変数の単位が格納される。
次に、コマンド別タイミングテーブル65について説明する。
図7は、一実施形態に係るコマンド別タイミングテーブルの構成図である。
コマンド別タイミングテーブル65は、フラッシュI/F32が出力する制御コマンド毎のエントリを格納する。コマンド別タイミングテーブル65のエントリは、コマンド(Command)65aと、最小値(Min)65bと、最大値(Max)65cと、単位(Unit)65dとのフィールドを含む。コマンド65aには、制御コマンドの名称が格納される。最小値65bには、エントリに対応する制御コマンドとして必要な最小値(ここでは、図7の例では、最小時間)が格納される。最大値65cには、エントリに対応する制御コマンドとしての最大値が格納される。単位65dには、エントリに対応する制御コマンドの最小値65b及び最大値65cの値の単位が格納される。
ここで、制御コマンドの信号について説明する。
図8は、一実施形態に係る制御コマンドの信号構成と、タイミングとを示す図である。図8は、制御コマンドの中のコマンドラッチ(Command Latch)を例に示している。
コマンドラッチは、CLE(Command Latch Enable)信号と、WE(Write Enable)信号とで表現される。コマンドラッチは、CLE信号をセットアップする時間(tCLS: CLE Setup Time)と、CLE信号を維持する時間(tCLH: CLE Hold Time)とで構成される。コマンドラッチに必要な時間は、tCLSと、tCLHとを加算した時間となる。
次に、設定値テーブル63について説明する。
図9は、一実施形態に係る設定値テーブルの構成図である。
設定値テーブル63は、フラッシュI/F32において設定可能な各種パラメータについての設定を管理するテーブルである。なお、フラッシュI/F32のそれぞれに対して、それぞれ別の設定値テーブル63を備えるようにしてもよく、共通の1つを備えるようにしてもよい。本実施形態においては、各FMチップ40のフラッシュI/F42についての設定値テーブル63と同様な設定値テーブルが、FMチップ40内のメモリ、レジスタ等に格納されている。
設定値テーブル63のエントリは、設定番号(設定#)63aと、変数(Parameter)63bと、記号(Symbol)63cと、設定値63dと、単位(Unit)63eとのフィールドを含む。
設定番号63aは、エントリに対応する設定を示す番号(設定番号)が格納される。変数63bには、エントリに対応するパラメータの種類名が格納される。パラメータの種類としては、フラッシュI/F32における動作周波数(転送速度(転送レート)に対応、転送速度情報の一例)を示す「周波数」、出力(送信)する場合におけるプラス電位Vdd側の抵抗値を示す「出力抵抗」、入力(受信)する場合におけるマイナス電位Vss側の抵抗値を示す「入力抵抗」等がある。記号63cには、エントリに対応するパラメータを示す記号が格納される。記号63cには、パラメータの種類が「周波数」の場合には、「F」が設定され、「出力抵抗」の場合には、「Ron」が設定され、「入力抵抗」の場合には、「Rodt」が設定される。設定値63dには、エントリに対応する設定におけるパラメータの設定値が格納される。単位63eには、エントリに対応する設定値63dの設定値についての単位が格納される。単位63eに格納される単位としては、例えば、エントリが周波数に対応するエントリである場合には、「MHz」が設定され、出力抵抗又は入力抵抗に対応するエントリである場合には、「Ω」が設定される。
次に、設定管理テーブル64について説明する。
図10は、一実施形態に係る設定管理テーブルの構成図である。
設定管理テーブル64は、フラッシュI/F32のパラメータの現在の設定を管理するテーブルである。設定管理テーブル64は、各フラッシュI/F32毎に少なくとも一つ備えられている。例えば、各フラッシュI/F32について、設定管理テーブル64をI/O対象となるFMチップ40毎に備えるようにしてもよい。すなわち、I/O対象とするFMチップ40毎に異なるパラメータの設定を管理できるようにしてもよい。
設定管理テーブル64のエントリは、周波数64aと、出力抵抗64bと、入力抵抗64cとのフィールドを含む。周波数64aには、フラッシュI/F32の動作周波数として設定すべき設定値が格納されている設定値テーブル63のエントリの設定番号が格納される。なお、動作周波数と、転送レートとは、対応しているので、動作周波数の設定値は、転送レートの設定値ということもできる。出力抵抗64bには、フラッシュI/F32の出力抵抗として設定すべき設定値が格納されている設定値テーブル63のエントリの設定番号が格納される。入力抵抗64cには、フラッシュI/F32の入力抵抗として設定すべき設定値が格納されている設定値テーブル63のエントリの設定番号が格納される。
なお、各FMチップ40においては、フラッシュI/F42のパラメータの現在の設定を管理する設定管理テーブル64と同様な構造の設定管理テーブルがメモリ又はレジスタに格納されている。
次に、本実施形態に係る計算機システム1による処理動作について説明する。
まず、パラメータ更新処理について説明する。
図11は、一実施形態に係るパラメータ更新処理のフローチャートである。
パラメータ更新処理は、例えば、FMD20を起動させた直後に実行される。まず、FM−CTL30のCPU31は、更新条件テーブル61を参照し、現在の状態がパラメータの更新条件に該当するか否かを判定する(ステップS10)。この結果、更新条件に該当する場合(S11:yes)には、CPU31は、トレーニング処理(図12参照)を実行し(ステップS11)、処理をステップS10に進める。一方、更新条件に該当しない場合(S10:no)には、CPU31は、処理をステップS10に進める。このパラメータ更新処理によると、更新条件テーブル61に管理されている更新条件に該当する場合に、適切にトレーニング処理が実行され、FM−CTL30とFMチップ40とのフラッシュIF32,42が使用する各種パラメータを適切な値に設定することができる。
次に、トレーニング処理(S11)について詳細に説明する。
図12は、一実施形態に係るトレーニング処理のシーケンス図である。
トレーニング処理においては、FM−CTL30のCPU31は、まず、FM−CTL30と、FM−CTL30と、FMチップ40との間の各チャネルにおける周波数(転送レートに対応)を決定する周波数トレーニング処理(図13参照)を実行する(S21)。
次いで、CPU31は、FM−CTL30と、各FMチップ40とのフラッシュI/Fにおける制御コマンドのタイミングを決定するコマンドタイミングトレーニング処理(図14参照)を実行する(S22)。
次いで、CPU31は、FM−CTL30と、各FMチップ40とのフラッシュI/F32,42における、FM−CTL30からFMチップ40への送信に関する電圧値トレーニング処理(図15参照)を実行する(S23)。
次いで、CPU31は、各FMチップ40とFM−CTL30とのフラッシュI/F32,42における、FMチップ40からFM−CTL30への送信に関する電圧値トレーニング処理(図16参照)を実行し(S24)、トレーニング処理を終了する。
このトレーニング処理によると、FM−CTL30とFMチップ40との間の各チャネルにおける周波数、制御コマンドのタイミング、FM−CTL30からFMチップ40への送信に関する電圧値、FMチップ40からFM−CTL30への送信に関する電圧値を適切な値に設定することができる。
次に、周波数トレーニング処理(S21)について説明する。
図13は、一実施形態に係る周波数トレーニング処理のフローチャートである。
FM−CTL30のCPU31は、上位I/F(すなわち、DKC10との間のインターフェース)における動作周波数(転送レート:上位I/F周波数:上位転送速度情報)を取得する(S31)。ここで、上位I/F周波数を取得する方法としては、CPU31がDKC10に対して問い合わせして取得するようにしてもよく、DKC10によりFM−CTL30内に設定されている上位I/F周波数を取得するようにしてもよい。
次いで、CPU31は、DKC10から新たな上位I/F周波数の指定(例えば、DKC10に対する管理者による入力に基づく上位I/F周波数の指定)があるか否かを判定する(S32)。この結果、上位I/F周波数の指定がある場合(S32:yes)には、CPU31は、FM−CTL30におけるDKC10との間の上位I/F周波数を指定された周波数に切り替える設定を行う(S33)。
上位I/F周波数の指定がない場合(S32:no)、又はステップS33で指定された周波数に上位I/F周波数を変更した場合には、CPU31は、上位I/F周波数に基づいて、各フラッシュI/F32,42との動作周波数を決定し、設定管理テーブル64に登録するとともに、各フラッシュI/F32,42を決定した動作周波数で動作するように設定する(S34)。なお、CPU31は、設定値テーブル63のエントリ(変数63bが「周波数」であるエントリ)を参照してフラッシュI/F32(42)が動作可能な動作周波数(転送速度情報)を特定し、それら周波数の中から動作周波数を決定する。
動作周波数の決定においては、具体的には、CPU31は、伝送路(FM−BUS)70の各チャネル用の複数のフラッシュI/F32の動作周波数に基づく転送レートの合計値(合計転送速度)が、上位I/F周波数に基づく転送レート(上位転送速度)と同じとなるか、若しくは、上位転送速度に近い値となるように、フラッシュI/F32の動作周波数(転送速度情報)を決定する。
より具体的には、例えば、CPU31は、以下の式(1)を満たし、且つ、各チャネル用の複数のフラッシュI/F32の合計転送速度が最大となるように、フラッシュI/F32の動作周波数を決定する。なお、式(1)では、各フラッシュI/F32の動作周波数を同一とすることを条件としている場合の例を示している。なお、各フラッシュI/F32の動作周波数を同一とすることを条件としなくてもよく、この場合には、式(1)の右辺は、複数のチャネルに接続される複数のフラッシュI/F32の合計転送レートとなる。
X(Mbps)≧Y(Mbps)*n ・・・(1)
ここで、Xは、上位I/F周波数に対応する転送レート(上位転送速度)であり、Yは、1つのフラッシュI/F32,42の動作周波数に対応する転送レートであり、nは、伝送路70におけるチャネル数、すなわち、FM−CTL30が並行してI/O処理を実行することのできるFMチップ40の最大数である。
ここで、Xは、上位I/F周波数に対応する転送レート(上位転送速度)であり、Yは、1つのフラッシュI/F32,42の動作周波数に対応する転送レートであり、nは、伝送路70におけるチャネル数、すなわち、FM−CTL30が並行してI/O処理を実行することのできるFMチップ40の最大数である。
上記した周波数トレーニング処理によると、各フラッシュI/F32の動作周波数を、上位I/F周波数に基づいて適切な値、すなわち、効率よくデータを転送できる周波数に設定することができる。
次に、コマンドタイミングトレーニング処理(S22)について説明する。
図14は、一実施形態に係るコマンドタイミングトレーニング処理のフローチャートである。なお、コマンドタイミングトレーニング処理は、伝送路70の各チャネルを担当する各フラッシュI/F32のそれぞれについて、担当するチャネルに接続された少なくとも一つのFMチップ40に対するコマンドタイミングを対象として実行される。ここで、チャネルの一部のFMチップ40に対するコマンドタイミングのみをトレーニングする場合には、このトレーニングにより得られたコマンドタイミングを、同一のチャネルに接続された他のFMチップ40に対するコマンドタイミングとすればよい。
FM−CTL30のCPU31は、処理対象のフラッシュI/F32に対して、コマンド別タイミングテーブル65の1つのコマンド(制御コマンド)を、担当するチャネルに接続されたFMチップ40のフラッシュI/F42に発行するように指示する(S41)。
次いで、指示を受けたフラッシュI/F32は、指定されたコマンドを、コマンド別タイミングテーブル65の指定されたコマンドに対応するエントリのタイミング(例えば、コマンドの最小値(最小時間))に従ってFMチップ40のフラッシュI/F42に発行する(S42)。これに対して、FMチップ40のフラッシュI/F42は、自身が認識したコマンドに応じた値を発行元のフラッシュI/F32に返答する。
次いで、フラッシュI/F32は、コマンドの発行先のフラッシュI/F42から返答されたコマンドに応じた値を受信し(S43)、CPU31は、発行したコマンドと、受信したコマンドの値とが一致するか否かを判定する(S44)。
この結果、発行したコマンドと、受信したコマンドの値とが一致すると判定した場合(S44:yes)には、このタイミングによってコマンドを適切に送信できることを意味するので、CPU31は、コマンド別タイミングテーブル65の指定されたコマンドに対応するエントリのタイミングを時間が短くなるように(例えば、所定時間だけ短くなるように)更新し(S45)、処理をステップS42に進める。なお、CPU31は、更新前のタイミングの値については、メインメモリ50等に一時的に保持しておく。
一方、この結果、発行したコマンドと、受信したコマンドの値とが一致しないと判定した場合(S44:no)には、このタイミングではコマンドを適切に送信できないことを意味しているので、CPU31は、コマンド別タイミングテーブル65の指定されたコマンドに対応するエントリのタイミングを、前回の値(すなわち、メインメモリ50等に一時的に保持している値)に戻し(S46)、処理をステップS47に進める。
ステップS47では、CPU31は、コマンド別タイミングテーブル65の全てのコマンドを対象にトレーニング(S42〜S46の処理)が完了したか否かを判定する。この結果、全てのコマンドを対象にトレーニングが完了していない場合(S47:no)には、CPU31は、処理対象のフラッシュI/F32に対して、トレーニングをしていない別のコマンドを発行するように指示し(S48)、処理をS42に進める。一方、全てのコマンドを対象にトレーニングが完了している場合(S47:yes)には、CPU31は、処理対象のフラッシュI/F32に対するコマンドタイミングトレーニング処理を終了する。
なお、上記したコマンドタイミングトレーニング処理を、伝送路70の各チャネルに接続された全てのFMチップ40に対して実行するようにしてもよい。なお、この場合には、各FMチップ40のそれぞれに対応させてコマンド別タイミングテーブル65を記憶しておくようにしてもよいし、全てのFMチップ40に対するコマンドタイミングに基づいて、同一のチャネルで共通に使用するコマンドタイミング(例えば、複数のコマンドタイミングの平均値等)を決定し、コマンド別タイミングテーブル65にそのコマンドタイミングを設定するようにしてもよい。
上記したコマンドタイミングトレーニング処理によると、各フラッシュI/F32と、フラッシュI/F42との間でのコマンド発行時における適切なタイミングを特定し、設定することができる。
次に、FM−CTL30からFMチップ40への送信に関する電圧値トレーニング処理(S23)について説明する。
図15は、一実施形態に係るFM−CTLからFMチップへの送信に関する電圧値トレーニング処理のフローチャートである。
このFM−CTL30からFMチップ40への送信に関する電圧値トレーニング処理は、伝送路70の各チャネルを担当する各フラッシュI/F32のそれぞれについて、担当するチャネルに接続された少なくとも一つのFMチップ40に対する送信時の電圧値の設定(具体的には、使用する抵抗値の設定)をするために実行される。なお、担当するチャネルに接続されたすべてのFMチップ40について、電圧値トレーニング処理を実行してもよい。また、チャネルの一部のFMチップ40に対して電圧値トレーニング処理を実行する場合には、このトレーニングにより得られた電圧値の設定を、同一のチャネルに接続された他のFMチップ40に対する送信時の電圧値の設定としてもよい。
まず、CPU31は、FMチップ40に、フラッシュI/F32により所定の波形を送信し(S51)、フラッシュI/F42に入力される波形の電圧値(入力電圧値)をFMチップ40から取得する(S52)。この入力電圧値は、FMチップ40の電圧値モニタユニット45から取得することができる。
次いで、CPU31は、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態(例えば、基準値の±5%の範囲)にあるか否かを判定する(S53)。具体的には、CPU31は、最大電位については、電圧値テーブル62の変数62aが入力高電位電圧のエントリにおける基準値62dの基準値に対して適切な状態にあるか否かを判定し、最小電位については、電圧値テーブル62の変数62aが入力低電位電圧のエントリにおける基準値62dの基準値に対して適切な状態にあるか否かを判定する。
この結果、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態にあると判定した場合(S53:yes)には、その時点の抵抗値の設定が適切であることを意味しているので、FM−CTL30からFMチップ40への送信に関する電圧値トレーニング処理を終了する。
一方、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態にないと判定した場合(S53:no)には、その時点の抵抗値の設定が適切でないことを意味しているので、CPU31は、フラッシュI/F32の出力側(信号線よりもプラス側電源Vdd側の抵抗値(内部出力抵抗値)を変更し、設定管理テーブル64に出力抵抗の設定番号を登録する(S54)。ここで、CPU31は、入力電圧値の最大電圧値が基準値よりも高い場合には、抵抗値を大きくするように変更し、入力電圧値の最大電圧値が基準値よりも低い場合には、抵抗値を小さくするように変更する。この内部出力抵抗値は、フラッシュI/F32のスイッチ32bの開閉を変更する等により変更することができる。なお、内部出力抵抗値として変更できる候補が複数ある場合には、S54からS57までの処理をそれぞれの候補を対象に実行するようにしてもよい。
次いで、CPU31は、FMチップ40に、フラッシュI/F32により所定の波形を送信し(S55)、フラッシュI/F42に入力される波形の電圧値(入力電圧値)をFMチップ40から取得する(S56)。
次いで、CPU31は、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態(例えば、基準値の±5%の範囲)にあるか否かを判定し(S57)、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態にあると判定した場合(S57:yes)には、その時点の抵抗値の設定が適切であることを意味しているので、FM−CTL30からFMチップ40への送信に関する電圧値トレーニング処理を終了する。
一方、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態にないと判定した場合(S57:no)には、その時点の抵抗値の設定が適切でないことを意味しているので、CPU31は、FMチップ40に対して、フラッシュI/F42の入力側(信号線よりもマイナス側電源Vss側の抵抗値(内部入力抵抗値)を変更する指示を送信する(S58)。ここで、CPU31は、入力電圧値の最小電圧値が基準値よりも高い場合には、抵抗値を大きくするように変更し、入力電圧値の最小電圧値が基準値よりも低い場合には、抵抗値を小さくするように変更する指示を送信する。なお、内部入力抵抗値として変更できる候補が複数ある場合には、S58からS61までの処理をそれぞれの候補を対象に実行するようにしてもよい。この抵抗値を変更する変更指示を受けると、FMチップ40では、フラッシュI/F42のスイッチ42dの開閉を変更する等により、内部入力抵抗値を変更し、FMチップ40内の設定管理テーブルに入力抵抗の設定番号を登録する。
次いで、CPU31は、FMチップ40に、フラッシュI/F32により所定の波形を送信し(S59)、フラッシュI/F42に入力される波形の電圧値(入力電圧値)をFMチップ40から取得する(S60)。
次いで、CPU31は、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態(例えば、基準値の±5%の範囲)にあるか否かを判定し(S61)、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態にあると判定した場合(S61:yes)には、その時点の抵抗値の設定が適切であることを意味しているので、FM−CTL30からFMチップ40への送信に関する電圧値トレーニング処理を終了する。
一方、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態にないと判定した場合(S61:no)には、その時点の抵抗値の設定が適切でないことを意味しているので、CPU31は、電圧値テーブル62の入力電圧値に関する基準値を、基準値の最大値及び最小値の範囲で変更し、処理をステップS51に進める(S62)。
上記したFM−CTLからFMチップへの送信に関する電圧値トレーニング処理によると、FM−CTL30からFMチップ40に信号を送信する際における信号の電圧値を適切な値に設定することができる。
次に、FMチップからFM−CTLへの送信に関する電圧値トレーニング処理(S24)について説明する。
図16は、一実施形態に係るFMチップからFM−CTLへの送信に関する電圧値トレーニング処理のフローチャートである。
このFMチップ40からFM−CTL30への送信に関する電圧値トレーニング処理は、伝送路70の各チャネルを担当する各フラッシュI/F32のそれぞれについて、担当するチャネルに接続された少なくとも一つのFMチップ40からの受信時の電圧値の設定(具体的には、使用する抵抗値の設定)をするために実行される。なお、担当するチャネルに接続されたすべてのFMチップ40について、電圧値トレーニング処理を実行してもよい。また、チャネルの一部のFMチップ40に対して電圧値トレーニング処理を実行する場合には、このトレーニングにより得られた電圧値の設定を、同一のチャネルに接続された他のFMチップ40からの受信時の電圧値の設定としてもよい。
まず、CPU31は、FMチップ40に、FM−CTL30に対して所定の波形を送信する指示を行う(S71)。この指示を受け取ったFMチップ40は、フラッシュI/F42から所定の波形を送信することとなる。CPU31は、フラッシュI/F42からフラッシュI/F32に入力される波形の電圧値(入力電圧値)を電圧モニタユニット35から取得する(S72)。
次いで、CPU31は、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態(例えば、基準値の±5%の範囲)にあるか否かを判定する(S73)。具体的には、CPU31は、最大電位については、電圧値テーブル62の変数62aが入力高電位電圧のエントリにおける基準値62dの基準値に対して適切な状態にあるか否かを判定し、最小電位については、電圧値テーブル62の変数62aが入力低電位電圧のエントリにおける基準値62dの基準値に対して適切な状態にあるか否かを判定する。
この結果、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態にあると判定した場合(S73:yes)には、その時点の抵抗値の設定が適切であることを意味しているので、FMチップ40からFM−CTL30への送信に関する電圧値トレーニング処理を終了する。
一方、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態にないと判定した場合(S73:no)には、その時点の抵抗値の設定が適切でないことを意味しているので、CPU31は、フラッシュI/F42の出力側(信号線70aよりもプラス側電源Vdd側の抵抗値(内部出力抵抗値)を変更する指示をFMチップ40に送信する(S74)。ここで、CPU31は、入力電圧値の最大電圧値が基準値よりも高い場合には、抵抗値を大きくするように変更し、入力電圧値の最大電圧値が基準値よりも低い場合には、抵抗値を小さくするように変更する指示を送信する。この抵抗値を変更する変更指示を受けると、FMチップ40では、フラッシュI/F42のスイッチ42bの開閉を変更する等により、内部出力抵抗値を変更し、FMチップ40内の設定管理テーブルに出力抵抗の設定番号を登録する。なお、内部出力抵抗値として変更できる候補が複数ある場合には、S74からS77までの処理をそれぞれの候補を対象に実行するようにしてもよい。
次いで、CPU31は、FMチップ40に、FM−CTL30に対して所定の波形を送信する指示を行う(S75)。次いで、CPU31は、フラッシュI/F42からフラッシュI/F32に入力される波形の電圧値(入力電圧値)を電圧モニタユニット35から取得する(S76)。
次いで、CPU31は、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態(例えば、基準値の±5%の範囲)にあるか否かを判定し(S77)、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態にあると判定した場合(S77:yes)には、その時点の抵抗値の設定が適切であることを意味しているので、FMチップ40からFM−CTL30への送信に関する電圧値トレーニング処理を終了する。
一方、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態にないと判定した場合(S77:no)には、その時点の抵抗値の設定が適切でないことを意味しているので、CPU31は、フラッシュI/F32の入力側(信号線よりもマイナス側電源Vss側)の抵抗値(内部入力抵抗値)を変更し、設定管理テーブル64に入力抵抗の設定番号を登録する(S78)。ここで、CPU31は、入力電圧値の最大電圧値が基準値よりも高い場合には、抵抗値を大きくするように変更し、入力電圧値の最大電圧値が基準値よりも低い場合には、抵抗値を小さくするように変更する。この内部入力抵抗値は、フラッシュI/F32のスイッチ32dの開閉を変更する等により変更することができる。
次いで、CPU31は、FMチップ40に、FM−CTL30に対して所定の波形を送信する指示を行う(S79)。次いで、CPU31は、フラッシュI/F42からフラッシュI/F32に入力される波形の電圧値(入力電圧値)を電圧モニタユニット35から取得する(S80)。
次いで、CPU31は、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態(例えば、基準値の±5%の範囲)にあるか否かを判定し(S81)、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態にあると判定した場合(S81:yes)には、その時点の抵抗値の設定が適切であることを意味しているので、FMチップ40からFM−CTL30への送信に関する電圧値トレーニング処理を終了する。
一方、入力電圧値の最大電圧及び最小電圧が、それぞれの基準値に対して適切な状態にないと判定した場合(S81:no)には、その時点の抵抗値の設定が適切でないことを意味しているので、CPU31は、電圧値テーブル62の入力電圧値に関する基準値を、基準値の最大値及び最小値の範囲で変更し、処理をステップS71に進める(S82)。
上記したFMチップからFM−CTLへの送信に関する電圧値トレーニング処理によると、FMチップ40からFM−CTL30に信号を送信する際における信号の電圧値を適切な値に設定することができる。
次に、変形例に係る計算機システムについて説明する。なお、ここでは、便宜的に、上記した計算機システム1の符号を用いて、異なる点について説明する。
ファームウェア用メモリ60は、さらに、信号別タイミングテーブル66を記憶する。
図17は、変形例に係る信号別タイミングテーブルの構成図である。
信号別タイミングテーブル66は、制御コマンドを構成する各信号の仕様上の1以上のタイミングを管理するテーブルである。信号別タイミングテーブル66は、制御コマンドを構成する各信号の各タイミング毎のエントリを管理する。信号別タイミングテーブル66のエントリは、変数(Parameter)66aと、記号(Symbol)66bと、最小値(Min)66cと、最大値(Max)66dと、単位(Unit)66eとのフィールドを含む。
変数66aには、エントリに対応する信号のタイミングの種類が格納される。本実施形態では、信号のタイミングの種類としては、例えば、CLE信号のセットアップ時間(CLE Setup Time)や、CLE信号のホールド時間(CLE Hold Time)等がある。記号66bは、エントリに対応する変数を示す記号が格納される。最小値66cには、エントリに対応する変数の最小値が格納される。最大値66dには、エントリに対応する変数の最大値が格納される。単位66eには、エントリに対応する変数の単位が格納される。信号別タイミングテーブル66の1番目と2番目のエントリによると、コマンドラッチを構成するCLE信号のタイミングとして、CLE信号のセットアップ時間と、CLE信号のホールド時間とがあり、CLE信号のセットアップ時間の最小時間は、12us(マイクロ秒)であり、CLE信号のホールド時間の最小時間は、5usであることがわかる。このことから、コマンドラッチの最小時間は、CLE信号のセットアップ時間と、CLE信号のホールド時間との最小時間を加算した時間、すなわち、12+5=17usであることがわかる。
変形例に係るコマンドタイミングトレーニング処理は、図14に示すコマンドタイミングトレーニング処理において、発行したコマンドと返答されたコマンドの値とが一致する場合(S44:yes)において、CPU31が信号別タイミングテーブル66を参照し、発行したコマンドに必要な信号の最小時間を特定し、現在の設定が最小時間と一致する場合には、処理をステップS47に進める一方、最小時間と一致しない場合には、S45において、最小時間よりも短くならない範囲でコマンドの時間が短くなるようにタイミングを更新する。
この変形例によると、コマンドの信号を仕様における最小時間よりも短くならないようにして、パラメータを最適化することができる。
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記実施形態では、入力電圧値が適切な値でない場合(S53のno、S73のno)に、まず、出力抵抗値を変更する処理(S54〜S56、S74〜S76)を実行し、それでも入力電圧値が適切な値にならない場合(S57:no、S77:no)に、入力抵抗値を変更する処理(S58〜S60、S78〜S80)を実行するようにしていたが、本発明はこれに限られず、例えば、入力電圧値が適切な値でない場合に、まず、入力抵抗値を変更する処理を実行し、それでも入力電圧値が適切な値にならない場合に、出力抵抗値を変更する処理を実行するようにしてもよい。また、入力電圧値が適切な値でない場合に、出力抵抗値を変更する処理、又は入力抵抗値を変更する処理のいずれか一方のみを実行するようにしてもよい。また、まず、FM−CTLからFMチップへの送信に関する電圧値トレーニング処理を実行し、次に、FMチップからFM−CTLへの送信に関する電圧値トレーニング処理を実行するようにしていたが、本発明はこれに限られず、逆の順番で実行してもよい。
また、上記実施形態においては、FM−CTL30の上位IF周波数として、DKC10との間の周波数としていたが、本発明はこれに限られず、例えば、DKC10からのデータを一時的にメインメモリ50に格納し、その後、メインメモリ50からデータを読み出してFMチップ40に格納するような場合(メインメモリ50も上位装置の一例)であって、メインメモリ50の動作周波数が、DKC10とFM−CTL30との間の周波数よりも低い場合、すなわち、FM−CTL30とメインメモリ50との間の転送レートが、DKC10とFM−CTL30との間の転送レートよりも小さい場合には、上位IF周波数としては、メインメモリ50の動作周波数としてもよい。
また、上記実施形態においては、FMD20がストレージシステム3に備えられている例、すなわち、FMD20がDKC10との間でI/O処理を実行する場合を例にしていたが、本発明はこれに限られず、FMD20がPCIeバスを介してCPUに接続される構成としてもよい。なお、この場合には、FMD20の上位装置の一例は、CPUとなる。
また、上記実施形態において、FM−CTL30のCPU31が行っていた処理の一部又は全部を、ハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
1…計算機システム、2…ホスト、3…ストレージシステム、4…SAN、10…DKC、20…FMD、30…FM−CTL、31…CPU、32…フラッシュI/F、40…FMチップ、42…フラッシュI/F、50…メインメモリ、60…ファームウェア用メモリ、70…伝送路
Claims (10)
- 複数の不揮発性メモリチップと、前記不揮発性メモリチップとの間のデータのI/O処理を実行するインターフェースを備える不揮発性メモリコントローラと、を有する不揮発性メモリデバイスであって、
前記不揮発性メモリコントローラは、複数の不揮発性メモリチップと複数のチャネルを介して接続され、前記複数のチャネルのそれぞれに対応して前記インターフェースが設けられており、
前記不揮発性メモリコントローラは、
上位装置と前記不揮発性メモリコントローラとの間のデータ転送速度に関する上位転送速度情報を取得し、
前記複数のチャネルに対応するそれぞれの前記インターフェースによる前記不揮発性メモリチップとの間の転送速度の合計である合計転送速度が、前記上位転送速度情報に対応する上位転送速度と同じ又は前記上位転送速度に近い転送速度となるように、前記インターフェースの転送速度に関する転送速度情報を決定し、
それぞれの前記インターフェースに対して、決定した転送速度情報に基づいて転送速度に関する設定を行う
不揮発性メモリデバイス。 - 前記不揮発性メモリコントローラは、
前記複数のチャネルに対応するそれぞれの前記インターフェースによる前記不揮発性メモリチップとの間の転送速度を同一の転送速度とした場合において、前記インターフェースによる前記不揮発性メモリチップとの間の前記合計転送速度が、前記上位転送速度情報に対応する上位転送速度と同じ又は前記上位転送速度に近い転送速度となるように、前記インターフェースの転送速度に関する転送速度情報を決定する
請求項1に記載の不揮発性メモリデバイス。 - 前記不揮発性メモリデバイスは、
前記インターフェースの転送速度に関する設定の更新を行う条件である更新条件を記憶する更新条件記憶部をさらに備え、
前記不揮発性メモリコントローラは、前記更新条件を満たしているか否かを判定し、前記更新条件を満たしている場合に、前記インターフェースの前記転送速度に関する設定の更新を行う
請求項1又は請求項2に記載の不揮発性メモリデバイス。 - 前記更新条件には、前記不揮発性メモリデバイスの電源がオンにされた後、まだ前記転送速度に関する設定の更新が行われていないことを含む
請求項3に記載の不揮発性メモリデバイス。 - 前記更新条件には、前記インターフェースの前記転送速度に関する設定の更新を行ってから所定時間が経過したことを含む
請求項3又は請求項4に記載の不揮発性メモリデバイス。 - 前記不揮発性メモリコントローラは、
それぞれの前記インターフェースについて、前記インターフェースから複数の前記不揮発性メモリチップへ送信するコマンドタイミングを変更させてコマンドを実際に送信させ、前記コマンドの通信状況に基づいて前記インターフェースに設定するコマンドタイミングを決定する
請求項1から請求項5のいずれか一項に記載の不揮発性メモリデバイス。 - 前記不揮発性メモリコントローラは、
それぞれの前記インターフェースについて、前記インターフェースから複数の前記不揮発性メモリチップへ送信するコマンドタイミングを徐々に短く調整しながら前記不揮発性メモリチップにおける前記コマンドの通信状態を確認し、前記不揮発性メモリチップで前記コマンドを認識できる最短のコマンドタイミングを前記インターフェースに設定するコマンドタイミングに決定する
請求項6に記載の不揮発性メモリデバイス。 - 前記不揮発性メモリコントローラは、
それぞれの前記インターフェースについて、前記インターフェースから複数の前記不揮発性メモリチップへ信号を送信する際の前記インターフェース又は前記不揮発性メモリチップの少なくとも一方の電圧状態を変更させて信号を実際に送信させ、その通信状況に基づいて、前記不揮発メモリチップへ信号を視診する際における前記インターフェースに設定する電圧状態を決定する
請求項1から請求項7のいずれか一項に記載の不揮発性メモリデバイス。 - 前記不揮発性メモリコントローラは、
それぞれの前記インターフェースについて、前記インターフェースに接続されている複数の前記不揮発性メモリチップから信号を受信する際の前記インターフェース又は前記不揮発性メモリチップの少なくとも一方の電圧状態を変更させて信号を実際に送信させ、その通信状況に基づいて、それぞれの前記不揮発性メモリチップから信号を受信する際における前記インターフェースに設定する電圧状態を決定する
請求項1から請求項8のいずれか一項に記載の不揮発性メモリデバイス。 - 複数の不揮発性メモリチップと、前記不揮発性メモリチップとの間のデータのI/O処理を実行するインターフェースを備える不揮発性メモリコントローラと、を有する不揮発性メモリデバイスによるインターフェース設定方法であって、
前記不揮発性メモリコントローラは、複数の不揮発性メモリチップと複数のチャネルを介して接続され、前記複数のチャネルのそれぞれに対応して前記インターフェースが設けられており、
上位装置と前記不揮発性メモリコントローラとの間のデータ転送速度に関する上位転送速度情報を取得し、
前記複数のチャネルに対応するそれぞれの前記インターフェースによる前記不揮発性メモリチップとの間の転送速度の合計である合計転送速度が、前記上位転送速度情報に対応する上位転送速度と同じ又は前記上位転送速度に近い転送速度となるように、前記インターフェースの転送速度に関する転送速度情報を決定し、
それぞれの前記インターフェースに対して決定した転送速度情報に基づいて転送速度に関する設定を行う
インターフェース設定方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018111929A JP2019215662A (ja) | 2018-06-12 | 2018-06-12 | 不揮発性メモリデバイス、及びインターフェース設定方法 |
US16/295,366 US10614896B2 (en) | 2018-06-12 | 2019-03-07 | Non-volatile memory device and interface configuration method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018111929A JP2019215662A (ja) | 2018-06-12 | 2018-06-12 | 不揮発性メモリデバイス、及びインターフェース設定方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019215662A true JP2019215662A (ja) | 2019-12-19 |
Family
ID=68764249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018111929A Pending JP2019215662A (ja) | 2018-06-12 | 2018-06-12 | 不揮発性メモリデバイス、及びインターフェース設定方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10614896B2 (ja) |
JP (1) | JP2019215662A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7413108B2 (ja) * | 2020-03-23 | 2024-01-15 | キオクシア株式会社 | 半導体装置 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5592646A (en) * | 1988-12-22 | 1997-01-07 | Framdrive | Ferroelectric storage device emulating a rotating disk drive unit in a computer system and having a parallel and multiplexed optical data interface |
US7000056B2 (en) * | 2003-03-28 | 2006-02-14 | Intel Corporation | Method and apparatus for detecting low pin count and serial peripheral interfaces |
DE10330812B4 (de) * | 2003-07-08 | 2006-07-06 | Infineon Technologies Ag | Halbleiterspeichermodul |
TW200604810A (en) * | 2004-02-20 | 2006-02-01 | Renesas Tech Corp | Nonvolatile memory and data processing system |
US20110029723A1 (en) * | 2004-08-06 | 2011-02-03 | Super Talent Electronics, Inc. | Non-Volatile Memory Based Computer Systems |
JP4845092B2 (ja) | 2005-08-19 | 2011-12-28 | 富士通株式会社 | 通信機能を有する装置、送信器自動調整方法、システム及びプログラム |
WO2007036050A1 (en) * | 2005-09-30 | 2007-04-05 | Mosaid Technologies Incorporated | Memory with output control |
US7596643B2 (en) * | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US8281062B2 (en) * | 2008-08-27 | 2012-10-02 | Sandisk Il Ltd. | Portable storage device supporting file segmentation and multiple transfer rates |
JP2011041109A (ja) | 2009-08-17 | 2011-02-24 | Hitachi Ltd | 伝送システムおよび伝送方法 |
US8379456B2 (en) * | 2009-10-14 | 2013-02-19 | Samsung Electronics Co., Ltd. | Nonvolatile memory devices having dummy cell and bias methods thereof |
JP2011154556A (ja) * | 2010-01-27 | 2011-08-11 | Toshiba Corp | 半導体記憶装置 |
US8716876B1 (en) * | 2011-11-11 | 2014-05-06 | Altera Corporation | Systems and methods for stacking a memory chip above an integrated circuit chip |
US20140229655A1 (en) * | 2013-02-08 | 2014-08-14 | Seagate Technology Llc | Storing Error Correction Code (ECC) Data In a Multi-Tier Memory Structure |
US9021154B2 (en) * | 2013-09-27 | 2015-04-28 | Intel Corporation | Read training a memory controller |
KR20150092386A (ko) * | 2014-02-03 | 2015-08-13 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
US10592122B2 (en) * | 2015-03-31 | 2020-03-17 | Sandisk Technologies Llc | Inherent adaptive trimming |
US10009438B2 (en) * | 2015-05-20 | 2018-06-26 | Sandisk Technologies Llc | Transaction log acceleration |
US10126958B2 (en) * | 2015-10-05 | 2018-11-13 | Intel Corporation | Write suppression in non-volatile memory |
US10241727B1 (en) * | 2015-10-15 | 2019-03-26 | Rambus Inc. | Hybrid memory module with improved inter-memory data transmission path |
JP6517684B2 (ja) * | 2015-12-22 | 2019-05-22 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP6517685B2 (ja) * | 2015-12-22 | 2019-05-22 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
CN106961270B (zh) * | 2016-01-12 | 2020-04-28 | 综合器件技术公司 | 信号驱动器摆率控制 |
US10027381B2 (en) * | 2016-07-27 | 2018-07-17 | Micron Technology, Inc. | Method and apparatus for inductive coupling signal transmission |
JP6924026B2 (ja) * | 2016-12-19 | 2021-08-25 | シナプティクス インコーポレイテッド | 半導体装置、ヒューマンインターフェース装置及び電子機器 |
KR20180110412A (ko) * | 2017-03-29 | 2018-10-10 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
US10459786B2 (en) * | 2017-06-27 | 2019-10-29 | Western Digital Technologies, Inc. | Scaling large drives using enhanced DRAM ECC |
US10585754B2 (en) * | 2017-08-15 | 2020-03-10 | International Business Machines Corporation | Memory security protocol |
JP2019046045A (ja) * | 2017-08-31 | 2019-03-22 | 東芝メモリ株式会社 | 記憶装置及び通信制御方法 |
US10373654B1 (en) * | 2018-05-10 | 2019-08-06 | Micron Technology, Inc. | Memory device with a signaling mechanism |
US10504571B1 (en) * | 2018-10-04 | 2019-12-10 | Microa Technology, Inc. | Apparatus with a calibration mechanism |
-
2018
- 2018-06-12 JP JP2018111929A patent/JP2019215662A/ja active Pending
-
2019
- 2019-03-07 US US16/295,366 patent/US10614896B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20190378578A1 (en) | 2019-12-12 |
US10614896B2 (en) | 2020-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102554565B1 (ko) | 외부 레지스턴스를 공유하는 반도체 장치의 메모리 디바이스들을 식별하기 위한 장치 및 방법 | |
US10108574B2 (en) | Electronic device, communication control circuit, and communication control method | |
US20230004331A1 (en) | Nand raid controller | |
US10027532B2 (en) | Storage control apparatus and storage control method | |
CN111737173B (zh) | I2c总线通信控制方法、装置、系统及可读存储介质 | |
US10387347B2 (en) | Method to locate SAS JBOD cable routing | |
US9459982B2 (en) | Bus interface optimization by selecting bit-lanes having best performance margins | |
US9292391B2 (en) | Interface calibration using configurable on-die terminations | |
EP3824390A1 (en) | Protocol independent testing of memory devices using a loopback | |
JP2019215662A (ja) | 不揮発性メモリデバイス、及びインターフェース設定方法 | |
US10635154B2 (en) | Intelligent SAS phy power management | |
US20210224221A1 (en) | Method for training multichannel data receiver timing | |
US10061720B2 (en) | Storage system and signal transfer method | |
CN107957969B (zh) | 判定设备连接状态及设备类型的方法 | |
JP2019003586A (ja) | ストレージ制御装置およびパス切り替え制御プログラム | |
JP2014186500A (ja) | I2cバス通信用デバイス、i2cバス通信システム、及びi2cバス通信方法 | |
US11411782B1 (en) | Enhanced decision feedback equalization for memory interfaces | |
JP7125596B2 (ja) | 情報処理装置および通信制御プログラム | |
US11062781B1 (en) | Equalizer circuit, memory storage device and signal adjustment method | |
TW201717038A (zh) | 調整最佳化參數以自訂用於共用匯流排上目標晶片之信號眼 | |
KR20180044567A (ko) | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
US10637692B2 (en) | Memory decision feedback equalizer | |
CN116502582A (zh) | 用于高精度模拟系统的可编程阻容网络系统 | |
TW202131332A (zh) | 記憶體裝置和調整用於記憶體裝置的參數的方法 | |
WO2015126420A1 (en) | Sas zone configuration management |