JP2009266152A - コントローラ、ハードディスクドライブおよびコントロール方法 - Google Patents
コントローラ、ハードディスクドライブおよびコントロール方法 Download PDFInfo
- Publication number
- JP2009266152A JP2009266152A JP2008118183A JP2008118183A JP2009266152A JP 2009266152 A JP2009266152 A JP 2009266152A JP 2008118183 A JP2008118183 A JP 2008118183A JP 2008118183 A JP2008118183 A JP 2008118183A JP 2009266152 A JP2009266152 A JP 2009266152A
- Authority
- JP
- Japan
- Prior art keywords
- request
- grace
- value
- data
- time
- 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
Images
Classifications
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0656—Data buffering 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/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
【課題】メモリ周辺だけでなくドライブ全体としての状況変化にリアルタイムに対応して、共有資源の利用効率を向上する。
【解決手段】このデータ転送システムは、ホスト9に接続されたハードディスクドライブ2を有する。ハードディスクドライブ2は、HDC3とディスクユニット8を有する。HDC3は、ホスト9およびディスクユニット8からアクセスされるDRAM70と、DRAM70にアクセスするためのリクエストを出力するとともに、リクエストがあとどれくらい受け付けられないとこの装置の動作に影響を与えるかを示す猶予値を出力する複数のリクエスト発生ユニット11,21,35と、これらのリクエスト発生ユニット11,21,35から入力された猶予値どうしを比較して、猶予が少ないリクエストにアクセス権を与えるリクエストアービター40とを備える。
【選択図】図1
【解決手段】このデータ転送システムは、ホスト9に接続されたハードディスクドライブ2を有する。ハードディスクドライブ2は、HDC3とディスクユニット8を有する。HDC3は、ホスト9およびディスクユニット8からアクセスされるDRAM70と、DRAM70にアクセスするためのリクエストを出力するとともに、リクエストがあとどれくらい受け付けられないとこの装置の動作に影響を与えるかを示す猶予値を出力する複数のリクエスト発生ユニット11,21,35と、これらのリクエスト発生ユニット11,21,35から入力された猶予値どうしを比較して、猶予が少ないリクエストにアクセス権を与えるリクエストアービター40とを備える。
【選択図】図1
Description
本発明は、例えばハードディスクドライブ、画像処理装置、DVDプレーヤなどの電子機器に用いるコントローラ、ハードディスクドライブおよびコントロール方法に関する。
一般に、ハードディスクドライブは、データをハードディスクに書き込んだり読み出す前に内蔵された一時格納用のメモリなどの共有資源にデータを一時的に蓄積し、この共有資源が接続されたバスを優先的に使用する権利(バス優先権)を獲得するためのリクエストを調停するバス制御機能を有している。
従来のバス制御技術としては、例えば一時的にデータを格納する格納メモリのデータ量と、複数の要求元が必要とするデータ転送速度とに応じてバス優先権を切り換える技術が公開されている(例えば特許文献1参照)。
ところで、ハードディスクドライブの場合、ドライブが接続されたホストコンピュータがポーズ状態になることや、駆動するディスク上のサーボセクタの位置にヘッドが達したときにデータ転送が中断することがある。
特開2006−99473号公報
しかしながら、上記従来の技術では、一時格納用のメモリのデータ量とデータ転送速度に起因したパラメータでバス優先権を決めているため、例えばホストコンピュータからデータ転送のポーズがかかるといった外部要因やディスクのサーボの影響などの内部要因でデータ転送が中断してもバス優先権が他に移らず、他のリクエストが待たされ続けることになり、その間、一時格納用のメモリなどの共有資源の利用効率が低下するという問題があった。
本発明はこのような課題を解決するためになされたもので、共有資源の利用効率を向上することのできるコントローラ、ハードディスクドライブおよびコントロール方法を提供することを目的とする。
上記の課題を解決するために、本発明のコントローラは、一つ以上の機器からアクセスされる共有資源と、前記共有資源に前記機器がアクセスするためのリクエストを生成するとともに、前記リクエストがあとどれくらい受け付けられないとこの装置の動作に影響を与えるかを示す猶予値を出力する複数のリクエスト発生ユニットと、前記複数のリクエスト発生ユニットからの複数のリクエストおよび猶予値が入力されたとき、前記猶予値どうしを比較して、猶予が少ないリクエストに前記共有資源へのアクセス権を与える調停ユニットとを具備する。
本発明のハードディスクドライブは、請求項1記載のコントローラにより駆動されるハードディスクユニットを具備する。
本発明のコントロール方法は、一つ以上の機器から共有資源にアクセスするためのリクエストと、前記リクエストがあとどれくらい受け付けられないとこの装置の動作に影響を与えるかを示す猶予値とを発生し、前記複数のリクエストおよび猶予値が発生したときに、前記猶予値どうしを比較して、猶予が少ないリクエストに前記共有資源へのアクセス権を与えることを特徴とする。
本発明のコントロール方法は、一つ以上の機器から共有資源にアクセスするためのリクエストと、前記リクエストがあとどれくらい受け付けられないとこの装置の動作に影響を与えるかを示す猶予値とを発生し、前記複数のリクエストおよび猶予値が発生したときに、前記猶予値どうしを比較して、猶予が少ないリクエストに前記共有資源へのアクセス権を与えることを特徴とする。
本発明によれば、メモリ周辺だけでなくドライブ全体としての状況変化に迅速に対応して、共有資源の利用効率を向上することができる。
以下、本発明の実施の形態について図面を参照しながら説明する。図1は本発明の一実施形態に係るデータ転送システムの構成を示すブロック図である。
図1に示すように、このデータ転送システム1は、ハードディスクドライブ2とこのハードディスクドライブ2が接続されたホストコンピュータ9(以下「ホスト9」と称す)とを有している。
なお、図中において、太線はデータの流れを示し、白地が入った線は制御信号(コントロールコマンド、リクエストなど)または情報(ステータス)等を示す。
ホスト9は、この例においては、ハードディスクドライブ2に対してデータ転送要求をかける要求元となる。
ハードディスクドライブ2は、コントローラの一つとしてのハードディスクコントローラ3(以下「HDC3」と称す)と、ハードディスクユニット8(以下「ディスクユニット8」と称す)とを有している。
ハードディスクドライブ2は、ホスト9からのデータ転送要求に対してディスクユニット8に記憶されたデータを読み出してホスト9へ送る。
HDC3は、FIFOバッファメモリ12(以下「FIFO12」と称す)を介してデータを要求元の機器(ディスクユニット8など)へ供給する第1回路群10と、FIFOバッファメモリ22(以下「FIFO22」と称す)を介してデータを要求元の機器(ホスト9など)へ供給する第2回路群20と、セントラル・プロセッシング・ユニット30(以下「CPU30」と称す)と、プログラムデータを先読みするためのキャッシュであるSRAM31と、リクエスト調停ユニットとしてのリクエストアービター40と、共有資源の一つであるダイナミック・ランダム・アクセス・メモリ70(以下「DRAM70」と称す)と、ホスト9とシリアルATAケーブル(SATAケーブル)及びSATAインターフェースボードなどのインターフェースで接続されるインターフェースコントローラ61を含むデータ処理用の回路群(図示せず)と、ディスクユニット8とインターフェースバス(内部バス)を介して接続されたインターフェースコントローラ51を含むデータ処理用の回路群(図示せず)とを有している。
ディスクユニット8は、ヘッド81、ランプ82、ボイスコイルモータ83、ディスク84、スピンドルモータ85、ヘッドアンプ86、モータ駆動部(モータドライバー)87などを有している。ディスクユニット8は、HDC3により駆動制御される。
インターフェースコントローラ51,61は、それぞれのインターフェースからのデータを処理する回路群の中の一つであり、この他の回路群としては、例えばリードチャネル回路、誤り訂正回路、デコード回路…などがある。
インターフェースコントローラ51は、内部バスを通じて行われるディスクユニット8との通信でディスクユニット8の動作状況(ヘッド81がデータライト中かデータリード中かサーボセクタに入ったかといったディスクユニット8の状態)を検出し、検出された状態に応じた係数(動作状況係数A)を第1回路群10へ通知(伝達)する。このインターフェースコントローラ51は、ディスクユニット8とのインターフェースも兼ねる。
第1回路群10は、リクエスト発生ユニット11と、FIFO12とを有している。この例では、説明をわかりやすくするために第1回路群10は、ディスクユニット8に対してデータリードの処理を行うものとする。リードされたデータは、いったんDRAM70に格納される。したがってリクエスト発生ユニット11は、DRAM70に対するデータライトのリクエストを発生する。
FIFO12へデータを供給する供給元(この場合、ディスクユニット8)からの、その時点における最速のスループット:α Byte/s、FIFO12の残りバイト数:aおよびライトデータが供給されるデータ供給元とのインターフェースにおける動作状況係数:Aとすると、リクエスト発生ユニット11は、a/α×Aという計算式で猶予度を求め、計算結果の猶予度の値をリクエストアービター40へ常に出力する。上記した猶予度を求める計算式は一例であり、他にも猶予度の求め方はさまざま考えられる。
FIFO12は、入力されたデータを順に格納し、その順で出力する先入れ先出しのバッファメモリである。つまりFIFO12は、ディスクユニット8などの機器から供給されるデータを順次バッファリングしてその順に出力するバッファである。
インターフェースコントローラ61は、SATAインターフェースを通じて行われるホスト9との通信でホスト9の通信状況(ビジー状態かポーズ状態(ウェイト状態)か転送終了状態かなどといったホスト9の状態)を検出し、検出された状態に応じた係数(動作状況係数B)を生成して第2回路群20へ通知(伝達)する。ビジー状態とは実際にデータを転送している状態を示す。
一例としては、例えばビジー状態ならば動作状況係数B=「1」、ポーズ状態ならば動作状況係数B=「3」、転送終了ならば動作状況係数B=「5」などとった値をインターフェースコントローラ61に予め設定しておくものとする。
第2回路群20は、リクエスト発生ユニット21と、FIFO22とを有している。この例では、説明をわかりやすくするために第2回路群20は、ホスト9からの要求によりディスクユニット8に対してデータリードのリクエストを発生するものとする。リクエスト発生ユニット21は、ディスクに対するデータリードのリクエストを発生する。
FIFO22からデータを持って行く送信先(この場合、ホスト9)の、その時点における最速のスループット:β Byte/s、FIFO22に現在存在している有効バイト数:b、およびリードデータが提供されるデータ提供先の機器(ホスト9)とのインターフェースにおける動作状況係数Bとすると、リクエスト発生ユニット21は、b/β×Bという計算式で猶予度を求め、計算結果の猶予度の値をリクエストアービター40へ常に出力する。
FIFO22は、入力されたデータを順に格納し、その順で出力する先入れ先出しのバッファメモリである。つまりFIFO22は、ホスト9などの機器へ供給するデータを順次バッファリングしてその順に出力するバッファである。
CPU30は、リミット値記憶部32と、カウンタ33と、タイミングコントローラ34と、リクエスト発生ユニット35とを有している。
リミット値記憶部32には、DRAM70をリフレッシュする限界の時間値(リミット値)が記憶されている。この例では、DRAM70のリフレッシュタイミングが例えば10μsecであるものとすると、リミット値はそれよりも少ない値、例えば9μsecであり、この値がリミット値記憶部32に記憶されている。カウンタ33は、0〜9μsecを繰り返しカウントする。
タイミングコントローラ34は、リクエストを発生させるタイミング信号をリクエスト発生ユニット35に与える。例えば9μsec毎にタイミング信号を出力する。
リクエスト発生ユニット35は、リミット値記憶部32からリミット値を読み出して、カウンタ33によりカウントされた値を引き算して猶予度(given Time)を求め、猶予度の値を常にリクエストアービター40へ出力する。
また、リクエスト発生ユニット35は、タイミングコントローラ34からタイミング信号が与えられたときに、リクエスト(例えばリフレッシュサイクルなどといったコマンド)をリクエストアービター40へ出力する。
CPU30は、ディスクユニット8を制御してデータ転送などを行う。またCPU30は、DRAM70に対して例えば10μsec毎にリフレッシュコマンドを発行し、DRAM70をリフレッシュする。このリフレッシュ動作はシステムにとって重要であり、リフレッシュタイミングを逃した場合、システムの動作に影響が最も及ぶため、リクエスト発生ユニット35から受け取った猶予度の値が小さい場合は最も優先すべきリクエストとなる。
リクエストアービター40は、一つ以上のリクエスト発生ユニット11,21,35からリクエストとその猶予度が入力されたとき、猶予度の数値(猶予値)どうしを比較して、猶予が少ないリクエストを選定し、そのリクエストの発行元にDRAM70へのアクセス権を与えるため、アクセス許可信号(グラント:Gnt)を、選定したリクエストの発生元へ返信する。
このデータ転送システムの場合、リクエストの発生元のタイプを大別すると3つに分けられる。
(タイプI)第1回路群10
リクエストが、DRAM70へのライトリクエストであり、リクエストの発生元がデータの送信用のFIFO12を持っているタイプである。この場合、第1回路群10のリクエスト発生ユニット11は、FIFO12の残りバイト数aを、ディスクユニット8からFIFO12へのそのときの最速のスループットαの値で割り算し、その値に動作状況係数Aを掛け算することで猶予度を算出し、その猶予度の値をリクエストアービター40に送る。
リクエストが、DRAM70へのライトリクエストであり、リクエストの発生元がデータの送信用のFIFO12を持っているタイプである。この場合、第1回路群10のリクエスト発生ユニット11は、FIFO12の残りバイト数aを、ディスクユニット8からFIFO12へのそのときの最速のスループットαの値で割り算し、その値に動作状況係数Aを掛け算することで猶予度を算出し、その猶予度の値をリクエストアービター40に送る。
(タイプII)第2回路群20
リクエストが、DRAM70へのリードリクエストであり、リクエストの発生元がデータ受信用のFIFO22を持っているタイプである。この場合、第1回路群20のリクエスト発生ユニット21は、FIFO22に現在存在している有効バイト数bを、FIFO22からホスト9へのそのときの最速のスループットβで割り算し、その値に動作状況係数Bを掛け算することにより猶予度を算出し、その猶予度の値をリクエストアービター40に送る。
リクエストが、DRAM70へのリードリクエストであり、リクエストの発生元がデータ受信用のFIFO22を持っているタイプである。この場合、第1回路群20のリクエスト発生ユニット21は、FIFO22に現在存在している有効バイト数bを、FIFO22からホスト9へのそのときの最速のスループットβで割り算し、その値に動作状況係数Bを掛け算することにより猶予度を算出し、その猶予度の値をリクエストアービター40に送る。
なお、上記タイプIとタイプIIは、いずれもFIFOを用いるタイプであり、各回路群のリクエスト発生ユニットとしては一つのハードウェアとしてまとめて実現することも可能である。
(タイプIII)CPU30
FIFOなどは存在しないが、リクエストアービター40へ送ったリクエストが、一定時間以内に受け付けられることを期待するリクエストである。この場合に、CPU30のリクエスト発生ユニット35は、リクエストが受け付けられるべき時間から現在時刻を引き算して猶予値を算出し、その値をリクエストアービター40に送る。つまり猶予値は、リクエストが受け付けられるべき時間−現在時刻で求めることができる。
FIFOなどは存在しないが、リクエストアービター40へ送ったリクエストが、一定時間以内に受け付けられることを期待するリクエストである。この場合に、CPU30のリクエスト発生ユニット35は、リクエストが受け付けられるべき時間から現在時刻を引き算して猶予値を算出し、その値をリクエストアービター40に送る。つまり猶予値は、リクエストが受け付けられるべき時間−現在時刻で求めることができる。
すなわち、CPU30の場合、ある時間以内にリクエストがリクエストアービター40に受け付けられない場合に、システム(ハードディスクドライブ2全体)に影響を与える恐れのあるリクエストを発行する。
タイプIIIにおいて、DRAMリフレッシュの例以外の例としては、例えばSRAM31などにデータをキャッシュする機構や、CPU30のコードキャッシュなどもあげられる。CPU30のコードキャッシュでは、CPU30のリードアドレスポインタと、キャッシュされている最後のアドレスまでの差が、FIFO有効バイト数とみなすことができ、この場合は、タイプIIと同様と考えられる。
以下、図2〜図4を参照してこのデータ転送システムの動作を説明する。まず、機器の状況計数を得る一つの例として、ディスクユニット8のデータリード動作の例について説明する。
図2に示すように、例えばディスク84には、サーボセクタ92とディスクリード対象(ターゲット)のセクタ93が設けられている。この例では、ターゲットのリードセクタ93は、1〜3,6〜10とし、ヘッド81がこの外周位置のセクタ92,93を読み取るものとする。
図3に示すタイミングチャートにおいて、(A)はサーボゲートの開閉に伴う信号の変化を示す。(B)はリードゲートの開閉に伴う信号の変化を示す。(C)はディスクインターフェースバス(内部バス)上のデータを示す。(D)は状況計数の変化を示す。状況計数は例えばデータリード中が「1」、データリード中断中が「3」、データリード終了後が「5」などとする。(E)はFIFO出力データバスのデータを示す。
ディスク84の回転でサーボセクタ92上にヘッド81がくると、CPU30は、サーボゲートを開き(タイミングチャート(A)の信号がHIになる)、サーボセクタ92上に記録されている位置情報を読み取る。このときの動作状況をインターフェースコントローラ51が監視している。
CPU30は、読み取った位置情報を基に、ヘッド81の位置を感知し、ターゲットのリードセクタ93がある位置にあわせてリードゲートを開く((B)の信号がHIになる)。
インターフェースコントローラ51は、この動作に合わせて、リードゲートが開くべきタイミングの少し手前の位置で状況係数を変化させる。
具体的には、図3のタイミングチャートの、例えば符号95のタイミングでリードゲートが開き、ディスク84からデータが読み取られるが、このタイミングの少し手前の符号96の位置で状況係数“3”を“1”に変化させる。
なお、処理を迅速化するためには、リクエスト発生ユニット11,21において、スループットに応じた猶予度を都度計算するのではなく、猶予度を予め正規化しておき、動作状況計数A,Bをかけ算するだけ、つまり割り算(除算)を行わなくても良いようにしておくことで、さらに処理を高速化できる。
複数のリクエスト発行元のうち、1つ目のものの最速のスループットが30MB/s、2つ目のものの最速のスループットが60MB/s、3つ目のものの最速のスループットが120MB/sといったスループットがそれぞれあったものとすると、FIFO段数×{4, 2, 1}がそれぞれのリクエスト発行元の猶予度となる。
動作状況係数A,Bは、FIFOのインターフェースでなく、データ送受信の大元(ホスト9やディスクユニット8)のインターフェースの動作状態に応じて、猶予度に対し演算を加えるための係数である。
動作状況係数A,Bは、例えばディスクユニット8において、ヘッド81の位置がターゲットセクタに到達してはじめてディスクユニット8へのデータ転送が行われる。また、1セクタ転送中であったとしても、例えばサーボ領域ではデータ転送が行われない。
また、ディスクユニット8では、あるセクタから別のセクタまでリード動作をスキップさせることもある。このように、DRAM70へリードデータ転送中であっても、ディスクユニット8とのインターフェースではデータ転送を頻繁に、かつ比較的長時間中断していることも多い。
また、ディスクユニット8に対するデータのリード動作が完了した場合、それらはECC訂正など処理を終えた後にDRAM70へと転送される。そのレイテンシは非常に大きいが、このような場合、ディスクユニット8からのデータのリード動作が完了していれば、以後のデータの読み出しは行わないので、DRAM70への転送リクエストを少し余裕をもって処理してもシステムの動作に影響を与えることがない。
このように、インターフェースにおいて実際のデータ転送が中断もしくは完了している場合、ある演算(例えば通常は1倍、ディスクへのデータ転送中の断中は3倍、ディスクへのデータの転送完了後は5倍など)を行う。
これにより、より全体を見渡した大局的な最適化が可能となる。この動作状況係数A,Bは、実際のデータの転送状態をそのままリアルタイムに示してもよいが、実際にデータの転送を開始してから、あわててDRAM70へデータ転送を開始したのでは遅い。
そこで、より好適には、データ転送が実際に行われることが予測される時点において少し先んじて係数を変化させるほうがよい。
例えば、ディスク84からデータをリードしホスト9へ転送する場合、HDC1のCPU30は、ディスク84の読み出しセクタ番号であるリードセクタを管理するとともに、現在のヘッド81がどのセクタ位置にあるかも管理している。
このような場合、インターフェースコントローラ51は、ディスクのリードを開始する前、あるいはディスクのリードを中断中に、実際に転送を開始する1セクタ程度前に「転送中」であることを示す動作状況計数Bをリクエスト発生ユニット12へ通知する。
リクエストアービター40において複数のリクエストの中から優先度の高いリクエストの選定を行う処理はさまざまな形態を適用できる。
一例として、もっともシンプルな処理は、それぞれのリクエスト送信元から送られてくる猶予度どうしを比較して、猶予の少ない、つまり猶予度の数値の小さいリクエストにアクセス権を渡すようにする。この場合、リクエストアービター40は、アクセス権を渡す相手にアクセス許可信号(グラント:Gnt)を返すことでアクセス権を渡し、DRAM70へのアクセスを許可する。
ここで、図4(A)〜図4(C)のタイミングチャートを参照してこのデータ転送システムのリクエスト調停動作について説明する。
図4(A)は第1回路群10(リクエスト発生ユニット11)からのリクエストに関する信号を示す図であり、図4(B)は第2回路群20(リクエスト発生ユニット21)からのリクエストに関する信号を示す図であり、図4(C)はCPU30(リクエスト発生ユニット35)からのリクエストに関する信号を示す図である。
図4(A)において、Status_Aはインターフェースコントローラ51がリクエストアービター40へ通知したディスクユニット8の状況計数である。Req_Aはリクエスト発生ユニット11から発行されるリクエストである。FifoCNT_AはFIFO12の残りバイト数aである。Time_Aはリクエストアービター40に通知された猶予度である。Gnt_Aはリクエストアービター40からリクエスト発生ユニット11へ返信されるアクセス許可信号である。Data_AはDRAM70に転送されるデータである。
図4(B)において、Status_Bはインターフェースコントローラ61がリクエストアービター40へ通知したホスト9の状況計数である。Req_Bはリクエスト発生ユニット21から発行されるリクエストである。FifoCNT_BはFIFO21の有効バイト数bである。Time_Bはリクエストアービター40に通知された猶予度である。Gnt_Bはリクエストアービター40からリクエスト発生ユニット21へ返信されるアクセス許可信号である。Data_BはDRAM70から転送されるデータである。
図4(C)において、Limit_Cはリミット値記憶部32から読み出されるリミット値である。ここでは時間ではなく、クロック数として数値(100)を表している。Count_Cはカウンタ33によりカウントされるカウント値である。この値は0から99まで変化することが可能である。Time_Cはリクエストアービター40に通知された猶予度である。ここでは単純にリミット値(100)からそのときのカウント値を引き算した値とされる。Req_Cはリクエスト発生ユニット35から発行されるDRAMリフレッシュのためのリクエストである。リクエストが受け付けられると、Count_Cは0にリセットされ、再度カウントを始める。Data_CはDRAM70に送られるリフレッシュコマンドである。
リクエスト発生ユニット11,21,35は、DRAM70へアクセス後、次のアクセスが可能となるタイミング、例えば図中の矢印位置のタイミングT1〜T8でリクエストを発行している。
リクエストアービター40は、各タイミングT1〜T8で、猶予度どうしを比較し、猶予度が最小の値のものに対してグラント信号(Gnt_A, Gnt_B, Gnt_Cのいずれか,)を発行し、そのリクエストのアクセスを許可する。
これにより、リクエストアービター40からグラント信号を受けたリクエスト発行元は、実際にDRAM70にアクセスしデータ転送を行う。
この例の場合、タイミングT1では、Req_AとReq_B が発行されており、Time_Aが「9」、Time_Bが「35」のため、リクエストアービター40は、Gnt_Aを出力する。これにより、Data_AがDRAM70に転送される。
タイミングT2では、Req_BとReq_Cが発行されており、Time_Bが「3」、Time_Cが「19」のため、リクエストアービター40は、アクセス権を移すようGnt_Bを出力する。これにより、Data_BがDRAM70から転送される。
タイミングT3では、Req_AとReq_BとReq_Cが発行されており、Time_Aが「30」、Time_Bが「10」、Time_Cが「16」のため、リクエストアービター40は、Gnt_Bを出力し、アクセス権を変えない。これにより、Data_Bの転送が継続される。
タイミングT4では、Req_AとReq_BとReq_Cが発行されており、Time_Aが「30」、Time_Bが「10」、Time_Cが「12」である。ここでは、タイミングT3からタイミングT4の間で、Req_AのStatus_Aの値が「1」から「3」に変っており、他よりもTime_Aの値が高く、換言すれば、Req_Aの優先度が低下しているため、リクエストアービター40は、Gnt_Bを出力し、アクセス権を変えない。これにより、Data_Bの転送が継続される。つまり、Req_Aは、Status_Aの値が「1」に変わり、他のリクエストよりもTime_Aの値が低くなるまでは、アクセスが待たされることになる。
タイミングT5では、Req_AとReq_Cが発行されており、Time_Aが「9」、Time_Cが「10」のため、リクエストアービター40は、アクセス権を移すようGnt_Aを出力する。これにより、Data_AがDRAM70に転送される。
タイミングT6では、Req_BとReq_Cが発行されており、Time_Bが「10」、Time_Cが動作性能に影響が生じる直前の「8」まで低下しているため、リクエストアービター40は、アクセス権を即時にReq_Bに移すようGnt_Cを出力する。これにより、Data_CがDRAM70に転送され、リフレッシュが間に合う。
なお、タイミングT6以降にReq_Bを発行した後、FIFO22の有効バイト数であるFifoCNT_Bが「0」、つまり空になっているが、このときホスト9がポーズ状態にあるため、ホスト9へのデータ転送は局所的にはFIFOエンプティという好ましくない事態が発生しているが、大局的にはハードディスクの性能面ではまったく影響が生じない。
このようにこの実施形態のデータ転送システムによれば、ハードディスクドライブ2の内部の限られた共有資源であるDRAM70へのアクセス許可を得るために、リクエスト発生ユニット11,12は、FIFO11の有効バイト数bやFIFO12の残りバイト数aと各スループットβだけでなく、ホスト9やディスクユニット8の通信状況(動作状況係数A,B)を加味して要求元それぞれの猶予度を算出してリクエストアービター40へ送り、またリクエスト発生ユニット35は、リクエストがリクエストアービター40によってあとどれくらい受け付けられないとこの装置の動作に影響を与えるかを示す猶予度(数値)を生成してリクエストアービター40へ送る。
これにより、リクエストアービター40は、入力されたリクエストの中から、システムへの悪影響が極力生じないように猶予の少なくなった順にリクエストを選定し、要求元へアクセス許可信号(グラント:Gnt)を返すので、猶予の少なくなった順にDRAM70へアクセスすることができるようになる。また猶予度は数値であり、単純な比較処理で判定できるので、DRAM70へのアクセス要求のリクエストを効率よく調停することができる。
例えばホスト9がポーズになると、リクエスト発生ユニット11は、ホスト転送へのリクエストの優先度を相対的に下げる。またディスクユニット8におけるデータ転送が外周側で高速になると、リクエスト発生ユニット12は、ディスク転送のリクエストの優先度を相対的に上げる一方、サーボセクタ92の読み取りなどでディスク転送に余裕が生じると、そのときだけはディスクユニット8へのデータ転送の優先度を相対的に下げる。つまり、刻一刻と変化する周囲の状況に迅速に対応し、DRAM70などの共有資源を効率よく利用することができる。
すなわち、共有資源であるDRAM70やアクセスバス71、FIFOメモリ12,22などの周辺だけでなく、ディスクユニット8におけるデータの読み取り状況やホスト9がビジー状態かポーズ状態かなどの動作状況を考慮したドライブ全体またはシステム全体としての状況変化に対応してアクセス権を移すので、共有資源の利用効率を向上することができる。
なお、本願発明は、上記実施形態のみに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形してもよい。また、上記実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の発明を構成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
上記実施形態で説明した猶予度は一例であり、計算がしやすい形で桁数などを変形してもよく、猶予度ではなく、緊急度を示す数値で表現してもよい。また各リクエストに本質的な優先順位がある場合(例えばハードディスクドライブ2においては、ホスト転送よりもディスク転送のほうが優先順位が高い等)、係数を乗算したり猶予度の上限や下限を設けたりすることで優先順位に上下関係を付けてもよい。
また、実施形態以外の既存の調停回路(バスアービター)とリクエスト発生ユニット11,21,35とを組み合わせて使用してもよい。
また、より高度な調停ユニットを実現するために、1回のアクセスバイト数の違いなどで各リクエストの転送時間が異なる場合には、例えば猶予度が下から2番目であるがアクセス時間が短いものを先にアクセスさせてから、猶予度が一番下のものをアクセスさせたほうがよい、という場合があり得る。
このようなアクセスであれば、どちらも破綻しないが、逆に猶予度が1番下のものをアクセスさせると、このアクセス時間が長いために猶予度が下から2番目のものが破綻してしまう、というケースが起こり得る。
このようなケースも考慮し、調停ユニットを構成する場合、調停ユニットは、一旦、猶予度が一番下のリクエスト発行元に仮のアクセス権を与え、そのリクエスト発行元がデータ転送を完了する時刻まで猶予がないリクエストが他に存在すれば、今度はそちらにアクセス権を与えるように構成する。
また、複数のリクエスト発行元のうち、どのリクエスト発行元にアクセス権を与えてもどこかで破綻が生じるような場合には、予め定められた各リクエストに固有の優先度に応じてアクセス権を与えるようにする。
実際に調停ユニットを構成する実装形態としては、各リクエストに対して、それぞれのアクセス時間から、その次のリクエスト受付時間をそれぞれ求め、その時間までに破綻するリクエストが他にあるかどうかをそれぞれのリクエストに対して計算しておき、一番下のリクエストから順に、他に誰も破綻しないというリクエストが存在するまでサーチする。どれも破綻する場合は予め決めておいた優先度で処理してもよいし、そのときの猶予度の数値が一番下のものを処理するようにしてもよい。
なお、上記実施形態では、タイプI、タイプII、タイプIIIのリクエスト発生ユニットを一つずつ有する例について説明したが、タイプIとタイプIII、タイプIIとタイプIII、同じタイプどうし(タイプIどうし、タイプIIどうし、タイプIIIどうし)を組み合わせて構成する等、さまざまな形態にしてもよい。
また上記実施形態では、ハードディスクドライブの一例について説明したが、共有資源を有するコントローラに、インターフェースを介して要求元の機器を接続したものであれば、例えばカラープリンタなどの画像処理装置、DVDレコーダ、DVDプレーヤ、液晶表示装置、テレビジョンチューナなどの家庭用電子機器、コンピュータ、ゲーム機などの情報処理装置にも適用できる。
1…データ転送システム、2…ハードディスクドライブ、3…ハードディスクコントローラ(HDC)、8…ハードディスクユニット(ディスクユニット)、9…ホストコンピュータ(ホスト)、9…ホスト、10…第1回路群、11,21,35…リクエスト発生ユニット、12,22…FIFOバッファメモリ(FIFO)、30…セントラル・プロセッシング・ユニット(CPU)、32…リミット値記憶部、33…カウンタ、34…タイミングコントローラ、40…リクエストアービター、51,61…インターフェースコントローラ、70…ダイナミック・ランダム・アクセス・メモリ(DRAM)、71…アクセスバス、81…ヘッド、82…ランプ、83…ボイスコイルモータ、84…ディスク、85…スピンドルモータ、86…ヘッドアンプ。
Claims (9)
- 一つ以上の機器からアクセスされる共有資源と、
前記共有資源に前記機器がアクセスするためのリクエストを生成するとともに、前記リクエストがあとどれくらい受け付けられないとこの装置の動作に影響を与えるかを示す猶予値を出力する複数のリクエスト発生ユニットと、
前記複数のリクエスト発生ユニットからの複数のリクエストおよび猶予値が入力されたとき、前記猶予値どうしを比較して、猶予が少ないリクエストに前記共有資源へのアクセス権を与える調停ユニットと
を具備することを特徴とするコントローラ。 - 前記機器から供給されるデータを順次バッファリングしてその順に出力するバッファと、
前記機器と通信し、通信中に、前記機器の動作状態の変化を検出し、検出された動作状態に応じて予め設定された動作状態計数を生成するインターフェースコントローラとを備え、
前記複数のリクエスト発生ユニットのうちの少なくとも一つは、
前記共有資源に前記機器がアクセスするためのリクエストを生成するとともに、前記機器から前記バッファへのデータ転送速度と、前記バッファに存在するデータ量または前記バッファの残り容量と、前記インターフェースコントローラにより生成された前記動作状態計数とから猶予値を生成することを特徴とする請求項1記載のコントローラ。 - 前記複数のリクエスト発生ユニットのうちの少なくとも一つは、
前記リクエストが、前記共有資源へのライトリクエストの場合、前記バッファの残りバイト数を、前記機器から前記バッファへのその時点の最速のスループットの値で割り算した値に、前記動作状態計数を掛け算することにより猶予値を算出することを特徴とする請求項2記載のコントローラ。 - 前記複数のリクエスト発生ユニットのうちの少なくとも一つは、
前記リクエストが、前記共有資源へのリードリクエストの場合、前記バッファからデータの有効バイト数を、前記バッファから前記機器へのその時点の最速のスループットの値で割り算した値に、前記動作状態計数を掛け算することにより猶予値を算出することを特徴とする請求項2記載のコントローラ。 - 前記複数のリクエスト発生ユニットのうちの少なくとも一つは、
前記リクエストが、一定時間以内に前記リクエストが受け付けられることを期待するリクエストである場合に、前記リクエストが受け付けられるべき時間から現在時刻を引き算して猶予値を算出することを特徴とする請求項1記載のコントローラ。 - 前記調停ユニットは、
前記猶予値が最も低いリクエストに仮のアクセス権を与え、そのリクエストのデータ転送が完了する時刻までに猶予がないリクエストが存在したときに、前記猶予がないリクエストに前記アクセス権を移すことを特徴とする請求項1記載のコントローラ。 - 前記調停ユニットは、
どのリクエストにアクセス権を与えたとしてもどこかで破綻が生じる場合に、各リクエスト毎に予め設定された優先順位に従ってアクセス権を与えることを特徴とする請求項1記載のコントローラ。 - 請求項1記載のコントローラにより駆動されるハードディスクユニットを具備することを特徴とするハードディスクドライブ。
- 一つ以上の機器から共有資源にアクセスするためのリクエストと、前記リクエストがあとどれくらい受け付けられないとこの装置の動作に影響を与えるかを示す猶予値とを発生し、
複数のリクエストおよび猶予値が発生したときに、前記猶予値どうしを比較して、猶予が少ないリクエストに前記共有資源へのアクセス権を与える
ことを特徴とするコントロール方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008118183A JP2009266152A (ja) | 2008-04-30 | 2008-04-30 | コントローラ、ハードディスクドライブおよびコントロール方法 |
CNA2008101856945A CN101571841A (zh) | 2008-04-30 | 2008-12-19 | 控制器、硬盘驱动器以及控制方法 |
US12/345,387 US20090276553A1 (en) | 2008-04-30 | 2008-12-29 | Controller, hard disk drive and control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008118183A JP2009266152A (ja) | 2008-04-30 | 2008-04-30 | コントローラ、ハードディスクドライブおよびコントロール方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009266152A true JP2009266152A (ja) | 2009-11-12 |
Family
ID=41231200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008118183A Pending JP2009266152A (ja) | 2008-04-30 | 2008-04-30 | コントローラ、ハードディスクドライブおよびコントロール方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20090276553A1 (ja) |
JP (1) | JP2009266152A (ja) |
CN (1) | CN101571841A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6881256B2 (ja) * | 2017-11-27 | 2021-06-02 | オムロン株式会社 | 制御装置、制御方法、およびプログラム |
WO2021111583A1 (ja) * | 2019-12-05 | 2021-06-10 | オリンパス株式会社 | データ転送装置およびデータ転送方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3350043B2 (ja) * | 1990-07-27 | 2002-11-25 | 株式会社日立製作所 | 図形処理装置及び図形処理方法 |
JP3922070B2 (ja) * | 2002-03-29 | 2007-05-30 | 株式会社デンソー | 分散制御方法及び装置 |
JP4847036B2 (ja) * | 2005-03-30 | 2011-12-28 | キヤノン株式会社 | バスアクセスを調停する制御装置およびデータ処理装置の制御方法 |
-
2008
- 2008-04-30 JP JP2008118183A patent/JP2009266152A/ja active Pending
- 2008-12-19 CN CNA2008101856945A patent/CN101571841A/zh active Pending
- 2008-12-29 US US12/345,387 patent/US20090276553A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20090276553A1 (en) | 2009-11-05 |
CN101571841A (zh) | 2009-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7761656B2 (en) | Detection of speculative precharge | |
JP4786209B2 (ja) | メモリアクセス装置 | |
US9268721B2 (en) | Holding by a memory controller multiple central processing unit memory access requests, and performing the multiple central processing unit memory requests in one transfer cycle | |
US8095744B2 (en) | Device for controlling access from a plurality of masters to shared memory composed of a plurality of banks each having a plurality of pages | |
US20080270634A1 (en) | Management of Transfer of Commands | |
KR100619806B1 (ko) | 디스크 콘트롤러 메모리에 접속을 중개하기 위한 중개방법및 시스템 | |
US20120239873A1 (en) | Memory access system and method for optimizing SDRAM bandwidth | |
US7761669B2 (en) | Memory controller granular read queue dynamic optimization of command selection | |
JP6146128B2 (ja) | データ処理装置 | |
JP2006268801A (ja) | メモリアクセス制御回路 | |
CN108139994B (zh) | 内存访问方法及内存控制器 | |
US8688942B2 (en) | Method and system controlling page open time for memory device | |
EP2998867B1 (en) | Data writing method and memory system | |
US6836831B2 (en) | Independent sequencers in a DRAM control structure | |
JP2009251713A (ja) | キャッシュメモリ制御装置 | |
JP5911548B1 (ja) | 共有メモリへのアクセス要求をスケジューリングするための装置、方法およびコンピュータプログラム | |
JP2011113119A (ja) | データフロー及びプロセッサのメモリ共有化ための装置、方法及びプログラム | |
JP5349775B2 (ja) | メモリコントローラ及びその制御方法 | |
JP2009266152A (ja) | コントローラ、ハードディスクドライブおよびコントロール方法 | |
US8484411B1 (en) | System and method for improving access efficiency to a dynamic random access memory | |
JP2011034214A (ja) | メモリ制御装置 | |
US20070121398A1 (en) | Memory controller capable of handling precharge-to-precharge restrictions | |
KR100546678B1 (ko) | 데이터 처리 시스템의 리프레시 동작 제어장치 및 그 방법 | |
JP2006331008A (ja) | メモリインタフェース | |
JP2006164099A (ja) | メモリ制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091006 |