ディスク装置及びその記録方法
【課題】 同心円状に記憶領域が配置された記憶媒体において、読出し待ち時間を短縮する。
【解決手段】 同心円状に記憶領域が配置された記憶媒体からデータを読み出す際、1周分の最後の物理アドレスと、次の1周に切り替わる最初の物理アドレスの間に、半導体を用いた記憶媒体の物理アドレスを割り当て、読出し待ち時間中は上記半導体を用いた記憶媒体からの読出しを行うことにより、上記同心円状に記憶領域が配置された記憶媒体からの読出し待ち時間を短縮する。
【解決手段】 同心円状に記憶領域が配置された記憶媒体からデータを読み出す際、1周分の最後の物理アドレスと、次の1周に切り替わる最初の物理アドレスの間に、半導体を用いた記憶媒体の物理アドレスを割り当て、読出し待ち時間中は上記半導体を用いた記憶媒体からの読出しを行うことにより、上記同心円状に記憶領域が配置された記憶媒体からの読出し待ち時間を短縮する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ディスク状の記録媒体と半導体記録媒体とを備えたディスク装置に関する。
【背景技術】
【0002】
HDD(Hard Disk Drive)は、PC(Personal Computer)の周辺機器としてOS(Operating System)やアプリケーションプログラム、ユーザ作成のテキストデータ等を格納するストレージデバイスとして用いられてきた。しかし、最近では、映像や音声といったストリームデータの格納手段として、HDDレコーダやSTB(Set Top Box)、カムコーダ等の様々なコンシューマ向けデジタル機器で用いられるようになってきている。
【0003】
HDDや光ディスク等の円盤型記録媒体を用いるディスク装置は、データを記録するセクタが配置された円盤と、セクタを読み書きするヘッドとを備えている。このようなディスク装置は、データ読出/書込時、円盤を回転させて読出/書込の対象となるセクタ上へヘッドを移動し、読出/書込を行うように構成されている。
【0004】
そのため、ディスク装置は、HDDや光ディスクに対して読み出し処理を指示してから、実際に読み出しが開始されるまでに、一般に、シーク待ち時間と呼ばれる円盤の回転やヘッドの移動といった物理的な動作の完了を待つ時間が必要となる。
【0005】
また、ディスク装置に代わるものとして、大容量の不揮発性メモリを用いた記憶装置も市場に出回り始めている。不揮発性メモリは、HDDと比較して、最高読出速度(MB/s)は低いが、HDDに存在するシーク待ち時間がないため、読出開始までの時間を短縮することができる。
【0006】
前述のようなHDDのシーク待ち時間を短縮するための従来技術として、特許文献1等に記載された技術が知られている。この従来技術では、比較的高頻度でシーク待ち時間が発生するファイルの先頭を不揮発性メモリに保存し、残りをディスク装置に保存する。このことにより、ファイルの先頭から読出しを行う場合に、読出し開始までの時間が短い不揮発性メモリを利用し、HDDのシーク待ち時間を短縮することができる。
【0007】
以下に、図14を用いて従来技術について説明を行う。図14は従来技術におけるディスク装置とホスト装置の構成を示すブロック図である。この図において、符号1140はディスク装置、符号102はディスク部、符号103は半導体により構成される不揮発性メモリ部、符号104は外部I/F部、符号1402は従来制御部、符号114はホスト装置、符号115はディスク装置用I/F、符号116はデコード部I/F、符号117は映像出力I/F、符号118はTVである。
ホスト装置114はディスク装置1401に対してデータの書込み、読出の命令を発行する装置であり、ディスク装置と読出/書込命令を含むデータのやり取りを行うディスク装置用I/F115と、映像デコーダと接続されるデコード部I/F116、TV118に映像データの出力を行う映像出力I/F117を備える。ディスク装置1401はホスト装置114に接続し、ホスト装置114の命令に従ってデータの書込み、読出を行うものであり、ディスク部102、不揮発性メモリ部103、外部I/F部104、従来制御部1402から構成されている。ディスク部102は、同心円状の複数のトラックを有する円盤状の媒体(ディスク)に対し、円盤回転制御、HD R/W制御等を行い、ヘッドを用いることよりことによってデータの読出/書込を行うことが可能な装置であり、従来制御部1402と接続されている。不揮発性メモリ部103は通電状態でないときも、書き込まれた情報を保持できるとともに、ディスク部102よりも読出開始までの応答性に優れるという特徴を持つ記録装置であり、従来制御部1402と接続されている。ここで、ディスク部102と不揮発性メモリ部103にはそれぞれ仮想アドレス領域が割り当てられており、ホスト装置114からの読出/書込を行うアドレスによって両者の書込/読出を制御することができる。
外部I/F部104はホスト装置114と接続するためのI/Fであり、ディスク装置用I/F115、従来制御部1402と接続されている。従来制御部1402は接続されている記憶装置の制御を行う装置であり、ディスク部102、不揮発性メモリ部103、外部I/F部104と接続されている。
ホスト装置114がディスク装置1401に対して読出/書込命令を発行する場合、ディスク装置用I/F115を用いて、ディスク装置1401に読出/書込命令を伝達する。このとき、従来制御部1402はホスト装置114からの命令を受け、ディスク部102と不揮発性メモリ部103に対して読出/書込動作を行う。また、読出/書込命令に用いる仮想アドレス空間は、不揮発性メモリ部103の物理アドレス空間とディスク部102の物理アドレス空間を併せたものになっており、不揮発性メモリ部103とディスク部102への書込みは、ホスト装置114が任意に行う。
例えば、映像データファイルを書き込む際、ホスト装置114は、各ファイルの先頭部分を不揮発性メモリ部103に保存する。この際、不揮発性メモリ部103に保存するデータサイズは、先頭部分のデータを1倍速で再生した場合の再生時間が、少なくともディスク部102の読出し開始待ち時間以上となるサイズである。このとき、残りのデータはディスク部102に書込む。読出しを行う際には、データの先頭は不揮発性メモリ部103から読出し、残りのデータをディスク部102から読み出す。このことにより、図14に示す従来技術によるディスク装置1401は、ファイル先頭開始されるデータ読み出しに際、読出し遅延が発生しない。
【0008】
【特許文献1】特開2005-302276号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
前述した従来技術は、データの先頭として保存された限られた容量のデータについて、シーク待ち時間を短縮するものであった。
【0010】
ところで、ディスク上のデータは円盤状の記憶媒体に同心円状に配置されており、この同心円の1周分はトラックと呼ばれている。大容量のデータをシーケンシャルに読み込む際には、このトラックをまたいだ読出が必要であり、これをトラックスイッチと呼ぶ。このトラックスイッチが発生した場合も数msのシーク待ち時間が発生する。
【0011】
従来技術では、このトラックスイッチに係るシーク待ち時間の短縮することは考慮されておらず、トラックスイッチ発生の際、読出し停止時間が発生していた。
【0012】
また、従来技術では、ホスト装置114が任意に不揮発性メモリ部103とディスク部102に対する読出、書込を制御している。しかし、トラックごとのデータ配置や、ディスク上の不良セクタの存在等ディスク装置しか持ち得ない情報が存在するため、トラックスイッチ時に不揮発性メモリ部103から読出可能なようにデータを配置することは困難であった。
【0013】
上記に示した、従来技術の問題点に対し、本発明の目的は、トラックスイッチが発生した際にも、途切れなくデータの読出しを行うことである。
【課題を解決するための手段】
【0014】
不揮発性メモリを備えたディスク装置において、トラックの先頭部分に対するシーク(トラックスイッチ)時間も読出が可能なディスク装置を構成する。すなわち、以下(1)〜(4)のような構成を持ったディスク装置を実現することによって、複数トラックにまがるようなデータを読出すとき、トラックスイッチ待ち時間中に不揮発性メモリからデータを読み出すことで、ディスク装置の読出性能低下を防ぐ。
【0015】
(1)ディスク装置と不揮発性メモリの両方を含むアドレス空間について、トラックの先頭部分直前に不揮発性メモリを割り当てる。
【0016】
(2)ホストからの読出命令に対して、トラックスイッチが発生している時間は不揮発性メモリから読出、その他の時間はディスク装置から読出を行う。
【0017】
(3)あるトラックにおける不揮発性メモリの容量を( 該当トラックのディスク読出性能 * トラックスイッチ待ち時間)とする。
【0018】
(4)ホストからの命令を受け、ディスク装置は、ディスク装置自身が管理するトラック上のセクタ配置情報や、不良セクタ情報等の情報を用いて、(1)〜(3)の動作を行う。
【発明の効果】
【0019】
本発明によれば、トラックスイッチ待ち時間を要する記録媒体を用いるディスク装置において、トラックスイッチ待ち時間短縮し、あるいは、不要とし、ディスク装置の読出/書込速度を向上させることができる。
【0020】
また、本発明によれば、トラックスイッチ中、不揮発性メモリからデータを読出すことにより、データを途切れなく出力することができる。例えば、映像データの読出しを行う際には、安定したレートでデータを出力することにより、映像デコーダに対して、安定的にデータを供給することができる。
【発明を実施するための最良の形態】
【0021】
以下、本発明の実施例を説明する。
【実施例1】
【0022】
以下、本発明の一実施形態について、以降図1〜5を用いて説明する。図1は本発明の第1の実施形態によるディスク装置101とホスト装置114の構成を示すブロック図である。
【0023】
図1に示す本発明の実施形態によるディスク装置101は、図15により従来技術として説明したものと以下の部分が異なる。
【0024】
ディスク装置101がデータ構造の記録を行う揮発性メモリ部106を備える。揮発性メモリ部106は、ディスク部102と不揮発性メモリ部103に対する読出/書込命令を保存するための待ち行列であるデータ読出/書込キュー109と、キュー生成用命令記憶領域108を備える。
【0025】
制御部105が、ホスト装置114が発行した読出/書込命令を、ディスク部102と不揮発性メモリ部103への読出/書込命令に変換するための、仮想/物理セクタ変換テーブル107を備えること。仮想/物理セクタ変換テーブル107は制御部105上の読出し専用メモリまたは不揮発性メモリ部103に保存されており、ディスク部102が持つトラック数と同数のフィールドを持つ。
【0026】
ここで、実施例1については、不揮発性メモリ書込領域一時記憶110、シーク判断用テーブル111、シーク先変換テーブル112、AV I/F113、デコード部I/F116、映像出力I/F117及びTV118は使用しない。
【0027】
図2はキュー生成用命令記憶領域108を示す図である。これは、揮発性メモリ部106にあり、ホスト装置114からの読出/書込命令を記憶する領域である。「読出/書込開始物理セクタ番号」201はディスク部102と不揮発性メモリ部103に対する読出開始セクタ番号であり、「読出/書込サイズ」202には読出/書込サイズがセクタ単位で記載される。例えば、行203は読出/書込開始セクタ番号が1であり、読出/書込サイズが1300セクタ分であることを示す。
【0028】
図3は仮想/物理セクタ変換テーブル107を示す図である。これは、制御部105内にあり、ディスク部102と不揮発性メモリ部103のアドレスを管理するテーブルである。このテーブルは、仮想セクタ開始アドレス301、物理セクタ開始アドレス302とデータ保存先303の情報を持ち、ホスト装置114からの読出/書込命令をディスク部102と不揮発性メモリ部103それぞれへの読出/書込命令に変換するために利用される。このテーブルにおいて、「仮想セクタ開始アドレス」301はディスク装置101全体が持つ仮想アドレス、「物理セクタ開始アドレス」302はディスク部102と不揮発性メモリ部103に直接対応する物理アドレス、「データ保存先」303はデータが保存される部分がそれぞれ記載される。
【0029】
ホスト装置114からの命令をディスク装置101が受信した場合、命令は制御部105の仮想/物理セクタ変換テーブル107を用いて、以下のように変換される。
【0030】
例えば、行304は仮想セクタ開始アドレス1が不揮発性メモリ部103の物理セクタ開始アドレス1と対応していることを示す。行305は仮想セクタ開始アドレス101番がディスク部102の物理セクタ開始アドレス1番と対応していることを示す。行306は仮想セクタ開始アドレス1001番が不揮発性メモリ部103の物理セクタ開始アドレス101番と対応していることを示す。行307は仮想セクタ開始アドレス1101番がディスク部102の物理セクタ開始アドレス901番と対応していることを示す。
【0031】
このとき、ディスク部102と不揮発性メモリ部103の境界を、ディスク部102におけるトラックの境界に合わせることとする。すなわち、トラックスイッチが発生する、トラック先頭部分直前に不揮発性メモリ部103の領域を割り当てる。このとき、あるトラックにおける不揮発性メモリ部103の領域を( 該当トラックのディスク読出性能 × トラックスイッチ待ち時間)とする。
【0032】
図4はデータ読出/書込キュー109を示す図である。これは、揮発性メモリ106内にあり、ディスク部102と不揮発性メモリ部103に対する読出/書込命令を管理するキューである。このキューは、読出/書込開始物理セクタ番号401と読出/書込サイズ402とデータ読出/書込先403の情報を持ち、ディスク部102と不揮発性メモリ部103それぞれへの読出/書込命令を管理するために利用される。「読出/書込開始物理セクタ番号」401は仮想/物理セクタ変換テーブルで変換された物理セクタ番号、「読出/書込サイズ」402は読出/書込を行うサイズ、「データ読出/書込先」403はデータが保存されている部分が記載される。
【0033】
例えば、仮想セクタ1から1030までの書込みを行う場合、このキューにおいて、始めに、行404に示すように不揮発性メモリ部103の1セクタから100セクタ書込み、次に、行405に示すようにディスク部102の1セクタから900セクタ書込み、最後に、行406に示すように不揮発性メモリ部103の101セクタから30セクタ書込むといった待ち行列を保持する。
【0034】
図5は読出/書込処理を示す図である。これは、ホスト装置114から読出/書込命令があったとき、制御部105が仮想/物理セクタ変換テーブル107を用いてデータ読出/書込キュー109を生成し、このキューに従ってディスク部102と不揮発性メモリ部103に対して読出/書込動作を行う処理を示したものである。
【0035】
ステップ501は制御部105がキュー生成用命令記憶領域108に読出/書込命令をコピーする処理である。
【0036】
ステップ502は制御部105が読出/書込範囲に不揮発性メモリ部103領域とディスク部102領域両方を含むかどうか調べる処理である。すなわち、キュー生成用命令記憶領域108の示す読出/書込開始物理セクタ番号201から(読出/書込開始物理セクタ番号201 + 読出/書込サイズ202)までの間に、仮想/物理セクタ変換テーブル107の仮想セクタ開始アドレス301が示す値を2行以上含むかどうかによって判断を行う。もし、読出/書込範囲に不揮発性メモリ部103領域とディスク装置101領域の両方を含むのであれば、ステップ503へ進む。あるいは読出/書込範囲に不揮発性メモリ部103領域とディスク装置101領域両方を含むのでなければ、ステップ506へ進む。
【0037】
ステップ503は制御部105がキュー生成用命令記憶領域108が示す命令の先頭から、ディスク部102または不揮発性メモリ部103への命令を1件取り出し、データ読出/書込キュー109に追加する処理である。すなわち、ステップ503はキュー生成用命令記憶領域108が保持する読出/書込範囲までの間で最も値の小さい仮想セクタ開始アドレス301 -1までの読出/書込命令をデータ読出/書込キュー109に追加する。このとき、キュー生成用命令記憶領域108の開始アドレスから、ひとつずつアドレス値を加算して行き、キュー生成用命令記憶領域108が保持する読出/書込範囲内で最小の仮想セクタ開始アドレス301と同じ値になったとき、そこまで加算してきたサイズと開始アドレスをデータ読出/書込キュー109に追加する。
【0038】
ステップ504は制御部105がキュー生成用命令記憶領域108の読出/書込サイズからキューに追加した命令分のサイズを差引く処理である。すなわち、キュー生成用命令記憶領域108の読出/書込サイズを(読出/書込サイズ − データ読出/書込キュー109に追加した読出/書込命令のサイズ)に変更する。
【0039】
ステップ505は制御部105がキュー生成用命令記憶領域108の読出/書込開始物理セクタ番号201をキューに追加した命令の次のアドレスに変更する処理である。すなわち、キュー生成用命令記憶領域108の読出/書込開始物理セクタ番号201をデータ読出/書込キュー109の末尾に記された読出/書込開始物理セクタ番号401の次のセクタ番号に変更する。ステップ505が終了すると、ステップ502を再び行う。すなわち、ステップ503、504、505を繰り返し行うことで、ホスト装置114からの読出/書込命令を逐次解釈し、読出/書込範囲に不揮発性メモリ部領域とディスク部領域の両方を含んでいる読出/書込キューからディスク部102または不揮発性メモリ部103の片方のみへの読出/書込み命令を生成することができる。
【0040】
ステップ506はステップ502において、キュー生成用命令記憶領域108に保持されている読出/書込命令が、ディスク部102領域、不揮発性メモリ部103領域は片方を含む、あるいは書込みサイズが0の場合に実行される。ディスク部102領域、不揮発性メモリ部103領域の片方を含む場合は、制御部105がディスク部102と不揮発性メモリ部103どちらか一方に対する読出/書込命令をキュー生成用命令記憶領域108からデータ読出/書込キュー109に追加する。また、書込みサイズが0の場合はデータ読出/書込キュー109への追加を行わない。
【0041】
ステップ507は制御部105が不揮発性メモリ部103に対する読出/書込キューが存在するかどうか、すなわち不揮発性メモリ部103に対する読出/書込キューか、ディスク部に対する読出/書込キューかを調べる処理である。もし不揮発性メモリ部103に対する読出/書込キューが存在するのであれば、ステップ508へ進み、存在しないのであればディスク部に対する読出/書込キューであるので、ステップ509へ進む。
【0042】
ステップ508はディスク部102の書込み開始アドレスへシークしながら不揮発性メモリ部103領域へ読出/書込する処理である。ここでシークとは、磁気ディスク(図示せず)に記録/再生を行う記録/再生素子を有する磁気ヘッド(図示せず)を、トラック上に移動させることであり、本実施例では特に隣接するトラック上に移動させること(トラックスイッチ)をのことである。すなわち、制御部105は、不揮発性メモリ部103領域の読出/書込を行い、その際、ディスク部102は読出/書込対象となる不揮発性メモリ部103領域と仮想セクタアドレス301において連続する、次の物理セクタ開始アドレス302へのシークを行う。
【0043】
ステップ509は、読出/書込キューに存在する命令が、ディスク部102への命令のみであったときに、制御部105が磁気ヘッドを制御してディスク部102へ読出/書込を行う処理である。
【0044】
上記で説明した、ステップ501〜506までの、仮想/物理セクタ変換テーブル107とキュー生成用命令記憶領域108とを用いたデータ読出/書込キュー109生成処理と、ステップ507〜509のデータ読出/書込キュー109を用いた読出/書込処理を行うことによって、トラックの先頭部分に対するシーク(トラックスイッチ)時間も読出/書込が可能となる。すなわち、連続したデータをディスク部102のトラックに書込み、トラックのうち次に書込を行う隣接するトラックへシークを移動させる時間に、不揮発性メモリ部103に当該連続したデータを書き込むことができ、書込速度を向上させることができる。また、上記のような書込を行えば、連続したデータがディスク部102と不揮発性メモリ部103に分けて記憶してあるので、読出時に、連続したデータをディスク部102のトラックから読出し、トラックのうち次に読出を行う隣接するトラックへシークを移動させる時間に、不揮発性メモリ部に当該連続したデータを読出すことができ、読出し速度を向上させることができ、本発明の意図する効果が得られる。例えば、5200rpm、トラックスイッチ時間1msのHDDにおいて、HDD容量の8%分不揮発性メモリを使用すると、トラックスイッチが発生する場合も転送の途切れなく読み出すことができる。
【実施例2】
【0045】
第2の実施形態ついて、 以降図1及び図6〜10を用いて説明する。図1において、第2の実施形態によるディスク装置101は、実施例1として説明した装置と以下の部分が異なる。すなわち、図1に示すディスク装置101において、制御部105が、ホスト装置114からの読出/書込命令に対し、次のトラックに対するシーク動作を制御する機能を備える。揮発性メモリ部106が、ホスト装置114からの書込命令が連続的なものであったかどうかを記録する、シーク判断用テーブル111を備える。また、揮発性メモリ部106は、制御部105が不揮発性メモリ部103に対する書込みを行ったときに、ホスト装置114からの不揮発性メモリ部103に対する書込命令が連続的なものであったかどうかを記録する、不揮発性メモリ書込領域一時記憶110を備える。ここでいう書込命令/読込命令が連続的とは、書込命令/読込命令が、不揮発性メモリ部への書込/読込の後に、ディスク部102への書込/読込を行う命令になっていることである。
【0046】
図6はシーク判断用テーブル111を示す図である。これは、ディスク装置101からデータの読出を行う際、過去の書込み状況を参照することにより、次のトラック(隣接するトラック)に対してシーク動作を行うかどうかを判断するためのテーブルである。シーク判断用テーブル111において、「トラック番号」601はディスク部102のトラック番号である。「連続データ開始セクタ」602はディスク部102の各トラックに割り当てられた不揮発性メモリ部103において、最終セクタを含む連続データがどこから始まるかを、各トラックの先頭セクタ番号からのオフセットで表現した値が記載される。「次のトラックとの連続性」603はディスク部102の各トラックに割り当てられた不揮発性メモリ部103において、最終セクタに値が書き込まれているかどうかが記載される。
【0047】
例えば、行604に示すように、トラック番号601が1であるものに対して、連続データ開始セクタ602が0であり、次のトラックとの連続性603がtrueである場合、ディスク部102のトラック番号が1である部分に対応した不揮発性メモリ部103の領域において、最初のセクタから最後のセクタまで連続したデータが書き込まれており、さらに、不揮発性メモリ部103領域の直後に割り当てられたディスク部102の領域へも連続したデータが書き込まれていることを示す。
【0048】
また、行605に示すように、トラック番号601が2であるものに対して、連続データ開始セクタ602が -1であり、次のトラックとの連続性603がfalseである場合、該当トラックが初期状態にあることを示す。すなわち、ディスク部102のトラック番号が2である部分に対応した不揮発性メモリ部103の領域において、データが書き込まれておらず、不揮発性メモリ部103領域の直後に割り当てられたディスク部102の領域への連続性が無いことを示す。
【0049】
また、行606に示すように、トラック番号601が3であるものに対して、連続データ開始セクタ602が20であり、次のトラックとの連続性603がfalseである場合、ディスク部102のトラック番号が3である部分に対応した不揮発性メモリ部103の領域において、20セクタ目から連続したデータが書き込まれているが、連続データが書き込まれた領域は不揮発性メモリ部103領域内で途切れており、不揮発性メモリ部103領域の直後に割り当てられたディスク部102の領域への連続性は無いことを示す。
【0050】
また、行607に示すように、トラック番号601が4であるものに対して、連続データ開始セクタ602が10であり、次のトラックとの連続性603がtrueである場合、ディスク部102のトラック番号が4である部分に対応した不揮発性メモリ部103の領域において、10 セクタ目から連続したデータが書き込まれており、不揮発性メモリ部103領域の直後に割り当てられたディスク部102の領域への連続性があることを示す。
【0051】
図7は不揮発性メモリ書込領域一時記憶110を示す図である。これは、不揮発性メモリ部103に対する書込領域を管理し、不揮発性メモリ部103領域内で連続データ書込が行われているかどうかを判断するために利用するものである。不揮発性メモリ書込領域一時記憶110において、「書込開始物理セクタ番号」701は不揮発性メモリ部103領域に対して連続して書込みを行う際の始点となるセクタ番号であり、「書込サイズ」702は連続して書込まれるサイズがセクタ単位で記載される。
【0052】
例えば、行703に示すように、書込み開始物理セクタ番号701が1001であり、書込サイズ702が200である場合、不揮発性メモリ部103領域の物理セクタ1001番から200セクタの連続書込みが行われる。
【0053】
図8は不揮発性メモリ書込み処理を示す図である。これは、制御部105が不揮発性メモリ部103への書込処理を行うと共に、不揮発性メモリ書込領域一時記憶110を用いてシーク判断用テーブル111の値を更新する処理を表すものであり、実施例2における書込み処理は図5で説明した処理のステップ508(不揮発性メモリ部103に対する書込み)を以下に説明する処理に置き換えたものである。
【0054】
ステップ801は制御部105が不揮発性メモリ部103への書込命令に従って書込みを行う処理である。
【0055】
ステップ802は制御部105が直前の書込命令と連続したアドレスかどうか調べる処理である。すなわち、ステップ801において実行した書込み命令の書込み開始物理セクタ番号と、不揮発性メモリ書込領域一時記憶110が保持している、(書込開始物理セクタ番号710 + 書込サイズ702)の値が等しかったとき、直前の書込命令と連続したアドレスとみなし、ステップ803へ進む。ここで、もし直前の書込命令と連続したアドレスでなければ、ステップ804へ進む。
【0056】
ステップ803は制御部105が不揮発性メモリ書込領域一時記憶110の書込サイズに、ステップ801で実行した、直前の命令の書込サイズを加算して保存する処理である。
【0057】
ステップ804は制御部105が不揮発性メモリ部103に対して、連続した書込が行われていない場合、前回までの不揮発性メモリ部103に対する書込み状態を初期化するために、不揮発性メモリ書込領域一時記憶110に今回の命令を書込む処理である。
【0058】
ステップ805は制御部105がディスク部102の1トラック分に割り当てられた不揮発性メモリ部103領域の最後のセクタを含むかどうかを調べる処理である。もし不揮発性メモリ部103領域最後のセクタを含むのであれば、ステップ806へ進む。もし不揮発性メモリ部103領域最後のセクタを含むのでなければ、処理を終了する。
【0059】
ステップ806は制御部105がシーク判断用テーブル111の連続データ開始セクタ602を不揮発性メモリ書込領域一時記憶110の開始セクタの値に書換えを行う処理である。
【0060】
ステップ807は制御部105がデータ読出/書込みキュー109の書込みキューが空でないかどうか調べる処理である。もしデータ読出/書込みキュー109の書込みキューが空でないのであれば、ステップ808へ進む。仮想アドレスにおいて、不揮発性メモリ部103の領域の次にはディスク部102領域が必ず存在するので、ステップ808において、データ書込みキュー112が空でないのなら連続した書込みが行われているとわかる。また、もしデータ書込みキュー112が空でないのでなければ、処理を終了する。
【0061】
ステップ808は制御部105がシーク判断用テーブル111の次トラックとの連続性603をtrueに変更する処理である。
【0062】
図9は読出処理を示す図である。これは、制御部105が、 シーク判断用テーブル111を参照して、不揮発性メモリ部103とディスク部102の読出処理を行う処理を表す。
【0063】
ステップ901はデータ読出キュー生成処理であり、図5に示すデータ読出/書込キュー生成処理のステップ501〜506と同様の処理を行う。
【0064】
ステップ902はデータ読出キューから1件取出す処理である。
【0065】
ステップ903は902で取出したデータ読出しキューのデータ読出元が不揮発性メモリ部103かどうか調べる処理である。もしデータ読出元が不揮発性メモリ部103であれば、ステップ904へ進む。もしデータ読出元が不揮発性メモリ部103でなければ、ステップ907へ進む。
【0066】
ステップ904は命令がシーク判断用テーブル111の範囲を含み、かつ次のトラックとの連続性603がtrueかどうか調べる処理である。もし命令がシーク判断用テーブル111の範囲を含み、かつ次のトラックとの連続性603がtrueであれば、ステップ905へ進む。もし命令がシーク判断用テーブル111の範囲を含まない、あるいは次のトラックとの連続性がfalseであれば、ステップ903へ進む。
【0067】
ステップ905は読出し対象データから連続する最初のディスク部102領域にシークして先読みを開始する処理である。
【0068】
ステップ906はデータ読出しキューの内容を参照して、不揮発性メモリ部103から読出する処理である。
【0069】
ステップ907はデータ読出しキューの内容を参照して、ディスク装置101から読出する処理である。
【0070】
ステップ908はデータ読出しキューが空かどうか調べる処理である。もしデータ読出しキューが空でなければ、ステップ902へ戻る。また、データ読出しキューが空であれば、処理を終了する。
【0071】
上記で説明した、ステップ801〜808までの、不揮発性メモリ部103への書込み処理において、不揮発性メモリ書込領域一時記憶110を用いてシーク判断用テーブル111を更新し、ステップ901〜908においてシーク判断用テーブル111を用いて読出しを行うことによって、読出/書込を行う際、不揮発性メモリ部103領域の途中で連続データが終了した場合や、連続データに含まれない不揮発性メモリ部103のデータを読み出した際にディスク部102のヘッドが次のトラックに対してシーク動作を行うことを防ぐことができ、自動的に次のトラックにヘッドをシークすることによって発生するシークの失敗をなくすことができる。
【実施例3】
【0072】
第3の実施形態ついて、以降図1及び図10〜13を用いて説明する。図1において、第3の実施形態によるディスク装置101は、実施例2として説明した装置と以下の部分が異なる。すなわち、図1に示すディスク装置101において、制御部105が、ホスト装置114からの読出/書込命令に対し、次のトラックに対するシーク動作を制御する動作が異なる。また、揮発性メモリ部106が、ホスト装置114からの書込命令が連続的なものであったかどうかを記録する、シーク先変換テーブル112を備え、シーク判断用テーブル111を備えない。
【0073】
図10はシーク先変換テーブル112を示す図である。これは、揮発性メモリ部103に存在し、不揮発性メモリ部103への読出/書込処理中に、ディスク部102のヘッドがどこへシークするかを決定するためのテーブルである。
【0074】
「トラック番号」1001はディスク部102のトラック番号である。「連続データ終了セクタ」1002はディスク部102の各トラックに割り当てられた不揮発性メモリ部103において、不揮発性メモリ部103領域の先頭から連続したデータがどこで途切れるかを、書込みが行われたセクタ数で示す。「シーク先セクタ」1003はディスク部102の各トラックに割り当てられた不揮発性メモリ部103において、最終セクタに値が書き込まれているかどうかが記載される。
【0075】
図11は書込処理を示す図である。これは、不揮発性メモリ部103に存在し、ホスト装置114から書き込み命令を受信した時、制御部105において実行されるものである。
【0076】
ステップ1101はデータ書込キュー生成処理であり、図5に示すデータ読出/書込キュー生成処理のステップ501〜506と同様の処理を行う。
【0077】
ステップ1102はデータ書込キューから1件取出す処理である。
【0078】
ステップ1103はシーク先情報生成処理であり、詳細は図12にて述べる。
【0079】
ステップ1104はデータ書込先が不揮発性メモリ部103かどうか調べる処理である。もしデータ書込先が不揮発性メモリ部103であれば、ステップ1105へ進む。もしデータ書込先が不揮発性メモリ部103でなければ、ステップ1106へ進む。
【0080】
ステップ1105は書込みキューを参照し、不揮発性メモリ部103へ書込みする処理である。
【0081】
ステップ1106は書込みキューを参照し、ディスク部102へ書込を行う処理である。
【0082】
ステップ1107はデータ書込キューが空かどうか調べる処理である。もしデータ書込キューが空であれば、ステップ1102へ戻る。あるいはデータ書込キューが空でなければ、処理を終了する。
【0083】
図12はシーク先変生成処理を示す図である。これは、図11におけるシーク情報生成処理1105を詳細に説明するものである。
【0084】
ステップ1201は不揮発性メモリ部103領域の最初のセクタを含むかどうかを調べる処理である。もし不揮発性メモリ部103領域の最初のセクタを含むのであれば、ステップ1202へ進む。もし不揮発性メモリ部103領域最初のセクタを含むのでなければ、ステップ1203へ進む。
【0085】
ステップ1202は不揮発性メモリ書込領域一時記憶110にデータ書込キューから取り出した今回の命令を書込する処理である。
【0086】
ステップ1203は不揮発性メモリ書込領域一時記憶110に値が入っているかどうか調べる処理である。もし不揮発性メモリ書込領域一時記憶110に値が入っているのであれば、ステップ1204へ進む。もし不揮発性メモリ書込領域一時記憶110に値が入っているのでなければ、処理を終了する。
【0087】
ステップ1204は直前の書込命令と連続したアドレスかどうか調べる処理である。もし直前の書込命令と連続したアドレスのであれば、ステップ1205へ進む。もし直前の書込命令と連続したアドレスでなければ、ステップ1206へ進む。例えば、不揮発性メモリ部103への書込命令と、ディスク部102への書込命令では書込対象の物理アドレスが異なるので、連続したアドレスとはみなさない。
【0088】
ステップ1205は不揮発性メモリ書込領域一時記憶110の書込サイズに今回データ書き込みキューから取り出した命令の書込サイズを加算する処理である。
【0089】
ステップ1206はシーク先変換テーブル112の連続データ終了セクタを不揮発性メモリ書込領域一時記憶110の(開始セクタ+書込サイズ−1)の値に書換えを行う処理である。
【0090】
ステップ1207はシーク先変換テーブル112のシーク先セクタを今回の命令の書込開始セクタの値に書換えを行う処理である。
【0091】
ステップ1208は不揮発性メモリ書込領域一時記憶110を初期化する処理である。
【0092】
図13は読出処理を示す図である。これは、不揮発性メモリ部103に存在し、ホスト装置114から書き込み命令受信時、制御部105において実行されるものである。
【0093】
ステップ1301はデータ読出キュー生成処理であり、図5に示すデータ読出/書込キュー生成処理のステップ501〜506と同様の処理を行う。
【0094】
ステップ1302はデータ読出キューから1件取出す処理である。
【0095】
ステップ1303はデータ読出元が不揮発性メモリ部103かどうか調べる処理である。もしデータ読出元が不揮発性メモリ部103であれば、ステップ1304へ進む。もしデータ読出元が不揮発性メモリ部103でなければ、ステップ1307へ進む。
【0096】
ステップ1304は読出し命令がシーク先変換テーブル112の範囲を含んでいるかどうか調べる処理である。もし読出し命令がシーク先変換テーブル112の範囲を含んでいるのであれば、ステップ1305へ進む。もし読出し命令がシーク先変換テーブル112の範囲を含んでいないのであれば、処理を終了する。
【0097】
ステップ1305はシーク先変換テーブル112が示すセクタにシーク開始する処理である。
【0098】
ステップ1306は不揮発性メモリ部103からホスト装置114へ転送する処理である。
【0099】
ステップ1307はデータ読出しキューを参照してディスク装置101から読出する処理である。
【0100】
ステップ1308はデータ読出しキューが空かどうか調べる処理である。もしデータ読出しキューが空であれば、ステップ1302へ戻る。あるいはデータ読出しキューが空でなければ、処理を終了する。
【0101】
上記で説明した、ステップ1101〜1107までの、シーク先情報生成処理において、不揮発性メモリ書込領域一時記憶110を用いてシーク先変換テーブル112を更新し、ステップ1301〜1308においてシーク先変換テーブル112を用いて読出しを行うことによって、不揮発性メモリ部103の読み込み中、ディスク部102の不特定の場所に対する読出しが必要となるような場合でも、データを途切れなく読出し続けることができる。
【実施例4】
【0102】
第4の実施形態ついて、図1を用いて説明する。図1において、第4の実施形態によるディスク装置101は、実施例1〜3に示した部分の他にAVI/F113を備えてもよい。
【0103】
本実施形態によるディスク装置101はAVI/F113を備えることにより、ホスト装置114のデコード部I/F116と直接接続することが可能となる。ホスト装置114が外部I/F104を経由してディスク装置101内の制御部105に命令を出すと、制御部105はAV I/F113経由で映像データを出力する。ホスト装置114はデコードされたデータを用いて、映像出力I/F118からTV119に対して出力を行うことができる。
【0104】
このとき、実施例1〜3に示した本発明の効果により、デコード部I/F116に接続されたデコーダは中間バッファなしでも映像を乱れさせることのないように映像出力I/F117経由でTV118に対して出力を行うことができる。
【図面の簡単な説明】
【0105】
【図1】本発明のディスク装置におけるハードウェアおよびシステム構成図である。
【図2】キュー生成用命令記憶領域の構造を示す図である。
【図3】仮想/物理セクタ変換テーブルの構造を示す図である。
【図4】データ読出/書込キューの構造を示す図である。
【図5】実施例1の読出/書込処理を示す図である。
【図6】シーク判断用テーブルの構造を示す図である。
【図7】不揮発性メモリ書込領域一時記憶の構造を示す図である。
【図8】実施例2の不揮発性メモリ書込み処理を示す図である。
【図9】実施例2の読出処理を示す図である。
【図10】シーク先変換テーブルの構造を示す図である。
【図11】実施例3の書込み処理を示す図である。
【図12】実施例3のシーク先情報生成処理を示す図である。
【図13】実施例3の読出処理を示す図である。
【図14】従来のディスク装置を表す図である。
【符号の説明】
【0106】
101…ディスク装置
102…ディスク部
103…不揮発性メモリ部
104…外部I/F部
105…制御部
106…揮発性メモリ部
107…仮想/物理セクタ変換テーブル
108…キュー生成用命令記憶領域
109…データ読出キュー
110…不揮発性メモリ書込領域一時記憶
111…シーク判断用テーブル
112…シーク先変換テーブル
113…AVI/F
114…ホスト装置
115…ディスク装置用I/F
116…デコード部I/F
117…映像出力I/F
118…TV
201…読出/書込開始物理セクタ番号
202…読出/書込サイズ
301…仮想セクタ開始アドレス
302…物理セクタ開始アドレス
303…データ保存先
401…読出/書込開始物理セクタ番号
402…読出/書込サイズ
403…データ読出/書込先
501…キュー生成用命令記憶領域に読出/書込命令をコピーする処理
502…読出/書込範囲に不揮発性メモリ部領域とディスク装置領域両方を含むかどうか調べる処理
503…キュー生成用命令記憶領域が示す命令の先頭から、ディスク部または不揮発性メモリ部への命令を1件取り出し、データ読出/書込キューに追加する処理
504…キュー生成用命令記憶領域の読出/書込サイズからキューに追加した命令分サイズを差引く処理
505…キュー生成用命令記憶領域の読出/書込開始物理セクタ番号をキューに追加した命令の次のアドレスに変更する処理
506…キュー生成用命令記憶領域から読出/書込サイズ分の命令をデータ読出/書込キューに追加する処理
507…不揮発性メモリ部に対する読出/書込キューが存在かどうか調べる処理
508…ディスク装置の書込み開始アドレスへシークしながら読出/書込する処理
509…キューを参照して読出/書込する処理
601…トラック番号
602…連続データ開始セクタ
603…次のトラックとの連続性
701…読込開始物理セクタ番号
702…読込サイズ
801…不揮発性メモリへ書込みする処理
802…直前の書込命令と連続したアドレスかどうか調べる処理
803…不揮発性メモリ書込領域一時記憶の書込サイズに今回の命令の書込サイズを加算する処理
804…不揮発性メモリ書込領域一時記憶に今回の命令を書込する処理
805…不揮発性メモリ部領域最後のセクタを含むかどうか調べる処理
806…シーク判断用テーブルの連続データ開始セクタを不揮発性メモリ書込領域一時記憶110の開始セクタの値に書換えを行う処理
807…データ書込みキューが空でないかどうか調べる処理
808…シーク判断用テーブルの”次トラックの連続性”をtrueに変更する処理
901…データ読出キュー生成処理
902…データ読出キューから1件取出す処理
903…データ読込元が不揮発性メモリかどうか調べる処理
904…命令がシーク判断用テーブルの範囲を含み、かつ次のトラックとの連続性がtrueかどうか調べる処理
905…読出し対象データから連続する最初のディスク部領域にシークして先読みを開始する処理
906…不揮発性メモリから読出する処理
907…ディスク装置から読出する処理
908…データ読出しキューが空かどうか調べる処理
1001…トラック番号
1002…連続データ終了セクタ
1003…シーク先セクタ
1101…データ書込キュー生成処理
1102…データ書込キューから1件取出す処理
1103…シーク先情報生成処理
1104…データ書込先が不揮発性メモリかどうか調べる処理
1105…不揮発性メモリへ書込みする処理
1106…ディスク装置へ書込する処理
1107…データ書込キューが空かどうか調べる処理
1201…不揮発性メモリ部領域最初のセクタを含むかどうか調べる処理
1202…不揮発性メモリ書込領域一時記憶に今回の命令を書込する処理
1203…不揮発性メモリ書込領域一時記憶に値が入っているかどうか調べる処理
1204…直前の書込命令と連続したアドレスかどうか調べる処理
1205…不揮発性メモリ書込領域一時記憶の書込サイズに今回の命令の書込サイズを加算する処理
1206…シーク先変換テーブルの連続データ終了セクタを不揮発性メモリ書込領域一時記憶の(開始セクタ+書込サイズ−1)の値に書換えを行う処理
1207…シーク先変換テーブルのシーク先セクタを今回の命令の書込開始セクタの値に書換えを行う処理
1208…不揮発性メモリ書込領域一時記憶を初期化する処理
1301…データ読出キュー生成処理
1302…データ読出キューから1件取出す処理
1303…データ読込元が不揮発性メモリかどうか調べる処理
1304…読出し命令がシーク先変換テーブルの範囲を含んでいるかどうか調べる処理
1305…シーク先変換テーブルが示すセクタにシーク開始する処理
1306…不揮発性メモリからホストへ転送する処理
1307…ディスク装置から読出する処理
1308…データ読出しキューが空かどうか調べる処理
1401…従来制御部
【技術分野】
【0001】
本発明は、ディスク状の記録媒体と半導体記録媒体とを備えたディスク装置に関する。
【背景技術】
【0002】
HDD(Hard Disk Drive)は、PC(Personal Computer)の周辺機器としてOS(Operating System)やアプリケーションプログラム、ユーザ作成のテキストデータ等を格納するストレージデバイスとして用いられてきた。しかし、最近では、映像や音声といったストリームデータの格納手段として、HDDレコーダやSTB(Set Top Box)、カムコーダ等の様々なコンシューマ向けデジタル機器で用いられるようになってきている。
【0003】
HDDや光ディスク等の円盤型記録媒体を用いるディスク装置は、データを記録するセクタが配置された円盤と、セクタを読み書きするヘッドとを備えている。このようなディスク装置は、データ読出/書込時、円盤を回転させて読出/書込の対象となるセクタ上へヘッドを移動し、読出/書込を行うように構成されている。
【0004】
そのため、ディスク装置は、HDDや光ディスクに対して読み出し処理を指示してから、実際に読み出しが開始されるまでに、一般に、シーク待ち時間と呼ばれる円盤の回転やヘッドの移動といった物理的な動作の完了を待つ時間が必要となる。
【0005】
また、ディスク装置に代わるものとして、大容量の不揮発性メモリを用いた記憶装置も市場に出回り始めている。不揮発性メモリは、HDDと比較して、最高読出速度(MB/s)は低いが、HDDに存在するシーク待ち時間がないため、読出開始までの時間を短縮することができる。
【0006】
前述のようなHDDのシーク待ち時間を短縮するための従来技術として、特許文献1等に記載された技術が知られている。この従来技術では、比較的高頻度でシーク待ち時間が発生するファイルの先頭を不揮発性メモリに保存し、残りをディスク装置に保存する。このことにより、ファイルの先頭から読出しを行う場合に、読出し開始までの時間が短い不揮発性メモリを利用し、HDDのシーク待ち時間を短縮することができる。
【0007】
以下に、図14を用いて従来技術について説明を行う。図14は従来技術におけるディスク装置とホスト装置の構成を示すブロック図である。この図において、符号1140はディスク装置、符号102はディスク部、符号103は半導体により構成される不揮発性メモリ部、符号104は外部I/F部、符号1402は従来制御部、符号114はホスト装置、符号115はディスク装置用I/F、符号116はデコード部I/F、符号117は映像出力I/F、符号118はTVである。
ホスト装置114はディスク装置1401に対してデータの書込み、読出の命令を発行する装置であり、ディスク装置と読出/書込命令を含むデータのやり取りを行うディスク装置用I/F115と、映像デコーダと接続されるデコード部I/F116、TV118に映像データの出力を行う映像出力I/F117を備える。ディスク装置1401はホスト装置114に接続し、ホスト装置114の命令に従ってデータの書込み、読出を行うものであり、ディスク部102、不揮発性メモリ部103、外部I/F部104、従来制御部1402から構成されている。ディスク部102は、同心円状の複数のトラックを有する円盤状の媒体(ディスク)に対し、円盤回転制御、HD R/W制御等を行い、ヘッドを用いることよりことによってデータの読出/書込を行うことが可能な装置であり、従来制御部1402と接続されている。不揮発性メモリ部103は通電状態でないときも、書き込まれた情報を保持できるとともに、ディスク部102よりも読出開始までの応答性に優れるという特徴を持つ記録装置であり、従来制御部1402と接続されている。ここで、ディスク部102と不揮発性メモリ部103にはそれぞれ仮想アドレス領域が割り当てられており、ホスト装置114からの読出/書込を行うアドレスによって両者の書込/読出を制御することができる。
外部I/F部104はホスト装置114と接続するためのI/Fであり、ディスク装置用I/F115、従来制御部1402と接続されている。従来制御部1402は接続されている記憶装置の制御を行う装置であり、ディスク部102、不揮発性メモリ部103、外部I/F部104と接続されている。
ホスト装置114がディスク装置1401に対して読出/書込命令を発行する場合、ディスク装置用I/F115を用いて、ディスク装置1401に読出/書込命令を伝達する。このとき、従来制御部1402はホスト装置114からの命令を受け、ディスク部102と不揮発性メモリ部103に対して読出/書込動作を行う。また、読出/書込命令に用いる仮想アドレス空間は、不揮発性メモリ部103の物理アドレス空間とディスク部102の物理アドレス空間を併せたものになっており、不揮発性メモリ部103とディスク部102への書込みは、ホスト装置114が任意に行う。
例えば、映像データファイルを書き込む際、ホスト装置114は、各ファイルの先頭部分を不揮発性メモリ部103に保存する。この際、不揮発性メモリ部103に保存するデータサイズは、先頭部分のデータを1倍速で再生した場合の再生時間が、少なくともディスク部102の読出し開始待ち時間以上となるサイズである。このとき、残りのデータはディスク部102に書込む。読出しを行う際には、データの先頭は不揮発性メモリ部103から読出し、残りのデータをディスク部102から読み出す。このことにより、図14に示す従来技術によるディスク装置1401は、ファイル先頭開始されるデータ読み出しに際、読出し遅延が発生しない。
【0008】
【特許文献1】特開2005-302276号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
前述した従来技術は、データの先頭として保存された限られた容量のデータについて、シーク待ち時間を短縮するものであった。
【0010】
ところで、ディスク上のデータは円盤状の記憶媒体に同心円状に配置されており、この同心円の1周分はトラックと呼ばれている。大容量のデータをシーケンシャルに読み込む際には、このトラックをまたいだ読出が必要であり、これをトラックスイッチと呼ぶ。このトラックスイッチが発生した場合も数msのシーク待ち時間が発生する。
【0011】
従来技術では、このトラックスイッチに係るシーク待ち時間の短縮することは考慮されておらず、トラックスイッチ発生の際、読出し停止時間が発生していた。
【0012】
また、従来技術では、ホスト装置114が任意に不揮発性メモリ部103とディスク部102に対する読出、書込を制御している。しかし、トラックごとのデータ配置や、ディスク上の不良セクタの存在等ディスク装置しか持ち得ない情報が存在するため、トラックスイッチ時に不揮発性メモリ部103から読出可能なようにデータを配置することは困難であった。
【0013】
上記に示した、従来技術の問題点に対し、本発明の目的は、トラックスイッチが発生した際にも、途切れなくデータの読出しを行うことである。
【課題を解決するための手段】
【0014】
不揮発性メモリを備えたディスク装置において、トラックの先頭部分に対するシーク(トラックスイッチ)時間も読出が可能なディスク装置を構成する。すなわち、以下(1)〜(4)のような構成を持ったディスク装置を実現することによって、複数トラックにまがるようなデータを読出すとき、トラックスイッチ待ち時間中に不揮発性メモリからデータを読み出すことで、ディスク装置の読出性能低下を防ぐ。
【0015】
(1)ディスク装置と不揮発性メモリの両方を含むアドレス空間について、トラックの先頭部分直前に不揮発性メモリを割り当てる。
【0016】
(2)ホストからの読出命令に対して、トラックスイッチが発生している時間は不揮発性メモリから読出、その他の時間はディスク装置から読出を行う。
【0017】
(3)あるトラックにおける不揮発性メモリの容量を( 該当トラックのディスク読出性能 * トラックスイッチ待ち時間)とする。
【0018】
(4)ホストからの命令を受け、ディスク装置は、ディスク装置自身が管理するトラック上のセクタ配置情報や、不良セクタ情報等の情報を用いて、(1)〜(3)の動作を行う。
【発明の効果】
【0019】
本発明によれば、トラックスイッチ待ち時間を要する記録媒体を用いるディスク装置において、トラックスイッチ待ち時間短縮し、あるいは、不要とし、ディスク装置の読出/書込速度を向上させることができる。
【0020】
また、本発明によれば、トラックスイッチ中、不揮発性メモリからデータを読出すことにより、データを途切れなく出力することができる。例えば、映像データの読出しを行う際には、安定したレートでデータを出力することにより、映像デコーダに対して、安定的にデータを供給することができる。
【発明を実施するための最良の形態】
【0021】
以下、本発明の実施例を説明する。
【実施例1】
【0022】
以下、本発明の一実施形態について、以降図1〜5を用いて説明する。図1は本発明の第1の実施形態によるディスク装置101とホスト装置114の構成を示すブロック図である。
【0023】
図1に示す本発明の実施形態によるディスク装置101は、図15により従来技術として説明したものと以下の部分が異なる。
【0024】
ディスク装置101がデータ構造の記録を行う揮発性メモリ部106を備える。揮発性メモリ部106は、ディスク部102と不揮発性メモリ部103に対する読出/書込命令を保存するための待ち行列であるデータ読出/書込キュー109と、キュー生成用命令記憶領域108を備える。
【0025】
制御部105が、ホスト装置114が発行した読出/書込命令を、ディスク部102と不揮発性メモリ部103への読出/書込命令に変換するための、仮想/物理セクタ変換テーブル107を備えること。仮想/物理セクタ変換テーブル107は制御部105上の読出し専用メモリまたは不揮発性メモリ部103に保存されており、ディスク部102が持つトラック数と同数のフィールドを持つ。
【0026】
ここで、実施例1については、不揮発性メモリ書込領域一時記憶110、シーク判断用テーブル111、シーク先変換テーブル112、AV I/F113、デコード部I/F116、映像出力I/F117及びTV118は使用しない。
【0027】
図2はキュー生成用命令記憶領域108を示す図である。これは、揮発性メモリ部106にあり、ホスト装置114からの読出/書込命令を記憶する領域である。「読出/書込開始物理セクタ番号」201はディスク部102と不揮発性メモリ部103に対する読出開始セクタ番号であり、「読出/書込サイズ」202には読出/書込サイズがセクタ単位で記載される。例えば、行203は読出/書込開始セクタ番号が1であり、読出/書込サイズが1300セクタ分であることを示す。
【0028】
図3は仮想/物理セクタ変換テーブル107を示す図である。これは、制御部105内にあり、ディスク部102と不揮発性メモリ部103のアドレスを管理するテーブルである。このテーブルは、仮想セクタ開始アドレス301、物理セクタ開始アドレス302とデータ保存先303の情報を持ち、ホスト装置114からの読出/書込命令をディスク部102と不揮発性メモリ部103それぞれへの読出/書込命令に変換するために利用される。このテーブルにおいて、「仮想セクタ開始アドレス」301はディスク装置101全体が持つ仮想アドレス、「物理セクタ開始アドレス」302はディスク部102と不揮発性メモリ部103に直接対応する物理アドレス、「データ保存先」303はデータが保存される部分がそれぞれ記載される。
【0029】
ホスト装置114からの命令をディスク装置101が受信した場合、命令は制御部105の仮想/物理セクタ変換テーブル107を用いて、以下のように変換される。
【0030】
例えば、行304は仮想セクタ開始アドレス1が不揮発性メモリ部103の物理セクタ開始アドレス1と対応していることを示す。行305は仮想セクタ開始アドレス101番がディスク部102の物理セクタ開始アドレス1番と対応していることを示す。行306は仮想セクタ開始アドレス1001番が不揮発性メモリ部103の物理セクタ開始アドレス101番と対応していることを示す。行307は仮想セクタ開始アドレス1101番がディスク部102の物理セクタ開始アドレス901番と対応していることを示す。
【0031】
このとき、ディスク部102と不揮発性メモリ部103の境界を、ディスク部102におけるトラックの境界に合わせることとする。すなわち、トラックスイッチが発生する、トラック先頭部分直前に不揮発性メモリ部103の領域を割り当てる。このとき、あるトラックにおける不揮発性メモリ部103の領域を( 該当トラックのディスク読出性能 × トラックスイッチ待ち時間)とする。
【0032】
図4はデータ読出/書込キュー109を示す図である。これは、揮発性メモリ106内にあり、ディスク部102と不揮発性メモリ部103に対する読出/書込命令を管理するキューである。このキューは、読出/書込開始物理セクタ番号401と読出/書込サイズ402とデータ読出/書込先403の情報を持ち、ディスク部102と不揮発性メモリ部103それぞれへの読出/書込命令を管理するために利用される。「読出/書込開始物理セクタ番号」401は仮想/物理セクタ変換テーブルで変換された物理セクタ番号、「読出/書込サイズ」402は読出/書込を行うサイズ、「データ読出/書込先」403はデータが保存されている部分が記載される。
【0033】
例えば、仮想セクタ1から1030までの書込みを行う場合、このキューにおいて、始めに、行404に示すように不揮発性メモリ部103の1セクタから100セクタ書込み、次に、行405に示すようにディスク部102の1セクタから900セクタ書込み、最後に、行406に示すように不揮発性メモリ部103の101セクタから30セクタ書込むといった待ち行列を保持する。
【0034】
図5は読出/書込処理を示す図である。これは、ホスト装置114から読出/書込命令があったとき、制御部105が仮想/物理セクタ変換テーブル107を用いてデータ読出/書込キュー109を生成し、このキューに従ってディスク部102と不揮発性メモリ部103に対して読出/書込動作を行う処理を示したものである。
【0035】
ステップ501は制御部105がキュー生成用命令記憶領域108に読出/書込命令をコピーする処理である。
【0036】
ステップ502は制御部105が読出/書込範囲に不揮発性メモリ部103領域とディスク部102領域両方を含むかどうか調べる処理である。すなわち、キュー生成用命令記憶領域108の示す読出/書込開始物理セクタ番号201から(読出/書込開始物理セクタ番号201 + 読出/書込サイズ202)までの間に、仮想/物理セクタ変換テーブル107の仮想セクタ開始アドレス301が示す値を2行以上含むかどうかによって判断を行う。もし、読出/書込範囲に不揮発性メモリ部103領域とディスク装置101領域の両方を含むのであれば、ステップ503へ進む。あるいは読出/書込範囲に不揮発性メモリ部103領域とディスク装置101領域両方を含むのでなければ、ステップ506へ進む。
【0037】
ステップ503は制御部105がキュー生成用命令記憶領域108が示す命令の先頭から、ディスク部102または不揮発性メモリ部103への命令を1件取り出し、データ読出/書込キュー109に追加する処理である。すなわち、ステップ503はキュー生成用命令記憶領域108が保持する読出/書込範囲までの間で最も値の小さい仮想セクタ開始アドレス301 -1までの読出/書込命令をデータ読出/書込キュー109に追加する。このとき、キュー生成用命令記憶領域108の開始アドレスから、ひとつずつアドレス値を加算して行き、キュー生成用命令記憶領域108が保持する読出/書込範囲内で最小の仮想セクタ開始アドレス301と同じ値になったとき、そこまで加算してきたサイズと開始アドレスをデータ読出/書込キュー109に追加する。
【0038】
ステップ504は制御部105がキュー生成用命令記憶領域108の読出/書込サイズからキューに追加した命令分のサイズを差引く処理である。すなわち、キュー生成用命令記憶領域108の読出/書込サイズを(読出/書込サイズ − データ読出/書込キュー109に追加した読出/書込命令のサイズ)に変更する。
【0039】
ステップ505は制御部105がキュー生成用命令記憶領域108の読出/書込開始物理セクタ番号201をキューに追加した命令の次のアドレスに変更する処理である。すなわち、キュー生成用命令記憶領域108の読出/書込開始物理セクタ番号201をデータ読出/書込キュー109の末尾に記された読出/書込開始物理セクタ番号401の次のセクタ番号に変更する。ステップ505が終了すると、ステップ502を再び行う。すなわち、ステップ503、504、505を繰り返し行うことで、ホスト装置114からの読出/書込命令を逐次解釈し、読出/書込範囲に不揮発性メモリ部領域とディスク部領域の両方を含んでいる読出/書込キューからディスク部102または不揮発性メモリ部103の片方のみへの読出/書込み命令を生成することができる。
【0040】
ステップ506はステップ502において、キュー生成用命令記憶領域108に保持されている読出/書込命令が、ディスク部102領域、不揮発性メモリ部103領域は片方を含む、あるいは書込みサイズが0の場合に実行される。ディスク部102領域、不揮発性メモリ部103領域の片方を含む場合は、制御部105がディスク部102と不揮発性メモリ部103どちらか一方に対する読出/書込命令をキュー生成用命令記憶領域108からデータ読出/書込キュー109に追加する。また、書込みサイズが0の場合はデータ読出/書込キュー109への追加を行わない。
【0041】
ステップ507は制御部105が不揮発性メモリ部103に対する読出/書込キューが存在するかどうか、すなわち不揮発性メモリ部103に対する読出/書込キューか、ディスク部に対する読出/書込キューかを調べる処理である。もし不揮発性メモリ部103に対する読出/書込キューが存在するのであれば、ステップ508へ進み、存在しないのであればディスク部に対する読出/書込キューであるので、ステップ509へ進む。
【0042】
ステップ508はディスク部102の書込み開始アドレスへシークしながら不揮発性メモリ部103領域へ読出/書込する処理である。ここでシークとは、磁気ディスク(図示せず)に記録/再生を行う記録/再生素子を有する磁気ヘッド(図示せず)を、トラック上に移動させることであり、本実施例では特に隣接するトラック上に移動させること(トラックスイッチ)をのことである。すなわち、制御部105は、不揮発性メモリ部103領域の読出/書込を行い、その際、ディスク部102は読出/書込対象となる不揮発性メモリ部103領域と仮想セクタアドレス301において連続する、次の物理セクタ開始アドレス302へのシークを行う。
【0043】
ステップ509は、読出/書込キューに存在する命令が、ディスク部102への命令のみであったときに、制御部105が磁気ヘッドを制御してディスク部102へ読出/書込を行う処理である。
【0044】
上記で説明した、ステップ501〜506までの、仮想/物理セクタ変換テーブル107とキュー生成用命令記憶領域108とを用いたデータ読出/書込キュー109生成処理と、ステップ507〜509のデータ読出/書込キュー109を用いた読出/書込処理を行うことによって、トラックの先頭部分に対するシーク(トラックスイッチ)時間も読出/書込が可能となる。すなわち、連続したデータをディスク部102のトラックに書込み、トラックのうち次に書込を行う隣接するトラックへシークを移動させる時間に、不揮発性メモリ部103に当該連続したデータを書き込むことができ、書込速度を向上させることができる。また、上記のような書込を行えば、連続したデータがディスク部102と不揮発性メモリ部103に分けて記憶してあるので、読出時に、連続したデータをディスク部102のトラックから読出し、トラックのうち次に読出を行う隣接するトラックへシークを移動させる時間に、不揮発性メモリ部に当該連続したデータを読出すことができ、読出し速度を向上させることができ、本発明の意図する効果が得られる。例えば、5200rpm、トラックスイッチ時間1msのHDDにおいて、HDD容量の8%分不揮発性メモリを使用すると、トラックスイッチが発生する場合も転送の途切れなく読み出すことができる。
【実施例2】
【0045】
第2の実施形態ついて、 以降図1及び図6〜10を用いて説明する。図1において、第2の実施形態によるディスク装置101は、実施例1として説明した装置と以下の部分が異なる。すなわち、図1に示すディスク装置101において、制御部105が、ホスト装置114からの読出/書込命令に対し、次のトラックに対するシーク動作を制御する機能を備える。揮発性メモリ部106が、ホスト装置114からの書込命令が連続的なものであったかどうかを記録する、シーク判断用テーブル111を備える。また、揮発性メモリ部106は、制御部105が不揮発性メモリ部103に対する書込みを行ったときに、ホスト装置114からの不揮発性メモリ部103に対する書込命令が連続的なものであったかどうかを記録する、不揮発性メモリ書込領域一時記憶110を備える。ここでいう書込命令/読込命令が連続的とは、書込命令/読込命令が、不揮発性メモリ部への書込/読込の後に、ディスク部102への書込/読込を行う命令になっていることである。
【0046】
図6はシーク判断用テーブル111を示す図である。これは、ディスク装置101からデータの読出を行う際、過去の書込み状況を参照することにより、次のトラック(隣接するトラック)に対してシーク動作を行うかどうかを判断するためのテーブルである。シーク判断用テーブル111において、「トラック番号」601はディスク部102のトラック番号である。「連続データ開始セクタ」602はディスク部102の各トラックに割り当てられた不揮発性メモリ部103において、最終セクタを含む連続データがどこから始まるかを、各トラックの先頭セクタ番号からのオフセットで表現した値が記載される。「次のトラックとの連続性」603はディスク部102の各トラックに割り当てられた不揮発性メモリ部103において、最終セクタに値が書き込まれているかどうかが記載される。
【0047】
例えば、行604に示すように、トラック番号601が1であるものに対して、連続データ開始セクタ602が0であり、次のトラックとの連続性603がtrueである場合、ディスク部102のトラック番号が1である部分に対応した不揮発性メモリ部103の領域において、最初のセクタから最後のセクタまで連続したデータが書き込まれており、さらに、不揮発性メモリ部103領域の直後に割り当てられたディスク部102の領域へも連続したデータが書き込まれていることを示す。
【0048】
また、行605に示すように、トラック番号601が2であるものに対して、連続データ開始セクタ602が -1であり、次のトラックとの連続性603がfalseである場合、該当トラックが初期状態にあることを示す。すなわち、ディスク部102のトラック番号が2である部分に対応した不揮発性メモリ部103の領域において、データが書き込まれておらず、不揮発性メモリ部103領域の直後に割り当てられたディスク部102の領域への連続性が無いことを示す。
【0049】
また、行606に示すように、トラック番号601が3であるものに対して、連続データ開始セクタ602が20であり、次のトラックとの連続性603がfalseである場合、ディスク部102のトラック番号が3である部分に対応した不揮発性メモリ部103の領域において、20セクタ目から連続したデータが書き込まれているが、連続データが書き込まれた領域は不揮発性メモリ部103領域内で途切れており、不揮発性メモリ部103領域の直後に割り当てられたディスク部102の領域への連続性は無いことを示す。
【0050】
また、行607に示すように、トラック番号601が4であるものに対して、連続データ開始セクタ602が10であり、次のトラックとの連続性603がtrueである場合、ディスク部102のトラック番号が4である部分に対応した不揮発性メモリ部103の領域において、10 セクタ目から連続したデータが書き込まれており、不揮発性メモリ部103領域の直後に割り当てられたディスク部102の領域への連続性があることを示す。
【0051】
図7は不揮発性メモリ書込領域一時記憶110を示す図である。これは、不揮発性メモリ部103に対する書込領域を管理し、不揮発性メモリ部103領域内で連続データ書込が行われているかどうかを判断するために利用するものである。不揮発性メモリ書込領域一時記憶110において、「書込開始物理セクタ番号」701は不揮発性メモリ部103領域に対して連続して書込みを行う際の始点となるセクタ番号であり、「書込サイズ」702は連続して書込まれるサイズがセクタ単位で記載される。
【0052】
例えば、行703に示すように、書込み開始物理セクタ番号701が1001であり、書込サイズ702が200である場合、不揮発性メモリ部103領域の物理セクタ1001番から200セクタの連続書込みが行われる。
【0053】
図8は不揮発性メモリ書込み処理を示す図である。これは、制御部105が不揮発性メモリ部103への書込処理を行うと共に、不揮発性メモリ書込領域一時記憶110を用いてシーク判断用テーブル111の値を更新する処理を表すものであり、実施例2における書込み処理は図5で説明した処理のステップ508(不揮発性メモリ部103に対する書込み)を以下に説明する処理に置き換えたものである。
【0054】
ステップ801は制御部105が不揮発性メモリ部103への書込命令に従って書込みを行う処理である。
【0055】
ステップ802は制御部105が直前の書込命令と連続したアドレスかどうか調べる処理である。すなわち、ステップ801において実行した書込み命令の書込み開始物理セクタ番号と、不揮発性メモリ書込領域一時記憶110が保持している、(書込開始物理セクタ番号710 + 書込サイズ702)の値が等しかったとき、直前の書込命令と連続したアドレスとみなし、ステップ803へ進む。ここで、もし直前の書込命令と連続したアドレスでなければ、ステップ804へ進む。
【0056】
ステップ803は制御部105が不揮発性メモリ書込領域一時記憶110の書込サイズに、ステップ801で実行した、直前の命令の書込サイズを加算して保存する処理である。
【0057】
ステップ804は制御部105が不揮発性メモリ部103に対して、連続した書込が行われていない場合、前回までの不揮発性メモリ部103に対する書込み状態を初期化するために、不揮発性メモリ書込領域一時記憶110に今回の命令を書込む処理である。
【0058】
ステップ805は制御部105がディスク部102の1トラック分に割り当てられた不揮発性メモリ部103領域の最後のセクタを含むかどうかを調べる処理である。もし不揮発性メモリ部103領域最後のセクタを含むのであれば、ステップ806へ進む。もし不揮発性メモリ部103領域最後のセクタを含むのでなければ、処理を終了する。
【0059】
ステップ806は制御部105がシーク判断用テーブル111の連続データ開始セクタ602を不揮発性メモリ書込領域一時記憶110の開始セクタの値に書換えを行う処理である。
【0060】
ステップ807は制御部105がデータ読出/書込みキュー109の書込みキューが空でないかどうか調べる処理である。もしデータ読出/書込みキュー109の書込みキューが空でないのであれば、ステップ808へ進む。仮想アドレスにおいて、不揮発性メモリ部103の領域の次にはディスク部102領域が必ず存在するので、ステップ808において、データ書込みキュー112が空でないのなら連続した書込みが行われているとわかる。また、もしデータ書込みキュー112が空でないのでなければ、処理を終了する。
【0061】
ステップ808は制御部105がシーク判断用テーブル111の次トラックとの連続性603をtrueに変更する処理である。
【0062】
図9は読出処理を示す図である。これは、制御部105が、 シーク判断用テーブル111を参照して、不揮発性メモリ部103とディスク部102の読出処理を行う処理を表す。
【0063】
ステップ901はデータ読出キュー生成処理であり、図5に示すデータ読出/書込キュー生成処理のステップ501〜506と同様の処理を行う。
【0064】
ステップ902はデータ読出キューから1件取出す処理である。
【0065】
ステップ903は902で取出したデータ読出しキューのデータ読出元が不揮発性メモリ部103かどうか調べる処理である。もしデータ読出元が不揮発性メモリ部103であれば、ステップ904へ進む。もしデータ読出元が不揮発性メモリ部103でなければ、ステップ907へ進む。
【0066】
ステップ904は命令がシーク判断用テーブル111の範囲を含み、かつ次のトラックとの連続性603がtrueかどうか調べる処理である。もし命令がシーク判断用テーブル111の範囲を含み、かつ次のトラックとの連続性603がtrueであれば、ステップ905へ進む。もし命令がシーク判断用テーブル111の範囲を含まない、あるいは次のトラックとの連続性がfalseであれば、ステップ903へ進む。
【0067】
ステップ905は読出し対象データから連続する最初のディスク部102領域にシークして先読みを開始する処理である。
【0068】
ステップ906はデータ読出しキューの内容を参照して、不揮発性メモリ部103から読出する処理である。
【0069】
ステップ907はデータ読出しキューの内容を参照して、ディスク装置101から読出する処理である。
【0070】
ステップ908はデータ読出しキューが空かどうか調べる処理である。もしデータ読出しキューが空でなければ、ステップ902へ戻る。また、データ読出しキューが空であれば、処理を終了する。
【0071】
上記で説明した、ステップ801〜808までの、不揮発性メモリ部103への書込み処理において、不揮発性メモリ書込領域一時記憶110を用いてシーク判断用テーブル111を更新し、ステップ901〜908においてシーク判断用テーブル111を用いて読出しを行うことによって、読出/書込を行う際、不揮発性メモリ部103領域の途中で連続データが終了した場合や、連続データに含まれない不揮発性メモリ部103のデータを読み出した際にディスク部102のヘッドが次のトラックに対してシーク動作を行うことを防ぐことができ、自動的に次のトラックにヘッドをシークすることによって発生するシークの失敗をなくすことができる。
【実施例3】
【0072】
第3の実施形態ついて、以降図1及び図10〜13を用いて説明する。図1において、第3の実施形態によるディスク装置101は、実施例2として説明した装置と以下の部分が異なる。すなわち、図1に示すディスク装置101において、制御部105が、ホスト装置114からの読出/書込命令に対し、次のトラックに対するシーク動作を制御する動作が異なる。また、揮発性メモリ部106が、ホスト装置114からの書込命令が連続的なものであったかどうかを記録する、シーク先変換テーブル112を備え、シーク判断用テーブル111を備えない。
【0073】
図10はシーク先変換テーブル112を示す図である。これは、揮発性メモリ部103に存在し、不揮発性メモリ部103への読出/書込処理中に、ディスク部102のヘッドがどこへシークするかを決定するためのテーブルである。
【0074】
「トラック番号」1001はディスク部102のトラック番号である。「連続データ終了セクタ」1002はディスク部102の各トラックに割り当てられた不揮発性メモリ部103において、不揮発性メモリ部103領域の先頭から連続したデータがどこで途切れるかを、書込みが行われたセクタ数で示す。「シーク先セクタ」1003はディスク部102の各トラックに割り当てられた不揮発性メモリ部103において、最終セクタに値が書き込まれているかどうかが記載される。
【0075】
図11は書込処理を示す図である。これは、不揮発性メモリ部103に存在し、ホスト装置114から書き込み命令を受信した時、制御部105において実行されるものである。
【0076】
ステップ1101はデータ書込キュー生成処理であり、図5に示すデータ読出/書込キュー生成処理のステップ501〜506と同様の処理を行う。
【0077】
ステップ1102はデータ書込キューから1件取出す処理である。
【0078】
ステップ1103はシーク先情報生成処理であり、詳細は図12にて述べる。
【0079】
ステップ1104はデータ書込先が不揮発性メモリ部103かどうか調べる処理である。もしデータ書込先が不揮発性メモリ部103であれば、ステップ1105へ進む。もしデータ書込先が不揮発性メモリ部103でなければ、ステップ1106へ進む。
【0080】
ステップ1105は書込みキューを参照し、不揮発性メモリ部103へ書込みする処理である。
【0081】
ステップ1106は書込みキューを参照し、ディスク部102へ書込を行う処理である。
【0082】
ステップ1107はデータ書込キューが空かどうか調べる処理である。もしデータ書込キューが空であれば、ステップ1102へ戻る。あるいはデータ書込キューが空でなければ、処理を終了する。
【0083】
図12はシーク先変生成処理を示す図である。これは、図11におけるシーク情報生成処理1105を詳細に説明するものである。
【0084】
ステップ1201は不揮発性メモリ部103領域の最初のセクタを含むかどうかを調べる処理である。もし不揮発性メモリ部103領域の最初のセクタを含むのであれば、ステップ1202へ進む。もし不揮発性メモリ部103領域最初のセクタを含むのでなければ、ステップ1203へ進む。
【0085】
ステップ1202は不揮発性メモリ書込領域一時記憶110にデータ書込キューから取り出した今回の命令を書込する処理である。
【0086】
ステップ1203は不揮発性メモリ書込領域一時記憶110に値が入っているかどうか調べる処理である。もし不揮発性メモリ書込領域一時記憶110に値が入っているのであれば、ステップ1204へ進む。もし不揮発性メモリ書込領域一時記憶110に値が入っているのでなければ、処理を終了する。
【0087】
ステップ1204は直前の書込命令と連続したアドレスかどうか調べる処理である。もし直前の書込命令と連続したアドレスのであれば、ステップ1205へ進む。もし直前の書込命令と連続したアドレスでなければ、ステップ1206へ進む。例えば、不揮発性メモリ部103への書込命令と、ディスク部102への書込命令では書込対象の物理アドレスが異なるので、連続したアドレスとはみなさない。
【0088】
ステップ1205は不揮発性メモリ書込領域一時記憶110の書込サイズに今回データ書き込みキューから取り出した命令の書込サイズを加算する処理である。
【0089】
ステップ1206はシーク先変換テーブル112の連続データ終了セクタを不揮発性メモリ書込領域一時記憶110の(開始セクタ+書込サイズ−1)の値に書換えを行う処理である。
【0090】
ステップ1207はシーク先変換テーブル112のシーク先セクタを今回の命令の書込開始セクタの値に書換えを行う処理である。
【0091】
ステップ1208は不揮発性メモリ書込領域一時記憶110を初期化する処理である。
【0092】
図13は読出処理を示す図である。これは、不揮発性メモリ部103に存在し、ホスト装置114から書き込み命令受信時、制御部105において実行されるものである。
【0093】
ステップ1301はデータ読出キュー生成処理であり、図5に示すデータ読出/書込キュー生成処理のステップ501〜506と同様の処理を行う。
【0094】
ステップ1302はデータ読出キューから1件取出す処理である。
【0095】
ステップ1303はデータ読出元が不揮発性メモリ部103かどうか調べる処理である。もしデータ読出元が不揮発性メモリ部103であれば、ステップ1304へ進む。もしデータ読出元が不揮発性メモリ部103でなければ、ステップ1307へ進む。
【0096】
ステップ1304は読出し命令がシーク先変換テーブル112の範囲を含んでいるかどうか調べる処理である。もし読出し命令がシーク先変換テーブル112の範囲を含んでいるのであれば、ステップ1305へ進む。もし読出し命令がシーク先変換テーブル112の範囲を含んでいないのであれば、処理を終了する。
【0097】
ステップ1305はシーク先変換テーブル112が示すセクタにシーク開始する処理である。
【0098】
ステップ1306は不揮発性メモリ部103からホスト装置114へ転送する処理である。
【0099】
ステップ1307はデータ読出しキューを参照してディスク装置101から読出する処理である。
【0100】
ステップ1308はデータ読出しキューが空かどうか調べる処理である。もしデータ読出しキューが空であれば、ステップ1302へ戻る。あるいはデータ読出しキューが空でなければ、処理を終了する。
【0101】
上記で説明した、ステップ1101〜1107までの、シーク先情報生成処理において、不揮発性メモリ書込領域一時記憶110を用いてシーク先変換テーブル112を更新し、ステップ1301〜1308においてシーク先変換テーブル112を用いて読出しを行うことによって、不揮発性メモリ部103の読み込み中、ディスク部102の不特定の場所に対する読出しが必要となるような場合でも、データを途切れなく読出し続けることができる。
【実施例4】
【0102】
第4の実施形態ついて、図1を用いて説明する。図1において、第4の実施形態によるディスク装置101は、実施例1〜3に示した部分の他にAVI/F113を備えてもよい。
【0103】
本実施形態によるディスク装置101はAVI/F113を備えることにより、ホスト装置114のデコード部I/F116と直接接続することが可能となる。ホスト装置114が外部I/F104を経由してディスク装置101内の制御部105に命令を出すと、制御部105はAV I/F113経由で映像データを出力する。ホスト装置114はデコードされたデータを用いて、映像出力I/F118からTV119に対して出力を行うことができる。
【0104】
このとき、実施例1〜3に示した本発明の効果により、デコード部I/F116に接続されたデコーダは中間バッファなしでも映像を乱れさせることのないように映像出力I/F117経由でTV118に対して出力を行うことができる。
【図面の簡単な説明】
【0105】
【図1】本発明のディスク装置におけるハードウェアおよびシステム構成図である。
【図2】キュー生成用命令記憶領域の構造を示す図である。
【図3】仮想/物理セクタ変換テーブルの構造を示す図である。
【図4】データ読出/書込キューの構造を示す図である。
【図5】実施例1の読出/書込処理を示す図である。
【図6】シーク判断用テーブルの構造を示す図である。
【図7】不揮発性メモリ書込領域一時記憶の構造を示す図である。
【図8】実施例2の不揮発性メモリ書込み処理を示す図である。
【図9】実施例2の読出処理を示す図である。
【図10】シーク先変換テーブルの構造を示す図である。
【図11】実施例3の書込み処理を示す図である。
【図12】実施例3のシーク先情報生成処理を示す図である。
【図13】実施例3の読出処理を示す図である。
【図14】従来のディスク装置を表す図である。
【符号の説明】
【0106】
101…ディスク装置
102…ディスク部
103…不揮発性メモリ部
104…外部I/F部
105…制御部
106…揮発性メモリ部
107…仮想/物理セクタ変換テーブル
108…キュー生成用命令記憶領域
109…データ読出キュー
110…不揮発性メモリ書込領域一時記憶
111…シーク判断用テーブル
112…シーク先変換テーブル
113…AVI/F
114…ホスト装置
115…ディスク装置用I/F
116…デコード部I/F
117…映像出力I/F
118…TV
201…読出/書込開始物理セクタ番号
202…読出/書込サイズ
301…仮想セクタ開始アドレス
302…物理セクタ開始アドレス
303…データ保存先
401…読出/書込開始物理セクタ番号
402…読出/書込サイズ
403…データ読出/書込先
501…キュー生成用命令記憶領域に読出/書込命令をコピーする処理
502…読出/書込範囲に不揮発性メモリ部領域とディスク装置領域両方を含むかどうか調べる処理
503…キュー生成用命令記憶領域が示す命令の先頭から、ディスク部または不揮発性メモリ部への命令を1件取り出し、データ読出/書込キューに追加する処理
504…キュー生成用命令記憶領域の読出/書込サイズからキューに追加した命令分サイズを差引く処理
505…キュー生成用命令記憶領域の読出/書込開始物理セクタ番号をキューに追加した命令の次のアドレスに変更する処理
506…キュー生成用命令記憶領域から読出/書込サイズ分の命令をデータ読出/書込キューに追加する処理
507…不揮発性メモリ部に対する読出/書込キューが存在かどうか調べる処理
508…ディスク装置の書込み開始アドレスへシークしながら読出/書込する処理
509…キューを参照して読出/書込する処理
601…トラック番号
602…連続データ開始セクタ
603…次のトラックとの連続性
701…読込開始物理セクタ番号
702…読込サイズ
801…不揮発性メモリへ書込みする処理
802…直前の書込命令と連続したアドレスかどうか調べる処理
803…不揮発性メモリ書込領域一時記憶の書込サイズに今回の命令の書込サイズを加算する処理
804…不揮発性メモリ書込領域一時記憶に今回の命令を書込する処理
805…不揮発性メモリ部領域最後のセクタを含むかどうか調べる処理
806…シーク判断用テーブルの連続データ開始セクタを不揮発性メモリ書込領域一時記憶110の開始セクタの値に書換えを行う処理
807…データ書込みキューが空でないかどうか調べる処理
808…シーク判断用テーブルの”次トラックの連続性”をtrueに変更する処理
901…データ読出キュー生成処理
902…データ読出キューから1件取出す処理
903…データ読込元が不揮発性メモリかどうか調べる処理
904…命令がシーク判断用テーブルの範囲を含み、かつ次のトラックとの連続性がtrueかどうか調べる処理
905…読出し対象データから連続する最初のディスク部領域にシークして先読みを開始する処理
906…不揮発性メモリから読出する処理
907…ディスク装置から読出する処理
908…データ読出しキューが空かどうか調べる処理
1001…トラック番号
1002…連続データ終了セクタ
1003…シーク先セクタ
1101…データ書込キュー生成処理
1102…データ書込キューから1件取出す処理
1103…シーク先情報生成処理
1104…データ書込先が不揮発性メモリかどうか調べる処理
1105…不揮発性メモリへ書込みする処理
1106…ディスク装置へ書込する処理
1107…データ書込キューが空かどうか調べる処理
1201…不揮発性メモリ部領域最初のセクタを含むかどうか調べる処理
1202…不揮発性メモリ書込領域一時記憶に今回の命令を書込する処理
1203…不揮発性メモリ書込領域一時記憶に値が入っているかどうか調べる処理
1204…直前の書込命令と連続したアドレスかどうか調べる処理
1205…不揮発性メモリ書込領域一時記憶の書込サイズに今回の命令の書込サイズを加算する処理
1206…シーク先変換テーブルの連続データ終了セクタを不揮発性メモリ書込領域一時記憶の(開始セクタ+書込サイズ−1)の値に書換えを行う処理
1207…シーク先変換テーブルのシーク先セクタを今回の命令の書込開始セクタの値に書換えを行う処理
1208…不揮発性メモリ書込領域一時記憶を初期化する処理
1301…データ読出キュー生成処理
1302…データ読出キューから1件取出す処理
1303…データ読込元が不揮発性メモリかどうか調べる処理
1304…読出し命令がシーク先変換テーブルの範囲を含んでいるかどうか調べる処理
1305…シーク先変換テーブルが示すセクタにシーク開始する処理
1306…不揮発性メモリからホストへ転送する処理
1307…ディスク装置から読出する処理
1308…データ読出しキューが空かどうか調べる処理
1401…従来制御部
【特許請求の範囲】
【請求項1】
データを記憶する同心円状に配置させた複数のトラックと、前記トラックへ書込/読出を行う書込/読出手段とを有するディスク部と、
半導体の記憶媒体である不揮発性メモリ部と、
前記ディスク部及び前記不揮発性メモリ部への書込み及び読出しを制御する制御部とを備えたディスク装置において、
前記トラックのアドレスと、前記トラックに隣接するトラックのアドレスとの間のアドレスを、前記不揮発性メモリ部の記憶領域が有していることを特徴とするディスク装置。
【請求項2】
請求項1において、
前記ディスク部が持つ物理空間の同心円状に連続的に配置された1周分の最後の物理アドレスと、次の1周に切り替わる最初の物理アドレスの間に、前記不揮発性メモリの物理アドレスを割り当てることを特徴としたディスク装置
【請求項3】
請求項2において、
前記トラックのアドレスと前記隣接するトラックのアドレスの間のアドレスに前記不揮発性メモリを割当てる容量を、前記トラック1周分に対して、(前記ディスク部における読出性能(MB/s)× 読出し中断時間(s))以上とすることを特徴とするディスク装置。
【請求項4】
請求項1において、
連続するデータを書込むときに、
前記ディスク部のトラック、前記不揮発性メモリ部、前記トラックに隣接するトラックの順に書き込みを行うことを特徴とするディスク装置。
【請求項5】
請求項1において、
連続するデータを読出すときに、
前記ディスク部のトラック、前記不揮発性メモリ部、前記トラックに隣接するトラックの順に読出しを行うことを特徴とするディスク装置。
【請求項6】
請求項4または請求項5において、
前記不揮発性メモリについて書込みまたは読出しを行っているときに、前記トラックから前記隣接するトラックへのシークを行うことを特徴とするディスク装置。
【請求項7】
請求項1において、
前記不揮発性メモリへの書込みの場合に、前記不揮発性メモリと、前記ディスク部のトラックとでのデータの連続性を記憶し、
前記記憶されたデータの連続性に基づいて、前記ディスク部における読出し中断時間に前記不揮発性メモリを読出すときに、読出/書込手段を前記トラックへ移動させる前記ディスク部の先読みの制御を行うかどうか判断することを特徴とするディスク装置。
【請求項8】
データを記憶する同心円状に配置させた複数のトラックと、前記トラックからデータを読出/書込する読出/書込手段とを有するディスク部と、
半導体の記憶媒体である不揮発性メモリ部と、
前記ディスク部及び前記不揮発性メモリ部への書込み及び読出しを制御する制御部とを備えたディスク装置において、
前記不揮発性メモリへの書込む場合に、前記不揮発性メモリに対する次の書込みを記憶し、
データの読出しの際に記憶した第一の記憶媒体に対する書き込み開始場所を先読みの対象とすることを特徴とするディスク装置。
【請求項9】
請求項1において、映像デコーダと接続する専用のI/Fを備えることを特徴とするディスク装置。
【請求項10】
データを記憶する同心円状に配置させた複数のトラックと、前記トラックへ書込/読出を行う書込/読出手段とを有するディスク部と、
半導体の記憶媒体である不揮発性メモリ部と、
前記ディスク部及び前記不揮発性メモリ部への書込み及び読出しを制御する制御部とを備えたディスク装置の記録方法において、
前記制御部が、受信したデータの第一のデータを第一の前記トラックに書込を指示する第一の書込命令と、前記データの第二のデータを第二の前記トラックに書込を指示するする第二の書込命令と、前記データの第三のデータを前記不揮発メモリに書込を指示する第三の書込命令とを生成する命令生成ステップと、
前記制御部が、前記第一の書込命令に対して、前記書込/読出手段を制御して前記第一のトラックへ前記第一のデータの書込を行う第一の書込ステップと、
前記第一の書込ステップ後に、前記制御部が、前記第三の書込命令に対して、前記不揮発性メモリ部へ前記第三のデータの書込を行う第三の書込ステップと、
前記第三の書込ステップと並行して、前記書込/記録手段を前記第一のトラック上から前記第二のトラック上へ移動させるシークステップと、
前記第三の書込ステップ及び前記シークステップ後に、前記制御部が、前記第二の書込命令に対して、前記書込/読出手段を制御して前記第二のトラックへ前記第二のデータの書込を行う第二の書込ステップとを行うことを特徴とするディスク装置の記録方法。
【請求項11】
請求項10において、
前記第一のトラックと前記第二のトラックとは、隣接していることを特徴とするディスク装置の記録方法。
【請求項1】
データを記憶する同心円状に配置させた複数のトラックと、前記トラックへ書込/読出を行う書込/読出手段とを有するディスク部と、
半導体の記憶媒体である不揮発性メモリ部と、
前記ディスク部及び前記不揮発性メモリ部への書込み及び読出しを制御する制御部とを備えたディスク装置において、
前記トラックのアドレスと、前記トラックに隣接するトラックのアドレスとの間のアドレスを、前記不揮発性メモリ部の記憶領域が有していることを特徴とするディスク装置。
【請求項2】
請求項1において、
前記ディスク部が持つ物理空間の同心円状に連続的に配置された1周分の最後の物理アドレスと、次の1周に切り替わる最初の物理アドレスの間に、前記不揮発性メモリの物理アドレスを割り当てることを特徴としたディスク装置
【請求項3】
請求項2において、
前記トラックのアドレスと前記隣接するトラックのアドレスの間のアドレスに前記不揮発性メモリを割当てる容量を、前記トラック1周分に対して、(前記ディスク部における読出性能(MB/s)× 読出し中断時間(s))以上とすることを特徴とするディスク装置。
【請求項4】
請求項1において、
連続するデータを書込むときに、
前記ディスク部のトラック、前記不揮発性メモリ部、前記トラックに隣接するトラックの順に書き込みを行うことを特徴とするディスク装置。
【請求項5】
請求項1において、
連続するデータを読出すときに、
前記ディスク部のトラック、前記不揮発性メモリ部、前記トラックに隣接するトラックの順に読出しを行うことを特徴とするディスク装置。
【請求項6】
請求項4または請求項5において、
前記不揮発性メモリについて書込みまたは読出しを行っているときに、前記トラックから前記隣接するトラックへのシークを行うことを特徴とするディスク装置。
【請求項7】
請求項1において、
前記不揮発性メモリへの書込みの場合に、前記不揮発性メモリと、前記ディスク部のトラックとでのデータの連続性を記憶し、
前記記憶されたデータの連続性に基づいて、前記ディスク部における読出し中断時間に前記不揮発性メモリを読出すときに、読出/書込手段を前記トラックへ移動させる前記ディスク部の先読みの制御を行うかどうか判断することを特徴とするディスク装置。
【請求項8】
データを記憶する同心円状に配置させた複数のトラックと、前記トラックからデータを読出/書込する読出/書込手段とを有するディスク部と、
半導体の記憶媒体である不揮発性メモリ部と、
前記ディスク部及び前記不揮発性メモリ部への書込み及び読出しを制御する制御部とを備えたディスク装置において、
前記不揮発性メモリへの書込む場合に、前記不揮発性メモリに対する次の書込みを記憶し、
データの読出しの際に記憶した第一の記憶媒体に対する書き込み開始場所を先読みの対象とすることを特徴とするディスク装置。
【請求項9】
請求項1において、映像デコーダと接続する専用のI/Fを備えることを特徴とするディスク装置。
【請求項10】
データを記憶する同心円状に配置させた複数のトラックと、前記トラックへ書込/読出を行う書込/読出手段とを有するディスク部と、
半導体の記憶媒体である不揮発性メモリ部と、
前記ディスク部及び前記不揮発性メモリ部への書込み及び読出しを制御する制御部とを備えたディスク装置の記録方法において、
前記制御部が、受信したデータの第一のデータを第一の前記トラックに書込を指示する第一の書込命令と、前記データの第二のデータを第二の前記トラックに書込を指示するする第二の書込命令と、前記データの第三のデータを前記不揮発メモリに書込を指示する第三の書込命令とを生成する命令生成ステップと、
前記制御部が、前記第一の書込命令に対して、前記書込/読出手段を制御して前記第一のトラックへ前記第一のデータの書込を行う第一の書込ステップと、
前記第一の書込ステップ後に、前記制御部が、前記第三の書込命令に対して、前記不揮発性メモリ部へ前記第三のデータの書込を行う第三の書込ステップと、
前記第三の書込ステップと並行して、前記書込/記録手段を前記第一のトラック上から前記第二のトラック上へ移動させるシークステップと、
前記第三の書込ステップ及び前記シークステップ後に、前記制御部が、前記第二の書込命令に対して、前記書込/読出手段を制御して前記第二のトラックへ前記第二のデータの書込を行う第二の書込ステップとを行うことを特徴とするディスク装置の記録方法。
【請求項11】
請求項10において、
前記第一のトラックと前記第二のトラックとは、隣接していることを特徴とするディスク装置の記録方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2009−301595(P2009−301595A)
【公開日】平成21年12月24日(2009.12.24)
【国際特許分類】
【出願番号】特願2008−151220(P2008−151220)
【出願日】平成20年6月10日(2008.6.10)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成21年12月24日(2009.12.24)
【国際特許分類】
【出願日】平成20年6月10日(2008.6.10)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]