JP2003288317A - 端数ブロックデータ転送を検出し補償するシステムおよび方法 - Google Patents
端数ブロックデータ転送を検出し補償するシステムおよび方法Info
- Publication number
- JP2003288317A JP2003288317A JP2003064108A JP2003064108A JP2003288317A JP 2003288317 A JP2003288317 A JP 2003288317A JP 2003064108 A JP2003064108 A JP 2003064108A JP 2003064108 A JP2003064108 A JP 2003064108A JP 2003288317 A JP2003288317 A JP 2003288317A
- Authority
- JP
- Japan
- Prior art keywords
- data
- transfer
- block
- sectors
- sector
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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)
- Information Transfer Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【課題】 データ転送システムが要求されたデータ単位
の倍数のみを処理するように構成されている場合などに
おいて、データ転送が失敗する可能性がある。 【解決手段】 ソースからホストにデータ転送を要求す
るステップ112と、ソースからホストにデータを転送
するステップ114、データ転送毎にコントローラのカ
ウンタをデクリメントするステップと、カウンタの値
が、非ゼロであるが、1つのデータフェーズで転送され
るデータの量を追跡するレジスタの値より小さくなるま
で、データを転送し続けるステップと、カウンタの値が
非ゼロでありレジスタの値より小さい場合にコントロー
ラに割込みを行い、カウンタの値をレジスタの値に等し
くなるようにリセットするステップとを含むデータ転送
方法。
の倍数のみを処理するように構成されている場合などに
おいて、データ転送が失敗する可能性がある。 【解決手段】 ソースからホストにデータ転送を要求す
るステップ112と、ソースからホストにデータを転送
するステップ114、データ転送毎にコントローラのカ
ウンタをデクリメントするステップと、カウンタの値
が、非ゼロであるが、1つのデータフェーズで転送され
るデータの量を追跡するレジスタの値より小さくなるま
で、データを転送し続けるステップと、カウンタの値が
非ゼロでありレジスタの値より小さい場合にコントロー
ラに割込みを行い、カウンタの値をレジスタの値に等し
くなるようにリセットするステップとを含むデータ転送
方法。
Description
【0001】
【発明の属する技術分野】本発明は、広くはコンピュー
タネットワークにおけるデータ転送に関する。より詳細
には、本発明は、不揮発性半導体メモリコントローラに
おいて端数(runt)ブロック転送を検出することに関す
る。
タネットワークにおけるデータ転送に関する。より詳細
には、本発明は、不揮発性半導体メモリコントローラに
おいて端数(runt)ブロック転送を検出することに関す
る。
【0002】
【従来の技術】一般に、不揮発性半導体メモリ装置は、
一定サイズ、たとえば512バイトセクタの基本単位で
データを格納する。メモリ装置は、データを同じ基本単
位に編成するホストインタフェースプロトコルにしたが
って、メモリ装置のコントローラによりそれらセクタを
ホスト装置との間で転送する。データ単位の1つの交換
は、1つのデータフェーズにおいて発生することができ
る。ホスト装置のデータを転送する要求を完了するため
には、複数のデータフェーズが必要である可能性があ
り、コントローラの論理回路またはマイクロプロセッサ
の介入によって動作が実行される必要がある。
一定サイズ、たとえば512バイトセクタの基本単位で
データを格納する。メモリ装置は、データを同じ基本単
位に編成するホストインタフェースプロトコルにしたが
って、メモリ装置のコントローラによりそれらセクタを
ホスト装置との間で転送する。データ単位の1つの交換
は、1つのデータフェーズにおいて発生することができ
る。ホスト装置のデータを転送する要求を完了するため
には、複数のデータフェーズが必要である可能性があ
り、コントローラの論理回路またはマイクロプロセッサ
の介入によって動作が実行される必要がある。
【0003】
【発明が解決しようとする課題】ホストインタフェース
プロトコルは、コントローラの論理回路またはマイクロ
プロセッサの介入によって実行される動作を定義する。
ホストインタフェースプロトコルによっては、データフ
ェーズのデータを、データセクタの倍数であるブロック
で交換することが可能な場合がある。ホストはブロック
でデータを送信することにより、各セクタと個別にハン
ドシェイクすることに関連するセクタ間オーバヘッドを
低減する。データがマルチセクタブロックで送信される
場合、ハンドシェイクは、ブロックの最後においてのみ
発生する。しかしながら、記憶装置に要求される実際の
転送長は、一般に、ホストインタフェースプロトコルに
よっては、基本データ単位、たとえば512バイトセク
タで表現される。ホスト装置は、記憶装置に対して複数
セクタのデータフェーズでデータを返すように要求す
る。データ転送を完了するために、ある時点で、要求さ
れた転送は、要求されたデータフェーズサイズの倍数で
ない数のデータ単位を含む場合がある。データ転送シス
テムが要求されたデータ単位の倍数のみを処理するよう
に構成されている場合、システムに、要求されたデータ
単位の倍数でないフェーズサイズがもたらされた場合、
データ転送が失敗する可能性がある。
プロトコルは、コントローラの論理回路またはマイクロ
プロセッサの介入によって実行される動作を定義する。
ホストインタフェースプロトコルによっては、データフ
ェーズのデータを、データセクタの倍数であるブロック
で交換することが可能な場合がある。ホストはブロック
でデータを送信することにより、各セクタと個別にハン
ドシェイクすることに関連するセクタ間オーバヘッドを
低減する。データがマルチセクタブロックで送信される
場合、ハンドシェイクは、ブロックの最後においてのみ
発生する。しかしながら、記憶装置に要求される実際の
転送長は、一般に、ホストインタフェースプロトコルに
よっては、基本データ単位、たとえば512バイトセク
タで表現される。ホスト装置は、記憶装置に対して複数
セクタのデータフェーズでデータを返すように要求す
る。データ転送を完了するために、ある時点で、要求さ
れた転送は、要求されたデータフェーズサイズの倍数で
ない数のデータ単位を含む場合がある。データ転送シス
テムが要求されたデータ単位の倍数のみを処理するよう
に構成されている場合、システムに、要求されたデータ
単位の倍数でないフェーズサイズがもたらされた場合、
データ転送が失敗する可能性がある。
【0004】上述したことに基づいて、従来技術のこれ
らおよび/または他の欠点に対処する改良されたシステ
ムおよび方法が必要である、ということは認められるは
ずである。
らおよび/または他の欠点に対処する改良されたシステ
ムおよび方法が必要である、ということは認められるは
ずである。
【0005】
【課題を解決するための手段】本発明は、不揮発性半導
体メモリコントローラにおいて端数(runt)ブロック転
送を検出するシステムおよび方法に関する。これに関
し、1つのかかる方法の代表的な実施形態は、ソースか
らホストにデータ転送を要求することと、ソースからホ
ストにデータを転送することと、データ転送毎にコント
ローラのカウンタをデクリメントすることと、カウンタ
の値が、非ゼロであるが、1つのデータフェーズで転送
されるデータの量を追跡するレジスタの値より小さくな
るまで、データを転送し続けることと、カウンタの値が
非ゼロでありレジスタの値より小さい場合にコントロー
ラに割込みを行い、カウンタの値をレジスタの値に等し
くなるようにリセットすることとを含む。
体メモリコントローラにおいて端数(runt)ブロック転
送を検出するシステムおよび方法に関する。これに関
し、1つのかかる方法の代表的な実施形態は、ソースか
らホストにデータ転送を要求することと、ソースからホ
ストにデータを転送することと、データ転送毎にコント
ローラのカウンタをデクリメントすることと、カウンタ
の値が、非ゼロであるが、1つのデータフェーズで転送
されるデータの量を追跡するレジスタの値より小さくな
るまで、データを転送し続けることと、カウンタの値が
非ゼロでありレジスタの値より小さい場合にコントロー
ラに割込みを行い、カウンタの値をレジスタの値に等し
くなるようにリセットすることとを含む。
【0006】端数ブロックデータ転送システムの代表的
なシステムは、記憶媒体とホストシステムとの間でデー
タを転送するように構成され、データを、データセクタ
の倍数でありうる複数のブロックサイズに編成されるよ
うにし、ホストシステムとデータセクタに編成された複
数のデータが格納された記憶媒体との間を連結するよう
に動作可能に構成されたデータ転送コントローラを有す
る、システムを含む。データ転送コントローラは、記憶
媒体に対し、少なくとも1つのデータセクタを転送する
ように要求し、要求されたデータセクタの数がブロック
サイズにより余り無く割切れる(evenly divisible)か
否かを判断し、要求されたデータセクタの数がブロック
サイズにより余り無く割切れない場合に、データセクタ
転送要求に割込みを行うことにより、端数データ転送を
発生させるように構成される。割込み時、データ転送コ
ントローラは、送信されるべきデータセクタの数を、転
送されずに残っているデータセクタの数に等しくなるよ
うにリセットする。そして、データ転送が起き、データ
転送プロセスが完了する。
なシステムは、記憶媒体とホストシステムとの間でデー
タを転送するように構成され、データを、データセクタ
の倍数でありうる複数のブロックサイズに編成されるよ
うにし、ホストシステムとデータセクタに編成された複
数のデータが格納された記憶媒体との間を連結するよう
に動作可能に構成されたデータ転送コントローラを有す
る、システムを含む。データ転送コントローラは、記憶
媒体に対し、少なくとも1つのデータセクタを転送する
ように要求し、要求されたデータセクタの数がブロック
サイズにより余り無く割切れる(evenly divisible)か
否かを判断し、要求されたデータセクタの数がブロック
サイズにより余り無く割切れない場合に、データセクタ
転送要求に割込みを行うことにより、端数データ転送を
発生させるように構成される。割込み時、データ転送コ
ントローラは、送信されるべきデータセクタの数を、転
送されずに残っているデータセクタの数に等しくなるよ
うにリセットする。そして、データ転送が起き、データ
転送プロセスが完了する。
【0007】本発明においては、データブロックのサイ
ズを設定するホスト装置と、データセクタにデータを格
納する記憶媒体と、前記ホスト装置と前記記憶媒体とを
動作可能に連結し、前記データセクタがブロックサイズ
によって余り無く割切れる場合に、該ホスト装置と該記
憶媒体との間でデータセクタを転送するように適合され
た、端数ブロック転送システムとを具備してなる端数ブ
ロック転送を検出するシステムが提供される。
ズを設定するホスト装置と、データセクタにデータを格
納する記憶媒体と、前記ホスト装置と前記記憶媒体とを
動作可能に連結し、前記データセクタがブロックサイズ
によって余り無く割切れる場合に、該ホスト装置と該記
憶媒体との間でデータセクタを転送するように適合され
た、端数ブロック転送システムとを具備してなる端数ブ
ロック転送を検出するシステムが提供される。
【0008】また、本発明においては、データブロック
のサイズを設定する手段と、データセクタにデータを格
納する手段と、データブロックのサイズを設定する前記
手段をデータセクタにデータを格納する前記手段に連結
し、該データセクタが該ブロックサイズによって余り無
く割切れる場合に、データブロックのサイズを設定する
該手段とデータセクタにデータを格納する該手段との間
でデータセクタを転送するように適合された手段とを具
備してなる端数ブロック転送を検出するシステムが提供
される。
のサイズを設定する手段と、データセクタにデータを格
納する手段と、データブロックのサイズを設定する前記
手段をデータセクタにデータを格納する前記手段に連結
し、該データセクタが該ブロックサイズによって余り無
く割切れる場合に、データブロックのサイズを設定する
該手段とデータセクタにデータを格納する該手段との間
でデータセクタを転送するように適合された手段とを具
備してなる端数ブロック転送を検出するシステムが提供
される。
【0009】以下の図面を参照して、特許請求の範囲で
定義される本発明をより理解することができる。図面
は、必ずしも一定の比率で縮小されていず、本発明の原
理を明確に例証することに重きがおかれている。
定義される本発明をより理解することができる。図面
は、必ずしも一定の比率で縮小されていず、本発明の原
理を明確に例証することに重きがおかれている。
【0010】
【発明の実施の形態】本明細書では、端数ブロック転送
システムを提供するメモリ装置を開示する。発明のシス
テムの説明を容易にするために、図面を参照して端数ブ
ロック転送システムを実現するために使用することがで
きる装置例を説明する。この装置を詳細に説明するが、
この装置は例示の目的のみのために提供するものであ
り、発明の概念から逸脱することなくあらゆる変更が可
能である、ということが認められよう。装置例を説明し
た後に、装置の動作の実施例を提供することにより、端
数ブロック転送を提供するために装置を使用することが
できる方法を説明する。
システムを提供するメモリ装置を開示する。発明のシス
テムの説明を容易にするために、図面を参照して端数ブ
ロック転送システムを実現するために使用することがで
きる装置例を説明する。この装置を詳細に説明するが、
この装置は例示の目的のみのために提供するものであ
り、発明の概念から逸脱することなくあらゆる変更が可
能である、ということが認められよう。装置例を説明し
た後に、装置の動作の実施例を提供することにより、端
数ブロック転送を提供するために装置を使用することが
できる方法を説明する。
【0011】ここで、各図面を通して同じ番号が対応す
る部分を示す図面をより詳細に参照すると、図1は、本
発明の端数ブロック転送システムの実施形態を実現する
ために使用することができるシステム90の実施形態を
示す概略図である。システム90は、ホスト装置102
と記憶媒体104との間を動作可能に連結する端数ブロ
ック転送システム100を含む。データの転送は、ホス
ト装置102と記憶媒体104との間で発生することが
できる。
る部分を示す図面をより詳細に参照すると、図1は、本
発明の端数ブロック転送システムの実施形態を実現する
ために使用することができるシステム90の実施形態を
示す概略図である。システム90は、ホスト装置102
と記憶媒体104との間を動作可能に連結する端数ブロ
ック転送システム100を含む。データの転送は、ホス
ト装置102と記憶媒体104との間で発生することが
できる。
【0012】図2は、図1の端数ブロック転送システム
の実施形態の機能を示すフローチャート108である。
概して、110において、データブロックサイズがある
セクタの数に設定される。112において、データブロ
ックの転送が要求される。典型的には、データの交換
は、1以上のセクタからなるブロックにグループ化され
たデータセクタにより行われる。114において、転送
されるべく残っているセクタの数がステップ110で設
定されたブロックサイズによって余り無く割切れ(even
ly divisible)、「端数ブロック転送(runt block tra
nsfer)」状態が発生しない限りは、データブロックの
転送が行われる。この状態が生じると、116におい
て、データ転送に割込みがなされ、データブロックサイ
ズが、転送されるべく残っているデータセクタの数に等
しいサイズにリセットされることにより、データセクタ
を転送することができるようになる。118において、
転送を待っている残りのデータセクタが転送されてデー
タ転送が完了する。
の実施形態の機能を示すフローチャート108である。
概して、110において、データブロックサイズがある
セクタの数に設定される。112において、データブロ
ックの転送が要求される。典型的には、データの交換
は、1以上のセクタからなるブロックにグループ化され
たデータセクタにより行われる。114において、転送
されるべく残っているセクタの数がステップ110で設
定されたブロックサイズによって余り無く割切れ(even
ly divisible)、「端数ブロック転送(runt block tra
nsfer)」状態が発生しない限りは、データブロックの
転送が行われる。この状態が生じると、116におい
て、データ転送に割込みがなされ、データブロックサイ
ズが、転送されるべく残っているデータセクタの数に等
しいサイズにリセットされることにより、データセクタ
を転送することができるようになる。118において、
転送を待っている残りのデータセクタが転送されてデー
タ転送が完了する。
【0013】図3は、端数転送システムの実施形態を実
現するために使用することができるコンピュータまたは
プロセッサベースシステムを示す概略図を例示する。後
により詳細に説明するように、端数ブロック転送システ
ムを使用してデータの全ブロックを非常に多くのデータ
フェーズで転送することができ、端数ブロック転送シス
テムは、1ブロック全体より小さいいくつかのデータの
セクタを含むデータフェーズを識別し転送することがで
きる(「端数ブロック転送」と呼ぶ)。端数ブロック転
送システムは、ソフトウェア、ファームウェア、ハード
ウェアまたはそれらの組合せで実現することができる。
ソフトウェアで実現する場合、端数ブロック転送システ
ムは、コンピュータまたはプロセッサベース装置(「コ
ンピュータ」)120によって実行可能なプログラムと
することができ、その実施例を図3に概略的に示す。
現するために使用することができるコンピュータまたは
プロセッサベースシステムを示す概略図を例示する。後
により詳細に説明するように、端数ブロック転送システ
ムを使用してデータの全ブロックを非常に多くのデータ
フェーズで転送することができ、端数ブロック転送シス
テムは、1ブロック全体より小さいいくつかのデータの
セクタを含むデータフェーズを識別し転送することがで
きる(「端数ブロック転送」と呼ぶ)。端数ブロック転
送システムは、ソフトウェア、ファームウェア、ハード
ウェアまたはそれらの組合せで実現することができる。
ソフトウェアで実現する場合、端数ブロック転送システ
ムは、コンピュータまたはプロセッサベース装置(「コ
ンピュータ」)120によって実行可能なプログラムと
することができ、その実施例を図3に概略的に示す。
【0014】概して、ハードウェアアーキテクチャに関
し、図3のコンピュータ120は、ローカルインタフェ
ース128を介して通信可能に連結された、プロセッサ
122と、メモリ124と、1つまたは複数の入出力
(I/O)装置130(または周辺機器)を含む。ロー
カルインタフェース128は、たとえば、本技術分野に
おいて周知であるような1つまたは複数のバスあるいは
他の有線または無線接続とすることができる。ローカル
インタフェース128は、追加の要素を含むことができ
るが、それらは説明を容易にするために省略する。これ
らの追加の要素は、たとえば、コントローラ、バッファ
(キャッシュ)、ドライバ、リピータおよび/または受
信機であってよい。さらに、ローカルインタフェース
は、コンピュータ120のコンポーネント間の適当な通
信を可能にするために、アドレス、制御および/または
データ通信を有してもよい。
し、図3のコンピュータ120は、ローカルインタフェ
ース128を介して通信可能に連結された、プロセッサ
122と、メモリ124と、1つまたは複数の入出力
(I/O)装置130(または周辺機器)を含む。ロー
カルインタフェース128は、たとえば、本技術分野に
おいて周知であるような1つまたは複数のバスあるいは
他の有線または無線接続とすることができる。ローカル
インタフェース128は、追加の要素を含むことができ
るが、それらは説明を容易にするために省略する。これ
らの追加の要素は、たとえば、コントローラ、バッファ
(キャッシュ)、ドライバ、リピータおよび/または受
信機であってよい。さらに、ローカルインタフェース
は、コンピュータ120のコンポーネント間の適当な通
信を可能にするために、アドレス、制御および/または
データ通信を有してもよい。
【0015】プロセッサ122は、メモリ124に格納
することができるソフトウェアを実行するように構成さ
れたハードウェア装置とすることができる。プロセッサ
122は、任意のカスタムメイドかまたは市販のプロセ
ッサ、中央処理装置(CPU)またはいくつかのプロセ
ッサの中の補助プロセッサとすることができる。さら
に、プロセッサは、たとえば、半導体ベースのマイクロ
プロセッサ(マイクロチップの形態)とすることも可能
である。
することができるソフトウェアを実行するように構成さ
れたハードウェア装置とすることができる。プロセッサ
122は、任意のカスタムメイドかまたは市販のプロセ
ッサ、中央処理装置(CPU)またはいくつかのプロセ
ッサの中の補助プロセッサとすることができる。さら
に、プロセッサは、たとえば、半導体ベースのマイクロ
プロセッサ(マイクロチップの形態)とすることも可能
である。
【0016】メモリ124は、揮発性メモリ素子(例え
ば、ランダムアクセスメモリ(DRAM、SRAM等の
RAM))および/または不揮発性メモリ素子(例え
ば、ROM、ハードドライブ、テープ、CDROM等)
の任意の組合せを含むことができる。さらに、メモリ1
24は、電子、磁気、光および/または他のタイプの記
憶媒体を組込んでもよい。なお、メモリ124は、種々
のコンポーネントが互いから遠隔に配置されるがプロセ
ッサ122がそれらにアクセスすることができる、分散
メモリアーキテクチャを有することができる。
ば、ランダムアクセスメモリ(DRAM、SRAM等の
RAM))および/または不揮発性メモリ素子(例え
ば、ROM、ハードドライブ、テープ、CDROM等)
の任意の組合せを含むことができる。さらに、メモリ1
24は、電子、磁気、光および/または他のタイプの記
憶媒体を組込んでもよい。なお、メモリ124は、種々
のコンポーネントが互いから遠隔に配置されるがプロセ
ッサ122がそれらにアクセスすることができる、分散
メモリアーキテクチャを有することができる。
【0017】メモリ124内のソフトウェアは、1つま
たは複数の別個のプログラムを含むことができ、それら
の各々は、論理機能を実現するための実行可能命令の順
序付きリストを有する。メモリ124のソフトウェア
は、端数ブロック転送システムソフトウェアと適当なオ
ペレーティングシステム(O/S)126とを含む。オ
ペレーティングシステム126は、端数ブロック転送シ
ステム等の他のコンピュータプログラムの実行を制御す
る。また、オペレーティングシステム126は、スケジ
ューリングと、入出力制御と、ファイルおよびデータ管
理と、メモリ管理と、通信制御および関連サービスとを
提供することができる。
たは複数の別個のプログラムを含むことができ、それら
の各々は、論理機能を実現するための実行可能命令の順
序付きリストを有する。メモリ124のソフトウェア
は、端数ブロック転送システムソフトウェアと適当なオ
ペレーティングシステム(O/S)126とを含む。オ
ペレーティングシステム126は、端数ブロック転送シ
ステム等の他のコンピュータプログラムの実行を制御す
る。また、オペレーティングシステム126は、スケジ
ューリングと、入出力制御と、ファイルおよびデータ管
理と、メモリ管理と、通信制御および関連サービスとを
提供することができる。
【0018】I/O装置130は、たとえばキーパッド
および/または受信機等の入力装置を含むことができ
る。また、I/O装置130は、たとえばディスプレイ
装置および送信機等の出力装置を含むことも可能であ
る。さらに、I/O装置130は、たとえばネットワー
ク通信ポート等、入力と出力とを共に通信するように構
成されている装置を含んでよい。
および/または受信機等の入力装置を含むことができ
る。また、I/O装置130は、たとえばディスプレイ
装置および送信機等の出力装置を含むことも可能であ
る。さらに、I/O装置130は、たとえばネットワー
ク通信ポート等、入力と出力とを共に通信するように構
成されている装置を含んでよい。
【0019】コンピュータ120が動作している時、プ
ロセッサ122は、メモリ124内に格納されたソフト
ウェアを実行し、メモリ124との間でデータを通信
し、概してコンピュータ120の動作を制御するように
構成される。端数ブロック転送システム100とO/S
126とは、全体としてまたは部分的に、プロセッサ1
22によって読出され、おそらくはプロセッサ122内
にバッファリングされ、その後実行される。
ロセッサ122は、メモリ124内に格納されたソフト
ウェアを実行し、メモリ124との間でデータを通信
し、概してコンピュータ120の動作を制御するように
構成される。端数ブロック転送システム100とO/S
126とは、全体としてまたは部分的に、プロセッサ1
22によって読出され、おそらくはプロセッサ122内
にバッファリングされ、その後実行される。
【0020】端数ブロック転送システムは、ソフトウェ
アで実現される場合、任意のコンピュータ関連システム
または方法によるかまたはそれに関連して使用される任
意のコンピュータ読取可能媒体に格納することができ
る、ということを留意しなければならない。この文書の
コンテキストでは、コンピュータ読取可能媒体は、コン
ピュータ関連システムまたは方法によるかまたはそれに
関連して使用されるコンピュータプログラムを内蔵する
かまたは格納することができる、電子、磁気、光あるい
は他の物理的装置または手段である。端数ブロック転送
システムプログラムは、コンピュータベースシステム、
プロセッサ内蔵システム、あるいは命令実行システム、
機器または装置から命令をフェッチしそれら命令を実行
することができる他のシステム等、命令実行システム、
機器または装置によるかまたはそれに関連して使用され
る任意のコンピュータ読取可能媒体において具体化する
ことができる。
アで実現される場合、任意のコンピュータ関連システム
または方法によるかまたはそれに関連して使用される任
意のコンピュータ読取可能媒体に格納することができ
る、ということを留意しなければならない。この文書の
コンテキストでは、コンピュータ読取可能媒体は、コン
ピュータ関連システムまたは方法によるかまたはそれに
関連して使用されるコンピュータプログラムを内蔵する
かまたは格納することができる、電子、磁気、光あるい
は他の物理的装置または手段である。端数ブロック転送
システムプログラムは、コンピュータベースシステム、
プロセッサ内蔵システム、あるいは命令実行システム、
機器または装置から命令をフェッチしそれら命令を実行
することができる他のシステム等、命令実行システム、
機器または装置によるかまたはそれに関連して使用され
る任意のコンピュータ読取可能媒体において具体化する
ことができる。
【0021】本明細書で使用する「コンピュータ読取可
能媒体」は、命令実行システム、装置または機器による
かまたはそれに関連して使用されるプログラムを格納
し、通信し、伝搬し、または移送することができる任意
の手段とすることができる。したがって、コンピュータ
読取可能媒体は、例えば、限定されないが、電子、磁
気、光、電磁、赤外線または半導体のシステム、装置、
デバイスまたは伝搬媒体とすることができる。コンピュ
ータ読取可能媒体のより特定の例(非網羅的リスト)に
は、以下のものが含まれる。すなわち、1本または複数
本のワイヤを有する電気接続(電子)、ポータブルコン
ピュータディスケット(磁気)、ランダムアクセスメモ
リ(RAM)(電子)、リードオンリメモリ(ROM)
(電子)、消去可能プログラム可能リードオンリメモリ
(EPROM、EEPROMまたはフラッシュメモリ)
(電子)、光ファイバ(光)およびポータブルコンパク
トディスクリードオンリメモリ(CDROM)(光)で
ある。なお、コンピュータ読取可能媒体は、プログラム
が印刷される紙または別の適当な媒体とさえすることも
可能である。これは、プログラムを、紙または他の媒体
の例えば光学スキャニングを介して電子的に取込み、必
要な場合は、その後コンパイルし、解釈し、または他の
方法で適宜処理し、その後コンピュータメモリに格納す
ることができるためである。
能媒体」は、命令実行システム、装置または機器による
かまたはそれに関連して使用されるプログラムを格納
し、通信し、伝搬し、または移送することができる任意
の手段とすることができる。したがって、コンピュータ
読取可能媒体は、例えば、限定されないが、電子、磁
気、光、電磁、赤外線または半導体のシステム、装置、
デバイスまたは伝搬媒体とすることができる。コンピュ
ータ読取可能媒体のより特定の例(非網羅的リスト)に
は、以下のものが含まれる。すなわち、1本または複数
本のワイヤを有する電気接続(電子)、ポータブルコン
ピュータディスケット(磁気)、ランダムアクセスメモ
リ(RAM)(電子)、リードオンリメモリ(ROM)
(電子)、消去可能プログラム可能リードオンリメモリ
(EPROM、EEPROMまたはフラッシュメモリ)
(電子)、光ファイバ(光)およびポータブルコンパク
トディスクリードオンリメモリ(CDROM)(光)で
ある。なお、コンピュータ読取可能媒体は、プログラム
が印刷される紙または別の適当な媒体とさえすることも
可能である。これは、プログラムを、紙または他の媒体
の例えば光学スキャニングを介して電子的に取込み、必
要な場合は、その後コンパイルし、解釈し、または他の
方法で適宜処理し、その後コンピュータメモリに格納す
ることができるためである。
【0022】端数ブロック転送システムは、ハードウェ
アで実現される場合、あらゆるテクノロジのうちの任意
のものかまたは組合せで実現することができる。例とし
て、各々本技術分野において周知である以下のテクノロ
ジを使用することができる。すなわち、データ信号に対
して論理機能を実現する論理ゲートを有するディスクリ
ート論理回路と、適当な組合せ論理ゲートを有する特定
用途向け集積回路(ASIC)と、プログラマブルゲー
トアレイ(PGA)と、フィールドプログラマブルゲー
トアレイ(FPGA)と、である。
アで実現される場合、あらゆるテクノロジのうちの任意
のものかまたは組合せで実現することができる。例とし
て、各々本技術分野において周知である以下のテクノロ
ジを使用することができる。すなわち、データ信号に対
して論理機能を実現する論理ゲートを有するディスクリ
ート論理回路と、適当な組合せ論理ゲートを有する特定
用途向け集積回路(ASIC)と、プログラマブルゲー
トアレイ(PGA)と、フィールドプログラマブルゲー
トアレイ(FPGA)と、である。
【0023】ここで、本発明の端数ブロックシステム1
00の代表的な実施形態の機能を示す図4の概略図を参
照する。概して200で示すシステムは、本発明の一実
施形態による端数ブロック転送を含むデータの転送を行
うように構成される。ホスト装置102は、ホストイン
タフェース204に連結される。ホスト装置102は、
概して、データがデータ記憶媒体104から読出されお
よび/またはデータ記憶媒体104に書込まれるのを可
能にするアプリケーションプログラムを実行することが
できる、プロセッサおよびメモリを有するコンピュータ
としての外部装置である。
00の代表的な実施形態の機能を示す図4の概略図を参
照する。概して200で示すシステムは、本発明の一実
施形態による端数ブロック転送を含むデータの転送を行
うように構成される。ホスト装置102は、ホストイン
タフェース204に連結される。ホスト装置102は、
概して、データがデータ記憶媒体104から読出されお
よび/またはデータ記憶媒体104に書込まれるのを可
能にするアプリケーションプログラムを実行することが
できる、プロセッサおよびメモリを有するコンピュータ
としての外部装置である。
【0024】ホストインタフェース204は、データム
ーバまたはデータ転送コントローラ206とも呼ばれ
る、記憶媒体104とホスト装置102との間のデータ
転送を制御するデータ転送プロセッサに連結する。デー
タ記憶媒体104とデータムーバ206との間には、記
憶媒体インタフェース210が連結される。記憶媒体1
04は、命令実行システム、機器または装置によるかま
たは関連して使用されるプログラムを格納し、通信し、
伝播し、または移送することができる任意の手段とする
ことができる。メモリインタフェースカード等のカード
は、マルチビットステータスレジスタ(図示せず)を含
む複数のレジスタを有し、マルチビットステータスレジ
スタの2つのビットは、この検討において対象となる。
1つのビットは、カード装置ビジー状態(BUSY)を
表し、ホストアクセスをロックアウトする役割を果た
す。もう1つのビットは、データ要求(DRQ)を表
し、ホストデータ転送を要求する役割を果たす。
ーバまたはデータ転送コントローラ206とも呼ばれ
る、記憶媒体104とホスト装置102との間のデータ
転送を制御するデータ転送プロセッサに連結する。デー
タ記憶媒体104とデータムーバ206との間には、記
憶媒体インタフェース210が連結される。記憶媒体1
04は、命令実行システム、機器または装置によるかま
たは関連して使用されるプログラムを格納し、通信し、
伝播し、または移送することができる任意の手段とする
ことができる。メモリインタフェースカード等のカード
は、マルチビットステータスレジスタ(図示せず)を含
む複数のレジスタを有し、マルチビットステータスレジ
スタの2つのビットは、この検討において対象となる。
1つのビットは、カード装置ビジー状態(BUSY)を
表し、ホストアクセスをロックアウトする役割を果た
す。もう1つのビットは、データ要求(DRQ)を表
し、ホストデータ転送を要求する役割を果たす。
【0025】データムーバ206は、ホスト装置102
と記憶媒体104との間のデータの流れを組織化し制御
する。データムーバ206は、記憶媒体104から検索
されるデータが、そのデータをホスト装置102に転送
するのに適する時機まで一時的に格納されるのを可能に
するメモリを含むことができる。
と記憶媒体104との間のデータの流れを組織化し制御
する。データムーバ206は、記憶媒体104から検索
されるデータが、そのデータをホスト装置102に転送
するのに適する時機まで一時的に格納されるのを可能に
するメモリを含むことができる。
【0026】一実施形態では、ホスト装置102は、ホ
ストインタフェース204のレジスタにコマンド情報を
書込むアプリケーションプログラムを実行する。オペレ
ーティングシステム126は、I/Oコマンドの集まり
をアプリケーションプログラムに対して利用可能にする
こと、割込みの管理およびDMAシステムの管理等のあ
らゆるサービスを提供することにより、およびデータを
受取ることができるメモリを提供することにより、ホス
ト装置通信を処理する。データは、データムーバ206
の制御下で機能するホストインタフェース204を通し
てホスト装置102に入りかつホスト装置102から出
る。
ストインタフェース204のレジスタにコマンド情報を
書込むアプリケーションプログラムを実行する。オペレ
ーティングシステム126は、I/Oコマンドの集まり
をアプリケーションプログラムに対して利用可能にする
こと、割込みの管理およびDMAシステムの管理等のあ
らゆるサービスを提供することにより、およびデータを
受取ることができるメモリを提供することにより、ホス
ト装置通信を処理する。データは、データムーバ206
の制御下で機能するホストインタフェース204を通し
てホスト装置102に入りかつホスト装置102から出
る。
【0027】点線で示すように、ホストインタフェース
204と、データムーバ206と、マイクロプロセッサ
207と、記憶媒体インタフェース210と、SRAM
213およびROM219等のメモリと、は、単一の特
定用途向け集積回路(ASIC)209の一部とするこ
とができる。代替実施形態では、図4に示すブロック
は、各々別々のASICに存在してよく、あるいはそれ
らの任意の組合せが単一のASICに統合されてもよ
い。
204と、データムーバ206と、マイクロプロセッサ
207と、記憶媒体インタフェース210と、SRAM
213およびROM219等のメモリと、は、単一の特
定用途向け集積回路(ASIC)209の一部とするこ
とができる。代替実施形態では、図4に示すブロック
は、各々別々のASICに存在してよく、あるいはそれ
らの任意の組合せが単一のASICに統合されてもよ
い。
【0028】概して、一実施形態では、ホスト装置10
2は、ASIC209のハードウェアに対しその組込ま
れたマイクロプロセッサ207に対する割込みを行わせ
るコマンド情報をレジスタに書込む。マイクロプロセッ
サ207は、ホストインタフェース204、データムー
バ206および記憶媒体インタフェース210に、バス
を介して接続される。バスは、マイクロプロセッサ20
7がホストインタフェース204、データムーバ206
および記憶媒体インタフェース210のレジスタに対し
書込みおよび読出し行うことができるようにするもので
ある。マイクロプロセッサ207は、レジスタを調べ、
コマンド情報を抽出し、ASIC209内のハードウェ
ア、すなわちホストインタフェース204、データムー
バ206および記憶媒体インタフェース210をセット
アップすることにより、コマンドにおいて要求された動
作を実行し、例えばデータのセクタを読出す。コマンド
の実行後、マイクロプロセッサ207は、ステータスレ
ジスタとしての役割を果たすレジスタに動作に対するス
テータス情報を格納し、ホスト102に対しステータス
レジスタを読出すように命令してよい。ホストインタフ
ェース204、データムーバ206および記憶媒体イン
タフェース210を実行するファームウェアは、適当に
サイズが決められたSRAM213および/またはRO
M219のあらゆるアドレスに存在してよい。
2は、ASIC209のハードウェアに対しその組込ま
れたマイクロプロセッサ207に対する割込みを行わせ
るコマンド情報をレジスタに書込む。マイクロプロセッ
サ207は、ホストインタフェース204、データムー
バ206および記憶媒体インタフェース210に、バス
を介して接続される。バスは、マイクロプロセッサ20
7がホストインタフェース204、データムーバ206
および記憶媒体インタフェース210のレジスタに対し
書込みおよび読出し行うことができるようにするもので
ある。マイクロプロセッサ207は、レジスタを調べ、
コマンド情報を抽出し、ASIC209内のハードウェ
ア、すなわちホストインタフェース204、データムー
バ206および記憶媒体インタフェース210をセット
アップすることにより、コマンドにおいて要求された動
作を実行し、例えばデータのセクタを読出す。コマンド
の実行後、マイクロプロセッサ207は、ステータスレ
ジスタとしての役割を果たすレジスタに動作に対するス
テータス情報を格納し、ホスト102に対しステータス
レジスタを読出すように命令してよい。ホストインタフ
ェース204、データムーバ206および記憶媒体イン
タフェース210を実行するファームウェアは、適当に
サイズが決められたSRAM213および/またはRO
M219のあらゆるアドレスに存在してよい。
【0029】図5を参照すると、図4に示すシステム2
00のホストインタフェース204の実施形態を表す概
略図が示されている。ホストインタフェース204は、
業界において周知の業界標準プロトコルを使用してホス
ト装置102とのインタフェースを実現する。一実施形
態では、適当なホストインタフェースは、ヒューレット
・パッカード・カンパニー(Hewlett-Packard Compan
y)から入手可能なCompactFlash(商標)
型インタフェースである。しかしながら、本発明では、
ヒューレット・パッカード・カンパニーから入手可能な
メモリを含む他のメモリテクノロジを使用することがで
きる。
00のホストインタフェース204の実施形態を表す概
略図が示されている。ホストインタフェース204は、
業界において周知の業界標準プロトコルを使用してホス
ト装置102とのインタフェースを実現する。一実施形
態では、適当なホストインタフェースは、ヒューレット
・パッカード・カンパニー(Hewlett-Packard Compan
y)から入手可能なCompactFlash(商標)
型インタフェースである。しかしながら、本発明では、
ヒューレット・パッカード・カンパニーから入手可能な
メモリを含む他のメモリテクノロジを使用することがで
きる。
【0030】ホストインタフェース204は、ホスト1
02とデータムーバ206との両方に連結され、データ
ムーバ206から受取ったデータのブロックを転送す
る。一実施形態では、ファームウェアは、ホストインタ
フェース204のロジックモジュール215によって制
御される。ホストインタフェース204のロジックモジ
ュール215は、ホストインタフェースと、たとえばプ
ロセッサおよびタイマのようなその周辺機器等のシステ
ムインフラストラクチャと、診断ポートとに対応する一
定のハードウェアのセットを動作させるコードを含む。
また、ホストインタフェース204のロジックモジュー
ル215は、ホストインタフェース204レジスタおよ
び割込みハンドラへのアクセスを可能にするコードも含
む。
02とデータムーバ206との両方に連結され、データ
ムーバ206から受取ったデータのブロックを転送す
る。一実施形態では、ファームウェアは、ホストインタ
フェース204のロジックモジュール215によって制
御される。ホストインタフェース204のロジックモジ
ュール215は、ホストインタフェースと、たとえばプ
ロセッサおよびタイマのようなその周辺機器等のシステ
ムインフラストラクチャと、診断ポートとに対応する一
定のハードウェアのセットを動作させるコードを含む。
また、ホストインタフェース204のロジックモジュー
ル215は、ホストインタフェース204レジスタおよ
び割込みハンドラへのアクセスを可能にするコードも含
む。
【0031】図5に示すように、ホストインタフェース
204とデータムーバ206との間の信号は、各装置の
ステータスおよび一定の機能を継続する用意ができてい
ることを示す。たとえば、データムーバ206からのH_
XferBlk信号212は、データムーバ206が読出すべ
きデータのブロックと書込み動作のため空間とを有する
ことを示す。その指示は、ブロック転送肯定応答(H_Bl
kXferred214)信号によってクリアされるまでアサー
トされる。データムーバ206に送信されるH_BlkXferr
ed信号214は、ホスト装置102がブロック転送を完
了し、ホストインタフェース204に対し追加のデータ
のブロックの転送を継続するように要求してよいことを
示す。データムーバ206から送信されるH_FinalRead
信号216は、ホストインタフェース204に対し、デ
ータムーバ206がホストインタフェース204に送信
しようとしているがまだバッファ内にあるブロックが、
転送における最後のブロックとなることを示す。
204とデータムーバ206との間の信号は、各装置の
ステータスおよび一定の機能を継続する用意ができてい
ることを示す。たとえば、データムーバ206からのH_
XferBlk信号212は、データムーバ206が読出すべ
きデータのブロックと書込み動作のため空間とを有する
ことを示す。その指示は、ブロック転送肯定応答(H_Bl
kXferred214)信号によってクリアされるまでアサー
トされる。データムーバ206に送信されるH_BlkXferr
ed信号214は、ホスト装置102がブロック転送を完
了し、ホストインタフェース204に対し追加のデータ
のブロックの転送を継続するように要求してよいことを
示す。データムーバ206から送信されるH_FinalRead
信号216は、ホストインタフェース204に対し、デ
ータムーバ206がホストインタフェース204に送信
しようとしているがまだバッファ内にあるブロックが、
転送における最後のブロックとなることを示す。
【0032】ホストインタフェース204は、複数のレ
ジスタ217を含む。ホストインタフェース204の内
部にあるレジスタもあれば、他のシステムハードウェア
コンポーネントによってアクセス可能なレジスタもあ
る。外部からアクセス可能なレジスタは、転送初期設定
の一部としてロードされるワード/ブロック(words pe
r block)レジスタ218を含む。端数ブロック転送
中、ワード/ブロックカウンタにロードされる値を含む
ワード/ブロックレジスタ218には、最終セクタ転送
に対し新たなワード/ブロックがリロードされる。リロ
ードされたワード/ブロックサイズ情報は、外部からア
クセス可能なレジスタ218から、ワード/ブロックサ
イズをカウントするホストインタフェース204の内部
レジスタ220にロードされる。ブロックサイズは、限
定されないが、バッファが保持することができるサイズ
であってよい。レジスタ例を上述したが、これらレジス
タの実施例は、網羅的であるように意図されておらず、
単にホストインタフェースレジスタを代表するものであ
る。
ジスタ217を含む。ホストインタフェース204の内
部にあるレジスタもあれば、他のシステムハードウェア
コンポーネントによってアクセス可能なレジスタもあ
る。外部からアクセス可能なレジスタは、転送初期設定
の一部としてロードされるワード/ブロック(words pe
r block)レジスタ218を含む。端数ブロック転送
中、ワード/ブロックカウンタにロードされる値を含む
ワード/ブロックレジスタ218には、最終セクタ転送
に対し新たなワード/ブロックがリロードされる。リロ
ードされたワード/ブロックサイズ情報は、外部からア
クセス可能なレジスタ218から、ワード/ブロックサ
イズをカウントするホストインタフェース204の内部
レジスタ220にロードされる。ブロックサイズは、限
定されないが、バッファが保持することができるサイズ
であってよい。レジスタ例を上述したが、これらレジス
タの実施例は、網羅的であるように意図されておらず、
単にホストインタフェースレジスタを代表するものであ
る。
【0033】図6は、図4に示すシステム200のデー
タムーバ206の実施形態を表す概略図を示す。
タムーバ206の実施形態を表す概略図を示す。
【0034】データムーバ206は、上述したようにホ
ストインタフェース204と通信する。また、データム
ーバ206は、記憶媒体インタフェース210とも通信
する。
ストインタフェース204と通信する。また、データム
ーバ206は、記憶媒体インタフェース210とも通信
する。
【0035】一実施形態において、制御ロジックモジュ
ール221は、レジスタと、適当にサイズが決められた
SRAM213および/またはROM219のあらゆる
アドレスに存在するファームウェアの一部とを制御す
る。制御ロジックモジュール221は、通常、ホストイ
ンタフェースと、装置インタフェースと、プロセッサお
よびタイマのようなその周辺機器等のシステムインフラ
ストラクチャと、診断ポートとに対応するハードウェア
の一定のセットを動作させるコードを含む。制御ロジッ
クモジュール221は、データのフローの制御等、デー
タムーバ206が実行する動作と、データバッファに読
出しまたは書込みを行うことができるか否かを制御する
制御レジスタを含む。制御ロジックモジュール221は
また、ソフトリセット機能も制御する。
ール221は、レジスタと、適当にサイズが決められた
SRAM213および/またはROM219のあらゆる
アドレスに存在するファームウェアの一部とを制御す
る。制御ロジックモジュール221は、通常、ホストイ
ンタフェースと、装置インタフェースと、プロセッサお
よびタイマのようなその周辺機器等のシステムインフラ
ストラクチャと、診断ポートとに対応するハードウェア
の一定のセットを動作させるコードを含む。制御ロジッ
クモジュール221は、データのフローの制御等、デー
タムーバ206が実行する動作と、データバッファに読
出しまたは書込みを行うことができるか否かを制御する
制御レジスタを含む。制御ロジックモジュール221は
また、ソフトリセット機能も制御する。
【0036】データムーバ206の制御ロジックモジュ
ール221は、2つのロジック部分に分割することがで
き、1つはホストインタフェースエンドに対してであり
1つは記憶媒体インタフェースエンドに対してである。
制御ロジックモジュール221は割込みを生成し、制御
ロジックモジュール221の割込みコントローラファー
ムウェアは割込みを管理する。信号は、記憶媒体インタ
フェース210とデータムーバ206との間のデータ転
送を容易にする役割を果たす。たとえば、データムーバ
206から記憶媒体インタフェース210へのSMI_Xfer
Sect信号222は、データムーバ206が書込むべきデ
ータセクタかまたは記憶媒体104から読出すための空
間を有していることを示す。記憶媒体インタフェース2
10からのSMI_SectXferred信号224は、データムー
バに対し、記憶媒体インタフェース210が現データセ
クタ転送を完了し転送を継続するよう要求することを示
す。
ール221は、2つのロジック部分に分割することがで
き、1つはホストインタフェースエンドに対してであり
1つは記憶媒体インタフェースエンドに対してである。
制御ロジックモジュール221は割込みを生成し、制御
ロジックモジュール221の割込みコントローラファー
ムウェアは割込みを管理する。信号は、記憶媒体インタ
フェース210とデータムーバ206との間のデータ転
送を容易にする役割を果たす。たとえば、データムーバ
206から記憶媒体インタフェース210へのSMI_Xfer
Sect信号222は、データムーバ206が書込むべきデ
ータセクタかまたは記憶媒体104から読出すための空
間を有していることを示す。記憶媒体インタフェース2
10からのSMI_SectXferred信号224は、データムー
バに対し、記憶媒体インタフェース210が現データセ
クタ転送を完了し転送を継続するよう要求することを示
す。
【0037】レジスタは、データムーバ206および他
のブロックに内部的に存在する。大抵は、マイクロプロ
セッサ207およびファームウェアによりアクセス可能
であるが、ハードウェアによってのみアクセス可能なも
のもあれば、マイクロプロセッサ207およびファーム
ウェアとホスト装置102との両方によりアクセス可能
なものもある。
のブロックに内部的に存在する。大抵は、マイクロプロ
セッサ207およびファームウェアによりアクセス可能
であるが、ハードウェアによってのみアクセス可能なも
のもあれば、マイクロプロセッサ207およびファーム
ウェアとホスト装置102との両方によりアクセス可能
なものもある。
【0038】HostXferSectCtrレジスタ228は、AT
Aリードセクタ(Read Sectors)、ライトセクタ(Writ
e Sectors)、リードマルチプルセクタ(Read Multiple
Sectors)またはライトマルチプルセクタ(Write Mult
iple Sectors)コマンドによって定義される、転送すべ
きセクタの数を示す。さらに、SectsPerBlkレジスタ2
30は、ATAセットマルチプル(Set Multiple)コマ
ンドによって定義される、ブロックにおけるセクタの数
を示す。HostDataOpレジスタ(図示せず)には、特定の
ホストデータ転送命令コード(たとえば、リードまたは
ライト)がロードされる。
Aリードセクタ(Read Sectors)、ライトセクタ(Writ
e Sectors)、リードマルチプルセクタ(Read Multiple
Sectors)またはライトマルチプルセクタ(Write Mult
iple Sectors)コマンドによって定義される、転送すべ
きセクタの数を示す。さらに、SectsPerBlkレジスタ2
30は、ATAセットマルチプル(Set Multiple)コマ
ンドによって定義される、ブロックにおけるセクタの数
を示す。HostDataOpレジスタ(図示せず)には、特定の
ホストデータ転送命令コード(たとえば、リードまたは
ライト)がロードされる。
【0039】記憶媒体エンドにおいて、SMI_LW_PerSect
レジスタ232は、セクタ毎のロングワードを示す。Bu
ffSectsレジスタ234は、アクセス制御のためにバッ
ファ238におけるセクタの数を示す。転送のためにセ
クタを保持するバッファが含まれる。バッファは、たと
えば、SRAM213の1024バイト(2セクタ)部
分とすることができる。データブロックは、バッファの
サイズに限定されず、実施形態によっては、バッファサ
イズより大きくてよい。DeviceXferSectCtrレジスタ2
40は、転送されるセクタの数を示す。割込みレジスタ
(図示せず)は、データムーバ206のホストエンドお
よび/または記憶媒体エンドからの割込みステータスを
示す。
レジスタ232は、セクタ毎のロングワードを示す。Bu
ffSectsレジスタ234は、アクセス制御のためにバッ
ファ238におけるセクタの数を示す。転送のためにセ
クタを保持するバッファが含まれる。バッファは、たと
えば、SRAM213の1024バイト(2セクタ)部
分とすることができる。データブロックは、バッファの
サイズに限定されず、実施形態によっては、バッファサ
イズより大きくてよい。DeviceXferSectCtrレジスタ2
40は、転送されるセクタの数を示す。割込みレジスタ
(図示せず)は、データムーバ206のホストエンドお
よび/または記憶媒体エンドからの割込みステータスを
示す。
【0040】図7は、図4に示すシステム200の記憶
媒体インタフェース201(記憶装置インタフェースと
も呼ぶ)の実施形態を表す概略図を示す。記憶媒体イン
タフェース210は、記憶装置へのコマンドの書込み、
データの転送およびステータスの読出しのプロトコルを
実現するためのレジスタ、カウンタおよび状態機械を含
む。構成情報を書込み記憶装置104からステータスを
読出すための機能と記憶装置リセットプロトコルを実行
するための機能とは、記憶媒体インタフェース210に
存在してよい。記憶媒体インタフェース210は、デー
タムーバ206にインタフェースする回路と、複数の外
部記憶装置を制御する能力とを有する。
媒体インタフェース201(記憶装置インタフェースと
も呼ぶ)の実施形態を表す概略図を示す。記憶媒体イン
タフェース210は、記憶装置へのコマンドの書込み、
データの転送およびステータスの読出しのプロトコルを
実現するためのレジスタ、カウンタおよび状態機械を含
む。構成情報を書込み記憶装置104からステータスを
読出すための機能と記憶装置リセットプロトコルを実行
するための機能とは、記憶媒体インタフェース210に
存在してよい。記憶媒体インタフェース210は、デー
タムーバ206にインタフェースする回路と、複数の外
部記憶装置を制御する能力とを有する。
【0041】記憶媒体インタフェースは、ロジックモジ
ュール245を含む。ロジックモジュール245は、通
常、装置インタフェースと、たとえばプロセッサおよび
タイマ等のその周辺機器等のシステムインフラストラク
チャと、診断ポートとに対応するハードウェアの一定の
セットを動作させるコードを含む。記憶媒体インタフェ
ース210のロジックモジュール245は、マイクロプ
ロセッサ207および割込みハンドラに対する割込みを
生成するコードおよび/またはハードウェアを含む。フ
ァームウェアは、ASIC209のSRAM213およ
び/またはROM219の一部に存在する。
ュール245を含む。ロジックモジュール245は、通
常、装置インタフェースと、たとえばプロセッサおよび
タイマ等のその周辺機器等のシステムインフラストラク
チャと、診断ポートとに対応するハードウェアの一定の
セットを動作させるコードを含む。記憶媒体インタフェ
ース210のロジックモジュール245は、マイクロプ
ロセッサ207および割込みハンドラに対する割込みを
生成するコードおよび/またはハードウェアを含む。フ
ァームウェアは、ASIC209のSRAM213およ
び/またはROM219の一部に存在する。
【0042】上述したように、記憶媒体インタフェース
210は、データムーバ206に対して信号を送信す
る。記憶媒体インタフェース210に含まれるレジスタ
は、適当な転送アドレスで開始して転送されるデータセ
クタの数を示すSMI_XferLenレジスタ244を含む。さ
らに、SMI_XferCtrレジスタ246は、転送されるデー
タセクタを追跡するために、SMI_XferLenレジスタ24
4からロードされたダウンカウンタとしての役割を果た
す。
210は、データムーバ206に対して信号を送信す
る。記憶媒体インタフェース210に含まれるレジスタ
は、適当な転送アドレスで開始して転送されるデータセ
クタの数を示すSMI_XferLenレジスタ244を含む。さ
らに、SMI_XferCtrレジスタ246は、転送されるデー
タセクタを追跡するために、SMI_XferLenレジスタ24
4からロードされたダウンカウンタとしての役割を果た
す。
【0043】信号およびレジスタの実施例は、網羅的で
あるように意図されておらず、単に、ホストインタフェ
ース、データムーバおよび記憶媒体インタフェースの信
号およびレジスタを代表するように意図されている。
あるように意図されておらず、単に、ホストインタフェ
ース、データムーバおよび記憶媒体インタフェースの信
号およびレジスタを代表するように意図されている。
【0044】図8は、図4のシステム200の書込み転
送の実施形態の機能を表すフローチャート250を示
す。
送の実施形態の機能を表すフローチャート250を示
す。
【0045】252において、ホスト装置は、Comp
actFlash(以降、「CF」)のセットマルチプ
ル(Set Multiple)コマンドを使用してブロックサイズ
を設定する。ホスト装置は、CFリードセクタ(Read S
ectors)またはライトセクタ(Write Sectors)コマン
ド(ターゲット装置が1セクタ/ブロックのブロックサ
イズを使用する)を介するかまたはCFリードマルチプ
ルセクタ(Read Multiple Sectors)またはライトマル
チプルセクタ(Write Multiple Sectors)コマンド(タ
ーゲット装置がセットマルチプル(Set Multiple)コマ
ンドで先に指定された数のセクタ/ブロックを使用す
る)を介して、データ転送を要求する。ホスト装置は、
通常、セクタによって転送長を指定する。
actFlash(以降、「CF」)のセットマルチプ
ル(Set Multiple)コマンドを使用してブロックサイズ
を設定する。ホスト装置は、CFリードセクタ(Read S
ectors)またはライトセクタ(Write Sectors)コマン
ド(ターゲット装置が1セクタ/ブロックのブロックサ
イズを使用する)を介するかまたはCFリードマルチプ
ルセクタ(Read Multiple Sectors)またはライトマル
チプルセクタ(Write Multiple Sectors)コマンド(タ
ーゲット装置がセットマルチプル(Set Multiple)コマ
ンドで先に指定された数のセクタ/ブロックを使用す
る)を介して、データ転送を要求する。ホスト装置は、
通常、セクタによって転送長を指定する。
【0046】254において、ファームウェアは、たと
えばホストインタフェースエンドにおいてHostXferSect
Ctrレジスタを使用し、装置インタフェースエンドにお
いてDeviceXferSectCtrレジスタを使用して、セクタを
用いて定めた転送長と共にカウンタをデータムーバにロ
ードする。ファームウェアはまた、SectsPerBlkレジス
タ(HostXferSectCtrレジスタと併せて作用する)に、
先に指定されたブロックサイズをロードする。データム
ーバのホストインタフェース側のHost_LW_PerBlkレジス
タに、ブロック毎の内部データ単位の数、すなわち32
ビットロングワードがロードされる。転送されるセクタ
の数がSectsPerBlkレジスタによって余り無く割切れる
場合、最後のデータが転送されるまでファームウェアは
二度と実行されず、ハードウェアにおいて後述するイベ
ントがすべて処理される。
えばホストインタフェースエンドにおいてHostXferSect
Ctrレジスタを使用し、装置インタフェースエンドにお
いてDeviceXferSectCtrレジスタを使用して、セクタを
用いて定めた転送長と共にカウンタをデータムーバにロ
ードする。ファームウェアはまた、SectsPerBlkレジス
タ(HostXferSectCtrレジスタと併せて作用する)に、
先に指定されたブロックサイズをロードする。データム
ーバのホストインタフェース側のHost_LW_PerBlkレジス
タに、ブロック毎の内部データ単位の数、すなわち32
ビットロングワードがロードされる。転送されるセクタ
の数がSectsPerBlkレジスタによって余り無く割切れる
場合、最後のデータが転送されるまでファームウェアは
二度と実行されず、ハードウェアにおいて後述するイベ
ントがすべて処理される。
【0047】読出しまたは書込み動作に対し、データム
ーバハードウェアは、書込みの場合はホストエンドから
データのブロックについて、もしくは読出しの場合は装
置エンドからセクタについて、信号H_XferBlkまたはSMI
_XferSectそれぞれを送信することによって第1の要求
を行う。この時点で、フローチャートループが動作中で
ある。一般的に、データムーバの「ソースエンド」と
「宛先エンド」とがある。読出し動作時、ソースエンド
はデータムーバの装置インタフェース部であり、宛先エ
ンドはホストインタフェース部である。書込み動作時、
ソースエンドはホストインタフェース部であり、宛先エ
ンドは装置インタフェース部である。このため、データ
ムーバインタフェースは、常に、最初にソースエンドで
開始し次に宛先エンドに移る。
ーバハードウェアは、書込みの場合はホストエンドから
データのブロックについて、もしくは読出しの場合は装
置エンドからセクタについて、信号H_XferBlkまたはSMI
_XferSectそれぞれを送信することによって第1の要求
を行う。この時点で、フローチャートループが動作中で
ある。一般的に、データムーバの「ソースエンド」と
「宛先エンド」とがある。読出し動作時、ソースエンド
はデータムーバの装置インタフェース部であり、宛先エ
ンドはホストインタフェース部である。書込み動作時、
ソースエンドはホストインタフェース部であり、宛先エ
ンドは装置インタフェース部である。このため、データ
ムーバインタフェースは、常に、最初にソースエンドで
開始し次に宛先エンドに移る。
【0048】書込み動作の場合、図8に示すように、ソ
ースエンドはホストインタフェースであり、そのためデ
ータムーバは、1ブロック分のセクタの転送を要求する
ことによりソースエンドから開始される。256におい
て、HostXferSectCtrレジスタの値の比較を行うことに
より、HostXferSectCtrレジスタがSectsPerBlkレジスタ
より小さいか否かが判断される。HostXferSectCtrがSec
tsPerBlkレジスタより小さくない場合、HostXferSectCt
rレジスタは空にされず、258において、バッファに
空間がある。そして、データムーバハードウェアは、ホ
ストインタフェースブロックに対しセクタを要求し続け
る。262において、データのブロックが、ホストから
バッファに移動する。転送の進行は、HostXferSectCtr
レジスタを管理することによって追跡され、データムー
バは、ブロック転送が成功する度にそのレジスタをSect
sPerBlkによってデクリメントする。264において、D
eviceXferSectCtrレジスタが0より大きい場合、266
において、バッファにセクタが残っているか否かを判断
するチェックが行われる。DeviceXferSectCtrレジスタ
が0に等しい場合、転送は完了し、268において、デ
ータムーバは装置インタフェース210に対するセクタ
の要求を停止する。
ースエンドはホストインタフェースであり、そのためデ
ータムーバは、1ブロック分のセクタの転送を要求する
ことによりソースエンドから開始される。256におい
て、HostXferSectCtrレジスタの値の比較を行うことに
より、HostXferSectCtrレジスタがSectsPerBlkレジスタ
より小さいか否かが判断される。HostXferSectCtrがSec
tsPerBlkレジスタより小さくない場合、HostXferSectCt
rレジスタは空にされず、258において、バッファに
空間がある。そして、データムーバハードウェアは、ホ
ストインタフェースブロックに対しセクタを要求し続け
る。262において、データのブロックが、ホストから
バッファに移動する。転送の進行は、HostXferSectCtr
レジスタを管理することによって追跡され、データムー
バは、ブロック転送が成功する度にそのレジスタをSect
sPerBlkによってデクリメントする。264において、D
eviceXferSectCtrレジスタが0より大きい場合、266
において、バッファにセクタが残っているか否かを判断
するチェックが行われる。DeviceXferSectCtrレジスタ
が0に等しい場合、転送は完了し、268において、デ
ータムーバは装置インタフェース210に対するセクタ
の要求を停止する。
【0049】バッファにセクタが残っている場合、27
0において、データムーバは、装置インタフェースに対
し、データのセクタをバッファから記憶媒体に転送する
よう要求する。272において、データのセクタがバッ
ファから装置インタフェースに移動する。プロセスは2
56に進み、HostXferSectCtrレジスタの値がSectsPerB
lkレジスタの値より下であるか否かが判断される。27
4において、HostXferSectCtrレジスタはSectsPerBlkレ
ジスタの値より小さく、HostXferSectCtrレジスタの比
較が行われることにより、それが非ゼロであるか否かが
判断される。HostXferSectCtrレジスタが非ゼロでありS
ectsPerBlkレジスタより下である場合、端数ブロックが
転送を待っている。
0において、データムーバは、装置インタフェースに対
し、データのセクタをバッファから記憶媒体に転送する
よう要求する。272において、データのセクタがバッ
ファから装置インタフェースに移動する。プロセスは2
56に進み、HostXferSectCtrレジスタの値がSectsPerB
lkレジスタの値より下であるか否かが判断される。27
4において、HostXferSectCtrレジスタはSectsPerBlkレ
ジスタの値より小さく、HostXferSectCtrレジスタの比
較が行われることにより、それが非ゼロであるか否かが
判断される。HostXferSectCtrレジスタが非ゼロでありS
ectsPerBlkレジスタより下である場合、端数ブロックが
転送を待っている。
【0050】転送長がSectsPerBlkレジスタによって余
り無く割切れないが、HostXferSectCtrレジスタがゼロ
である、すなわち端数ブロックが存在しない場合、プロ
セスは264に進む。HostXferSectCtrレジスタが非ゼ
ロでありSectsPerBlkレジスタより小さい場合、端数ブ
ロック状態が存在し、276において、データムーバ
は、マイクロプロセッサがSRAMまたはROMで実行
しているファームウェアに割込みを行う。その時点で、
コードはループにおいて、装置エンドが終了する、すな
わち268に達するのを待っている。書込みまたは読出
し時、すべてのデータがホスト側にまたはホスト側から
転送される場合、ホストインタフェースはマイクロプロ
セッサに対し、割込みを行うことにより、ホスト側で転
送が行われることを通知し、同時に、ホストインタフェ
ースは、H_BlkXferred信号をデータムーバに送信してい
る。ライト(Write)コマンドの場合、割込みハンドラ
は、装置エンドが完了するのを待つループに入る。装置
エンドが完了すると、ライト(Write)コマンドが終了
し、ファームウェアはステータスをセットアップしホス
ト装置に対しそれを読出すよう通知することができる。
読出しまたは書込みの場合、宛先エンドが終了した時に
ステータスが送信される。
り無く割切れないが、HostXferSectCtrレジスタがゼロ
である、すなわち端数ブロックが存在しない場合、プロ
セスは264に進む。HostXferSectCtrレジスタが非ゼ
ロでありSectsPerBlkレジスタより小さい場合、端数ブ
ロック状態が存在し、276において、データムーバ
は、マイクロプロセッサがSRAMまたはROMで実行
しているファームウェアに割込みを行う。その時点で、
コードはループにおいて、装置エンドが終了する、すな
わち268に達するのを待っている。書込みまたは読出
し時、すべてのデータがホスト側にまたはホスト側から
転送される場合、ホストインタフェースはマイクロプロ
セッサに対し、割込みを行うことにより、ホスト側で転
送が行われることを通知し、同時に、ホストインタフェ
ースは、H_BlkXferred信号をデータムーバに送信してい
る。ライト(Write)コマンドの場合、割込みハンドラ
は、装置エンドが完了するのを待つループに入る。装置
エンドが完了すると、ライト(Write)コマンドが終了
し、ファームウェアはステータスをセットアップしホス
ト装置に対しそれを読出すよう通知することができる。
読出しまたは書込みの場合、宛先エンドが終了した時に
ステータスが送信される。
【0051】280において、ファームウェアは、Sect
sPerBlkレジスタをHostXferSectCtrレジスタの値に再プ
ログラムし、データムーバを再始動する。代替実施形態
では、割込みを作成するのではなく、256においてテ
ストに落ちHostXferSectCtrの値が非ゼロであることに
より、マルチプレクサを使用することによってSectsPer
Blkレジスタ出力が除外され、HostXferSectCtrレジスタ
の出力に置換えられる。この構成では、付加的ハードウ
ェアの追加が必要となる可能性があるが、割込み処理の
オーバヘッドを回避することによりパフォーマンスが向
上する。プロセスは、256で開始する。これらの残り
のセクタすべてをバッファに転送するために、ホストに
対し、単一の最初に指定されたものより小さいブロック
としてセクタが要求される。HostXferSectCtrレジスタ
は最終的にゼロになり、ホストエンドにおいてデータ転
送は終了し、その後セクタはバッファからメモリ装置へ
流れるのを終了する。端数ブロック割込みをサービスす
る際、SectsPerBlkレジスタには、ホストによりセット
マルチプル(Set Multiple)コマンドにおいて設定され
た最初のセクタの数がリロードされる。
sPerBlkレジスタをHostXferSectCtrレジスタの値に再プ
ログラムし、データムーバを再始動する。代替実施形態
では、割込みを作成するのではなく、256においてテ
ストに落ちHostXferSectCtrの値が非ゼロであることに
より、マルチプレクサを使用することによってSectsPer
Blkレジスタ出力が除外され、HostXferSectCtrレジスタ
の出力に置換えられる。この構成では、付加的ハードウ
ェアの追加が必要となる可能性があるが、割込み処理の
オーバヘッドを回避することによりパフォーマンスが向
上する。プロセスは、256で開始する。これらの残り
のセクタすべてをバッファに転送するために、ホストに
対し、単一の最初に指定されたものより小さいブロック
としてセクタが要求される。HostXferSectCtrレジスタ
は最終的にゼロになり、ホストエンドにおいてデータ転
送は終了し、その後セクタはバッファからメモリ装置へ
流れるのを終了する。端数ブロック割込みをサービスす
る際、SectsPerBlkレジスタには、ホストによりセット
マルチプル(Set Multiple)コマンドにおいて設定され
た最初のセクタの数がリロードされる。
【0052】図9は、図4のシステム200の読出し転
送の実施形態の機能を表すフローチャート282であ
る。284において、ホスト装置が、ブロックサイズを
設定した後にリードマルチプルセクタ(Read Multiple
Sectors)コマンドを送信する。286において、ファ
ームウェアが、SectsPerBlkレジスタと、HostXferSectC
trレジスタと、Host_LW_PerBlkレジスタと、DeviceXfer
SectCtrレジスタとをロードする。288において、比
較が行われることにより、DeviceXferSectCtrレジスタ
の値がゼロより大きいか否かが判断される。大きい場
合、290において、バッファにおいてセクタのために
空間があるか否かが判断される。空間がある場合、29
2において、データムーバが、装置インタフェースに対
し、データのセクタを記憶媒体から転送するように要求
する。294において、データのセクタが装置インタフ
ェースからバッファに移動する。
送の実施形態の機能を表すフローチャート282であ
る。284において、ホスト装置が、ブロックサイズを
設定した後にリードマルチプルセクタ(Read Multiple
Sectors)コマンドを送信する。286において、ファ
ームウェアが、SectsPerBlkレジスタと、HostXferSectC
trレジスタと、Host_LW_PerBlkレジスタと、DeviceXfer
SectCtrレジスタとをロードする。288において、比
較が行われることにより、DeviceXferSectCtrレジスタ
の値がゼロより大きいか否かが判断される。大きい場
合、290において、バッファにおいてセクタのために
空間があるか否かが判断される。空間がある場合、29
2において、データムーバが、装置インタフェースに対
し、データのセクタを記憶媒体から転送するように要求
する。294において、データのセクタが装置インタフ
ェースからバッファに移動する。
【0053】296において、HostXferSectCtrレジス
タがSectsPerBlkレジスタより小さいか否かに関して比
較がなされる。小さい場合、298において、HostXfer
SectCtrレジスタがゼロより大きいか否かが判断され
る。大きくない場合、300において、データ転送プロ
セスが停止する。
タがSectsPerBlkレジスタより小さいか否かに関して比
較がなされる。小さい場合、298において、HostXfer
SectCtrレジスタがゼロより大きいか否かが判断され
る。大きくない場合、300において、データ転送プロ
セスが停止する。
【0054】298において、HostXferSectCtrレジス
タがゼロより大きい場合、302において、端数ブロッ
ク転送が要求され、データムーバがデータ転送に割込み
を行う。代替実施形態では、割込みを作成するのではな
く、296においてテストに落ちることにより、マルチ
プレクサを使用することによってSectsPerBlkレジスタ
出力が除外され、HostXferSectCtrレジスタの出力に置
換えられる。この構成では、付加的ハードウェアの追加
が必要であるが、割込み処理のオーバヘッドを回避する
ことによりパフォーマンスが向上する。304におい
て、ファームウェアはSectsPerBlkレジスタにHostXferS
ectCtrレジスタ値を、Host_LW_PerBlkレジスタにSectsP
erBlkレジスタ分のロングワードをリロードし、その後
データムーバを再始動する。プロセスは、296で継続
する。
タがゼロより大きい場合、302において、端数ブロッ
ク転送が要求され、データムーバがデータ転送に割込み
を行う。代替実施形態では、割込みを作成するのではな
く、296においてテストに落ちることにより、マルチ
プレクサを使用することによってSectsPerBlkレジスタ
出力が除外され、HostXferSectCtrレジスタの出力に置
換えられる。この構成では、付加的ハードウェアの追加
が必要であるが、割込み処理のオーバヘッドを回避する
ことによりパフォーマンスが向上する。304におい
て、ファームウェアはSectsPerBlkレジスタにHostXferS
ectCtrレジスタ値を、Host_LW_PerBlkレジスタにSectsP
erBlkレジスタ分のロングワードをリロードし、その後
データムーバを再始動する。プロセスは、296で継続
する。
【0055】306において、バッファにブロックがあ
るか否かの判断がなされる。ない場合、プロセスは28
8に進む。ある場合、308において、データムーバ
は、ホストインタフェースに対してデータのブロックを
バッファからホストに転送するように要求する。310
において、データのブロックがバッファからホストに移
動する。プロセスは288に進む。
るか否かの判断がなされる。ない場合、プロセスは28
8に進む。ある場合、308において、データムーバ
は、ホストインタフェースに対してデータのブロックを
バッファからホストに転送するように要求する。310
において、データのブロックがバッファからホストに移
動する。プロセスは288に進む。
【0056】ブロックまたはセクタハンドシェイクが、
データムーバとインタフェースブロックとの間で発生す
る。ファームウェアは、事前に、データムーバのホスト
側と装置インタフェース側との両方において、ブロック
毎の内部データ単位の数(32ビットロングワード)を
Host_LW_PerBlkレジスタに、セクタ毎の内部データ単位
の数(32ビットロングワード)をSMI_LW_PerSectレジ
スタに、ロードしている。データムーバハードウェア
は、これらのレジスタからロングワードカウンタ(たと
えば、Host_LW_CtrおよびSMI_LW_Ctr)をロードするこ
とにより、データムーバに対し、ホストまたは装置イン
タフェースブロックによって転送されたブロックまたは
セクタの肯定応答をいつ期待すべきかを通知する。ホス
トおよび装置インタフェースブロック自体が、内部ブロ
ックおよびセクタロングワードカウンタを有することに
より、それらに対し現セクタまたはブロックの転送にい
つ肯定応答すべきかを通知する。
データムーバとインタフェースブロックとの間で発生す
る。ファームウェアは、事前に、データムーバのホスト
側と装置インタフェース側との両方において、ブロック
毎の内部データ単位の数(32ビットロングワード)を
Host_LW_PerBlkレジスタに、セクタ毎の内部データ単位
の数(32ビットロングワード)をSMI_LW_PerSectレジ
スタに、ロードしている。データムーバハードウェア
は、これらのレジスタからロングワードカウンタ(たと
えば、Host_LW_CtrおよびSMI_LW_Ctr)をロードするこ
とにより、データムーバに対し、ホストまたは装置イン
タフェースブロックによって転送されたブロックまたは
セクタの肯定応答をいつ期待すべきかを通知する。ホス
トおよび装置インタフェースブロック自体が、内部ブロ
ックおよびセクタロングワードカウンタを有することに
より、それらに対し現セクタまたはブロックの転送にい
つ肯定応答すべきかを通知する。
【0057】ホストインタフェースまたは装置インタフ
ェースブロックとのブロックまたはセクタハンドシェイ
クは、転送されるべきセクタが残っている限り実行さ
れ、データムーバは、ホストインタフェースブロックに
H_XferBlk信号かまたは装置インタフェースブロックにS
MI_XferSect信号を送信することにより、セクタまたは
ブロックの転送を要求する。この時点で、データは、デ
ータムーバブロックのバッファとホストインタフェース
または装置インタフェースブロックとの間でロングワー
ドの単位で流れる。代替実施形態では、ホストインタフ
ェースのカウンタは、16ビット幅、たとえばハーフロ
ングワードである。各ロングワードが転送される度に、
データムーバハードウェアは、ホストインタフェースお
よび装置インタフェースブロックの内部のロングワード
カウンタがデクリメントされるにしたがってHost_LW_Ct
rまたはSMI_LW_Ctrをデクリメントする。装置インタフ
ェースブロックによるセクタ転送の終了時に、装置イン
タフェースブロックの内部ロングワードカウンタはゼロ
になり、装置インタフェースブロックに対し、セクタ肯
定応答SMI_SectXferred信号を装置インタフェースのデ
ータムーバに送信するよう促す。データムーバは、それ
自体のSMI_LW_Ctrがゼロになったために、この信号が送
信されるのを待っている。
ェースブロックとのブロックまたはセクタハンドシェイ
クは、転送されるべきセクタが残っている限り実行さ
れ、データムーバは、ホストインタフェースブロックに
H_XferBlk信号かまたは装置インタフェースブロックにS
MI_XferSect信号を送信することにより、セクタまたは
ブロックの転送を要求する。この時点で、データは、デ
ータムーバブロックのバッファとホストインタフェース
または装置インタフェースブロックとの間でロングワー
ドの単位で流れる。代替実施形態では、ホストインタフ
ェースのカウンタは、16ビット幅、たとえばハーフロ
ングワードである。各ロングワードが転送される度に、
データムーバハードウェアは、ホストインタフェースお
よび装置インタフェースブロックの内部のロングワード
カウンタがデクリメントされるにしたがってHost_LW_Ct
rまたはSMI_LW_Ctrをデクリメントする。装置インタフ
ェースブロックによるセクタ転送の終了時に、装置イン
タフェースブロックの内部ロングワードカウンタはゼロ
になり、装置インタフェースブロックに対し、セクタ肯
定応答SMI_SectXferred信号を装置インタフェースのデ
ータムーバに送信するよう促す。データムーバは、それ
自体のSMI_LW_Ctrがゼロになったために、この信号が送
信されるのを待っている。
【0058】DeviceXferSectCtrの非ゼロ値によって示
されるように、転送すべきセクタがまだある場合、デー
タムーバは装置インタフェースブロックに対し別のSMI_
XferSect信号を発行し、SMI_LW_Ctrをリロードする。
されるように、転送すべきセクタがまだある場合、デー
タムーバは装置インタフェースブロックに対し別のSMI_
XferSect信号を発行し、SMI_LW_Ctrをリロードする。
【0059】ホストインタフェースエンドによるブロッ
クの転送は同様に実行され、データムーバはH_XferBlk
信号を発行する。ホストインタフェースブロックの内部
ロングワードカウンタおよびデータムーバのHost_LW_Ct
rは、ブロックにおけるロングワードの転送を追跡す
る。ホストインタフェースブロックの内部ロングワード
カウンタは、ゼロになると、データムーバに対しH_BlkX
ferred信号を送信する。データムーバは、それ自体のHo
st_LW_Ctrがゼロになっているためそれが送信されるの
を待っている。ここでまた、転送すべきブロックがさら
にある場合、ハードウェアによってロングワードカウン
タがリロードされ、データムーバは別のHost_XferBlk信
号を発行する。
クの転送は同様に実行され、データムーバはH_XferBlk
信号を発行する。ホストインタフェースブロックの内部
ロングワードカウンタおよびデータムーバのHost_LW_Ct
rは、ブロックにおけるロングワードの転送を追跡す
る。ホストインタフェースブロックの内部ロングワード
カウンタは、ゼロになると、データムーバに対しH_BlkX
ferred信号を送信する。データムーバは、それ自体のHo
st_LW_Ctrがゼロになっているためそれが送信されるの
を待っている。ここでまた、転送すべきブロックがさら
にある場合、ハードウェアによってロングワードカウン
タがリロードされ、データムーバは別のHost_XferBlk信
号を発行する。
【0060】本発明の実施例では、動作中、ホストが4
セクタのデータフェーズサイズ(すなわち、ブロック)
を設定するものとする。そして、ホストは、11セクタ
長のデータ転送要求を送信する。この転送は、複数の整
数データフェーズで完了することができない。第1の転
送は、4つのセクタを送信する。7つのセクタが送信さ
れずに残っている。次の転送で4つのセクタが送信され
る。3つのセクタが送信されずに残っている。このた
め、2つのブロック全体の転送が送信される、3つのセ
クタの「端数ブロック」データフェーズが送信されずに
残る。この時点で、データ転送に割込みが行われ、デー
タフェーズサイズが3セクタにリセットされる。送信さ
れる残りの3つのセクタが、この時データフェーズサイ
ズ(ブロック)に一致し、転送が発生する。送信されず
に残る追加のセクタは無く、転送が完了する。そして、
プロセッサまたはハードウェアは、セクタ/ブロックレ
ジスタに通常の非端数値をリロードする。
セクタのデータフェーズサイズ(すなわち、ブロック)
を設定するものとする。そして、ホストは、11セクタ
長のデータ転送要求を送信する。この転送は、複数の整
数データフェーズで完了することができない。第1の転
送は、4つのセクタを送信する。7つのセクタが送信さ
れずに残っている。次の転送で4つのセクタが送信され
る。3つのセクタが送信されずに残っている。このた
め、2つのブロック全体の転送が送信される、3つのセ
クタの「端数ブロック」データフェーズが送信されずに
残る。この時点で、データ転送に割込みが行われ、デー
タフェーズサイズが3セクタにリセットされる。送信さ
れる残りの3つのセクタが、この時データフェーズサイ
ズ(ブロック)に一致し、転送が発生する。送信されず
に残る追加のセクタは無く、転送が完了する。そして、
プロセッサまたはハードウェアは、セクタ/ブロックレ
ジスタに通常の非端数値をリロードする。
【0061】上述した説明は、例示および説明の目的の
ために提示したものである。それは、網羅的であるよう
に、または本発明を開示した厳密な形態に網羅的であり
限定するようには、意図されていない。上記教示に鑑み
て、変更または変形が可能である。しかしながら、本発
明の原理とその実際的な適用の最良の例示を提供するこ
とにより、当業者が、企図された特定の用途に適するよ
うにあらゆる実施形態においておよびあらゆる変更態様
で本発明を利用することができるようにするために、検
討した実施形態を選択し説明した。
ために提示したものである。それは、網羅的であるよう
に、または本発明を開示した厳密な形態に網羅的であり
限定するようには、意図されていない。上記教示に鑑み
て、変更または変形が可能である。しかしながら、本発
明の原理とその実際的な適用の最良の例示を提供するこ
とにより、当業者が、企図された特定の用途に適するよ
うにあらゆる実施形態においておよびあらゆる変更態様
で本発明を利用することができるようにするために、検
討した実施形態を選択し説明した。
【図1】本発明の端数ブロック転送システムの実施形態
を実現するために使用することができるシステムの実施
形態を示す概略図である。
を実現するために使用することができるシステムの実施
形態を示す概略図である。
【図2】図1の端数ブロック転送システムの実施形態の
機能を示すフローチャートである。
機能を示すフローチャートである。
【図3】本発明の端数ブロック転送システムの実施形態
を実現するために使用することができるコンピュータま
たはプロセッサベースシステムを示す概略図である。
を実現するために使用することができるコンピュータま
たはプロセッサベースシステムを示す概略図である。
【図4】図1に示す端数ブロック転送システムの実施形
態を示す概略図である。
態を示す概略図である。
【図5】図4に示す端数ブロック転送システムのホスト
インタフェースの実施形態を示す概略図である。
インタフェースの実施形態を示す概略図である。
【図6】図4に示す端数ブロック転送システムのデータ
ムーバの実施形態を示す概略図である。
ムーバの実施形態を示す概略図である。
【図7】図4に示す端数ブロック転送システムの記憶媒
体インタフェースの実施形態を示す概略図である。
体インタフェースの実施形態を示す概略図である。
【図8】図1の端数ブロック転送システムの書込み転送
の実施形態の機能を示すフローチャートである。
の実施形態の機能を示すフローチャートである。
【図9】図1の端数ブロック転送システムの読出し転送
の実施形態の機能を示すフローチャートである。
の実施形態の機能を示すフローチャートである。
─────────────────────────────────────────────────────
フロントページの続き
(72)発明者 スチュワート・アール・ワイアット
アメリカ合衆国アイダホ州83704,ボイジ
ー,バーンズデール・ドライブ 10476
Fターム(参考) 5B065 BA05 CE01 CS02
5B077 AA23 AA32 NN04
Claims (10)
- 【請求項1】 記憶媒体とホストシステムとの間でデー
タを転送するデータ転送システムであって、ここで、該
データが、データセクタのある倍数でありうる複数のブ
ロックサイズに編成されるものであり、 前記ホストシステムと前記記憶媒体との間を連結するよ
うに動作可能に構成され、データセクタに編成された複
数のデータを格納するものである前記記憶媒体データ転
送コントローラを具備してなり、 該データ転送コントローラは、 ホスト装置に対し、少なくとも1つのデータセクタを転
送するように要求し、 要求されたデータのセクタの数がブロックサイズにより
余り無く割切れるか否かを判断し、 該要求されたデータのセクタの数が該ブロックサイズに
よって余り無く割切れない場合に、データセクタ転送要
求に割込みを行うように構成されたものである、データ
転送システム。 - 【請求項2】 前記データ転送コントローラは、さら
に、送信されるべきデータセクタの数を、前記転送にお
いて残っているデータセクタの数に等しい数にリセット
するように構成されている請求項1記載のデータ転送シ
ステム。 - 【請求項3】 前記データ転送コントローラは、さら
に、転送されるべく残っている前記データセクタの数が
前記ブロックサイズより大きいかまたは等しい場合に、
データセクタの前記ホスト装置に対する転送を要求する
ように構成されている請求項1記載のデータ転送システ
ム。 - 【請求項4】 データ転送処理システムにおいて端数ブ
ロック転送を検出する方法であって、 ソースからホストにデータ転送を要求するステップと、 該ソースから該ホストに該データを転送するとともに、
データ転送毎にコントローラのカウンタをデクリメント
するステップと、 該カウンタの値が非ゼロであるが、単一データフェーズ
で転送されるべきデータの量を追跡するレジスタのある
値より小さくなるまで、データを転送し続けるステップ
とを含む方法。 - 【請求項5】 前記カウンタの値が非ゼロであり前記レ
ジスタの値より小さい場合にコントローラに割込みを行
い、該カウンタの値を該レジスタの値に等しくなるよう
にリセットするステップをさらに含む請求項4記載の方
法。 - 【請求項6】 コンピュータ読取可能媒体に格納され、
コントローラによって実行可能なデータ転送プロセッサ
であって、 ある要求に残っている複数のデータセクタのうちの少な
くとも1つのデータセクタを転送するよう記憶媒体に対
し要求するように構成されたロジックと、 該要求に残っているセクタが画定されたブロックサイズ
によって余り無く割切れるか否かを判断するように構成
されたロジックと、 要求されたデータのセクタの数が前記ブロックサイズに
よって余り無く割切れない場合に、データセクタ転送要
求に割込みを行うように構成されたロジックとを具備し
てなるデータ転送プロセッサ。 - 【請求項7】 データブロックのサイズを設定するホス
ト装置と、 データセクタにデータを格納する記憶媒体と、 前記ホスト装置と前記記憶媒体とを動作可能に連結し、
いくつかある前記データセクタがブロックサイズによっ
て余り無く割切れる場合に、該ホスト装置と該記憶媒体
との間でデータセクタを転送するように適合された、端
数ブロック転送システムとを具備してなる端数ブロック
転送を検出するシステム。 - 【請求項8】 前記端数ブロック転送システムは、さら
に、転送されるために残っている前記データセクタがブ
ロックサイズによって余り無く割切れない場合に、前記
データ転送に割込みを行うように構成されたロジックを
含むものである、請求項7記載のシステム。 - 【請求項9】 前記端数ブロック転送システムは、さら
に、ブロックサイズを転送中に残っているデータセクタ
の数に等しくなるようにリセットし、残っているデータ
セクタを転送するように構成されたロジックを含むもの
である請求項8記載のシステム。 - 【請求項10】 データブロックのサイズを設定する手
段と、 データセクタにデータを格納する手段と、 データブロックのサイズを設定する前記手段をデータセ
クタにデータを格納する前記手段に連結し、いくつかあ
る該データセクタが該ブロックサイズによって余り無く
割切れる場合に、データブロックのサイズを設定する該
手段とデータセクタにデータを格納する該手段との間で
データセクタを転送するように適合された手段とを具備
してなる端数ブロック転送を検出するシステム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/094857 | 2002-03-08 | ||
| US10/094,857 US20030172229A1 (en) | 2002-03-08 | 2002-03-08 | Systems and methods for detecting and compensating for runt block data transfers |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2003288317A true JP2003288317A (ja) | 2003-10-10 |
Family
ID=22247588
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2003064108A Pending JP2003288317A (ja) | 2002-03-08 | 2003-03-10 | 端数ブロックデータ転送を検出し補償するシステムおよび方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US20030172229A1 (ja) |
| JP (1) | JP2003288317A (ja) |
| DE (1) | DE10310055A1 (ja) |
| GB (1) | GB2388934A (ja) |
Families Citing this family (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3839288B2 (ja) * | 2001-09-12 | 2006-11-01 | 株式会社ルネサステクノロジ | メモリカード |
| JP2004227501A (ja) * | 2003-01-27 | 2004-08-12 | Yamaha Corp | データ転送制御装置および方法 |
| US7155548B2 (en) * | 2003-11-04 | 2006-12-26 | Texas Instruments Incorporated | Sequential device control with time-out function |
| US8706987B1 (en) * | 2006-12-01 | 2014-04-22 | Synopsys, Inc. | Structured block transfer module, system architecture, and method for transferring |
| JP5677336B2 (ja) * | 2011-08-01 | 2015-02-25 | 株式会社東芝 | メモリ・デバイス |
| US9189396B2 (en) | 2012-08-24 | 2015-11-17 | Dell Products L.P. | Snapshot coordination |
| US9262329B2 (en) * | 2012-08-24 | 2016-02-16 | Dell Products L.P. | Snapshot access |
| US20140310493A1 (en) * | 2013-04-11 | 2014-10-16 | International Business Machines Corporation | Migrating data across storages with dissimilar allocation sizes |
| US8797669B1 (en) | 2013-08-30 | 2014-08-05 | Western Digital Technologies, Inc. | Disk drive executing rotational position optimization (RPO) algorithm to facilitate a read-modify-write operation |
| US9971522B2 (en) | 2014-07-21 | 2018-05-15 | Toshiba Memory Corporation | Memory system and method |
| US10423568B2 (en) * | 2015-12-21 | 2019-09-24 | Microsemi Solutions (U.S.), Inc. | Apparatus and method for transferring data and commands in a memory management environment |
| US10564890B2 (en) * | 2017-07-07 | 2020-02-18 | Seagate Technology Llc | Runt handling data storage system |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| AU2418492A (en) * | 1991-08-07 | 1993-03-02 | Adaptec, Inc. | Intelligent hardware for automatically reading and writing multiple sectors of data between a computer bus and a disk drive |
| GB9606927D0 (en) * | 1996-04-02 | 1996-06-05 | Memory Corp Plc | Data storage devices |
| US6134631A (en) * | 1996-08-19 | 2000-10-17 | Hyundai Electronics America, Inc. | Non-volatile memory with embedded programmable controller |
| US6324604B1 (en) * | 1998-07-07 | 2001-11-27 | Emc Corporation | Magnetic disk storage for storing data in disk block size from fixed length of host block in non-integer multiple of the disk block size |
| US6618788B1 (en) * | 2000-09-27 | 2003-09-09 | Cypress Semiconductor, Inc. | ATA device control via a packet-based interface |
-
2002
- 2002-03-08 US US10/094,857 patent/US20030172229A1/en not_active Abandoned
-
2003
- 2003-02-19 GB GB0303822A patent/GB2388934A/en not_active Withdrawn
- 2003-03-07 DE DE10310055A patent/DE10310055A1/de not_active Withdrawn
- 2003-03-10 JP JP2003064108A patent/JP2003288317A/ja active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| GB0303822D0 (en) | 2003-03-26 |
| DE10310055A1 (de) | 2003-09-25 |
| US20030172229A1 (en) | 2003-09-11 |
| GB2388934A (en) | 2003-11-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6330626B1 (en) | Systems and methods for a disk controller memory architecture | |
| JP5159902B2 (ja) | 入出力処理システム内のチャネル・サブシステムと通信するように構成された制御装置において可変長のデバイス・コマンド・ワード(dcw)を処理するための方法 | |
| JP5128079B2 (ja) | ユニバーサルストレージバスアダプタ | |
| JP4928100B2 (ja) | 改善されたデータ転送のためのコントローラ装置および方法 | |
| US7069350B2 (en) | Data transfer control system, electronic instrument, and data transfer control method | |
| US5548788A (en) | Disk controller having host processor controls the time for transferring data to disk drive by modifying contents of the memory to indicate data is stored in the memory | |
| US7805543B2 (en) | Hardware oriented host-side native command queuing tag management | |
| US6105076A (en) | Method, system, and program for performing data transfer operations on user data | |
| US20080043563A1 (en) | Flexibly controlling the transfer of data between input/output devices and memory | |
| WO2003043254A2 (en) | Transferring data using direct memory access | |
| JP2003288317A (ja) | 端数ブロックデータ転送を検出し補償するシステムおよび方法 | |
| JP2019204463A (ja) | ストレージシステム及びその制御方法 | |
| US7643410B2 (en) | Method and apparatus for managing a connection in a connection orientated environment | |
| US6751686B2 (en) | Automated transfer of a data unit comprising a plurality of fundamental data units between a host device and a storage medium | |
| JP2007501473A (ja) | メインメモリとストレージ装置との間のデータ転送を行うための方法及び装置 | |
| KR100638378B1 (ko) | 디스크 제어장치의 메모리 구조에 대한 시스템 및 방법 | |
| US7596639B2 (en) | Skip mask table automated context generation | |
| US8006001B2 (en) | Method and apparatus for manipulating direct memory access transfers | |
| US7409486B2 (en) | Storage system, and storage control method | |
| WO2016059715A1 (ja) | 計算機システム | |
| US6950905B2 (en) | Write posting memory interface with block-based read-ahead mechanism | |
| US8667188B2 (en) | Communication between a computer and a data storage device | |
| US20060265523A1 (en) | Data transfer circuit and data transfer method | |
| JP2009093225A (ja) | ストレージ制御装置、方法及びプログラム並びにストレージ装置 | |
| US20060277326A1 (en) | Data transfer system and method |