(57)【要約】【課題】マルチプロセッサシステムにおいて効率的に割込処理を実行する。【解決手段】グラフィックスプロセッサ１２０は、外部プロセッサである統括制御部１１０と協働的に処理を実行する。グラフィックスプロセッサ１２０は、所定のタスクを要求するイベントの発生を検出し、統括制御部１１０に通知する通知ランチャＮＬを備える。イベント検出部２０は、所定の割込タスクを要求するイベントの発生を検出する。通知データ送信部２２は、イベントの発生が検出されたとき、そのイベントが発生した事実とそのイベントが要求するタスクの実行に必要なデータを単一のトランザクションの中で、割込タスクの実行主体へ通知する。【選択図】図３
2008123140.tif 000002
【特許請求の範囲】
【請求項１】
所定のタスクを要求するイベントの発生を検出する過程と、
イベントの発生が検出されたとき、そのイベントが発生した事実とそのイベントが要求する前記所定のタスクの実行に必要なデータを単一のトランザクションの中で前記所定のタスクの実行主体へ通知する過程と、
を含むことを特徴とするイベント通知方法。
【請求項２】
前記単一のトランザクションはデータライトであり、イベントが発生した事実はライトコマンド自体によって示し、前記所定のタスクの実行に必要なデータはライトコマンドにともなうライトデータとして通知することを特徴とする請求項１に記載のイベント通知方法。
【請求項３】
データライト先のアドレスは、前記所定のタスクの実行主体がイベントの発生通知を受けるための専用アドレスであることを特徴とする請求項２に記載のイベント通知方法。
【請求項４】
第１および第２のプロセッサと、
所定のタスクを要求するイベントの発生を検出し、いずれかのプロセッサへ通知するイベント制御部と、
を備え、イベント制御部は、
前記第１のプロセッサに対し、イベントを割込処理ハンドシェイクによって通知する第１通知部と、
前記第２のプロセッサに対し、イベントをそのイベントが発生した事実とそのイベントが要求する前記所定のタスクの実行に必要なデータを単一のトランザクションの中で通知する第２通知部と、
を備えることを特徴とする情報処理装置。
【請求項５】
前記第１のプロセッサ、第２のプロセッサの少なくとも一方は、複数設けられることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記第１のプロセッサは前記第２のプロセッサよりも汎用性の高いプロセッサであることを特徴とする請求項４に記載の情報処理装置。
【請求項７】
外部プロセッサと協働的に処理を実行するプロセッサであって、
所定のタスクを要求するイベントの発生を検出し、前記外部プロセッサに通知するイベント通知部を備え、
当該イベント通知部は、
前記所定のタスクを要求するイベントの発生を検出するイベント検出部と、
イベントの発生が検出されたとき、そのイベントが発生した事実とそのイベントが要求する前記所定のタスクの実行に必要なデータを単一のトランザクションの中で、前記所定のタスクの実行主体へ通知する通知データ送信部と、
を含むことを特徴とするプロセッサ。
【請求項８】
前記通知データ送信部は、前記単一のトランザクションをデータライトにより実行し、イベントが発生した事実はライトコマンド自体によって示し、前記所定のタスクの実行に必要なデータはライトコマンドにともなうライトデータとして通知することを特徴とする請求項７に記載のプロセッサ。
【請求項９】
前記イベント通知部はさらに、
前記ライトコマンドを発行する先のアドレスを予め記憶するアドレス用レジスタを含むことを特徴とする請求項８に記載のプロセッサ。
【請求項１０】
前記イベント通知部はさらに、
前記通知データ送信部により転送されるべき前記所定のタスクの実行に必要なデータを予め記憶する通知データ用レジスタを含むことを特徴とする請求項８または９に記載のプロセッサ。
【請求項１１】
前記所定のタスクの実行に必要なデータは、割込ベクトルを含むことを特徴とする請求項８に記載のプロセッサ。
【請求項１２】
前記イベント通知部はさらに、
前記イベント検出部によって監視すべき少なくとも一つのイベントを指定するデータを予め記憶するイベント選択レジスタを含み、
前記イベント検出部には、本プロセッサの内部において発生しうる複数のイベントが並列に入力されており、これらのイベントの中から、前記イベント選択レジスタに記憶されたデータにより指定された少なくともひとつのイベントの発生を検出することを特徴とする請求項８から１１のいずれかに記載のプロセッサ。
【請求項１３】
前記イベント通知部はさらに、
データ転送処理に関する指示データを記憶する指示データ用レジスタを含むことを特徴とする請求項８から１２のいずれかに記載のプロセッサ。
【請求項１４】
前記外部プロセッサは、本プロセッサから順次転送されたデータをバッファリングして処理するものであり、
前記通知データ送信部は、前記指示データを前記所定のタスクの実行に必要なデータとともに単一のトランザクションにより前記外部プロセッサに転送し、かつ、当該指示データは、それに付随する前記所定のタスクの実行に必要なデータの前記外部プロセッサにおける転送の順序規則を指定するデータであることを特徴とする請求項１３に記載のプロセッサ。
【請求項１５】
本プロセッサと前記外部プロセッサとは、区別可能な複数のチャンネルのいずれかを介してデータ転送を実行し、
前記イベント通知部はさらに、
前記単一のトランザクションに使用するチャンネルを指定するデータを予め記憶するチャンネル指定レジスタを含み、
前記指示データにより指定される転送の順序規則は、同一のチャンネルを介して転送されたデータ間について有効であることを特徴とする請求項１４に記載のプロセッサ。
【請求項１６】
前記外部プロセッサは、メインメモリと、キャッシュメモリと、を含むものであって、
前記通知データ送信部は、前記指示データを前記所定のタスクの実行に必要なデータとともに単一のトランザクションにより前記外部プロセッサに転送し、かつ、当該指示データは、それに付随する前記所定のタスクの実行に必要なデータに対する前記メインメモリと前記キャッシュメモリの間のコヒーレンシを管理する方法を指定するデータであることを特徴とする請求項１３に記載のプロセッサ。
【請求項１７】
前記イベント通知部はさらに、
前記外部プロセッサに対してデータ転送を行うアクセス要求主体ごと割り振られた識別データを予め記憶する識別用レジスタを含み、
前記通知データ送信部は、前記識別データを前記所定のタスクの実行に必要なデータとともに単一のトランザクションにより前記外部プロセッサに転送し、
前記外部プロセッサは、メモリと、前記メモリに対する外部からのアクセスを制御する入出力制御部と、を含むものであって、前記入出力制御部は、転送された前記識別データが、所定の条件を満たすときに、前記所定のタスクの実行に必要なデータの書き込みを許可することを特徴とする請求項８から１６のいずれかに記載のプロセッサ。
【請求項１８】
前記入出力制御部は、転送された前記識別データが、そのアドレスにより指定される領域についてアクセスを許可されるべき識別値であったときに、前記所定のタスクの実行に必要なデータの書き込みを許可することを特徴とする請求項１７に記載のプロセッサ。
【請求項１９】
前記イベント通知部は、複数並列に設けられ、各イベント通知部には、本プロセッサの内部において発生しうる複数のイベントが並列に入力されており、
各イベント通知部は、
前記複数のイベントの中から監視すべき少なくとも一つのイベントを指定するデータを予め記憶するイベント選択レジスタと、
前記所定のタスクの実行に必要なデータを予め記憶する通知データ用レジスタと、
をさらに含むことを特徴とする請求項７または８に記載のプロセッサ。
【請求項２０】
前記イベント通知部は、ある第１のイベントが発生した後、次の第２のイベントが発生したとき、前記外部プロセッサによって前記第１のイベントの割込情報がクリアされることを待たずに、直ちに前記第２のイベントに関する通知処理を実行することを特徴とする請求項７から１９のいずれかに記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム内において発生したイベントを、プロセッサに通知するための技術に関する。
【背景技術】
【０００２】
近年のコンピュータゲームやデジタル放送などの分野に利用されるコンピュータグラフィックス技術や画像処理技術の著しい進歩に伴い、コンピュータ、ゲーム機器、テレビなどの情報処理装置は高精細の画像データをより高速に処理する能力を求められている。これらの情報処理装置において高性能な演算処理を実現するためには、複数のプロセッサを備えた情報処理装置において、それぞれのプロセッサにタスクを割り当ることにより、複数のタスクを並列処理したりパイプライン処理する方法が採用される。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
各プロセッサにより実行されるタスクの中には、あるイベントが発生したときに他のタスクに優先して実行されるべきタスクもある。以下、このようなイベント発生を契機として他のタスクに優先して実行されるタスクのことを「割込タスク」とよぶ。イベントが発生してからプロセッサがその割込タスクを実行開始するまでのオーバーヘッドが大きくなると、割込処理のリアルタイム性が損なわれてしまう。
【０００４】
本発明は、このような課題に鑑みてなされたものであり、その目的のひとつは、情報処理システムにおける割込処理を好適に実行するための技術を提供することにある。
【課題を解決するための手段】
【０００５】
本発明のある態様によれば、イベント通知方法が提供される。このイベント通知方法は、所定のタスクを要求するイベントの発生を検出する。イベントの発生が検出されたとき、そのイベントが発生した事実とそのイベントが要求する所定のタスクの実行に必要なデータを単一のトランザクションの中で処理の主体へ通知する。
本明細書において、「タスク」とは、ある目的を達成するためにプログラムされたアプリケーションまたはそれに含まれる情報処理の内容をいい、アプリケーションと対応してもよいし、入出力制御やユーザが指定したコマンドなどアプリケーションよりも小さい単位と対応してもよく、何らかの処理または機能の単位に対応すればよい。
この態様によれば、所定のタスクの実行主体は、１回のデータ転送を受けることにより、タスクに必要なデータを取得できるため、イベントの発生源に対して、タスクの実行に必要なデータなどを問い合わせる必要がなくなり、割込処理のオーバーヘッドを短縮することができる。
【０００６】
なお、本発明を方法、装置、システムにより表現したものもまた、本発明の態様として有効である。
【発明の効果】
【０００７】
本発明によれば、情報処理システムにおける割込処理を好適に実行することができる。
【発明を実施するための最良の形態】
【０００８】
はじめに、本発明の実施の形態に係るイベント管理技術の概要について説明する。本実施の形態に係るイベント管理技術は、パーソナルコンピュータ、ゲーム機器、ＨＤＤレコーダ、ＤＶＤレコーダなどの情報処理装置において、あるプロセッサなどの処理装置から他の処理装置にイベントの発生を通知し、割込タスクを実行するために利用される。
【０００９】
本発明のある実施の形態は、外部プロセッサと協働的に処理を実行するプロセッサに関する。このプロセッサは、所定のタスクを要求するイベントの発生を検出し、外部プロセッサに通知するイベント通知部を備える。イベント通知部は、所定のタスクを要求するイベントの発生を検出するイベント検出部と、イベントの発生が検出されたとき、そのイベントが発生した事実とそのイベントが要求する所定のタスクの実行に必要なデータを単一のトランザクションの中で、所定のタスクの実行主体へ通知する通知データ送信部と、を含む。
【００１０】
この実施の形態によると、イベントの発生の通知を受けた外部プロセッサは、そのイベントが要求する所定のタスク（以下、割込タスクともいう）を実行するために必要な情報を、プロセッサに問い合わせる必要がなくなるため、割込処理のオーバーヘッドを短縮することができる。
【００１１】
通知データ送信部は、単一のトランザクションをデータライトにより実行し、イベントが発生した事実はライトコマンド自体によって示し、その割込タスクの実行に必要なデータはライトコマンドにともなうライトデータとして通知してもよい。
【００１２】
イベント通知部はさらに、ライトコマンドを発行する先のアドレスを予め記憶するアドレス用レジスタを含んでもよい。この場合、アドレス用レジスタの値を書き換えることにより、イベントの通知先を任意に切り替えることができる。
データライト先のアドレスは、割込タスクの実行主体がイベントの発生通知を受けるための専用アドレスであってもよい。これは、外部プロセッサが割込タスクを実行可能な処理ユニットを複数備える場合に特に有効である。専用アドレスは、メインメモリ、処理ユニットごとのローカルメモリ、レジスタのいずれの領域に配置してもよい。
この場合、割込タスクの実行主体は、専用アドレスを監視しておき、この専用アドレスに書き込まれたデータにもとづいて、割込タスクを実行することができる。この専用アドレスは、いわゆるフラグレジスタの機能と、イベントステータスを格納するレジスタの機能との両方を果たすことになる。
【００１３】
イベント通知部はさらに、通知データ送信部により転送されるべき割込タスクの実行に必要なデータを予め記憶する通知データ用レジスタを含んでもよい。割込タスクの実行に必要なデータは、割込ベクトル、イベントの種類やイベントに応じて実行すべき割込タスクの種類、割込タスクがもとづくべき変数などを含んでもよい。
この場合、割込タスクの実行に必要なデータを書き換えることにより、あるイベントの発生を契機として実行すべき割込タスクを好適に設定することができる。
【００１４】
イベント通知部はさらに、イベント検出部によって監視すべきイベントを指定するデータを予め記憶するイベント選択レジスタを含んでもよい。イベント検出部には、本プロセッサの内部において発生しうる複数のイベントが並列に入力されており、これらの中から、イベント選択レジスタに記憶されたデータにより指定された少なくともひとつのイベントの発生を検出してもよい。この場合、ある割込タスクを発生させるイベントを任意に設定することができ、ソフトウェアの開発、ハードウェアの開発を柔軟に行うことができる。
【００１５】
イベント通知部はさらに、データ転送処理に関する指示データを記憶する指示データ用レジスタを含んでもよい。外部プロセッサは、本プロセッサから順次転送されたデータをバッファリングして処理するものであり、通知データ送信部は、指示データを割込タスクの実行に必要なデータとともに単一のトランザクションにより外部プロセッサに転送し、かつ、当該指示データは、それに付随する割込タスクの実行に必要なデータの外部プロセッサにおける転送の順序規則を指定するデータであってもよい。
【００１６】
本プロセッサと外部プロセッサとは、互いに区別可能な複数の転送チャンネルのいずれかを介してデータ転送を実行してもよい。ここで複数の転送チャンネルは、物理的に一つの転送チャンネルに対して仮想的に割り当てられる形態でもよい。イベント通知部はさらに、単一のトランザクションに使用するチャンネルを指定するデータを予め記憶するチャンネル指定レジスタを含んでもよい。指示データにより指定される転送の順序規則は、同一のチャンネルを介して転送されたデータ間についてだけ有効であってもよい。
この場合、処理の順序を保つべきデータ転送やイベント通知を同じチャンネルに割り当て、別のチャンネルには、処理の順序を問わないデータ転送等を割り当てることにより、関連のあるデータ転送に対して順序を管理することができ、その他のチャンネルについては処理の効率を優先することができる。
【００１７】
外部プロセッサは、メインメモリと、キャッシュメモリと、を含むものであってもよい。通知データ送信部は、指示データを割込タスクの実行に必要なデータとともに単一のトランザクションにより外部プロセッサに転送し、かつ、当該指示データは、それに付随する割込タスクの実行に必要なデータに対するメインメモリとキャッシュメモリの間のコヒーレンシを管理する方法を指定するデータであってもよい。
【００１８】
イベント通知部はさらに、前記外部プロセッサに対してデータ転送を行うアクセス要求主体ごとに割り振られた識別データを予め記憶する識別用レジスタを含んでもよい。通知データ送信部は、識別データを割込タスクの実行に必要なデータとともに単一のトランザクションにより外部プロセッサに転送し、外部プロセッサは、メモリと、メモリに対する外部からのアクセスを制御する入出力制御部と、を含むものであって、入出力制御部は、転送された識別データが、所定の条件を満たすときに、割込タスクの実行に必要なデータの書き込みを許可してもよい。
所定の条件は、転送された前記識別データがそのアドレスにより指定される領域についてアクセスを許可されるべき識別値に合致したことであってもよい。
この場合、適切な識別データが付与されていない回路ブロックが、不正な割込を発生させ、メモリアクセスするのを防止することができる。
【００１９】
イベント通知部は、複数並列に設けられ、各イベント通知部には、本プロセッサの内部において発生しうる複数のイベントが並列に入力されており、各イベント通知部は、複数のイベントの中から監視すべきイベントを指定するデータを予め記憶するイベント選択レジスタと、監視すべきイベントが要求する割込タスクの実行に必要なデータを予め記憶する通知データ用レジスタと、を含んでもよい。
この場合、イベント通知部ごとに異なる割込タスクを設定することができ、各割込タスクを要求するイベントを個別に設定することができる。
【００２０】
本発明の別の実施の形態は、情報処理装置に関する。この情報処理装置は、第１および第２のプロセッサと、所定の割込タスクを要求するイベントの発生を検出し、いずれかのプロセッサへ通知するイベント制御部と、を備える。イベント制御部は、第１のプロセッサに対し、イベントを割込処理ハンドシェイクによって通知する第１通知部と、第２のプロセッサに対し、イベントをそのイベントが発生した事実とそのイベントが要求する割込タスクの実行に必要なデータを単一のトランザクションの中で通知する第２通知部と、を備える。
【００２１】
この態様によると、第１のプロセッサに対しては、ハンドシェイクを利用したイベント通知を行うことにより、従来からのソフトウェアを好適に承継することができる。第２のプロセッサに対しては、イベント通知を単一のトランザクションにより行うことにより、オーバーヘッドを解消することができる。
【００２２】
第１のプロセッサは第２のプロセッサよりも汎用性の高いプロセッサであってもよい。別の観点から、第１のプロセッサは、統括的な処理を実行するプロセッサであり、第２のプロセッサは、第１のプロセッサからの指示にもとづき処理を実行するプロセッサであってもよい。
前記第１のプロセッサ、第２のプロセッサの少なくとも一方は、複数設けられてもよい。
また、第１のプロセッサと第２のプロセッサは、同一のプロセッサであってもよい。
【００２３】
イベント通知部は、ある第１のイベントが発生した後、次の第２のイベントが発生したとき、外部プロセッサによって第１のイベントの割込情報がクリアされることを待たずに、直ちに第２のイベントに関する通知処理を実行してもよい。この場合、複数のイベントが連続して発生するような場合に、処理のオーバーヘッドを短縮することができる。
【００２４】
以下、本発明を好適な実施の形態をもとに図面を参照しながら説明する。各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。また、実施の形態は、発明を限定するものではなく例示であって、実施の形態に記述されるすべての特徴やその組み合わせは、必ずしも発明の本質的なものであるとは限らない。
【００２５】
図１は、実施の形態に係る情報処理装置１００の機能ブロック図である。情報処理装置１００は、統括制御部１１０、グラフィックスプロセッサ１２０およびメインメモリ１４０、サウスブリッジ１４２を含む。情報処理装置１００は表示装置１５０と接続されている。表示装置１５０は、統括制御部１１０およびグラフィックスプロセッサ１２０の処理の結果得られた画像、映像を出力する。表示装置１５０は情報処理装置１００の一部として構成されてもよい。
【００２６】
以降の図において、様々な処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他のＬＳＩで構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
また、この情報処理装置１００では、情報処理装置１００を効率よく使用するための機能、環境を提供し、装置全体を統括的に制御するオペレーティングシステム（以下、単に「ＯＳ」とよぶ）が実行される。ＯＳ上で複数のアプリケーションソフトウェアが実行される。
【００２７】
情報処理装置１００の全体構成の概略は以下の通りである。統括制御部１１０は、情報処理装置１００において、汎用的な演算処理を実行する演算ユニットであり、グラフィックスプロセッサ１２０は、グラフィックスに関連する演算処理に特化された演算ユニットである。統括制御部１１０およびグラフィックスプロセッサ１２０は、互いに協働しながら、表示装置１５０に表示すべき画像データを生成する。
サウスブリッジ１４２は、情報処理装置１００に搭載される図示しないその他のチップのＩ／Ｏ（Input-Output）コントローラを統合し、拡張バスなどとデータの橋渡しの役割を担う。たとえば、サウスブリッジ１４２には、ＵＳＢ（Universal Serial Bus）などのＩ／Ｏインタフェース、あるいはその他の拡張バスを相互接続するブリッジ回路、ユーザが操作するコントローラやキーボードなどのＩ／Ｏインタフェースなどが内蔵されている。サウスブリッジ１４２は、統括制御部１１０とバスを介して接続されており、統括制御部１１０は、サウスブリッジ１４２を介して図示しないチップとの通信を行いながら、演算処理を実行する。サウスブリッジ１４２は、後述するグラフィックスプロセッサ１２０のコマンド送受信補助装置３０と同等の機能を有するコマンド送受信補助装置１４４を含む。
【００２８】
次に、統括制御部１１０の構成について説明する。
統括制御部１１０は、１つのメインプロセッサ１１２と複数のサブプロセッサ１１６ａ〜ｄ、サブプロセッサ１１６ａ〜ｄごとに設けられた複数のローカルメモリ１１７ａ〜ｄ、メモリコントローラ１１３、Ｉ／Ｏアクセス制御装置１１４を含む。各ブロックは、バス１１８を介して接続されており、相互通信可能である。サブプロセッサ１１６の個数は４つに限定されるものではなく任意である。
【００２９】
メインプロセッサ１１２は、各アプリケーションにおける基本処理単位としてのタスクを各サブプロセッサ１１６に割り当てる。あるいは、メインプロセッサ１１２自身がタスクを実行してもよい。サブプロセッサ１１６がそれぞれ割り当てられたタスクを実行することにより、複数のタスクが並列処理され、あるいはパイプライン処理される。
以下、タスクの割り当て処理を含むメインプロセッサ１１２により実行される処理のことを「メインプロセス」、サブプロセッサ１１６により実行される処理のことを「サブプロセス」とよぶ。メインプロセッサ１１２は、ユーザインタフェースに関する処理のように比較的優先度が高い情報処理装置１００全体を統括する処理を実行する。これに対して、サブプロセッサ１１６は、比較的優先度が低いバックグラウンドで実行される計算のようにメインプロセスの下請け的な処理を実行する。
【００３０】
メインプロセッサ１１２やサブプロセッサ１１６に含まれる図示しないＤＭＡＣ（Direct Memory Access Controller）は、ローカルメモリ１１７、メインメモリ１４０やグラフィックスプロセッサ１２０のグラフィックスメモリ１２８との間のデータ転送、データ退避などを、メインプロセッサ１１２またはサブプロセッサ１１６それぞれからの命令によって制御する。
【００３１】
メインメモリ１４０は、情報処理装置１００内で共有される記憶領域である。メインメモリ１４０には、タスクの実行状態に関連するデータが格納される。たとえば、統括制御部１１０によりコンピュータグラフィックスに関するタスクが処理されて得られたモデリングデータなどが一時的に格納される。また、このメインメモリ１４０には、グラフィックスプロセッサ１２０により生成されたデータが退避される場合もある。メモリコントローラ１１３は、統括制御部１１０内の各ユニットからメインメモリ１４０へのデータアクセスを制御する。
【００３２】
上述したように、統括制御部１１０は、グラフィックスプロセッサ１２０およびサウスブリッジ１４２と接続される。Ｉ／Ｏアクセス制御装置１１４は、グラフィックスプロセッサ１２０やサウスブリッジ１４２と、統括制御部１１０内部のブロックとのデータの送受信を制御するブロックであり、メモリに対する外部からのアクセスを制御するブロックでもある。
【００３３】
次に、グラフィックスプロセッサ１２０の構成について説明する。
グラフィックスプロセッサ１２０は、統括制御部１１０と協働して、画像処理を専用に実行するユニットであり、たとえば、レンダリング処理を実行する。グラフィックスプロセッサ１２０は、統括制御部１１０からの指示により画像処理を実行する。グラフィックスプロセッサ１２０は、統括制御部１１０により処理されるそれぞれのタスクに関連する画像処理を行い、生成した画像、映像を表示装置１５０に出力する。グラフィックスプロセッサ１２０は、複数の画像処理を時分割して並列的に実行してもよい。
【００３４】
グラフィックスプロセッサ１２０は、グラフィックスメモリ１２８、メモリコントローラ１２９、演算ユニット１３０、画像処理側ＤＭＡＣ１２２、制御ブロック１２４、ディスプレイコントローラ１２６、およびイベント制御部１０、コマンド送受信補助装置３０を備える。これらのブロック同士は、バス４０を介して接続されており、各ブロック間でデータの送受信、共有が可能である。
【００３５】
制御ブロック１２４は、グラフィックスプロセッサ１２０全体を制御するブロックである。制御ブロック１２４は、演算ユニット１３０、グラフィックスメモリ１２８、ディスプレイコントローラ１２６および図示しないブロックを統括的に制御し、各ブロック間のデータ転送の調停管理や同期管理等を行う。
【００３６】
画像処理側ＤＭＡＣ１２２は、統括制御部１１０のメインメモリ１４０とグラフィックスメモリ１２８の間のデータ転送、データ退避などを制御ブロック１２４からの命令によって制御する。
【００３７】
演算ユニット１３０は、制御ブロック１２４からの命令にしたがって、グラフィックに関する様々な演算処理を行う。その処理の一例としては、３次元モデリングデータをもとに座標変換、陰面消去、シェーディングを行って画像フレームデータを作成し、フレームバッファに書き込む一連のレンダリング処理などが挙げられる。
演算ユニット１３０は、特に３次元グラフィックスに関する処理を高速に行うために、ラスタライザ１３２、シェーダユニット１３４、テクスチャユニット１３６などの機能ブロックを含む。
【００３８】
ラスタライザ１３２は、描画する基本物体（以下、「プリミティブ」とよぶ）の頂点データを統括制御部１１０から受け取り、３次元空間上のプリミティブを投影変換により描画平面上の図形に変換するビュー変換を行う。さらに、描画平面上の図形を、描画平面の水平方向に沿ってスキャンしながら、一列ごとに量子化されたピクセルに変換するラスタ処理を行う。このラスタライザ１３２によってプリミティブがピクセル展開されて、各ピクセル毎にピクセル情報を算出する。このピクセル情報には、ＲＧＢカラー値、透明度を表すα値、視点からの奥行きを表すＺ値などが含まれる。
【００３９】
ラスタライザ１３２は、スキャンラインに沿って所定の大きさのピクセル領域を生成し、シェーダユニット１３４、テクスチャユニット１３６へと出力する。ラスタライザ１３２から出力されるピクセル領域は、一度キューにスタックされ、シェーダユニット１３４はスタックされたピクセル領域を順に処理していく。
【００４０】
シェーダユニット１３４は、３次元モデリングデータに対する座標変換や、ラスタライザ１３２により算出されたピクセル情報をもとにシェーディング処理を行う。ピクセル情報のシェーディング処理では、テクスチャユニット１３６により得られたテクセル情報をもとに、テクスチャマッピング後のピクセル色を決定し、グラフィックスメモリ１２８内のフレームバッファにシェーディング処理後の画像フレームデータを書き込む。さらにシェーダユニット１３４はフレームバッファに書き込まれた画像フレームデータに対してフォギング、アルファブレンディング等の処理を行い最終的な描画色を決定してフレームバッファの画像フレームデータを更新する。
【００４１】
テクスチャユニット１３６は、シェーダユニット１３４からテクスチャデータを指定するパラメータを受け取り、要求されたテクスチャデータをグラフィックスメモリ１２８やメインメモリ１４０内のテクスチャバッファから読み出し、所定の処理を行った後にシェーダユニット１３４に対して出力する。
【００４２】
グラフィックスメモリ１２８は、グラフィックスプロセッサ１２０により使用、管理されるグラフィックスデータやプログラムコードを記憶するためのメモリ領域である。グラフィックスメモリ１２８には、画像フレームデータが格納されるフレームバッファやＺバッファに加えて、画像フレームデータを描画する際に参照される基本データである頂点データ、テクスチャデータ、カラールックアップテーブル、制御ブロック１２４用のオペレーションコード、シェーダユニット１３４用のプログラムデータに対応する領域が用意されている。
【００４３】
ディスプレイコントローラ１２６は、水平および垂直同期信号を生成し、表示装置１５０の表示タイミングにしたがって、グラフィックスメモリ１２８に格納されるフレームバッファから画像フレームデータのピクセルデータをライン状に順次読み込んでいく。さらにディスプレイコントローラ１２６は、ライン状に読み込まれたピクセルデータを、ＲＧＢのカラー値からなるデジタルデータから表示装置１５０に対応したフォーマットに変換して出力する。
【００４４】
本実施の形態に係るグラフィックスプロセッサ１２０は、内部で発生したイベントを検出し、統括制御部１１０に対して通知するために、イベント制御部１０を備える。後に詳述するが、イベント制御部１０は、検出したイベントを、その性質や機能などに応じて異なる２つの方式にて統括制御部１１０へと通知する。
【００４５】
グラフィックスプロセッサ１２０から統括制御部１１０へ通知すべきイベントの代表的なものとして、以下が例示される。
１．  描画の完了
グラフィックスプロセッサ１２０はプリミティブの頂点データなど画像生成のために必要な基本情報や画像生成の開始指示を統括制御部１１０から与えられると、統括制御部１１０とは独立して画像処理を実行する。指示された画像処理が終了すると、グラフィックスプロセッサ１２０はその旨をイベントとして統括制御部１１０に通知する。統括制御部１１０は、グラフィックスプロセッサ１２０からイベント通知されると、そのイベントに対応したイベントハンドラにより割込タスクを実行する。グラフィックスプロセッサ１２０が所定の画像を生成したことを条件として実行されるべき割込タスクの場合、統括制御部１１０は画像生成終了を示すイベントの通知を契機としてその割込タスクを実行することになる。
【００４６】
２．  ＤＭＡ転送の完了
グラフィックスプロセッサ１２０内の画像処理側ＤＭＡＣ１２２がメインメモリ１４０へとＤＭＡ処理を実行した場合、そのＤＭＡ転送の完了した旨を通知する。
３．  ビデオ出力の垂直同期信号や水平同期信号のアサート、ネゲート
４．  その他、図示しないオーディオ用のＦＩＦＯ（First In First Out）のバッファが空になった場合に発生するイベントなど
【００４７】
コマンド送受信補助装置３０は、グラフィックスプロセッサ１２０内部のブロックと統括制御部１１０の間のコマンドおよびデータの送受信を制御する。コマンド送受信補助装置３０は、イベント制御部１０から出力されるイベント通知に関するデータを受け、統括制御部１１０のＩ／Ｏアクセス制御装置１１４に送信する。また、コマンド送受信補助装置３０は、バス４０に接続される各ブロックから、Ｉ／Ｏアクセス制御装置１１４へのデータ転送を制御する。コマンド送受信補助装置３０は、イベント通知に関するデータと、バス４０を介して転送されるライトコマンド、リードコマンドおよびアドレスデータ、ライトデータ、リードデータ等を一旦バッファリングしてタイミングを制御しながら、Ｉ／Ｏアクセス制御装置１１４へと転送する。また、コマンド送受信補助装置３０は、Ｉ／Ｏアクセス制御装置１１４から転送されるコマンドやデータを受信する機能も果たす。
【００４８】
以上が、情報処理装置１００の全体構成および動作の概要である。以下、グラフィックスプロセッサ１２０から統括制御部１１０へのイベント通知に着目し、それを実現するための構成について詳細に説明する。
【００４９】
図２は、グラフィックスプロセッサ１２０のイベント通知機能に関連する機能ブロック図である。統括制御部１１０に対するイベント通知は、主としてイベント制御部１０およびコマンド送受信補助装置３０により実行される。イベント制御部１０は、２つの通知部、すなわち、第１の通知部である外部割込コントローラ１２と、第２の通知部であるｍ個のイベント通知部（以下、通知ランチャＮＬ１〜ＮＬｍという）と、を含む。外部割込コントローラ１２は、第１の方式にて統括制御部１１０にイベント通知を実行し、複数の通知ランチャＮＬ１〜ＮＬｍは、第２の方式にて統括制御部１１０にイベント通知を実行する。
【００５０】
通知ランチャＮＬおよび外部割込コントローラ１２それぞれには、グラフィックスプロセッサ１２０内で発生しうるｎ個のイベントＥＶＴ１〜ＥＶＴｎに対応するｎ本の信号線ＳＬ１〜ＳＬｎが接続されている。各イベントは、すでに例示したようなイベントそれぞれに対応している。信号線ＳＬ１〜ＳＬｎの信号レベルは制御ブロック１２４によって制御される。制御ブロック１２４は、各ブロックにおいて発生するイベントを監視する。そして、制御ブロック１２４は、あるイベントが発生すると、対応する信号線ＳＬの信号レベルを所定レベル（たとえばハイレベル）とする。通知ランチャＮＬ１〜ＮＬｍおよび外部割込コントローラ１２には、通知の対象とすべきイベントや、そのイベント発生の結果として実行すべき割込タスクが個別に設定されている。
【００５１】
なお、本実施の形態において、各ブロック間の信号の送受信は、第１、第２のチャンネルを介して実行される。第１、第２のチャンネルは、同一の信号線に対して仮想的に割り当てられるものであり、たとえば、あるデータが第１、第２のいずれのチャンネルであるかを識別するために、そのデータに対応するパケットの先頭にチャンネルの識別子を有するヘッダを設けてもよい。この意味において、第１、第２のチャンネルの区別は仮想的なものであるから、第１、第２のチャンネルを以下、仮想チャンネルＶＣ０、ＶＣ１と呼ぶ。
本実施の形態では、通知ランチャＮＬからの出力データ、バス４０を介して転送されるデータが、仮想チャンネルＶＣ０、ＶＣ１のいずれかに割り当てられて各ブロック間で送受信される。コマンド送受信補助装置３０は、それぞれのデータを、指定された仮想チャンネルに割り当てながら、順番を制御しつつ統括制御部１１０へとデータを転送する。
【００５２】
図３は、図１のイベント制御部１０と統括制御部１１０のイベント通知に関連するブロック図である。上述のように、本実施の形態において、外部割込コントローラ１２は第１の方式によって、通知ランチャＮＬは第２の方式によって、統括制御部１１０内のプロセッサに対して、イベントの発生を通知する。第１の方式によるイベントの通知先は、汎用性の高い第１のプロセッサであり、第２の方式によるイベントの通知先は、第１のプロセッサよりも汎用性が低い第２のプロセッサとなっている。以下、第１、第２の割込処理方式について説明する。
【００５３】
（第１割込処理方式）
外部割込コントローラ１２（第１通知部）は、第１のプロセッサに対して、イベントを割込処理ハンドシェイクによって通知する。本実施の形態において、第１のプロセッサは、メインプロセッサ１１２である。割込処理ハンドシェイクにより、外部割込コントローラ１２は、まずメインプロセッサ１１２に対して、割込コマンドを送信する。これを受けたメインプロセッサ１１２は、割込アクノリッジを返す。外部割込コントローラ１２は、イベント検出部１４、割込通知部１６、割込情報記憶部１８を含む。
【００５４】
具体的な処理過程は以下の通りである。まず、外部割込コントローラ１２の内部のイベント検出部１４がイベント発生を検出する。このとき、割込通知部１６は、イベントが発生した旨をメインプロセッサ１１２のイベント記憶部１７４にイベント情報として通知する。イベント情報はパケット通信により転送される。イベント情報は、イベント発生のタイミングを知らせるための情報であり、イベントが要求する割込タスクを特定する情報を含まない。かわりに、割込通知部１６は、そのイベントが要求する割込タスクを特定するための情報（以下、「割込情報」とよぶ）を割込情報記憶部１８に記録する。割込情報は、割込タスクを実行するために必要なデータであって、イベントの種類やイベントに応じて実行すべき割込タスクの種類、割込タスクがもとづくべき変数を含む。
【００５５】
メインプロセッサ１１２は、通知されたイベント情報をイベント記憶部１７４に記録する。イベント記憶部１７４は、複数個のイベントを記憶することができる。メインプロセッサ１１２の実行部１７２で実行されるイベントハンドラが、イベント記憶部１７４からイベント情報を取り出す。メインプロセッサ１１２の実行部１７２は、外部割込コントローラ１２の割込情報記憶部１８から割込情報を読み出すことにより、実行すべき割込タスクを特定する。
【００５６】
メインプロセッサ１１２は、特定した割込タスクを自身で実行してもよいし、予約されていないサブプロセッサ１１６に、その割込タスクを割り当て、サブプロセッサ１１６に実行させてもよい。
【００５７】
図４は、第１割込処理方式における割込処理の過程を示すフローチャートである。
まず、イベント検出部１４が、イベントを検出することにより割込処理が開始される（Ｓ１０）。割込通知部１６は、イベントが検出された旨をイベント情報としてパケット通信によりメインプロセッサ１１２に通知する（Ｓ１２）。
【００５８】
割込情報記憶部１８は、検出されたイベントに対応した割込情報を一時的に記憶する（Ｓ１４）。メインプロセッサ１１２のイベント記憶部１７４は、Ｓ１２において通知されたイベント情報を記憶する（Ｓ１６）。このイベント情報は、実行部１７２により読み出される（Ｓ１８）。実行部１７２は、イベント情報を読み出すと、割込情報記憶部１８からの割込情報の読み出しを要求する（Ｓ２０）。実行部１７２は、割込情報記憶部１８から割込情報を読み出す（Ｓ２２）。
【００５９】
実行部１７２は、割込情報が指示する割込タスクを実行すべきサブプロセッサ１１６を選択する（Ｓ２４）。メインプロセッサ１１２は、Ｓ２４にて選択したサブプロセッサ１１６に対して、Ｓ２２にて読み出した割込情報を渡して割込タスクの実行を指示する（Ｓ２６）。実行指示されたサブプロセッサ１１６は、割込情報にて指示された割込タスクを実行する（Ｓ２８）。なお、割込タスクの実行が完了したときには、サブプロセッサ１１６はその旨を、イベントクリア要求によってメインプロセッサ１１２に通知する（Ｓ３０）。この通知により、メインプロセッサ１１２は、どのサブプロセッサ１１６が待機状態にあるか、実行状態にあるかを管理する。イベントクリア要求を受けてメインプロセッサ１１２は、イベント記憶部１７４に保持されたイベント情報をクリアする（Ｓ３２）。そして、メインプロセッサ１１２は、その旨を、割込情報クリア要求として外部割込コントローラ１２に通知する（Ｓ３４）。割込情報クリア要求を受けた外部割込コントローラ１２は、割込情報記憶部１８に保持された割込情報をクリアする（Ｓ３６）。
【００６０】
割込情報がクリアされると、イベント制御部１０において検出されたイベントに対応する一連の割込処理が完了し、その後、外部割込コントローラ１２はさらに次のイベント通知を統括制御部１１０に対して通知可能となる。
【００６１】
第１割込処理方式の場合、事実上、すべての割込処理にメインプロセッサ１１２が介在することになる。割込タスクは他のタスクよりも優先的に実行されるべきタスクであるため、メインプロセッサ１１２は、イベント情報を検出したときには、最優先にて上記したような割り当て処理を実行する必要がある。したがって、イベントの発生が短期間に集中すると、メインプロセッサ１１２の処理負荷が過負荷となってしまい、割込タスクやメインプロセスの処理が滞ってしまう可能性がある。
【００６２】
割込通知部１６から送信されたイベント情報は、イベント記憶部１７４にスタックされていく。もし、割込通知部１６がイベント情報を通知したときに、メインプロセッサ１１２の処理が滞ってイベント記憶部１７４がオーバーフローすると、割込通知部１６にはイベント情報を再送する必要が生じる。その場合、割込処理のリアルタイム性が損なわれるという問題がある。
【００６３】
したがって、外部割込コントローラ１２を利用した割込処理は、従来のソフトウェアの承継という観点からは、利便性を有するものであるが、処理効率の観点からみれば、オーバーヘッドが大きく、リアルタイム性も低いという問題を有している。以上が、第１割込処理方式についての説明である。
【００６４】
（第２割込処理方式）
図３に戻る。通知ランチャＮＬ（第２通知部）は、第２のプロセッサに対し、イベントをそのイベントが発生した事実とそのイベントに対応する割込タスクの実行に必要なデータを単一のトランザクションの中で通知する。本実施の形態において、第２のプロセッサは、サブプロセッサ１１６である。通知ランチャＮＬは、イベント検出部２０、通知データ送信部２２を含む。
【００６５】
具体的な割込処理の過程は以下の通りである。
通知ランチャＮＬのイベント検出部２０がイベントを検出すると、通知データ送信部２２はイベント情報ではなく通知データＤｎｔｆを、サブプロセッサ１１６の通知データ記憶部１８４に書き込む。この書き込みはイベント情報を送信したときのようなコマンドのみの送信ではなく、通知データ記憶部１８４へのダイレクトな書き込み処理である。通知データ記憶部１８４は、割込タスクの実行主体である実行部１８２がイベントの発生通知を受けるための専用アドレスであり、たとえばサブプロセッサ１１６ごとに設けられた割込制御を実行するためのレジスタであってもよい。あるいは、通知データ記憶部１８４は、メインメモリ１４０やローカルメモリ１１７内のあるアドレスに設けられていてもよい。
【００６６】
通知データＤｎｔｆは、割込ベクトルを含んでもよい。また、上述した「割込情報」のように、イベントの種類やイベントに応じて実行すべき割込タスクの種類、割込タスクがもとづくべき変数を含んだ割込タスクを実行するために必要なデータを含んでもよい。通知データ記憶部１８４に通知データＤｎｔｆが書き込まれたサブプロセッサ１１６の実行部１８２は、割込ベクトルに示されるアドレスのデータを取得し、これをデコードして割込タスクを実行する。
【００６７】
図５は、第２割込処理方式における割込処理の過程を示すフローチャートである。
まず、通知ランチャＮＬのイベント検出部２０がイベントの発生を検出すると（Ｓ４０）、通知データ送信部２２は、検出したイベントに対応する割込処理を実行すべきサブプロセッサ１１６を選択する（Ｓ４２）。
【００６８】
通知データ送信部２２は、選択したサブプロセッサ１１６の通知データ記憶部１８４に通知データＤｎｔｆを書き込む（Ｓ４４）。このとき、通知データ送信部２２は、割込ベクトルを含む通知データＤｎｔｆに加えて、アプリケーションを識別するためのジョブＩＤやサブプロセッサ１１６を識別するための装置ＩＤを転送する。このため、割込情報を書き込まれたサブプロセッサ１１６は、書き込まれたジョブＩＤや装置ＩＤを参照して、正常に割込情報が通知されているか判定することもできる。
サブプロセッサ１１６は、書き込まれた通知データＤｎｔｆを読み出し（Ｓ４６）、その通知データＤｎｔｆによって指示された割込タスクを実行する（Ｓ４８）。
【００６９】
第１割込処理方式の場合、外部割込コントローラ１２はイベントをすべてメインプロセッサ１１２に送信するので、外部割込コントローラ１２側の処理を単純にできるというメリットはある。その反面、すべての割込処理はメインプロセッサ１１２を介して実行されるため、メインプロセッサ１１２の処理が割込処理におけるボトルネックとなる可能性がある。
【００７０】
これに対して、第２割込処理方式の場合、グラフィックスプロセッサ１２０と連携する統括制御部１１０のサブプロセッサ１１６が予め決まっている必要があるが、第１割込処理方式のように、イベント制御部１０、メインプロセッサ１１２、サブプロセッサ１１６の間でハンドシェイク処理を行う必要がない。したがって、第２割込処理方式によれば、通知データ送信部２２は、割込タスクを実行させたいサブプロセッサ１１６に対してメインプロセッサ１１２を介さず直接割込情報を通知できる。そのため、割込処理におけるオーバーヘッドを、総じて第１割込方式よりも削減することができる。
【００７１】
また、第２割込方式では、通知データＤｎｔｆを、割込タスクの実行主体が管理する専用アドレスに対して書き込むため、図４に示すＳ２０、Ｓ２２のように、割込情報を取得するための処理が不要となり、イベントの発生を契機としてただちに割込タスクを実行することができる。
【００７２】
さらに、図５のフローチャートに示されるように、第２割込処理方式では、割込タスクＳ４８の完了後に、通知ランチャＮＬ側のステータスをクリアする必要がなく、ただちに次に発生したイベントに対応する通知データＤｎｔｆを転送することが可能となる。この点においても、図４のタイムチャートに示される第１割込処理方式と異なっており、特に、割込処理が頻繁に発生するような状況において、ステータスクリアにともなうオーバーヘッドを解消することができる。なお、この場合に、次に発生したイベントに対応する通知データＤｎｔｆは、図１のＩ／Ｏアクセス制御装置１１４にバッファリングされ、前のイベントに対応する通知データＤｎｔｆの処理が完了すると、次に発生したイベントに対応する通知データＤｎｔｆが目的のアドレスに書き込まれ、割込タスクが実行される。
【００７３】
通常、メインプロセッサ１１２には、グラフィックスプロセッサ１２０の他にも、サウスブリッジ１４２などを介して周辺機器から様々なイベントが通知される。好適な態様としては、各イベントは基本的に第１割込方式にて処理され、予め定義されたイベント群に属するイベントについては第２割込方式にて処理されることが望ましい。このイベント群は、メインプロセッサ１１２ではなくサブプロセッサ１１６により実行されるイベントであって、リアルタイム性をより求められるイベントや特に多く発生しやすいイベントが属するグループとして、アプリケーションソフトウェアのプログラマが定義してもよい。サウスブリッジ１４２の内部にも、グラフィックスプロセッサ１２０と同様にイベント制御部１０を設けてもよい。
【００７４】
また、第１割込方式と第２割込方式を併用することにより、開発コストを抑制しつつも、割込処理、ひいては、情報処理装置１００の処理におけるオーバーヘッドを削減することができる。なお、従来のハードウェア、ソフトウェア、アプリケーション資産を承継せず、あらたに開発を行う場合には、第２割込方式のみを単独で用いてもよい。
【００７５】
次に、第２割込方式を実現するための詳細な構成例について説明する。
図６は、図２の通知ランチャＮＬの構成を示すブロック図である。通知ランチャＮＬは、イベント選択部２１、通知データ検出・送信部２３、レジスタブロック２４を含む。
イベント選択部２１は、信号線ＳＬ１〜ＳＬｎが接続されている。イベント選択部２１は、これらの信号線ＳＬの中から、監視対象となるイベントを選択する。イベント選択部２１は、ＡＮＤゲートやＯＲゲートなどの組み合わせ論理回路およびスイッチ（トランスファゲート）の組み合わせによって構成することができる。レジスタブロック２４は、選択イベント記憶部２６を含む。選択イベント記憶部２６には、イベント選択部２１によって監視の対象とすべきイベントを指定するデータが書き込まれる。すなわち、割込タスクごとに通知ランチャＮＬが設けられ、イベント選択部２１は、同一の割込タスクを要求するイベントを選択する構成となっている。たとえば、ディスプレイコントローラ１２６が発生する垂直同期信号のアサートとネゲートは別個のイベントとして発生するが、ある通知ランチャＮＬが、垂直同期信号の開始と終了を同一のサブプロセッサ１１６に通知するような場合には、その通知ランチャＮＬのイベント選択部２１は、アサートイベントとネゲートイベントを同時に選択すればよい。
【００７６】
通知データ検出・送信部２３は、図３のイベント検出部２０と通知データ送信部２２に対応するブロックである。通知データ検出・送信部２３は、イベント選択部２１によって監視対象とされるイベントが発生すると、通知データＤｎｔｆを出力する。この通知データＤｎｔｆによって、
（１）そのイベントが発生した事実
（２）そのイベントが要求する割込タスクの実行に必要なデータ
を単一のトランザクションの中で割込タスクの処理主体へ通知する。上述したように、本実施の形態において、単一のトランザクションはデータライトにより実行され、イベントが発生した事実はライトコマンド自体によって示し、イベントに対応するタスク処理に必要なデータはライトコマンドにともなうライトデータとして通知される。
【００７７】
レジスタブロック２４は、イベントが要求する割込タスクの実行に必要なデータを記憶するイベントデータ記憶部２８を備える。イベントデータ記憶部２８は、通知データ記憶部２８ａ、アドレス記憶部２８ｂ、ＩＤ記憶部２８ｃ、Ｃビット記憶部２８ｄ、Ｓビット記憶部２８ｅ、チャンネル記憶部２８ｆを含む。
【００７８】
通知データ記憶部２８ａには、通知データ検出・送信部２３により転送されるべき通知データＤｎｔｆが格納される。アドレス記憶部２８ｂは、ライトコマンドを発行する先のアドレス、すなわち、図３に示したサブプロセッサ１１６内の通知データ記憶部１８４のアドレスを保持する。
本実施の形態において、レジスタは、メモリマップされたＩＯデバイスとしてメインメモリ１４０と同じアドレス空間上にマッピングされている。したがって、アドレス記憶部２８ｂに格納するアドレスによって、通知データＤｎｔｆの書き込み先を、複数のサブプロセッサ１１６内部のレジスタの中から適切に設定することができる。本実施の形態では、サブプロセッサ１１６ごとに通知データＤｎｔｆを書き込むべきレジスタが用意されており、これは図３に示した通知データ記憶部１８４に相当する。各通知ランチャＮＬは、監視するイベントに対応する割込タスクを実行するサブプロセッサ１１６のレジスタ（通知データ記憶部１８４）に、通知データＤｎｔｆを書き込むことにより、イベントの発生およびタスク処理に必要な情報をサブプロセッサ１１６に通知することができる。
【００７９】
もっとも、通知データＤｎｔｆの書き込み先となるアドレスはレジスタに限定されるものではなく、通知データＤｎｔｆの書き込み先は、サブプロセッサ１１６がイベントの発生を検出するために参照する予め定められたメモリ空間であればよいため、ローカルメモリ１１７やその他のメインメモリ１４０であってもよい。
【００８０】
なお、ＭＭＵ（Memory Management Unit）を利用してＯＳが通知データＤｎｔｆの書き込み先のアドレスを、アドレス変換によって割込タスクの実行主体が管理する専用のアドレスに書き換えてもよい。この場合、アドレス記憶部２８ｂに記憶されるアドレスは、実際に通知データＤｎｔｆが書き込まれるアドレスとは一致しない。
【００８１】
チャンネル記憶部２８ｆには、２つの仮想チャンネルのいずれによって、通知データＤｎｔｆを転送するかを指定するビットＶＣが保持される。たとえば、ＶＣ＝０のとき、仮想チャンネルＶＣ０が使用され、ＶＣ＝１のとき、仮想チャンネルＶＣ１が使用される。
【００８２】
統括制御部１１０に対してデータ転送を行うすべてのアクセス要求主体には、それぞれのアクセス要求主体を区別するための識別データ（以下、ＩＯＩＤという）が割り振られている。各通知ランチャＮＬにも、ＩＯＩＤが割り振られている。ＩＤ記憶部２８ｃには、このＩＯＩＤが格納される。通知データ検出・送信部２３は、ＩＯＩＤを通知データＤｎｔｆとともに単一のトランザクションにより統括制御部１１０に転送する。
上述のように、本実施の形態に係る情報処理装置１００において、統括制御部１１０のＩ／Ｏアクセス制御装置１１４は、統括制御部１１０内部のローカルメモリ１１７や、レジスタ（不図示）およびメインメモリ１４０に対する外部からのアクセスを制御する。Ｉ／Ｏアクセス制御装置１１４は、転送されたＩＯＩＤが、所定の条件を満たすときに、指定されたアドレスへのライトデータの書き込みを許可する。この機能によって、Ｉ／Ｏアクセス制御装置１１４は、あるアドレスごとにアクセス可能なＩＯＩＤを設定しておくことにより、アクセス権のないブロックがメモリの所定のアドレスにデータを書き込んだり、不正な割込処理を発生させるのを防止することができ、情報処理装置１００のロバスト性を高めることができる。
【００８３】
通知データ検出・送信部２３は、通知データＤｎｔｆとともに、データ転送処理に関する指示データを転送する。本実施の形態では、指示データとして、ＣビットおよびＳビットの２種類が用意される。Ｃビット記憶部２８ｄおよびＳビット記憶部２８ｅには、それぞれＣビットおよびＳビットが予め記憶されている。
【００８４】
通知データＤｎｔｆとともに転送されたＣビットは、統括制御部１１０内部のキャッシュコヒーレンシを制御するキャッシュコヒーレンシ制御部（不図示）に転送される。キャッシュコヒーレンシ制御部は、Ｃビットが１の場合、キャッシュコヒーレンシを保つようにメモリメモリおよびローカルメモリと、キャッシュメモリの管理を実行し、Ｃビットが０の場合、キャッシュコヒーレンシに対する配慮を行わない。このＣビットは、通知データＤｎｔｆのみでなく、グラフィックスプロセッサ１２０と統括制御部１１０の間で転送されるライトデータ、リードデータなどのすべてのデータに対して個別に付与されている。すなわち、通知データＤｎｔｆは、Ｉ／Ｏアクセス制御装置１１４からみれば、リードデータやライトデータと同様に扱われる。
【００８５】
Ｃビットに関する具体的な取り扱いについて説明する。キャッシュコヒーレンシ制御部は、メインメモリ１４０をキャッシングの単位領域ごとに分割し、各単位領域がいずれかのキャッシングされた状態にあるかを管理している。
Ｃビットが０の場合、キャッシュコヒーレンシ制御部は、通知ランチャＮＬにより指定されたメモリのアドレスに、通知データＤｎｔｆを書き込む。
Ｃビットが１の場合、通知ランチャＮＬにより指定されたアドレスを含む単位領域が、統括制御部１１０内のキャッシュメモリのいずれかによってキャッシングされた状態にあるかどうかをチェックする。そして、キャッシングされた状態になければ、通知ランチャＮＬにより指定されたアドレスに、通知データＤｎｔｆを書き込む。もし、キャッシングされた状態である場合、そのメモリラインをキャッシングしているキャッシュラインの破棄をして通知データＤｎｔｆをメモリのアドレスに書き込む。もしくは通知データＤｎｔｆをそのキャッシュラインに直接書き込んでもよい。後者の場合、メインメモリ１４０には通知データＤｎｔｆは書き込まれない。
【００８６】
上述のように、通知データＤｎｔｆが書き込まれるアドレスは、アドレス記憶部２８ｂにより自由に設定することができる。すなわち、通知データＤｎｔｆは、ローカルメモリ１１７、メインメモリ１４０、メインプロセッサ１１２あるいはサブプロセッサ１１６が管理するレジスタ（不図示）のいずれかに書き込まれる場合が想定される。そこで、本実施の形態では、書き込み先がメインメモリ１４０以外の場合、Ｃビットを０に設定し、書き込み先がメインメモリ１４０の場合、Ｃビットを１もしくは０に設定する。メインメモリ１４０が書き込み先の場合、Ｃビットは１に設定する方が安全であるが、プログラマがメモリアクセスを把握できる場合、Ｃビットを０としてもよい。ローカルメモリ１１７やレジスタは、キャッシュコヒーレンシの問題が発生しないため、Ｃビットを０とすることにより、処理を簡略化できる。
【００８７】
通知データＤｎｔｆの転送は、それぞれに対して書き込み先のアドレスが設定されるため、通知ランチャＮＬごとにＣビットを設定できる構成とすることにより、適切なキャッシュコヒーレンシの管理が実現できる。
【００８８】
Ｃビットの管理を行うために、キャッシュコヒーレンシ制御部は、転送されたデータのＣビットを取得するＣビット取得部と、データの書き込み先アドレスを取得するアドレス取得部と、メインメモリの各単位領域のキャッシングの状態を各キャッシュメモリに問い合わせるキャッシング状態取得部と、アドレス取得部により取得されたアドレスを含むメインメモリの単位領域がキャッシング状態にあるかを判別する判定部と、データの書き込みを実行する書き込み部と、各プロセッサによるメインメモリへのアクセスを監視するバススヌープ部と、を含んでもよい。書き込み部は、Ｃビットの値に応じて、メインメモリ、ローカルメモリ、キャッシュメモリにデータを書き込んでもよい。
【００８９】
次いで、Ｓビットについて説明する。Ｓビットは、Ｃビットと同様に、通知データＤｎｔｆのみでなく、グラフィックスプロセッサ１２０と統括制御部１１０の間で転送されるライトデータ、リードデータなどのすべてのデータに対して個別に付与されている。
Ｓビットは、通知データＤｎｔｆとともに、Ｉ／Ｏアクセス制御装置１１４に転送される。グラフィックスプロセッサ１２０あるいはサウスブリッジ１４２から統括制御部１１０へは、パケットとして次々とデータが転送されている。Ｉ／Ｏアクセス制御装置１１４は、転送されたデータをバッファリングし、ローカルメモリ１１７やメインメモリ１４０へのアクセスを行う。
【００９０】
Ｓビットは、それに付随する通知データＤｎｔｆの統括制御部１１０においてバッファリングされたデータに対する転送の順序規則を指定するデータであり、Ｓビットが０のとき、他のデータとの間で処理の順序の入れ替えを許可し、Ｓビットが１のとき、順序の入れ替えを禁止する。
【００９１】
Ｓビットが０の場合、第１の順序規則が選択され、Ｓビットに付随する通知データＤｎｔｆの処理と、その他の処理との順序の入れ替えが自由に許可される。Ｉ／Ｏアクセス制御装置１１４は、バッファリングされた複数の処理の中から、実行可能なものを優先して順々に実行していく。
【００９２】
Ｓビットが１の場合、第２の順序規則が選択され、Ｓビットに付随する通知データＤｎｔｆの処理と、バッファリングされているその他の処理との間での入れ替えを禁止する。すなわち、Ｓビットが１である通知データＤｎｔｆは、バッファリングされた列において、前の処理を追い越すことも、後ろの処理に追い越されることもない。Ｓビットが０同士の処理については、実行可能なものから順に処理が進められていく。
【００９３】
たとえば、グラフィックスプロセッサ１２０から統括制御部１１０に対してＤＭＡ転送を実行し、ＤＭＡ転送の完了イベントを通知データＤｎｔｆにより通知する場合、統括制御部１１０におけるデータの処理順序が重要となる。
図７（ａ）、（ｂ）は、Ｓビットにもとづくデータ処理を示す図である。図７（ａ）は、コマンド送受信補助装置３０にバッファリングされたデータを示す。ＤＭＡ０〜ＤＭＡ３は、ＤＭＡ転送により転送されたデータであり、Ｄｎｔｆは、ＤＭＡ転送の完了を通知するためにイベント制御部１０から出力された通知データである。図７（ｂ）は、Ｉ／Ｏアクセス制御装置１１４で実際に各データが処理される順番を示している。グラフィックスプロセッサ１２０は、ＤＭＡ０〜ＤＭＡ３に付随するＳビットを０に設定し、通知データＤｎｔｆに付随するＳビットを１に設定する。そうすると、図７（ｂ）に示すように、Ｓビットが０に設定されたデータＤＭＡ０〜ＤＭＡ３については、書き込み先のアドレスが他のアクセスと競合しないものから順に書き込み処理が行われる一方、通知データＤｎｔｆに対しては、Ｓビットが０のデータＤＭＡ０〜ＤＭＡ３を追い越すことなく、それらの書き込み処理が完了した時点で書き込み処理が行われる。
【００９４】
ＤＭＡ転送の完了によって発生する割込タスクは、ＤＭＡ転送されたデータＤＭＡ０〜ＤＭＡ３が、メインメモリ１４０等に書き込まれる前に実行されると、ＤＭＡ転送によって更新される前のデータを参照してしまい、処理に破綻が生じるおそれがある。このような場合に、Ｓビットを適宜設定することにより、ＤＭＡ転送の順序入れ替えによる処理効率向上と、通知データでは必要な転送順序管理の双方を両立させることができる。
【００９５】
さらに、Ｓビットにより指定される転送の順序規則は、同一の仮想チャンネルを介して転送されたデータ間のみで有効としてもよい。すなわち、あるチャンネルで転送されたデータであって、Ｓビットが０に設定されたデータは、別のチャンネルで転送されたデータであって、Ｓビットが１に設定されたデータを追い越して処理されてもよい。また、あるチャンネルで転送されたデータであって、Ｓビットが１に設定されたデータが、別のチャンネルで転送されたデータであって、Ｓビットが０または１に設定されたデータを追い越して処理されてもよい。すなわちチャンネルごとに順序規則を独立に設定してもよい。
この場合、ＤＭＡ転送により転送されるデータと、ＤＭＡ転送の完了を通知する通知データを同一のチャンネルで転送し、ＤＭＡ転送と関連のないデータを別のチャンネルを利用して転送すれば、通知データによってＤＭＡ転送と関連のないデータの処理順序が影響を受けることがなくなるため、より高速なデータ転送が可能となる。
【００９６】
高速なデータ転送のために、タイミング管理が必須となるデータ、タイミングのずれが、処理にクリティカルな影響を及ぼすデータの転送には、仮想チャンネルＶＣ０を利用し、ベストエフォートでかまわないデータの転送には、仮想チャンネルＶＣ１を利用するように分類してもよい。前者のデータの例として、ビデオデータ、オーディオデータの転送や通知データＤｎｔｆが当てはまり、後者のデータの例として、テクスチャデータや頂点データが当てはまる。
【００９７】
もし、ＤＭＡ転送の完了を通知する通知データＤｎｔｆのＳビットを０とした場合、通知データＤｎｔｆを書き込んだ後に、ＤＭＡ転送されたデータの書き込みが完了しているかをポーリング処理によって監視する必要があるが、Ｓビットを１とすることにより、ポーリング処理を省略することができる。
【００９８】
すなわち、Ｓビットに関連し、Ｉ／Ｏアクセス制御装置１１４は、グラフィックスプロセッサ１２０から転送されたデータをバッファリングするバッファと、バッファリングされたデータのＳビットを取得するＳビット取得部と、バッファリングされたデータの転送先のアドレスを取得し、そのアドレスの競合をチェックして書き込み可能かを判定する転送可否判定部と、転送可否設定部による判定結果と、Ｓビットを参照し、データの書き込みを実行する実行部と、を含んでもよい。
【００９９】
以上、本発明を実施の形態をもとに説明した。この実施の形態はあくまで例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１００】
実施の形態では、グラフィックスプロセッサ１２０から統括制御部１１０に対するイベント通知について説明したが、同様の処理を、サウスブリッジ１４２やその他のブロックから統括制御部１１０へのイベント通知に利用してもよい。したがって、本実施の形態に係るイベント通知方法は、さまざまな処理装置（プロセッサ）に適用することができる。
【０１０１】
実施の形態では、第２の通知部である通知ランチャＮＬが、サブプロセッサ１１６に対してイベント通知を行う場合について説明したが、本発明はこれに限定されるものではなく、メインプロセッサ１１２に対して、第２の割込処理方法によってイベント通知を行ってもよい。
【図面の簡単な説明】
【０１０２】
【図１】実施の形態に係る情報処理装置の機能ブロック図である。
【図２】グラフィックスプロセッサのイベント通知機能に関連する機能ブロック図である。
【図３】図１のイベント制御部と統括制御部のイベント通知に関連するブロック図である。
【図４】第１割込処理方式における割込処理の過程を示すフローチャートである。
【図５】第２割込処理方式における割込処理の過程を示すフローチャートである。
【図６】図２の通知ランチャの構成を示すブロック図である。
【図７】図７（ａ）、（ｂ）は、Ｓビットにもとづくデータ処理を示す図である。
【符号の説明】
【０１０３】
ＮＬ  通知ランチャ、  １０  イベント制御部、  １２  外部割込コントローラ、  １４  イベント検出部、  １６  割込通知部、  １８  割込情報記憶部、  ２０  イベント検出部、  ２１  イベント選択部、  ２２  通知データ送信部、  ２３  通知データ検出・送信部、  ２４  レジスタブロック、  ２６  選択イベント記憶部、  ２８  イベントデータ記憶部、  ２８ａ  通知データ記憶部、  ２８ｂ  アドレス記憶部、  ２８ｃ  ＩＤ記憶部、  ２８ｄ  Ｃビット記憶部、  ２８ｅ  Ｓビット記憶部、  ２８ｆ  チャンネル記憶部、  ３０  コマンド送受信補助装置、  ４０  バス、  １００  情報処理装置、  １１０  統括制御部、  １１２  メインプロセッサ、  １１３  メモリコントローラ、  １１４  Ｉ／Ｏアクセス制御装置、  １１６  サブプロセッサ、  １１７  ローカルメモリ、  １１８  バス、  １２０  グラフィックスプロセッサ、  １２２  画像処理側ＤＭＡＣ、  １２４  制御ブロック、  １２６  ディスプレイコントローラ、  １２８  グラフィックスメモリ、  １２９  メモリコントローラ、  １３０  演算ユニット、  １３２  ラスタライザ、  １３４  シェーダユニット、  １３６  テクスチャユニット、  １４０  メインメモリ、  １４２  サウスブリッジ、  １５０  表示装置、  １７２  実行部、  １７４  イベント記憶部、  １８２  実行部、  １８４  通知データ記憶部。
【図１】
2008123140.tif 000003
【図２】
2008123140.tif 000004
【図３】
2008123140.tif 000005
【図４】
2008123140.tif 000006
【図５】
2008123140.tif 000007
【図６】
2008123140.tif 000008
【図７】
2008123140.tif 000009