(57)【要約】【課題】デバイスによるメモリへのデータ書き込みと、ＣＰＵによるメモリへのデータ読み出しの順序性を保証する。【解決手段】割り込み処理装置１はＰＣＩバス（Ｌ１〜Ｌ６）を介してデバイス３から出力される書き込みデータを格納し、デバイス３から出力される割り込み通知に基づいて前記書き込みデータをメモリ４に書き込み、書き込み終了後にＣＰＵ５へ割り込み通知を行う。【選択図】図１
2008282200.tif 000002
【特許請求の範囲】
【請求項１】
ＰＣＩバスを介してデバイスから出力される書き込みデータを格納し、前記デバイスから出力される割り込み通知に基づいて読み出し処理を実行し、前記書き込みデータをメモリに書き込み、書き込み終了後にＣＰＵへ割り込み通知を行う割り込み処理方法。
【請求項２】
ＰＣＩバスを介してデバイスから出力される書き込みデータを格納し、読み出しコマンドに基づいて前記書き込みデータをメモリに書き込むブリッジと、
前記デバイスから出力される割り込み通知をブロックし、前記割り込み通知に基づき前記読み出しコマンドを出力して前記メモリからのデータ読み出し処理を行い、前記データ読み出し処理終了後に割り込み通知を出力するラッパーと、
を備えることを特徴とする割り込み処理装置。
【請求項３】
前記ラッパーは読み出し処理部、読み出しアドレス記憶部及びコマンド・割り込み監視部を有し、
前記読み出しアドレス記憶部は読み出しアドレスを記憶し、
前記コマンド・割り込み監視部は前記デバイスから出力される割り込み通知をブロックし、前記読み出し処理部に読み出し処理を行うよう指示し、
前記読み出し処理部は前記指示に基づき、前記読み出しコマンドを出力し、前記読み出しアドレスを用いて前記メモリからのデータ読み出し処理を行うことを特徴とする請求項２に記載の割り込み処理装置。
【請求項４】
前記アドレス記憶部は前記書き込みデータが最初に書き込まれたアドレスを前記読み出しアドレスとして記憶することを特徴とする請求項３に記載の割り込み処理装置。
【請求項５】
前記アドレス記憶部は前記デバイスから出力される書き込みアドレス情報及びバイト・イネーブル情報に基づきアドレスをカウントし、前記書き込みデータが最後に書き込まれたアドレスを前記読み出しアドレスとして記憶することを特徴とする請求項３に記載の割り込み処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、割り込み処理装置及び割り込み処理方法に関するものである。
【背景技術】
【０００２】
ＰＣＩ（Peripheral Component Interconnect）バスにおけるディレイドトランザクションは、応答に時間がかかるターゲットデバイスへのバストランザクションを分割して発行し、長時間バスを占有することを回避して、バスのスループットを上げるものである。このディレイドトランザクションの手法は、例えばマスタデバイスが単純にリトライ機能を行ったときは、不要なトランザクションが多く含まれており、ＰＣＩバスが無駄に占有される。このような問題を解決するため、ターゲットデバイスがリトライ応答を行うであろうと予測される場合にはトランザクションの発行を抑止し、バスの使用率（占有時間）を低減させ、システム性能を向上するバスマスタ装置が提案されている（例えば特許文献１参照）。
【０００３】
また、ＰＣＩバスにはスループットを上げる機能としてポステッド・ライト（Posted Write）がある。デバイスからメモリへのデータ書き込みはホスト−ＰＣＩブリッジを介して行われる。ブリッジはバッファを有しており、書き込みデータはまずこのバッファに格納される。そして、ブリッジがこの格納されたデータをホストバスの空きに応じてメモリに書き込む。このようなデータ転送手法をポステッド・ライトという。
【０００４】
書き込みデータの出力を行ったデバイスはＣＰＵに割り込みで通知を行う。通知を受け取ったＣＰＵはメモリからデータを読み出す。しかし、ブリッジからメモリへのデータ書き込みと、ＣＰＵからのデータ読み出しはその順序性が保証されていない。従って、ＣＰＵがメモリからデータを読み出したときに、デバイスからの書き込みデータがまだメモリに書き込まれておらず、ＣＰＵが読み出したデータがデバイスの書き込むデータと異なる虞がある。
【特許文献１】特許第３１９０８７１号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明はデバイスによるメモリへのデータ書き込みと、ＣＰＵによるメモリへのデータ読み出しの順序性が保証される割り込み処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様による割り込み処理方法は、ＰＣＩバスを介してデバイスから出力される書き込みデータを格納し、前記デバイスから出力される割り込み通知に基づいて読み出し処理を実行し、前記書き込みデータをメモリに書き込み、書き込み終了後にＣＰＵへ割り込み通知を行うものである。
【０００７】
本発明の一態様による割り込み処理装置は、ＰＣＩバスを介してデバイスから出力される書き込みデータを格納し、読み出しコマンドに基づいて前記書き込みデータをメモリに書き込むブリッジと、前記デバイスから出力される割り込み通知をブロックし、前記割り込み通知に基づき前記読み出しコマンドを出力して前記メモリからのデータ読み出し処理を行い、前記データ読み出し処理終了後に割り込み通知を出力するラッパーと、を備えるものである。
【発明の効果】
【０００８】
本発明によれば、デバイスによるメモリへのデータ書き込みと、ＣＰＵによるメモリへのデータ読み出しの順序性が保証される。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施の形態による割り込み処理装置を図面に基づいて説明する。
【００１０】
図１に本発明の実施形態に係る割り込み処理装置を有するコンピュータシステムの概略構成を示す。コンピュータシステムは割り込み処理装置１、ホストバス２、デバイス３、メモリ４、ＣＰＵ５、ＩＲＣ（Interrupt Request Controller:割り込み要求コントローラ）６を備える。割り込み処理装置１はホストバス２とデバイス３との間に接続され、ブリッジ（Bridge）１１及びラッパー（Wrapper）１２を有する。
【００１１】
ブリッジ１１はバッファ１１１を含む。ラッパー１２は読み出し処理部１２１、読み出しアドレス記憶部１２２、コマンド／割り込み監視部１２３を含む。
【００１２】
ブリッジ１１とラッパー１２の間、ラッパー１２とデバイス３の間は信号線Ｌ１〜Ｌ６で接続されており、信号線Ｌ１〜Ｌ６はそれぞれＰＣＩバス信号を伝送する。信号線Ｌ１はＦＲＡＭＥ＃信号、信号線Ｌ２はＡＤ［３１：００］信号、信号線Ｌ３はＣ／ＢＥ［３：０］＃信号、信号線Ｌ４はＩＲＤＹ＃信号、信号線Ｌ５はＴＲＤＹ＃信号、信号線Ｌ６はＩＮＴＡ＃信号が伝送される。
【００１３】
ＦＲＡＭＥ＃信号はバス・サイクルが実行されていることを示す。ＦＲＡＭＥ＃がアサート（assert:アクティブにする）されたときにサイクルが始まる。ディアサート（deassert:インアクティブにする）されたとき、次のデータ転送フェーズがそのトランザクションの中の最後のデータ転送であることを示す。本実施形態ではＦＲＡＭＥ＃信号以下、負論理であり、アサートする場合はローレベルに、ディアサートする場合にはハイレベルにする。
【００１４】
ＰＣＩバス上のデータ転送はアドレスの提示とデータの転送が時分割されており、またバースト転送が基本となる。そのため、１つのデータ転送トランザクションの中には、最初にアドレス・フェーズがあり、続けて１つ又は複数回のデータ転送フェーズがある。ＡＤ［３１：００］信号はアドレス・フェーズではアドレス情報が転送され、データ・フェーズではデータが転送される。
【００１５】
Ｃ／ＢＥ［３：０］＃信号はアドレス・フェーズではバス・コマンドとして使用され、読み出し、書き込みを指定する。データ・フェーズではバイト・イネーブルとして使用され、ＡＤ［３１：００］信号線３２本のうちどのバイト・レーンを使用するかを指定する。ＢＥ［３］＃からＢＥ［０］＃がそれぞれＡＤ［３１：２４］、ＡＤ［２３：１６］、ＡＤ［１５：０８］ＡＤ［０７：００］に対応する。
【００１６】
ＩＲＤＹ＃信号はイニシエータによって、ＴＲＤＹ＃信号はターゲットによってドライブされ、それぞれイニシエータ、ターゲットがデータ転送可能な状態にあるか否かを示す。従って、ＩＲＤＹ＃信号、ＴＲＤＹ＃信号が両方アサートされているタイミングで読み出し、書き込みが行われる。イニシエータはアドレス線をドライブしてデータ転送の相手を指定し、書き込み、読み出しなどのバス・コマンドを送るデバイスであり、ターゲットはバス・コマンドとアドレスを受け取り、それをデコードしてコマンドに応答するデバイスである。
【００１７】
ＩＮＴＡ＃信号は割り込み（インタラプト）信号である。
【００１８】
デバイス３は割り込み処理装置１、ホストバス２を介してメモリ４にデータの書き込み、読み出し等を行う。書き込みを行う場合、デバイス３はラッパー１２へアドレス及びデータを出力し、その後割り込み通知を行う（ＩＮＴＡ＃をアサートする）。
【００１９】
ラッパー１２のコマンド／割り込み監視部１２３はデバイス３から出力されるコマンド及び割り込み通知を監視する。デバイス３から書き込みコマンドが出力された場合は、読み出しアドレス記憶部１２２に読み出しアドレスを記憶するよう指示する。この読み出しアドレスは、デバイス３がデータ書き込みを行う際に出力するアドレス（データを書き込む先頭のアドレス）である。または、デバイス３から出力されるアドレス情報及びＣ／ＢＥ［３：０］＃信号のバイト・イネーブル情報を監視し、アドレスをカウントして、データが書き込まれる最後のアドレスを求めて、そのアドレスを読み出しアドレスとして記憶するようにしても良い。
【００２０】
また、コマンド／割り込み監視部１２３はデバイス３から出力された割り込み通知をブロックし、これをトリガーにして読み出し処理部１２１に読み出しアドレス記憶部１２２に記憶されている読み出しアドレスを用いて読み出しを行うよう指示する。
【００２１】
読み出し処理部１２１はコマンド／割り込み監視部１２３からの指示に基づいて、読み出しアドレスを用いて読み出しを行う。読み出しを行った後、読み出し処理部１２１はコマンド／割り込み監視部１２３へ読み出し完了を通知する。この通知に基づいてＩＮＴＡ＃信号をアサートしてＩＲＣ６へ割り込み通知を行う。
【００２２】
また、コマンド／割り込み監視部１２３はデバイス３から出力されるＩＮＴＡ＃信号がディアサートされた場合、それを検知して、ラッパー１２から出力されるＩＮＴＡ＃信号をディアサートする。
【００２３】
ブリッジ１１はラッパー１２を介してデバイス３から出力されたアドレス及びデータが与えられ、それをバッファ１１１に格納する。
【００２４】
バッファ１１１は読み出し処理部１２１が読み出しを行う（読み出しコマンドを出力する）際に格納しているデータを出力する。従って、読み出し処理部１２１が読み出しを行うことで、デバイス３から出力されたデータはメモリ４に書き込まれることになり、書き込みが保証される。このように、本実施形態は、ＰＣＩバスのポステッド・ライト機能においては読み出し処理を実行するときに、書き込み処理をまず実行することを利用する。
【００２５】
ＩＲＣ６はＣＰＵ５へ割り込み通知を行う。ＣＰＵ５はＩＲＣ６からの割り込み通知に基づいてメモリ４からデータを読み出し、デバイス３の割り込み通知をクリアする（デバイス３のＩＮＴＡ＃信号をディアサートする）。
【００２６】
デバイス３が書き込みを行う際の各部の処理動作を図２に示すフローチャートを用いて説明する。
（ステップＳ２１）デバイス３がデータ書き込みを実行し、アドレス、データをラッパー１２へ出力する。
（ステップＳ２２）ラッパー１２はデバイス３から受け取ったアドレス、データをブリッジ１１へ出力する。また、読み出しアドレスを読み出しアドレス記憶部１２２に記憶する。
（ステップＳ２３）デバイス３がラッパー１２へ割り込み通知を行う。ラッパー１２（コマンド／割り込み監視部１２３）はこの割り込み通知をブロックする。
（ステップＳ２４）ラッパー１２（読み出し処理部１２１）が読み出しアドレスを使用してデータ読み出しを行い、メモリ４へのデータ書き込みを保証する。
（ステップＳ２５）ラッパー１２がＩＲＣ６へ割り込み通知を行う。
（ステップＳ２６）ＩＲＣ６がＣＰＵ５へ割り込み通知を行う。
（ステップＳ２７）ＣＰＵ５がメモリ４からデータを読み出し、デバイス３の割り込み通知をクリアする。
【００２７】
このようにデバイス３から出力されたデータがメモリ４に書き込まれてから、ＣＰＵ５はメモリ４からデータを読み出すことになり、書き込みと読み出しの順序性が保証される。
【００２８】
デバイス３がデータ書き込みを行う際のデバイス３−ラッパー１２間、ブリッジ１１−ラッパー１２間のＦＲＡＭＥ＃信号、ＡＤ［３１：００］信号、Ｃ／ＢＥ［３：０］＃信号、ＩＲＤＹ＃信号、ＴＲＤＹ＃信号、ＩＮＴＡ＃信号の一例を図３に示すタイミングチャートを用いて説明する。図３（ａ）がデバイス３−ラッパー１２間、図３（ｂ）がブリッジ１１−ラッパー１２間を示す。
【００２９】
クロックＣＬＫ１〜６が書き込みサイクル（図２で示されるステップＳ２１〜Ｓ２３に相当）、クロックＣＬＫ７〜１３が読み出しサイクル（図２で示されるステップＳ２４〜Ｓ２７に相当）である。書き込みサイクルでは、デバイス３−ラッパー１２間とブリッジ１１−ラッパー１２間の信号はＩＮＴＡ＃信号を除いて同一となる。
【００３０】
クロックＣＬＫ１はアドレス・フェーズであり、ＦＲＡＭＥ＃信号がアサートされ、Ｃ／ＢＥ［３：０］＃信号で書き込みコマンドが送られる。
【００３１】
クロックＣＬＫ２〜５はデータ・フェーズである。クロックＣＬＫ２で、ＩＲＤＹ＃信号、ＴＲＤＹ＃信号がアサートされ転送の準備が整えられ、ＡＤ［３１：００］信号では書き込みデータ、Ｃ／ＢＥ［３：０］＃信号ではバイト・イネーブル情報が送られる。
【００３２】
最後のデータ・フェーズ（４番目のデータ・フェーズＤＡＴＡ４）のための準備ができたとき、すなわちクロックＣＬＫ５のとき、ＦＲＡＭＥ＃信号がディアサートされる。これにより次のデータ転送フェーズが最後のデータ転送であることが示される。
【００３３】
データ転送後、クロックＣＬＫ６でＩＲＤＹ＃信号、ＴＲＤＹ＃信号がディアサートされる。また、図３（ａ）に示すように、ＩＮＴＡ＃信号がアサートされデバイス３により割り込み通知が行われる。この割り込み通知は図３（ｂ）に示すように、ラッパー１２でブロックされる。
【００３４】
クロックＣＬＫ７はラッパー１２の読み出しサイクルのアドレス・フェーズであり、図３（ｂ）に示すように、ＦＲＡＭＥ＃信号がアサートされ、Ｃ／ＢＥ［３：０］＃信号で読み出しコマンドが送られる。
【００３５】
クロックＣＬＫ８、９はデータ・フェーズである。クロックＣＬＫ８ではＩＲＤＹ＃信号がアサートされ、Ｃ／ＢＥ［３：０］＃信号でバイト・イネーブル情報が送られる。同時にＦＲＡＭＥ＃信号がディアサートされる。これにより次のデータ転送フェーズが最後のデータ転送であることが示される。
【００３６】
ターゲットがデータ転送を開始するために１クロックの間を空け、クロックＣＬＫ９にてＴＲＤＹ＃信号がアサートされ、ＡＤ［３１：００］信号で読み出しデータが送られる。
【００３７】
データ転送後、つまりラッパー１２が読み出しを行い、ブリッジ１１によるメモリ４へのデータ書き込みが保証され後、クロックＣＬＫ１０でＩＮＴＡ＃信号がアサートされ、ＩＲＣ６を介してＣＰＵ５へ割り込み通知が行われる。また、ＩＲＤＹ＃信号、ＴＲＤＹ＃信号はディアサートされる。
【００３８】
ＣＰＵ５が読み出しを行い、割り込み通知をクリアして、デバイス３のＩＮＴＡ＃信号をディアサートする（図３（ａ）に示すクロックＣＬＫ１３）。ラッパー１２（コマンド／割り込み監視部１２３）はデバイス３のＩＮＴＡ＃信号がディアサートされたことを検知して、図３（ｂ）のクロックＣＬＫ１３に示すようにＩＮＴＡ＃信号をディアサートする。
【００３９】
ラッパー１２は書き込み保証のための読み出しを行っているとき（図３におけるクロックＣＬＫ７〜１３）に、デバイス３から新たに別の書き込みデータが出力されないようにするために、デバイス３−ラッパー１２間のＴＲＤＹ＃信号をアサートしないようにする。
【００４０】
図３に示す例では、読み出しの際に、アドレスを送信してから読み出しデータを受信するまで１クロック空けていたが、これはホストバス２の仕様等に基づいて変わるものであり、例えば図４に示すように３クロック空く場合などもある。
【００４１】
図４ではクロックＣＬＫ８〜１０がＷａｉｔであり、図３に示す例と比較してＦＲＡＭＥ＃信号のディアサート、ＴＲＤＹ＃信号のアサートが遅れる。
【００４２】
図４に示すタイミングチャートの各タイミングにおける、デバイス３−ラッパー１２間、ブリッジ１１−ラッパー１２間の有効になっている（アクティブになっている、データが載っている）ＦＲＡＭＥ＃信号、ＡＤ［３１：００］信号、Ｃ／ＢＥ［３：０］＃信号、ＩＲＤＹ＃信号、ＴＲＤＹ＃信号、ＩＮＴＡ＃信号の信号線を図５に示す。
【００４３】
図５（ａ）に示すように、クロックＣＬＫ１ではコマンド／割り込み監視部１２３がデバイス３から出力されているコマンドが書き込みであることを検知し、読み出しアドレス記憶部１２２へ読み出しアドレス記憶の指示を行う。
【００４４】
図５（ｂ）、（ｃ）に示すように、クロックＣＬＫ２〜５では、データ書き込み処理が行われる。但し、図５（ｃ）に示すように、クロックＣＬＫ５ではＦＲＡＭＥ＃信号がディアサートされる。
【００４５】
図５（ｄ）に示すように、クロックＣＬＫ６では、デバイス３からの割り込み通知であるＩＮＴＡ＃信号がラッパー１２のコマンド／割り込み監視部１２３によりブロックされる。また、コマンド／割り込み監視部１２３は読み出しアドレス記憶部１２２に記憶している読み出しアドレスを読み出し処理部１２１へ出力するよう指示する。また、読み出し処理部１２１に読み出しアドレスに基づいて読み出しを開始するよう指示する。
【００４６】
図５（ｅ）に示すように、クロックＣＬＫ７は、読み出しサイクルのアドレス・フェーズであり、ＦＲＡＭＥ＃信号がアサートされ、アドレス及び読み出しコマンドがラッパー１２の読み出し処理部１２１からブリッジ１１へ出力される。
【００４７】
図５（ｆ）に示すように、クロックＣＬＫ８〜１０はＷａｉｔ状態であり、ＡＤ［３１：００］信号にはデータが載っていない。ＩＲＤＹ＃信号はクロックＣＬＫ８でアサートされる。
【００４８】
図５（ｇ）に示すように、クロックＣＬＫ１１では、ＴＲＤＹ＃信号がアサートされ、ＡＤ［３１：００］信号で読み出しデータが転送される。また、ＦＲＡＭＥ＃信号はディアサートされる。
【００４９】
図５（ｈ）に示すように、クロックＣＬＫ１２では、ＩＲＤＹ＃信号、ＴＲＤＹ＃信号がディアサートされる。また、ラッパー１２が読み出しを行ったことで、デバイス３から出力されたデータの書き込みが保証されたため、読み出し処理部１２１からコマンド／割り込み監視部１２３に通知が行き、ラッパー１２がＩＮＴＡ＃信号をアサートする。
【００５０】
このように、デバイス３から出力された書き込みデータの書き込み保証がされるまでは、割り込み通知がラッパー１２でブロックされることがわかる。これにより、メモリ４へのデータ書き込みと、割り込み通知に基づくＣＰＵ５のメモリ４からのデータ読み出しの順序性が保証される。
【００５１】
（比較例）比較例による割り込み処理装置を有するコンピュータシステムの概略構成を図６に示す。割り込み処理装置６１にラッパーが無い点を除いては図１に示すコンピュータシステムと同様の構成である。
【００５２】
デバイス６３がメモリ６４へデータ書き込みを行う際の各部の処理動作を図７に示すフローチャートを用いて説明する。
（ステップＳ７１）デバイス６３が書き込みを実行し、アドレス及び書き込みデータが出力され、ブリッジ６１０内のバッファ６１１に格納される。
（ステップＳ７２）デバイス６３がＩＲＣ６６へ割り込み通知を行う。
（ステップＳ７３）ＩＲＣ６６がＣＰＵ６５へ割り込み通知を行う。
（ステップＳ７４）ＣＰＵ６５が割り込み通知に基づいてメモリ６４からデータを読み出す。
（ステップＳ７５）ブリッジ６１０がメモリ６４へデータを書き込む。
【００５３】
ステップＳ７４とＳ７５の動作はそれぞれ独立に行われる。従って、ステップＳ７５が行われる前にステップＳ７４が行われた場合、ＣＰＵ６５が読み出すデータと、デバイス６３により書き込まれるデータとが異なる。
【００５４】
これに対し、上記実施形態による割り込み処理装置は、デバイスからの割り込み通知をブロックし、書き込みが保証された後でＣＰＵへ割り込み通知を行う。従って、書き込みと読み出しの順序性が保証され、ＣＰＵが読み出すデータとデバイスにより書き込まれるデータとを一致させることができる。
【００５５】
上述した実施の形態はいずれも一例であって制限的なものではないと考えられるべきである。本発明の技術的範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００５６】
【図１】本発明の実施形態による割り込み処理装置を含むコンピュータシステムの概略構成図である。
【図２】同実施形態による割り込み処理動作を示すフローチャートである。
【図３】同実施形態による割り込み処理動作を説明するＰＣＩバス信号のタイミングチャートである。
【図４】同実施形態による割り込み処理動作を説明するＰＣＩバス信号のタイミングチャートである。
【図５】各タイミングにおける有効なＰＣＩバス信号を示す図である。
【図６】比較例による割り込み処理装置を含むコンピュータシステムの概略構成図である。
【図７】比較例による割り込み処理動作を示すフローチャートである。
【符号の説明】
【００５７】
１  割り込み処理装置
２  ホストバス
３  デバイス
４  メモリ
５  ＣＰＵ
６  ＩＲＣ
１１  ブリッジ
１２  ラッパー
【図１】
2008282200.tif 000003
【図２】
2008282200.tif 000004
【図３】
2008282200.tif 000005
【図４】
2008282200.tif 000006
【図５】
2008282200.tif 000007
【図６】
2008282200.tif 000008
【図７】
2008282200.tif 000009