(57)【要約】【課題】ＰＣＩコントローラと別のＰＣＩデバイスとをＰＣＩバス上に搭載したシステムで、ＰＣＩバスが混んでいるときや入出力が遅いときであっても、連続バーストで効率よくデータの転送を行う。【解決手段】ＰＣＩコントローラ１は、ＰＣＩ側制御部１１、バーストアクセス用デュアルポートメモリ１２、Ｉ／Ｏ側制御部１３、及びアドレス比較部１４を備える。アドレス比較部１４は、メモリ１２を用いて所定バースト数のデータを転送中に、メモリ１２のＲｅａｄアドレスとＷｒｉｔｅアドレスとを比較し、比較結果のステータス信号（ＦＩＦＯＤＲＥＱ信号で例示）をＰＣＩ側制御部１１に送出する。ＰＣＩ側制御部１１は、ＦＩＦＯＤＲＥＱ信号が、ＲｅａｄアドレスとＷｒｉｔｅアドレスとの差が所定値より小さいことを示す信号であったときのみ、所定バースト数のデータ転送が完了していても、ＰＣＩバスを解放せずに、データのバースト転送を続行する。【選択図】図１
2007004314.tif 000002
【特許請求の範囲】
【請求項１】
ＰＣＩバスのバスマスタになって、Ｉ／Ｏバスで接続されたＩ／Ｏデバイスと前記ＰＣＩバス上にある別のＰＣＩデバイスとの間でデータの転送を行うことが可能なＰＣＩコントローラであって、Ｒｅａｄ／Ｗｒｉｔｅ可能なデュアルポートに対応したバースト転送用のバッファメモリと、該バッファメモリを用いて所定のバースト数のデータを転送中に、前記バッファメモリのＲｅａｄアドレスとＷｒｉｔｅアドレスとを比較し、その差が所定値より小さいときのみ、前記所定のバースト数のデータ転送が完了しても、前記ＰＣＩバスを解放せずに、データのバースト転送を続行する転送続行手段とを備えたことを特徴とするＰＣＩコントローラ。
【請求項２】
前記転送続行手段は、前記バッファメモリへのデータの出力の有無を表すフレーム信号を発生する手段と、前記バッファメモリのＲｅａｄアドレスとＷｒｉｔｅアドレスとの差が前記所定値より小さいとき、前記所定のバースト数のデータ転送が完了していても、前記ＰＣＩバスのフレーム信号をネゲートしないで転送を続けさせる手段とを有することを特徴とする請求項１に記載のＰＣＩコントローラ。
【請求項３】
前記転送続行手段は、前記Ｉ／Ｏデバイスへのデータ転送速度に関するモードが所定の転送速度より遅いモードであった場合、前記ＲｅａｄアドレスとＷｒｉｔｅアドレスとの差が前記所定値より小さかった場合であっても、前記所定のバースト数のデータ転送が完了したときに、前記ＰＣＩバスのフレーム信号をネゲートして転送を中断させることを特徴とする請求項２に記載のＰＣＩコントローラ。
【請求項４】
前記転送続行手段は、ＰＣＩ空間のアドレスに基づき、該アドレスに当該ＰＣＩコントローラより処理速度の遅いＰＣＩデバイスがマッピングされている場合と速いＰＣＩデバイスがマッピングされている場合とによって、前記ＰＣＩバスのフレーム信号をネゲートしないかするかを選択する手段を有することを特徴とする請求項２又は３に記載のＰＣＩコントローラ。
【請求項５】
前記Ｉ／Ｏデバイスは、ＡＴＡ規格のＩ／Ｏバスで当該ＰＣＩコントローラに接続されたＨＤＤであることを特徴とする請求項１乃至４のいずれか１項に記載のＰＣＩコントローラ。
【請求項６】
請求項１乃至５のいずれか１項に記載のＰＣＩコントローラを備えたシステムであって、前記ＰＣＩバス上に別のＰＣＩデバイスが接続され、且つ、前記ＰＣＩコントローラが前記ＰＣＩバスのバスマスタになり得ることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）コントローラ及びそれを搭載したシステムに関し、より詳細には、ＰＣＩバスのバスマスタとして機能させたときのバッファメモリ制御を効率よく行うことが可能なＰＣＩコントローラ、及びそのＰＣＩコントローラと別のＰＣＩデバイスとがＰＣＩバス上に搭載されたシステムに関する。
【背景技術】
【０００２】
従来から、メインメモリとＩ／Ｏデバイス（入出力デバイス）との間のデータ転送を制御するバッファ制御回路に関する技術が様々提案されている（例えば、特許文献１及び２を参照）。そして、これらの技術においては、バッファメモリの容量を認識せず、任意のデータ量をメモリアクセスしているため、バッファメモリの容量を超える領域をアクセスするとリトライ動作が起きるという問題点がある。特に、近年、パーソナルコンピュータの普及によって、ＰＣＩバス，ＶＭＥバス等のように、バッファメモリの容量を規定していないバスを採用するシステムが増えてきているが、このようなバスに対するコントローラは複数のメーカから提供されており、その有するバッファメモリの容量もまちまちで不明であるので、上述の問題は避けられない。
【０００３】
このような問題点を解消するための、メモリと入出力デバイスとの間のデータ転送を制御するバッファメモリ制御回路が提案されている（例えば、特許文献３を参照）。特許文献３に記載のバッファメモリ制御回路は、メモリコントローラ内のバッファメモリの容量を認識し、メモリアクセスするデータ量をバッファメモリの容量と合致させることによって、リトライ動作を減らし、ひいてはコンピュータシステムの性能向上を図っている。
【０００４】
このバッファメモリ制御回路は、データ転送を始めてからメモリコントローラからリトライ要求を受けるまでの転送データ量を記憶することによってメモリコントローラ内のバッファメモリの容量を認識するリトライ認識回路と、リトライ認識回路から記憶された転送データ量を通知されると、その転送データ量に基づいて、内蔵するバッファメモリの容量をメモリコントローラ内のバッファメモリの容量に合わせるデータ転送量調節回路とを備えている。例えば、リトライ認識回路は、データ転送を始めてから、メモリコントローラによってリトライ要求を受けるまでの転送データ量を記憶し、これによりメモリコントローラ内ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）の容量を認識する。データ転送量調節回路は、リトライ認識回路から、記憶された転送データ量を通知されると、この転送データ量に基き、内蔵するＩ／ＯカードＦＩＦＯの容量をメモリコントローラ内ＦＩＦＯの容量に合わせている。
【特許文献１】特許第２７９４０５２号公報
【特許文献２】特開平８−３３９２８９号公報
【特許文献３】特開２００１−５６３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献３に記載の技術では、両方のバッファメモリ（例えば両ＦＩＦＯ）の容量が一致するので、バスが空いている時はリトライが起こらないが、バスが混んでいる時やＩ／Ｏが遅い時のパフォーマンス向上には効果がなかった。
【０００６】
本発明は、上述のごとき実情に鑑みてなされたものであり、ＰＣＩバスが混んでいるときや入出力が遅いときであっても、連続バーストで効率よくデータの転送を行うことが可能な、ＰＣＩコントローラ、及びそのＰＣＩコントローラと１又は複数のＰＣＩデバイスとをＰＣＩバス上に搭載したシステムを提供することを、その目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上述のごとき課題を解決するために、以下の各技術手段によりそれぞれ構成される。
【０００８】
第１の技術手段は、ＰＣＩバスのバスマスタになって、Ｉ／Ｏバスで接続されたＩ／Ｏデバイスと前記ＰＣＩバス上にある別のＰＣＩデバイスとの間でデータの転送を行うことが可能なＰＣＩコントローラであって、Ｒｅａｄ／Ｗｒｉｔｅ可能なデュアルポートに対応したバースト転送用のバッファメモリと、該バッファメモリを用いて所定のバースト数のデータを転送中に、前記バッファメモリのＲｅａｄアドレスとＷｒｉｔｅアドレスとを比較し、その差が所定値より小さいときのみ、前記所定のバースト数のデータ転送が完了しても、前記ＰＣＩバスを解放せずに、データのバースト転送を続行する転送続行手段とを備えたことを特徴としたものである。
【０００９】
第２の技術手段は、第１の技術手段において、前記転送続行手段は、前記バッファメモリへのデータの出力の有無を表すフレーム信号を発生する手段と、前記バッファメモリのＲｅａｄアドレスとＷｒｉｔｅアドレスとの差が前記所定値より小さいとき、前記所定のバースト数のデータ転送が完了していても、前記ＰＣＩバスのフレーム信号をネゲートしないで転送を続けさせる手段とを有することを特徴としたものである。
【００１０】
第３の技術手段は、第２の技術手段において、前記転送続行手段は、前記Ｉ／Ｏデバイスへのデータ転送速度に関するモードが所定の転送速度より遅いモードであった場合、前記ＲｅａｄアドレスとＷｒｉｔｅアドレスとの差が前記所定値より小さかった場合であっても、前記所定のバースト数のデータ転送が完了したときに、前記ＰＣＩバスのフレーム信号をネゲートして転送を中断させることを特徴としたものである。
【００１１】
第４の技術手段は、第２又は第３の技術手段において、前記転送続行手段は、ＰＣＩ空間のアドレスに基づき、該アドレスに当該ＰＣＩコントローラより処理速度の遅いＰＣＩデバイスがマッピングされている場合と速いＰＣＩデバイスがマッピングされている場合とによって、前記ＰＣＩバスのフレーム信号をネゲートしないかするかを選択する手段を有することを特徴としたものである。
【００１２】
第５の技術手段は、第１乃至第４のいずれかの技術手段において、前記Ｉ／Ｏデバイスは、ＡＴＡ規格のＩ／Ｏバスで当該ＰＣＩコントローラに接続されたＨＤＤであることを特徴としたものである。
【００１３】
第６の技術手段は、第１乃至第５のいずれかの技術手段におけるＰＣＩコントローラを備えたシステムであって、前記ＰＣＩバス上に別のＰＣＩデバイスが接続され、且つ、前記ＰＣＩコントローラが前記ＰＣＩバスのバスマスタになり得ることを特徴としたものである。
【発明の効果】
【００１４】
本発明によれば、ＰＣＩコントローラと１又は複数のＰＣＩデバイスとをＰＣＩバス上に搭載したシステムにおいて、ＰＣＩバスが混んでいるときや入出力が遅いときであっても、連続バーストで効率よくデータの転送を行うことが可能となる。
【発明を実施するための最良の形態】
【００１５】
図１は、本発明の一実施形態に係るＰＣＩコントローラ並びにメモリデバイスを搭載したシステムの一構成例を示すブロック図で、図中、１はＰＣＩコントローラ、２はＩ／Ｏデバイス、３はＰＣＩデバイス、４はメモリ、１１はＰＣＩ側制御部、１２はバーストアクセス用デュアルポートメモリ、１３はＩ／Ｏ側制御部、１４はアドレス比較部である。
【００１６】
本発明の一実施形態に係るシステム（以下、本システムという）は、Ｉ／Ｏデバイス２をＩ／Ｏバスによって接続したＰＣＩコントローラ（ＰＣＩバスコントローラともいう）１と、これらでなるＰＣＩデバイスとは別のＰＣＩデバイス３とが、ＰＣＩバス上に搭載されているシステムである。
【００１７】
ここで、図１ではＰＣＩデバイス３を１つのみを図示しているが、複数であっても以下の説明は適用できる。また、別のＰＣＩデバイス３としては、ＰＣＩコントローラ１及びＩ／Ｏデバイス２でなるＰＣＩデバイスに接続されたもので、且つデータの転送を伴うメモリデバイスであればよい。図１では、このメモリデバイスとして、メモリ４と、メモリ４にＩ／Ｏバスで接続されメモリ４を制御するＰＣＩデバイス３とでなるものを例示している。
【００１８】
そして、本システムにおけるＰＣＩコントローラ１は、ＰＣＩバスのバスマスタになり得、Ｉ／Ｏバスで接続されたＩ／Ｏデバイス２とＰＣＩバス上にある別のＰＣＩデバイス（スレーブとなるデバイス）３との間でデータの転送（入出力）を行うことが可能なものとする。ＰＣＩコントローラ１がＰＣＩバスのバスマスタとして機能しない場合には、当然、別のＰＣＩデバイス３がバスマスタとなる。以下、ＰＣＩバス上において、本発明に係るＰＣＩコントローラ１がスレーブとなる場合もあるが、簡略化のため並びに混乱を避けるため、本発明に係る機能が働く場合、すなわちＰＣＩコントローラ１がバスマスタとなる場合のみについて基本的に説明する。
【００１９】
ＰＣＩコントローラ１は、ＰＣＩ側制御部１１、バーストアクセス用デュアルポートメモリ１２、及びＩ／Ｏ側制御部１３を備え、さらにアドレス比較部１４を備えるものとする。
【００２０】
ＰＣＩ側制御部１１は、ＰＣＩコントローラ１がバスマスタとなって、他のＰＣＩデバイス３を制御するための部位である。ＰＣＩ側制御部１１は、デュアルポートメモリ１２へデータを出力しているか否かを表すフレーム信号を発生させ、デュアルポートメモリ１２及びＰＣＩデバイス３へ送出する。なお、フレーム信号としては、ＰＣＩコントローラ１がスレーブとなった場合にＰＣＩデバイス３からＰＣＩ側制御部１１へ入力される信号もあり、そのとき、この信号はＰＣＩデバイス３からＰＣＩ側制御部１１に転送されるデータに対してデータを入力しているか否かを表す信号となる。このように、フレーム信号はデータを現在転送中であるか否かを表す信号である。
【００２１】
ＰＣＩ側制御部１１は、フレーム信号を提示すると共に、最初の先頭アドレスを規定して、データを所定のバースト数（ここでは３２バーストで例示）分を連続転送することで、アドレスとデータの多重化をはかっている。ＰＣＩ側制御部１１は、その３２バースト分の連続転送が終了したときに、フレーム信号をネゲートする。このように、データを何回連続して転送するかを示すバースト数は固定されており、ここで例示するようにバースト数３２であった場合には、アドレス１回でデータを３２回連続して転送することを示している。
【００２２】
また、ＰＣＩ側制御部１１は、データ転送がデュアルポートメモリ１２内のデータのＲｅａｄであった場合にＲｅａｄアドレスを、デュアルポートメモリ１２へのＷｒｉｔｅであった場合にＷｒｉｔｅアドレスを、デュアルポートメモリ１２及びアドレス比較部１４に送出する。
【００２３】
バーストアクセス用デュアルポートメモリ１２は、Ｒｅａｄ／Ｗｒｉｔｅ可能なデュアルポートに対応したバースト転送用のバッファメモリであり、ここでは、３２バースト分のメモリを要するものとして説明する。ここで、デュアルポートメモリ１２は、ＰＣＩ側制御部１１又はＩ／Ｏ側制御部１３を介して、ＰＣＩデバイス３又はＩ／Ｏデバイス２に対し、データの読み込み及び書き込みが可能となっている。
【００２４】
このように、ＰＣＩコントローラ１は、デュアルポートメモリ１２を有し、ＰＣＩ上からＩ／Ｏデバイス２へデータの書き込みを行う場合には、ＰＣＩ上のデータをデュアルポートメモリ１２に書き込んで、それを読み出して、Ｉ／Ｏデバイス２へデータを書き込む。逆の場合、Ｉ／Ｏデバイス２上のデータをデュアルポートメモリ１２に書き込んで、それを読み出して、ＰＣＩバス上の他のメモリ４に書き込む。
【００２５】
Ｉ／Ｏ側制御部１３は、Ｉ／Ｏデバイス２とのデータのやりとりを制御する部位であり、Ｉ／Ｏデバイス２とデュアルポートメモリ１２との間でＩ／Ｏバスを介して所定バースト数（所定のＰＣＩバースト数ともいう。ここでは３２バースト分で例示）のデータ転送を行うよう制御する。また、Ｉ／Ｏ側制御部１３は、データ転送がデュアルポートメモリ１２内のデータのＲｅａｄであった場合にＲｅａｄアドレスを、デュアルポートメモリ１２へのＷｒｉｔｅであった場合にＷｒｉｔｅアドレスを、デュアルポートメモリ１２及びアドレス比較部１４に送出する。
【００２６】
アドレス比較部１４は、デュアルポートメモリ１２を用いて所定バースト数のデータを転送中に、デュアルポートメモリ１２のＲｅａｄアドレスとＷｒｉｔｅアドレスとを比較し、比較結果のステータス信号（ここではＦＩＦＯＤＲＥＱ信号で例示）をＰＣＩ側制御部１１に送出する。
【００２７】
ここで、デュアルポートメモリ１２のＲｅａｄアドレス及びＷｒｉｔｅアドレスについて補足説明を行う。ＰＣＩデバイス３及びＰＣＩ側制御部１１を介してメモリ４から転送されるデータを、デュアルポートメモリ１２へ（最終的にはＩ／Ｏデバイス２へ）書き込む場合には、ＷｒｉｔｅアドレスはＰＣＩ側制御部１１がデュアルポートメモリ１２へ書き込むアドレスであり、ＲｅａｄアドレスはＩ／Ｏ側制御部１３がデュアルポートメモリ１２から読み出すアドレスである。逆に、Ｉ／Ｏバスを介してＩ／Ｏデバイス２から転送されるデータを、デュアルポートメモリ１２へ書き込む場合（最終的にはＰＣＩ側制御部１１及びＰＣＩデバイス３を介してメモリ４へ書き込む場合やＰＣＩデバイス３で参照する場合）には、ＷｒｉｔｅアドレスはＩ／Ｏ側制御部１３がデュアルポートメモリ１２へ書き込むアドレスであり、ＲｅａｄアドレスはＰＣＩ側制御部１１がデュアルポートメモリ１２から読み込むアドレスである。
【００２８】
ＰＣＩ側制御部１１は、ＦＩＦＯＤＲＥＱ信号が、ＲｅａｄアドレスとＷｒｉｔｅアドレスとの差が所定値より小さいことを示す信号であったときのみ、所定バースト数のデータ転送（ここでは３２バースト分のデータ転送）が完了していても、ＰＣＩバスを解放せずに、データのバースト転送を続行する。ＰＣＩバスを解放せずにデータのバースト転送を続行するためには、所定バースト数のデータ転送が完了していても、ＰＣＩのバスをはなさないよう、ＰＣＩバスのフレーム信号をネゲートしない方法が採用できる。
【００２９】
このように、アドレス比較部１４では、書き込んでいるときのアドレスと読み込んでいるときのアドレスとを比較することで、速度的なボトルネックがどちらになっているのかを検出できる。ここで、一般的にはＰＣＩコントローラ１がバスマスタとなっていればＩ／Ｏデバイス２の方が別のＰＣＩデバイス３より速度的に速いが、回路構成によってはＰＣＩデバイス３よりＩ／Ｏデバイス２の方が速度的に遅い場合や、ＰＣＩデバイス３における処理（ＰＣＩバス上の処理）が混んでいる場合がある。このような場合には、Ｒｅａｄ／Ｗｒｉｔｅアドレスの差が小さくなる。
【００３０】
例えば、Ｉ／Ｏデバイス２内のデータを読み込む場合に、ＰＣＩ上のデバイス（ＰＣＩデバイス３及びメモリ４）の方がボトルネックとなっているとすると、Ｉ／Ｏデバイス２からデュアルポートメモリ１２への書き込みが終わってしまっても、ＰＣＩ側制御部１１がデュアルポートメモリ１２から読み込む方が遅い。このようなときには、次のデータがＩ／Ｏデバイス２から読み込めなくなる。勿論、デュアルポートメモリ１２としては、容量の大きなものが採用できればよいが、現状ではコスト面などもありそのようなことは困難である。従って、アドレスを比較して、ＰＣＩ上がネックとなっていると分かった場合には、フレーム信号をネゲートしないで、アサートのままにしておき、ＰＣＩ転送のバースト数を増やす。すなわち、例えば、フレーム信号の１フレームに対し、３２バーストという限定があった場合、転送に支障がでたと検出された場合には、３２バーストという限定を止めて、フレーム信号を所定の３２バーストでネゲートせずに、データをそのまま３３バースト分以降も転送し続ける。
【００３１】
また、上述した転送続行手段は、Ｒｅａｄ／Ｗｒｉｔｅアドレス並びにフレーム信号を送出するＰＣＩ側制御部１１と、Ｒｅａｄ／Ｗｒｉｔｅアドレスを送出するＩ／Ｏ側制御部１３と、アドレス比較部１４により、主として構成される。そして、この転送続行手段は、バーストアクセス用デュアルポートメモリ１２を制御するバッファメモリ制御回路に相当する。
【００３２】
図２乃至図４は、図１のシステムにおける様々なケースでのタイミングチャートを示す図で、図５は、従来技術を用いた場合の図４のケースに相当するタイミングチャートを示す図である。なお、図２乃至図５では、紙面の関係上、データを８バースト転送することを前提としたタイミングチャートを示しており、その説明も８バースト転送を採用した場合について行っている。以下、図２乃至図５を参照して、本発明に係るバッファメモリ制御の機能を例示する。
【００３３】
図２は、８バースト転送によってデータがスムーズに転送できているケースのタイミングチャートを示している。また、図４は、データ転送中に転送されたバースト数が８を超えないときにＦＩＦＯＤＲＥＱ信号が送出されることで、９バースト目以降もフレーム信号をネゲートしないで継続してデータ転送を行うケースを示すタイミングチャートを示している。図３は、図２のケースと図４のケースとの中間のケースであり、送出されたＦＩＦＯＤＲＥＱ信号がデータのバースト転送中に重なっていないケースを示している。
【００３４】
また、図２乃至図５において、ＦＲＡＭＥ＃信号はデータ転送中か否かを示す信号（すなわちバスサイクルの開始及び終了を示す信号）、ＡはＡＤ信号線のアドレスフェーズ、ＤはＡＤ信号線のデータフェーズ、ＩＲＤＹ＃はバスマスタ（イニシエータ；ＰＣＩコントローラ１）がデータの入出力の準備を完了していることを示す信号、ＴＲＤＹ＃はターゲット（ＰＣＩデバイス３）がデータの入出力の準備が完了していることを示す信号、ＦＩＦＯＤＲＥＱ信号は比較結果のステータス信号である。
【００３５】
ＰＣＩコントローラ１において、データ転送の必要を生じたとき、ＰＣＩ側制御部１１がＦＲＡＭＥ＃信号をアサートにし、同時にアドレス信号をデュアルポートメモリ１２及びアドレス比較部１４に送出する。ＰＣＩ制御部１１は、ＩＲＤＹ＃がアサートの状態で、データのバースト転送を開始し、ＴＲＤＹ＃がネゲートされている間はデータ転送を待つ。図２及び図３のケースでは、送出されたＦＩＦＯＤＲＥＱ信号がデータのバースト転送中に重なっておらず、いずれのデータ転送でも８バースト分の転送が順次行われている。
【００３６】
一方、図４のケースでは、２度目の転送において、８バースト分のデータ転送が完了していないにも拘わらず、アドレス比較部１４からＰＣＩ側制御部１１へＦＩＦＯＤＲＥＱ信号が送出されている。このような場合、図示したように、ＰＣＩ側制御部１１はＦＲＡＭＥ＃信号をネゲートせずにデータ転送を８バースト分で終了させず、９バースト目以降もアドレス信号を挟むことなくデータ転送し続ける。
【００３７】
それに対し、図５で例示する従来のケースでは、ＦＩＦＯＤＲＥＱ信号など存在しないため、毎回、決まって８バースト分のデータ転送を行う。このケースでは、２巡目のデータ転送後ＦＲＡＭＥ＃信号がネゲートされているため、そこから新たにＦＲＡＭＥ＃信号をアサートしアドレス信号を再度送出するまでの間（３巡目のデータ転送が開始されるまでの間）、データの転送がストップしている。従って、本発明に係る図４のケースは、従来の図５に係るケースに比べてこのストップしている間の時間が省略でき、データ転送を効率よく実行できる。
【００３８】
図６は、本発明の一実施形態に係るＰＣＩコントローラ並びにメモリデバイスを搭載したシステムの他の構成例を示すブロック図で、図中、３はＰＣＩデバイス、４はメモリ、２０はＨＤＤコントローラ、２１はＰＣＩ側制御部、２２はバーストアクセス用デュアルポートメモリ、２３はＡＴＡ側制御部、２４はアドレス比較部、３０はＨＤＤである。
【００３９】
上述したＩ／Ｏデバイスは、ＡＴＡ（ＡＴ  Ａｔｔａｃｈｍｅｎｔ）規格のＩ／ＯバスでＰＣＩコントローラに接続されたＨＤＤ（ハードディスクドライブ）であってよい。すなわち、上述のＩ／ＯデバイスがＨＤＤであり、上述のＩ／ＯバスがＡＴＡであってもよい。ここで、ＡＴＡは、バスの規格であり、ＡＴＡ−２，ＡＴＡＰＩ等の規格も、ここでは当然ＡＴＡ規格とし、本発明を適用可能である。
【００４０】
図６で示す構成例では、ＨＤＤコントローラ２０は、ＰＣＩバスのバスマスタになり得、ＡＴＡバスで接続されたＨＤＤ３０とＰＣＩバス上にある別のＰＣＩデバイス（スレーブとなるデバイス）３との間でデータの転送（入出力）を行うことが可能なものとする。ＨＤＤコントローラ２０は、ＰＣＩ側制御部２１、バーストアクセス用デュアルポートメモリ２２、及びＡＴＡ側制御部２３を備え、さらにアドレス比較部２４を備えるものとする。各構成要素の説明は、図１乃至図５を参照して説明した通りであり、省略する。
【００４１】
ＰＣＩのバスマスタ、この例ではＨＤＤコントローラ２０がフレーム信号を送出し、ＰＣＩバスをネゲートするまで、ＰＣＩバスを確保する。本発明では、ＰＣＩバスの処理が遅いためにＨＤＤ３０が待たされていた場合、ＰＣＩバスを切り離さない。一方、ＨＤＤ３０の性能が発揮できている場合、通常通りフレーム信号を所定のバースト数（例えば３２バースト分）でネゲートし、ＰＣＩバスを切り離す。
【００４２】
以上、本実施形態に係るＨＤＤコントローラ等のＰＣＩコントローラによれば、ＰＣＩコントローラ内のバースト転送用のバッファメモリを有し、バッファメモリはＲ／Ｗ可能なデュアルポート対応となっており、デュアルポートメモリのＲｅａｄアドレスとＷｒｉｔｅアドレスの差が特定の値より小さいとき、所定のバースト数が終了しても、ＰＣＩバスのフレーム信号をネゲートせずに連続転送を続けているので、ＰＣＩバスが混んでいるときに、連続バーストで効率よく転送を行うことができる。また、ＰＣＩ側が空いていてＩ／Ｏ側が遅い時も、フレーム信号をネゲートせずに連続転送を続けることで、データの取りこぼしやオーバーランなどを避けることができる。
【００４３】
次に、本発明の他の実施形態について、上述のごとき本発明に係る主たる機能を働かせない場合と働かせる場合とを、適宜切り替えることが可能なＰＣＩコントローラを説明する。ここで、主たる機能を働かせない場合と働かせる場合との切り替えは、例えば、（１）ＡＴＡのモード等の転送速度に関するモードに依存させたり、（２）ＰＣＩ空間のアドレスに依存させたりするとよい。また、（３）これら（１），（２）に加えて、或いはそれとは無関係に、所定のバースト数（３２バースト分で例示している数ではなく、例えばそれより大きな２１２，２２８，２５６回といったバースト数）を限度として、本発明の主たる機能を働かせてもよい。
【００４４】
（１）の形態について説明する。この形態にあっては、Ｉ／Ｏデバイスへのデータ転送速度に関するモードに応じて、所定のバースト数のデータ転送が完了したときに、ＰＣＩバスのフレーム信号をネゲートするか否かを判断する。より具体的には、Ｉ／Ｏデバイスへのデータ転送速度に関するモードが所定の転送速度より遅いモードであった場合、ＲｅａｄアドレスとＷｒｉｔｅアドレスとの差が所定値より小さかった場合であっても、所定のバースト数のデータ転送が完了したときに、ＰＣＩバスのフレーム信号をネゲートして転送を中断させる。
【００４５】
図６で例示したＨＤＤコントローラの場合では、ＡＴＡのモードによっては、デュアルポートメモリのＲｅａｄアドレスとＷｒｉｔｅアドレスの差が特定の値より小さくても、ＰＣＩバスのＦＲＡＭＥ＃信号をネゲートする。ＡＴＡは、例えば、最大転送速度１００ＭＢ／秒で転送できるＡＴＡ１００や、同様の定義でのＡＴＡ６６、ＡＴＡ１３３等の規格がある。そして、ＨＤＤを高速で動かすデータ転送モードと低速で動かすデータ転送モードとがある。例えば、ＡＴＡ１３３の場合、１３３ＭＢ／秒の高速で動かすデータ転送モードと、それより低速で動かすデータ転送モードとがあり、それらのデータ転送モードに依存して所定値（閾値）を変更するとよい。ＨＤＤを高速に稼働させるモードを使っているときだけ、本発明に係る主たる機能を使用すればよい。ここでは、遅いデータ転送モードのときにはわざわざ速くする必要がないと判断できるので、本発明に係る主たる機能を使用しない。
【００４６】
次に、（２）の形態について説明する。この形態にあっては、ＰＣＩ空間のアドレスによってＰＣＩバスのフレーム信号をネゲートするかしないかを選択することを可能とする。より具体的には、ＰＣＩ空間のアドレスに基づき、そのアドレスにＰＣＩコントローラより処理速度の遅いＰＣＩデバイスがマッピングされている場合と速いＰＣＩデバイスがマッピングされている場合とによって、ＰＣＩバスのフレーム信号をネゲートしないかするかを選択する。ここで、特定用途向けＩＣ（ＡＳＩＣ）等の遅いデバイスがマッピングされているアドレスは、本発明に係る主たる機能を働かせる。特に、フレーム信号が出ている時は、ＡＳＩＣ内のローカルメモリを先読みするＡＳＩＣについては、効果が大きい。逆に、速いデバイス（チップ）がアドレス空間にマッピングされているときには、本発明に係る主たる機能を働かせる必要はない。
【００４７】
例えば、ＰＣＩアドレス空間のデータを扱うとき、ページメモリのアドレス値が画像処理ＡＳＩＣ（一般的に急ぐ処理が多いＰＣＩデバイス）のページメモリのアドレスであった場合、本発明に係る主たる機能を働かせ、速いシステムの方であれば、気にせず、働かせなくてもよい。
【００４８】
複写機の場合、印字処理は、レーザースキャナユニットを使用し処理が遅くて間に合わない場合に画像が欠けることになる。従って、印字処理を行うときは、処理を急ぐときであり、そのときにはＰＣＩバスを握らせる。逆に、ＨＤＤに記憶されたデータの消去などの場合、書き込み自体は終わっているので急ぐ必要は全くなく、ＰＣＩバスを明け渡すようにする。すなわち、急がない処理であるにも拘わらず、ＰＣＩバスを占有しないようにしておくことが好ましい。
【００４９】
その他、ＨＤＤのデータを読み込んでいる場合には、何ページ分か存在してもデュアルポートメモリの容量を全部使ってしまった場合には、急ぐ処理に該当させるとよい。読み込み始めなどで、メモリの空き容量が多い時には、急がない処理に該当させるとよい。また、急ぐ処理であるのか、急がない処理であるのかを、ソフトウェアで設定するのは大変であり、この形態のように、ＰＣＩ空間のアドレスで検出することは有益である。
【００５０】
最後に、（３）の形態について説明する。（３）の形態にあっては、所定のバースト数（３２バースト分で例示しているものではなく、例えばそれより大きな２１２，２２８，２５６回といったバースト数）を限度として、本発明の主たる機能を働かせる。実際、限度なく長い時間バスを確保していると、他のＰＣＩデバイスがアクセスできなくなるので、システム的に一番良い値に限定（例えば最大値２５６回等）しておく必要がある。この値は、データ転送のバランスに応じて適時決定しておき、ＣＰＵにおいてレジスタ設定しておけばよい。例えば、ＨＤＤ以外に急ぐものがなければ大きい値に設定しておき、ＰＣＩバス上で急ぐような例えばＣＰＵ等のデバイスが接続されている場合には小さな値に設定しておき、そのデバイスにＰＣＩバスを早めに引き渡さすようにするとよい。ＰＣＩバスは、例えば３３ＭＨｚで稼働しているので、１クロック当たり３０ナノ秒であり、設定値が２５６回の場合、約８μｓ毎にバスを一度切り離すこととなる。このとき、ＣＰＵは、最低でも約８μｓ毎にバスを使用することができる。
【００５１】
また、図５は、従来技術を用いた場合の図４のケースに相当するタイミングチャートを示す図であるが、本発明に係る主たる機能を働かせない場合（例えばデータ転送において支障がない場合）のタイミングチャートを示しているとも言える。なお、図５では、ＦＩＦＯＤＲＥＱ信号を図示していないが、このように、上述の（１）〜（３）のごとく場合によって本発明に係る主たる機能を働かせないようにするには、アドレス比較部において比較結果のステータス信号をＰＣＩ側制御部へ送出しないようにしてもよい。また、逆に、比較結果のステータス信号の送出は行ってもＰＣＩ側制御部でそのステータス信号を制御に利用しないようにしてもよい。
【図面の簡単な説明】
【００５２】
【図１】本発明の一実施形態に係るＰＣＩコントローラ並びにメモリデバイスを搭載したシステムの一構成例を示すブロック図である。
【図２】図１のシステムにおける或るケースでのタイミングチャートを示す図である。
【図３】図１のシステムにおける他のケースでのタイミングチャートを示す図である。
【図４】図１のシステムにおける他のケースでのタイミングチャートを示す図である。
【図５】従来技術を用いた場合の図４のケースに相当するタイミングチャートを示す図である。
【図６】本発明の一実施形態に係るＰＣＩコントローラ並びにメモリデバイスを搭載したシステムの他の構成例を示すブロック図である。
【符号の説明】
【００５３】
１…ＰＣＩコントローラ、２…Ｉ／Ｏデバイス、３…ＰＣＩデバイス、４…メモリ、１１，２１…ＰＣＩ側制御部、１２，２２…バーストアクセス用デュアルポートメモリ、１３…Ｉ／Ｏ側制御部、１４，２４…アドレス比較部、２０…ＨＤＤコントローラ、２３…ＡＴＡ側制御部、３０…ＨＤＤ。
【図１】
2007004314.tif 000003
【図２】
2007004314.tif 000004
【図３】
2007004314.tif 000005
【図４】
2007004314.tif 000006
【図５】
2007004314.tif 000007
【図６】
2007004314.tif 000008