JP2010044814A - 記憶装置の制御方法及び記憶装置 - Google Patents

記憶装置の制御方法及び記憶装置 Download PDF

Info

Publication number
JP2010044814A
JP2010044814A JP2008206829A JP2008206829A JP2010044814A JP 2010044814 A JP2010044814 A JP 2010044814A JP 2008206829 A JP2008206829 A JP 2008206829A JP 2008206829 A JP2008206829 A JP 2008206829A JP 2010044814 A JP2010044814 A JP 2010044814A
Authority
JP
Japan
Prior art keywords
command
time
maximum retry
executed
execution
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.)
Withdrawn
Application number
JP2008206829A
Other languages
English (en)
Inventor
Keiichi Yorimitsu
圭一 依光
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.)
Toshiba Storage Device Corp
Original Assignee
Toshiba Storage Device 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 Toshiba Storage Device Corp filed Critical Toshiba Storage Device Corp
Priority to JP2008206829A priority Critical patent/JP2010044814A/ja
Priority to US12/476,885 priority patent/US20100037223A1/en
Publication of JP2010044814A publication Critical patent/JP2010044814A/ja
Withdrawn legal-status Critical Current

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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying

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)
  • Quality & Reliability (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Digital Magnetic Recording (AREA)

Abstract

【課題】コマンド実行時のタイムアウトを抑制する。
【解決手段】コマンドキューイング処理部26が、コマンド実行順を並び替える最適化ステップ(リオーダリング)が行われる第1のタイミングで、少なくとも1つのコマンドの最大リトライ時間をコマンドが入力されてからの経過時間(Tcurr)に応じて短縮する第1の調整と、実行対象のコマンドがHDD100内で実行される時点(デキュー時)の直前の第2のタイミングで、当該実行対象のコマンドの最大リトライ時間をコマンドが入力されてからの経過時間(Tcurr)に応じて短縮する第2の調整と、の少なくとも一方を実行するので、経過時間に応じて最大リトライ時間を短縮することにより、コマンドのタイムアウトを抑制することができる。
【選択図】図1

Description

本発明は、記憶装置の制御方法及び記憶装置に関し、特にホストから入力されるコマンドをキューイングして実行する記憶装置の制御方法、及び当該制御方法の実施に好適な記憶装置に関する。
近年の記憶装置(例えば、磁気ディスク装置)にあっては、上位装置(ホスト)とのインタフェースにシリアルATA(ANSI T13/Serial ATA International Organization(SATA−IO))のような高速シリアル転送インタフェースを使用している。このようなインタフェースにあっては、ホストと磁気ディスク装置の処理時間(オーバーヘッド)を削減するため、ホストから発行されたコマンド(ライトコマンド又はリードコマンド)をキューイングして実行するコマンドキューイング機能が設けられている。
このコマンドキューイング機能は、ホストからの入出力コマンドを磁気ディスク装置のキューにコマンド発行順に格納する(アウトオーダ)。また、装置側では媒体アクセス時間が短い順にコマンドを整列させるリオーダリングを行い、整列順にコマンドを取り出して順次実行し、コマンド実行が終了した段階でコマンド終了順に終了ステータスをホストに通知する。このリオーダリングは、具体的には、図10に示すように、現在実行中のコマンド(ここでは、Read1)を実行した後のヘッド位置が最も近い位置のデータ(LBA)から順次処理するように実行順を並べ替えるものである。
このようなコマンドキューイング機能は、高速シリアル転送インタフェースを使用する以前のパラレル転送インタフェースを使用した磁気ディスク装置においても、インタフェースとしてではなく、装置側の機能として実用化されている。この装置側機能として提供されているコマンドキューイング機能も、ホストからの入出力コマンドを発行順にキューイングしてアクセス実行時間の短い順に整列して実行する点は同一である。
ところで、ホストはコマンド発行後、一定時間内に当該コマンドの実行が完了することを期待しているため、その時間内にコマンドの実行が完了しない場合にはタイムアウトが発生したものと認識する。
ここで、制御装置内にキューイングされた複数コマンドの待ち時間は、コマンドを受領後、当該コマンドが選択実行されるまでの間に実行した全コマンドの実行時間の合計となる。例えば、図10においてRead6は実行順が7番目であるが、このRead6を受領した時点で、記憶装置でRead2が実行されていたとするならば、Read6の待ち時間は、(Read2の残りの実行時間)+(Read5の実行時間)+(Read3の実行時間)、となる。
上記のようなコマンドキューイングを行う記憶装置において、コマンド全体のスループットの低下を抑制する手法が、特許文献1に開示されている。
特開2001−249770号公報
上記特許文献1に記載の技術では、あるコマンドより後から受領したコマンドに追い越される回数の制限を設けておき、制限回数分のコマンドに追い越された段階で当該コマンドを優先的に実行する。また、各コマンドが受領した時刻を管理し、受領してから一定時間以上実行されていないコマンドがあった段階で、そのコマンドを優先的に実行するというものである。
しかしながら、上記技術を用いたとしても、優先的に実行するコマンドにおいてリトライが頻繁に発生した場合には、後に実行しようとしているコマンドがタイムアウトになるおそれがある。このようなタイムアウトがあった後は、ホストがリトライ処理を実行するが、リトライのオーバーヘッドにより性能低下が発生したり、最悪の場合、リトライが失敗することでホストが記憶装置を切り離す処理を実行する事態も発生しうる。
そこで本発明は上記の課題に鑑みてなされたものであり、コマンドのタイムアウトを抑制することが可能な記憶装置の制御方法及び記憶装置を提供することを目的とする。
本明細書記載の記憶装置の制御方法は、ホストから記憶装置に対して入力され、キューイングされたコマンドの実行順を並び替えて最適化する最適化ステップと、前記ホストからコマンドが入力されてからの経過時間に応じて、前記コマンドごとに予め設定されている最大リトライ時間を調整する調整ステップと、を含み、前記調整ステップは、前記最適化ステップが行われる第1のタイミングで、前記キューイングされているコマンドのうちの少なくとも1つのコマンドの最大リトライ時間を当該コマンドの経過時間に応じて短縮する第1の調整と、実行対象のコマンドが前記記憶装置で実行される直前の第2のタイミングで、当該実行対象のコマンドの最大リトライ時間を経過時間に応じて短縮する第2の調整と、の少なくとも一方を含んでいる。
これによれば、コマンド実行順を並び替える最適化ステップが行われる第1のタイミングで、少なくとも1つのコマンドの最大リトライ時間をコマンドが入力されてからの経過時間に応じて短縮する第1の調整と、実行対象のコマンドが記憶装置で実行される直前の第2のタイミングで、当該実行対象のコマンドの最大リトライ時間をコマンドが入力されてからの経過時間に応じて短縮する第2の調整と、の少なくとも一方を実行するので、経過時間に応じて最大リトライ時間を短縮することで、コマンド実行時のタイムアウトが抑制される。この場合、第1のタイミングで第1の調整を行うことで、最適化ステップを調整後の最大リトライ時間を考慮して実行することができ、また、第2のタイミングで第2の調整を行うことで、調整後の最大リトライ時間を考慮したコマンドの実行可否の判断を行うこともできる。
本明細書記載の記憶装置は、ホストから入力され、キューイングされたコマンドの実行順を並び替えて最適化する最適化手段と、前記ホストからコマンドが入力されてからの経過時間に応じて、前記コマンドごとに予め設定されている最大リトライ時間を調整する調整手段とを備え、前記調整手段は、前記最適化が行われる第1のタイミングで、前記キューイングされているコマンドのうちの少なくとも1つのコマンドの最大リトライ時間を当該コマンドの経過時間に応じて短縮する第1の調整と、実行対象のコマンドが前記記憶装置で実行される直前の第2のタイミングで、当該実行対象のコマンドの最大リトライ時間を経過時間に応じて短縮する第2の調整と、の少なくとも一方を実行する。
これによれば、最適化手段によりコマンド実行順を並び替える最適化が行われる第1のタイミングで、少なくとも1つのコマンドの最大リトライ時間をコマンドが入力されてからの経過時間に応じて短縮する第1の調整と、実行対象のコマンドが記憶装置で実行される直前の第2のタイミングで、当該実行対象のコマンドの最大リトライ時間をコマンドが入力されてからの経過時間に応じて短縮する第2の調整と、の少なくとも一方を実行するので、経過時間に応じて最大リトライ時間を短縮することで、コマンド実行時のタイムアウトが抑制される。この場合、第1のタイミングで第1の調整を行うことで、最適化ステップを調整後の最大リトライ時間を考慮して実行することができ、また、第2のタイミングで第2の調整を行うことで、調整後の最大リトライ時間を考慮したコマンドの実行可否の判断を行うこともできる。
本明細書に記載の記憶装置の制御方法及び記憶装置は、コマンドのタイムアウトを抑制することができるという効果を奏する。
以下、本発明の記憶装置の一実施形態について図1〜図9に基づいて詳細に説明する。
図1には一実施形態に係る記憶装置としてのハードディスクドライブ(Hard Disk Drive:HDD)100がブロック図にて示されている。この図1に示すように、HDD100は、ディスクエンクロージャ12Aと、制御ボード12Bと、を備えている。
ディスクエンクロージャ12Aは、磁気ディスク48a,48bと、スピンドルモータ44と、ボイスコイルモータ42と、アーム45と、ヘッド46a,46b,46c,46dと、ヘッドIC40と、を備えている。
スピンドルモータ44は、その回転軸において磁気ディスク(記憶媒体)48a,48bを保持しており、磁気ディスク48a,48bを一定速度で回転駆動する。
ボイスコイルモータ42は、アーム45を駆動するためのモータである。このボイスコイルモータ42により駆動されるアーム45の先端部には、ヘッド46a〜46dが搭載されている。ボイスコイルモータ42は、アーム45を介してヘッド46a〜46dを移動させることにより、磁気ディスク48a,48bの記録面に対するヘッドの位置決めを行う。
ヘッド46a〜46dは、ライトヘッドとリードヘッドが一体化された構造を有している。これらヘッド46a〜46dはヘッドIC40に対し信号線接続されており、ヘッドIC40は上位装置となるホスト10からのライトコマンドまたはリードコマンドに基づくヘッドセレクト信号で1つのヘッドを選択して書込みまたは読出しを行う。
ヘッドIC40には、ライト系についてはライトアンプが設けられ、リード系についてはプリアンプが設けられている。
制御ボード12Bは、MPU24と、MPU24のバス36に接続された、メモリ28、不揮発メモリ32、ホストインタフェース制御部14、バッファメモリ18を制御するバッファメモリ制御部16、ハードディスクコントローラとして機能するフォーマット制御部20、リードチャネル22、及びサーボ制御部34等と、を備えている。
メモリ28は、RAMを用いた制御プログラム及び制御データを格納する。不揮発メモリ32は、FROM等を用いた制御プログラムを格納する。また、リードチャネル22は、ライト変調部及びリード復調部として機能するものであり、サーボ制御部34は、前述したボイスコイルモータ42及びスピンドルモータ44を制御するものである。
上記のように構成されるHDD100では、ホスト10から入出力コマンドとしてライトコマンド又はリードコマンドを受領すると、ホスト10とホストインタフェース制御部34との接続に用いるシリアルATAなどの高速シリアル転送インタフェースのネイティブ・コマンド・キューイングとして提供されるコマンドキューイング機能により入出力処理が実行される。
上記高速シリアル転送インタフェースで提供されるコマンドキューイング機能を実現するため、本実施形態では、MPU24に最適化手段及び調整手段としてのコマンドキューイング処理部26が設けられ、これに対応してメモリ28にはコマンドキュー30が配置されている。コマンドキューイング処理部26は、ホスト10が発行した入出力コマンドであるライトコマンドやリードコマンドをコマンド発行順にコマンドキュー30に格納して、原則、アクセス時間の短い順に整列するリオーダリングを行う。そして、MPU24は、リオーダリングされた順にコマンドを取り出して実行し、実行終了後直ちにホスト10に対しコマンド終了を応答する。なお、コマンドキュー30は、例えば、128個のコマンドをスタックできるようになっている。
次に、上記のように構成されるHDD100におけるコマンド(ここでは、リードコマンド)の処理手順について図2〜図6に基づいて説明する。なお、図3は、図2の時刻A〜時刻Bにおいて実行されるコマンド解析及びキューイングに関するフローチャートである。
図2の時刻Aにおいて、ホスト10からコマンド(例えば、コマンドCMDnとする)が入力されると、ホストインタフェース制御部14は、当該コマンドCMDnを受領する(図3のステップS10)。この場合、MPU24のコマンドキューイング処理部26は、コマンド解析を実行する(図2では、コマンド解析に要する時間(コマンド解析時間)をTovhdと表している)。
このコマンド解析では、図3のステップS12に示すように、コマンドCMDnがキューイング対象か否かを判断し、ここでの判断が否定された場合(すなわち、コマンドCMDnがキューイング対象でない場合)には、ステップS16においてコマンドを即時実行する。一方、ここでの判断が肯定された場合(すなわち、コマンドCMDnがキューイング対象であった場合)には、コマンドキューイング処理部26が、コマンドCMDnの受領時刻(時刻A)を記録するとともに、コマンドCMDnをコマンドキュー30に格納(エンキュー(enqueue))する。
上記エンキューの後、所定時間(Tq)経過してコマンド実行タイミング(時刻C)に達すると、MPU24は、コマンドをコマンドキュー30からデキュー(dequeue)する(取り出す)。そして、MPU24は、デキューしたコマンドのアドレスに基づいてサーボ制御部34にシーク指示を出す。サーボ制御部34は、当該シーク指示に基づいて、ボイスコイルモータ42及びスピンドルモータ44を駆動制御して、シークを実行する(図2の時刻D参照)。これらシーク指示に要する時間とシークの完了までに要する時間は、図2において時間Tseekとして表されている。
なお、本実施形態では、上記シークを実行している間(時刻D〜時刻E)に、リオーダリングを実行するが、リオーダリングの具体的な方法については後に詳述する。
図2に戻り、シークが完了した後(時刻E後)、MPU24は、リードチャネル22、ヘッドIC40を介して、磁気ディスク48a又は48bからデータを読み出す(図2では、データの読み出し時間がデータ転送時間TXferとして示されている)。このデータの読み出しが成功した場合には、MPU24は、読み出したデータをホストに転送する(時刻G〜時刻H)が、データの読み出しに失敗した場合には、リトライを実行する(図2では、リトライ時間がTrtryとして示されている)。
なお、本実施形態では、各コマンドに対してリトライ可能な最大時間(最大リトライ時間)が設定されている。ここで、最大リトライ時間は、初期値Tmax(retry)のみが予め定められており、時間の経過とともに変動(減少)する値(時間)であるものとする。なお、最大リトライ時間の詳細については後述する。
以上のように、図2の処理においては、コマンド実行時間(Tcmd)の間に、コマンド解析、キューイング、シーク指示、シーク完了待ち、データ転送及びリトライ(必要に応じて)を実行する。したがって、コマンド実行時間Tcmdは、次式(1)にて表すことができる。
cmd=Tovhd+Tq+Tseek+TXfer+Trtry …(1)
なお、上記ではMPU24がホスト10から受領したコマンドが、リードコマンドである場合について説明したが、ライトコマンドであっても同様の処理が実行される。
次に、本実施形態におけるリオーダリング処理について、図4のフローチャートに沿って説明する。
このリオーダリング処理では、まず、ステップS22において、コマンドキューイング処理部26が、コマンドキュー30をスキャンする。ここで、スキャンとは、コマンドキューイング処理部26がコマンドキュー30に含まれるコマンドの1つを判断対象として選択する処理を意味する。次いで、ステップS24では、コマンドキューイング処理部26が全てのコマンドキュー30のスキャンを完了したか否かを判断する。ここでは、まだ1つ目のコマンドをスキャンしたのみなので、判断は否定され、ステップS26に移行する。
ステップS26では、コマンドキューイング処理部26が、判断対象のコマンドについてのコマンドスタック時間(判断対象のコマンドを受領してから経過した時間(Tcurr))が予め定められている最大リトライ時間の初期値(Tmax(retry))よりも小さいか否かを判断する。このステップS26における判断が肯定される場合とは、図5におけるケース1のような場合である。なお、図5に示される時間Texpはコマンドの期待実行時間(最速実行時間)を意味し、図2に示す時間Tseek,Tovhd,TXferを用いて次式(2)のように表すことができる。
exp=Tseek+Tovhd+TXfer …(2)
このステップS26の判断が肯定された場合には、ステップS28において、コマンドキューイング処理部26が、新たな最大リトライ時間(Tmax(retry)’)として、Tmax(retry)−Tcurrを設定し、ステップS22に戻る。すなわち、コマンドキューイング処理部26は、最大リトライ時間として、最大リトライ時間の初期値からスタック時間(経過時間)を差し引いた時間を設定した後、新たなコマンドキューをスキャンする。
これに対し、ステップS26の判断が否定された場合には、ステップS30に移行して、コマンドスタック時間Tcurrが最大リトライ時間の初期値Tmax(retry)と一致するか否かを判断する。このステップS30の判断が肯定されるのは、図5のケース2のような場合である。
このステップS30の判断が肯定されると、ステップS32においてコマンドキューイング処理部26が新たな最大リトライ時間Tmax(retry)’として、ステップS28と同様に、Tmax(retry)−Tcurrを設定するが、ここでは、Tmax(retry)=Tcurrであるので、Tmax(retry)’は0に設定される。すなわち、リトライを禁止とする。そして、次のステップS34では、MPU24が実行最優先フラグをセットして、ステップS42に移行する。
一方、ステップS30の判断が否定された場合には、ステップS36に移行して、コマンドスタック時間Tcurrが、最大リトライ時間の初期値Tmax(retry)とコマンド期待実行時間Texpの和よりも大きいか否か(Tcurr>Tmax(retry)+Texpか否か)を判断する。ここでの判断が肯定されるのは、図5のケース4のような場合であり、判断が否定されるのは、図5のケース3のような場合である。ここでの判断が肯定された場合(ケース4の場合)には、判断対象のコマンドを実行しても、必然的にタイムアウトになるため、当該判断対象のコマンドをエラー終了する。このエラー終了情報は、MPU24を介して、ホスト10に送信される。また、判断が否定された場合(ケース3の場合)には、ステップS38に移行する。
ステップS38では、コマンドキューイング処理部26が、新たな最大リトライ時間Tmax(retry)’として(Tmax(retry)+Texp−Tcurr)を設定し、次のステップS40において実行最優先フラグをセットする。
ところで、ケース3の場合、図5に示すように、コマンドスタック時間Tcurrは、最大リトライ時間の初期値Tmax(retry)よりも大きく、コマンド期待実行時間Texpを侵食しているため、ケース4と同様、このコマンドを実行しても必然的にタイムアウトになるようにも考えられる。しかしながら、コマンド期待実行時間Texpは、上式(2)のように、Texp=Tseek+Tovhd+TXferと表せるので、コマンドの実行順を変更することによりシーク時間Tseekを短縮できれば、コマンド期待実行時間Texpも短縮でき、タイムアウトを回避できる可能性も残されている。このような理由から、本実施形態では、リオーダリングの際にケース3のようなコマンドがあっても、そのコマンドを一律エラー終了しないこととしている。
ここまでの処理において、(i)全てのコマンドがTcurr<Tmax(retry)を満たしており、ステップS24の判断が肯定された場合、(ii)あるコマンドがTcurr=Tmax(retry)を満たしており、ステップS34で実行最優先フラグをセットした場合、(iii)あるコマンドがTmax(retry)<Tcurr<Tmax(retry)+Texpを満たしており、ステップS40で実行最優先フラグをセットした場合、の3通りの場合に、ステップS42に移行する。
ステップS42では、実行最優先フラグがセットされているか否かを判断する。ここで、上記(i)の場合(ステップS24の判断が肯定された場合)には、ステップS42は否定される。この場合、ステップS46において通常のリオーダリングが実行される。具体的には、例えば、図6(a)に示すように、コマンドCMD1〜CMD3がキューイングされている状態(及びコマンドCMD1が実行されている状態)で、コマンドCMD4を受領したとすると、次のリオーダリングにおいて、図6(b)に示すように、LBA順(CMD1→CMD4→CMD2→CMD3)に並び替える。
一方、上記(ii)、(iii)の場合(ステップS34又はステップS40を経由した場合)には、ステップS42の判断は肯定される。この場合、ステップS44に移行して、実行最優先フラグのセットされたコマンドを最優先とするリオーダリングを実行する。例えば、図6(a)に示すように、コマンドCMD1〜CMD3がキューイングされている状態(及びコマンドCMD1が実行されている状態)で、コマンドCMD4を受領したとし、コマンドCMD3に対して最優先フラグがセットされたとする。この場合には、次のリオーダリングにおいて、コマンドCMD3の順位をLBAに関わらず最優先とし、図6(c)に示すように、CMD1→CMD3→CMD4→CMD2の順に並び替える。
上記のようにしてリオーダリング(ステップS44又はステップS46)が完了した段階で、図4の処理が終了する。
本実施形態では、図4のような処理を実行することにより、ステップS28、S32、S38において最大リトライ時間を動的に変更するとともに、最大リトライ時間に応じて、実行最優先フラグをセットして、当該コマンドを最優先に処理するようにする。これにより、以下のような効果を得ることができる。
例えば、図7(a)に示すように、コマンドCMD5の実行前のリオーダリングによって実行順がCMD5→CMD4→CMD3→CMD2→CMD1と決定された後、そのままの順番で、かつ最大リトライ時間を初期値としたままコマンドを実行することとする。この場合、コマンドCMD1は8回リトライ(図7(a)では、リトライ回数が☆にて示されている)した段階で、タイムアウトしてしまう。これに対し、本実施形態のように、コマンドスタック時間Tcurrに応じて最大リトライ時間を変更(削減)することにより、例えば、図7(b)に示すように、コマンドCMD1を4回リトライした時点で、当該コマンドCMD1を強制的にエラー終了させる。このようにコマンドCMD1をタイムアウト前にエラー終了させることで、HDD100からホスト10に対してエラー報告を行うことができる。これにより、タイムアウトしたときには行われない、ホスト側において行われる障害解析などにより、エラー原因の特定を行うことが可能となる。
また、例えば、図8(a)に示すように、コマンドCMD5を実行した段階で、コマンドCMD1がタイムアウトになりそうな場合(すなわち、ステップS32のように最大リトライ時間が0になる場合)に、本実施形態では、コマンドCMD1の最優先フラグをセットする。この場合、図8(b)に示すように、コマンドCMD1の実行順を最優先とすることで、コマンド1及びその他のコマンドのタイムアウトを回避することが可能となる。
次に、本実施形態におけるデキュー時(コマンド実行タイミング(図2の時刻C))の処理について、図9に基づいて説明する。
まず、図9のステップS50では、MPU24が実行対象のコマンドを読み出し、次のステップS52では、コマンド期待実行時間Tcurrが最大リトライ時間の初期値Tmax(retry)よりも小さいか否かを判断する。
ここでの判断が肯定された場合(図5のケース1の場合)には、ステップS54において、図4のステップS28と同様、コマンドキューイング処理部26が、新たな最大リトライ時間(Tmax(retry)’)として、Tmax(retry)−Tcurrを設定する。そして、MPU24は、実行対象のコマンドを実行する(ステップS60)。一方、ステップS52の判断が否定された場合には、ステップS56に移行する。
ステップS56では、コマンドスタック時間Tcurrが最大リトライ時間の初期値Tmax(retry)と一致するか否かを判断し、判断が肯定された場合(ケース2の場合)には、ステップS58に移行する。
ステップS58では、図4のステップ32と同様、新たなTmax(retry)’として0を設定する。すなわち、リトライを禁止にする。そして、MPU24は、このリトライ禁止の状態で、ステップS60においてコマンドを実行する。
一方、ステップS56の判断が否定された場合(図5のケース3,ケース4の場合)には、コマンドを実行するために必要な最低限の時間(コマンド期待実行時間Texp)がない(すなわち、コマンド期待実行時間Texpがコマンドスタック時間Tcurrに侵食されている)ので、実行対象のコマンドを強制的にエラー終了して、当該エラー終了をホスト10に通知する。
上記のように、デキュー時にも最大リトライ時間を調整する処理を実行することにより、適切な最大リトライ時間の下で、コマンドを実行することが可能となる。これにより、コマンドのタイムアウトの発生を抑制することができる。また、ステップS56のように、コマンド実行前にコマンドをエラー終了することにより、タイムアウトの蓋然性の高いコマンドの実行を事前に回避することができるので、コマンド実行の効率化を図ることができる。
以上、詳細に説明したように、本実施形態によると、コマンド実行順を並び替えるリオーダリング時に、スタックされている全コマンドのうちの少なくとも1つのコマンドの最大リトライ時間を、コマンドが入力されてからの経過時間に応じて調整(短縮)するので、コマンド実行時のタイムアウトを抑制することができる。また、本実施形態によると、コマンドを実行するデキュー時にも、実行するコマンドの最大リトライ時間をコマンドが入力されてからの経過時間に応じて調整(短縮)するので、実行するコマンドのタイムアウトを抑制することができる。この場合、タイムアウト前にコマンドをエラー終了することで、ホスト10に対してエラー報告を行うことができるので、ホスト10側において行われる障害解析などにより、エラー原因を特定することが可能である。
また、本実施形態によると、リオーダリング時において、コマンドスタック時間が最大リトライ時間の初期値Tmax(retry)以上となっているコマンドを最優先に実行するので、最大リトライ時間が確保できなくなったコマンドを最優先で実行することでタイムアウトの発生を抑制することができる。
また、本実施形態では、コマンドスタック時間が、最大リトライ時間の初期値Tmax(retry)を超過していない場合に、コマンドキューイング処理部26が、最大リトライ時間の初期値Tmax(retry)からスタック時間Tcurrを差し引いた時間を新たな最大リトライ時間として設定するので、簡易な計算で最大リトライ時間を適切に設定することが可能である。
また、本実施形態では、リオーダリング時において、コマンドスタック時間Tcurrが、最大リトライ時間の初期値Tmax(retry)とコマンド実行時間Texpとの和を超過したコマンドを、強制的にエラー終了するので、タイムアウトが必然的に発生するような場合にまでコマンドを実行してしまうような事態を未然に回避することができる。これにより効率的なコマンド実行処理を実現することが可能である。
また、デキュー時において(コマンド実行タイミングで)、実行対象のコマンドのコマンドスタック時間Tcurrが、最大リトライ時間の初期値Tmax(retry)を超過している場合に、当該コマンドを強制的にエラー終了するので、この点からも、効率的なコマンド実行処理を実現することが可能である。
なお、上記実施形態では、リオーダリング時及びデキュー時(コマンド実行タイミング)のそれぞれにおいて最大リトライ時間の調整を行うこととしたが、これに限らず、いずれか一方のタイミングでのみ最大リトライ時間の調整を行うこととしても良い。
また、上記実施形態では、最大リトライ時間の調整処理と、最大リトライ時間とコマンドスタック時間との関係から最優先コマンドを設定する処理との両方を行う場合について説明したが、これに限らず、最大リトライ時間の調整のみを行うこととしても良い。
なお、コマンドにおける最大リトライ時間の初期値Tmax(retry)や、コマンド期待実行時間Texpなどの時間は、コマンドごとに異なっているのが通常であるが、一部又は全部が同一であっても良い。
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
一実施形態に係るHDDの構成を示すブロック図である。 コマンド処理の手順を示す図である。 図2の時刻A〜時刻Bの間におけるMPUの処理を示すフローチャートである。 リオーダリング時のMPUの処理を示すフローチャートである。 ケースごとの、最大リトライ時間の初期値Tmax(retry)及びコマンド気体実行時間Texpと、コマンドスタック時間Tcurrとの関係を示す概念図である。 リオーダリング方法について説明するための図である。 一実施形態におけるリオーダリングによる効果を示す図(その1)である。 一実施形態におけるリオーダリングによる効果を示す図(その2)である。 デキュー時の処理を示すフローチャートである。 従来のリオーダリング方法について示す図である。
符号の説明
10 ホスト
26 コマンドキューイング処理部(最適化手段、調整手段)
100 HDD(記憶装置)

Claims (6)

  1. ホストから記憶装置に対して入力され、キューイングされたコマンドの実行順を並び替えて最適化する最適化ステップと、
    前記ホストからコマンドが入力されてからの経過時間に応じて、前記コマンドごとに予め設定されている最大リトライ時間を調整する調整ステップと、を含み、
    前記調整ステップは、前記最適化ステップが行われる第1のタイミングで、前記キューイングされているコマンドのうちの少なくとも1つのコマンドの最大リトライ時間を当該コマンドの経過時間に応じて短縮する第1の調整と、実行対象のコマンドが前記記憶装置で実行される直前の第2のタイミングで、当該実行対象のコマンドの最大リトライ時間を経過時間に応じて短縮する第2の調整と、の少なくとも一方を含むことを特徴とする記憶装置の制御方法。
  2. 前記第1、第2の調整では、
    前記コマンドの経過時間が、前記最大リトライ時間の初期値を超過していない場合には、当該最大リトライ時間の初期値から前記経過時間を差し引いた時間を新たな最大リトライ時間として設定することを特徴とする請求項1に記載の記憶装置の制御方法。
  3. 前記最適化ステップでは、前記キューイングされているコマンドのうちの特定コマンドの前記経過時間を抽出し、
    前記特定コマンドの経過時間が、前記最大リトライ時間の初期値以上の場合に、前記特定コマンドを最優先で実行するコマンドに設定することを特徴とする請求項1又は2に記載の記憶装置の制御方法。
  4. 前記第1のタイミングで、前記全コマンドのうちの特定のコマンドの経過時間が、前記最大リトライ時間の初期値とコマンドの実行に必要なコマンド実行時間との和を超過した場合に、前記特定コマンドをエラー終了する第1のエラー終了ステップを更に含む請求項1〜3のいずれか一項に記載の記憶装置の制御方法。
  5. 前記第2のタイミングで、前記実行するコマンドの経過時間が、前記最大リトライ時間の初期値を超過した場合に、当該実行するコマンドをエラー終了する第2のエラー終了ステップを更に含む請求項1〜4のいずれか一項に記載の記憶装置の制御方法。
  6. ホストから入力され、キューイングされたコマンドの実行順を並び替えて最適化する最適化手段と、
    前記ホストからコマンドが入力されてからの経過時間に応じて、前記コマンドごとに予め設定されている最大リトライ時間を調整する調整手段とを備え、
    前記調整手段は、前記最適化が行われる第1のタイミングで、前記キューイングされているコマンドのうちの少なくとも1つのコマンドの最大リトライ時間を当該コマンドの経過時間に応じて短縮する第1の調整と、実行対象のコマンドが実行される直前の第2のタイミングで、当該実行対象のコマンドの最大リトライ時間を前記経過時間に応じて短縮する第2の調整と、の少なくとも一方を実行することを特徴とする記憶装置。
JP2008206829A 2008-08-11 2008-08-11 記憶装置の制御方法及び記憶装置 Withdrawn JP2010044814A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008206829A JP2010044814A (ja) 2008-08-11 2008-08-11 記憶装置の制御方法及び記憶装置
US12/476,885 US20100037223A1 (en) 2008-08-11 2009-06-02 Method for controlling storage apparatus and storage apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008206829A JP2010044814A (ja) 2008-08-11 2008-08-11 記憶装置の制御方法及び記憶装置

Publications (1)

Publication Number Publication Date
JP2010044814A true JP2010044814A (ja) 2010-02-25

Family

ID=41654117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008206829A Withdrawn JP2010044814A (ja) 2008-08-11 2008-08-11 記憶装置の制御方法及び記憶装置

Country Status (2)

Country Link
US (1) US20100037223A1 (ja)
JP (1) JP2010044814A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015130150A (ja) * 2013-10-29 2015-07-16 シーゲイト テクノロジー エルエルシー メモリデバイスのための装置、メモリデバイスおよびメモリデバイスの制御のための方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8879191B1 (en) * 2012-11-14 2014-11-04 Western Digital Technologies, Inc. Disk drive modifying rotational position optimization algorithm to achieve target performance for limited stroke
US9208010B2 (en) 2013-07-01 2015-12-08 International Business Machines Corporation Failure interval determination
US9477408B1 (en) 2015-04-14 2016-10-25 Samsung Electronics Co., Ltd. Memory systems having improved out-of-order execution of commands and methods for operating the same
CN106547635B (zh) * 2015-09-18 2020-10-09 阿里巴巴集团控股有限公司 一种作业的操作重试方法和装置
KR102526608B1 (ko) * 2018-02-27 2023-05-02 에스케이하이닉스 주식회사 전자 장치 및 그것의 동작 방법
US11061754B2 (en) * 2019-08-06 2021-07-13 Alteryx, Inc. Error handling during asynchronous processing of sequential data blocks

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5603050A (en) * 1995-03-03 1997-02-11 Compaq Computer Corporation Direct memory access controller having programmable timing
US6332204B1 (en) * 1999-03-31 2001-12-18 International Business Machines Corporation Recovering and relocating unreliable disk sectors when encountering disk drive read errors
JP3712567B2 (ja) * 1999-07-23 2005-11-02 富士通株式会社 記憶装置
JP3634809B2 (ja) * 2002-02-28 2005-03-30 株式会社東芝 Av用途のディスク記憶装置及び同装置におけるセクタエラー時の処理方法
US7096289B2 (en) * 2003-01-16 2006-08-22 International Business Machines Corporation Sender to receiver request retry method and apparatus
US7225293B2 (en) * 2003-06-16 2007-05-29 Hitachi Global Storage Technologies Netherlands B.V. Method, system, and program for executing input/output requests
JP2005215729A (ja) * 2004-01-27 2005-08-11 Hitachi Global Storage Technologies Netherlands Bv データ伝送制御方法及び記憶装置
US7640412B2 (en) * 2007-01-04 2009-12-29 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for improving the reliability of file systems
JP2008250961A (ja) * 2007-03-30 2008-10-16 Nec Corp 記憶媒体の制御装置、データ記憶装置、データ記憶システム、方法、及び制御プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015130150A (ja) * 2013-10-29 2015-07-16 シーゲイト テクノロジー エルエルシー メモリデバイスのための装置、メモリデバイスおよびメモリデバイスの制御のための方法

Also Published As

Publication number Publication date
US20100037223A1 (en) 2010-02-11

Similar Documents

Publication Publication Date Title
JP2010044814A (ja) 記憶装置の制御方法及び記憶装置
US7373460B2 (en) Media drive and command execution method thereof
US7664884B2 (en) Media drive that creates a transfer unnecessary period, and power saving method thereof
EP1072970B1 (en) A method and system for issuing commands to and ordering commands on a disk drive
US7320050B2 (en) Data transmission control method and storage device
US8341374B2 (en) Solid state drive and related method of scheduling operations
JP4991605B2 (ja) データ記憶装置およびその制御方法
JP2009116853A (ja) 背後供流要求のコマンド待ち行列管理
JP2010080021A (ja) 記録制御方法及び記録制御部、並びに記憶装置
US8447927B2 (en) Storage system, control device and storage device
JP2001100935A (ja) ディスク装置およびその制御方法
JP2006127300A (ja) ホストと記憶デバイスとの間における通信方法、記憶デバイス、ホスト、記憶デバイスとホストを備えるシステム
US6567886B1 (en) Disk drive apparatus and control method thereof
US20040015878A1 (en) Reordering controller, reordering method and storage apparatus
JP5030387B2 (ja) データ記憶装置
JP2010282422A (ja) データ記憶装置及びデータ転送制御方法
US20080016429A1 (en) Data storage device and error correction method
JP2001022529A5 (ja) マルチドライブ記憶システム及びディスクドライブ装置の制御方法
JP4858926B2 (ja) 媒体記憶装置のリード/ライト処理方法及び媒体記憶装置
US9069721B2 (en) Storage control device, computer-readable recording medium, and method thereof
US20100153664A1 (en) Controller and storage device for changing sequential order of executing commands
JP2007122816A (ja) 記憶装置、制御方法及びプログラム
US20110113284A1 (en) Read retry method and apparatuses capable of performing the read retry method
JP2003316523A (ja) データ記憶装置、実行コマンドの選択方法およびデータ処理方法
JP2005050006A (ja) 記憶システム及びその動作最適化方法

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20111101