(57)【要約】【課題】複数の異なるプロトコルを持つバス間で共有メモリを使用するシステムにおいて、メモリアクセスの順序保障を行うことを目的とする。【解決手段】ＣＰＵが接続されるバスとは異なるプロトコルによって動作し、ライトＤＭＡを行うバスマスタが接続されるのと同じバスに接続される順序保障回路を備える。その順序保障回路は、ライトＤＭＡを行うバスマスタからのライトＤＭＡ終了通知割り込み信号を検出し、リードＤＭＡを行うバスマスタによるメモリからのリードＤＭＡ動作の後、ライトＤＭＡ完了通知割り込み信号を発行する。これにより、メモリアクセスの順序保障を実現する。【選択図】  図３
2012252599.tif 000002
【特許請求の範囲】
【請求項１】
ライトＤＭＡを行う第１のバスマスタと、リードＤＭＡを行う第２のバスマスタと、前記第１のバスマスタとは異なるバスに接続されるＣＰＵと、前記第１のバスマスタと前記第２のバスマスタと前記ＣＰＵとによりアクセスされるメモリと、前記メモリに対する、前記第１のバスマスタと前記第２のバスマスタと前記ＣＰＵからのアクセスを制御するメモリコントローラとを有した情報処理装置であって、
前記ＣＰＵが接続されるバスとは異なるプロトコルによって動作し、前記第１のバスマスタが接続されるのと同じバスに接続され、前記第１のバスマスタからのライトＤＭＡ終了通知割り込み信号を検出し、前記第２のバスマスタによる前記メモリからのリードＤＭＡ動作の後、ライトＤＭＡ完了通知割り込み信号を発行することにより、メモリアクセスの順序保障を行う順序保障回路を有することを特徴とする情報処理装置。
【請求項２】
前記第１のバスマスタが複数、備えられ、
前記複数の第１のバスマスタが同じバスに接続され、
前記順序保障回路は、前記複数の第１のバスマスタからそれぞれ発行された複数のライトＤＭＡ終了通知割り込み信号を受け付け、前記順序保障回路がリードＤＭＡ動作を行っていないアイドル状態であれば、前記受け付けたエントリに対するリードＤＭＡを実行し、前記順序保障回路がリードＤＭＡ動作中であれば、前記受け付けたエントリを保持し、前記リードＤＭＡ動作の後、前記保持されたエントリに対するリードＤＭＡを実行することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記順序保障回路は、１つのライトＤＭＡ終了通知割り込み信号に対するリードＤＭＡ動作中に、別のバスマスタから複数のライトＤＭＡ終了通知割り込み信号のエントリを受け付けた場合には、前記複数のライトＤＭＡ終了通知割り込み信号に対して１回のリードＤＭＡを実行することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記順序保障回路は、バスのアービトレーションが固定順位モードのときは１度のリードＤＭＡで１回のリードＤＭＡ動作を実行し、前記バスのアービトレーションがラウンドロビンモードのときは１度のリードＤＭＡで２回のリードＤＭＡ動作を実行することを特徴とする請求項２に記載の情報処理装置。
【請求項５】
請求項１乃至４のいずれか１項に記載の情報処理装置を含む記録装置であって、
記録媒体に記録を行う記録ヘッドと、
前記記録ヘッドを走査する走査手段とを有し、
前記メモリは、ホストから受信した画像データを格納する受信バッファと、前記記録ヘッドによる１回の走査に対応した画像データを格納する記録バッファとを含むことを特徴とする記録装置。
【請求項６】
前記メモリはＤＲＡＭであることを特徴とする請求項５に記載の記録装置。
【請求項７】
ライトＤＭＡを行う第１のバスマスタと、リードＤＭＡを行う第２のバスマスタと、前記第１のバスマスタとは異なるバスに接続されるＣＰＵと、前記第１のバスマスタと前記第２のバスマスタと前記ＣＰＵとによりアクセスされるメモリと、前記メモリに対する、前記第１のバスマスタと前記第２のバスマスタと前記ＣＰＵからのアクセスを制御するメモリコントローラとを有した情報処理装置の情報処理方法であって、
前記ＣＰＵが接続されるバスとは異なるプロトコルによって動作する、前記第１のバスマスタが接続されるのと同じバスに接続された順序保障回路において、前記第１のバスマスタからのライトＤＭＡ終了通知割り込み信号を検出し、前記第２のバスマスタによる前記メモリからのリードＤＭＡ動作の後、ライトＤＭＡ完了通知割り込み信号を発行することによりメモリアクセスの順序保障を行うことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、その装置を用いた記録装置、及び、情報処理方法に関し、特に、メモリへのアクセス制御をＤＭＡにより行う情報処理装置、その装置を用いた記録装置、及び、情報処理方法に関する。
【背景技術】
【０００２】
従来から、複数のバスと各々のバスに接続された複数のバスマスタが共有メモリにアクセスを行うような情報処理システムがある。
【０００３】
図１０は従来の情報処理システムの構成を示すブロック図である。
【０００４】
このシステムは、複数のバスを有し各々のバスに接続されたバスマスタ（ライトＤＭＡ）３０４、及びバスマスタ３０５がメモリコントローラ３０２を介して共有メモリ３０１にアクセスを行うようなシステムである。バスマスタ３０４はバス３１０に接続されていて、バス３１０はバッファ機能を有するバスブリッジ３０７を介してバス３１１と接続されている。従って、バスマスタ３０４はバスブリッジ３０７を経由して共有メモリ３０１にメモリアクセスを行う。
【０００５】
このようなシステムにおいて、バスブリッジ３０７を経由してメモリアクセスを行うバスマスタ３０４と、バス３１２上にリードバッファ３０６（ＦＩＦＯ）を有するバスマスタ（リードＤＭＡ）３０５がメモリアクセスを行う場合を考える。バスマスタ３０４がライトＤＭＡを行うためのライトリクエストを発行すると、ライトリクエストはまずバスブリッジ３０７のバッファ部３０８に格納される。ライトリクエストを発行したバスマスタ３０４は、この時点でＣＰＵ３０３に対してＤＭＡ終了通知割り込み信号（ＩＮＴ）を割り込み信号制御回路３０９に発行する。バスマスタ３０４によってＤＭＡ転送されたデータをバスマスタ３０５が必要とする場合、バスマスタ３０５はＤＭＡ終了通知割り込み信号（ＩＮＴ）の発行に応じて、共有メモリ３０１に対してリードＤＭＡを行うためのリードリクエストを発行する。このようにして、所望のデータを取得する。
【０００６】
しかしながら、システムの状況によっては正確に所望のデータを取得できないことがある。
【０００７】
図１１は所望のデータ取得が失敗する例について説明する図である。
【０００８】
図１１に示すように、バスマスタ３０４がライトリクエスト３１６を発行し、続けてＤＭＡ終了通知割り込み信号（ＩＮＴ）を発行しても、転送データ３２１はバッファ部３０８にバッファリングされている。従って、メモリ３０１のアドレス３２２上にデータが転送されていない（ライトリクエスト３１７は未実行）可能性がある。そのため、バスマスタ３０４からの転送データ３２１がメモリ３０１のアドレス３２２に書き込まれる前にバスマスタ３０５からのリードリクエスト３１８、及びリードリクエスト３１９が実行されてしまうと、所望のデータが正確に取得できない。
【０００９】
またメモリアクセス制御技術として、このような共有メモリへのアクセス順序を保障するために、入力されたリードリクエストとアクセス先アドレスを同一とするライトリクエストが存在するか否かを判別するということが行われている。この場合、従来は入力されたリードリクエストを一旦バッファに登録し、その後、そのリードアクセスと同一アクセス先アドレスを持つ未完のライトリクエストが存在しているか否かを判別する。その同一アドレスへのライトアクセスが存在し、待ち合わせが必要である場合、待ち合わせが必要か否かを示すフラグを発行する。これにより、ライトリクエストが先行して行われるような構造を有することでメモリアクセス順序保障が行われている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００１−３３１３６３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら上記従来例のようなメモリアクセス順序保障制御を採用する場合、図１０に示した従来の情報処理システムでは、次のような問題があった。
【００１２】
（１）同一アドレスに関するリクエストに対してのみメモリアクセス順序保障を行う場合、ハードウェアでもソフトウェアでも同様の効果を達成可能であるが、ソフトウェア制ではその処理が煩雑になり、信頼性が低下する。また。順序保障すべき対象のバスマスタが増えると要求される性能を満たすことが難しい。さらに、ソフトウェアによる順序保障制御では、データ転送が完了しているのかどうか、何度もリード動作で確認する必要がある。またさらに、次々とバスの優先権が入れ替わるようなアービトレーションでは、バス使用権が現在どこに与えられているのかわからないので、対象バスマスタの分だけリード動作を繰り返したり、処理が終わるまでの充分な時間を確保する必要がある。いずれにしても、これらは制御により長い時間を必要とし、元々要求されるメモリアクセス制御のリアルタイム性を損なってしまうという問題がある。
【００１３】
（２）バスマスタがＤＭＡ終了通知割り込み信号を発行していても、転送データはバッファ部にバッファリングされていて、実際のメモリ上にデータが転送されていないという可能性もある。このため、バスマスタのＤＭＡ終了ステータスレジスタと実動作との整合性が取れていない状態が発生してしまうという問題がある。
【００１４】
（３）プロトコルの異なる複数のバスを介して共有メモリにアクセスする構成の場合、それぞれのバスプロトコルに合わせたアドレス比較回路を実装することになり、順序保障回路が複雑化してしまい、回路規模も増大してしまう。これは、装置コストの増大や装置の大型化につながるという問題を生じさせる。
【００１５】
本発明は上記従来例に鑑みてなされたもので、バスのプロトコルに依存せずに、同一アドレス間以外のメモリアクセスの順序保障も可能にした情報処理装置、その装置を用いた記録装置、及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するために本発明の情報処理装置は次のような構成からなる。
【００１７】
即ち、ライトＤＭＡを行う第１のバスマスタと、リードＤＭＡを行う第２のバスマスタと、前記第１のバスマスタとは異なるバスに接続されるＣＰＵと、前記第１のバスマスタと前記第２のバスマスタと前記ＣＰＵとによりアクセスされるメモリと、前記メモリに対する、前記第１のバスマスタと前記第２のバスマスタと前記ＣＰＵからのアクセスを制御するメモリコントローラとを有した情報処理装置であって、前記ＣＰＵが接続されるバスとは異なるプロトコルによって動作し、前記第１のバスマスタが接続されるのと同じバスに接続され、前記第１のバスマスタからのライトＤＭＡ終了通知割り込み信号を検出し、前記第２のバスマスタによる前記メモリからのリードＤＭＡ動作の後、ライトＤＭＡ完了通知割り込み信号を発行することにより、メモリアクセスの順序保障を行う順序保障回路を有することを特徴とする。
【００１８】
本発明を別の側面から見れば、上記情報処理装置を含む記録装置であって、記録媒体に記録を行う記録ヘッドと、前記記録ヘッドを走査する走査手段とを有し、前記メモリは、ホストから受信した画像データを格納する受信バッファと、前記記録ヘッドによる１回の走査に対応した画像データを格納する記録バッファとを含むことを特徴とする記録装置を備える。
【００１９】
本発明をさらに別の側面から見れば、ライトＤＭＡを行う第１のバスマスタと、リードＤＭＡを行う第２のバスマスタと、前記第１のバスマスタとは異なるバスに接続されるＣＰＵと、前記第１のバスマスタと前記第２のバスマスタと前記ＣＰＵとによりアクセスされるメモリと、前記メモリに対する、前記第１のバスマスタと前記第２のバスマスタと前記ＣＰＵからのアクセスを制御するメモリコントローラとを有した情報処理装置の情報処理方法であって、前記ＣＰＵが接続されるバスとは異なるプロトコルによって動作する、前記第１のバスマスタが接続されるのと同じバスに接続された順序保障回路において、前記第１のバスマスタからのライトＤＭＡ終了通知割り込み信号を検出し、前記第２のバスマスタによる前記メモリからのリードＤＭＡ動作の後、ライトＤＭＡ完了通知割り込み信号を発行することによりメモリアクセスの順序保障を行うことを特徴とする情報処理方法を備える。
【発明の効果】
【００２０】
従って本発明によれば、ライトＤＭＡ動作の終了が確実になり、メモリアクセス順序保障がなされるという効果がある。
【００２１】
また、複数の異なるバスプロトコルを有するシステムでも、ライトＤＭＡ動作のあとにリードＤＭＡ動作を行うことにより、バスのプロトコルに依存せずに、メモリアクセスの順序保障をすることができる。さらには、リードＤＭＡ動作中に発生した複数のライトＤＭＡリクエストに対してまとめて順序保証することができるので処理時間が短縮できるという効果がある。
【図面の簡単な説明】
【００２２】
【図１】本発明の代表的な実施例であるインクジェット記録装置の要部の斜視図である。
【図２】記録装置１００における制御回路の構成を示すブロック図である。
【図３】図２に示した制御構成の内、特に、ＤＲＡＭ２０７に対するアクセス制御構成を示したブロック図である。
【図４】メモリアクセス順序保障動作について説明する図である。
【図５】同じバス上に順序保証を必要とするライトＤＭＡを行うバスマスタが２つ以上ある場合の構成例を示す図である。
【図６】図５に示した順序保障回路が実行するメモリアクセス内部動作を示した図である。
【図７】ラウンドロビンモードのバス使用権遷移動作を説明する図である。
【図８】ライトＤＭＡリクエストごとにリードＤＭＡを実行させたときの図である。
【図９】エントリ中のライトＤＭＡリクエストをまとめて１回のリードＤＭＡを実行させたときの図である。
【図１０】従来の情報処理装置の構成を示すブロック図である。
【図１１】従来の構成に従うＤＭＡ転送においてデータ取得がうまくいかない例を示す図である。
【発明を実施するための形態】
【００２３】
以下に、図面を参照しながら本発明の実施例について詳細に説明する
なお、この明細書において、「記録」（以下、「プリント」とも称する）とは、文字、図形等有意の情報を形成する場合のみならず、有意無意を問わず、広く記録媒体上に画像、模様、パターン等を形成する、又は媒体の加工を行う場合も表すものとする。また、人間が視覚で知覚し得るように顕在化したものであるか否かを問わない。
【００２４】
また、「記録媒体」とは、一般的な記録装置で用いられる紙のみならず、広く、布、プラスチック・フィルム、金属板、ガラス、セラミックス、木材、皮革等、インクを受容可能なものも表すものとする。
【００２５】
また、「インク」とは、上記「記録」の定義と同様広く解釈されるべきもので、記録媒体上に付与されることによって、画像、模様、パターン等の形成又は記録媒体の加工、或いはインクの処理に供され得る液体を表すものとする。インクの処理としては、例えば記録媒体に付与されるインク中の色剤の凝固又は不溶化させることが挙げられる。
【００２６】
またさらに、「記録素子」（「ノズル」という場合もある）とは、特にことわらない限りインク吐出口乃至これに連通する液路及びインク吐出に利用されるエネルギーを発生する素子を総括して言うものとする。
【００２７】
［記録装置の構成］
図１は本発明の代表的な実施例であるインクジェット記録装置（以下、記録装置）の要部の斜視図である。
【００２８】
図１において、１０は４つのインクカートリッジであり、それらはインクタンクと複数の記録素子が集積配列されたインクジェット記録ヘッド（以下、記録ヘッド）１１とより構成されている。それらのインクタンクには、ブラック（Ｋ）、シアン（Ｃ）、マゼンタ（Ｍ）、イエロ（Ｙ）のインクが収容される。記録ヘッド１１は、インクタンクと別体に構成されるものであってもよい。記録ヘッド１１が備える記録素子は、インク吐出口と、それに対応する吐出エネルギー発生素子とを含み、その吐出エネルギー発生素子としては、ヒータ（発熱抵抗素子）やピエゾ素子などが用いられる。以下においては、このようなインク吐出口と吐出エネルギー発生素子とを含む部分を「ノズル」ともいう。
【００２９】
搬送ローラ１０３は補助ローラ１０４と共に記録紙（記録媒体）Ｐを抑えながら矢印方向に回転することにより、記録媒体Ｐを矢印Ｙ方向（副走査方向）に間欠的に搬送する。給紙ローラ１０５により記録媒体Ｐの給紙が行われると共に、搬送ローラ１０３および１０４と同様に、記録媒体Ｐを抑える役割も果たす。１０６は、４つのインクカートリッジ１０はキャリッジで１０６に搭載され、矢印Ｘ方向（主走査方向）に往復移動する。以下、−Ｘの方向を往路方向Ｘ１、＋Ｘの方向を復路方向Ｘ２という。主走査方向と副走査方向は互いに交差し、この実施例の場合は、互いに直交する。キャリッジ１０６は、記録を行っていないとき、あるいは記録ヘッド１１の回復処理などを行うときには、図中点線の位置のホームポジション（ｈ）に移動して待機する。
【００３０】
［記録装置の制御構成概要］
図２は、記録装置１００における制御回路の構成を示すブロック図である。記録装置１００において、２０１はＣＰＵ、２０２はＣＰＵ２０１が実行する制御プログラムを格納するＲＯＭである。ホスト２００から受信したラスタ単位の画像データは、まず受信バッファ２０３に格納される。受信バッファ２０３に格納された画像データは、ホスト２００からの送信データ量を減らす為に、圧縮されている。このため、ＣＰＵ２０１或いは不図示の圧縮データ展開用回路により画像データの展開が行われ、記録バッファ２０４に格納される。記録バッファ２０４は、例えばＤＲＡＭである。記録バッファ２０４に格納されるデータの形式は、ラスタ形式のデータである。記録バッファ２０４の容量は、１回の走査で記録する幅に対応したラスタ数のデータを格納できる容量を備えている。
【００３１】
記録バッファ２０４に格納された画像データは、ＨＶ変換回路２０５によってＨＶ変換処理が行われ、ＡＳＩＣ２０６に備えられた、例えば、ＳＲＡＭのノズルバッファ（不図示）に格納される。即ち、ノズルバッファにはカラム形式のデータが格納される。このデータの形式は、ノズルの配置に対応している。なお、記録装置１００にはユーザが種々の操作を行なうためのキーや記録装置の状態を表示するＬＥＤランプ、ＬＣＤなどからなる操作部が備えられている。
【００３２】
この構成例において、受信バッファ２０３や記録バッファ２０４はＤＲＡＭ２０７で構成されており、ＤＲＡＭへのアクセスはメモリコントローラ（不図示）により制御される。なお、図２においては説明を簡略化するためにバスの構成については詳細に示していないが、この点については後で説明する。
【００３３】
図３は図２に示した制御構成の内、情報処理、特に、ＤＲＡＭ２０７に対するアクセス制御構成を示したブロック図である。なお、図３において、既に従来例に関連して図１０において説明したのと同じ構成要素については同じ参照番号を用いて言及し、その説明は省略する。そして、従来例との構成や動作の違いについて説明する。
【００３４】
この実施例では、図１０のようにライトＤＭＡを行うバスマスタ３０４から発行されるＤＭＡ終了通知割り込み信号（ＩＮＴ）を、直接割り込み信号制御回路３０９に入力するのではない。この実施例では、ＤＭＡ終了通知割り込み信号（ＩＮＴ）を順序保障回路３２６に入力し、順序保障動作を行った後に順序保障回路３２６からバスマスタ３０４のライトＤＭＡ完了を表すＤＭＡ完了通知割り込み信号（Ｏｕｔｐｕｔ＿ＩＮＴ）が発行される。ここで、ライトＤＭＡを行うバスマスタを第１のバスマスタ、リードＤＭＡを行うバスマスタを第２のバスマスタという。
【００３５】
なお、図３に示す構成の前提として、ライトＤＭＡを行うバスマスタ３０４と順序保障を行う順序保障回路３２６とは同じバス３１０に接続され、ＣＰＵはこのバスとは別のバス３１３に接続されていることがある。そして、メモリ２０７はメモリコントローラ３０２を介して、ＣＰＵ２０１やバスマスタ３０４、３０５により共有される。また、これら複数のバスはメモリアクセスのための異なるプロトコルをもつ。
【００３６】
順序保障回路３２６は、発行されたメモリアクセス先のアドレス情報に関わらず、各バスマスタがライトＤＭＡを行った後に発行するＤＭＡ終了通知割り込み信号を受けて、その割り込み信号をトリガとしてリードＤＭＡを行う。もしくは、ソフト処理によるトリガによってリードＤＭＡを行うような動作をすることにより、メモリアクセスの順序保障を行う。
【００３７】
次に、図３に示した構成例での順序保障動作について説明する。
【００３８】
図４はメモリアクセス順序保障動作について説明する図である。
【００３９】
図４において、バスマスタ３０４からのライトＤＭＡ終了通知割り込み信号（ＩＮＴ）が順序保障回路３２６に入力されると（ｔ＝Ｔ１）、割り込み信号（ＩＮＴ）の立ち上がりを検出する（Ｒｉｓｅ＿Ｅｄｇｅ）。これが順序保障回路３２６のネクストエントリ（Ｎｅｘｔ  Ｅｎｔｒｙ）に記憶（以下、エントリ）される（ｔ＝Ｔ２）。ネクストエントリは各バスマスタから入力されるライトＤＭＡ終了通知信号の数だけ複数用意されており、どのバスマスタがエントリ状態であるか判る構成とする。
【００４０】
ネクストエントリはすぐにカレントエントリ（Ｃｕｒｒｅｎｔ  Ｅｎｔｒｙ）へ移り、ここで任意のアドレスに対してリードＤＭＡが発行される（ｔ＝Ｔ３）。リードＤＭＡとはリードリクエストが発行後、メモリ２０７にアクセスして、実データを読み込むまでの動作である。従って、メモリに対するリードＤＭＡ完了は、その直前に行われたメモリに対するライトＤＭＡ動作は、実メモリに対してもデータ転送が完了していることを意味する。従って、このリードＤＭＡ動作により確実にメモリへのデータ転送が完了することが保障される。
【００４１】
ここで、バスのアービトレーション方法により、リードＤＭＡの回数は任意に決められるものとし、またリードＤＭＡを行うメモリ領域は通常動作に影響ない領域に対して行うこととする。
【００４２】
順序保障回路３２６のリードＤＭＡが終了すると割り込み信号制御回路３０９へ出力されるライトＤＭＡ完了通知割り込み信号（Ｏｕｔｐｕｔ＿ＩＮＴ）が発行される（ｔ＝Ｔ４）。ライトＤＭＡ完了通知割り込み信号（Ｏｕｔｐｕｔ＿ＩＮＴ）を受けて、次のバスマスタからのリードリクエスト、もしくはライトリクエストが発行される。バスマスタ３０４からのライトＤＭＡ終了通知割り込み（ＩＮＴ）が立ち下がったのを受けて（ｔ＝Ｔ５）、ライトＤＭＡ完了通知割り込み信号（Ｏｕｔｐｕｔ＿ＩＮＴ）も立ち下がる（ｔ＝Ｔ６）。
【００４３】
ライトＤＭＡ完了通知割り込み信号（Ｏｕｔｐｕｔ＿ＩＮＴ）については、ハードウェアとしてバスマスタ３０４からのライトＤＭＡ終了通知割り込み（ＩＮＴ）が立ち下がったのを受けて自動で立ち下がるような構成で良い。またこの他に、ソフト制御で使用者側が任意のタイミングでライトＤＭＡ完了通知割り込み信号（Ｏｕｔｐｕｔ＿ＩＮＴ）を立ち下げる制御を行ってもよい。
【００４４】
図５は同じバス上に順序保証を必要とするライトＤＭＡを行うバスマスタが２つ以上ある場合の構成例を示す図である。なお、図５において、既に図３や図１０で言及したのと同じ構成要素には同じ参照番号を付し、その説明は省略する。
【００４５】
図５に示す構成では、ＣＰＵ２０１がバス３１３を介して、４つのバスマスタが、ＦＩＦＯバッファを持つ４つのアービタ（３４０ａ、３４０ｂ、３４０ｃ、３０６）を経て接続されているバス３１２を介してメモリコントローラ３０２に接続されている。ここで、４つのバスマスタとは、３つのライトＤＭＡであるバスマスタ３０４ａ〜３０４ｃと１つのリードＤＭＡであるバスマスタ３０５である。そして、メモリコントローラ３０２を介して各バスマスタがメモリ（ＤＲＡＭ）２０７にメモリアクセスを行うようにシステムが構成されている。
【００４６】
図５に示す構成でも、図３と同じように、ライトＤＭＡを行うバスマスタ３０４ａ〜３０４ｃと順序保障を行う順序保障回路３２６’とは同じバス３１２に接続され、ＣＰＵはこのバスとは別のバス３１３に接続されている。そして、メモリ２０７はメモリコントローラ３０２を介して、ＣＰＵ２０１やバスマスタ３０４ａ〜３０４ｃ、３０５により共有される。また、これら複数のバスはメモリアクセスのための異なるプロトコルをもつ。
【００４７】
順序保障回路３２６’はバス３１２に接続されていて、ライトＤＭＡを行うバスマスタ３０４ａ、３０４ｂ、３０４ｃ、リードＤＭＡを行うバスマスタ３０５からＤＭＡ終了通知割り込み信号（ＩＮＴ１、ＩＮＴ２、ＩＮＴ３、１２０）が入力される。割り込み信号制御回路３０９’には順序保障回路３２６’による順序保障動作後のライトＤＭＡ完了通知割り込み信号（ＯＵＴＰＵＴ＿ＩＮＴ１／ＩＮＴ２／ＩＮＴ３）と、バスマスタ３０５からのリードＤＭＡ終了通知割り込み信号１２０が入力される。
【００４８】
ここで、図５に示した構成例での動作について説明する。
【００４９】
図６は図５に示した順序保障回路が実行するメモリアクセス内部動作を示した図である。
【００５０】
図６に示すように、順序保障回路３２６’がリードＤＭＡ動作を行っていないアイドル状態（ＤＭＡ＿Ｓｔａｔｕｓ：ｉｄｌｅ）のときに、バスマスタ３０４ａがライトリクエストを発行する。これにより、ライトＤＭＡ終了通知割り込み信号（ＩＮＴ１）が順序保障回路３２６’に入力される（ｔ＝Ｔ１１）。割り込み信号（ＩＮＴ１）の立ち上がりを受けて、リードＤＭＡ動作開始エントリが受け付けられる（ｔ＝Ｔ１２）。順序保障回路３２６’がリードＤＭＡ動作を行っていないアイドル状態のときにリードＤＭＡ動作開始エントリが受け付けられると、次のような動作が実行される。即ち、カレントエントリ１（Ｃｕｒｒｅｎｔ＿Ｅｎｔｒｙ１）３４３が立ち上がり、ただちにリードＤＭＡ動作を開始し、リードＤＭＡ状態（ＤＭＡ＿Ｓｔａｔｕｓ：ＲＥＡＤ  ＤＭＡ１）となる（ｔ＝Ｔ１３）。
【００５１】
ここで、順序保障回路が行う１度のリードＤＭＡ動作は、バスのアービトレーション方法が固定順位モードのときはリードＤＭＡ動作を１回行い、ラウンドロビンモードのときはリードＤＭＡ動作を２回行うことが望ましい。
【００５２】
図７はバス使用権獲得優先順位の遷移の例を示す状態遷移図である。
【００５３】
ラウンドロビンモードの場合にリードＤＭＡ動作を２回行う理由は次のようなものである。即ち、例えば、図７のようにバス使用権獲得優先順位が遷移する場合、優先順位が１位となってバス使用権が与えられたバスマスタの次の優先順位は最下位となり、次々とバスの優先順位が入れ替わり、バス使用権が現在どこに与えられているのかわからない。そのため、バスマスタ１８３がバス使用権を与えられてメモリアクセスを実行したとすると、次のことが生じる。即ち、順序保障回路１８０がリードＤＭＡ動作を１回行うときには、バス使用権はバスマスタ1８４、１８５と順番に移動し、バスマスタ１８３、１８４、１８５のメモリアクセスが確実に行なわれたことになる。さらに順序保障回路１８０がリードＤＭＡ動作を１回行うと、バス使用権は一巡するので、１回目のリードＤＭＡ動作で実行されなかったバスマスタ１８１、１８２のメモリアクセスも確実に実行されることになる。従って、ラウンドロビンモードのときは順序保障回路が１度のリードＤＭＡ動作で２回リードＤＭＡ動作を行う必要がある。
【００５４】
また、固定順位モードの場合にリードＤＭＡ動作が１回で良い理由は、バス使用権獲得優先順位を全ＤＭＡマスタの中で順序保障回路を最下位に設定すれば、順序保障回路がリードＤＭＡを行うときには全てのＤＭＡ動作が完了していることになるためである。
【００５５】
さて、順序保障回路３２６’がリードＤＭＡ動作中に、バスマスタ３０４ｂがライトリクエストを発行し、ライトＤＭＡ終了通知割り込み信号（ＩＮＴ２）が順序保障回路３２６’に入力された場合には次のような動作を実行する。即ち、バスマスタ３０４ａと同様に、バスマスタ３０４ｂからの割り込み信号（ＩＮＴ２）の立ち上がりを受けて、リードＤＭＡ動作開始エントリを受け付ける（ｔ＝Ｔ１４）。しかしながら、この時点では、順序保障回路３２６’はリードＤＭＡ動作中なので、エントリ受け付け待ち状態となる（Ｗａｉｔ＿Ｅｎｔｒｙ２がＨｉｇｈで保持）。
【００５６】
さらに、リードＤＭＡ中に連続してバスマスタ３０４ｃからのライトリクエストが発行され、ライトＤＭＡ終了通知割り込み信号（ＩＮＴ３）が順序保障回路３２６’に入力された場合は次の動作を実行する。即ち、バスマスタ３０４ｃからの割り込み信号（ＩＮＴ３）を受けてリードＤＭＡ動作開始エントリが受け付ける(ｔ＝Ｔ１５)。ここでも同様に順序保障回路３２６’はリードＤＭＡ動作中なので、エントリ受け付け待ち状態となる（Ｗａｉｔ＿Ｅｎｔｒｙ３がＨｉｇｈで保持）。このようにして、リードＤＭＡ状態中に入力された全てのバスマスタからのエントリ情報は保持される。
【００５７】
バスマスタ３０４ａの順序保障を行うためのリードＤＭＡ動作が終了すると（ｔ＝Ｔ１６）、次の動作を実行する。即ち、カレントエントリフラグ（Ｃｕｒｒｅｎｔ＿Ｅｎｔｒｙ１）が立ち下がり、これを受けてバスマスタ３０４ａのライトＤＭＡ完了通知割り込み信号（Ｏｕｔｐｕｔ＿ＩＮＴ１）が割り込み信号制御回路３０９’に出力される。この時点でバスマスタ３０４ａのライトＤＭＡ動作はメモリ２０７に対して、データ転送を完了していることになる。順序保障回路３２６’のリードＤＭＡ動作が終了すると、順序保障回路３２６のＤＭＡステータスはアイドル状態に戻り（ＤＭＡ＿Ｓｔａｔｕｓ：ｉｄｌｅ）、次回のリードＤＭＡ動作の受け付けが可能となる。
【００５８】
ここで、保持されていたエントリ情報（スクリーンショット）に基づき、受け付け待ち状態であったウェイトエントリフラグ２（Ｗａｉｔ＿Ｅｎｔｒｙ２）とウェイトエントリフラグ３（Ｗａｉｔ＿Ｅｎｔｒｙ３）が立ち下がる。続いて、カレントエントリフラグ２（Ｃｕｒｒｅｎｔ＿Ｅｎｔｒｙ２）とカレントエントリフラグ３（Ｃｕｒｒｅｎｔ＿Ｅｎｔｒｙ３）が立ち上がり、リードＤＭＡ動作が開始される（ｔ＝Ｔ１７）。
【００５９】
バスマスタ３０４ｂとバスマスタ３０４ｃの順序保障を行うためのリードＤＭＡ動作が終了すると（ｔ＝Ｔ２０）、カレントエントリフラグ２（Ｃｕｒｒｅｎｔ＿Ｅｎｔｒｙ２）とカレントエントリフラグ３（Ｃｕｒｒｅｎｔ＿Ｅｎｔｒｙ３）が立ち下がる。これを受けて、バスマスタ３０４ｂのライトＤＭＡ完了通知割り込み信号（Ｏｕｔｐｕｔ＿ＩＮＴ２）とバスマスタ３０４ｃのライトＤＭＡ完了通知割り込み信号（Ｏｕｔｐｕｔ＿ＩＮＴ３）が割り込み信号制御回路３０９’に出力される。この時点でバスマスタ３０４ｂ、及びバスマスタ３０４ｃのライトＤＭＡ動作はメモリ２０７に対して、データ転送を完了していることになる。
【００６０】
最後に、リードＤＭＡ状態中に入力された全てのバスマスタからのエントリ情報を、まとめて１回のリードＤＭＡ動作をすることによって順序保障ができることを、ＤＭＡリクエスト発行順の例を表した図８〜図９を用いて説明する。
【００６１】
図８〜図９はライトＤＭＡリクエスト１の順序保障をするためのリードＤＭＡ１が動作中に、ライトＤＭＡリクエスト２、３の２つのライトＤＭＡリクエストがエントリされたときの状態を示す図である。
【００６２】
図８ではエントリされたライトリクエスト分の順序保障のために、そのライトリクエストと同じ数のリードＤＭＡ動作を行った場合を表している。この場合、ライトＤＭＡリクエスト２の後にリードＤＭＡ２を行っても、すぐ後にライトＤＭＡリクエスト３が発行されているので、さらにリードＤＭＡ３を行わなければならない。しかし、リードＤＭＡは実メモリにアクセスをすることで直前に行われたライト動作が確実に終わることを目的としているので、図９に示すようにライトＤＭＡリクエスト２、３が発行された後にリードＤＭＡ２を実行しても、図８と結果は変わらない。
【００６３】
このように、ライトＤＭＡリクエスト２、３の分をまとめてリードＤＭＡ２で順序保障動作させても、リードＤＭＡ２が完了するときにはライトＤＭＡリクエスト２、３は確実に実メモリに対してライト動作が完了しているということになる。
【００６４】
従って、以上説明した実施例に従えば、リードＤＭＡ動作中に入力された全てのバスマスタからのエントリ情報をまとめて１回のリードＤＭＡ動作で順序保障ができる。
【００６５】
なお、図６ではライトＤＭＡ完了通知割り込み信号（ＯＵＴＰＵＴ＿ＩＮＴ１／ＩＮＴ２／ＩＮＴ３）はバスマスタ３０４ａ〜３０４ｃからのライトＤＭＡ終了通知割り込み信号（ＩＮＴ１、ＩＮＴ２、ＩＮＴ３）の立ち下がりを受けてクリアされる。しかしながら、このときの割り込みクリア動作としては、ソフト書き込みで割り込みクリア動作できるような構成でもよい。
【００６６】
上述のように、この実施例に従う順序保障回路はリードＤＭＡ動作中においても、次回のリードＤＭＡ動作のエントリを受け付けることができるので、連続したメモリアクセスの順序保障を行う場合にも有効である。
【００６７】
このように以上説明した実施例では、複数の異なるプロトコルを有するバス間で共有メモリを使用するようなシステムにおいて、各バスに接続されたバスマスタが共有メモリに対してメモリアクセスを行う場合等に利用することができる。
【図１】
2012252599.tif 000003
【図２】
2012252599.tif 000004
【図３】
2012252599.tif 000005
【図４】
2012252599.tif 000006
【図５】
2012252599.tif 000007
【図６】
2012252599.tif 000008
【図７】
2012252599.tif 000009
【図８】
2012252599.tif 000010
【図９】
2012252599.tif 000011
【図１０】
2012252599.tif 000012
【図１１】
2012252599.tif 000013