(57)【要約】【課題】  バスにおけるデータ転送を効率良く行う。【解決手段】  １つのアドレス情報に基づき複数のデータを連続してデータ転送する際に、各データが有効であるか否かを示すマスク情報（byteen）を通知し、通知されたマスク情報に基づき、データ転送された各データが有効であるか否かを決定し、該決定に応じて各データへのアクセスを行う。【選択図】      図２
2006163737.tif 000002
【特許請求の範囲】
【請求項１】
バスに接続されたモジュール間のデータ転送におけるバス制御方法であって、
１つのアドレス情報に基づき複数のデータを連続してデータ転送する際に、各データが有効であるか否かを示すマスク情報を通知する工程と、
前記通知されたマスク情報に基づき前記データ転送された各データが有効であるか否かを決定し、該決定に応じて各データへのアクセスを制御する工程とを有することを特徴とするバス制御方法。
【請求項２】
前記通知する工程では、前記バスで定義されるバイトイネーブル信号として前記マスク情報を通知することを特徴とする請求項１記載のバス制御方法。
【請求項３】
前記制御する工程では、データが有効であると決定した場合に、該データへのアクセスを行うことを特徴とする請求項１記載のバス制御方法。
【請求項４】
前記通知する工程では、前記バイトイネーブル信号のビット数よりも、前記バスで定義される１つのトランザクションで発行可能な最大バースト長数の方が大きい場合、所定の規則に従って変換されたマスク情報を通知することを特徴とする請求項２記載のバス制御方法。
【請求項５】
バスに接続されたモジュール間のデータ転送におけるバス制御システムであって、
１つのアドレス情報に基づき複数のデータを連続してデータ転送する際に、各データが有効であるか否かを示すマスク情報を通知する手段と、
前記通知されたマスク情報に基づき前記データ転送された各データが有効であるか否かを決定し、該決定に応じて各データへのアクセスを制御する手段とを有することを特徴とするバス制御システム。
【請求項６】
請求項１記載のバス制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスに接続されたモジュール間のデータ転送におけるバス制御に関する。
【背景技術】
【０００２】
近年、デジタルカメラ、プリンタ、コピー機などの情報機器に対する高画質化の要求が著しく高くなってきている。この高画質化に伴い、これらの情報機器によって処理しなければならないデータ量も著しく増加してきている。そして、これら情報機器のデータ処理はその内部にある大規模集積回路（ＬＳＩ）によって処理されている。
【０００３】
ＬＳＩ内部は主に様々なデータの加工を行う機能モジュールと、それら機能モジュールを接続するバスから構成されており、ＬＳＩ外部から取り込んだデータを、バスを用いて機能モジュール間で転送を行い、各機能モジュールによってデータの加工を行い、最終的なデータの出力を行っている。
【０００４】
従って、ＬＳＩで処理されるデータ対象が増加すると、各機能モジュールのデータ加工能力と共にバスのデータ転送能力がＬＳＩ全体のデータ処理能力を決定する要因となる。このバスのデータ転送能力を向上させる手段として、例えば動作周波数を上げる、データ転送に用いる信号線のビット幅を増加させるなどが考えられるが、これらは物理的な制約やコストの問題によって不可能な場合がある。
【０００５】
そこで、このバスのデータ転送効率を向上させるために、一つのバストランザクションをタイミング的に独立して動作することが可能な、データ転送命令の発行を行うアドレスフェーズと実際のデータ転送を行うデータフェーズとに分離し、その二つをパイプライン的に動作させる手法がある。また、一つのバストランザクションのデータ転送時に、連続したデータを複数のサイクルを用いて転送する「バースト転送」を用いる手法がある。
【０００６】
つまり、上記二つの手法を用いることで、バス上で経過するサイクル中で実際のデータ転送を行っているサイクルの比率を向上させ、バスのデータ転送効率を向上させることができる。
【０００７】
バスの転送効率を向上させるための技術は、例えば、特許文献１に記載されている。
【特許文献１】特開平11-23221号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述したような手法を用いたバスでのデータ転送においては、なるべく大きなバースト長によるバースト転送を行った方がバスのデータ転送効率を上げることができる。また、同じデータ量の転送であれば、大きなバースト長を用いた転送を行えばそれだけバストランザクションの数が減少する。それによってアドレスフェーズでのバストランザクションの予約数が減少するため、アドレスフェーズによるオーバヘッドはデータフェーズによって完全に隠蔽されると共に、データフェーズでの各バストランザクション間の制御信号のやり取りに起因するオーバヘッドも減少する。
【０００９】
反対に、小さなバースト長によるバースト転送を行った場合、もしくはシングル転送を行った場合にはバスの転送効率は下がってしまう。同じデータ量の転送であれば、小さなバースト長を用いた転送、もしくはシングル転送を行えばそれだけバストランザクションの数が増加する。それによってアドレスフェーズで消費するサイクル数がデータフェーズで消費するサイクル数よりも多くなる場合が発生し、この場合はアドレスフェーズによるオーバヘッドはデータフェーズによって隠蔽することはできない。また、データフェーズでの各バストランザクション間の制御信号のやり取りに起因するオーバヘッドも増加する。
【００１０】
また、バースト転送を行うためにはデータ転送スタートアドレス、データ転送サイズがバスのバースト転送の仕様又はバススレーブの仕様により、例えば２の冪乗などに制限を受ける場合が多い。
【００１１】
しかしながら、実際のデータ処理においては、データ転送の始点、終点が２、４、８などの倍数になっていない場合、データ転送領域が連続しておらず、途中であるオフセット値分だけ転送アドレスがジャンプする場合、対象とするデータのサイズ自体が２、４、８などの倍数になっていない場合などが考えられ、上記の制限を満たしていない場合が多々存在する。よって、小さなバースト長によるバースト転送、もしくはシングル転送を行う必要があり、バスにおけるデータ転送効率が低下してしまう。
【００１２】
本発明は、上記課題を解決するためになされたもので、バスにおけるデータ転送を効率良く行うことを目的とする。
【課題を解決するための手段】
【００１３】
本発明は、バスに接続されたモジュール間のデータ転送におけるバス制御方法であって、１つのアドレス情報に基づき複数のデータを連続してデータ転送する際に、各データが有効であるか否かを示すマスク情報を通知する工程と、前記通知されたマスク情報に基づき前記データ転送された各データが有効であるか否かを決定し、該決定に応じて各データへのアクセスを制御する工程とを有することを特徴とする。
【００１４】
また、本発明は、バスに接続されたモジュール間のデータ転送におけるバス制御システムであって、１つのアドレス情報に基づき複数のデータを連続してデータ転送する際に、各データが有効であるか否かを示すマスク情報を通知する手段と、前記通知されたマスク情報に基づき前記データ転送された各データが有効であるか否かを決定し、該決定に応じて各データへのアクセスを制御する手段とを有することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、バスにおけるデータ転送を効率良く行うことができる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。尚、本実施形態では、アドレスフェーズとデータフェーズとがパイプライン的に動作するバスにおいて、アドレスフェーズ及びデータフェーズ共に、信号線を追加すること無く、バースト転送時のデータフェーズにおけるデータ信号のマスク情報をバスマスタからバススレーブに伝達することを可能にし、効率の良いデータ転送を実現するものである。
【００１７】
図１は、本実施形態におけるバス制御方法を適用したシステムの構成の一例を示す図である。図１において、１０１はシステムに存在する機能モジュール間のデータ転送のためのバスであり、機能モジュール間を接続する信号線と機能モジュールからの転送命令要求やデータ転送要求の調停を行うアービタで構成されている。
【００１８】
１０２はプロセッサであり、本実施形態ではバス１０１に対してバスマスタとして接続している。１０３はＤＭＡコントローラであり、本実施形態ではバス１０１に対してバスマスタとして接続している。
【００１９】
１０４はメモリコントローラであり、本実施形態ではバス１０１に対してバススレーブとして接続している。１０５はメモリデバイスであり、メモリコントローラ１０４と接続している。
【００２０】
図１に示す構成において、プロセッサ１０２がメモリデバイス１０５に対してデータの読み込み又は書き込みを行うには、まずプロセッサ１０２がメモリコントローラ１０４とバス１０１に定義されるバスプロトコルに従ってバス１０１上でデータ転送を行い、次にメモリコントローラ１０４がメモリデバイス１０５に対してデータの読み込み又は書き込みを行うことで実現する。
【００２１】
また、ＤＭＡコントローラ１０３もプロセッサ１０２と同様に、メモリデバイス１０５に対してデータの読み込み又は書き込みを行う。
【００２２】
次に、図２を参照してバス１０１に定義されるバスプロトコルについて説明する。図２は、バス１０１上で行われるデータ転送時のタイミングチャートの一例を示す図である。まず、バス１０１に定義される信号線について説明する。
【００２３】
バス１０１のバスプロトコルのアドレスフェーズには以下の信号線が含まれる。
・バスクロックであるclk信号線
・バスマスタからバス１０１に対してデータ転送命令要求を示すreq信号線
・バス１０１からバスマスタに対してデータ転送命令要求に許可を示すgnt信号線
・各データ転送命令を区別するためにバス１０１が各転送命令にＩＤ番号を付与し、そのＩＤ番号を示すtxid信号線
・バスマスタからバス１０１へデータ転送命令を出力中であることを示すtx信号線
・バススレーブがバスマスタに対してデータ転送命令を受理したことを示すack信号線
・バスマスタからバススレーブへのデータ転送命令のアドレス値を示すaddr信号線
・バスマスタからバススレーブへのデータ転送命令が読み込みの場合はハイ（Ｈ）の値を示し、書き込みの場合はロー（Ｌ）の値を示すrdnotwr信号線
・バスマスタからバススレーブへのデータ転送命令のバースト長値として１、２、４、８の値を示す２ビットのlength信号線
・バスマスタからバススレーブへのデータ転送命令のバイトイネーブル値、或いは本発明の特徴を有する値を示す４ビットのbyteen信号線。
【００２４】
尚、上述のlength信号線の値とバースト長値との対応は、length信号線の値が２進数で00、01、10、11のときに順に１０進数で１、２、４、８のバースト長値を示している。
【００２５】
次に、バス１０１のバスプロトコルのデータフェーズには以下の信号線が含まれる。
・バススレーブからバスマスタに対して既に受理しているデータ転送命令のうちの一つが開始可能であることを示すslvdrdy信号線
・バススレーブからバスマスタに対して開始可能なデータ転送命令のアドレスフェーズ中のtxid信号線で示されたＩＤ番号を示すnextid信号線
・バス１０１からバスマスタ及びバススレーブに対してデータ転送命令の開始を示すdgnt信号線
・バスマスタからバス１０１に対してデータ転送中であることを示すdbsy信号線
・バススレーブからバスマスタに対してバススレーブが、バスマスタが出力したデータを取得したことを示すslvdstb信号線
・バススレーブからバスマスタに対してバススレーブがデータを出力中であることを示すslvddrv信号線
・バススレーブからバスマスタに対して転送するデータの値を示すdatas2m信号線
・バスマスタからバススレーブに対して転送するデータの値を示すdatam2s信号線。
【００２６】
尚、上述のdatas2m信号線及びdatam2s信号線で転送されるデータは３２ビットのデータである。
【００２７】
また、図２に示す信号線名の欄に「cycle」とあるのは便宜上サイクル数を示すものであり、バス１０１に定義される信号線ではない。
【００２８】
次に、図２に示すバストランザクションの詳細について説明する。尚、このバストランザクションは、ＤＭＡコントローラ１０３がバースト転送によってメモリデバイス１０５にデータを書き込むものである。
【００２９】
まずサイクル０において、ＤＭＡコントローラ１０３がバス１０１に対してデータ転送命令要求を示しているので、req信号線が「Ｈ」になっている。これに対して、次のサイクル１で、バス１０１が許可を示し、gnt信号線が「Ｈ」となる。このバス１０１からの許可を受けてサイクル２で、ＤＭＡコントローラ１０３はデータ転送命令をバス１０１に出力する。このデータ転送命令の内容は、addr信号線、rdnotwr信号線、length信号線の値から、アドレス値「0x0100」から連続した８ワードをバースト転送によって書き込むというものであることが分かる。
【００３０】
ここで、byteen信号線の値に注目する。本実施形態では、byteen信号線の値はバースト転送のデータを有効とするか、無効とするかを示すマスク情報として用いるものである。具体的には、バースト長が２以上の場合におけるbyteen信号線の値は図３に示す対応関係によって値を決定している。
【００３１】
データフェーズにおいて、データ転送時のデータの値を示すdatas2m信号線又はdatam2s信号線は、バースト転送時にバスサイクルに合わせて連続的に変化することで指定されたバースト長分のワードデータをまとめて転送するが、何番目の転送データが有効又は無効であるかは、図３に示すbyteen信号線の値と、バースト転送データの有効／無効との対応関係に基づいて決定される。
【００３２】
従って、サイクル２で、ＤＭＡコントローラ１０３が出力しているデータ転送命令は、byteen信号の値が「1101」であるので、バースト転送によって連続するデータのうち１〜３番目の値はマスクされて「無効」であり、４〜８番目のデータが「有効」であることを示している。
【００３３】
そして、サイクル３において、メモリコントローラ１０４がこのデータ転送命令を受理し、ack信号線を「Ｈ」にする。
【００３４】
次に、このデータ転送命令を受けたメモリコントローラ１０４は、サイクル４でデータフェーズにおいてデータ転送が開始可能であることを示すためにslvdrdy信号線を「Ｈ」にする。また、アドレスフェーズにおいて、このデータ転送命令に対して付与されたＩＤ番号であるtxid信号線の「0000」の値と等しい値をnextid信号線に出力する。
【００３５】
次に、サイクル５で、メモリコントローラ１０４はデータ転送開始を示すdgnt信号線を「Ｈ」にする。
【００３６】
次のサイクル６からは、データ転送中を示すdbsy信号線とメモリコントローラ１０４がデータ出力中であることを示すslvdstb信号線とが共に「Ｈ」となり、実際のデータ転送が行われる。ここで、データの値はdatam2s信号線で示されているが、データ転送命令中のbyteen信号線の値と図３に示す対応関係から、１〜３番目、即ちサイクル６〜８の値はマスクされて「無効」であり、４〜８番目、即ちサイクル９〜１３のデータが「有効」である。このデータ転送命令中のaddr信号線の値で示されるアドレス値と合わせると、以下に示す番地とデータの対応の通りに書き込むこととなる。
【００３７】
0x010c〜0x010f番地 : d0
0x0114〜0x0117番地 : d1
0x0118〜0x011b番地 : d2
0x011c〜0x011f番地 : d3
0x0120〜0x0123番地 : d4
よって、アドレス「0x0100」番地から「0x010b」番地には一切書き込みはされず、既に存在するデータが保持される。
【００３８】
上述したように、新たにバス１０１に対して信号線を追加すること無く、更にはlength信号線によって示すことができないバースト長値のバースト転送を、転送データのマスク機能によって実現することができる。
【００３９】
また、バスの定義では、バースト長が最大８であり、単純にバースト転送時のデータの有効又は無効を各ビットに割り振ったのでは８ビットが必要となり、バイトイネーブルを示す４ビットのbyteen信号線ではビット数が不足してしまう。しかし、図３に示すような対応関係を用いることにより、４ビットのbyteen信号線をマスク情報として利用することが可能となる。
【００４０】
次に、プロセッサ１０２によるバストランザクションについて説明する。この例も上述したＤＭＡコントローラ１０３によるバストランザクションの例と同様に、サイクル５においてデータ転送命令を発行し、そのデータ転送の内容はアドレス値「0x1000」に対してシングル書き込みを行うというものである。
【００４１】
ここでは、length信号線の値「00」が示すバースト長が「１」なので、バーストでなくシングルの読み込みとなっており、byteen信号線の示すバイトイネーブルの値はそのままバイトイネーブルとしての意味を持つ。
【００４２】
これを受けてデータフェーズにおいても、上述のＤＭＡコントローラ１０３による例と同様に、サイクル１６からデータ転送を行っている。そして、サイクル１８で、datas2m信号線の値「D0」がメモリデバイス１０５から読み込んだデータである。また、アドレスフェーズで指定されたアドレス値とバイトイネーブル値と合わせると、データの値はアドレス「0x1000」番地とアドレス「0x1001」番地のデータを示していることとなる。
【００４３】
上述したように、バースト転送でない場合においては、従来通りのバイトイネーブルを用いたバストランザクションを行うことができる。
【００４４】
また、マスク情報として、図４に示すような図３とは違うbyteen信号線の値とバースト転送データの有効／無効との対応関係を用いることにより対象とするデータ処理に適したパターンを選択、使用することが可能となる。
【００４５】
図４に示すパターンは複雑にバースト転送の途中をマスクしているので、このパターンによれば、従来のバスプロトコルでは非常に多くのトランザクションを要するデータ転送を一つのトランザクションによって実現することが可能となる。
【００４６】
更に、バイトイネーブル値を示すbyteen信号線のビット数と等しいバースト長が最大のバースト転送、即ち、byteen信号線のビット数を「４」としたときに最大のバースト長が「４」である場合について説明する。
【００４７】
この場合、図５に示すようなbyteen信号線の値とバースト転送データの有効／無効との対応関係を用いる。図３、図４に示すマスク情報とは違い、byteen信号線の値の各ビットの値が「０」の時に「無効」、「１」の時に「有効」になるような対応関係である。
【００４８】
以上説明したように、本実施形態によれば、バスに新たな信号線を追加すること無く、アドレスフェーズとデータフェーズとがパイプライン的に動作するバスにおいて、バースト長が２以上の転送の場合にアドレスフェーズで用いるバイトイネーブル信号の値に基づいてデータフェーズで用いるデータ信号のマスク情報を決定し、データフェーズで行われるデータ転送にそのマスク情報を適用することが可能となり、バスを用いたデータ転送を効率良く実現することができる。
【００４９】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【００５０】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００５１】
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【００５２】
このプログラムコードを供給するための記録媒体としては、例えばフロッピー（登録商標）ディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００５３】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００５４】
更に、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００５５】
【図１】本実施形態におけるバス制御方法を適用したシステムの構成の一例を示す図である。
【図２】バス１０１上で行われるデータ転送時のタイミングチャートの一例を示す図である。
【図３】本実施形態におけるマスク情報の一例を示す図である。
【図４】変形例１におけるマスク情報の一例を示す図である。
【図５】変形例２におけるマスク情報の一例を示す図である。
【符号の説明】
【００５６】
１０１  バス
１０２  プロセッサ
１０３  ＤＭＡコントローラ
１０４  メモリコントローラ
１０５  メモリデバイス
【図１】
2006163737.tif 000003
【図２】
2006163737.tif 000004
【図３】
2006163737.tif 000005
【図４】
2006163737.tif 000006
【図５】
2006163737.tif 000007