JP5291311B2 - Usbストレージシステムおよびデータ転送制御用のプログラム - Google Patents

Usbストレージシステムおよびデータ転送制御用のプログラム Download PDF

Info

Publication number
JP5291311B2
JP5291311B2 JP2007226722A JP2007226722A JP5291311B2 JP 5291311 B2 JP5291311 B2 JP 5291311B2 JP 2007226722 A JP2007226722 A JP 2007226722A JP 2007226722 A JP2007226722 A JP 2007226722A JP 5291311 B2 JP5291311 B2 JP 5291311B2
Authority
JP
Japan
Prior art keywords
area
write
storage device
usb
determined
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.)
Active
Application number
JP2007226722A
Other languages
English (en)
Other versions
JP2009059219A (ja
Inventor
毅 藤田
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.)
IO Data Device Inc
Original Assignee
IO Data Device Inc
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 IO Data Device Inc filed Critical IO Data Device Inc
Priority to JP2007226722A priority Critical patent/JP5291311B2/ja
Publication of JP2009059219A publication Critical patent/JP2009059219A/ja
Application granted granted Critical
Publication of JP5291311B2 publication Critical patent/JP5291311B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Systems (AREA)

Description

本発明は、上位装置とUSB(Universal Serial Bus)接続可能なDVD(Digital Versatile Disc)ドライブ等のストレージ装置とがUSB転送路を介して接続され、上位装置とストレージ装置との間でUSBデータ転送を行う、USBストレージシステムおよびデータ転送制御用のプログラムに関する。
USBは、共通のコネクタで様々な周辺デバイスを接続可能なインタフェース規格であり、USB2.0は、USB1.xと互換性を維持しながら400MHzのバス動作を実現することから、多くの外付けストレージ機器の標準インタフェースとして多用されるようになった。
ところで、前記したストレージ機器が上位装置(Windows(登録商標)を搭載したPC等)に接続されるUSBストレージシステムにおいて、通常、1回のWRITEコマンドで転送されるデータのサイズは、アプリケーションにも依存するが概ね64Kバイトになっている。このため、例えば、512Kバイトのファイルをストレージ機器に書き込むためには、PCからWRITEコマンドが8回発行され、その都度、一連のデータ転送動作、およびステイタス(ACK、NAK、NYET等)応答が行われる。
このため、先読みキャッシュを用いて読み出し速度の改善をはかるとともに、上位デバイスドライバと物理デバイスドライバの中間に位置するフィルタドライバでデータ転送長を最大1MB(0x100000)に拡大する処理を行い、1回のデータ転送のコマンドおよびステイタス応答にかかる時間を最大で1/16に縮小する技術が知られている。
すなわち、書込みについては連続した領域への書込みデータをバッファリングし、それを纏めて書込むことによりシーケンシャルライト(連続領域への書込み)のパフォーマンスを向上させ、読込みについては先読みによりシーケンシャルリード(連続領域の読出し)のパフォーマンスを向上させている。
また、前記したように、データ転送長を拡大し、コマンド・ステイタス応答を纏めることでデータ転送処理にかかるオーバヘッドを削減する技術の他に、HDD(Hard Disc Drive)等のストレージ機器にディスクキャッシュを内蔵し、ディスクキャッシュ内に先読みしたデータを一時保存し、ヒットした場合に比較的応答速度の遅いドライブから読み出すことなくディスクキャッシュに一時保存された連続領域の先読みしたデータを用いることでパフォーマンスの向上をはかる技術も知られている(例えば、特許文献1〜3参照)。
特開平7−334426号公報(段落「0015」〜「0016」、図1) 特開平7−73107号公報(段落「0037」〜「0038」、図1) 特開平7−121308号公報(段落「0020」〜「0029」、図1)
ところで、USBでは、SOF(Start Of Flame)と呼ばれるパケットをホストコントローラが125μ秒毎に発行し、その間にデータを転送する仕様になっている。通常のデータ転送ではSOFからSOFまでの間に8〜10個のトランザクションを排出することができるようになっているが、コマンドやステイタスは、SOFからSOFまでの間に、1個のトランザクションしが排出できない。このため、ストレージ機器の処理速度が遅く、NAK応答の回数が多い場合、USBバスを占有する期間が長い上、前記したステイタス処理はデータ転送とは無縁であることからUSBバスの転送レートを低下させることになり、かなりのオーバヘッドが発生し、パフォーマンスに悪影響を及ぼしている。
このため、前記したフィルタドライバでコマンド・ステイタス応答を纏める処理を実行することにより、少なくとも削減されたコマンド・ステイタス応答にかかる時間分はパフォーマンスが向上する。しかしながら、連続領域へのアクセス(シーケンシャルアクセス)、不連続領域へのアクセス(ランダムアクセス)の区別なく前記した処理が実行されるため、ランダムアクセス時に不要なデータ転送処理(書込み時の不要なメモリコピー処理、読出し時の先読みによる不要なデータ転送)がオーバヘッドになり、この場合、逆にパフォーマンスに悪影響を与える。
本発明は前記した課題を解決するためになされたものであり、ランダムアクセス時のバッファリングおよび先読みによるオーバヘッドを極力回避し、システム全体としてのパフォーマンスの向上をはかった、USBストレージシステムおよびプログラムを提供することを目的とする。
前記した課題を解決するために本発明のUSBストレージシステムは、上位装置と、前記上位装置とUSB接続可能なストレージ機器とがUSB転送路を介して接続され、前記上位装置と前記ストレージ機器との間でUSBデータ転送を行うUSBストレージシステムであって、前記ストレージ機器に対する転送データがバッファリングされるバッファメモリ部と、前記USBデータ転送に先立ち、前記ストレージ機器に挿入された記憶媒体の種別に基づいて、その記憶媒体がバッファリングの対象であるか否かを判定するとともに、前記記憶媒体がバッファリングの対象であると判定された場合、前記上位装置から書込み指令を受信したとき、前記書込み指令が前記ストレージ機器の前回書込み領域と連続した領域への書込みであるか否かを判定するコマンド・ステイタス処理部と、前記コマンド・ステイタス処理部で前記記憶媒体がバッファリングの対象でないと判定された場合、前記転送データを前記ストレージ機器に転送し、前記コマンド・ステイタス処理部で前記書込み指令が前回書込み領域とは連続しない領域への書込みであると判定された場合、前記バッファメモリ部にバッファリングされた転送データを前記ストレージ機器へ転送し、前回書き込み領域と連続する領域への書込みであると判定された場合、前記バッファメモリ部の空き領域を判定し、空き領域があると判定されたときに前記転送データを前記バッファメモリ部にバッファリングし、空き領域が無いと判定されたときに前記バッファメモリ部にバッファリングされた転送データを前記ストレージ機器へ転送するデータ転送制御部と、を備えたものである。
また、本発明のUSBストレージシステムにおいて、前記コマンド・ステイタス処理部は、前記上位装置から発行される構成情報取得要求に対して前記ストレージ機器から応答される応答メッセージに含まれる特定のフィールドの値を参照して、前記ストレージ機器に挿入される記憶媒体の種別を判定し、前記記憶媒体の書き込み対象領域に対するトラックの情報を取得する要求への応答に含まれるトラック情報の特定のフィールドが示す値を参照して、前記記憶媒体がバッファリングの対象であるか否かを判定してもよい。
また、本発明のUSBストレージシステムにおいて、前記コマンド・ステイタス処理部は、前記書込み指令に付属の書込み先アドレスを参照することにより、前記書込み指令が、前記ストレージ機器の前回書き込み領域に連続した領域への書き込みであるか否かを判定してもよい。
上記した課題を解決するために本発明のプログラムは、上位装置と、前記上位装置とUSB接続可能なストレージ機器とがUSB転送路を介して接続され、前記上位装置とストレージ機器との間でUSBデータ転送を行うUSBストレージシステムに用いられるデータ転送制御用のプログラムであって、前記USBデータ転送に先立ち、前記ストレージ機器に挿入された記憶媒体の種別に基づいて、その記憶媒体がバッファリングの対象であるか否かを判定するバッファリング対象判定手順と、前記バッファリング対象判定手順で前記記憶媒体がバッファリングの対象でないと判定された場合、転送データを前記ストレージ機器に転送する手順と、前記バッファリング対象判定手順で前記記憶媒体がバッファリングの対象であると判定された場合、前記上位装置から書込み指令が発行されると、前記書込み指令が前記ストレージ機器の前回書込み領域と連続した領域への書込みであるか否かを判定するアクセス領域判定手順と、前記アクセス領域判定手順で前回書込み領域とは連続しない領域への書込みであると判定された場合、バッファメモリ部にバッファリングされた転送データを前記ストレージ機器へ転送するデータ転送手順と、前記アクセス領域判定手順で前回書き込み領域と連続する領域への書込みであると判定された場合に前記記憶装置に割当てられた前記バッファメモリ部の空き領域を判定する空き領域判定手順と、前記空き領域判定手順で前記バッファメモリ部に空き領域があると判定されたときに前記転送データを前記バッファメモリ部にバッファリングし、空き領域が無いと判定されたときに前記バッファメモリ部にバッファリングされた転送データを前記ストレージ機器へ転送するテータ転送手順と、を前記上位装置のコンピュータに実行させるものである。
本発明のUSBストレージシステムおよびデータ転送制御用のプログラムによれば、ランダムアクセス時のバッファリングおよび先読みによるオーバヘッドを極力回避し、システム全体としてのパフォーマンスの向上がはかれる。
図1は、本発明の実施の形態に係るUSBストレージシステムのシステム構成の一例を示すブロック図である。
図1に示されるように、本発明の実施の形態に係るUSBストレージシステムは、PC等の上位装置1と、ストレージ機器2とがUSBケーブル3(USB転送路)を介して接続される。ストレージ機器2として、ここでは、DVDドライブ24が例示されている。
上位装置1は、CPU(Central Processing Unit)10が、主記憶装置11に格納されたプログラムに基づきシステムバス13を介して接続される不図示の周辺制御デバイスを制御する。また、CPU10は、システムバス13に更に不図示のバスブリッジを介して接続されるPCI(Peripheral Components Interconnect)バス14に接続されたUSBホストコントローラ12等の周辺制御デバイスもコントロールする。
ここで、USBホストコントローラ12は、EHCI(Enhanced Host Controller Interface)の仕様に準拠したものとし、不図示のUSBポートに接続されるストレージ機器2との間で上位装置1との通信を制御する。なお、主記憶装置11には、OS(Operating System)、アプリケーションプログラムの他に、デバイスドライバとして後記するフローチャートにその処理手順が示されるフィルタドライバがあらかじめインストールされてあるものとする。
ストレージ機器2は、USB−ATAPI変換部20を制御中枢とし、USBインタフェース21によりUSBケーブル3を経由して上位装置1に接続され、かつ、ATAPI(AT Attachment Packet Interface)バス22、ATAPIインタフェース23経由で接続されるDVDドライブ24を含む。
DVDドライブ24と上位装置1との間の通信は、USB−ATAPI変換部20を介して行われる。すなわち、USB−ATAPI変換部20は、ATAPIインタフェース23を介して取得される情報(DVD読出しデータ)をUSBプロトコルに則した情報に変換し、USBインタフェース21、USBケーブル3を介して上位装置1に転送し、USBケーブル3、USBインタフェース21経由で到来する上位装置1からの情報(書込みデータ)をATAPIプロトコルに則した情報に変換し、ATAPIインタフェース23を介してDVDドライブ24に転送する。なお、USB−ATAPI変換部20には、ストレージ機器2のパフォーマンスの悪さを吸収するためにキャッシュが内蔵されてもよい
そして、メディア25は、記憶媒体であり、例えば、DVD−Rなどである。
図2は、本発明の実施の形態に係るプログラムを上位装置1の主記憶装置11上に展開して示した機能ブロック図である(適宜図1参照)。
ここでは、ファイルシステム等の上位デバイスドライバとホストコントローラドライバとの中間に位置する中間デバイスドライバ(フィルタドライバ)のうち、本発明と関係する機能ブロックのみ抽出して示してある。
図2に示されるように、フィルタドライバは、バッファメモリ部110と、コマンド・ステイタス処理部111と、データ転送制御部112と、バッファリング非対象メディアフラグ113と、バッファリング無効フラグ114とにより構成される。
バッファメモリ部110は、主記憶装置11の所定の領域に確保されたデータ領域であり、ここに上位装置1により生成される転送データが一時保持(バッファリング)される。コマンド・ステイタス処理部111は、上位装置1により発行されるコマンドを解読し、また、ストレージ機器2から転送されるステイタス応答を受信してコマンド処理を行う機能を有する。コマンド・ステイタス処理部111はまた、
上位装置1から書込み指令を受信した場合、その書込み指令が、ストレージ機器2の前回書込み領域と連続した領域への書込みであるか否かを判定してデータ転送制御部113によるデータ転送処理を制御する機能も有する。
データ転送制御部112は、コマンド・ステイタス処理部111で書込み指令が前回書込み領域とは連続しない領域への書込みであると判定された場合、バッファメモリ部110に書込まれた転送データをストレージ機器2へ転送する機能を有する。データ転送制御部112は、コマンド・ステイタス処理部111で書込み指令が前回書き込み領域と連続する領域への書込みであると判定された場合、更に、バッファメモリ部110の空き領域を判定し、空き領域があると判定されたときに転送データをバッファメモリ部110に書込み、空き領域が無いと判定されたときにバッファメモリ部110に書込まれた転送データをストレージ機器2へ転送する機能を有する。
なお、バッファリング非対象メディアフラグ113と、バッファリング無効フラグ114は、バッファメモリ部110同様、主記憶装置11の所定の領域に割当てられ、フィルタドライバが処理の対象とするDVDドライブ24にメディア25が挿入されているか否か、そのメディア25がバッファリングの対象か否か、についてのそれぞれフラグを格納する。
これらフラグ113、114は、コマンド・ステイタス処理部111により参照され、更新される。
図3、図4は、本発明の実施の形態に係るUSBストレージシステムの動作を示すフローチャートであり、それぞれ、OS(Operating System)やアプリケーションプログラムによるメディアチェック処理手順(図3)、フィルタドライバによるライトコマンド処理手順(図4)を示す。
以下、図3、図4のフローチャートを参照しながら、図1に示す本発明の実施の形態に係るUSBストレージシステムの動作について詳細に説明する(適宜図2参照)。
まず、図3のフローチャートから説明する。OS、あるいはメディア25に対してリードライトを行いたいアプリケーションプログラムは、最初にそのための準備処理(メディアチェック処理)を行う。すなわち、メディア25のDVDドライブ24への挿入を監視し、挿入が検知されたらメディア25の種類やトラックの状態等を判定するのがメディアチェック処理である。
具体的に、コマンド・ステイタス処理部111は、まず、主記憶装置11の所定の領域に割当てられ記憶されるバッファリング非対象メディアフラグ113、およびバッファリング無効フラグ114をリセットする(ステップS301)。
また、コマンド・ステイタス処理部111は、常にコマンド監視を行っており(ステップS302)、メディア挿入確認コマンドの到来を待って(ステップS303“Yes”)、DVDドライブ24にメディア25(DVD−R)が挿入されたか否かを判定する(ステップS304)。ここで、メディア25が挿入されたことを検知すると、次のコマンド監視(ステップS305)のタイミングにおいて、更に、メディアタイプ識別コマンドの到来を待つ(ステップS306)。
なお、メディア挿入確認コマンドが到来していない場合(ステップS303“No”)およびメディア25が挿入されていない場合(ステップS304“No”)には、ステップS302の処理に戻って、コマンド監視を続ける。
コマンド・ステイタス処理部111は、メディアタイプ識別コマンドを受信すると(ステップS306“Yes”)、次に、DVDドライブ24に挿入されたメディア25がバッファリング対象メディアか否かを判定する(ステップS307)。一方、メディアタイプ識別コマンドを受信していない場合(ステップS306“No”)には、ステップS305の処理に戻って、コマンド監視を続ける。
ステップS306からステップS307の流れにおいて、具体的には、DVDドライブ24は、フィルタドライバから発行される「GET CONFIGURATION」コマンドに対する応答として、「FEATURE HEADER」と、「FEATURE DISCRIPTER」を返送する。コマンド・スタイテス処理部111は、この「FEATURE HEADER」の「Current Profile」フィールドの値をチェックすることにより、DVDドライブ24に現在挿入されているメディア25の種類を判別することができる。
ここで、フィルタドライバが処理の対象とするDVDドライブ24にメディア25が挿入されていなかった場合(ステップS307“No”)、コマンド・スタイテス処理部111は、バッファリング非対象フラグ113をセットし(ステップS309)、一方、フィルタドライバが処理の対象とするDVDドライブ24にメディア25が挿入されていた場合(ステップS307“Yes”)、コマンド・スタイテス処理部111は、次のコマンド監視(ステップS308)のタイミングにおいて、トラック情報取得コマンドの到来を待つ(ステップS310)。
コマンド・スタイテス処理部111は、トラック情報取得コマンドを受信した場合(ステップS310“Yes”)には、メディア25の書き込み対象領域のトラックの情報を参照することにより、前回書き込み領域に連続したアクセスであるか否か、所謂、シーケンシャルアクセストラックか否かを判定する(ステップS311)。一方、トラック情報取得コマンドを受信していない場合(ステップS310“No”)には、ステップS308の処理に戻って、コマンド監視を続ける。
ステップS310からステップS311への流れにおいて、具体的には、書込み対象トラックの情報を取得するために発行されるトラック情報取得コマンド「READ TRACK INFORMATION」に対し、DVDドライブ24は、「Track Information」を返送する。
コマンド・ステイタス処理部111は、この「Track Information」内の「Blank」フィールドと、「Packet/Inc」フィールドの値をチェックすることによりランダムアクセスが発生するメディアか否かを判定することができる。具体例で示すと、「Blank」が“1”の場合にはシーケンシャルアクセス、「Blank」が“0”で「Packet/Inc」が“0”の場合にはシーケンシャルアクセス、「Blank」が“0”で「Packet/Inc」が“1”の場合にはランダムアクセス、と判定することができる。
コマンド・ステイタス処理部111が、不連続なランダム領域に対するアクセスであると判定した場合(ステップS311“No”)には、バッファリング無効フラグ114をセットして(ステップS312)、本メディアチェック処理を終了する。また、ステップS311の処理においてシーケンシャルアクセストラックである場合(ステップS311“Yes”)には、本メディアチェック処理を終了する。
前記した一連の処理によれば、上位装置1から発行される構成情報取得要求(「GET CONFIGURATION」)に対して、ストレージ機器から応答される応答メッセージ(「FEATURE HEADER」)に含まれる特定のフィールド(「Current Profile」)の値を参照して、ストレージ機器2(DVDドライブ24)に挿入される記憶媒体(メディア25)の種別を判定する。そして、記憶媒体の書き込み対象領域のトラックの情報を取得する要求(「READ TRACK INFORMATION」)に対する応答に含まれるトラック情報(「Track Information」)の特定のフィールド(「Blank」および「Packet/Inc」)が示す値を参照して、バッファリングの対象であるか否かを事前に判定する。このことにより、以降発生するアクセスがシーケンシャルアクセスかランダムアクセスかを事前に知り、ランダムアクセスが発生すると考えられるメディア25に対しては、オーバヘッドの要因である無駄なバッファリング、あるいは先読みを行なわないように制御することが可能になる。
なお、前記したコマンド仕様は、ANSI(American National Standards Institute)の業界団体であるINCITS/T10(International Committee for Information Technology Standard)のワーキングドラフト「Multi Media Command Set 5(MMC-5)」(http://www.t10.org/ftp/t10/drafts/mmc5/mmc5r04.pdf)により公開されている。
次に、前記したメディアチェック処理を経て上位装置1(アプリケーションプログラム)からWRITEコマンドを受信した場合の動作について図4のフローチャートを参照しながら説明する。
なお、
動作説明に先立ち、図4に示すフローチャートには図示していないが、フィルタドライバは、OSの管理下で主記憶装置11の所定の領域に、所定の転送単位分のデータが蓄積される、例えば、1Mバイト容量のバッファメモリ部110のデータ領域を事前に確保してあるものとする。
まず、コマンド・ステイタス処理部111は、アプリケーションプログラムからWRITEコマンド受信時に、その転送データをバッファメモリ部110に書き込む前に、ストレージ機器2(DVDドライブ24)に装填されたメディア25(DVD−R)がバッファリング対象メディア(記憶媒体)であるか否かを、前記したバッファリング非対象メディアフラグ113およびバッファリング無効フラグ114を参照することにより判定する(ステップS401)。
ここで、バッファリング非対象メディアフラグ113とバッファリング無効フラグ114とのいずれかがONとなっておりバッファリング対象メディアでないと判定された場合(ステップS401“No”)には、その転送データを下位のホストコントローラドライバにそのまま転送して処理を委ねる(ステップS402)。そして、本WRITEコマンド処理を終了する。
一方、バッファリング非対象メディアフラグ113およびバッファリング無効フラグ114がともにOFFになっており、バッファリング対象メディアであると判定された場合(ステップS401“Yes”)、コマンド・ステイタス処理部111は、受信したWRITEコマンドに添付されたパラメータの書込み先アドレスを参照し、そのアドレスが、現在バッファメモリ部110にバッファリングされているデータの書込み先アドレス領域の直後のアドレスであるか否か(すなわち、メディア25の前回書き込み領域に連続した領域への書き込みであるか)、もしくは初回の書込みであるか否か(すなわち、バッファメモリ部110が空か)を判定する(ステップS403)。
ここで、コマンド・ステイタス処理部111が、書込み先アドレスが連続した領域への書き込みでない、もしくは初回書込みでないと判定した場合(ステップS403“No”)には、データ転送制御部112に制御が移り、このときデータ転送制御部112は、バッファメモリ部110に書込まれた転送データをストレージ機器2(DVDドライブ24)に転送するバッファフラッシュ処理を行う(ステップS405)。そして、ステップS401の処理へ戻る。一方、コマンド・ステイタス処理部111で連続した領域への書き込みである、もしくは初回書込みであると判定された場合(ステップS403“Yes”)、データ転送制御部112は、バッファメモリ部110にその転送データを書込むべき十分な空き領域があるか否かを判定する(ステップS404)。
ここで、バッファメモリ部110に十分な空き領域ありと判定されたとき(ステップS404“Yes”)、データ転送制御部112は、その転送データをバッファメモリ部110に書き込むべくコピーする。また、バッファメモリ部110に空き領域がない状態と判定された場合(ステップS404“No”)、データ転送制御部112は、バッファメモリ部110に書込まれた転送データをストレージ機器2(DVDドライブ24)に転送するバッファフラッシュ処理を行う(ステップS405)。そして、ステップS401の処理へ戻る。
以上説明したように本発明の実施の形態に係るUSBストレージシステムによれば、ランダムアクセスが発生すると考えられるメディア25に対し、バッファリング、あるいは先読みを行なわないように制御することで、不要なメモリコピーやデータ転送が回避され、したがってシステム全体としてのパフォーマンスが向上する。このとき、上位装置1やストレージ機器2のハードウェアに手を加えることは特に必要がない。
なお、シーケンシャルアクセス時には、書込み時、連続した領域への転送データをバッファリングし、纏めてストレージ機器2へ転送することによりパフォーマンスが向上し、また、読込みについては先読みによりパフォーマンスが向上することはいうまでもない。
なお、本発明の実施の形態に係るプログラム(上位装置1の主記憶装置11にインストールされCPU10により実行されるフィルタドライバ)は、例えば、図1に示す、上位装置1とストレージ機器2とがUSB転送路(USBケーブル3)を介して接続され、前記上位装置1とストレージ機器2との間でデータ転送を行うUSBストレージシステムにおける、上位装置1のコンピュータ(CPU10)において実行されるものである。そして、そのプログラムは、図3のフローチャートにおいて、前記データ転送に先立ち、前記ストレージ機器2に挿入される記憶媒体(メディア25)がバッファリングの対象であるか否かを判定するバッファリング対象判定処理を行う(ステップS301〜S312)。続いて、前記バッファリング判定処理で記憶媒体がバッファリングの対象であると判定された場合、上位装置1から書込み指令が発行されると、図4のフローチャートに示されるように、前記書込み指令がストレージ機器2の前回書込み領域と連続した領域への書込みであるか否かを判定するアクセス領域判定処理(ステップS403)を実行する。また、前記アクセス領域判定処理(ステップS403)において、前回書込み領域とは連続しない領域への書込みであると判定された場合(ステップS403“No”)には、前記バッファに書込まれた転送データを前記ストレージ機器2へ転送するバッファフラッシュ処理(ステップS405)を実行する。一方、アクセス領域判定処理(ステップS403)において、前回書き込み領域と連続する領域への書込みであると判定された場合には、バッファメモリ部110に割当てられたバッファの空き領域を判定する空き領域判定処理(ステップS404)を実行する。そして、空き領域判定処理(ステップS404)において、前記バッファに空き領域があると判定されたとき(ステップS404“Yes”)には、前記転送データを前記バッファに書込み(ステップS406)、空き領域が無いと判定されたとき(ステップS404“No”)には、前記バッファに書込まれた転送データをストレージ機器2へ転送するバッファフラッシュ処理(ステップS405)を実行する。
また、前記した本発明の実施の形態に係るプログラム(上位装置1の主記憶装置11にインストールされCPU10により実行されるフィルタドライバ)は、上位装置1において実行されるアプリケーションプログラムによって発行される書き込み指令が、連続した領域への書き込みであると判定された場合に、バッファメモリ部110にその転送データを書込むべき空き領域があるか否かを判定する(ステップS404)。そして、空き領域が無いと判定されたとき(ステップS404“No”)にバッファフラッシュ制御を行う(ステップS405)。
また、前記した本発明の実施の形態に係るプログラム(上位装置1の主記憶装置11にインストールされCPU10により実行されるフィルタドライバ)は、フィルタドライブにおいて、上位装置1において実行されるアプリケーションプログラムによって発行される書き込み指令が、連続した領域への書き込みでないと判定された場合(ステップS403“No”)には、即座にバッファフラッシュ制御を行う(ステップS405)。
以上説明したように本発明の実施の形態に係るプログラムによれば、ランダムアクセスが発生すると考えられるメディア25に対し、バッファリング、あるいは先読みを行なわないように制御することで、不要なメモリコピーやデータ転送が回避され、したがってシステム全体としてのパフォーマンスが向上する。このとき、上位装置1やストレージ機器2のハードウェアに手を加えることは特に必要がない。
なお、シーケンシャルアクセス時には、書込み時、連続した領域への書込みをバッファリングし、纏めてストレージ機器2へ転送することによりパフォーマンスが向上し、読込みについては先読みによりパフォーマンスが向上することはいうまでもない。
なお、前記した本発明の実施の形態に係るUSBストレージシステムにおいて、ストレージ機器2としてDVDドライブ24のみ例示したが、他に、HDD(Hard Disk Drive)、FD(Flexible Disc Drive)、フラッシュメモリ等のUSBストレージ機器であれば代替が可能である。
また、図2に示すフィルタドライバが有する各構成ブロックの機能は、全てをソフトウェアによって実現しても、あるいはその少なくとも一部をハードウェアで実現してもよい。例えば、コマンド・ステイタス処理部111、連続領域アクセス判定部112、データ転送制御部113におけるデータ処理は、1または複数のプログラムによりコンピュータ上で実現してもよく、また、その少なくとも一部をハードウェアで実現してもよい。
本発明の実施の形態に係るUSBストレージシステムのシステム構成の一例を示すブロック図である。 本発明の実施の形態に係るプログラムを上位装置の主記憶装置上に展開して示した機能ブロック図である。 本発明の実施の形態に係るUSBストレージシステムの動作(メディアチェック処理)を示すフローチャートである。 本発明の実施の形態に係るUSBストレージシステムの動作(WRIREコマンド処理)を示すフローチャートである。
符号の説明
1 上位装置
2 ストレージ機器
3 USBケーブル(USB転送路)
10 CPU
11 主記憶装置
12 USBホストコントローラ
13 システムバス
14 PCIバス
20 USB−ATAPI変換部
21 USBインタフェース
22 ATAPIバス
23 ATAPIインタフェース
24 DVDドライブ
25 メディア(DVD−R)
110 バッファメモリ部
111 コマンド・ステイタス処理部
112 データ転送制御部
113 バッファリング非対象メディアフラグ
114 バッファリング無効フラグ

Claims (4)

  1. 上位装置と、前記上位装置とUSB接続可能なストレージ機器とがUSB転送路を介して接続され、前記上位装置と前記ストレージ機器との間でUSBデータ転送を行うUSBストレージシステムであって、
    前記ストレージ機器に対する転送データがバッファリングされるバッファメモリ部と、
    前記USBデータ転送に先立ち、前記ストレージ機器に挿入された記憶媒体の種別に基づいて、その記憶媒体がバッファリングの対象であるか否かを判定するとともに、前記記憶媒体がバッファリングの対象であると判定された場合、前記上位装置から書込み指令を受信したとき、前記書込み指令が前記ストレージ機器の前回書込み領域と連続した領域への書込みであるか否かを判定するコマンド・ステイタス処理部と、
    前記コマンド・ステイタス処理部で前記記憶媒体がバッファリングの対象でないと判定された場合、前記転送データを前記ストレージ機器に転送し、
    前記コマンド・ステイタス処理部で前記書込み指令が前回書込み領域とは連続しない領域への書込みであると判定された場合、前記バッファメモリ部にバッファリングされた転送データを前記ストレージ機器へ転送し、前回書き込み領域と連続する領域への書込みであると判定された場合、前記バッファメモリ部の空き領域を判定し、空き領域があると判定されたときに前記転送データを前記バッファメモリ部にバッファリングし、空き領域が無いと判定されたときに前記バッファメモリ部にバッファリングされた転送データを前記ストレージ機器へ転送するデータ転送制御部と、
    を備えたことを特徴とするUSBストレージシステム。
  2. 前記コマンド・ステイタス処理部は、
    前記上位装置から発行される構成情報取得要求に対して前記ストレージ機器から応答される応答メッセージに含まれる特定のフィールドの値を参照して、前記ストレージ機器に挿入される記憶媒体の種別を判定し、前記記憶媒体の書き込み対象領域に対するトラックの情報を取得する要求への応答に含まれるトラック情報の特定のフィールドが示す値を参照して、前記記憶媒体がバッファリングの対象であるか否かを判定することを特徴とする請求項1に記載のUSBストレージシステム。
  3. 前記コマンド・ステイタス処理部は、
    前記書込み指令に付属の書込み先アドレスを参照することにより、前記書込み指令が、前記ストレージ機器の前回書き込み領域に連続した領域への書き込みであるか否かを判定することを特徴とする請求項1または2に記載のUSBストレージシステム。
  4. 上位装置と、前記上位装置とUSB接続可能なストレージ機器とがUSB転送路を介して接続され、前記上位装置とストレージ機器との間でUSBデータ転送を行うUSBストレージシステムに用いられるデータ転送制御用のプログラムであって、
    前記USBデータ転送に先立ち、前記ストレージ機器に挿入された記憶媒体の種別に基づいて、その記憶媒体がバッファリングの対象であるか否かを判定するバッファリング対象判定手順と、
    前記バッファリング対象判定手順で前記記憶媒体がバッファリングの対象でないと判定された場合、転送データを前記ストレージ機器に転送する手順と、
    前記バッファリング対象判定手順で前記記憶媒体がバッファリングの対象であると判定された場合、
    前記上位装置から書込み指令が発行されると、前記書込み指令が前記ストレージ機器の前回書込み領域と連続した領域への書込みであるか否かを判定するアクセス領域判定手順と、
    前記アクセス領域判定手順で前回書込み領域とは連続しない領域への書込みであると判定された場合、バッファメモリ部にバッファリングされた転送データを前記ストレージ機器へ転送するデータ転送手順と、
    前記アクセス領域判定手順で前回書き込み領域と連続する領域への書込みであると判定された場合に前記記憶装置に割当てられた前記バッファメモリ部の空き領域を判定する空き領域判定手順と、
    前記空き領域判定手順で前記バッファメモリ部に空き領域があると判定されたときに前記転送データを前記バッファメモリ部にバッファリングし、空き領域が無いと判定されたときに前記バッファメモリ部にバッファリングされた転送データを前記ストレージ機器へ転送するテータ転送手順と、
    を前記上位装置のコンピュータに実行させるためのデータ転送制御用のプログラム。
JP2007226722A 2007-08-31 2007-08-31 Usbストレージシステムおよびデータ転送制御用のプログラム Active JP5291311B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007226722A JP5291311B2 (ja) 2007-08-31 2007-08-31 Usbストレージシステムおよびデータ転送制御用のプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007226722A JP5291311B2 (ja) 2007-08-31 2007-08-31 Usbストレージシステムおよびデータ転送制御用のプログラム

Publications (2)

Publication Number Publication Date
JP2009059219A JP2009059219A (ja) 2009-03-19
JP5291311B2 true JP5291311B2 (ja) 2013-09-18

Family

ID=40554885

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007226722A Active JP5291311B2 (ja) 2007-08-31 2007-08-31 Usbストレージシステムおよびデータ転送制御用のプログラム

Country Status (1)

Country Link
JP (1) JP5291311B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021522579A (ja) * 2018-04-23 2021-08-30 マイクロン テクノロジー,インク. ホストの論理対物理情報の更新

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH022782A (ja) * 1988-06-17 1990-01-08 Canon Inc 端末エミユレータ
JPH0354941A (ja) * 1989-07-24 1991-03-08 Canon Inc 通信データ管理方式
JPH10161813A (ja) * 1996-11-29 1998-06-19 Ricoh Co Ltd 電子情報保管装置および電子情報管理装置
JP2000181798A (ja) * 1998-12-18 2000-06-30 Sanyo Electric Co Ltd ディスク装置のキャッシュ制御方式
JP4646636B2 (ja) * 2004-02-20 2011-03-09 ルネサスエレクトロニクス株式会社 半導体装置
JPWO2006022155A1 (ja) * 2004-08-24 2008-07-31 パイオニア株式会社 エラー訂正装置
JP4281680B2 (ja) * 2004-11-10 2009-06-17 ティアック株式会社 光ディスク装置
JP2006269073A (ja) * 2006-05-31 2006-10-05 Toshiba Corp 多目的情報記憶媒体及び記憶方法及び再生方法及び再生装置

Also Published As

Publication number Publication date
JP2009059219A (ja) 2009-03-19

Similar Documents

Publication Publication Date Title
US7555599B2 (en) System and method of mirrored RAID array write management
US7069350B2 (en) Data transfer control system, electronic instrument, and data transfer control method
US6647438B1 (en) Direct memory access transfer reduction method and apparatus to overlay data on to scatter gather descriptors for bus-mastering I/O controllers
US8099529B1 (en) Software based native command queuing utilizing direct memory access transfer context information
KR101035225B1 (ko) 개량 데이터 전송을 위한 제어기 장치 및 방법
JP2007233800A (ja) インタフェース回路における転送方式切換回路
JP2006113689A (ja) バスブリッジ装置およびデータ転送方法
US8527667B2 (en) Apparatuses and methods for transferring data
JP2007501473A (ja) メインメモリとストレージ装置との間のデータ転送を行うための方法及び装置
JP5291311B2 (ja) Usbストレージシステムおよびデータ転送制御用のプログラム
JP2008210226A (ja) ホストとusbストレージデバイス間のデータ転送方法
JP4391200B2 (ja) ディスクアレイ装置及びディスクアレイ装置の制御方法
US20060277326A1 (en) Data transfer system and method
JP4576082B2 (ja) メモリカードコントローラ及びメモリカードコントロール方法
US20040230734A1 (en) Data transfer control system, electronic instrument, and data transfer control method
CN113253911B (zh) 存储系统和输入输出控制方法
CN112732166B (zh) 访问固态硬盘的方法及装置
JP4408840B2 (ja) Hddコントローラ及びそれを搭載したシステム
US20070168839A1 (en) Interface apparatus for connecting a device and a host system, and method of controlling the interface apparatus
KR100950356B1 (ko) 다중 코히런시 단위들을 지원하는 데이터 전송 유닛
CN101241478A (zh) 数据传送方法
TWI736092B (zh) 通用串列匯流排裝置以及存取方法
JP2008299747A (ja) Usbホストシステム及び転送データの転送方法
CN110489359B (zh) 一种数据传输控制方法及系统
KR100633120B1 (ko) 저장 매체의 데이터 대역폭 향상 방법 및 이를 위한 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120824

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130415

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130418

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130607

R150 Certificate of patent or registration of utility model

Ref document number: 5291311

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250