(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022049407
(43)【公開日】2022-03-29
(54)【発明の名称】情報処理システム、ストレージデバイス、およびキャリブレーション方法
(51)【国際特許分類】
H04L 25/03 20060101AFI20220322BHJP
H04L 25/02 20060101ALN20220322BHJP
【FI】
H04L25/03 Z
H04L25/02 302A
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2020155600
(22)【出願日】2020-09-16
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】特許業務法人スズエ国際特許事務所
(72)【発明者】
【氏名】佐藤 將吉
【テーマコード(参考)】
5K029
【Fターム(参考)】
5K029AA03
5K029DD24
5K029GG10
5K029KK23
5K029KK25
5K029KK27
5K029LL14
(57)【要約】
【課題】伝送路を伝送されるパルス信号のデューティ比を適切に調整することができる情報処理システムを提供する。
【解決手段】実施形態によれば、情報処理システムは、ホストとストレージデバイスとが伝送路を介して信号を送受信する。ストレージデバイスは、レジスタと補正回路とを備える。レジスタは、パルス信号のデューティ比を変更するためのパラメータを設定できる。補正回路は、パラメータに応じてパルス信号のデューティ比を調整する。ホストは、ストレージデバイスのパラメータを変化させていきながら、ストレージデバイスから出力されるパルス信号のデューティ比を測定し、ストレージデバイスにおけるパラメータの最適値を導出する。ストレージデバイスは、ホストからの第1指示に応じて、パラメータの値を変化させていきながら、パルス信号を出力し、ホストからの第2指示に応じて、ホストによって導出されたパラメータの最適値を設定する。
【選択図】
図6
【特許請求の範囲】
【請求項1】
ホストとストレージデバイスとが伝送路を介して信号を送受信する情報処理システムであって、
前記ストレージデバイスは、前記伝送路に出力するパルス信号のデューティ比を変更するためのパラメータを設定できるレジスタと、前記レジスタに設定されたパラメータに応じて前記パルス信号の前記デューティ比を調整する補正回路とを具備し、
前記ホストは、前記ストレージデバイスの前記レジスタに設定される前記パラメータの値を変化させていきながら、前記ストレージデバイスから出力される前記パルス信号のデューティ比を測定し、前記ストレージデバイスにおける前記パラメータの最適値を導出する第1キャリブレーション処理部を具備し、
前記ストレージデバイスは、前記ホストからの第1指示に応じて、前記レジスタに設定される前記パラメータの値を変化させていきながら、前記補正回路によってデューティ比が調整されたパルス信号を前記伝送路に出力し、前記ホストからの第2指示に応じて、前記ホストによって導出された前記パラメータの最適値を前記レジスタに設定する第2キャリブレーション処理部を具備する、
情報処理システム。
【請求項2】
前記ホストは、前記伝送路に出力するパルス信号のデューティ比を変更するためのパラメータを設定できるレジスタと、前記レジスタに設定されたパラメータに応じて前記パルス信号の前記デューティ比を調整する補正回路を具備し、
前記第1キャリブレーション処理部は、前記ホストの前記レジスタに設定される前記パラメータの値を変化させていきながら、前記ホストの前記補正回路によってデューティ比が補正されたパルス信号を前記伝送路に出力し、前記ストレージデバイスによって測定された当該パルス信号のパルス幅を前記ストレージデバイスから取得して、前記ホストにおける前記パラメータの最適値を導出し、前記ホストの前記レジスタに設定し、
前記第2キャリブレーション処理部は、前記ホストからの第3指示に応じて、前記ホストから出力されるパルス信号のパルス幅を測定し、当該測定の結果を前記ホストへ送信することを含む、
請求項1に記載の情報処理システム。
【請求項3】
前記伝送路は、前記ホストから前記ストレージデバイスへ信号を搬送する信号線と、前記ストレージデバイスから前記ホストへ信号を搬送する信号線との組みを各々が含む2以上のポートまたはレーンを含み、
前記第1キャリブレーション処理部は、前記デューティ比の調整対象であるポートまたはレーンとは別のポートまたはレーンを用いて、ポートまたはレーンの指定を含むコマンドを前記ストレージデバイスへ送信し、
前記第2キャリブレーション処理部は、前記コマンドが受信されたポートまたはレーンを用いて、前記コマンドに対する応答を前記ホストへ送信する、
請求項2に記載の情報処理システム。
【請求項4】
前記ホストおよび前記ストレージデバイスのそれぞれは、前記伝送路を介した信号の送受信に関して検知されたエラーの件数をカウントするカウンタを具備し、
前記第1キャリブレーション処理部は、前記ホストと前記ストレージデバイスとの間の前記伝送路を介した信号の送受信が一定期間以上途絶えている期間に、前記ホストの前記カウンタの値または前記ストレージデバイスの前記カウンタの値が閾値を超えたことを検知し、前記ストレージデバイスにおける前記パラメータの最適値の導出または前記ホストにおける前記パラメータの最適値の導出を実行する、
請求項2に記載の情報処理システム。
【請求項5】
前記ホストおよび前記ストレージデバイスのそれぞれは、前記伝送路を介して受信される信号を補正する判定帰還型等化器を具備し、
前記第1キャリブレーション処理部は、前記ストレージデバイスにおける前記パラメータの最適値の導出または前記ホストにおける前記パラメータの最適値の導出の前に、前記信号の補正に用いられる前記判定帰還型等化器のパラメータに基づき、前記ホストで受信される信号の減衰または前記ストレージデバイスで受信される信号の減衰を検知し、減衰が検知された信号の送信元での前記パルス信号の出力レベルを上げる、
請求項4に記載の情報処理システム。
【請求項6】
ホストとの間で伝送路を介して信号を送受信するストレージデバイスであって、
前記伝送路に出力するパルス信号のデューティ比を調整するためのパラメータを設定できるレジスタと、
前記レジスタに設定されたパラメータに応じて前記パルス信号の前記デューティ比を調整する補正回路と、
前記ホストからの第1指示に応じて、前記レジスタに設定される前記パラメータの値を変化させていきながら、前記補正回路によってデューティ比が調整されたパルス信号を前記伝送路に出力し、前記ホストからの第2指示に応じて、前記ホストによって導出された前記パラメータの最適値を前記レジスタに設定するキャリブレーション処理部と、
を具備するストレージデバイス。
【請求項7】
前記キャリブレーション処理部は、前記ホストからの第3指示に応じて、前記ホストから出力されるパルス信号のデューティ比を測定し、当該測定の結果を前記ホストへ送信することを含む請求項6に記載のストレージデバイス。
【請求項8】
ホストと、伝送路に出力するパルス信号のデューティ比を調整するためのパラメータを設定できるレジスタを備えるストレージデバイスとを具備する情報処理システムにおけるキャリブレーション方法であって、
前記ホストは、前記ストレージデバイスの前記レジスタに設定される前記パラメータの値を変化させ、
前記ストレージデバイスは、前記ホストからの第1指示に応じて、前記レジスタに設定される前記パラメータの値を変化させていきながら、前記デューティ比が調整されたパルス信号を前記伝送路に出力し、
前記ホストは、前記ストレージデバイスから出力されるパルス信号のデューティ比を測定し、前記ストレージデバイスにおける前記パラメータの最適値を導出し、
前記ストレージデバイスは、前記ホストからの第2指示に応じて、前記ホストによって導出された前記パラメータの最適値を前記レジスタに設定することを具備する、
キャリブレーション方法。
【請求項9】
前記ホストは、前記伝送路に出力するパルス信号のデューティ比を変更するためのパラメータを設定できるレジスタを具備し、
前記ホストは、前記ホストの前記レジスタに設定される前記パラメータの値を変化させていきながら、前記デューティ比が補正されたパルス信号を前記伝送路に出力し、
前記ストレージデバイスは、前記ホストからの指示に応じて、前記ホストから出力されるパルス信号のパルス幅を測定し、当該測定の結果を前記ホストへ送信し、
前記ホストは、前記ストレージデバイスから送信された前記測定の結果を取得して、前記ホストにおける前記パラメータの最適値を導出し、前記ホストの前記レジスタに設定することをさらに具備する、
請求項8に記載のキャリブレーション方法。
【請求項10】
伝送路に出力するパルス信号のデューティ比を調整するためのパラメータを設定できるレジスタを備え、ホストとの間で前記伝送路を介して信号を送受信するストレージデバイスにおけるキャリブレーション方法であって、
前記ホストからの第1指示に応じて、前記レジスタに設定される前記パラメータの値を変化させていきながら、前記デューティ比が調整されたパルス信号を前記伝送路に出力し、
前記ホストからの第2指示に応じて、前記ホストによって導出された前記パラメータの最適値を前記レジスタに設定することを具備する、
キャリブレーション方法。
【請求項11】
前記ホストからの第3指示に応じて、前記ホストから出力されるパルス信号のデューティ比を測定し、
当該測定の結果を前記ホストへ送信することをさらに具備する、
請求項10に記載のキャリブレーション方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理システム、ストレージデバイス、およびキャリブレーション方法に関する。
【背景技術】
【0002】
ホストとストレージデバイスとが伝送路を介して信号を送受信する情報処理システムにおいては、近年、信号の転送速度の高速化が目覚ましい。これに伴い、要求される信号品質の水準が厳しくなってきている。また、信号品質を低下させる要因の一つであるJitterを抑えるために、伝送路を伝送されるパルス信号のデューティ比(デューティサイクルとも称する)に求められる精度の向上が求められている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009-042231号公報
【特許文献2】特開2020-017853号公報
【特許文献3】特開2014-154963号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の一つの実施形態は、伝送路を伝送されるパルス信号のデューティ比を適切に調整することができる情報処理システム、ストレージデバイス、およびキャリブレーション方法を提供する。
【課題を解決するための手段】
【0005】
実施形態によれば、情報処理システムは、ホストとストレージデバイスとが伝送路を介して信号を送受信する。ストレージデバイスは、レジスタと、補正回路とを具備する。レジスタは、伝送路に出力するパルス信号のデューティ比を変更するためのパラメータを設定できる。補正回路は、レジスタに設定されたパラメータに応じてパルス信号のデューティ比を調整する。ホストは、第1キャリブレーション処理部を具備する。第1キャリブレーション処理部は、ストレージデバイスのレジスタに設定されるパラメータの値を変化させていきながら、ストレージデバイスから出力されるパルス信号のデューティ比を測定し、ストレージデバイスにおけるパラメータの最適値を導出する。ストレージデバイスは、第2キャリブレーション処理部を具備する。第2キャリブレーション処理部は、ホストからの第1指示に応じて、レジスタに設定されるパラメータの値を変化させていきながら、補正回路によってデューティ比が調整されたパルス信号を伝送路に出力し、前記ホストからの第2指示に応じて、ホストによって導出されたパラメータの最適値をレジスタに設定する。
【図面の簡単な説明】
【0006】
【
図1】第1実施形態の情報処理システムの一構成例を示す図
【
図2】パルス信号のデューティ比の調整が十分に出来ている場合と出来ていない場合との一比較例を示す図
【
図3】第1実施形態の情報処理システムにおいて実行されるパルス信号のデューティ比に関するキャリブレーション(Jitterキャリブレーション)の概要を示す図
【
図4】第1実施形態の情報処理システムにおいて実行されるキャリブレーション時のパルス信号の一観測結果例を示す図
【
図5】第1実施形態の情報処理システムのストレージデバイスおよびホストの双方に設けられるコネクタの一例を示す図
【
図6】第1実施形態の情報処理システムにおいて実行される、ストレージデバイスから出力されるパルス信号に関するキャリブレーションの流れを示すシーケンス図
【
図7】第1実施形態の情報処理システムにおいて実行される、ホストから出力されるパルス信号に関するキャリブレーションの流れを示すシーケンス図
【
図8】第2実施形態の情報処理システムにおけるキャリブレーションの流れを示すシーケンス図
【
図9】第3実施形態の情報処理システムにおいて実行されるキャリブレーション(Jitter-DEFキャリブレーション)の流れを示すシーケンス図
【
図10】第4実施形態の情報処理システムにおけるキャリブレーションの流れを示すシーケンス図
【
図11】第5実施形態のストレージデバイスがループバック接続された様子の一例を示す図
【
図12】第5実施形態のストレージデバイス単独でのJitterキャリブレーションの流れを示すシーケンス図
【発明を実施するための形態】
【0007】
以下、実施の形態について、図面を参照して説明する。
【0008】
(第1実施形態)
まず、第1実施形態について説明する。
【0009】
図1は、第1実施形態の情報処理システムSYSの一構成例を示す図である。
【0010】
図1に示すように、本第1実施形態の情報処理システムSYSは、ストレージデバイス1とホスト2とが伝送路(インターフェース)3を介して接続される。ここでは、ストレージデバイス1がSSD(solid state drive)である場合の例を示している。ホスト2は、サーバやパーソナルコンピュータなどである。インターフェース3は、SAS、SATA、PCI Express(PCIe(登録商標))などの規格に準拠する。ストレージデバイス1は、UFS(Universal Flash Storage)の規格に準拠したデバイスであってもよい。
【0011】
ストレージデバイス1は、コントローラ11、NAND型フラッシュメモリ(以下、NAND)12、DRAM13を有する。
【0012】
コントローラ11は、ホスト2からのコマンドに応じて、NAND12へのデータの書き込み処理や、NAND12からのデータの読み出し処理などを実行する。コントローラ11は、ホストインターフェース回路(以下、ホストI/F)110、制御部120、NANDインターフェース回路(以下、NAND I/F)130、SRAM140、UART(universal asynchronous receiver/transmitter)150を有する。コントローラ11は、たとえばSoC(System on a chip)として構成される。
【0013】
ホストI/F110は、ホスト2との間の通信を制御する。ホストI/F110は、PHY111を有する。PHY111は、OSI階層モデルにおける最下層の物理層の機能を実現するための回路である。PHY111は、複数のPort/Lane301、DCC(duty cycle correction)回路302、レジスタ303を有する。
【0014】
各Port/Lane301は、信号の送信用の送信回路Txと、信号の受信用の受信回路Rxとの組みを含む。インターフェース3がSASまたはSATAに準拠する場合、Port/Lane301は「port」である。インターフェース3がPCIeに準拠する場合、Port/Lane301は「lane」である。
【0015】
DCC回路302は、Port/Lane301の送信回路Txから出力されるパルス信号のデューティ比(デューティサイクルとも称する)を調整する回路である。レジスタ303は、DCC回路302によるデューティ比の調整の結果を補正するためのパラメータを格納する。このパラメータは、Countなどと称される。設計不良、個体不良、相性問題などにより、DCC回路302がパルス信号のデューティ比を調整しきれなかったり、調整した結果がずれたりする場合、レジスタ303に対する当該Countの設定により、パルス信号のデューティ比を補正することができる。レジスタ303には、各Port/Lane301のCountが格納される。
【0016】
制御部120は、ストレージデバイス1内の各コンポーネントを制御する。制御部120は、キャリブレーション処理部121を有する。キャリブレーション処理部121は、ホスト2と協働して、前述したCountの最適値をレジスタ303へ設定する。つまり、キャリブレーション処理部121は、ホスト2との間で送受するパルス信号のキャリブレーションを実行する。このキャリブレーションの詳細については後述する。
【0017】
NAND I/F130は、制御部120の配下で、NAND12へのデータの書き込み、NAND12からのデータの読み出し、およびNAND12に記憶されたデータの消去を制御する。
【0018】
SRAM140は、データを揮発的に記憶するストレージである。SRAM140は、たとえばNAND12に格納されているファームウェアのロード領域として使用される。
【0019】
UART150は、たとえばUSB(universal serial bus)の規格や他のインターフェース規格に準拠したコネクタ(図示せず)経由で、外部からのコマンドやパラメータなどを入力するための回路である。
【0020】
NAND12は、データを不揮発的に記憶するストレージである。DRAM13は、データを揮発的に記憶するストレージである。DRAM13は、たとえばNAND12へ書き込むデータやNANDから読み出したデータのバッファ領域として使用される。DRAM13は、コントローラ11の内部に設けられてもよい。
【0021】
ホスト2は、CPU21、メインメモリ22、インターフェース(I/F)コントローラ23を有する。CPU21は、たとえばストレージデバイス1からメインメモリ22へ各種プログラムをロードして実行する。各種プログラムには、キャリブレーション処理プログラム200が含まれる。キャリブレーション処理プログラム200は、ストレージデバイス1と協働して、ストレージデバイス1およびホスト2のそれぞれについて、前述したCountの最適値を導出する。つまり、キャリブレーション処理プログラム200は、キャリブレーション処理部121と対峙するように設けられるモジュールである。
【0022】
I/Fコントローラ23は、CPU21と、ストレージデバイス1との間を中継するブリッジデバイスである。また、I/Fコントローラ23には、ストレージデバイス1のPHY111と対をなすPHY231が内蔵されている。
【0023】
ホスト2のPHY231も、ストレージデバイス1のPHY111と同様、複数のPort/Lane401、DCC回路402、レジスタ403を有する。
図1に示すように、ホスト2の複数のPort/Lane401と、ストレージデバイス1の複数のPort/Lane301とは一対一で対応している。ホスト2のいずれかのPort/Lane401の送信回路Txから出力されるパルス信号は、当該Port/Lane401に対応するストレージデバイス1のいずれかのPort/Lane301の受信回路Rxに入力される。逆に、ストレージデバイス1のいずれかのPort/Lane301の送信回路Txから出力されるパルス信号は、当該Port/Lane301に対応するホスト2のいずれかのPort/Lane401の受信回路Rxに入力される。前述したように、ストレージデバイス1のPort/Lane301の送信回路Txから出力されるパルス信号のデューティ比は、DCC回路302によって調整される。また、このDCC回路302によるデューティ比の調整が十分でない場合、レジスタ303へのCountの設定によって補正することができる。同様に、ホスト2のPort/Lane401の送信回路Txから出力されるパルス信号のデューティ比は、DCC回路402によって調整される。また、このDCC回路402によるデューティ比の調整が十分でない場合、レジスタ403へのCountの設定によって補正することができる。
【0024】
図2は、パルス信号のデューティ比の調整が十分に出来ている場合と出来ていない場合との一比較例を示す図である。
【0025】
たとえば、ストレージデバイス1とホスト2との間で送受信される信号の波形は、デューティ比50%近傍で安定していることが理想的とされている。(A1)は、デューティ比50%近傍で安定している状態のパルス信号の一例を示している。縦軸が振幅、横軸が時間である。デューティ比は、パルスの周期をT、振幅が正の期間のパルス幅(Highの時間)をHとした場合、デューティ比[%]=(H/T)×100で求まる。振幅が負の期間のパルス幅(Lowの時間)をLとした場合、T=H+Lである。
【0026】
(B1)は、(A1)の状態のパルス信号をオシロスコープなどで観察した波形の一例を示している。デューティ比50%近傍で安定している状態は、信号品質を低下させる要因の一つであるJitterが抑えられている状態である。この状態は、「EyeのJitterが少ない」などと称される。DCC回路302,402は、理想的とされる50%近傍で安定するように、Port/Lane301,401の送信回路Txから出力されるパルス信号のデューティ比を調整する。
【0027】
一方、DCC回路302,402による調整が十分でない場合、デューティ比が50%近傍から外れてしまう。(A2)は、H(Highの時間)がL(Lowの時間)よりも顕著に大きい状態のパルス信号の一例を示している。また、(B2)は、(A2)の状態のパルス信号をオシロスコープなどで観察した波形の一例を示している。デューティ比が50%近傍から外れてしまっている状態は、Jitterが抑えられていない状態である。この状態は、「EyeのJitterが大きい」などと称される。Jitterが大きくなると、インターフェースに関する種々の不良(インターフェース3上のトラブル事象)を誘発するおそれがでてくる。
【0028】
本第1実施形態の情報処理システムSYSは、ホスト2とストレージデバイス1とが協働して、このようなJitterを抑えるためのキャリブレーション、つまりCountと称されるパラメータを適切に設定するものである。以下、この点について詳述する。以下、Jitterを抑えるためのキャリブレーションを、Jitterキャリブレーションと称することがある。
【0029】
図3は、本第1実施形態の情報処理システムSYSにおいてストレージデバイス1とホスト2とが協働して実行するキャリブレーションの概要を示す図である。
【0030】
前述したように、ホスト2の複数のPort/Lane401と、ストレージデバイス1の複数のPort/Lane301とは一対一で対応している。ホスト2のいずれかのPort/Lane401の送信回路Txから出力されるパルス信号は、当該Port/Lane401に対応するストレージデバイス1のいずれかのPort/Lane301の受信回路Rxに入力される。逆に、ストレージデバイス1のいずれかのPort/Lane301の送信回路Txから出力されるパルス信号は、当該Port/Lane301に対応するホスト2のいずれかのPort/Lane401の受信回路Rxに入力される。
【0031】
また、ホスト2のPort/Lane401の送信回路Txから出力されるパルス信号のデューティ比は、ホスト2のDCC回路402によって、理想的とされる50%近傍で安定するように調整される。同様に、ストレージデバイス1のPort/Lane301の送信回路Txから出力されるパルス信号のデューティ比は、ストレージデバイス1のDCC回路302によって、理想的とされる50%近傍で安定するように調整される。
【0032】
さらに、ホスト2のDCC回路402によるデューティ比の調整が十分でない場合、ホスト2のレジスタ403に対するCountの設定により、デューティ比を補正することができる。同様に、ストレージデバイス1のDCC回路302によるデューティ比の調整が十分でない場合には、ストレージデバイス1のレジスタ303に対するCountの設定により、デューティ比を補正することができる。
【0033】
そこで、本第1実施形態の情報処理システムSYSは、このCountを適切に設定するキャリブレーションを実行する。
【0034】
具体的には、各送信回路Tx は、Count値を最小値から最大値まで変化させる(
図3(1))。Count値が変化すると、送信回路Txから出力されるパルス信号のデューティ比が変化する。当該パルス信号が入力される各受信回路Rxは、各Count値に関し、HighとLowの振幅もしくはデューティ比を観測する(
図3(2))。そして、各送信回路Tx は、この観測結果に基づき、Countの最適値を導出する。なお、このCount値の導出は、たとえばストレージデバイス1のCount値について実行し、次いで、ホスト2のCount値について実行するといったように一方ずつ順番に実行してもよいし、ストレージデバイス1のCount値とホスト2のCount値との双方について並行して実行してもよい。
【0035】
図4は、Count値を最小値から最大値まで変化させながら送信回路Txから出力されたパルス信号の当該送信回路Txに対応する受信回路Rx側における一観測結果例を示す図である。
【0036】
図4中、縦軸は振幅の絶対値、横軸はCount値である。なお、ここでは、縦軸を振幅の絶対値としているが、デューティ比としてもよい。
【0037】
送信回路Txから出力されて当該送信回路Txに対応する受信回路Rxに入力されるパルス信号は、
図4に示すように、Count値が最小値の場合、High側の振幅の絶対値は最大となり、一方、Low側の振幅の絶対値は最小となる。ここで、High側の振幅は、
図2に示した周期Tのパルス信号におけるHの期間の振幅に対応し、Low側の振幅は、
図2に示したパルス信号におけるLの期間の振幅に対応する。Count値が最小値から最大値へと移行するに従い、High側の振幅の絶対値は小さくなっていき、Low側の振幅の絶対値は大きくなっていく。Count値が最大値の場合、High側の振幅の絶対値は最小となり、Low側の振幅の絶対値は最大となる。
【0038】
前述したように、パルス信号は、デューティ比50%近傍で安定していることが理想的とされている。従って、High側の振幅の絶対値とLow側の振幅の絶対値とが一致する時(クロスポイント)のCount値が最適値となる。本第1実施形態の情報処理システムSYSは、ストレージデバイス1とホスト2とが協働して、High側の振幅の絶対値とLow側の振幅の絶対値とが一致する時のCount値を最適値として導出する。
【0039】
図5は、ストレージデバイス1とホスト2との接続のためにストレージデバイス1およびホスト2の双方に設けられるコネクタの一例を示す図である。
【0040】
図5に示すコネクタは、SAS、SATA、SATA Express、PCIeを多面的にサポートするコネクタであり、複数のピンを有する。このコネクタ経由でストレージデバイス1とホスト2とが接続されると、インターフェース3の規格がPCIeの場合、Lane 0~Lane 3の4つのlaneが使用可能となる(a11、a12)。インターフェース3の規格がSATAの場合、1つのPortが使用可能となる(a21)。インターフェース3の規格がSASまたはSATA Expressの場合、第2Portを加えた2つのポートが使用可能となる(S21、S22)。インターフェース3の規格がSAS×4の場合は、さらに、第3Portと第4Portとを加えた4つのポートが使用可能となる(S21、S22、a31)。
【0041】
図6は、本第1実施形態の情報処理システムSYSにおいてストレージデバイス1とホスト2とが協働して実行する、ストレージデバイス1の送信回路Txから出力されるパルス信号に関するキャリブレーションの流れを示すシーケンス図である。
【0042】
ホスト2(キャリブレーション処理プログラム200)は、まず、たとえばメインメモリ22上に確保した、Countを最小値から最大値までインクリメントしていくために使用する領域に、Countの最小値を初期値として格納する(b1)。ホスト2は、この領域に格納されるCountが最大値に達するまで、符号b100で示す破線の矩形で囲まれる処理(b2~b10)を繰り返す。
【0043】
ホスト2は、ストレージデバイス1に対して、キャリブレーション対象のPort/Laneを指定し、Count値を変更させ、パルス信号の出力を開始させるためのコマンド(Mode Select/Set Feature)を発行する(b2)。これ以降では、キャリブレーション対象のPort/Laneを対象Port/Laneとも称する。なお、「Mode Select」は、SASにおいて設定変更用として定義されているコマンドであり、「Set Feature」は、PCIeを基盤として策定されているストレージデバイス用のインターフェース規格であるNVMeにおいて設定変更用として定義されているコマンドである。これらは一例であって、これらに限定されるものではない。ホスト2は、これらのコマンドを、対象Port/Lane以外のPort/Laneを用いて、ストレージデバイス1に対して発行する。ここでは、ホスト2からストレージデバイス1へのコマンドの受け渡しを、インターフェース3経由で行うことを想定する。しかし、ストレージデバイス1はUART150を有しているので、インターフェース3経由に代えて、UART150経由で行うようにしてもよい。このb2においてストレージデバイス1へ通知されるCount値は、前述のメインメモリ22上などに確保される領域に格納されているCount値である。
【0044】
ストレージデバイス1(キャリブレーション処理部121)は、ホスト2からの要求に応じて、指定されたPort/Laneに対応するCount値を変更し(b3)、コマンド実行完了をホスト2へ通知する(b4)。この通知は、ホスト2がコマンドの発行に用いたPort/Lane、つまり対象Port/Lane以外のPort/Laneを用いて行われればよい。ストレージデバイス1は、Count値を変更した対象Port/Laneの送信回路Txからパルス信号を出力する(b5)。
【0045】
ホスト2は、対象Port/Laneの受信回路Rxに入力されるパルス信号のHighの振幅値とLowの振幅値とを計測する(b6)。計測が完了したら、ホスト2は、ストレージデバイス1に対して、対象Port/Laneを指定し、パルス信号の出力を停止させるためのコマンド(Mode Select/Set Feature)を発行する(b7)。ホスト2は、このコマンドの発行も、対象Port/Lane以外のPort/Laneを用いて実行する。ストレージデバイス1は、指定されたPort/Laneの送信回路Txからのパルス信号の出力を停止し(b8)、コマンド実行完了をホスト2へ通知する(b9)。
【0046】
ホスト2は、Count値をインクリメントし(b10)、b2からの処理を繰り返す。インクリメント前のCount値が最大値に達している場合、ホスト2は、符号b100で示す破線の矩形で囲まれる処理(b2~b10)のループを抜け、b6での計測の結果に基づき、ストレージデバイス1の送信回路Txから出力されるパルス信号に関するCountの最適値を導出する(b11)。ホスト2は、当該導出したCount最適値を、ホスト2の(
図1には示されない)BIOS-ROMなどの不揮発性領域に退避しておく。BIOS-ROMは、BIOSをアップデート可能にフラッシュメモリなどによって構成されている。
【0047】
ホスト2は、ストレージデバイス1に対して、対象Port/Laneに当該導出したCount最適値を設定するためのコマンド(Mode Select/Set Feature)を発行する(b12)。ストレージデバイス1は、ホスト2から受け取ったCount最適値をPHY111のレジスタ303に設定する(b13)。ストレージデバイス1においても、このCount最適値を、NAND12内などの不揮発性領域に保存する(b14)。ストレージデバイス1は、Count値の設定および保存を完了すると、コマンド実行完了をホスト2へ通知する(b15)。
【0048】
ホスト2は、ストレージデバイス1からコマンド実行完了の通知を受け取ると、ストレージデバイス1との間で、対象Port/Laneを初期化するためのLink Resetを実行する(b16)。
【0049】
このように、ホスト2のハンドリングの下、ストレージデバイス1とホスト2とが協働して、ストレージデバイス1の送信回路Txから出力されるパルス信号に関するキャリブレーションが実現される。
【0050】
図7は、本第1実施形態の情報処理システムSYSにおいてストレージデバイス1とホスト2とが協働して実行する、ホスト2の送信回路Txから出力されるパルス信号に関するキャリブレーションの流れを示すシーケンス図である。ここでも、ストレージデバイス1の送信回路Txから出力されるパルス信号に関するキャリブレーション(
図6)と同様、各コマンドや応答には、対象Port/Lane以外のPort/Laneが使用される。
【0051】
ホスト2(キャリブレーション処理プログラム200)は、まず、対象Port/LaneについてPHY231のレジスタ403に最小値のCountを設定する(c1)。ホスト2は、このCountを最大値まで変更していきながら、符号c100で示す破線の矩形で囲まれる処理(c2~c13)を繰り返す。
【0052】
ホスト2は、ストレージデバイス1に対して、対象Port/Laneを指定し、パルス信号の測定を開始させるためのコマンド(Mode Select/Set Feature)を発行する(c2)。つまり、ホスト2は、対象Port/Laneの送信回路Txに出力するパルス信号、換言すれば、ストレージデバイス1においては対象Port/Laneの受信回路Rxに入力されるパルス信号のHighの振幅値とLowの振幅値との計測を要求する。ストレージデバイス1(キャリブレーション処理部121)は、パルス信号を測定する準備をし(c3)、準備が完了したら、コマンド実行完了をホスト2へ通知する(c4)。
【0053】
ホスト2は、ストレージデバイス1からコマンド実行完了の通知を受け取ると、対象Port/Laneのパルス信号の発生を有効に設定する(c5)。この設定は、PHY231に対して実行される。この設定に伴い、ホスト2は、対象Port/Laneの送信回路Txからパルス信号を出力する(c6)。
【0054】
ストレージデバイス1は、対象Port/Laneの受信回路Rxに入力されるパルス信号のHighの振幅値とLowの振幅値とを計測する(c7)。ホスト2は、ストレージデバイス1に対して、c2で計測を依頼した、ストレージデバイス1において対象Port/Laneの受信回路Rxに入力されるパルス信号のHighの振幅値とLowの振幅値とを問い合わせるコマンド(Mode Sense/Get Feature)を発行する(c8)。このとき、ホスト2は、たとえばc6のパルス出力から一定時間経過後に、このコマンド(Mode Sense/Get Feature)を発行する。なお、「Mode Sense」は、SASにおいて参照用として定義されているコマンドであり、「Get Feature」は、NVMeにおいて参照用として定義されているコマンドである。これらは一例であって、これらに限定されるものではない。ストレージデバイス1は、これらのコマンドを受け取ると、ホスト2に対して、c7で計測したパルス信号のHighの振幅値とLowの振幅値とを応答する(c9)。
【0055】
ホスト2は、パルス信号のHighの振幅値とLowの振幅値とを受け取ると、ストレージデバイス1に対して、対象Port/Laneを指定し、パルス信号の測定を停止させるためのコマンド(Mode Select/Set Feature)を発行する(c10)。コマンドを受け取ったストレージデバイス1は、対象Port/Laneの受信回路Rxに入力されるパルス信号のHighの振幅値とLowの振幅値との計測を停止し(c11)、コマンド実行完了をホスト2へ通知する(c12)。
【0056】
ホスト2は、Count値をインクリメントし(c13)、c2からの処理を繰り返す。インクリメント前のCount値が最大値に達している場合、ホスト2は、符号c100で示す破線の矩形で囲まれる処理(c2~c13)のループを抜け、c9で受け取った計測の結果に基づき、ホスト2の送信回路Txから出力されるパルス信号に関するCountの最適値を導出する(c14)。
【0057】
ホスト2は、導出したCount最適値を、ホスト2の、たとえばフラッシュメモリなどによって構成されているBIOS-ROMなどの不揮発性領域に退避し、また、PHY231のレジスタ403に設定する(c15)。ホスト2は、この設定を終えると、ストレージデバイス1との間で、対象Port/Laneを初期化するためのLink Resetを実行する(c16)。
【0058】
このように、ホスト2のハンドリングの下、ストレージデバイス1とホスト2とが協働して、ホスト2の送信回路Txから出力されるパルス信号に関するキャリブレーションが実現される。
【0059】
以上のように、本第1実施形態の情報処理システムSYSは、ストレージデバイス1とホスト2とが協働して、対象Port/Laneについて、ストレージデバイス1とホスト2との双方のCountを最適値に設定することができる。つまり、本実施形態の情報処理システムSYSは、伝送路(インターフェース)3に出力されるパルス信号のデューティ比を適切に調整することができる。
【0060】
なお、ストレージデバイス1側についてのキャリブレーション(
図6)と、ホスト2側についてのキャリブレーション(
図7)とは、前述したように、一方ずつ順番に実行してもよいし、並行して実行してもよい。
【0061】
(第2実施形態)
次に、第2実施形態について説明する。
【0062】
たとえばインターフェース3がSASの場合、ストレージデバイス1のPHY111とホスト2のPHY231との双方に、「Invalid Dword」や「Running Disparity」といった、各Port/Lane301,401の受信回路Rxに入力された信号について検出された各種エラーをカウントするカウンタが設けられる。このカウンタは、たとえばレジスタ303,403に設けられる。また、ストレージデバイス1においては、これらのカウンタの情報が、S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology)の情報として記録される。
【0063】
ここでは、PHY111,231に設けられるカウンタでカウントされるインターフェース3上のトラブル事象をI/F ERRORとも称する。I/F ERRORのカウント件数が上昇している場合、DCC回路302,402によるパルス信号のデューティ比の調整が十分に出来ておらず、通信する信号のJitterの問題が生じている可能性が疑われる。
【0064】
そこで、本第2実施形態の情報処理システムSYSでは、ストレージデバイス1とホスト2との間の通信が休止状態(idle)にある期間に、カウンタによるI/F ERRORのカウント件数をチェックし、I/F ERRORが多数検知されていたならば、当該休止状態(idle)の期間に、該当のPort/Lane301,401についてキャリブレーションを実行する。
【0065】
図8は、本第2実施形態の情報処理システムSYSにおけるキャリブレーションの流れを示すシーケンス図である。
【0066】
ストレージデバイス1とホスト2との間で各Port/Lane301,401の初期化(initialization)が行われた後(d11)、いずれかのタイミングで、ストレージデバイス1とホスト2との間の通信が休止状態(idle)となり(d12)、かつ、当該休止状態(idle)のまま一定時間が経過した場合を想定する(d13)。
【0067】
この場合、ホスト2(キャリブレーション処理プログラム200)は、PHY231内のカウンタのI/F ERROR件数を参照する(d1)。また、ホスト2は、ストレージデバイス1に対して、ストレージデバイス1においてカウントされているI/F ERROR件数を参照するためのコマンドを発行する(d2)。ストレージデバイス1(キャリブレーション処理部121)は、このコマンドを受け取ると、PHY111内のカウンタのI/F ERROR件数をホスト2へ通知する(d3)。
【0068】
ホスト2は、あるPort/Laneにおいて、ホスト2側のI/F ERROR件数と、ストレージデバイス1側のI/F ERROR件数との少なくとも一方が閾値を超えており、かつ、そのPort/Laneについてキャリブレーションが未実施である場合、第1実施形態で説明したキャリブレーション(
図6、
図7)を実行する(d100)。
【0069】
本第2実施形態の情報処理システムSYSにおいては、ストレージデバイス1とホスト2との間の通信が休止状態(idle)にある中、I/F ERROR多発を検知し、キャリブレーションを実行することで、信号品質の改善を図れる可能性がある。
【0070】
(第3実施形態)
次に、第3実施形態について説明する。
【0071】
本第3実施形態の情報処理システムSYSは、第1実施形態で説明したキャリブレーションと、本願出願人による出願の特願2017-171577(特開2019-46389号公報)に記載される、DFE(Decision Feedback Equalization)回路のパラメータに基づき、信号減衰を検知する手法とを組み合わせることで、信号品質の改善を図れる可能性を更に高めることを狙ったものである。
【0072】
DFE回路は、受信回路Rxに設けられ、伝送路(インターフェース)3を通過する過程で歪んだ信号を等価する回路である。DFE回路のパラメータ(例えば、フィードバック係数)に基づき、受信回路Rxに入力されるパルス信号の減衰を検知した場合、プリエンファシスなどの技術を用いて、その受信回路Rxに対応する送信回路Txからのパルス信号の出力レベルを上げるキャリブレーションを実施する。このキャリブレーションをDFEキャリブレーションと称する。また、DFEキャリブレーションと、第1実施形態で説明したキャリブレーション(Jitterキャリブレーション)との組み合わせを、Jitter-DFEキャリブレーションと称する。本第3実施形態の情報処理システムSYSでも、このJitter-DFEキャリブレーションを、ストレージデバイス1とホスト2との間の通信が休止状態(idle)にある期間に、その実行要否を判断し、必要と判断したならば実行する。
【0073】
図9は、本第3実施形態の情報処理システムSYSにおいて実行されるJitter-DEFキャリブレーションの流れを示すシーケンス図である。
【0074】
ストレージデバイス1とホスト2との間で各Port/Lane301,401の初期化(initialization)が行われた後(e11)、いずれかのタイミングで、ストレージデバイス1とホスト2との間の通信が休止状態(idle)となり(e12)、かつ、当該休止状態(idle)のまま一定時間が経過した場合を想定する(e13)。
【0075】
この場合、ホスト2(キャリブレーション処理プログラム200)は、PHY231内のカウンタのI/F ERROR件数を参照する(e1)。また、ホスト2は、ホスト2側の受信回路RxのDFE回路のパラメータを参照する(e2)。
【0076】
続いて、ホスト2は、ストレージデバイス1に対して、ストレージデバイス1においてカウントされているI/F ERROR件数を参照するためのコマンドを発行する(e3)。ストレージデバイス1(キャリブレーション処理部121)は、このコマンドを受け取ると、PHY111内のカウンタのI/F ERROR件数をホスト2へ通知する(e4)。さらに、ホスト2は、ストレージデバイス1に対して、ストレージデバイス1側の受信回路RxのDFE回路のパラメータを参照するためのコマンドを発行する(e5)。ストレージデバイス1は、このコマンドを受け取ると、ストレージデバイス1側のDFE回路のパラメータをホスト2へ通知する(e6)。
【0077】
ホスト2は、あるPort/Laneにおいて、ホスト2側のI/F ERROR件数と、ストレージデバイス1側のI/F ERROR件数との少なくとも一方が閾値を超えている場合、Jitter-DEFキャリブレーションを実行する(e100)。
【0078】
具体的には、ホスト2は、ホスト2側のDFE回路のパラメータと、ストレージデバイス1側のDFE回路のパラメータとに基づき、ホスト2側の受信回路Rxに入力されるパルス信号とストレージデバイス1側の受信回路Rxに入力されるパルス信号との一方または両方の減衰を検知する(e14)。
図9の参照先Rxとは、検知対象となっている、ホスト2側の受信回路Rxまたはストレージデバイス1側の受信回路Rxである。信号減衰を検知すると、ホスト2は、プリエンファシスなどの技術を用いた、当該受信回路Rxに対応する送信回路Txからのパルス信号の出力を上げるDFEキャリブレーションを実行する(e15)。このDFEキャリブレーションにより、参照先RxのDFE回路のパラメータは正常な値となる。
【0079】
DFE回路のパラメータを正常な値とした後、ホスト2は、第1実施形態で説明したキャリブレーション(Jitterキャリブレーション)(
図6、
図7)を実行する(e16)。
【0080】
本第3実施形態の情報処理システムSYSにおいては、DFEキャリブレーションとJitterキャリブレーションとを組み合わせたJitter-DFEキャリブレーションによって、信号品質の改善を図れる可能性を更に高めることができる。
【0081】
(第4実施形態)
次に、第4実施形態について説明する。
【0082】
第2実施形態および第3実施形態においては、IF ERRORの多発が検知されたことを契機としてキャリブレーションが実行される。しかし、情報処理システムSYS(ホスト2)自身による特定の事象の検知がキャリブレーションの契機でなくともよい。本第4実施形態の情報処理システムSYSは、システム管理者などのユーザから要求されたことを契機として、キャリブレーションを実行する。
【0083】
図10は、本第4実施形態の情報処理システムSYSにおけるキャリブレーションの流れを示すシーケンス図である。
【0084】
ユーザは、たとえば、ホスト2との間で通信する機能を有する管理用コンソールPC4上で、ホスト2とストレージデバイス1との間のJitter-DFEキャリブレーションの実施を要求する操作を行う(f1)。ユーザの操作を受け付けた管理用コンソールPC4は、ホスト2に対して、Jitter-DFEキャリブレーションの実行を要求する(f2)。
【0085】
この管理用コンソールPCからの要求を受けたホスト2は、ストレージデバイス1と協働して、第3実施形態で説明したJitter-DFEキャリブレーション(
図9を参照)を実行する(f100)。ホスト2は、Jitter-DFEキャリブレーションを完了すると、管理用コンソールPC4に対して、Jitter-DFEキャリブレーション実行完了を通知する(f3)。
【0086】
管理用コンソールPC4は、ユーザに対して、たとえばディスプレイを介して、Jitter-DFEキャリブレーション実施完了を通知する(f4)。
【0087】
本第4実施形態の情報処理システムSYSにおいては、ストレージデバイス1とホスト2との協働によるJitter-DFEキャリブレーションを、ユーザが任意のタイミングで実施させることができる。
【0088】
なお、Jitter-DFEキャリブレーションに限らず、JitterキャリブレーションやDFEキャリブレーションを、ユーザが個別に要求し、実施させるようにすることも可能である。
【0089】
(第5実施形態)
次に、第5実施形態について説明する。
【0090】
第1実施形態~第4実施形態においては、ホスト2のハンドリングの下、ストレージデバイス1とホスト2とが協働して、キャリブレーションを実行する。これに対して、本第5実施形態においては、ストレージデバイス1またはホスト2が、単独で、キャリブレーションを実行する。
図11には、ストレージデバイス1が単独でキャリブレーションを実行する例が示されている。
【0091】
第1実施形態~第4実施形態においては、ストレージデバイス1のPort/Lane301とホスト2のPort/Lane401とをストレート接続し、一方の送信回路Txから出力するパルス信号を他方の受信回路Rxで観測することを双方向で行って、各々のCountの最適値を導出する。本第5実施形態においては、2つのPort/Lane301をたとえばクロスケーブル5によってループバック接続し、一方の送信回路Txから出力するパルス信号を他方の受信回路Rxで観測することを双方向で行って、各々のCountの最適値を導出する。
【0092】
本第5実施形態のストレージデバイス1のキャリブレーション処理部121は、第1実施形態~第4実施形態のホスト2のキャリブレーション処理プログラム200の機能を併せ持つ。また、ストレージデバイス1(キャリブレーション処理部121)は、対象Port/Lane301を指定するパラメータや、キャリブレーションの実行を要求するコマンドなどをUART150経由で入力する。
【0093】
ストレージデバイス1は、たとえば、パラメータによって2つのPort/Lane301が指定され、コマンドによってキャリブレーションの実行が要求されると、Count値を最小値から最大値まで変化させながら、当該2つのPort/Lane301の送信回路Txからパルス信号を出力していき、かつ、当該2つのPort/Lane301の受信回路Rxでパルス信号を観測する。ストレージデバイス1は、パルス信号のHigh側の振幅の絶対値とLow側の振幅の絶対値とが一致するクロスポイントを探し出し、その時のCount値を最適値として導出する。
【0094】
図12は、本第5実施形態のストレージデバイス1単独でのJitterキャリブレーションの流れを示すシーケンス図である。
【0095】
ユーザは、ストレージデバイス1の2つのPort/Lane301をループバック接続し、ストレージデバイス1のUART150経由でストレージデバイス1との間で通信する機能を有する管理用コンソールPC4上で、Jitterキャリブレーションの実施を要求する操作を行う(g1)。この操作には、Port/Laneの指定が含まれ得る。ユーザの操作を受け付けた管理用コンソールPC4は、ストレージデバイス1に対して、Jitterキャリブレーションの実行を要求する(g2)。
【0096】
この指示を受けたストレージデバイス1(キャリブレーション処理部121)は、たとえばSRAM140上に確保した、Countを最小値から最大値までインクリメントしていくために使用する領域に、Countの最小値を初期値として格納する(g3)。ストレージデバイス1は、この領域に格納されるCountが最大値に達するまで、符号g100で示す破線の矩形で囲まれる処理(g4~g8)を繰り返す。
【0097】
具体的には、ストレージデバイス1は、ループバック接続された両Port/Laneの送信回路Txから出力するパルス信号に関するCount値を、前述のSRAM140上などに確保される領域に格納されている現在のCount値に変更する(g4)。Count値を変更したら、ストレージデバイス1は、両Port/Laneの送信回路Txからパルス信号を出力する(g5)。
【0098】
ストレージデバイス1は、パルス信号を出力した送信回路Txに対応する、両Port/Laneの受信回路Rxで当該パルス信号のHighの振幅値とLowの振幅値とを計測する(g6)。計測が完了したら、ストレージデバイス1は、両Port/Laneの送信回路Txからのパルス信号の出力を停止する(g7)。
【0099】
ストレージデバイス1は、Count値をインクリメントし(g8)、g4からの処理を繰り返す。インクリメント前のCount値が最大値に達している場合、ストレージデバイス1は、符号g100で示す破線の矩形で囲まれる処理(g4~g8)のループを抜け、g6での計測の結果に基づき、両Port/Laneについて、送信回路Txから出力するパルス信号に関するCountの最適値を導出する(g9)。ストレージデバイス1は、当該導出したCount最適値をPHY111のレジスタ303に設定し、また、NAND12内などの不揮発性領域に保存する(g10)。
【0100】
ストレージデバイス1は、Count最適値の設定および保存を完了すると、Jitterキャリブレーション完了を管理用コンソールPC4へ通知する(g11)。また、管理用コンソールPC4は、ユーザに対して、たとえばディスプレイを介して、Jitterキャリブレーション完了を通知する(g12)。
【0101】
本第5実施形態では、ストレージデバイス1の2つのPort/Laneをループバック接続することで、ストレージデバイス1が単独でキャリブレーションを実行することができる。ホスト2においても、ホスト2の2つのPort/Laneをループバック接続することで、単独でのキャリブレーションが可能である。
【0102】
なお、Jitterキャリブレーションに限らず、Jitter-DFEキャリブレーションやDFEキャリブレーションを、ループバック接続によって実行することも可能である。
なお、以上では、キャリブレーションやDFE関連の情報を、Mode Select/Set FeatureやMode Sense/Get Featureなどのコマンドで授受する例を説明した。これに代えて、プロトコルを拡張することにより、キャリブレーションやDFE関連の情報を授受することも可能である。たとえば、SASプロトコルの場合、上記コマンドの代わりに、APTAのCoefficent change requestなどを拡張して代用し得る。
【0103】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0104】
1…ストレージデバイス、2…ホスト、3…伝送路(インターフェース)、4…管理用コンソールPC、5…クロスケーブル、11…コントローラ、12…NAND、13…DRAM、21…CPU、22…メインメモリ、23…インターフェースコントローラ、110…ホストインターフェース部、111,231…PHY、120…制御部、121…キャリブレーション処理部、130…NANDインターフェース部、140…SRAM、150…UART、200…キャリブレーション処理プログラム、302,402…DCC回路、303,403…レジスタ。