JP2004280191A - データ転送制御方法および装置 - Google Patents

データ転送制御方法および装置 Download PDF

Info

Publication number
JP2004280191A
JP2004280191A JP2003067193A JP2003067193A JP2004280191A JP 2004280191 A JP2004280191 A JP 2004280191A JP 2003067193 A JP2003067193 A JP 2003067193A JP 2003067193 A JP2003067193 A JP 2003067193A JP 2004280191 A JP2004280191 A JP 2004280191A
Authority
JP
Japan
Prior art keywords
transfer
data
write
bus
address
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.)
Withdrawn
Application number
JP2003067193A
Other languages
English (en)
Other versions
JP2004280191A5 (ja
Inventor
Kenichi Kawaguchi
謙一 川口
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2003067193A priority Critical patent/JP2004280191A/ja
Priority to US10/775,124 priority patent/US20040181612A1/en
Priority to CN200410039645.2A priority patent/CN1282101C/zh
Publication of JP2004280191A publication Critical patent/JP2004280191A/ja
Publication of JP2004280191A5 publication Critical patent/JP2004280191A5/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】複数のデータの転送先アドレスが1語もしくは数語間隔に存在した場合でも一度のバスサイクルで複数のデータを転送する。
【解決手段】バーストデータ転送を開始し、データフェーズが転送先でないアドレスにきたときは、バイトイネーブル信号をディアサートした状態にし、データフェーズがデータを転送しようとするアドレスにきたときは、バイトイネーブル信号をアサートし、このデータフェーズの完了時にのみ転送しようとするデータを更新することにより、数語間隔に存在する転送先のアドレスにのみ、データを転送することを可能とする。
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明はデータ転送制御方法および装置に関するものである。
【0002】
【従来の技術】
従来、バースト転送を制御するデータ転送制御方法および装置は、例えば特開平6−161944に見られるように、転送先開始アドレス、転送ワード数をそれぞれ、転送先開始アドレスレジスタ、転送ワード数レジスタに設定することにより、転送先開始アドレスから連続したアドレス空間へ指定した転送ワード数のデータを1度のバスサイクル(バストランザクション)の中で連続して転送していた。
【0003】
PCIバスインタフェースを持った従来のデータ転送制御装置を図19に示す。PCIバスは32ビット、すなわち4バイトのデータ幅を持つので、1ワードは4バイトの大きさを表し、1ワードのデータという場合には4バイト大のデータを表す。転送先開始アドレスから連続したアドレス空間へデータを転送する場合、バースト転送制御部105aがバースト転送を発生させ、1ワードのデータ転送が完了するたびに転送ワード数カウンタ109の値をインクリメントし、転送ワード数カウンタ109の値が転送ワード数レジスタ106に保持された値に一致するまで、1度のバスサイクルですべてのデータを転送していた。
【0004】
図20AにタイムフレームT0からT11までの、図20BにタイムフレームT12からT23までの、従来のデータ転送制御装置を用いた場合のデータ転送のタイミングチャートを示す。図20A、20Bに示すように、40000000番地と40000008番地のように連続していないアドレスにそれぞれ1ワードずつのデータを転送する場合には、バスサイクルを2回発生させて、2回のシングル転送を行うことによりデータを転送していた。
【0005】
【特許文献1】
特開平6−161944号公報
【0006】
【発明が解決しようとする課題】
従来のデータ転送制御装置では、データの転送先のアドレスが連続していないとき、バースト転送できないので高速にデータを転送することができない。
【0007】
本発明は、かかる点に鑑み、1ワード単位のデータを等間隔離れたアドレス位置に書き込むにあたり、バースト転送による書き込みを利用し、データ転送を高速に行うことのできる転送制御方法および装置を提供することを目的とする。
【0008】
【課題を解決するための手段】
(1)本発明の請求項1記載のデータ転送制御装置は、バスに接続され、前記バス上のデバイスへのデータ転送を制御するデータ転送制御装置において、前記バスの書き込み制御線を書き込み禁止の状態にしながらデータの書き込み動作を行うバスサイクル制御手段を具備することを特徴とするデータ転送制御装置である。
(2)本発明の請求項2記載のデータ転送制御装置は、バスに接続され、前記バス上のデバイスへのデータ転送を制御するデータ転送制御装置において、データを保持するデータ記憶手段と、データの転送ワード数を保持する転送ワード数記憶手段と、1ワードデータの転送先のアドレスの間隔を保持する転送間隔記憶手段と、バースト転送中に、前記転送間隔記憶手段に保持された間隔で、前記バスの書き込み制御線を書き込みが有効な状態にし、その他の期間は書込み禁止状態にして、前記書き込み制御線を書き込みが有効な状態で前記転送ワード数記憶手段に保持されたワード数のデータを転送するバスサイクル制御手段を具備することを特徴とするデータ転送制御装置である。
(3)本発明の請求項3記載のデータ転送制御装置は、バスサイクルの開始アドレスを保持するサイクル開始アドレス保持手段と、書き込み禁止の状態でのデータの転送中に前記デバイスからデータ転送の中断を通知された場合、第2のデータの転送先のアドレスを計算する再開アドレス計算手段と、書き込み禁止の状態でのデータの転送中に前記デバイスからデータ転送の中断を通知された場合、前記再開アドレス計算手段で計算されたアドレスを前記サイクル開始アドレス保持手段に転送し、前記サイクル開始アドレスレジスタに格納されたアドレスから新たなバスサイクルを発生させる中断サイクル再開手段と、を具備することを特徴とするデータ転送制御装置である。
(4)本発明の請求項4記載のデータ転送制御装置は、ターゲットデバイスのデバイス応答速度を保持する応答速度記憶手段と、前記転送間隔記憶手段と前記応答速度記憶手段の値からバースト転送によるデータ転送速度と、転送先アドレスへの1ワードのデータ転送の繰り返しによるデータ転送を比較する転送速度比較手段と、前記転送速度比較手段によりバースト転送の方が転送先アドレスへの1ワードのデータ転送の繰り返しによるデータ転送よりも速い場合、バースト転送を選択し、そうでない場合、転送先アドレスへの1ワードデータ転送バスサイクルの繰り返しを選択する転送形式選択手段とを具備することを特徴とするデータ転送制御装置である。
(5)本発明の請求項5記載のデータ転送装置は、前記バスサイクル制御手段は、前記書き込み制御線が書き込み禁止の状態である時には、データ線に次に転送しようとする1ワードのデータをドライブすることを特徴とするデータ転送制御装置である。
(6)本発明の請求項6記載のデータ転送制御装置は、バスの書き込み制御線が書き込み禁止の状態であるときにデータの書き込み動作を受けた場合、前記書き込み制御線が書き込みが有効な状態であるときよりも早くデータの受理を通知するバス応答手段を具備することを特徴とするデータ転送制御装置である。
(7)本発明の請求項7記載のデータ転送制御装置は、データの転送先のアドレスの間隔を保持する記憶手段と、バスの書き込み制御線が書き込み禁止の状態であるときにデータの転送動作を受けた場合、前記記憶手段に格納された値から次に前記書き込み制御線が書き込み許可の状態となるアドレスを求め、データ線にドライブされている信号の値を前記アドレスに書き込む書き込み制御手段と
を具備することを特徴とするデータ転送制御装置である。
(8)本発明の請求項8記載のデータ転送制御装置は、バスに接続され、前記バス上のデバイスへのデータ転送を制御するデータ転送制御装置において、データを保持するデータ記憶手段と、データの転送ワード数を保持する転送ワード数記憶手段と、データの転送を行わないアドレスの間隔を保持する非転送間隔記憶手段と、バースト転送中に、前記転送間隔記憶手段に保持された間隔で、前記バスの書き込み制御線を書き込み禁止状態にし、その他の期間は書込みが有効な状態にして、前記書き込み制御線を書き込みが有効な状態で前記転送ワード数記憶手段に保持されたワード数のデータを転送するバスサイクル制御手段を具備することを特徴とするデータ転送制御装置である。
(9)本発明の請求項9記載のデータ転送制御方法は、バスに接続され、前記バス上のデバイスへのデータ転送を制御するデータ転送制御方法において、データを保持するデータ記憶工程と、データの転送数を保持する転送ワード数記憶工程と、データの転送先のアドレスの間隔を保持する転送間隔記憶工程と、バースト転送中に、前記転送間隔記憶手段に保持された間隔で、前記バスの書き込み制御線を書き込みが有効な状態にし、その他の期間は書込み禁止状態にして、前記書き込み制御線を書き込みが有効な状態で前記転送ワード数記憶手段に保持されたワード数のデータを転送するバスサイクル制御工程を具備することを特徴とするデータ転送制御方法である。
【0009】
【発明の実施の形態】
以下、この発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一または相当部分には同一の符号を付しその説明は繰り返さない。
【0010】
(第1の実施形態)
本実施の形態では、等間隔に離れたアドレスに1ワードずつデータを転送する場合でも、バースト転送により複数ワードのデータを高速に転送することのできるデータ転送制御装置について説明する。すなわち、書き込みを行う先頭アドレスからバースト転送を開始し、指定されたクロックサイクル期間はバスを書き込み禁止の状態にしておき、その後、書き込みを行うタイミングでバスを書き込み可能な状態に戻し、再び、指定されたクロックサイクル期間はバスを書き込み禁止の状態にするといった動作を、すべてのデータを転送し終わるまで繰り返す。これにより、等間隔に離れたアドレスへのデータのバースト転送を可能にする。
【0011】
図1は本発明の第1の実施形態によるデータ転送制御装置である。
【0012】
PCIローカルバス(以下、PCIバスと呼ぶ)のマスタデバイス101は、複数ワードのデータを連続したアドレスに1度のバスサイクルで転送するいわゆるバースト転送をサポートし、転送開始レジスタ106への書き込みが発生すると、転送先開始アドレスレジスタ102に設定されたバースト転送の転送先の開始アドレスから、転送ワード数レジスタ103が示すワード数だけデータバッファ104に格納されたデータをバースト転送する。このバースト転送の際に、一回目のデータ転送が完了すると、転送間隔レジスタ113に格納された値が指定する期間、PCIバス180のコマンド・バイトイネーブル線(C_BE#線)180bの4バイトそれぞれの書き込みの許可/禁止を指定する各ビットすべてを1すなわち無効状態にすることにより、PCIターゲットデバイス140がメモリ146にデータを書き込まないようにする。その後、C_BE#線180bのすべてのビットの値を0にして2番目のデータを転送する。そして、再び、転送間隔レジスタ113に格納された値が指定する期間、C_BE#線180bをオール1にする。これを、転送ワード数レジスタ103が示すワード数のデータが転送されるまで繰り返す。
【0013】
転送先開始アドレスレジスタ102には、CPU160からソフトウエアによりバースト転送の転送先の開始アドレスを設定することが可能である。
【0014】
転送ワード数レジスタ103には、CPU160からソフトウエアにより転送したいデータのワード数を設定することが可能である。
【0015】
データバッファ104は、PCIターゲットデバイス140に転送しようとするデータを保持し、転送ワード数レジスタ103で指定されるワード数のデータが1回の転送動作で読み出される。また、その先頭データは、PCIバスサイクル実行中はAD線180aにドライブされる。
【0016】
サイクル制御部105は、転送開始レジスタ106に転送開始の書き込みがされると、バスリクエスト信号線190を用いてPCIバス180の使用権を要求し、バスグラント信号線191のアサートによりPCIバス180の使用権を獲得してからバースト転送制御部105aを用いてバースト転送を開始し、まず、アドレスフェーズで転送先開始アドレスレジスタ102に設定されたアドレスをサイクル開始アドレスレジスタ108を通じてAD線180aにドライブし、次に、第1のデータフェーズで、データバッファ104に格納された第1のデータをAD線180aにドライブし、データ転送が完了すると、インクリメント部110を用いて転送ワード数カウンタ109の値をインクリメントし、サイクル開始アドレスレジスタ108の値をインクリメントし、インクリメント部115を用いて転送間隔カウンタ114をインクリメントし、データバッファ104から第1のデータを消去して更新し、転送ワード数カウンタ109と転送ワード数レジスタ103の値が一致すれば転送ワード数カウンタ109と転送間隔カウンタ114を0に初期化して終了し、一致しなければ転送間隔カウンタ114と転送間隔レジスタ113の値を比較部116を用いて比較し、一致すればカウンタ初期化部117を用いて転送間隔カウンタ114を0に初期化し、次に、第2のデータフェーズで、転送間隔カウンタ114の値が初期値0であれば、C_BE#線180bを有効な値に設定し、データ転送が完了すると、インクリメント部110を用いて転送ワード数カウンタ109の値をインクリメントし、サイクル開始アドレスレジスタ108の値をインクリメントし、インクリメント部115を用いて転送間隔カウンタ114をインクリメントし、データバッファ104から第2のデータを消去して更新し、比較部111から転送ワード数カウンタ109と転送ワード数レジスタ103の値が一致したという通知を受ければ、転送ワード数カウンタ109と転送間隔カウンタ114を0に初期化して終了し、転送間隔カウンタ114の値が初期値0でなければ、BE#線無効化部105dによって、C_BE#線180bをオール1すなわち無効な値に設定し、データ転送が完了すると、サイクル開始アドレスレジスタ108の値をインクリメントし、インクリメント部115を用いて転送間隔カウンタ114をインクリメントし、次に第3以降のデータフェーズで、C_BE#線180bをオール1に設定して転送したデータのワード数が転送ワード数レジスタ103の値に一致するまで第2のデータフェーズと同様の動作を繰り返す。また、ターゲットデバイスによりバースト転送が中断された場合、中断サイクル再開部105cにより、2クロックサイクルのウエイト後、サイクルを再開するようにサイクル制御部105を制御する。
【0017】
バースト転送制御部105aは、PCIバス180へのバースト転送を制御する。
【0018】
データ更新部105bは、書き込みを有効としたデータの転送が完了すると、転送が終了したデータをデータバッファ104から消去し、データバッファ104に格納されたデータを更新する。更新されたデータはバス上に出力される。
【0019】
中断サイクル再開部105cは、PCIターゲットデバイス140により、バスサイクルが中断された場合、2クロックサイクルの間ウエイトしてからPCIバスインタフェース107を通じてバスサイクルを再開する。
【0020】
BE線無効化部105dは、データフェーズにおいて、転送間隔カウンタ114の値が0でないとき、C_BE#線180bを無効な値、すなわちオール1にし、このデータフェーズが完了するときにはデータ更新部105bにはデータバッファ104のデータを更新しないように通知する。
【0021】
転送開始レジスタ106に転送開始を指示する書き込みがされると、サイクル制御部105がバースト転送を開始する。
【0022】
PCIバスインタフェース107は、PCIマスタデバイスとしてのPCIバス180の制御を行う。
【0023】
サイクル開始アドレスレジスタ108には、バースト転送を開始する場合、転送先開始アドレスレジスタ102の値がコピーされ、また、PCIターゲットデバイス140へのバースト転送がディスコネクトされた場合、バスサイクルを再開するアドレスが保持される。
【0024】
転送ワード数カウンタ109は、転送されたデータのワード数をカウントする。
【0025】
インクリメント部110は、バースト転送が完了すると転送ワード数カウンタ109を初期化する。
【0026】
比較部111は、転送ワード数カウンタ109の値と転送ワード数レジスタ103の値を比較し、一致するときは、送ろうとするデータのワード数と、既に送られたデータのワード数が一致することになり、サイクル制御部105に通知するとともに、カウンタ初期化部112を用いて転送ワード数カウンタ109を初期化し、また、転送ワード数カウンタ109が転送ワード数レジスタ103よりも1小さいときは、サイクル制御部105への通知だけを行う。サイクル制御部105は比較部111から転送ワード数カウンタ109の値と転送ワード数レジスタ103の値が一致することを通知されたときはPCIバスサイクルをPCIバスインタフェース107にバスサイクルを終了するように通知し、転送ワード数カウンタ109が転送ワード数レジスタ103よりも1小さいことを通知されたときは、PCIバスインタフェース107にFRAME#線180cをディアサートして、バースト転送を次のデータフェーズで終了させるように通知する。
【0027】
カウンタ初期化部112は、比較部111により転送ワード数レジスタ103と転送ワード数カウンタ109の値が一致すると判別されると、転送ワード数カウンタ109を初期化する。
【0028】
転送間隔レジスタ113には、データを転送しようとする転送先のアドレスの間隔をCPU160からソフトウエアにより設定することが可能であり、1ワード分書き込みを行うデータ転送をした後、nワード続けて書き込みを行わないデータ転送を行う場合、この値は(n+1)となる。
【0029】
転送間隔カウンタ114は、1ワードのデータ書き込みを行った後何ワード分データの書き込みを行わないデータ転送が行われたかをカウントするものであり、バースト転送中にデータフェーズが完了するたびに値がインクリメント部115によりインクリメントされ、値が転送間隔レジスタ113の値に一致したとき、およびバスサイクルが完了したときはカウンタ初期化部117により初期値0が書き込まれ、値が0であるときはサイクル制御部105により、C_BE#線180bが有効な値に設定されてデータが転送される。
【0030】
インクリメント部115は、バースト転送中にデータフェーズが完了するたびに転送間隔カウンタ114の値をインクリメントする。
【0031】
比較部116は、転送間隔レジスタ113と転送間隔カウンタ114の値を比較し、一致するときはサイクル制御部105とカウンタ初期化部117に通知し、また、転送間隔カウンタ114が転送間隔レジスタ113よりも1小さいときは、サイクル制御部105への通知だけを行う。
【0032】
カウンタ初期化部117は、比較部116から、転送間隔レジスタ113と転送間隔カウンタ114の値が一致したという通知を受けると、転送間隔カウンタ114を0に初期化する。
【0033】
PCIターゲットデバイス140は、PCIマスタデバイス101からPCIバス180を通じてデータを転送されると、PCIバスサイクルの各データフェーズでC_BE#線180bがオール1である場合を除き、データをメモリ146に格納する。
【0034】
PCIバスインタフェース141は、PCIターゲットデバイスとしてのPCIバス180の制御を行う。このとき、TRDY#180eのアサートは、アクノリッジ信号制御部142bからアクノリッジ信号を受け取ってから行う。
【0035】
メモリ書き込み制御部142は、PCIバス180からメモリ146への書き込みを制御する。
【0036】
アドレスデコーダ142aは、PCIバス180のアドレスフェーズでAD線180aにドライブされている値を取り込んでデコードし、PCIターゲットデバイス140に割り当てられたアドレスであるかどうかを調べ、そうである場合はPCIバスインタフェース141に対してPCIバスサイクルに応答するように通知し、また、メモリ書き込み制御部142でメモリ146に書き込み動作を実行させる。
【0037】
アクノリッジ信号制御部142bは、メモリ書き込み制御部142によりメモリ146への書き込みが完了すると、PCIバスインタフェース141にアクノリッジ信号を出す。
【0038】
データレジスタ143は、PCIバス180から転送されたデータを内部メモリ146に書き込むために一時的にデータを格納するレジスタである。
【0039】
アドレスレジスタ144は、PCIバス180の各データフェーズに対応するアドレスを記憶するためのレジスタである。
【0040】
バイトイネーブルレジスタ145は、4ビットの値を保持するレジスタであり、メモリ146に4バイト書き込みをする場合、各バイトに対応するビットが0のバイト位置にだけ書き込みを行うためのものである。
【0041】
メモリ146は、PCIマスタデバイス101から転送され、データレジスタ143に一時的に格納されたデータを、バイトイネーブルレジスタ145に保持された値に従って、アドレスレジスタ144の値が示すアドレスの位置に格納する。
【0042】
CPU160は、メモリ170をメインメモリに使用し、PCIマスタデバイス101からPCIターゲットデバイス140へのバースト転送を行う際には、転送開始アドレスを転送先開始アドレスレジスタ102に設定し、転送間隔を転送間隔レジスタ113に設定し、転送ワード数を転送ワード数レジスタ103に設定し、最後に転送開始レジスタ106に転送開始の書き込みをしてバースト転送を起動する。
【0043】
メモリ170は、CPU160のメインメモリとして使用される。
【0044】
PCIバス180は、32ビットのアドレス・データ線(AD線)180a、4ビットのコマンド・バイトイネーブル線(C_BE#線)180b、1ビットのフレーム線(FRAME#線)180c、イニシエータ・レディ線(IRDY#線)180d、ターゲット・レディ線(TRDY#線)180e、デバイス・セレクト線(DEVSEL#線)180f、ストップ線(STOP#線)180gを持ち、PCIマスタデバイス101、PCIターゲットデバイス140、CPU160、メモリ170が接続している。
【0045】
バスリクエスト線190は、PCIマスタデバイス110がCPU160に対してPCIバス180のバス使用権をリクエストするための信号線である。
【0046】
バスグラント線191は、CPU160がPCIマスタデバイス110に対してPCIバス180のバス使用権をグラントするための信号線である。
【0047】
図2は本実施の形態の動作のフローを示す図である。
【0048】
ステップST201において、CPU160からPCIバス180を通じて転送先開始アドレスレジスタ102を設定し、ステップST202に進む。
【0049】
ステップST202において、CPU160からPCIバス180を通じて転送ワード数レジスタ103を設定し、ステップST203に進む。
【0050】
ステップST203において、CPU160からPCIバス180を通じて転送間隔レジスタ113を設定し、ステップST204に進む。
【0051】
ステップST204において、CPU160からPCIバス180を通じて転送開始レジスタ106への書き込みを行い、ステップST205に進む。
【0052】
ステップST205において、サイクル制御部105により、転送先開始アドレスレジスタ102の値をサイクル開始アドレスレジスタ108に転送し、ステップST206に進む。
【0053】
ステップST206において、PCIマスタデバイス110がバスリクエスト線190をアサートしてCPU160に対してPCIバス180のバス使用権をリクエストし、CPU160がバスグラント線191をアサートしてPCIマスタデバイス110に対してPCIバス180のバス使用権をグラントすることにより、PCIマスタデバイス110がPCIバス180のバス使用権を獲得し、ステップST207に進む。
【0054】
ステップST207において、PCIバスインタフェース141により、PCIバスサイクルを開始して、アドレスフェーズを実行し、サイクル開始アドレスレジスタ108の値をアドレスとしてPCIバスインタフェース180のAD線180aにドライブし、C_BE#線180bにメモリライトコマンドを発行し、ステップST208に進む。
【0055】
ステップST208において、サイクル制御部105により、転送間隔カウンタ114の値が0であるか否かを判別し、0であればステップST209に進み、0でなければステップST219に進む。
【0056】
ステップST209において、比較部111,116、サイクル制御部105により、最終データフェーズであるか否かを判別し、最終データフェーズであれば、ステップST210に進み、そうでなければステップST211に進む。
【0057】
ステップST210において、PCIバスインタフェース107により、FRAME#線180cをディアサートして最終データフェーズであることを通知し、ステップST211に進む。
【0058】
ステップST211において、PCIバスインタフェース107により、C_BE#線180bを有効な値にし、データバッファ104の先頭データをAD線180aにドライブしてデータフェーズを実行し、ステップST212に進む。
【0059】
ステップST212において、PCIバスインタフェース107により、TRDY#またはSTOP#がアサートされるまでウエイトし、どちらかがアサートされるとステップST213に進む。
【0060】
ステップST213において、PCIバスインタフェース107により、ステップST212でTRDY#がアサートされた場合、データ転送が完了していると判別し、ステップST214に進み、ステップST212でSTOP#のみがアサートされ、TRDY#がアサートされなかった場合、データ転送が完了しなかったと判別し、ステップST224に進む。
【0061】
ステップST214において、インクリメント部110により、転送ワード数カウンタ109をインクリメントし、ステップST215に進む。
【0062】
ステップST215において、サイクル制御部105により、サイクル開始アドレスレジスタ108の値をPCIのバス幅である4バイト分インクリメントし、ステップST216に進む。
【0063】
ステップST216において、インクリメント部115により、転送間隔カウンタ114の値をインクリメントし、ステップST217に進む。
【0064】
ステップST217において、データ更新部105bにより、データバッファ104から転送完了済みのデータを消去し、ステップST218に進む。
【0065】
ステップST218において、比較部111により、転送ワード数レジスタ103と転送ワード数カウンタ108の値を比較し、一致すればステップST228に進み、一致しなければステップST224に進む。
【0066】
ステップST219において、BE線無効化部105dおよびPCIバスインタフェース107により、C_BE#線180bを無効な値、すなわちオール1にし、データバッファ104の先頭データをAD線180aにドライブしてデータフェーズを実行し、ステップST220に進む。
【0067】
ステップST220において、TRDY#またはSTOP#がアサートされるまでウエイトし、どちらかがアサートされるとステップST221に進む。
【0068】
ステップST221において、ステップST220でTRDY#がアサートされた場合、データ転送が完了していると判別し、ステップST222に進み、ステップST220でSTOP#のみがアサートされ、TRDY#がアサートされなかった場合、データ転送が完了しなかったと判別し、ステップST224に進む。
【0069】
ステップST222において、サイクル制御部105により、サイクル開始アドレスレジスタ108の値をPCIのバス幅である4バイト分インクリメントし、ステップST223に進む。
【0070】
ステップST223において、インクリメント部115により、転送間隔カウンタ114の値をインクリメントし、ステップST224に進む。
【0071】
ステップST224において、比較部116により、転送間隔レジスタ113と転送間隔カウンタ114の値を比較し、一致すればステップST225に進み、一致しなければステップST226に進む。
【0072】
ステップST225において、カウンタ初期化部117により、転送間隔カウンタ114を初期化し、ステップST226に進む。
【0073】
ステップST226において、STOP#線180gのアサートにより、バスサイクルが中断された場合、ステップST206に戻り、そうでない場合、ステップST208に進む。
【0074】
ステップST228において、カウンタ初期化部112により、転送ワード数カウンタ109を0に初期化し、ステップST229に進む。
【0075】
ステップST229において、カウンタ初期化部117により、転送間隔カウンタ114を0に初期化し、バースト転送処理を終了する。
【0076】
次に、データ例を用いて本実施の形態の動作を説明する。
【0077】
図3AにタイムフレームT0からT11までの、図3BにタイムフレームT11からT15までの、メモリ146の40000000番地にデータ1を、40000008番地にデータ2を転送する場合のタイミングチャートを示す。同図では、PCIマスタデバイス101が、PCIターゲットデバイス140を通じてメモリ146に対して、バースト転送によって、まず、40000000番地にデータ1を転送し、次に、40000004番地にC_BE#線を無効な値にしてデータ2を転送し、最後に、40000008番地にデータ2を転送する。
【0078】
図中、
300aは1クロックサイクルを単位としたタイムフレームを示し、
300bはPCIバス180のバスサイクルを実行しているイニシエータを示し、
300cはPCIバス180の状態を示し、
301aはクロック線(CLK)の状態を示し、
301bはバスリクエスト線(REQ#)190の状態を示し、
301cはバスグラント線(GNT#)191の状態を示し、
302はアドレス・データ線(AD)180aの状態を示し、
303はコマンド・バイトイネーブル線(C_BE#)180bの状態を示し、
304はFRAME#線180cの状態を示し、
305はIRDY#線180dの状態を示し、
306はTRDY#線180eの状態を示し、
307はDEVSEL#線180fの状態を示し、
308は転送ワード数レジスタ103の値を示し、
309は転送ワード数カウンタ109の値を示し、
310は転送間隔レジスタ113の値を示し、
311は転送間隔カウンタ114の値を示し、
312は転送先開始アドレスレジスタ102の値を示し、
313はデータバッファ104の先頭の2ワードのデータを示し、
313aはデータバッファ104の先頭の1ワードのデータを示し、
313bはデータバッファ104の2番目の1ワードのデータを示し、
314はアドレスデコーダ142aの状態を示し、
315はアドレスレジスタ144の値を示し、
316はデータレジスタ143の値を示し、
317はバイトイネーブルレジスタ145の値を示し、
318はメモリ146の40000000番地の値を示し、
319はメモリ146の40000004番地の値を示し、
320はメモリ146の40000008番地の値を示す。
【0079】
また、PCIターゲットデバイス140は低速応答のデバイスであるとする。すなわち、アドレスフェーズの3サイクル後にDEVSEL#線180fをアサートするデバイスであるとする。さらに、メモリ146はPCIバス180のクロック1サイクル分の時間で書き込みが完了するメモリであり、これに合わせて、アクノリッジ信号制御部142bはアドレスデコーダ142aでアドレスのデコードが完了した後はウエイトなしでPCIバスインタフェース141に出すことができるとする。
【0080】
各メモリおよびレジスタのメモリマップを図4に示す。
【0081】
以下、図3A、図3Bを用いて、タイムフレーム300aに記す時刻の順に動作を説明する。
【0082】
(T0)
PCIバス110はアイドル状態である。
【0083】
313が示すように、データバッファ104には転送しようとするそれぞれ1ワードの2つのデータ、データ1およびデータ2がこの順に格納されている。
【0084】
転送ワード数カウンタ109、転送間隔カウンタ114には、それぞれ309、311に示すように初期値0が保持されている。
【0085】
(T1−T5)
ステップST201からステップST205の処理で、CPU160からの書き込みによって、308に示すように転送ワード数レジスタ103に2が、310に示すように転送間隔レジスタ113に2が、312に示すように転送開始アドレスレジスタ102に40000000が、それぞれ設定される。
【0086】
(T6−T7)
次に、ステップST206に進み、301b、301cに示すように、タイムフレームT6でREQ#線190をアサートしてPCIバス180の使用権をリクエストし、タイムフレームT7でGNT#191がアサートされ、PCIマスタデバイス101が使用権を獲得する。
【0087】
(T8)
次に、ステップST207に進み、PCIバス180はアドレスフェーズに入る。PCIバスインタフェース107は、302、303、304に示すように、AD線180aにアドレス40000000をドライブし、C_BE#線180bにメモリ・ライトコマンドをドライブし、FRAME#線180cをアサートすることによって、バスサイクルを開始する。
【0088】
(T9)
次に、ステップST208,209,210を経てステップST211に進み、PCIバス180はデータフェーズに入る。タイムフレームがT2のとき、まだPCIターゲットデバイス140は応答しないのでデータ転送は成立しない。
【0089】
PCIターゲットデバイス140のアドレスデコーダ142aは314に示すように、T1でAD線180aにドライブされていたアドレス値40000000のデコードを開始する。
【0090】
PCIバスインタフェース107は、302、303、304に示すように、AD線180aの値をデータ1に、C_BE#線180bの値を0000にし、IRDY#線180dをアサートする。
【0091】
(T10)
ステップST212にとどまり、PCIバス180はデータ転送が成立しないデータフェーズにある。
【0092】
(T11)
314に示すように、アドレスデコーダ142aはアドレス40000000のデコードを完了し、PCIバスインタフェース141は、306、307に示すようにTRDY#線180e、DEVSEL#線180fをアサートしてターゲットデバイスとしての応答通知およびデータ転送の完了通知を行う。
【0093】
(T12)
前のタイムフレーム、T4でTRDY#線180eがアサートされたので、ステップST213を経てステップ214に進む。
【0094】
ステップST214により、転送ワード数カウンタ109の値をインクリメントし、309に示すように、1にする。
【0095】
次に、ステップST215を経てステップST216により、転送間隔カウンタ144の値をインクリメントし、311に示すように、1にする。
【0096】
次に、ステップST217により、313に示すように、データバッファ104から先頭データであるデータ1を削除し、データ2を先頭データとする。
【0097】
PCIターゲットデバイス140は、316に示すように、前のタイムフレームでAD線180aにドライブされていたデータ1をデータレジスタ143に取り込む。また、317に示すように、C_BE#線180bにドライブされていた値0000をバイトイネーブルレジスタ145に取り込む。さらに、315に示すように、アドレス40000000をアドレスレジスタ144に取り込む。
【0098】
次に、ステップST218,ST224,ST226を経て、ステップST208に戻り、転送間隔カウンタ109の値が0ではないので、ステップST219で、BE線無効化部105dはバースト転送制御部105aにC_BE#線を無効値にするよう通知し、303に示すように、C_BE#線180bには無効な値、1111がドライブされる。
【0099】
(T13)
メモリ書き込み制御部142は317に示すように、前のタイムフレームでバイトイネーブルレジスタ145の値が0000となっているので、データレジスタ143の値、データ1を、318に示すように、アドレスレジスタ144に保持された値、40000000が示すメモリ146のアドレスに書き込む。
【0100】
PCIターゲットデバイス140は、アドレスレジスタ144の値をインクリメントして4000004とし、データレジスタ143に前のタイムフレームでAD線180aにドライブされていたデータ2を取り込む。また、C_BE#線180bにドライブされていた値1111をバイトイネーブルレジスタ145に取り込む。
【0101】
また、PCIターゲットデバイス140のPCIバスインタフェース141は、TRDY#180eのアサートを続けて、最終のデータフェーズがこのタイムフレームで終了することをPCIマスタデバイス101に通知する。
【0102】
PCIマスタデバイス101では、ステップST220,ST221,ST222を経て、ステップST223で転送間隔カウンタ114の値をインクリメントし、ステップ224で比較部116が転送間隔レジスタ113の値2と転送間隔カウンタ114の値2を比較し、一致するので、ステップST225に進み、カウンタ初期化部117は311に示すように転送間隔カウンタ114を0に初期化する。
【0103】
ステップST226を経てステップST208に戻り、転送間隔カウンタ114の値が0なので、ステップST209に進み、このデータフェーズが最終のデータフェーズであるので、ステップST210で、304に示すようにFRAME#線180cをディアサートして最終データフェーズであることをPCIターゲットデバイスに通知する。
【0104】
次に、ステップST211で、302、303に示すように、PCIバスインタフェース107はAD線180aにデータ2を、C_BE#線180bにオール0をドライブする。
【0105】
(T14)
メモリ書き込み制御部142は前のタイムフレームでバイトイネーブルレジスタ145の値が1111となっているので、アドレスレジスタ144に保持された値、40000004が示すメモリのアドレスに対しては書き込みを行わない。
【0106】
PCIターゲットデバイス140は、アドレスレジスタ144の値をインクリメントして4000008とし、データレジスタ143に前のタイムフレームでAD線180aにドライブされていたデータ2を取り込む。また、C_BE#線180bにドライブされていた値0000をバイトイネーブルレジスタ145に取り込む。
【0107】
PCIマスタデバイス101は前のタイムフレームで306に示すようにTRDY#線180eがアサートされたので、ステップST212を経てステップST213,ST214,ST215,ST216,ST217に進み、転送ワード数カウンタ109をインクリメントして2にし、データバッファ104からデータ2を削除する。さらに、ステップ218で転送ワード数レジスタ103と転送ワード数カウンタ109の値が一致することからステップST228,ST229に進み、309、311に示すように、これらを0に初期化する。
【0108】
(T15)
メモリ書き込み制御部142は前のタイムフレームでバイトイネーブルレジスタ145の値が0000となっているので、データレジスタ143の値、データ2を、320に示すように、アドレスレジスタ144に保持された値、40000008が示すメモリ146のアドレスに書き込む。
【0109】
以上示したような動作の繰り返しにより、本実施の形態に示すPCIマスタデバイス101は、サイクル制御部105が、C_BE#線180bを無効な値にしてバースト転送を行うことにより、等間隔に離れたアドレスへのデータの転送を高速に行うことができる。
【0110】
(第2の実施形態)
第1の実施形態のPCIマスタデバイスの構成では、バースト転送中にターゲット側からディスコネクト応答により転送が中断された場合、中断された転送は、中断された時点でのアドレスから再開されるが、再開時のアドレスが、書き込みを行わないアドレスである場合には、開始時のデータフェーズは無駄なデータフェーズを実行してしまう。そこで、本実施の形態では、データ転送を再開する際、次に有効なデータ転送を行おうとするアドレスからはじめる機能を第1の実施形態に追加したPCIマスタデバイスを説明する。
【0111】
図5は本発明の第2の実施形態のデータ転送制御装置である。図中、105eは再開アドレス計算部であり、バースト転送中にターゲットデバイスにより転送を中断された場合、次に有効なデータを転送するアドレスを計算してサイクル開始アドレスレジスタ108に書き込む。このアドレスは、(サイクル開始アドレスレジスタの値)+((転送間隔レジスタの値)―(転送間隔カウンタの値))×4で求められる。
【0112】
図6は本実施の形態の動作のフローを示す図である。第1の実施形態のフローとの違いは、ステップST226からステップST206に戻る際に、ステップST227a,ステップST227bの処理が追加されている点である。
【0113】
ステップST226において、STOP#線180gのアサートにより、バスサイクルが中断された場合、ステップST227aに進み、そうでない場合、ステップST208に進む。
【0114】
ステップST227aにおいて、次に有効なデータを転送するアドレスを計算し、サイクル開始アドレスレジスタ108に設定し、ステップST227bに進む。
【0115】
ステップST227bにおいて、転送間隔カウンタ114を初期化し、ステップST206に戻る。
【0116】
図7は本実施の形態の動作の例を示すタイミングチャートを示す図である。図中、321はSTOP#線180gの状態を示し、322はサイクル開始アドレスレジスタ108の値を示す。
【0117】
タイムフレームT4で321に示すようにSTOP#線180gがアサートされ、PCIターゲットデバイスからディスコネクト応答があるので、次のタイムフレームT5で304に示すように、FRAME#線180cをディアサートしてバスサイクルの終了処理を行う。ここで、311に示すように、転送間隔カウンタ111の値が1となっているので、この次のタイムフレームT6では、再開アドレス計算手段105eで次に有効なアドレスを、
40000004+(2−1)×4
により計算し、結果の値、40000008を322に示すようにサイクル開始アドレスレジスタ108に転送する。
【0118】
バスサイクルの再開後は、タイムフレームT7のAD線180aの値が示すように、アドレスは有効なデータ転送の転送先アドレス40000008から、データは転送中断時に次に書き込みを行うデータとしてデータバッファ104に格納されていた先頭データから、データ転送を行う。
【0119】
再開アドレス計算部105cが存在しない場合、図8A,図8Bに示すように、C_BE#線180bの値が無効な値、1111からデータ転送が再開される(タイムフレームT8参照)ため、データ2がアドレス40000008に格納されるタイミングがタイムフレームT13と、1クロックサイクル分だけ遅くなる。
【0120】
以上示したように、本実施の形態に示すPCIマスタデバイス101は、データ転送を中断された場合、次に転送したいデータを転送するデータフェーズからバスサイクルを再開するので、データ転送を高速化することができる。
【0121】
(第3の実施形態)
第1の実施形態のPCIマスタデバイスの構成では、転送先のアドレスの間隔が大きくなると、次第にデータ転送速度が遅くなる。このような場合、1ワードのデータ転送が完了するたびに一旦バスサイクルを終了したあと直ぐに次にデータを転送すべき転送先のアドレスへジャンプし、そのアドレスからバスサイクルを再開し、これを繰り返すことによってすべてのデータを転送する方法の方がデータ転送が速くなる。本実施の形態では、このようなデータ転送方法と第1の実施形態に示したデータ転送方法の2つの方法から常に高速に転送できる方を選択するPCIマスタデバイスについて説明する。
【0122】
図9は本発明の第3の実施形態のデータ転送制御装置である。図中、105fは1ワードデータ転送制御部であり、転送形式選択部120により、すべてのデータを1ワードずつ個別のバスサイクルで転送すると判断した場合、転送ワード数レジスタ103に格納された転送ワード数の回数だけ、1ワードのデータを転送するバスサイクル(以下、1ワードデータ転送バスサイクルと呼ぶ)を発生させる。このとき、各データの転送先アドレスは、PCIバスが32ビットバス、すなわち、4バイト幅のバスであることから、
(転送間隔レジスタ113の値)×4
で求まる値だけ離れているので、2回目以降のアドレスは、この値をサイクル開始アドレスレジスタ108の値に加算して、次のサイクルの転送先アドレス値とする。
【0123】
DEVSEL#応答情報レジスタ118には、ターゲットデバイスのDEVSEL#の応答速度に応じて値が設定される。アドレスフェーズの次のタイムフレームでDEVSEL#がアサートされる場合、すなわち、応答速度が高速である場合、DEVSEL#の応答遅延による1ワードデータ転送バスサイクルのバスサイクル間の遅延は発生しないので、0を設定し、応答速度が高速の場合に比べて1クロックサイクル遅くなる場合、すなわち、応答速度が中速である場合、1ワードデータ転送バスサイクルのバスサイクル間の遅延が1クロックサイクル分発生するので1を設定し、さらに1クロックサイクル遅い低速の場合は2を、それよりもさらに1クロックサイクル遅いサブトラクティブ・デコーディングのデバイスである場合は3を設定する。
【0124】
転送速度比較部119は、1ワードデータ転送バスサイクルの2つのバスサイクルの先行するバスサイクルでのデータ転送が完了してから、後のバスサイクルでのデータ転送が完了するまでのクロックサイクル数からバースト転送を行った場合の、先行するデータの書き込みを有効にしたデータ転送の完了から後のデータの書き込みを有効にしたデータ転送の完了までのクロックサイクル数を引いた値を転送形式選択部120に通知する。このとき、1ワードデータ転送バスサイクルのバスサイクル間のクロックサイクル数は、前回のデータ転送後のPCIバスのアイドルフェーズの1サイクルと、アドレスフェーズの1サイクルと、DEVSEL#の応答遅延の値、すなわち、DEVSEL#応答情報レジスタ118の値と、次のデータ転送が行われるデータフェーズの1サイクルとなるので、結局、DEVSEL#応答情報レジスタ118の値に3を加えた値となる。そこで、この値から転送間隔レジスタ113の値を引き、結果を転送形式選択部120に通知する。図10は本実施の形態の動作の例を示すタイミングチャートを示す図である。同図において、タイムフレームT1およびT4がアドレスフェーズであり、それぞれ、直後のタイムフレームT2およびT5で307に示すようにDEVSEL#がアサートされており、DEVSEL#応答速度が高速の場合を示している。タイムフレームT2で1回目の1ワードデータ転送バスサイクルのデータ転送が完了すると、タイムフレームT3でバスは一旦アイドルフェーズに入る。そして、タイムフレームT4で再び2回目の1ワードデータ転送バスサイクルのアドレスフェーズに入り、タイムフレームT5で2回目のデータ転送が完了する。すなわち、この場合はDEVSEL#応答速度が高速で、DEVSEL#応答情報レジスタ118の値は0であり、1ワードデータ転送バスサイクルの2つのバスサイクルの先行するバスサイクルでのデータ転送が完了してから、後のバスサイクルでのデータ転送が完了するまでのクロックサイクル数は3サイクルとなっている。310の転送間隔レジスタ113の値4が示すように、この場合は転送速度比較部119によって求められる値は3から4を引いた−1が転送形式選択部120に通知される。
【0125】
転送形式選択部120は、転送速度比較部119から通知された値が1以上の場合、バースト転送を利用した方が速いので、バースト転送制御部105aにデータ転送を実行するように通知し、それ以外の場合、1ワードデータ転送バスサイクルを連続的に起動した方がデータの転送が速いので、1ワードデータ転送制御部105fにデータ転送を実行するように通知する。
【0126】
また、本実施の形態では、PCIターゲットデバイス140はDEVSEL#応答が高速であるとする。
【0127】
図10の310に示すように、転送間隔レジスタ113の値が4で、PCIターゲットデバイス140のDEVSEL#応答が高速であることから、転送速度比較部119の計算結果が−1となり、1以下であるので、転送形式選択部120で1ワードデータ転送バスサイクルを繰り返すように判断し、タイムフレームT1、T2に示す1回目の1ワードデータ転送バスサイクルと、タイムフレームT4、T5に示す2回目の1ワードデータ転送バスサイクルで2つのデータ転送を完了する。
【0128】
このデータ転送において、転送形式をバースト転送にした場合、図11に示すように、PCIバス上で最後のデータ転送が完了するのがタイムフレームT6となるので、1サイクル遅くなる。
【0129】
以上示したように、本実施の形態に示すPCIマスタデバイス101は、データ転送の間隔の値とDEVSEL#応答速度から1ワードデータ転送バスサイクルにおけるデータ転送間のサイクル数とバースト転送におけるデータ転送間のサイクル数を比較するので、アドレスジャンプによる1ワードデータ転送バスサイクルの繰り返しとバースト転送との間で常に高速なほうの転送形式を選択することができる。
【0130】
(第4の実施形態)
PCIターゲットデバイスに接続しているメモリがPCIバスでデータが転送される速度よりも書き込み速度が遅いデバイスである場合、バースト転送中にアクノリッジを遅くすることによってウエイトを入れる。本実施の形態はそのメモリの書き込み速度に律速し、第1の実施形態で説明したものに比べてバースト転送時に2倍の転送時間がかかるシステムを想定する。その上で、C_BE#線がオール1で書き込みを行わないデータフェーズでウエイトサイクルを除去し、データ転送を高速化するPCIターゲットデバイスについて説明する。
【0131】
図12は本発明の第4の実施形態のデータ転送制御装置である。図中、142cはバイトイネーブルデコーダであり、PCIバスインタフェース141を通じてC_BE#線180bの値を受け取ると、その値が書き込み無効な値、すなわち1111であるかどうかをチェックし、1111である場合はACK制御部142bに対して、直ちにPCIバスインタフェース141にTRDY#線180cをアサートさせるように通知する。ACK制御部142bはこの通知を受け取ると直ちにPCIバスインタフェース141にTRDY#180cをアサートさせる。
【0132】
また、本実施の形態では、メモリ146は遅いデバイスであり、書き込みにはPCIクロックの2サイクル分の時間を要するものとし、PCIバスインタフェース141は各データフェーズで1クロックサイクル分のウエイトを入れるものとする。
【0133】
図13は本実施の形態の動作の例を示すタイミングチャートを示す図である。図中、324はアクノリッジ制御部142bからPCIバスインタフェース141へのアクノリッジ信号であり、PCIバスインタフェースはこの信号が1にアサートされると、同じタイムフレームで直ちにTRDY#線180cを0にアサートする。メモリ146が書き込みに2サイクル要するデバイスなので、アクノリッジ信号は1クロックサイクルの間隔を置いてアサートされるが、バイトイネーブルデコーダ142cがC_BE#線180bの値が1111であると判別した場合は、メモリ146への書き込みが発生しないので、324に示すように、タイムフレームT6に続いてタイムフレームT7でもアサートされる。この結果、タイムフレームT6、T7と連続してTRDY#線180cがアサートされる。
PCIターゲットデバイス140にバイトイネーブルデコーダ142cがない場合、図14に示すように、タイムフレームT7ではアクノリッジ信号をアサートしないので、データの転送が遅れることになる。
【0134】
以上示したように、本実施の形態に示すPCIターゲットデバイス140は、メモリ146への実際の書き込みが発生しないタイミングでPCIバスにウエイトを入れないので、データ転送を高速化することができる。
【0135】
(実施の形態5)
第4の実施形態で説明したPCIターゲットデバイスでは、C_BE#線の値がオール1で、データの書き込みが行われないデータフェーズが入ると、その間PCIターゲットデバイスはメモリへの書き込み処理を行わない。つまり、C_BE#線の値が有効な値となるまで次の書き込みが待たされる。本実施の形態では、第4の実施形態と同様、メモリ146は遅いデバイスであり、書き込みにはPCIクロックの2サイクル分の時間を要するものとし、PCIバスインタフェース141は各データフェーズで1クロックサイクル分のウエイトを入れるものとし、第4の実施形態で示したPCIターゲットデバイスに、C_BE#線の値がオール1の間に次にデータ転送が有効となるアドレスまで書き込みアドレスを更新してAD線にドライブされている次に書き込まれるべきデータを先行的にメモリに書き込む機能を追加し、C_BE#線の値が有効な値となるまでのメモリ書き込みの待ち時間を短縮するPCIターゲットデバイスについて説明する。
【0136】
図15は本発明の第5の実施形態のデータ転送制御装置である。
【0137】
先行書き込み制御部142は、先行データ転送情報レジスタ148aに1が書き込まれているとき、先行書き込み情報レジスタ149の値が0で、有効なデータ転送が発生したタイムフレームの次のタイムフレームでC_BE#線180bが1111となった場合、先行書き込みアドレス計算部147が保持する値をアドレスレジスタ144に書き込むとともに、メモリ書き込み制御部142に対してメモリ142への書き込み処理を行うよう通知し、先行書き込み情報レジスタ149に1を書き込む。先行書き込み情報レジスタ149の値が1である場合、メモリ書き込み制御部142に対してメモリ146への書き込みを行わないように通知する。また、C_BE#線180bが有効な値でデータの転送が完了した場合、先行書き込み情報レジスタ149に0を書き込む。
【0138】
先行書き込みアドレス計算部147は、有効なデータ転送が発生したタイムフレームの次のタイムフレームでC_BE#線180bが1111となった場合、次に有効なデータが転送されるアドレスを、PCIバスが32ビット幅、すなわち、4バイト幅なので、(データ転送間隔情報レジスタ148bの値)×4をアドレスレジスタ144の値に加算することによって求め、保持する。
【0139】
先行データ転送情報レジスタ148aには、PCIマスタデバイスがC_BE#線が1111のタイムフレームで、AD線上に次に転送しようとする有効なデータをドライブをする場合、CPU160から1が書き込まれる。
【0140】
データ転送間隔情報レジスタ148bには、C_BE#線が書き込み有効な値になるデータフェーズの間隔をCPU160から設定することが可能である。
【0141】
先行書き込み情報レジスタ149の値が1の場合、メモリ146に対してC_BE#線が1111の状態でAD線にアサートされている値を次に転送しようとするアドレスへの書き込みがされていることを示す。
【0142】
図16は本実施の形態の動作の例を示すタイミングチャートを示す図である。図中、
325は先行データ転送情報レジスタ148aの値を示し、
326はデータ転送間隔情報レジスタ148bの値を示し、
327は先行書き込み情報レジスタ149の値を示す。
【0143】
本実施の形態では、325が示すように、先行データ転送情報レジスタ149に1が書き込まれており、PCIマスタデバイスがC_BE#線180bが1111のときに、次に有効なデータ転送を行いたいデータをAD線180aにドライブすることを示している。
【0144】
また、326に示すように、データ転送間隔情報レジスタ148bに、転送間隔レジスタ113と同じ値、2が書き込まれている。
【0145】
タイムフレームT6でC_BE#線180bに1111がアサートされると、次のタイムフレームT7で先行書き込みアドレス計算部147が有効なデータが転送されるアドレスを、
(データ転送間隔情報レジスタ148bの値)×4
すなわち、8をアドレスレジスタ315が前タイムフレームで保持していた値、40000000に加算して40000008であると算出し、この値を先行書き込み制御部142dが315に示すようにアドレスレジスタ315に書き込む。メモリ書き込み制御部142はメモリ146のアドレス40000008へデータ2の書き込みを開始し、タイムフレームT9で書き込みが完了する。先行書き込み情報レジスタ149には、327に示すように、タイムフレームT7で1が書き込まれるので、実際にバイトイネーブルレジスタ145が0000となるタイムフレームT8ではメモリ146への書き込みは発生しない。
【0146】
PCIターゲットデバイス140に先行書き込み制御部142dがない場合、図13に示すように、タイムフレームT10で40000008番地への書き込みが完了するので、本実施の形態の方が1クロックサイクル分早くデータの書き込みを完了することが出来る。
【0147】
以上示したように、本実施の形態に示すPCIターゲットデバイス140は、メモリ146への実際の書き込みをC_BE#線が無効な値の間に先行的に行うので、データ転送を高速化することができる。
【0148】
(第6の実施形態)
第1の実施形態では、データの転送先のアドレスの間に一定の間隔がある場合にバースト転送が可能なデータ転送制御装置を示したが、本実施の形態では、一連のデータの転送先の中に、一定の間隔を置いてデータを転送しないアドレスがある場合にバースト転送が可能なデータ転送制御装置を示す。
【0149】
図17は本発明の第6の実施形態のデータ転送制御装置である。第1の実施形態との違いは、サイクル制御部105がサイクル制御部1705に、転送間隔レジスタ113が本実施の形態では非転送間隔レジスタ1713に、転送間隔カウンタ114が本実施の形態では非転送間隔カウンタ1714に、取って代わっている点である。
【0150】
サイクル制御部1705は、第1の実施形態のサイクル制御部105との動作の違いは、サイクル制御部105が転送間隔カウンタ114の値が初期値0であれば、C_BE#線を有効な値に設定するのに対し、非転送間隔カウンタ1714の値が初期値0であれば、BE#線無効化部105dによって、C_BE#線を無効な値に設定する点と、サイクル制御部105が転送間隔カウンタ114の値が初期値0でなければ、BE#線無効化部105dによって、C_BE#線を無効な値に設定するのに対し、非転送間隔カウンタ1714の値が初期値0でなければ、C_BE#線を有効な値に設定する点である。
【0151】
非転送間隔レジスタ1713は、データを転送しないアドレスの間隔をCPU160からソフトウエアにより設定することが可能である。
【0152】
非転送間隔カウンタ1714は、バースト転送中にデータフェーズが完了するたびに値がインクリメント部115によりインクリメントされ、値が非転送間隔レジスタ1713の値に一致したとき、およびバスサイクルが完了したときはカウンタ初期化部117により初期値0が書き込まれ、値が0であるときはサイクル制御部105により、C_BE#線が無効な値に設定される。
【0153】
図18は本実施の形態の動作の例を示すタイミングチャートを示す図である。図中、
313はデータバッファ104の先頭の4ワードのデータを示し、
313aはデータバッファ104の先頭の1ワードのデータを示し、
313bはデータバッファ104の2番目の1ワードのデータを示し、
313cはデータバッファ104の3番目の1ワードのデータを示し、
313dはデータバッファ104の4番目の1ワードのデータを示し、
1810は非転送間隔レジスタ1713の値を示し、
1811は非転送間隔カウンタ1714の値を示す。
【0154】
本実施の形態では、非転送間隔レジスタ1713に3が設定されているので、タイムフレームT2からT4に示す3回の有効なデータフェーズの後に、タイムフレームT5で1度C_BE線が1111となるデータフェーズが発生している。
【0155】
【発明の効果】
以上示したように、本発明のデータ転送制御装置によれば、所定の間隔以下に等間隔に離れたアドレスに1ワードずつ複数ワードのデータを転送する場合、転送先のアドレスが連続していない二つの1ワードデータの転送の間に、前記バスの書き込み制御線を書き込み禁止の状態にしながらデータの書き込み動作を挿入することによって、バースト転送によるデータ転送が可能となり、シングル転送の繰り返しによるデータ転送よりも高速にデータを転送することが可能である。
【0156】
また、バスの書き込み制御線の書き込み禁止の状態でのデータの書き込み動作中にデータ転送の中断を通知された場合、次にデータを転送しようとするアドレスから新たなバスサイクルを開始して第2のデータの転送から実行することにより、無駄なデータフェーズを省略することができ、高速にデータを転送することが可能である。
【0157】
また、転送先のアドレスが連続していない第1のデータと第2のデータを順に転送する場合に、二つのデータの転送の間に、前記バスの書き込み制御線を書き込み禁止の状態にしながらデータの書き込み動作を挿入する第1のデータ転送形式と、第1のデータの転送後に一旦バスサイクルを終了し、アドレスを次にデータを転送したいアドレスから新たにバスサイクルを開始して第2のデータを転送する第2のデータ転送形式との所要時間を比較して、所要時間が長くない方のデータ転送形式を用いてデータを転送することにより、常に最も速いデータ転送形式を選択することが可能である。
【0158】
また、書き込み制御線が書き込み禁止の状態である時には、マスタデバイスはデータ線に次に転送しようとするデータをドライブし、ターゲットデバイスは先行的にデータを受理することにより、データ転送の高速化が可能である。
【図面の簡単な説明】
【図1】第1の実施形態のデータ転送制御装置を示す図である。
【図2】図1に示した装置の動作のフローを示す図である。
【図3A】図1に示した装置のタイミングチャートである。
【図3B】図1に示した装置のタイミングチャートである。
【図4】図1に示した装置のメモリマップを示す図である。
【図5】第2の実施形態のデータ転送制御装置を示す図である。
【図6】図5に示した装置の動作のフローを示す図である。
【図7】図5に示した装置のタイミングチャートである。
【図8A】第2の実施形態の効果を示すためのタイミングチャートである。
【図8B】第2の実施形態の効果を示すためのタイミングチャートである。
【図9】第3の実施形態のデータ転送制御装置を示す図である。
【図10】図9に示した装置のタイミングチャートである。
【図11】第3の実施形態の効果を示すためのタイミングチャートである。
【図12】第4の実施形態のデータ転送制御装置を示す図である。
【図13】図12に示した装置のタイミングチャートである。
【図14】第4の実施形態の効果を示すためのタイミングチャートである。
【図15】第5の実施形態のデータ転送制御装置を示す図である。
【図16】図15に示した装置のタイミングチャートである。
【図17】第6の実施形態のデータ転送制御装置を示す図である。
【図18】図17に示した装置のタイミングチャートである。
【図19】従来のデータ転送制御装置を示す図である。
【図20A】図19に示した装置のタイミングチャートである。
【図20B】図19に示した装置のタイミングチャートである。
【符号の説明】
101 PCIマスタデバイス
102 転送先開始アドレスレジスタ
103 転送ワード数レジスタ
104 データバッファ
105 サイクル制御部
105a バースト転送制御部
105b データ更新部
105c 中断サイクル再開部
105d BE線無効化部
105e 再開アドレス計算部
105f 1ワードデータ転送制御部
104 転送間隔レジスタ
105 ターゲット情報レジスタ
106 転送開始レジスタ
107 PCIバスインタフェース
108 サイクル開始アドレスレジスタ
109 転送ワード数カウンタ
110 インクリメント部
111 比較部
112 カウンタ初期化部
113 転送間隔レジスタ
114 転送間隔カウンタ
115 インクリメント部
116 比較部
117 カウンタ初期化部
118 DEVSEL#応答情報レジスタ
119 転送速度比較部
120 転送形式選択部
140 PCIターゲットデバイス
141 PCIバスインタフェース
142a アドレスデコーダ
142b アクノリッジ信号制御部
142c バイトイネーブルデコーダ
142d 先行書き込み制御部
143 データレジスタ
144 アドレスレジスタ
145 バイトイネーブルレジスタ
146 メモリ
147 先行書き込みアドレス計算部
148a 先行データ転送情報レジスタ
148b データ転送間隔情報レジスタ
149 先行書き込み情報レジスタ
160 CPU
170 メモリ
180 PCIバス
180a AD線
180b C_BE#線
180c FRAME#線
180d IRDY#線
180e TRDY#線
180f DEVSEL#線
180g STOP#線
190 バスリクエスト線
191 バスグラント線

Claims (9)

  1. バスに接続され、前記バス上のデバイスへのデータ転送を制御する装置であって、
    前記バスの書き込み制御線を書き込み禁止の状態にしながらデータの書き込み動作を行うバスサイクル制御手段を備える
    ことを特徴とするデータ転送制御装置。
  2. バスに接続され、前記バス上のデバイスへのデータ転送を制御する装置であって、
    データを保持するデータ記憶手段と、
    データの転送ワード数を保持する転送ワード数記憶手段と、
    1ワードデータの転送先のアドレスの間隔を保持する転送間隔記憶手段と、
    バースト転送中に、前記転送間隔記憶手段に保持された間隔で、前記バスの書き込み制御線を書き込みが有効な状態にし、その他の期間は書込み禁止状態にして、前記書き込み制御線を書き込みが有効な状態で前記転送ワード数記憶手段に保持されたワード数のデータを転送するバスサイクル制御手段とを備える
    ことを特徴とするデータ転送制御装置。
  3. 請求項2において、
    さらに、
    バスサイクルの開始アドレスを保持するサイクル開始アドレス保持手段と、
    書き込み禁止の状態でのデータの転送中に前記デバイスからデータ転送の中断を通知された場合、第2のデータの転送先のアドレスを計算する再開アドレス計算手段と、
    書き込み禁止の状態でのデータの転送中に前記デバイスからデータ転送の中断を通知された場合、前記再開アドレス計算手段で計算されたアドレスを前記サイクル開始アドレス保持手段に転送し、前記サイクル開始アドレスレジスタに格納されたアドレスから新たなバスサイクルを発生させる中断サイクル再開手段とを備える
    ことを特徴とするデータ転送制御装置。
  4. 請求項2または請求項3において、
    さらに、
    ターゲットデバイスのデバイス応答速度を保持する応答速度記憶手段と、
    前記転送間隔記憶手段と前記応答速度記憶手段の値からバースト転送によるデータ転送速度と、転送先アドレスへの1ワードのデータ転送の繰り返しによるデータ転送を比較する転送速度比較手段と、
    前記転送速度比較手段によりバースト転送の方が転送先アドレスへの1ワードのデータ転送の繰り返しによるデータ転送よりも速い場合、バースト転送を選択し、そうでない場合、転送先アドレスへの1ワードデータ転送バスサイクルの繰り返しを選択する転送形式選択手段とを備える
    ことを特徴とするデータ転送制御装置。
  5. 請求項2から請求項4のいずれか1つにおいて、
    前記バスサイクル制御手段は、
    前記書き込み制御線が書き込み禁止の状態である時には、データ線に次に転送しようとする1ワードのデータをドライブする
    ことを特徴とするデータ転送制御装置。
  6. バスの書き込み制御線が書き込み禁止の状態であるときにデータの書き込み動作を受けた場合、前記書き込み制御線が書き込みが有効な状態であるときよりも早くデータの受理を通知するバス応答手段を備える
    ことを特徴とするデータ転送制御装置。
  7. データの転送先のアドレスの間隔を保持する記憶手段と、
    バスの書き込み制御線が書き込み禁止の状態であるときにデータの転送動作を受けた場合、前記記憶手段に格納された値から次に前記書き込み制御線が書き込み許可の状態となるアドレスを求め、データ線にドライブされている信号の値を前記アドレスに書き込む書き込み制御手段とを備える
    ことを特徴とするデータ転送制御装置。
  8. バスに接続され、前記バス上のデバイスへのデータ転送を制御する装置であって、
    データを保持するデータ記憶手段と、
    データの転送ワード数を保持する転送ワード数記憶手段と、
    データの転送を行わないアドレスの間隔を保持する非転送間隔記憶手段と、
    バースト転送中に、前記転送間隔記憶手段に保持された間隔で、前記バスの書き込み制御線を書き込み禁止状態にし、その他の期間は書込みが有効な状態にして、前記書き込み制御線を書き込みが有効な状態で前記転送ワード数記憶手段に保持されたワード数のデータを転送するバスサイクル制御手段とを備える
    ことを特徴とするデータ転送制御装置。
  9. バスに接続され、前記バス上のデバイスへのデータ転送を制御する方法であって、
    データを保持するデータ記憶工程と、
    データの転送数を保持する転送ワード数記憶工程と、
    データの転送先のアドレスの間隔を保持する転送間隔記憶工程と、
    バースト転送中に、前記転送間隔記憶手段に保持された間隔で、前記バスの書き込み制御線を書き込みが有効な状態にし、その他の期間は書込み禁止状態にして、前記書き込み制御線を書き込みが有効な状態で前記転送ワード数記憶手段に保持されたワード数のデータを転送するバスサイクル制御工程とを備える
    ことを特徴とするデータ転送制御方法。
JP2003067193A 2003-03-12 2003-03-12 データ転送制御方法および装置 Withdrawn JP2004280191A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2003067193A JP2004280191A (ja) 2003-03-12 2003-03-12 データ転送制御方法および装置
US10/775,124 US20040181612A1 (en) 2003-03-12 2004-02-11 Method and system for controlling data transfer
CN200410039645.2A CN1282101C (zh) 2003-03-12 2004-03-12 数据转送控制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003067193A JP2004280191A (ja) 2003-03-12 2003-03-12 データ転送制御方法および装置

Publications (2)

Publication Number Publication Date
JP2004280191A true JP2004280191A (ja) 2004-10-07
JP2004280191A5 JP2004280191A5 (ja) 2006-04-27

Family

ID=32959268

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003067193A Withdrawn JP2004280191A (ja) 2003-03-12 2003-03-12 データ転送制御方法および装置

Country Status (3)

Country Link
US (1) US20040181612A1 (ja)
JP (1) JP2004280191A (ja)
CN (1) CN1282101C (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014149849A (ja) * 2005-10-20 2014-08-21 Qualcomm Incorporated セマフォ予約をクリアする方法および装置
JP2016525237A (ja) * 2013-07-26 2016-08-22 インテル・コーポレーション 不揮発性メモリインターフェース

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4891788A (en) * 1988-05-09 1990-01-02 Kreifels Gerard A FIFO with almost full/almost empty flag
JPH0496163A (ja) * 1990-08-08 1992-03-27 Nec Corp Dmaコントローラ
US5293496A (en) * 1993-01-12 1994-03-08 Unisys Corporation Inhibit write apparatus and method for preventing bus lockout
US5522050A (en) * 1993-05-28 1996-05-28 International Business Machines Corporation Bus-to-bus bridge for a multiple bus information handling system that optimizes data transfers between a system bus and a peripheral bus
US5561821A (en) * 1993-10-29 1996-10-01 Advanced Micro Devices System for performing I/O access and memory access by driving address of DMA configuration registers and memory address stored therein respectively on local bus
US5983303A (en) * 1997-05-27 1999-11-09 Fusion Micromedia Corporation Bus arrangements for interconnection of discrete and/or integrated modules in a digital system and associated method
US6993605B2 (en) * 2001-02-28 2006-01-31 Sharp Laboratories Of America, Inc. Adaptive run-time data transfer optimization
US6775717B1 (en) * 2001-08-31 2004-08-10 Integrated Device Technology, Inc. Method and apparatus for reducing latency due to set up time between DMA transfers

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014149849A (ja) * 2005-10-20 2014-08-21 Qualcomm Incorporated セマフォ予約をクリアする方法および装置
JP2016525237A (ja) * 2013-07-26 2016-08-22 インテル・コーポレーション 不揮発性メモリインターフェース

Also Published As

Publication number Publication date
CN1530845A (zh) 2004-09-22
US20040181612A1 (en) 2004-09-16
CN1282101C (zh) 2006-10-25

Similar Documents

Publication Publication Date Title
KR100253753B1 (ko) 지연 트랜잭션을 실행하기 위한 장치 및 방법
US6735642B2 (en) DMA doorbell
EP1191452B1 (en) Out of order associative queue in two clock domains
US7117289B2 (en) Claiming cycles on a processor bus in a system having a PCI to PCI bridge north of a memory controller
JP2002509315A (ja) ソース同期および共通クロック・プロトコルによるデータ転送
US5892978A (en) Combined consective byte update buffer
US20020019899A1 (en) Method of bus priority arbitration
US5857082A (en) Method and apparatus for quickly transferring data from a first bus to a second bus
US6266723B1 (en) Method and system for optimizing of peripheral component interconnect PCI bus transfers
US6115767A (en) Apparatus and method of partially transferring data through bus and bus master control device
EP1746497B1 (en) Apparatus and method for sparse line write transactions
JP3824122B2 (ja) Dma装置
JP2004280191A (ja) データ転送制御方法および装置
JP3061106B2 (ja) バスブリッジおよびそれを備えた計算機システム
US5699540A (en) Pseudo-concurrent access to a cached shared resource
JP2003316724A (ja) 制御チップセット間の信号送信デバイス
JPH0877126A (ja) 装置間の通信システム及び方法
US6269360B1 (en) Optimization of ordered stores on a pipelined bus via self-initiated retry
US5768558A (en) Identification of the distinction between the beginning of a new write back cycle and an ongoing write cycle
US20010002481A1 (en) Data access unit and method therefor
EP0359232A2 (en) Computer system and method for setting recovery time
JP2001195350A (ja) データ転送装置およびデータ転送方法
JP2003122623A (ja) 書き込みコマンド高速送信のためのグラフィックスコントローラ
JP3190871B2 (ja) バスマスタ装置
JPH10111798A (ja) 情報処理装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060310

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060310

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20080903