JP3687112B2 - データ転送制御装置及び情報処理装置 - Google Patents

データ転送制御装置及び情報処理装置 Download PDF

Info

Publication number
JP3687112B2
JP3687112B2 JP20150994A JP20150994A JP3687112B2 JP 3687112 B2 JP3687112 B2 JP 3687112B2 JP 20150994 A JP20150994 A JP 20150994A JP 20150994 A JP20150994 A JP 20150994A JP 3687112 B2 JP3687112 B2 JP 3687112B2
Authority
JP
Japan
Prior art keywords
transfer
data
table data
external interface
parameter
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.)
Expired - Fee Related
Application number
JP20150994A
Other languages
English (en)
Other versions
JPH0798684A (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.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP20150994A priority Critical patent/JP3687112B2/ja
Publication of JPH0798684A publication Critical patent/JPH0798684A/ja
Application granted granted Critical
Publication of JP3687112B2 publication Critical patent/JP3687112B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

【0001】
【産業上の利用分野】
本発明は、ブロック毎のデータ転送が可能なデータ転送制御装置及びこれを含む情報処理装置に関する。
【0002】
【従来の技術】
高速にデータ転送を行う手法として、DMA方式がよく使われる。このDMA方式では、データ転送に伴い必要となるタイミング信号の発生はハードウェア装置であるDMAコントローラにより行われる。そして、データ転送中は外部コントローラ(例えばCPU)のプログラムによる制御を必要とせずDMAコントローラにより転送を制御し、転送終了時にそのステータスを外部コントローラに知らせる。
【0003】
外部コントローラがこのようなDMAコントローラにデータ転送を命令する場合、転送元・転送先それぞれの転送開始アドレス及び転送数からなる管理情報(以下、このような管理情報をテーブルデータと呼ぶ)を指定する。このようにして指定された領域は一組のデータブロックとして連続して転送されることになる。なお、ここで転送数については転送終了アドレスでも可能であり、また転送元または転送先が単なる入力ポートまたは出力ポートである場合には開始アドレスは必要なくなる。
【0004】
さて、ハードディスク、光磁気ディスク等のディスクメモリをコントロールするDMAコントローラでは、先読み、LRUと呼ばれる手法が多く用いられている。先読みと呼ばれる手法では、外部コントローラからディスクの中のn番目のセクタを読み出せという命令が来た場合、次のn+1番目、n+2番目のセクタをも先読みし、先読みしたデータをバッファメモリに格納しておく。ディスクメモリ用のDMAコントローラにおいては、ディスクメモリからのデータ読み出しに一番時間がかかる。従って、このように1回のディスク読み出し命令で複数セクタのデータを読み出すようにすれば、データ転送全体の速度を向上させることができるわけである。また、LRUと呼ばれる手法は、このように先読みにより余分に読み出されたデータを整理する手法であり、バッファメモリに格納されたデータの中で、しばらくアクセスされていないデータを削除する手法である。そして、このように先読み手法によりデータを余分に読み出したり、LRU手法により古いデータから順に削除してゆくと、図24に示すようにデータブロックが物理的に不連続に配置されるという事態が生じる。
【0005】
しかし、前述のような通常方式のDMAコントローラでは、一回の転送開始命令に対して一組のデータブロックしか指定することができなかった。このため、図24に示すように物理的に不連続に配置されている複数組のデータブロック400、402、404を連続的に転送する場合には、一組のデータブロック転送終了を待ちその後に次のデータブロックを指定してデータ転送を再開させなければならないことになる。従って、外部コントローラにおいて実行される転送制御のためのプログラムのオーバーヘッドが非常に大きくなるという問題が生じていた。
【0006】
このようなディスクメモリコントローラ用のDMAコントローラで上記の問題を解決したLSI(以下、DMC−1と略)が開発されている。これは、一回の転送開始命令に対して、複数組のデータブロック指定を可能にしたものであり、DMC−1が管理するバッファメモリ内にデータブロックを指定するための管理領域を確保し、そこに、図25(A)に示すように各データブロックの開始アドレス503〜506を格納してゆくものである。これにより物理的に不連続に配置されているデータブロックの転送を論理的に連続なものとして転送することが可能となった。また、DMC−1では、ブロック指定を行うテーブルデータにホストイネーブルビット(Hビット)501とディスクイネーブルビット(Dビット)502を含ませている。そして、例えばH=1、D=0(1が真で、0が偽)ならば、そのデータブロックについてはホスト(主としてSCSIインターフェースを想定している)とバッファメモリ間でデータ転送が行われる。また、H=0、D=1ならば、そのデータブロックについてはディスクとバッファメモリ間でデータ転送が行われる。これにより、1つのテーブルデータでホスト側とディスク側双方のデータ転送が可能となり、ディスクメモリではよく使用される先読みなどのキャッシュ手法の実現が容易となっている。
【0007】
しかし、DMC−1では、一組のデータブロック指定を1セクタ単位でしか行うことができず、管理領域のサイズが非常に大きくなるという問題があった。即ち、例えば100セクタの転送を行う場合には、100セクタの全てについて図25(A)に示すようなテーブルデータが必要となり、従って100個のテーブルデータを格納できる領域をバッファメモリ上に設けなければならならなかった。そして、実際問題として領域サイズには上限が存在するので、これを超えるような場合には複数回に転送を分ける必要があり、制御が複雑になるという問題があった。更に、一度外部コントローラが転送開始命令を出すと転送終了まで次のデータブロック指定ができないため、データブロック数が多い場合には外部コントローラのプログラムオーバーヘッドが大きくなるという問題もあった。
【0008】
その後、以下に述べるような方式で上記のDMC−1の問題点を改善したLSI(以下、DMC−2と略す)が開発されている。このDMC−2では、ディスク側の転送については図25(C)に示すように開始アドレス510〜512と共に転送セクタ数508についても指定できる。従って、上記のDMC−1と異なり、データ転送を行う全てのセクタについて開始アドレスを指定する必要がなく、物理的に連続するセクタについてはまとめて一つのデータブロックとして指定できる。この点においてDMC−2は、DMC−1に比べ外部コントローラのプログラムオーバーヘッドを軽減できる。また、DMC−2では、データブロックを指定するための管理領域はDMC−1と異なりLSI内部に確保されており、この管理領域はキューバッファとして動作する。従って、転送動作中に先に指定した領域が空けば次のデータブロック指定を追加することができ、この点においても外部コントローラのプログラムオーバーヘッドを軽減できる。また、DMC−2では、ホスト側のデータブロック指定にもキューバッファを導入しており、転送中のブロック指定の追加を可能にしている。
【0009】
【発明が解決しようとする課題】
しかし、上記DMC−2では、図25(B)に示すように、ホスト側のブロック指定については開始アドレス513〜515と転送バイト数516〜518を指定する。即ち、ホスト−バッファメモリ間ではバイト単位でデータを転送し、バッファメモリ−ディスク間ではセクタ単位でデータを転送することになる。従って、ホスト−ディスク間の転送を行う場合、転送セクタ数から転送バイト数へあるいは逆の変換作業が必要となるという問題があった。また、実際のシステム動作上でのデータ転送を考慮すると、転送単位としてセクタよりもむしろクラスタ、セグメントというようなセクタのあつまりで行われることが多い。従って、このような転送をセクタ単位での指定で行うと指定情報としては冗長となり、外部コントローラのプログラムオーバーヘッド増大の要因となる。
【0010】
ここで、先に述べたDMC−1のようにデータブロック指定情報を共有としホスト側の転送も複数のデータブロック指定が可能なようにすることが考えられるが、情報共有化には次のような問題がある。例えばテーブルデータをディスク側とホスト側とで共有化してディスク側からバッファメモリを介してホスト側へとデータ転送を行う場合を考える。この場合には、DMC−2の管理領域にディスク−バッファメモリ間でのデータ転送のためのテーブルデータを格納し、このテーブルデータをバッファメモリ−ホスト間でのデータ転送にも使用することになる。しかし、通常、ディスクメモリの読み出し・書き込み動作には時間がかかるため、ディスク側の方がホスト側よりもデータ転送速度が遅い。そして、DMC−2では、テーブルデータを格納する管理領域は例えば2段のキューバッファ構造となっているため、このキューバッファにディスク−バッファメモリ間用のテーブルデータが2つ格納されると、バッファメモリ−ホスト間用のテーブルデータを新たに追加することができない。この結果、バッファメモリ−ホスト間のデータ転送は、ディスク−バッファメモリ間のデータ転送が終わるまで待たされてしまうという問題が生じる。
【0011】
これを解決する方法として、DMC−2のようにテーブルデータを共有にはせずに物理的に分けてしまうことが考えられる。こうすると、上記の問題は解決されるものの次のような別の問題が発生する。つまり、両者に共通するテーブルデータについても外部コントローラによって両方に指定しなければならず、二度手間となってしまうという問題である。
【0012】
また、転送動作の終了方法にも以下のような問題がある。即ち、DMC−2ではキューバッファが空になった状態を終了と判断している。従って、例えばディスクからデータを読み出す場合においてホスト側の転送速度の方がディスク側よりも速い場合を考えると、この場合にはホスト側の管理領域が早めに空になる可能性が高く、従って、ホスト側の転送動作が管理領域が空になった時点で終了してしまうことになる。従って、ホスト側の残りのデータブロックを転送する場合には、転送開始命令を再度送って転送を再開しなければならなく、外部コントローラのプログラムオーバーヘッドが増大するという問題があった。
【0013】
さて、最後に外部インターフェースとの接続上の課題がある。外部インターフェースとしてはSCSIインターフェースが代表的であるが、通常は上で述べたDMC−1やDMC−2とは別にSCSIコントロールLSIを用意し、一つのシステムとすることが多い。近年、集積化が進み、上記の2種のLSIを1チップ化した製品も市販されているが、内部の基本構成は2チップを単純に接続したものに等しい。このとき、SCSIコントローラ側及びDMC−1(またはDMC−2)側は、別々に転送数カウンタを持っているため転送数を設定するには2カ所に設定しなければならない。これはプログラム開発時のバグの要因となる。さらに最大転送数を増やそうと回路を変更すると、両方のカウンタの段数を増やさなければならない。これは回路規模の増大を招きLSIとしての信頼性の低下につながる。
【0014】
本発明は以上述べた課題を解決するためになされたものであり、その目的とするところは、データブロック指定の方法を改善することにより外部コントローラの負荷を減少させ、効率的なデータ転送を実現できるデータ転送制御装置及びこれを含む情報処理装置を提供するところにある。
【0015】
また、本発明の他の目的は、複数のインターフェース間でのバッファメモリを介したデータ転送を1つの転送数カウンタで制御できるデータ転送制御装置及びこれを含む情報処理装置を提供するところにある。
【0016】
【課題を解決するための手段及び作用】
上記目的を達成するために発明は、外部コントローラ手段により設定された少なくとも1組以上のテーブルデータに基づいて複数の外部インターフェースの中の第1、第2の外部インターフェースの間でバッファメモリを介したデータ転送を行うための制御を行うデータ転送制御装置であって、
前記テーブルデータが、転送開始アドレスと、転送数と、転送数の単位を選択するための転送数単位選択パラメータとを含み、前記バッファメモリと前記第1、第2の外部インターフェースとの間において転送するデータの転送数をカウントする転送数カウント手段と、前記テーブルデータに含まれる前記転送数単位選択パラメータにより転送数の単位を選択し、選択された単位に基づいて前記テーブルデータに含まれる前記転送数を変換し、変換された転送数を前記転送数カウント手段に対して設定する転送数設定手段と、前記外部コントローラ手段からの転送開始命令に基づいてデータ転送を開始し、前記バッファメモリと前記第1、第2の外部インターフェースとの間で前記転送開始アドレスと前記転送数カウント手段におけるカウント結果とに基づき指定されるアドレス範囲のデータを転送する手段とを含むことを特徴とする。
【0017】
発明によれば、テーブルデータは、転送開始アドレスと、転送数と、転送数単位選択パラメータとを含む。このテーブルデータは外部コントローラ手段により設定されるものであり、本発明においてはバッファメモリに格納してもよいし、データ転送制御装置内の記憶手段に格納してもよい。転送数カウント手段は、バッファメモリと第1、第2の外部インターフェースとの間において転送するデータの転送数をカウントするものであり、転送数設定手段は、転送数カウント手段においてカウントされる転送数を設定するものである。そして、転送数設定手段においては、テーブルデータの中の転送数単位選択パラメータにより転送数の単位の選択、例えばセクタ単位なのかセグメント単位なのかの選択が行われる。そして、選択された単位に基づいてテーブルデータに含まれる転送数が変換され、変換された転送数が転送数カウント手段に設定されることになる。データ転送手段は、外部コントローラから転送開始命令が発行されるとデータ転送を開始する。そして、この場合の転送すべきデータのアドレス範囲は、テーブルデータの中の転送開始アドレスと、転送数カウント手段からのカウント結果とに基づき決められることになる。以上のように本発明によれば、転送数単位選択パラメータにより転送数の単位を任意に選択することが可能となる。
【0018】
また、本発明では、前記転送数設定手段が、前記テーブルデータに含まれる前記転送数の単位を変更するための乗数を格納する乗数格納手段と、前記テーブルデータに含まれる前記転送数と前記乗数との乗算結果を出力する乗算手段と、前記転送数単位選択パラメータに基づいて前記乗算手段の出力と前記テーブルデータに含まれる前記転送数のいずれか一方を選択する手段とを含むことを特徴とする。
【0019】
この態様によれば、転送数設定手段が、乗数格納手段と乗算手段と選択手段とを含む。そして、乗数格納手段にはテーブルデータに含まれる転送数の単位を変更するための乗数が格納される。例えば1セグメントが4セクタであった場合には、この4が乗数として格納される。また、乗算手段では、テーブルデータに含まれる転送数と前記乗数とが乗算される。これにより例えば転送数が100である場合には400が乗算結果として出力される。そして、選択手段では、転送数単位選択パラメータに基づいて、乗算手段の出力とテーブルデータに含まれる転送数のいずれか一方が選択される。これにより転送数単位選択パラメータにより例えばセクタ単位が選択されると乗算結果である400が出力され、セグメント単位が選択されるとテーブルデータの中の転送数である100がそのまま出力されることになる。そして、これらの出力に基づいて転送数カウント手段においてカウントされる転送数が設定されることになる。
【0020】
また、発明は、外部コントローラ手段により設定された少なくとも1組以上のテーブルデータに基づいて複数の外部インターフェースの中の第1、第2の外部インターフェースの間でバッファメモリを介したデータ転送を行うための制御を行うデータ転送制御装置であって、
前記テーブルデータが、該テーブルデータが一連のテーブルデータの最後の組であることを示す転送終了パラメータを含み、前記バッファメモリと前記第1、第2の外部インターフェースとの間でデータ転送を行う際に前記転送終了パラメータが真である場合には次の転送動作を中断する手段を含むことを特徴とする。
【0021】
この態様によれば、テーブルデータが転送終了パラメータを含む。そして、データ転送の際に、そのデータ転送を行うためのテーブルデータに含まれる転送終了パラメータが真である場合には、次の転送動作が中断される。このように本発明によれば、テーブルデータに転送終了パラメータを含ませるという簡易な手法でデータ転送の終了制御を実現することができる。
【0022】
また、本発明では、前記第1の外部インターフェースと前記バッファメモリとの間のデータ転送用のテーブルデータと、前記第2の外部インターフェースと前記バッファメモリとの間のデータ転送用のテーブルデータとが別々に設定されたことを特徴とする。
【0023】
この態様によれば、第1の外部インターフェース用のテーブルデータと第2の外部インターフェース用のテーブルデータとが別々に設定される。これにより第1の外部インターフェース側と第2の外部インターフェース側とで転送動作を別々に制御できることになる。例えば、テーブルデータに転送数単位選択パラメータを含ませた場合には、第1の外部インターフェース側の転送数単位と第2の外部インターフェース側の転送数単位とを異ならせることが可能となる。また、例えば、テーブルデータに転送終了パラメータを含ませた場合には、第1の外部インターフェース側の転送終了動作と、第2の外部インターフェース側の転送終了動作とを異ならせることが可能となる。
【0024】
また、発明は、外部コントローラ手段により設定された少なくとも1組以上のテーブルデータに基づいて複数の外部インターフェースの中の第1、第2の外部インターフェースの間でバッファメモリを介したデータ転送を行うための制御を行うデータ転送制御装置であって、
前記テーブルデータが、一方の外部インターフェース用のテーブルデータを複写して他方の外部インターフェース用のテーブルデータを生成することを指定する複写指定パラメータを含み、前記複写指定パラメータが真である場合には一方の外部インターフェース用のテーブルデータを複写することで生成された他方の外部インターフェース用のテーブルデータに基づいて前記バッファメモリと該他方の外部インターフェースとの間でのデータ転送を行う手段を含むことを特徴とする。
【0025】
発明によれば、テーブルデータが複写指定パラメータを含む。そして、この複写指定パラメータを真とすることにより、一方の外部インターフェース用のテーブルデータを複写して他方の外部インターフェース用のテーブルデータを生成できる。そして、この複写されたテーブルデータに基づいてバッファメモリと該他方の外部インターフェースとの間のデータ転送が行われることになる。このように本発明によれば、複写指定パラメータを用いることにより、第1、第2の外部インターフェース間でテーブルデータを共通化することが可能となる。
【0026】
また、本発明では、前記テーブルデータが、一連のテーブルデータの最後の組であることを示す転送終了パラメータと、該転送終了パラメータに基づき複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを求めるための制御パラメータとを含み、複写元である前記一方の外部インターフェース用のテーブルデータの転送終了パラメーターと制御パラメータとが共に偽である場合には複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを偽にし、複写元である前記一方の外部インターフェース用のテーブルデータの転送終了パラメーターが真であり制御パラメータが偽である場合には複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを真にする手段を含むことを特徴とする。
【0027】
この態様によれば、テーブルデータが、複写指定パラメータの他に転送終了パラメータと制御パラメータとを含む。そして、複写元の転送終了パラメータと制御パラメータが共に偽である場合には、複写先の転送終了パラメータが偽に設定され、複写元の転送終了パラメータが真で制御パラメータが偽である場合には複写先の転送終了パラメータが真に設定される。これにより一方の外部インターフェースからバッファメモリにデータを転送し、このデータをそのまま他方の外部インターフェースに転送するという動作を、複写元のテーブルデータを設定するだけで実現できることになる。即ち、この場合には、まず複写元のテーブルデータの転送終了パラメータと制御パラメータとを共に偽に設定する。このように設定しても、複写先の転送終了パラメータは偽となるため複写先の転送動作は終了しない。従って、これにより一方の外部インターフェースからバッファメモリに転送されたデータを、そのまま他方の外部インターフェースに出力すること可能となる。そして、データ転送終了時には、複写元のテーブルデータの転送終了パラメータを真とし制御パラメータを偽とする。これにより一方の外部インターフェース側のデータ転送が終了する。そして、この場合、複写先の転送終了パラメータも真となるため、他方の外部インターフェース側のデータ転送も終了させることが可能となる。
【0028】
また、本発明では、前記テーブルデータが、一連のテーブルデータの最後の組であることを示す転送終了パラメータと、該転送終了パラメータに基づき複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを求めるための制御パラメータとを含み、複写元である前記一方の外部インターフェース用のテーブルデータの転送終了パラメーターと制御パラメータとが共に真である場合には複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを偽にする手段を含むことを特徴とする。
【0029】
この態様によれば、複写元の転送終了パラメータと制御パラメータが共に真である場合には、複写先の転送終了パラメータが偽に設定される。これにより、例えば、いわゆるキャッシュ方式のデータ読み出しが可能となる。即ち、この場合には、複写元のテーブルデータの転送終了パラメータと制御パラメータとを共に真に設定する。これにより一方の外部インターフェース側のデータ転送は終了することになる。これに対して、複写先のテーブルデータの転送終了パラメータは偽になるため、他方の外部インターフェース側のデータ転送は終了しない。従って、他方の外部インターフェース側は、ヒットした他のデータブロックを読み出すことが可能となり、これによりキャッシュ方式のデータ読み出しが可能となる。
【0030】
また、本発明では、前記テーブルデータが、一連のテーブルデータの最後の組であることを示す転送終了パラメータと、該転送終了パラメータに基づき複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを求めるための制御パラメータとを含み、複写元である前記一方の外部インターフェース用のテーブルデータの転送終了パラメータが偽であり制御パラメータが真である場合には複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを真にする手段を含むことを特徴とする。
【0031】
この態様によれば、複写元の転送終了パラメータが偽であり制御パラメータが真である場合には、複写先の転送終了パラメータが真に設定される。これにより、例えば、いわゆる先読み方式のデータ読み出しが可能となる。即ち、この場合には、複写元のテーブルデータの転送終了パラメータを偽に設定し制御パラメータを真に設定する。これにより一方の外部インターフェース側のデータ転送は終了せずデータ転送が続行可能となる。これに対して、複写先のテーブルデータの転送終了パラメータは真になるため、他方の外部インターフェース側のデータ転送は終了する。従って、一方の外部インターフェース側が、隣のアドレスのデータを順次読み出すことが可能となり、これにより先読み方式のデータ読み出しが可能となる。
【0040】
また、発明に係る情報処理装置は、上記のいずれかのデータ転送制御装置と、前記第1、第2の外部インターフェースに接続される外部装置と、バッファメモリと、外部コントローラ手段とを含むことを特徴とする。
【0041】
発明によれば、第1、第2の外部インターフェースに接続される外部装置間で効率的なデータ転送が可能な情報処理装置を実現できる。
【0042】
【実施例】
以下、本発明について実施例をもとにして説明する。
1.第1の実施例
図1には、本発明の第1の実施例に係るデータ転送制御装置(以下、DTRCと略す)302及びその周辺装置からなる情報処理装置のブロック図が示される。DTRC302は、4つのインターフェース、即ちCPUインターフェース309、第1の外部インターフェース306、第2の外部インターフェース308及びバッファメモリインターフェース307を有している。CPUインターフェース309はCPU(外部コントローラ)303を接続するインターフェースであり、CPU303はDTRC302内部のレジスタを設定することによりDTRCを制御する。第1、第2の外部インターフェース306、308は外部装置を接続するインターフェースであり、外部装置との間でデータ転送を行うためのものである。具体的には第1の外部インターフェース306に接続する外部装置としてホストコンピュータ304を想定し、第2の外部インターフェース308に接続する外部装置としてディスクメモリ305を想定して以後説明を行う。バッファメモリインターフェース307はバッファメモリ301を接続するインターフェースであり、バッファメモリ301には第1、第2の外部インターフェース306、308を通じて転送されるデータが格納される。バッファメモリ301は、CPUインターフェース309を通してCPU303との間でもデータ転送が可能となっている。
【0043】
バッファメモリ301内には、テーブル領域310が設けられ、このテーブル領域310にはCPU303により少なくとも1組以上のテーブルデータが設定される。このテーブルデータは、後述するように転送の開始アドレスと、転送数と、転送数の単位を選択するための転送数単位選択パラメータとを含む。また、テーブルデータは、転送終了の制御を行う場合には転送終了パラメータを含み、テーブルデータの複写を行う場合には複写指定パラメータ、制御パラメータをも含む。そして、DTRC302内には転送数カウンタ313が設けられ、バッファメモリ301と第1、第2の外部インターフェース304、305との間において転送するデータの転送数がカウントされる。そして、DTRC302に設けられた転送数設定部314は、この転送数カウンタ313においてカウントされる転送数を設定する。この設定は以下のように行われる。即ち、転送数設定部314において、前記テーブルデータに含まれる転送数単位選択パラメータにより転送数の単位が選択される。具体的には、例えばセクタ単位なのかセグメント単位なのかの選択が行われる。そして、この選択された単位に基づいてテーブルデータに含まれる転送数が変換され、変換された転送数が転送数カウンタ313に設定される。データ転送部312は、CPU303から転送開始命令が発行されるとデータ転送を開始する。そして、この場合の転送すべきデータのアドレス範囲は、テーブルデータの中の開始アドレスと、転送数カウンタ313からのカウント結果とに基づき決められることになる。
【0044】
なお、転送終了の制御を行う場合、テーブルデータの複写を行う場合には、DTRC302はこれらの処理を実現するための手段を更に含むことになる。また、テーブルデータは上記のようにテーブル領域310に格納されているが、実際にテーブルデータで指定されるデータ転送を行う場合には、本第1の実施例ではDTRC302内にレジスタを設け、このレジスタにテーブル領域310からの該当するテーブルデータを格納して処理を実行している。更に、データ転送処理の効率化、インテリジェント化を図るためには、テーブルデータを第1、第2の外部インターフェース用に別々に設定することが望ましく、また、データ転送部312、転送数カウンタ313、転送数設定部314も第1、第2の外部インターフェース用に別々に設けることが望ましい。
【0045】
図2には、DTRC内部の詳細なブロック図の一例が示される。ここで、セグメントサイズレジスタ101は1セグメント当たりのセクタ数を設定するレジスタである。セクタサイズレジスタ102は1セクタあたりのバイト数を設定するレジスタである。コントロールレジスタ104は、転送開始時にCPUからDTRCに対して転送開始命令105、106を伝え、また転送終了時にDTRCからCPUに対して終了状態信号107、108を伝えるためのレジスタである。転送開始命令は第1の外部インターフェース306用と第2の外部インターフェース308用とで2種類ある。転送ブロック指定レジスタ109、110は、転送の開始アドレスと転送数及び後述のパラメータを含む1ブロック分のテーブルデータをデータ転送実行時に格納するためのレジスタである。
【0046】
さて、本実施例においては、テーブルデータは図3(A)に示すようなフォーマットとなっている。図3(A)において、第1バイトのビット5からビット0により転送数が設定される。また、第1バイトのビット6が転送数単位選択パラメータ(以下これをSビットと呼ぶ)であり、この値によって転送数の単位が変換される。例えばSビット=1のとき転送数はセグメント単位で指定され、Sビット=0のときセクタ単位で指定される。また、第2バイトから第4バイトで転送の開始アドレスが指定される。この例では第2、第3、第4バイトは、開始アドレスの下位、中位、上位に対応している。
【0047】
また、第1バイトのビット7は転送終了パラメータ(以下、これをEビットと呼ぶ)であり、このビットの指定によってそのテーブルデータが一連の転送動作における最後の組であることが示される。また、第4バイトのビット6は複写指定パラメータ(以下、これをCビットと呼ぶ)であり、このビットの指定によって一方のテーブルデータの他方への複写の指定が行われる。また、第4バイトのビット7は制御パラメータ(以下、これをMビットと呼ぶ)であり、このビットの指定によって上記Cビットによる複写動作が後述のように制御される。図3(C)に示すようにバッファメモリ内の下位アドレス側から順にホスト側テーブル領域、ディスク側テーブル領域が確保される。そして、テーブルデータはCPUによりこれらの領域に格納されることになる。
【0048】
乗算回路111、112は、セグメントサイズレジスタ101に格納されるセグメントサイズと転送ブロック指定レジスタ109、110に格納される転送数との乗算処理を行うものである。例えば、セグメントサイズが4で(1セグメント=4セクタとする)、転送数が10の場合は、4×10=40が出力されることになる。セレクタ113、114は、乗算回路111、112の乗算結果、転送ブロック指定レジスタ109、110に格納される転送数のどちらかを選択するものであり、Sビットが1の場合には乗算結果を、0の場合には転送ブロック指定レジスタ109、110に格納される転送数を選択することになる。本実施例によれば、このような構成とすることにより、転送数の単位を変更した場合にもセクタカウンタ115、116等を共通に使用することができ、回路の小規模化、制御の簡易化を図ることができる。
【0049】
セクタカウンタ115、116はデータ転送時の転送セクタ数をカウントするものであり、1セクタ分転送されるごとに−1される。セクタサイズカウンタ117、118はデータ転送時の転送バイト数をカウントするものであり、1バイト転送されるごとに−1される。アドレスカウンタ119、120はデータ転送時のバッファメモリアドレスを指定するものであり、1バイト転送されるごとに+1される。テーブルライトアドレスカウンタ121、122はCPUからテーブル領域へテーブルを設定するときにテーブルアドレスを出力するものであり、テーブル領域に1バイト書かれるたびに+1される。なお、このテーブルライトアドレスカウンタの出力は後述するテーブル複写時にも使用される。テーブルリードアドレスカウンタ123、124はバッファメモリ内のテーブル領域に格納されたテーブルデータを転送ブロック指定レジスタ109、110にロードするときに使用されるものであり、1バイトロードするごとに+1される。アドレスセレクタ125は調停回路126の指示に応じてデータアドレスかテーブルリードアドレスかテーブルライトアドレスかを選択するものである。タイミング発生回路127は、バッファメモリの読み出し、書き込みに必要なタイミング信号を発生させるものである。バスセレクタ128は調停回路126の指示に応じてテーブルデータか転送データかを選択するものである。
【0050】
調停回路126は2つの転送制御回路129、130からの転送要求の競合状態を調整するものであり最も優先度の高い要求を許可し各部の制御を行うものである。即ち、本実施例では、バッファメモリには、第1の外部インターフェース用のテーブルデータ及び実際に転送するデータ、並びに、第2の外部インターフェース用のテーブルデータ及び実際に転送するデータというように、4種類のデータが格納されている。そして、これらの4種類のデータに対してバッファメモリは1つであり、これらのデータへのアクセスが競合した場合にこれを調停する手段が必要となる。そのために、本実施例では、バッファメモリの共有化手段として、調停回路126が設けられている。
【0051】
転送制御回路129、130は、データ転送時に必要となる種々のタイミングを発生させるものであり、以下に述べるような動作を行う。
【0052】
はじめに、第1の外部インターフェース306側についてのみ転送動作を行うものとする。この場合には、CPUによりホスト側テーブル領域にテーブルデータが設定される。ここでは、転送数はセグメント単位で指定されるものとし、この場合にはSビットは1にセットされる。セグメントサイズレジスタ102にはあらかじめ1セグメントあたりのセクタ数がセットされており、ここでは2となっているものとする。またセクタサイズは8バイトとする。CPUがテーブルデータを設定した時点でSビットおよび転送数は確定する。そのため乗算回路111を通して乗算結果もすぐに出力される。この場合、Sビットは1であるのでセレクタ113は乗算回路111の出力を選択することになる。
【0053】
次に、CPUがコントロールレジスタ104に転送開始命令を送ることによって転送制御回路129の動作が開始する。図4には、転送制御回路129の状態遷移図が示される。図4に示すように、転送制御回路129の状態は以下のように遷移する。
状態1:CPUからの開始命令を待っている状態である。開始命令がくるとテーブルデータをロードするために状態2へ移る。
状態2:ホスト側テーブル領域に格納されているテーブルデータを転送ブロック指定レジスタ109にロードする。本実施例では転送ブロック指定レジスタ109の容量が1テーブルデータ分しかないので、1テーブルデータをロードしたところで状態3へ移る。なお、状態2の時点で転送ブロック指定レジスタ109に格納されているテーブルデータが存在しないときは、新たなテーブルデータか格納されるまでこの状態に留まることになる。
状態3:ロードしたテーブルデータを基にしてデータ転送を行う。この場合、本実施例では図5(A)のタイミング図に示すようなタイミング信号を発生してカウンタを制御している。なお、図5(B)には、サイズカウンタ値が8から0に変化する時の詳細なタイミング図が示され、図5(C)には、サイズカウンタ値が6の時のREQ信号、ACK信号等の詳細なタイミング図が示される。
【0054】
図5(A)の時刻t1に示すように、転送制御回路129は、まず、セクタカウンタ115、セクタサイズカウンタ117及びアドレスカウンタ119へ入力されるロード信号を真にしてカウンタの初期値をロードする。具体的には、アドレスカウンタ119には0がロードされ、セクタカウンタ115には2がロードされ、セクタサイズカウンタ117には8がロードされる。その後、第1の外部インターフェース306からのREQ信号に応じてタイミング発生回路127が動作し、1バイトのデータの転送が行われる。そして、図5(B)の時刻t2に示すように、1バイトのデータ転送後、セクタサイズカウンタ117をカウンタイネーブルし、セクタサイズカウンタ値を−1する。これによりセクタサイズカウンタ値は7になる。そして、これと同時にアドレスカウンタ119もカウンタイネーブルし、アドレスカウンタ値を+1して、アドレスカウンタ値を0から1に更新する。その後、REQ信号に対応するACK信号を第1の外部インターフェース306に対して返す。以下同様にバイト転送を行い、セクタサイズカウンタ値が0になると、図5(A)の時刻t3に示すように転送制御回路129はセクタカウンタをカウンタイネーブルし、セクタカウンタ値を−1して、セクタカウンタ値を2から1に更新する。ここでもしセクタカウンタ値が0でなければ、図5(A)の時刻t4に示すように、セクタサイズカウンタ117に入力されるロード信号を真にし、上記の動作を繰り返す。もしセクタカウンタ値が0であれば、図5(A)の時刻t5に示すように、このテーブルデータについての転送を終了し、図4における状態4へ移る。
状態4:これは後で述べるテーブルデータの複写動作である。ここでは何もせず、無条件で状態5へ移るとする。
【0055】
このようにして、本実施例では、テーブルデータにSビットを設けることにより、転送数の単位をセクタ単位とするかセグメント単位とするかの選択が可能となる。ディスクメモリ装置のようなアクセス速度の遅い記憶装置では、見かけのアクセス速度を向上させるために記憶装置側でキャッシュメモリを持つことが多い。この場合、キャッシュメモリのデータ管理単位としては、セクタよりもむしろいくつかのセクタのあつまりであるセグメントを管理単位としたほうが全体としての効率が上がることが多い。したがって、データ転送自体もセグメントを単位として行われる可能性が非常に高いので、本実施例のようにセグメント単位で転送数を指定できるしくみを用意すれば、CPUから指定する管理情報量が少なくてすむことになる。
【0056】
一方、ホスト側から要求されるデータブロックはあくまでセクタ単位であり、しかもそれがセグメント境界に一致している保証はない。図6(A)〜(C)に示すようにセクタの並びとセグメントの並びとの対応は3種類が考えられる。図6(A)には、転送要求セクタが1セグメントの途中から始まる場合が示される。図6(B)には、転送要求セクタの始まりがセグメントの開始に一致している場合、開始セグメントと終了セグメントを除く中間のセグメントの場合及び終了セクタが1セグメントの終了に一致している場合が示される。図6(C)には、転送要求セクタが1セグメントの途中で終わる場合が示される。図6(A)、図6(C)のような場合にはSビットを0としてセクタ単位で指定を行うことになる。一方、図6(B)のような場合は、Sビットを1としてセグメント単位で指定を行うことになる。このように、本実施例によれば、Sビットにより転送数の単位を転送データの状態に応じて任意に選択できるため、データ転送の効率を非常に高めることができる。
【0057】
次に、転送終了パラメータであるEビットについて説明する。例えば、今、図3(C)に示すようにホスト側のテーブル領域に3ブロック分のテーブルデータが格納され、3番目のテーブルデータのみEビットが1にセットされていたとする。転送制御回路129は図4の状態5の終了判断でEビットの検査を行い、もしEビットが1にセットされていれば状態1へ戻り転送動作を終了する。一方、Eビットが0であれば状態2へ戻り次のテーブルデータをロードし、状態3以下の動作を繰り返すことになる。従って、図3(C)に示すようなテーブルデータであるときには、3番目のテーブルデータのみEビットが1に設定されているため、転送制御回路129は次のような状態遷移を経て転送動作を終了することになる。
【0058】
状態1−状態2−状態3−状態4−状態5−状態2−状態3−状態4−状態5−状態2−状態3−状態4−状態5−状態1
このように、本実施例では、Eビットを設けることにより、従来のDMC−2のようにキューバッファが空になった場合にデータ転送を終了させるというような手段を設ける必要がなくなる。また、このEビットをホスト側とディスク側に独立して設けることが可能となるため、ホスト側とディスク側のデータ転送の終了の制御をお互いに影響されずに独立に行うことが可能となる。
【0059】
次に複写指定パラメータ(Cビット)及び制御パラメータ(Mビット)について説明する。データ転送動作の一例としてディスク側からホスト側へとデータ転送を行う場合を考える。始めにディスク側のテーブル領域に対して、CPUインターフェース309を通して、例えば図7(A)に示すような3つのテーブルデータ410、412、414が書き込まれたとする。そして、その後、ディスク側・ホスト側ともにコントロールレジスタ104を通してデータの転送開始命令が出されたとする。この場合、ホスト側はテーブル領域にまだ情報がないため、転送動作を保留する(図4の状態2)。これに対して、ディスク側には既にテーブルデータがあるので最初のテーブルデータを転送ブロック指定レジスタ110にロードする。テーブルデータのロード後、テーブルデータ内の情報がアドレスカウンタ120、セクタカウンタ116に、セクタサイズレジスタ102の内容がセクタサイズカウンタ118にロードされ、実際のデータ転送動作が開始される(図4の状態3)。そして、セクタカウンタ116のカウンタ値が0になるまで、ディスクからバッファメモリへとデータが蓄えられる。
【0060】
セクタカウンタ116のカウンタ値が0になると、図7(A)に示すようにテーブルデータ410ではCビットが1にセットされているため、ディスク側のテーブルデータ410を複写してホスト側のテーブルデータ420を生成する動作が行われる(図4の状態4)。転送ブロック指定レジスタ110内には、いまデータ転送が終わったばかりのテーブルデータ410がすでに存在ずる。従って、転送制御回路130が調停回路126に複写要求を出すと、調停回路126はアドレスセレクタ125に対してテーブルライトアドレスカウンタ121を選択させ、バスセレクタ128に対して転送ブロック指定レジスタ110を選択させる。そして、調停回路126はタイミング発生回路127を起動し、転送ブロック指定レジスタ110の内容をホスト側のテーブル領域に転送する。この結果ホスト側にもテーブルデータ420が存在することになり、このため、ホスト側の転送動作も開始する(図4の状態3)。一方、ディスク側には次のテーブルデータ412がロードされ引き続きデータ転送が行われることになる(図4の状態2、状態3)。ホスト側では、複写されたテーブルデータ420に基づいてディスク側と同様の手順でデータ転送動作が行われる。1つのテーブルデータ420についてのデータ転送が終了すると次のテーブルデータ422が生成されるまでデータ転送が中断される。このようにしてディスク側のデータがホスト側に転送され、3つめのテーブルデータ414によるデータ転送がディスク側で終了すると状態5へ移る。このとき、テーブルデータ414では図7(A)に示すようにEビットが1にセットされているため、転送制御回路130は転送動作を終了することになる(図4の状態1)。
【0061】
さて、複写元のEビットとMビットとは図3(B)に示すように排他的論理和回路605の入力となっており、排他的論理和回路605の出力が複写先のEビットとなっている。ディスク側のテーブルデータ410のMビットは図7(A)に示すように0であるため、Eビットはそのまま複写され、ホスト側のテーブルデータ420のEビットも0となる。また、ディスク側の3つめのテーブル414のMビットも0であるため、Eビットは1にセットされた状態でホスト側に複写され、ホスト側のテーブルデータ424のEビットも1となる。従って、ホスト側においても、3つめのテーブルデータ424についてのデータ転送が終了すると、テーブルデータ424のEビットが1にセットされていることによりデータ転送が終了することになる。本実施例によれば、このような複写機能を持たせることにより、CPUインターフェース309からディスク側のみにテーブルデータを書き込むだけでディスクからホストへのデータ転送が容易に実現できる。全く、同様にしてホスト側からディスク側へのデータ転送も容易に実現できる。
【0062】
なお、図7(A)から明らかなように、Cビットについては複写先には転送されず、複写元のテーブルデータのCビットが1であっても複写先のテーブルデータのCビットは1にならない。複写先のCビットが1になってしまうと、複写先から複写元への複写が再度行われることになり、不都合が生じるからである。
【0063】
以上の図7(A)に示す転送形態は、ディスクデータの転送領域がホストデータの転送領域に完全に重なる場合の転送形態である。即ち、この転送形態では、最後のテーブルデータ414を除くテーブルデータについてはEビット・Mビットとも0にし、Cビットを1にする。そして、最後のテーブルデータ414のみEビットを1、Mビットを0、Cビットを1にすることになる。ところがキャッシュメモリ的な使い方をする場合には、図7(B)に示すようなテーブルデータの設定を行うことになる。即ち、この場合は、3つあるデータブロックのうち始めの1ブロックのみディスクから読み出し、残りの2ブロックについてはすでにバッファメモリ内に存在している場合(ヒットした場合)に相当する。ディスク側ではテーブルデータ430を1つだけ設定し、このテーブルデータ430ではEビット・Mビット・Cビットが全て1に設定される。するとディスク側は、Eビットが1であるため1テーブルデータめでデータ転送動作を終了する。しかし、テーブルデータ430のMビットは1であり、従って、ホスト側にはEビットが複写されず、ホスト側のテーブルデータ440のEビットは0となる。この結果、テーブルデータ430についてのデータ転送動作が終了してもホスト側は終了状態とはならない。その後ヒットしているデータについては、ホスト側のみに残りの2テーブルデータ442、444が設定され、バッファメモリからホスト側へのデータ転送動作が続行されることになる。
【0064】
先読み方式を導入するには図7(C)に示すようなテーブルデータの設定となる。この先読み方式では、ディスクからはあらかじめ3ブロック分のデータを読み込みバッファメモリへ格納しておく一方、ホスト側へと転送するのは1テーブルデータめのデータブロックだけで良い。従って、この場合には、図7(C)に示すように、テーブルデータ450のみEビットを0、Mビットを1、Cビットを1に設定し、テーブルデータ452ではEビット・Mビット・Cビットを0に設定する。また、テーブルデータ454では、Eビットを1、Mビット・Cビットを0に設定する。ディスク側転送でテーブルデータ450によるデータ転送が終了するとこのテーブルデータ450はホスト側へ複写され、テーブルデータ460が生成される。この際、図3(B)に示す排他的論理和回路605によってEビットは反転し、Eビットが1となった状態で複写される。従って、ホスト側では、このテーブルデータ460は最後のものと判断される。この結果、2番目、3番目のデータブロックについては、ディスクからバッファメモリに格納されるだけで、ホスト側には転送されずにデータ転送動作が終了することになる。
【0065】
このように、本実施例によれば、MビットをEビットと組み合わせて使用することにより種々のデータ転送方式を実現できる。ここでは、ホスト側からみたデータリード動作のみについて説明したが、データライト動作についても同様のデータ転送方式を実現できることが容易に理解できるであろう。本実施例ではテーブル領域が外部のバッファメモリ内にあるものとして説明したが、これは本発明の応用範囲を狭めるものではなくテーブル領域がLSI内部に存在しても同様の機能を実現できる。
【0066】
2.第2の実施例
第2の実施例は、SCSIコントローラとDMA転送制御回路とを1チップ構成にした場合の実施例である。図8には、本第2の実施例のブロック図の一例が示される。
【0067】
さて、図9(A)には、例えばSCSIコントローラ320のLSIとDMA転送制御回路330のLSIの2チップでデータ転送制御装置を構成する場合の例が示される。この場合、SCSIコントローラ320は、FIFO322、FIFO制御回路324の他に転送数カウンタ326を有しており、また、DMA転送制御回路330も、転送数カウンタ332を有している。即ち、図9(A)に示す構成では、各々のLSIに転送数カウンタ326、332が存在し、各々のLSI毎に転送終了を検出することになる。
【0068】
これに対して、図9(B)には、SCSIコントローラ340とDMA転送制御回路350を1チップのLSI338上に形成した場合の例が示される。この場合、回路規模の縮小化、あるいは、プログラム開発時のバグ発生防止を図るために、図9(B)に示すように、転送数カウンタ352をDMA転送制御回路350側のみに設け、SCSIコントローラ340側には設けない構成とすることが望ましい。しかし、このような構成とした場合、DMA転送制御回路350側では転送数カウンタ352により転送終了を検出できるが、SCSIコントローラ340側では、転送数カウンタがないため転送終了を検出できない。そこで、本第2の実施例では、DMA転送制御回路350からSCSIコントローラ340に対して最後の転送データであることを示す終了信号を出力する方式を採用している。このように、最終データの転送と同時に終了信号を出力することによって、SCSIコントローラ側も転送終了を知ることができ、とりあえず動作を終えることができる。
【0069】
ところが、このように終了信号を出力する構成としても、次のような問題点が残る場合がある。即ち、このLSI338から外部にSDATAを出力する場合はあまり問題にならないが、外部からSDATAを入力する場合、FIFO342が存在するため、実際の転送数よりも余計にSDATA入力されるという事態が生じる可能性がある。このような事態が生じると、相手側の装置に混乱を与え、システム全体を誤動作させる可能性が生じる。なお、FIFOとはFirstIn First Outメモリのことであり、入力された順にデータが出力されるメモリを意味し、SCSIデータバスとDMA転送制御回路間の転送速度の差を一時的に吸収するために使用されるものである。
【0070】
さて、SCSIコントローラ内にFIFOが存在する理由は以下の通りである。SSCSIの転送方式には非同期モードと同期モードの2種類がある。ここで非同期モードとは、いわゆるハンドシェーク方式のモードであり、SREQ信号とSACK信号のタイミングコントロールによって1バイトずつデータを転送するモードである。従って、非同期モードのときには必ずしもFIFOは必要ない。これに対して、同期モードとは、SREQ信号(またはSACK信号)に同期してデータ転送が行われる方式であり、SACK信号(またはSREQ信号)とのハンドシェークは行われず、一方的にデータが送られる。この同期モードによれば、ハンドシェークに伴う信号伝搬のディレイを吸収することができ、非同期よりも高速な転送速度が可能となる。ただ、一方的にとはいっても限界が存在し、その限度を決定するものがFIFOの記憶容量になる。転送開始から数えてそれまでのSREQパルスの発生回数からSACKパルスの発生回数を引いたものをオフセットカウンタ値と呼び、オフセットカウンタ値の最大値がFIFOメモリーの記憶容量に相当する。そして、オフセットカウンタ値が多ければ多いほど、平均的な転送速度は上がる。つまり、FIFOの記憶容量が多ければ多いほど転送速度を向上させることができる。
【0071】
いずれにしても同期モードを実現するには、FIFOが必要になる。一方、このFIFOが存在するおかげで、単純にDMA転送制御回路からSCSIコントローラに対して終了信号を出力するだけではSCSIのデータ転送を正確に終わらせることができない可能性が生じる。即ち、前述した余計にデータを入力してしまうこと以外にも、余計なSREQ信号を発生する、あるいは、SACK信号を全て返す前にデータ転送を終了してしまうというような事態が生じることも考えられる。このようなことを防止し、正確にデータ転送を終了させるために、本第2の実施例では、残り転送数(転送数カウンタ値)がFIFOの記憶容量に等しくなったことを知らせる信号(終了接近信号)、FIFOの中味が空になった(FIFOの空き容量がFIFO記憶容量に等しくなった)ことを知らせる信号(エンプティ信号)、FIFOの記憶容量がいっぱいになったことを知らせる信号(フル信号)を生成することとした。また、オフセットカウント値とFIFOの空き容量値を加算する手段、オフセットカウント値とFIFOの空き容量値とを比較する手段を設けることとした。そして、本第2の実施例によれば、これらの信号を生成し、これらの手段を設けるために必要な回路の規模は、転送数カウンタの回路規模より少なくすることが可能となり、これにより回路全体の規模を小さくすることが可能となる。特に、この効果は、転送数カウンタのビット数が増えるほど大きく、将来的にバッファ容量が増え、より転送数が増加した場合に、本第2の実施例の構成は大きな優位点をもつことになる。
【0072】
次に、本第2の実施例の詳細な構成の一例について図8を用いて説明する。図8において、DMA転送制御回路(データ転送制御手段)201は前述の第1の実施例で述べたDTRCと同様にブロックデータ転送を実現できる回路である。SCSIハンドシェイク回路(インターフェース制御手段)205はSREQ信号206とSACK信号207とのハンドシェイクによってデータの転送を制御する機能を有する。例えば、本LSIがターゲットモードでデータインで動作したとき、SREQは出力、SACKは入力となり、データはFIFO202より外部に出力される。また、本LSIがターゲットモードでデータアウトで動作するときはFIFO202へデータが入力されることになる。オフセットカウンタ208は同期モードの時に必要となるもので、SREQパルスの発生回数とSACKパルスの発生回数の差を計算する。FIFO制御回路209はDMA転送制御回路201およびSCSIハンドシェイク回路205からのFIFO202へのアクセスを制御するためのものである。また、FIFO制御回路209は、FIFO202内のデータ数をカウントするカウンタを有しており、カウンタ値が0になったことを示すエンプティ信号210とFIFO記憶容量(本実施例では16バイト)がいっぱいになったことを示すフル信号211とを出力し、どちらもDMA転送制御回路201とSCSIハンドシェイク回路205に出力される。加算回路212はFIFO制御回路209内のFIFOカウンタ値とオフセットカウント値を加算するものであり、その出力214がSCSIハンドシェイク回路205に入力される。比較回路213はFIFOカウンタ値とオフセットカウント値を大小比較するものであり、その出力215がSCSIハンドシェイク回路205に入力される。また、DMA転送制御回路201からは、DMA制御回路内の転送数カウンタ値が0になったことを示す終了信号216と、転送数カウンタ値がFIFO記憶容量の大きさに達したことを示す終了接近信号217とが出力され、SCSIハンドシェイク回路205へと入力される。
【0073】
次に本第2の実施例の動作について説明する。本第2の実施例におけるデータの転送形態には、非同期か同期か、イニシエータかターゲットか、データインかデータアウトかによって8通りの組み合わせが存在する。以下、これらの転送形態について順に説明する。
【0074】
(1)非同期イニシエータデータアウトの場合
この場合、図10に示すように、本LSIからSCSIバスへとデータが出力される。この場合のSCSIハンドシェイク側の状態遷移とDMA転送制御回路側の状態遷移を図11に示す。CPUからの転送開始コマンドによってDMA転送制御回路・SCSIハンドシェイク回路はともに実行状態となる。
【0075】
(1)−1 DMA側の状態遷移
状態1:開始命令待ち。開始命令がくると状態2へ。
状態2:テーブルデータロード。テーブルデータをロードした後、状態3へ。
状態3:FIFOの状態確認。FIFOがフルでなければ状態4へ。フルであれば状態3に留まる。即ち、この場合、図10に示すようにデータはバッファメモリ(DMA転送制御回路)からFIFOへと出力されるが、FIFOがフルである場合にはデータをFIFOに入力することができない。このため、バッファメモリからデータを出力するにあたって、FIFOがフルか否かの判断が必要になる。なお、FIFOがフルか否かは、図10に示すようにFIFO制御回路からのフル信号により判断する。
状態4:状態3でFIFOがフルでないと判断されるとバッファメモリからFIFOにデータが転送される。
状態5:終了判断。転送数カウンタ値が0でなければ状態3へ戻り、転送数カウンタ値が0になるまで状態3〜5を繰り返す。転送数カウンタ値が0でEビットが1にセットされていればデータ転送が終了したと判断され、終了信号をSCSIハンドシェーク回路側に出力し(図10参照)、状態1へ戻る。一方、Eビットが0の場合には、次のテーブルデータがまだ存在すると判断され、状態2へ戻り次のテーブルデータをロードする。なお、本第2の実施例における転送数カウンタとは、例えば第1の実施例におけるセクタカウンタ及びセクタサイズカウンタがこれに相当する。
【0076】
(1)−2 SCSI側の状態遷移
状態1:開始命令待ち。開始命令がくると状態2へ。
状態2:FIFOの状態確認。FIFOがエンプティでなければ状態3へ。エンプティであれば状態2に留まる。即ち、この場合にはデータはFIFOからSCSIバスへと出力されるが、FIFOがエンプティである場合にはFIFOからデータを出力することができない。このため、FIFOからデータを出力するにあたって、FIFOがエンプティか否かの判断が必要となる。なお、FIFOがエンプティか否かの判断はFIFO制御回路からのエンプティ信号で判断する。
状態3:非同期モードであるため、SCSIバス上のターゲットからのSREQ信号に基づいてFIFO内のデータをSACK信号とともにSCSIバスへ出力する。
状態4:終了判断。FIFOがエンプティであり、かつ、DMA転送制御回路から終了信号が入力されたならば、FIFOにもバッファメモリにも転送データが無いと判断されるため、転送動作を終了し状態1へ戻る。そうでなければ、状態2へ戻り、状態2〜4を繰り返す。
【0077】
(2)非同期イニシエータデータインの場合
この場合、図12に示すようにSCSIバスから本LSIへとデータが入力される。図13に状態遷移図を示す。CPUからの転送開始コマンドによってDMA転送制御回路・SCSIハンドシェイク回路はともに実行状態となる。
【0078】
(2)−1 DMA側の状態遷移
状態1:開始命令待ち。開始命令がくると状態2へ。
状態2:テーブルデータロード。テーブルデータロード後、状態3へ。
状態3:FIFOの状態確認。FIFOがエンプティでなければ状態4へ。エンプティであれば状態3に留まる。即ち、この場合、データはFIFOからバッファメモリへと入力されるが、FIFOがエンプティであるとFIFOがデータを出力できない。そこで、FIFO制御回路からのエンプティ信号(図12参照)に基づいてFIFOがエンプティか否かを判断することになる。
状態4:状態3でFIFOがエンプティでないと判断されるとFIFOからバッファメモリにデータが転送される。
状態5:終了接近判断。転送数カウンタ値が16(=FIFO記憶容量)でなければ、状態3へ戻り、転送数カウンタ値が16になるまで状態3〜5を繰り返す。転送数カウンタ値が16であれば、転送数カウンタ値がFIFO記憶容量に等しくなったと判断され、データ転送の終了が接近したことを示す終了接近信号をSCSIハンドシェーク回路側に出力するとともに状態6へ移る。
状態6:FIFO状態判断。FIFOがフルなら状態7へ。フルでなければ状態6に留まる。
状態7:状態6でFIFOがフルと判断されると、FIFOからバッファメモリにデータが転送される。即ち、状態5で終了接近信号を出力した後、FIFOがフルになるまで待って(状態6)、フルになった後にFIFOからバッファメモリにデータを転送することになる。
状態8:終了判断。転送数カウンタ値が0でEビットが1であれば、データ転送が終了したと判断され状態1へ戻る。一方、転送数カウンタ値が0であってもEビットが0である場合には、次のテーブルデータが存在すると判断され、状態2へ戻り次のテーブルデータをロードする。転送数カウンタ値が0でなければ状態6へ戻り、転送数カウンタ値が0になるまで状態6〜8を繰り返す。
【0079】
(2)−2 SCSI側の状態遷移
状態1:開始命令待ち。開始命令がくると状態2へ。
状態2:FIFOの状態確認。FIFOがフルでなければ状態3へ。フルであれば状態2に留まる。即ち、この場合、データはSCSIバスからFIFOへと入力されるが、FIFOがフルであるとFIFOにデータを入力できない。そこで、FIFO制御回路からのフル信号(図12参照)に基づいてFIFOがフルか否かを判断することになる。
状態3:非同期モードであるため、SCSIバス上のターゲットからのSREQ信号に基づいてSCSIバス上のデータをFIFOに入力する。
状態4:終了接近判断。DMA転送制御回路から終了接近信号が入力されたならば状態5へ。そうでなければ、状態2へ戻り、状態2〜4を繰り返す。
状態5:FIFO状態判断。FIFOがフルだったら転送終了とし、状態1へ戻る。FIFOがフルでなければ状態6へ。
状態6:SREQ信号に基づいてSCSIバス上のデータをFIFOに転送する。転送後、状態5へ戻り、FIFOがフルになるまで状態5、6を繰り返す。
【0080】
以上のように終了接近信号を用いることによりFIFOに余計なデータが入力されることが防止される。即ち、DMA転送制御回路は、転送数カウンタ値がFIFOの記憶容量(=16)に等しくなると終了接近信号をSCSIハンドシェーク回路に出力するとともにFIFOがフルになるのを待つ。一方、SCSIハンドシェーク回路は、終了接近信号が入力されると、FIFOがフルになるまでデータをSCSIバスからFIFOに入力する。そして、FIFOがフルになるとSCSIハンドシェーク回路はデータ転送を終了し、余計なデータがFIFOに入力されることを防止している。一方、DMA転送制御回路は、FIFOがフルになった段階で、FIFOからバッファメモリへのデータ転送を再開し、これにより終了接近信号を出力した後の16個のデータを適正にバッファメモリに転送することが可能となる。
【0081】
(3)非同期ターゲットデータアウトの場合
SCSIにおいてはイニシエータからターゲットへデータが転送される場合をデータアウトと呼ぶため、この場合、図14に示すようにSCSIバスからターゲットである本LSIへとデータが入力されることになる。CPUからの転送開始コマンドによってDMA転送制御回路・SCSIハンドシェイク回路はともに実行状態となる。処理の流れは上述の(2)、即ち非同期イニシエータデータインと同様となるが、図12と図14を比較すれば明らかなように、SREQ信号が出力となりSACK信号が入力となるところが(2)と異なる。この理由は、SCSIにおいては、SREQ信号はターゲット側が出力し、SACK信号はイニシエータ側が出力するからである。
【0082】
(4)非同期ターゲットデータインの場合
SCSIにおいてはターゲットからイニシエータへデータが転送される場合をデータインと呼ぶため、この場合、図15に示すように本LSIからSCSIバスへとデータが出力される。CPUからの転送開始コマンドによってDMA転送制御回路・SCSIハンドシェイク回路はともに実行状態となる。処理の流れは上述の(1)、即ち非同期イニシエータデータアウトと同様であるが、SREQ信号が出力となりSACK信号が入力となるところが(1)と異なる。
【0083】
(5)同期イニシエータデータアウトの場合
この場合、図16に示すように、本LSIからSCSIバスへとデータが出力される。また、この場合は同期転送であり、あらかじめ定められた最大オフセットを超えない範囲でSREQパルスが先行して出力される。従って、このことを考慮した転送制御を行わなければならない。図17に各状態遷移図を示す。CPUからの転送開始コマンドによってDMA転送制御回路・SCSIハンドシェイク回路はともに実行状態となる。
【0084】
(5)−1 DMA側の状態遷移
DMA側の状態遷移は、上述の(1)の場合と同様であり(図11及び図17を比較参照)、従って、説明を省略する。
【0085】
(5)−2 SCSI側の状態遷移
状態1:開始命令待ち。開始命令がくると状態2へ。
状態2:オフセットカウンタチェックおよびFIFO状態判断。
【0086】
オフセットカウンタ値(=SREQ−SACK)が0より大きくかつFIFOがエンプティでなければ状態3へ。そうでなければ状態2に留まる。
状態3:FIFOからSCSIへの転送実行。
【0087】
SACKパルスに同期してデータをSCSIバスへ出力する。このとき常にオフセットカウンタは動作しており、自分の出力したSACKパルスによってオフセットカウンタ値が−1される。SREQはSCSIバス上のターゲットから一方的に入力される。従って、本LSIはSACKのパルス発生数がSREQのパルス発生数を超えない範囲でSACKを出力しデータ転送を行えばよいことになる。そこで、状態2でオフセットカウンタ値(=SREQ−SACK)>0か否かを判断し、オフセットカウンタ値>0となる範囲で、状態3でSACKを出力している。
状態4:終了判断。終了信号がDMA転送制御回路から出力されると状態5へ。そうでなければ状態2へ戻り、状態2〜4を繰り返す。
状態5:オフセットカウンタチェックおよびFIFO状態判断。
【0088】
FIFOがエンプティでなければ状態6へ。オフセットカウンタ値が0でかつFIFOがエンプティならば状態1へ戻る。それ以外は状態5に留まる。これにより、オフセットカウンタ値が0にならない限りデータ転送が終了しないことが保証される。この結果、ターゲットからのSREQに対応したSACKを全てターゲットに返す前にデータ転送が終了してしまうというような事態を防止できる。
状態6:FIFOからSCSIへの転送実行。
【0089】
SACKパルスに同期してデータをSCSIバスへ出力する。そして、FIFOがエンプティになるまで状態5、6を繰り返す。このとき常にオフセットカウンタは動作しており、自分の出力したSACKパルスによってオフセットカウンタ値が−1される。
【0090】
(6)同期イニシエータデータインの場合
この場合、図18に示すようにSCSIバスから本LSIへとデータが入力される。図19に状態遷移図を示す。CPUからの転送開始コマンドによってDMA転送制御回路・SCSIハンドシェイク回路はともに実行状態となる。
【0091】
(6)−1 DMA側の状態遷移
DMA側の状態遷移は、上述の(2)の場合と同様であり(図13及び図19を比較参照)、従って、説明を省略する。
【0092】
(6)−2 SCSI側の状態遷移
状態1:開始命令待ち。開始命令がくると状態2へ。
状態2:オフセットカウンタチェックおよびFIFO状態判断。
【0093】
オフセットカウンタ値とFIFOカウンタ値(FIFO内データ数)が等しくなければ状態3へ。そうでなければ状態2に留まる。この場合のオフセットカウンタ値とFIFOカウンタ値の比較は図18に示すように比較回路213により行われる。
状態3:SACKパルスの出力。
【0094】
データは相手のSREQパルスに同期してすでにFIFO内に取り込まれているため、ここではSACKを出力するだけである。これによりオフセットカウンタ値は−1される。以上の状態2と状態3の制御により、オフセットカウンタ値(=SREQ−SACK)が常にFIFOカウンタ値に等しくなるように制御される。即ち、SCSIバス上のターゲットからデータを受け取ってもすぐにはSACKを返さず、FIFO内のデータがバッファメモリに転送されFIFO内データ数が減少し、FIFO内のデータ数がオフセットカウンタ値と等しくなってからSACKを返すようにしている。このように制御することで、SCSIハンドシェーク回路とDMA転送制御回路との同期をとることが可能となる。
状態4:終了接近判断。終了接近信号が来ていると状態5へ。そうでなければ状態2へ戻る。
状態5:オフセットカウンタチェックおよびFIFO状態判断。
【0095】
オフセットカウンタが0でなく、かつFIFOがフルでなければ状態6へ。
オフセットカウンタが0で、FIFOがフルならば転送終了であり状態1へ戻る。それ以外は、状態5に留まる。
状態6:SACKパルスの出力。これによりオフセットカウンタ値が−1され、オフセットカウンタ値が0になるまで状態5、6が繰り返される。
【0096】
以上のように終了接近信号を用いることによりFIFOに余計なデータが入力されるのが防止される。この場合、余計なデータが確実に入力されないようにするためには、SCSIハンドシェーク回路とDMA転送制御回路との間の同期がとれている必要があるが、これは前述の状態2、3の制御により保証される。
【0097】
(7)同期ターゲットデータアウトの場合
この場合、図20に示すようにSCSIバスから本LSIへとデータが入力される。図21に各状態遷移図を示す。CPUからの転送開始コマンドによってDMA転送制御回路、SCSIハンドシェイク回路はともに実行状態となる。
【0098】
(7)−1 DMA側の状態遷移
DMA側の状態遷移は、上述の(2)の場合と同様であり(図13及び図21を比較参照)、従って、説明を省略する。
【0099】
(7)−2 SCSI側の状態遷移
状態1:開始命令待ち。開始命令がくると状態2へ。
状態2:オフセットカウンタチェックおよびFIFO状態判断。
【0100】
オフセットカウンタ値とFIFOカウンタ値の和が16を超えてなければ状態3へ。そうでなければ状態2に留まる。このような制御を行うのは、以下の理由による。即ち、オフセットカウンタ値はこれまで出力したSREQパルス数からSACKパルス数を引いた数であり、SCSIバス上のイニシエータからはこのオフセットカウンタ値に等しい個数のデータがすぐにでも来ることを意味している。一方、FIFOカウンタ値は、実際に現在FIFO内に存在するデータ数を意味する。従って、これからすぐに来るであろうデータ数(オフセットカウンタ値)と、FIFO内のデータ数(FIFOカウンタ値)との和が、FIFOの記憶容量である16を超えないように、SREQの出力を制御してやる必要が生じることになる。この場合のオフセットカウンタ値とFIFOカウンタ値の加算は図20に示すように加算回路212により行われる。
状態3:SREQパルスを出力する。データは相手のSACKに同期して取り込まれることになるのでここではSREQを出すだけであるこれによりオフセットカウンタ値は+1される。
状態4:終了接近判断。終了接近信号が来ていると状態5へ。そうでなければ状態2へ戻る。
状態5:オフセットカウンタチェックおよびFIFO状態判断。
【0101】
FIFOがフルだったら終了とし、状態1へ戻る。フルでなくオフセットカウンタ値とFIFOカウンタ値の和が16を超えてなければ状態6へ。それ以外は状態5に留まる。
状態6:SREQパルスの出力。これによりオフセットカウンタ値が+1され、その後に状態5に戻る。
【0102】
(8)同期ターゲットデータインの場合
この場合、図22に示すように、本LSIからSCSIバスへとデータが出力される。図23に状態遷移図を示す。CPUからの転送開始命令によってDMA転送制御回路・SCSIハンドシェイク回路はともに実行状態となる。
【0103】
(8)−1 DMA側の状態遷移
DMA側の状態遷移は、上述の(1)の場合と同様であり(図11及び図23を比較参照)、従って、説明を省略する。
【0104】
(8)−2 SCSI側の状態遷移
状態1:開始命令待ち。開始命令がくると状態2へ。
状態2:オフセットカウンタチェックおよびFIFO状態判断。
【0105】
オフセットカウンタ値が最大オフセットカウンタ値以下でFIFOがエンプティでなければ状態3へ。そうでなければ状態2に留まる。即ち、SCSIにおいてターゲットは、オフセットカウンタ値(=SREQ−SACK)があらかじめ定められた最大オフセットカウンタ値以下となるようにSREQを出力しなければならない。従って、この状態2の判断が必要となる。
状態3:FIFOからSCSIへの転送実行。
【0106】
SREQパルスを出力すると同時にFIFOデータをSCSIバスへ出力する。
状態4:終了判断。終了信号が来ていると状態5へ。そうでなければ状態2へ戻る。
状態5:オフセットカウンタチェックおよびFIFO状態判断。
【0107】
FIFOがエンプティでかつオフセットカウンタが0であれば終了とし、状態1へ戻る。FIFOがエンプティでなければ状態6へ。それ以外は状態5に留まる。
状態6:FIFOからSCSIへの転送実行。
【0108】
SREQパルスを出力すると同時にFIFOデータをSCSIバスへ出力し、状態5へ戻る。
(9)まとめ
以上の各モードの動作をまとめると以下のようになる。
【0109】
(A)DMA転送制御回路側の処理は、SCSIハンドシェーク回路側の転送が同期か非同期かには関係せず、以下のように行われる。
【0110】
即ち、バッファメモリからFIFOへデータを転送する場合には、FIFOがフルでない限りデータを転送し、転送数カウンタ値が0になったところで動作を終了する。また、FIFOからバッファメモリへデータを転送する場合には、FIFOがエンプティでない限りデータを転送し、転送数カウンタ値がFIFOの記憶容量に等しくなったところで終了接近信号を発生し、一時転送を中断する。そして、FIFOがフルになったところで転送を再開し、転送数カウンタ値が0になったところで動作を終了する。
【0111】
(B)SCSIハンドシェイク回路側の処理は各モードで分かれるものの、以下のようになる。
【0112】
即ち、FIFOからSCSIバスへデータを転送する場合の基本動作として、FIFOがエンプティでなければデータを出力する。また、終了信号が来るとFIFOがエンプティとなったところで動作を終了する。
【0113】
また、SCSIバスからFIFOへデータを転送する場合の基本動作として、FIFOがフルでなければデータを入力する。また、終了接近信号が来るとFIFOがフルになるまでデータを入力し、フルになったところで動作を終了する。
【0114】
なお、本発明は上記実施例に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。
【0115】
例えば、本実施例では第1の外部インターフェースとしてSCSIを例にとり説明したが、本発明ではこれに限らず例えばSCSI2、SCSI3等の種々のインターフェースに適用できる。
【0116】
また、転送数の単位としては、セグメント、セクタに限らず例えばクラスタ等の種々の単位が考えられる。
【0117】
また、バッファメモリを介してデータ転送を行うことができるインターフェースは2つに限らず、3以上設けることも可能である。
【0118】
また、テーブルデータをバッファメモリに格納せずにデータ転送制御装置内に格納する構成としてもかまわない。また、テーブルデータについても、このテーブルデータと実質的に同等の機能を果たすものであれば、本実施例で説明した形態のものに限られるものではない。
【0119】
【発明の効果】
請求項1の発明によれば、転送数単位選択パラメータにより転送数の単位を任意に選択することが可能となる。これにより、物理的にバッファメモリアドレスが連続しているデータブロックに関しては、より少ないテーブルデータの情報量でデータブロック指定が可能となり、CPUの処理オーバーヘッドが軽減される。特にキャッシュ方式によるデータ転送を行う場合には本発明は有効である。即ち、この場合には、一連のデータブロック列に対して先頭と最後のブロックに関しては転送数単位をセクタ単位とし、中間のブロック列に関してはセグメント単位でブロック指定をする。これにより、従来より大幅にテーブルデータの情報量を減少させることができ、より効率的なデータ転送が可能となる。
【0120】
また、請求項2の発明によれば、転送数の単位を変更した場合にも、選択手段の出力先である転送数カウント手段を共通に使用することができ、回路の小規模化、制御の簡易化を図ることができる。
【0121】
また、請求項3の発明によれば、転送ブロック指定領域が空になったときにデータ転送が終了するという従来方式に比べて以下の利点を持つことが可能となる。即ち、従来例では、転送速度が速い方の外部インターフェースでは、転送開始命令を何度も発行しなければならないという事態が生じたが、本発明によれば、このような事態が生じるのを防止でき、転送速度によらない一律な制御が可能となる。
【0122】
また、請求項4の発明によれば、第1の外部インターフェース側と第2の外部インターフェース側において、転送数単位の設定や、データ転送の終了動作を別々に制御することができ、よりインテリジェントなデータ転送制御が可能となる。
【0123】
また、請求項5の発明によれば、複写指定パラメータを用いることにより、第1、第2の外部インターフェース間でテーブルデータを共通化することが可能となる。また、この共通化されたテーブルデータは物理的には分離されているので一方の外部インターフェースの転送速度に依存して他方の外部インターフェースの転送が滞ってしまうという従来の問題は発生しない。
【0124】
また、請求項6の発明によれば、一方の外部インターフェースからバッファメモリにデータを転送し、このデータをそのまま他方の外部インターフェースに転送するという動作を、複写元のテーブルデータを設定するだけで実現することが可能となる。
【0125】
また、請求項7の発明によれば、他方の外部インターフェース側は、ヒットした他のデータブロックを読み出すことが可能となり、これによりキャッシュ方式のデータ読み出しが可能となる。
【0126】
また、請求項8の発明によれば、一方の外部インターフェース側は、読み出したデータの隣のアドレスのデータを順次読み出すことが可能となり、これにより先読み方式のデータ読み出しが可能となる。
【0127】
また、請求項9の発明によれば、転送数カウント手段をデータ転送制御手段とインターフェース制御手段とで共通化させることができる。これにより、一カ所の転送数カウント手段に転送数を設定すればよいことになり、ファームウェア開発時のバグの要因を減少させることができる。また、最大転送数を増加させた場合、転送数カウント手段の段数を増やすことになるが、本発明では転送数カウント手段が1カ所にしかないため、段数の増加による回路規模の増大を少なく抑えることができる。これにより、より小さな回路規模で最大転送数を増加することができ、LSIの信頼性を向上できる。また、本発明によれば、このように転送数カウント手段を共通化した場合にも、第2の外部インターフェースからバッファメモリ及びFIFO記憶手段を介して第1の外部インターフェースへと、正常にデータを転送することが可能となる。
【0128】
また、請求項10の発明によれば、例えば同期モードにおいても、正常にリクエスト信号、アクノリッジ信号を発生させることが可能となる。即ち、アクノリッジ信号の発生回数がリクエスト信号の発生回数を超えたり、オフセットカウンタ値が最大オフセットカウンタ値を超えたりするような事態が防止される。
【0129】
また、請求項11の発明によれば、転送数カウント手段をデータ転送制御手段とインターフェース制御手段とで共通化させることができる。これにより、ファームウェア開発時のバグの要因を減少させることができるとともに、より小さな回路規模で最大転送数を増加することができる。また、本発明によれば、このように転送数カウント手段を共通化した場合にも、第1の外部インターフェースからFIFO記憶手段及びバッファメモリを介して第2の外部インターフェースへと、正常にデータを転送することが可能となる。即ち、余計なデータがFIFO記憶手段に入力されたりするような事態が防止される。
【0130】
また、請求項12の発明によれば、例えば同期モードにおいても、正常にリクエスト信号、アクノリッジ信号を発生させることが可能となる。即ち、リクエスト信号を全て返す前にデータ転送が終了したり、余計なリクエスト信号が出力されたりするような事態が防止される。
【0131】
また、請求項13の発明によれば、より効率的なデータ転送が可能な情報処理装置を実現できる。
【図面の簡単な説明】
【図1】本発明の第1の実施例のブロック図である。
【図2】第1の実施例の詳細な構成の一例を示すブロック図である。
【図3】図3(A)はテーブルデータのフォーマット例を示す図であり、図3(B)は複写先のEビットを生成するための回路例を示す図であり、図3(C)はバッファメモリに形成されたテーブル領域、データ領域を説明するための図である。
【図4】第1の実施例の動作を説明するための状態遷移図である。
【図5】図5(A)、(B)、(C)は、第1の実施例の動作を説明するためのタイミング図である。
【図6】図6(A)、(B)、(C)は、セクタの並びとセグメントの並びの対応例を示す図である。
【図7】図7(A)、(B)、(C)は、複写指定パラメータ、制御パラメータを用いた複写動作について説明するための図である。
【図8】本発明の第2の実施例を示すブロック図である。
【図9】 図9(A)、(B)は、SCSIコントローラとDMA転送制御回路とを1チップ構成とする場合の問題点について説明するための図である。
【図10】 非同期イニシエータデータアウトの場合の信号の流れを示す図である。
【図11】 非同期イニシエータデータアウトの場合の状態遷移図である。
【図12】 非同期イニシエータデータインの場合の信号の流れを示す図である。
【図13】 非同期イニシエータデータインの場合の状態遷移図である。
【図14】 非同期ターゲットデータアウトの場合の信号の流れを示す図である。
【図15】 非同期ターゲットデータインの場合の信号の流れを示す図である。
【図16】 同期イニシエータデータアウトの場合の信号の流れを示す図である。
【図17】 同期イニシエータデータアウトの場合の状態遷移図である。
【図18】 同期イニシエータデータインの場合の信号の流れを示す図である。
【図19】 同期イニシエータデータインの場合の状態遷移図である。
【図20】同期ターゲットデータアウトの場合の信号の流れを示す図である。
【図21】同期ターゲットデータアウトの場合の状態遷移図である。
【図22】同期ターゲットデータインの場合の信号の流れを示す図である。
【図23】同期ターゲットデータインの場合の状態遷移図である。
【図24】データブロックが不連続に配置される問題について説明するための図である。
【図25】図25(A)、(B)、(C)は、従来のデータ転送制御装置におけるテーブルデータの例を示す図である。
【符号の説明】
101 セグメントサイズレジスタ
102 セクタサイズレジスタ
103 テーブルアクセスレジスタ
104 コントロールレジスタ
105、106 転送開始信号
107、108 転送終了信号
109、110 転送ブロック指定レジスタ
111、112 乗算回路
113、114 セレクタ
115、116 セクタカウンタ
117、118 セクタサイズレジスタ
119、120 アドレスカウンタ
121、122 テーブルライトカウンタ
123、124 テーブルリードカウンタ
125 アドレスセレクタ
126 調停回路
127 タイミング発生回路
128 バスセレクタ
129、130 転送制御回路
201 DMA転送制御回路
202 FIFO
203 SCSIデータバス
204 DMAデータバス
205 SCSIハンドシェイク回路
206 SREQ信号
207 SACK信号
208 オフセットカウンタ
209 FIFO制御回路
210 エンプティ信号
211 フル信号
212 加算回路
213 比較回路
214 加算結果
215 比較一致信号
216 終了信号
217 終了接近信号
218 オフセットカウンタ値
219 FIFOカウンタ値
220 FIFOロード信号
221 FIFOアクセス信号
301 バッファメモリ
302 DTRC
303 CPU
304 ホストコンピュータ
305 ディスクメモリ
306 第1の外部インターフェース
307 バッファメモリインターフェース
308 第2の外部インターフェース
309 CPUインターフェース
310 テーブル領域
312 データ転送部
313 転送数カウンタ
314 転送数設定部

Claims (6)

  1. 外部コントローラ手段により設定された少なくとも1組以上のテーブルデータに基づいて複数の外部インターフェースの中の第1、第2の外部インターフェースの間でバッファメモリを介したデータ転送を行うための制御を行うデータ転送制御装置であって、
    前記テーブルデータが、
    一方の外部インターフェース用のテーブルデータを複写して他方の外部インターフェース用のテーブルデータを生成することを指定する複写指定パラメータと、
    一連のテーブルデータの最後の組であることを示す転送終了パラメータと、
    前記転送終了パラメータに基づき複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを求めるための制御パラメータとを含み、
    前記複写指定パラメータが真である場合には一方の外部インターフェース用のテーブルデータを複写することで生成された他方の外部インターフェース用のテーブルデータに基づいて前記バッファメモリと該他方の外部インターフェースとの間でのデータ転送を行う手段と、
    複写元である前記一方の外部インターフェース用のテーブルデータの転送終了パラメータと制御パラメータとが共に偽である場合には複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを偽にし、複写元である前記一方の外部インターフェース用のテーブルデータの転送終了パラメータが真であり制御パラメータが偽である場合には複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを真にする手段と、
    複写元である前記一方の外部インターフェース用のテーブルデータの転送終了パラメータと制御パラメータとが共に真である場合には複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを偽にする手段と、
    前記バッファメモリと前記第1、第2の外部インターフェースとの間でデータ転送を行う際に前記転送終了パラメータが真である場合には次の転送動作を中断する手段と、
    を含み、
    前記複写元である前記一方の外部インターフェース用の転送終了パラメータが真であり、前記複写先である前記他方の外部インターフェース用の転送終了パラメータが偽である場合は、前記複写元である前記一方の外部インターフェース側におけるデータ転送動作を終了させ、前記複写先である前記他方の外部インターフェース側におけるデータ転送動作を続行させることを特徴とするデータ転送制御装置。
  2. 外部コントローラ手段により設定された少なくとも1組以上のテーブルデータに基づいて複数の外部インターフェースの中の第1、第2の外部インターフェースの間でバッファメモリを介したデータ転送を行うための制御を行うデータ転送制御装置であって、
    前記テーブルデータが、
    一方の外部インターフェース用のテーブルデータを複写して他方の外部インターフェース用のテーブルデータを生成することを指定する複写指定パラメータと、
    一連のテーブルデータの最後の組であることを示す転送終了パラメータと、
    前記転送終了パラメータに基づき複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを求めるための制御パラメータとを含み、
    前記複写指定パラメータが真である場合には一方の外部インターフェース用のテーブルデータを複写することで生成された他方の外部インターフェース用のテーブルデータに基づいて前記バッファメモリと該他方の外部インターフェースとの間でのデータ転送を行う手段と、
    複写元である前記一方の外部インターフェース用のテーブルデータの転送終了パラメータと制御パラメータとが共に偽である場合には複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを偽にし、複写元である前記一方の外部インターフェース用のテーブルデータの転送終了パラメータが真であり制御パラメータが偽 である場合には複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを真にする手段と、
    複写元である前記一方の外部インターフェース用のテーブルデータの転送終了パラメーターが偽であり制御パラメータが真である場合には複写先である前記他方の外部インターフェース用のテーブルデータの転送終了パラメータを真にする手段と、
    前記バッファメモリと前記第1、第2の外部インターフェースとの間でデータ転送を行う際に前記転送終了パラメータが真である場合には次の転送動作を中断する手段と、
    を含み、
    前記複写元である前記一方の外部インターフェース用の転送終了パラメータが偽であり、前記複写先である前記他方の外部インターフェース用の転送終了パラメータが真である場合は、前記複写元である前記一方の外部インターフェース側におけるデータ転送動作を続行させ、前記複写先である前記他方の外部インターフェース側におけるデータ転送動作を終了させることを特徴とするデータ転送制御装置。
  3. 請求項1または2において、
    前記テーブルデータが、転送開始アドレスと、転送数と、転送数の単位を選択するための転送数単位選択パラメータとを含み、
    前記バッファメモリと前記第1、第2の外部インターフェースとの間において転送するデータの転送数をカウントする転送数カウント手段と、
    前記テーブルデータに含まれる前記転送数単位選択パラメータにより転送数の単位を選択し、選択された単位に基づいて前記テーブルデータに含まれる前記転送数を変換し、変換された転送数を前記転送数カウント手段に対して設定する転送数設定手段と、
    前記外部コントローラ手段からの転送開始命令に基づいてデータ転送を開始し、前記バッファメモリと前記第1、第2の外部インターフェースとの間で前記転送開始アドレスと前記転送数カウント手段におけるカウント結果とに基づき指定されるアドレス範囲のデータを転送する手段と、
    を含むことを特徴とするデータ転送制御装置。
  4. 請求項において、
    前記転送数設定手段が、
    前記テーブルデータに含まれる前記転送数の単位を変更するための乗数を格納する乗数格納手段と、
    前記テーブルデータに含まれる前記転送数と前記乗数との乗算結果を出力する乗算手段と、
    前記転送数単位選択パラメータに基づいて前記乗算手段の出力と前記テーブルデータに含まれる前記転送数のいずれか一方を選択する手段と、
    を含むことを特徴とするデータ転送制御装置。
  5. 請求項1〜4のいずれかにおいて、
    前記第1の外部インターフェースと前記バッファメモリとの間のデータ転送用のテーブルデータと、前記第2の外部インターフェースと前記バッファメモリとの間のデータ転送用のテーブルデータとが別々に設定されたことを特徴とするデータ転送制御装置。
  6. 請求項1〜5のいずれかのデータ転送制御装置と、前記第1、第2の外部インターフェースに接続される外部装置と、バッファメモリと、外部コントローラ手段とを含むことを特徴とする情報処理装置。
JP20150994A 1993-08-03 1994-08-03 データ転送制御装置及び情報処理装置 Expired - Fee Related JP3687112B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP20150994A JP3687112B2 (ja) 1993-08-03 1994-08-03 データ転送制御装置及び情報処理装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP5-192545 1993-08-03
JP19254593 1993-08-03
JP20150994A JP3687112B2 (ja) 1993-08-03 1994-08-03 データ転送制御装置及び情報処理装置

Publications (2)

Publication Number Publication Date
JPH0798684A JPH0798684A (ja) 1995-04-11
JP3687112B2 true JP3687112B2 (ja) 2005-08-24

Family

ID=26507384

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20150994A Expired - Fee Related JP3687112B2 (ja) 1993-08-03 1994-08-03 データ転送制御装置及び情報処理装置

Country Status (1)

Country Link
JP (1) JP3687112B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6055619A (en) * 1997-02-07 2000-04-25 Cirrus Logic, Inc. Circuits, system, and methods for processing multiple data streams
JP2007133663A (ja) * 2005-11-10 2007-05-31 Konica Minolta Opto Inc メモリ制御装置及びメモリ制御方法
CN110008156B (zh) * 2019-03-27 2020-12-15 无锡海斯凯尔医学技术有限公司 数据传输的装置、方法及可读存储介质

Also Published As

Publication number Publication date
JPH0798684A (ja) 1995-04-11

Similar Documents

Publication Publication Date Title
US5832308A (en) Apparatus for controlling data transfer between external interfaces through buffer memory using a FIFO, an empty signal, and a full signal
US5557750A (en) Prefetch/prestore mechanism for peripheral controllers with shared internal bus
US8583839B2 (en) Context processing for multiple active write commands in a media controller architecture
US5623700A (en) Interface circuit having zero latency buffer memory and cache memory information transfer
US5797033A (en) Direct memory access for storing and retrieving data based on packet size
US5526508A (en) Cache line replacing system for simultaneously storing data into read and write buffers having multiplexer which controls by counter value for bypassing read buffer
CN110928811B (zh) 用于处理突发读取事务的装置和方法
JPH0670773B2 (ja) 先行制御方式
JPH05173932A (ja) データ転送装置
JP5040050B2 (ja) 複数チャネルdmaコントローラおよびプロセッサシステム
US5594878A (en) Bus interface structure and system for controlling the bus interface structure
JPH05210589A (ja) 高速バッファコピー方法
US5043883A (en) Pipe-lined data processor system of synchronous type having memory devices with buffer memory and input/output data control
JP3687112B2 (ja) データ転送制御装置及び情報処理装置
US20090119429A1 (en) Semiconductor integrated circuit
US5745731A (en) Dual channel FIFO circuit with a single ported SRAM
US6145043A (en) Boolean and movement accelerator
JP3599692B2 (ja) データ伝送装置
JP4431492B2 (ja) 複数のコヒーレンシー・グラニュールをサポートするデータ転送ユニット
JP2004240616A (ja) メモリコントローラ及びメモリアクセス制御方法
KR100218625B1 (ko) 정보 처리 시스템 및 그의 데이타 전송 방법
JP2001229074A (ja) メモリ制御装置と情報処理装置及びメモリ制御チップ
JPS6162919A (ja) バツフアメモリ制御回路
JPH0376501B2 (ja)
JPH08241268A (ja) 入出力制御装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040824

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041025

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: 20050517

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050530

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090617

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100617

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110617

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110617

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120617

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130617

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees