(57)【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
データ処理オペレーションを実行するプログラム命令制御下で動作するプログラム可能な汎用プロセッサと、
前記プロセッサに接続されたメモリシステムと、
前記プロセッサ及び前記メモリシステムに接続されたハードウエアアクセラレータと、
前記プロセッサから分離し、前記ハードウエアアクセラレータおよび前記メモリシステムに接続されたメモリシステム監視回路と
を具備し、
前記メモリシステムは、前記プロセッサによって処理されるデータ値を格納するよう動作し、
前記ハードウエアアクセラレータは、前記ハードウエアアクセラレータによって処理される一時的な変数である各データ値を格納する１又は複数のレジスタを有し、
前記１又は複数のレジスタ内の前記データ値は、前記メモリシステムから読み取られ、かつ、前記１又は複数のレジスタ内にキャッシュされ、
前記メモリシステム監視回路は、前記プロセッサによって前記メモリシステム上で実行される１又は複数の所定のメモリオペレーションに応じて、トリガ信号を生成し、
前記ハードウエアアクセラレータは、前記トリガ信号に応答して、前記ハードウエアアクセラレータによって実行される処理を停止し、かつ、前記メモリシステム内の対応するデータ値とは異なる前記１又は複数のレジスタ内の任意のデータ値が、前記メモリシステムに書き込まれるクリーニングオペレーションを実行することを特徴とする装置。
【請求項２】
前記メモリシステムは、変換索引バッファを具備し、かつ、
前記１又は複数の所定のメモリオペレーションは、前記ハードウエアアクセラレータによって使用されるデータ値に対応する前記変換索引バッファ内の入力を無効化することを特徴とする請求項１に記載の装置。
【請求項３】
前記メモリシステムは、ページテーブルデータに応答するメモリ管理ユニットを具備し、かつ、
前記１又は複数の所定のメモリオペレーションは、前記ハードウエアアクセラレータによって使用されるデータ値に対応する前記ページテーブルデータ内の入力を変更することを特徴とする請求項１に記載の装置。
【請求項４】
前記メモリシステムは、キャッシュメモリを具備し、かつ、
前記１又は複数の所定のメモリオペレーションは、前記キャッシュメモリ内に格納され、かつ、前記ハードウエアアクセラレータによる処理を条件として、データ値に対応する１又は複数のキャッシュライン上で実行される１又は複数のクリーンオペレーションであることを特徴とする請求項１に記載の装置。
【請求項５】
前記メモリシステムは、キャッシュメモリを具備し、かつ、
前記１又は複数の所定のメモリオペレーションは、前記キャッシュメモリ内に格納され、かつ、前記ハードウエアアクセラレータによる処理を条件として、データ値に対応する１又は複数のキャッシュライン上で実行される１又は複数のクリーン及び無効化オペレーションであることを特徴とする請求項１に記載の装置。
【請求項６】
前記プロセッサは、ブロードキャストメモリ管理コマンドを生成し、かつ、
前記メモリシステム監視回路は、１又は複数の対応するブロードキャストメモリ管理コマンドの受信によって、前記１又は複数の所定のメモリオペレーションを検出することを特徴とする請求項１に記載の装置。
【請求項７】
前記１又は複数の所定のメモリオペレーションは、前記ハードウエアアクセラレータによって使用される前記メモリシステム内のメモリアドレススペースの領域内のデータ値に、前記プロセッサによってアクセスすることを特徴とする請求項１に記載の装置。
【請求項８】
前記１又は複数の所定のメモリオペレーションは、前記ハードウエアアクセラレータによって使用される前記メモリシステム内のメモリアドレススペースの領域内のデータ値へのキャッシュスヌープオペレーションであることを特徴とする請求項１に記載の装置。
【請求項９】
前記プロセッサは、オペレーティングシステムプログラムの制御下で動作し、かつ、
前記オペレーティングシステムプログラムは、前記ハードウエアアクセラレータとは独立に、前記メモリシステムを管理することを特徴とする請求項１に記載の装置。
【請求項１０】
前記ハードウエアアクセラレータによって処理される前記データ値は、前記プロセッサに共有されている前記メモリシステム内の１又は複数の領域内に格納されることを特徴とする請求項１に記載の装置。
【請求項１１】
前記プロセッサ及び前記ハードウエアアクセラレータは、共通仮想メモリアドレススペース内で動作することを特徴とする請求項１に記載の装置。
【請求項１２】
前記プロセッサ及び前記ハードウエアアクセラレータは、メモリ管理ユニット及びページテーブルデータを共有することを特徴とする請求項１に記載の装置。
【請求項１３】
前記プロセッサ及び前記ハードウエアアクセラレータは、異なるコンテクストで動作することを特徴とする請求項１に記載の装置。
【請求項１４】
データを処理するための装置であって、
プログラム命令制御下で動作するデータ処理オペレーションを実行するためのプログラム可能な汎用プロセッサ手段と、
前記プロセッサ手段によって処理されるデータ値を格納するために、前記プロセッサ手段に接続されたメモリシステム手段と、
前記プロセッサ手段及び前記メモリシステム手段に接続されたハードウエアアクセラレータ手段と、
前記プロセッサ手段から分離し、前記ハードウエアアクセラレータ手段および前記メモリシステム手段に接続されたメモリシステム監視回路と
を具備し、
前記ハードウエアアクセラレータ手段は、前記ハードウエアアクセラレータ手段によって処理される一時的な変数である各データ値を格納するための１又は複数のレジスタ手段を有し、
前記１又は複数のレジスタ手段内の前記データ値は、前記メモリシステム手段から読み取られ、かつ、前記１又は複数のレジスタ手段内にキャッシュされ、
前記メモリシステム監視回路は、前記プロセッサ手段によって前記メモリシステム手段上で実行される１又は複数の所定のメモリオペレーションに応じて、トリガ信号を生成し、
前記ハードウエアアクセラレータ手段は、前記トリガ信号に応答して、前記ハードウエアアクセラレータ手段によって実行される処理を停止し、かつ、前記メモリシステム手段内の対応するデータ値とは異なる前記１又は複数のレジスタ手段内の任意のデータ値が、前記メモリシステム手段に書き込まれるクリーニングオペレーションを実行することを特徴とする装置。
【請求項１５】
データを処理するための方法であって、
プログラム命令制御下で動作するプログラム可能な汎用プロセッサを用いて、データ処理オペレーションを実行するステップと、
前記プロセッサに接続されたメモリシステム内に、前記プロセッサによって処理されるデータ値を格納するステップと、
前記ハードウエアアクセラレータによって処理される一時的な変数である各データ値を、ハードウエアアクセラレータの１又は複数のレジスタ内に格納するステップと、
前記プロセッサから分離し、前記ハードウエアアクセラレータおよび前記メモリシステムに接続されたシステム監視回路を使用して、前記プロセッサによって前記メモリシステム上で実行される１又は複数の所定のメモリオペレーションに応じて、トリガ信号を生成するステップと、
前記トリガ信号に応じて、前記ハードウエアアクセラレータによって実行される処理を停止し、かつ、前記メモリシステム内の対応するデータ値とは異なる前記１又は複数のレジスタ内の任意のデータ値が、前記メモリシステムに書き込まれるクリーニングオペレーションを実行するステップと
を具備し、
前記ハードウエアアクセラレータは、前記プロセッサ及び前記メモリシステムに接続され、かつ、前記１又は複数のレジスタ内の前記データ値は、前記メモリシステムから読み取られ、かつ、前記１又は複数のレジスタ内にキャッシュされることを特徴とする方法。
【請求項１６】
前記メモリシステムは、変換索引バッファを具備し、かつ、
前記１又は複数の所定のメモリオペレーションは、前記ハードウエアアクセラレータによって使用されるデータ値に対応する前記変換索引バッファ内の入力の無効化であることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記メモリシステムは、ページテーブルデータに応答するメモリ管理ユニットを具備し、かつ、
前記１又は複数の所定のメモリオペレーションは、前記ハードウエアアクセラレータによって使用されるデータ値に対応する前記ページテーブルデータ内の入力の変更であることを特徴とする請求項１５に記載の方法。
【請求項１８】
前記メモリシステムは、キャッシュメモリを具備し、かつ、
前記１又は複数の所定のメモリオペレーションは、前記キャッシュメモリ内に格納され、かつ、前記ハードウエアアクセラレータによる処理を条件として、データ値に対応する１又は複数のキャッシュライン上で実行される１又は複数のクリーンオペレーションであることを特徴とする請求項１５に記載の方法。
【請求項１９】
前記メモリシステムは、キャッシュメモリを具備し、かつ、
前記１又は複数の所定のメモリオペレーションは、前記キャッシュメモリ内に格納され、かつ、前記ハードウエアアクセラレータによる処理を条件として、データ値に対応する１又は複数のキャッシュライン上で実行される１又は複数のクリーン及び無効化オペレーションであることを特徴とする請求項１５に記載の方法。
【請求項２０】
前記プロセッサを用いて、ブロードキャストメモリ管理コマンドを生成するステップと、
１又は複数の対応するブロードキャストメモリ管理コマンドの受信によって、前記１又は複数の所定のメモリオペレーションを検出するステップと
をさらに具備することを特徴とする請求項１５に記載の方法。
【請求項２１】
前記１又は複数の所定のメモリオペレーションは、前記ハードウエアアクセラレータによって使用される前記メモリシステム内のメモリアドレススペースの領域内のデータ値に、前記プロセッサによってアクセスすることを特徴とする請求項１５に記載の方法。
【請求項２２】
前記１又は複数の所定のメモリオペレーションは、前記ハードウエアアクセラレータによって使用される前記メモリシステム内のメモリアドレススペースの領域内のデータ値に対するキャッシュスヌープオペレーションであることを特徴とする請求項１５に記載の方法。
【請求項２３】
前記プロセッサは、オペレーティングシステムプログラムの制御下で動作し、かつ、
前記オペレーティングシステムプログラムは、前記ハードウエアアクセラレータとは独立に、前記メモリシステムを管理することを特徴とする請求項１５に記載の方法。
【請求項２４】
前記ハードウエアアクセラレータによって処理される前記データ値は、前記プロセッサに共有されている前記メモリシステム内の１又は複数の領域内に格納されることを特徴とする請求項１５に記載の方法。
【請求項２５】
前記プロセッサ及び前記ハードウエアアクセラレータは、共通仮想メモリアドレススペース内で動作することを特徴とする請求項１５に記載の方法。
【請求項２６】
前記プロセッサ及び前記ハードウエアアクセラレータは、メモリ管理ユニット及びページテーブルデータを共有することを特徴とする請求項１５に記載の方法。
【請求項２７】
前記プロセッサ及び前記ハードウエアアクセラレータは、異なるコンテクストで動作することを特徴とする請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。特に、この発明は、プログラム可能な汎用プロセッサ及びハードウエアアクセラレータを有するデータ処理システムに関する。
【背景技術】
【０００２】
ハードウエアアクセラレータにプログラム可能な汎用プロセッサを組み合わせたシステムを提供することは既知である。そのシステムは、データ値の共有を促進するために、メモリシステムを共有する。その構成を用いて、操作、及び、メモリシステム内に格納されたデータ値の管理を協調させる必要がある。一例として、プログラム可能な汎用プロセッサによって実行される処理は、ハードウエアアクセラレータによってもアクセスされるメモリ領域のページングイン、及び、ページングアウトを必要とする。そのページングオペレーションがハードウエアアクセラレータの必要を考慮しないで実行された場合、次の段階で、ハードウエアアクセラレータによって要求されたデータは、不適切にページアウトされ、かつ、より深刻な可能性として、メモリシステムにまだ戻っていないが、ハードウエアアクセラレータによって変更されたデータは、これらのデータ値に保持されている正しくない値となるページアウトされたそのデータの期限切れのメモリシステムコピーを有する。
【０００３】
これらの課題に対処するため、要求ならびにプロセッサ及びハードウエアアクセラレータの両方の状態を考慮するように、メモリ管理を制御及び協調することができるプログラム可能な汎用コンピュータを実行するオペレーティングシステムを提供することは既知である。この方法でオペレーティングシステムを使用するには、ハードウエアアクセラレータ及びハードウエアアクセラレータによって生成されたデータの要求を適切に対処することができるような変更を必要とする。システムの異なる潜在的利用を目的として、これらの異なる形態を備えた幅広い種類の異なる形態のハードウエアアクセラレータがある。一例として、暗号化を目的としたハードウエアアクセラレータは、１つのシステム内に設けられるとともに、顕著に形態が異なり、かつ、ビデオ処理などの他の利用を目的としたハードウエアアクセラレータは、他のシステム内に設けられている。分離されたオペレーティングシステム、即ち、各々がこれらの異なるハードウエアアクセラレータを扱うことができるバージョン、又は、幅広い種類の異なるハードウエアアクセラレータを扱うことができる単一のオペレーティングシステムを持つことは、実施上、非常に困難である。新規のハードウエアアクセラレータが新規の目的のために開発されるとき、次の段階で、その新規のハードウエアアクセラレータをサポートするために、オペレーティングシステムコードは変更され、かつ、再検証される必要がある。これは、時間及び経費がかかり、かつ、量の少ない製品の場合に実際的ではない。
【発明の開示】
【課題を解決するための手段】
【０００４】
本発明の１態様は、
データ処理オペレーションを実行するためのプログラム命令制御の下で動作するプログラム可能な汎用プロセッサと、
前記プロセッサに接続されたメモリシステムと、
前記プロセッサ及び前記メモリシステムに接続されたハードウエアアクセラレータと、
前記ハードウエアアクセラレータに接続されたシステム監視回路と
を具備し、
前記メモリシステムは、前記プロセッサによって処理されるデータ値を格納するよう動作し、
前記ハードウエアアクセラレータは、前記ハードウエアアクセラレータによって処理される一時的な変数である各データ値を格納する１又は複数のレジスタを有し、
前記１又は複数のレジスタ内の前記データ値は、前記メモリシステムから読み取られ、かつ、前記１又は複数のレジスタ内にキャッシュされ、
前記メモリシステム監視回路は、前記装置内で実行される１又は複数の所定のオペレーションに応じて、トリガ信号を生成し、
前記ハードウエアアクセラレータは、前記トリガ信号に応答して、前記ハードウエアアクセラレータによって実行される処理を停止し、かつ、前記メモリシステム内の対応するデータ値とは異なる前記１又は複数のレジスタ内の任意のデータ値が前記メモリシステムに書き込まれるクリーニング(cleaning)オペレーションを実行する
ことを特徴とするデータを処理するための装置を提供する。
【０００５】
本技術は、ハードウエアアクセラレータによる処理を停止し、かつ、ハードウエアアクセラレータによって保持されるデータ値をクリーンする必要を結果的にもたらすプログラム可能な汎用プロセッサによる処理によって生じる環境が、抑制され、かつ、ハードウエアアクセラレータに設けられたシステム監視回路によって、確実に識別することができることを認識する。この方法におけるハードウエアアクセラレータ自体は、１又は複数の所定のオペレーション（この要求を示す）がシステム内に検出された場合、次に、そのオペレーションを停止し、かつ、メモリシステムに格納された任意のデータ値をクリーンすることに対して機能する。したがって、例えば、プログラム可能な汎用プロセッサのオペレーティングシステムは、ハードウエアアクセラレータによる処理の停止、及び、ハードウエアアクセラレータからのデータ値のクリーニングに対して機能することをもはや必要としておらず、それによって、存在するか又は存在しない、異なるハードウエアアクセラレータを考慮するためにオペレーティングシステムシステムを変更する必要を回避する。代わりに、本技術は、ハードウエアアクセラレータによって処理を停止する必要、及び、ハードウエアアクセラレータ内に格納されたデータ値をクリーニングする必要を示す特徴的なオペレーションが発生する（汎用プロセッサによって駆動された）ことを認識している。さらに、これらの所定のオペレーションは、オペレーションがハードウエアアクセラレータに設けられた専用ハードウエアを効果的に検出することができるように十分によく定義されている。
【０００６】
所定のオペレーションが、プログラム可能な汎用コンピュータによるコンテクストスイッチなどの幅広い種類の異なる形態をとることできることが理解される一方で、現在の技術は、システム監視回路がメモリシステム監視回路を具備し、かつ、プロセッサによってメモリシステムを用いて実行される１又は複数の所定のメモリオペレーションに応答して、トリガ信号が生成される実施形態によく適合している。
【０００７】
実行される前記１又は複数の所定のメモリオペレーションは、システムの特定の構成によって、それら自体が多様な異なる形態をとることができる。実施例は、
変換索引バッファを具備しているシステム内の入力の無効化（無効化された入力はハードウエアアクセラレータによって使用されるデータ値に一致する）と、
メモリ管理ユニットを具備しているシステム内のハードウエアアクセラレータによって使用されるデータ値に一致するページテーブルデータ入力の変更と、
ハードウエアアクセラレータを経由した処理を条件として、データ値に一致するデータを格納するキャッシュメモリの１又は複数のキャッシュライン上で実行される無効化及びクリーンオペレーションと、
ハードウエアアクセラレータを経由した処理を条件として、データ値に一致するデータを格納するキャッシュメモリの１又は複数のキャッシュライン上で実行されるクリーンオペレーションと、
ハードウエアアクセラレータを経由した処理を条件として、データ値に一致するデータを格納するキャッシュメモリの１又は複数のキャッシュライン上で実行されるキャッシュスヌープオペレーションと、
更なる実施例と
を具備している。
【０００８】
一部のシステムの例では、プロセッサは、その通常のオペレーションの一部として、ブロードキャストメモリ管理コマンドを生成してもよく、かつ、これらは、メモリシステム管理回路によって直接使用されて、ハードウエアアクセラレータによって処理を停止する必要、及び、メモリシステムにハードウエアアクセラレータによって格納されたデータ値をクリーンする必要を示す１又は複数の所定のメモリオペレーションを検出することができる。
【０００９】
ハードウエアアクセラレータによって上記のタイプの回復動作をトリガする必要を示す１又は複数の所定のメモリオペレーションの他の実施例は、ハードウエアアクセラレータによって使用されるメモリアドレススペースの領域内のデータ値に、プロセッサによってアクセスされる。プロセッサが、ハードウエアアクセラレータによって処理されるデータ値に、並行してアクセスすることが期待されるいくつかの合理的な環境がある。
【００１０】
プロセッサがそれ自体のメモリ管理を実行する多数の異なる方法で動作してもよい一方で、メモリシステムを管理するオペレーティングシステムを用いて、ならびに、ハードウエアアクセラレータの存在及び状態とは独立なオペレーティングシステムによるこの管理を用いて、オペレーティングシステムの制御下で動作することは最も一般的である。
【００１１】
ハードウエアアクセラレータに特別に分割されたメモリ領域を設けることができる一方で、ハードウエアアクセラレータによって処理されるデータ値が、プロセッサで共有されている（しかし、並列して使用されていない）メモリシステムの１又は複数の領域内に格納される場合、少なくとも入力及び出力のためのデータを共有することはより容易に実行することができる。
【００１２】
プロセッサ及びハードウエアアクセラレータは、共通の仮想メモリアドレススペース内で、都合よく、動作してもよい。この仮想メモリアドレススペースは、プロセッサを実行するオペレーティングシステムによって管理することができる。プロセッサ及びハードウエアアクセラレータは、メモリ管理ユニット及びページテーブルデータを共有することができ、又は、他の実施形態では、プロセッサ及びハードウエアアクセラレータは、異なるコンテクストで動作し、それ自体のメモリ管理ユニット及びページテーブルデータ（少なくとも論理的に）をそれぞれに設けることに適合してもよい。
【００１３】
本発明の更なる態様は、
プログラム命令制御下で動作するデータ処理オペレーションを実行するためのプログラム可能な汎用プロセッサ手段と、
前記プロセッサ手段によって処理されるデータ値を格納するための前記プロセッサ手段に接続されたメモリシステム手段と、
前記プロセッサ手段及び前記メモリシステム手段に接続されたハードウエアアクセラレータ手段と、
前記ハードウエアアクセラレータに接続されたシステム監視回路と
を具備し、
前記ハードウエアアクセラレータ手段は、前記ハードウエアアクセラレータ手段によって処理される一時的な変数である各データ値を格納するための１又は複数のレジスタ手段を有し、
前記１又は複数のレジスタ手段内の前記データ値は、前記メモリシステム手段から読み取られ、かつ、前記１又は複数のレジスタ手段内にキャッシュされ、
前記メモリシステム監視回路は、前記装置内で実行される１又は複数の所定のオペレーションに応答して、トリガ信号を生成し、
前記ハードウエアアクセラレータ手段は、前記トリガ信号に応答して、前記ハードウエアアクセラレータ手段によって実行される処理を停止し、かつ、前記メモリシステム手段内の対応するデータ値とは異なる前記１又は複数のレジスタ手段内の任意のデータ値が前記メモリシステム手段に書き込まれる、クリーニングオペレーションを実行することを特徴とするデータを処理するための装置を提供する。
【００１４】
本発明の更なる態様は、
プログラム命令制御下で動作するプログラム可能な汎用プロセッサを用いて、データ処理オペレーションを実行するステップと、
前記プロセッサに接続されたメモリシステム内に、前記プロセッサによって処理されるデータ値を格納するステップと、
前記ハードウエアアクセラレータによって処理される一時的な変数である各データ値を、ハードウエアアクセラレータの１又は複数のレジスタ内に格納するステップと、
前記ハードウエアアクセラレータに接続されたシステム監視回路を使用して、前記装置内で実行される１又は複数の所定のオペレーションに応じて、トリガ信号を生成するステップと、
前記トリガ信号に応じて、前記ハードウエアアクセラレータによって実行される処理を停止し、かつ、前記メモリシステム内の対応するデータ値とは異なる前記１又は複数のレジスタ内の任意のデータ値が前記メモリシステムに書き込まれるクリーニングオペレーションを実行するステップと
を具備し、
前記ハードウエアアクセラレータは、前記プロセッサ及び前記メモリシステムに接続され、かつ、前記１又は複数のレジスタ内の前記データ値は、前記メモリシステムから読み取られ、かつ、前記１又は複数のレジスタ内にキャッシュされることを特徴とするデータを処理する方法を提供する。
【発明を実施するための最良の形態】
【００１５】
本発明の上記及び他の目的、特徴、利点は、添付図面に関連して読み取られる具体例の次の詳細な説明から明らかになる。
【００１６】
図１は、ハードディスクドライブ８の形態で、不揮発性メモリに順に接続されているメインメモリ６に接続された集積回路システムオンチップ４を具備しているデータを処理するための装置２を概略的に図示している。集積回路４内には、ＡＲＭプロセッサコアなどのプログラム可能な汎用プロセッサ１０、ハードウエアアクセラレータ１２及びキャッシュメモリ１４が設けられている。集積回路４内には、メモリシステム監視回路１６及びメモリ管理ユニット１８も設けられている。
【００１７】
前記ハードウエアアクセラレータ１２及びメモリシステム監視回路１６の動作を除く、図１に示されたデータを処理するための装置２の一般的なオペレーションは、当業者には周知である。特に、キャッシュメモリ１４、メインメモリ６及びハードディスクドライブ８は、階層的なメモリシステムを共に形成している。前記メモリ管理ユニット１８は、仮想−物理アドレスマッピングを定義しているページテーブル入力を格納する変換索引バッファ１８を組み込んでいる。プログラム可能な汎用プロセッサ１０上で実行されたオペレーティングシステム２０は、プログラム可能な汎用プロセッサ１０によって実行されたアプリケーションプログラムの現在の要求によって、メインメモリ６とハードディスクドライブ８との間のメモリ領域のページングイン及びページングアウトなどのメモリオペレーションを実行するように、メモリシステム１４，６，８を制御する。オペレーティングシステム２０は、メモリ管理ユニット１８の使用、及び、ページテーブル入力データを格納するその変換索引バッファを介して、仮想メモリをサポートしてもよい。メインページテーブルデータは、メインメモリ６内に格納することができる。
【００１８】
前記プログラム可能な汎用プロセッサ１０及びメモリシステム１４，６，８に接続されたハードウエアアクセラレータは、プログラム可能な汎用プロセッサ１０によって、それに委託された処理オペレーションを実行する働きをする。したがって、計算的に集中した暗号化又は復号化処理、媒体処理などの処理機能、又は、他のそのような処理動作は、プログラム可能な汎用プロセッサ１０によって使用される同じメモリシステム１４，６，８内に格納されたデータを用いて、ハードウエアアクセラレータ１２によって、実行することができる。ハードウエアアクセラレータ１２は、任意の時点でハードウエアアクセラレータ１２によって処理されるか、又は、使用される一時的な変数を格納するレジスタ２０を組み込んでいる。ハードウエアアクセラレータ１２内の処理ロジック２２は、一時的な変数を用いて、所望の操作／処理を実行する。一時的な変数は、メモリシステム１４，６，８から読み取られ、かつ、ハードウエアアクセラレータ１２のオペレーションの間に、レジスタ２０内に効果的にキャッシュされる。一時的な変数の例としては、操作される入力データ値、生成された結果を表示し、かつ、メモリシステム１４，１６，８に書き込まれる必要のある出力データ値、ハードウエアアクセラレータ１２で処理が進行する場合に更新される入力データ及び出力データのためのポインタ、一時的な変数の他の形態が挙げられる。ハードウエアアクセラレータ１２内に保持された一時的な変数のキャッシュされた性質の特徴は、ハードウエアアクセラレータ１２がそのオペレーションを中止する場合、次の段階で、データ値がハードウエアアクセラレータ１２からクリーンされ、かつ、データ完全性／一貫性が維持されるように、ハードウエアアクセラレータ１２によって変更され、しかし、メモリシステム１４，６，８にまだ書き込まれていない任意のこれらの一時的な変数が書き込まれなければならないことが重要である。
【００１９】
前記メモリシステム監視回路１６は、ＭＭＵ１８及びキャッシュ１４内の信号に応答して、ハードウエアアクセラレータ１２がその現在のオペレーションを継続するにはもはや適切ではないか、又は、可能性のない結果を伴う処理オペレーションを実行するプログラム可能な汎用プロセッサ１０を示すメモリシステムオペレーションを検出する。そのような所定のメモリシステムオペレーションの実施例は、メモリ管理ユニット１８の変換索引バッファ内の入力の無効化ステップと、ページテーブル内の入力の変更ステップと、キャッシュ１４からハードウエアアクセラレータ１２によって使用されるデータ値を格納するキャッシュライン内のクリーン及び無効化オペレーションステップとを具備している。上記の所定のメモリシステムオペレーションは、ハードディスクドライブ８上にだけ格納されるように、メモリシステム１４，６の低オーダー部から、データをページングアウトすることに備えて、オペレーティングシステム２０の制御下で実行されるオペレーションを全て示している。適切なメモリシステムオペレーション及び一貫性を確保するために、オペレーティングシステムは、データをページングアウトする前に、無効化及びクリーニングオペレーションのよく制御されたシーケンスを実行するように、注意深く設計され、かつ、制限されている。これらのよく定義された所定のメモリシステムオペレーションは、メモリシステム監視回路１６によって検出され、かつ、ハードウエアアクセラレータ１２をトリガする働きをして、処理を停止するハードウエアアクセラレータ１２に供給されたトリガ信号の生成を結果としてもたらし、かつ、メモリシステム１４，６，８内の対応するデータ値とは異なるレジスタ２０内に保持された任意のデータ値がクリーンされる（即ち、メモリシステム１４，６，８に書き出される）クリーニングオペレーションを実行する。
【００２０】
メモリシステム構成の多様な異なる装置を使用してもよい。一部の実施形態では、前記プログラム可能な汎用プロセッサ１０及びハードウエアアクセラレータ１２は、プログラム可能な汎用プロセッサ１０上で、現在アクティブであるコンテクスト内の計算的に集中した負荷の実行を支援するハードウエアアクセラレータ１２と同じコンテクスト内で動作してもよい。他の実施形態では、プログラム可能な汎用プロセッサ１０及びハードウエアアクセラレータ１２は、それら自体のページテーブル及び仮想−物理アドレスマッピングとは異なるコンテクストで、動作することができる。
【００２１】
また、図１に示されたのは、実行されるメモリオペレーションを示すブロードキャスト信号を生成する前記プログラム可能な汎用プロセッサ１０の可能性である。そのプログラム可能な汎用プロセッサ１０のための一部のプロセッサアーキテクチャは、マルチ処理環境に渡って、メモリ制御の協調を促進するように、ブロードキャストメモリオペレーション信号を生成する。利用可能である場合、上記のキャッシュ１４及びメモリ管理ユニット１８を用いて実行された「スヌーピング(snooping)」に加えるか、又は、おそらく、その「スヌーピング」の代わりに、メモリシステム監視回路１６は、そのブロードキャストメモリオペレーション信号に応答してもよい。
【００２２】
前記ハードウエアアクセラレータ１２が、前記メモリシステム１４，６，８以外で、そのデータ値のクリーニングを実行する場合、その時、オペレーティングシステム２０によって生じる任意のメモリシステム変化が効果を発する前に、これを完了しなければならないことが理解される。これは、メモリシステム監視回路１６に、実行される適切な所定のメモリシステムオペレーションを検出させ、かつ、ハードウエアアクセラレータ１２がそのクリーニングオペレーションを実行する一方で、これらのメモリシステムオペレーションを失速させる（ストールさせる）ことによって実行することができる。オペレーティングシステム１２のレベルでは、その動作は、低速メモリアクセスと同じに見え、かつ、ハードウエアアクセラレータ１２のクリーニングに関する追加的な遅延は、特定の問題を引き起こさない。
【００２３】
実施例のために、メモリのページの使用不能(disable)に関するＡＲＭアーキテクチャ下の所定のメモリシステムオペレーションを取り扱ってもよい。オペレーティングシステムは、その最近使用された検出ルーチン（スワップのために候補物理メモリを見つけるため）の一部として、又は、補助記憶装置（ハードディスクドライブ８）を用いてページをスワップする前触れとして、ページを使用不能にすることを決定してもよい。オペレーティングシステムによって前記ハードウエアアクセラレータ１２が使用するページを使用不能にするイベントでは、ハードウエアアクセラレータ１２は、そのページを使用して停止（その処理を停止）しなければならず、かつ、好ましくは、そのページがスワップされる場合、その時、データ一貫性が失われないように、使用不能にされるページに含まれているそのレジスタ２０内の任意のデータ値をクリーンしなければならない。ハードウエアアクセラレータ１２は、それに応じて、メモリシステム監視回路１６からのトリガ信号に応答して、その処理を停止し、かつ、これによって、オペレーティングシステム２０がそのページをスワップさせないので、それが事実上そのページを使用していたプログラム可能な汎用プロセッサ１０に信号を選択的に戻してもよい。これは、使用不能なページに「接触」し、かつ、アボートをもたらすＣＰＵスレッドと等しい。
【００２４】
ページを使用不能にするために、前記オペレーティングシステムが一般に経るステップは次のとおりである（擬似コードにおいて）。
新規ページテーブル入力を書き込む。
ＤＭＢ；メモリへの書き込みが完了したことを確認する。
ＴＬＢ無効化；キャッシュされたページがメモリから再読み取りされることを確認する。
ＤＭＢ；ＴＬＢ無効化完了を確認する。
ＩＭＢ；古いマッピングを使用する命令がないことを確認する。
【００２５】
この実施例の方法は、「ＴＬＢ無効化」コマンドを観察することによって、前記メモリシステム監視回路１６が、前記ハードウエアアクセラレータ１２が要求するページがもはや有効ではないことの指示を得ることができると認識している。「ＴＬＢ無効化」コマンドは、単一ページ、１セットのページ、又は、「全ての」キャッシュされた入力に及ぶことができる。メモリシステム監視回路１６は、任意の「ＴＬＢ無効化」コマンド、又は、代わりに、ハードウエアアクセラレータ１２の現在動作しているページに競合するコマンドだけに応答することができる。
【００２６】
所定のメモリシステムオペレーションの他の実施例は、メモリ内の物理ページの再利用に関係がある。オペレーティングシステム２０がそのようなメモリ内の物理ページを再使用することを所望する場合、次いで、それは、次のステップを実行する。
ページの使用不能化（）；前のセクションとして、この前に実行してもよい。
キャッシュクリーン及び無効化；任意の以前にキャッシュされたコピーが無効化されることを確認し、かつ、物理メモリに書き込まれたダーティラインを確認する。
ＤＭＢ；キャッシュＣ及びＩを完了する。
記憶装置にＤＭＡ／コピー；出て行くデータを補助記憶装置にコピーする。
完了（）を待機する；暗示ＤＭＢ
記憶装置からＤＭＡ／コピー；入ってくるデータを物理メモリ内にコピーする（メンテナンスマッピングを使用して）。
完了を待機する（）；
新規ページを書き込む（）；ページの使用不能化（）に類似、即ち、物理ページの新規使用を可能にする。
【００２７】
この実施例の方法は、前記オペレーションシステム２０が、例えば、ハードディスク８などの補助記憶装置に問題のメモリをページングしてもよい指示として、メモリシステム監視回路１６が「キャッシュクリーン及び無効化」オペレーション（特に、以前の使用不能ページとの組み合わせで）を観察することができる現実を利用している。ハードウエアアクセラレータ１２内に保持された任意のデータ値を、メモリシステム１４，６，８に書き込む一方で、物理メモリに上書きすること、及び、ハードウエアアクセラレータ１２を許容することが、そのキャッシュメンテナンスオペレーションを実行しないようにすることができる以前に、オペレーティングシステム２０は、キャッシュメンテナンスオペレーションの完了を待機する。
【００２８】
前記システムは、明示(explicit)メンテナンスオペレーションと、キャッシュコヒーレントシステムの一部として生じる干渉性のある動作とを識別してもよい。例えば、プロセッサがアクセラレータによってキャッシュされたブロックを読み取る場合、それが処理を伴って継続するように、それは、このブロックをメモリにクリーンしてもよく、かつ、連続的に、ブロックを再読み取りしてもよい。逆に、プロセッサによって、明示ページ使用不能／キャッシュをクリーン及び無効化させる場合、アクセラレータは、含まれたブロックをクリーン及び無効化してもよく、かつ、次いで、プロセッサ１０にその一時停止の指示をもたらす適切な信号（又はステータスビット）を生じているそれ自体を一時停止してもよい。
【００２９】
前記システムは、ページテーブルを含んでいるメモリへの書き込みをスヌープし、かつ、それに従って、ページテーブル入力の１つが変更されたか否かを決定し、かつ、これを、ハードウエアアクセラレータ１２の停止及びクリーニングを結果的にもたらす必要のある動作を示すと解釈することができる。システムはまた、ハードウエアアクセラレータ１２自体によっても処理を要求されるメモリ１４，６，８内のデータ値へのアクセスをスヌープすることができる。さらなる実施例では、システムは、明示キャッシュ／ＴＬＢメンテナンス及び先取りオペレーション上の全てのキャッシュされたコピーを捨てる、即ち、クリーン及び無効化することができる。即ち、要求されたページが使用不能である場合、次いで、アクセラレータ１２による次のフェッチは停止し、ならびに、アクセラレータ１２は一時停止し、かつ、プロセッサ１０にこの一時停止の信号を送信する。
【００３０】
アクセラレータをクリーン及びフラッシュする必要を示す所定のオペレーションのさらなる実施例は、前記ハードウエアアクセラレータを経由した処理を条件として、データ値に対応するデータを格納するキャッシュメモリの１又は複数のキャッシュラインを用いて実行されるクリーンオペレーション、及び、ハードウエアアクセラレータを経由した処理を条件として、データ値に対応するデータを格納するキャッシュメモリの１又は複数のキャッシュラインを用いて実行されるキャッシュスヌープオペレーションである。監視回路１６は、オペレーションのこれらの形態に応答するように構成してもよい。
【００３１】
図２は、前記メモリ管理ユニット１８及びメインメモリ６の形態で、前記プログラム可能な汎用プロセッサ１０及びハードウエアアクセラレータ１２が、メモリシステムを共有することが理解できる構成を概略的に図示している。点線で示されている形態は、プログラム可能な汎用プロセッサ１０によって使用されるそれらよりも、異なる仮想−物理マッピングを用いて、異なるコンテクストで、ハードウエアアクセラレータ１２が動作することができるように、ハードウエアアクセラレータ１２が、それ自体のページテーブルデータを格納するそれ自体の分離されたメモリ管理ユニットを有してもよい代替構成である。
【００３２】
図３は、前記ハードウエアアクセラレータ１２によって、前記プロセッサ１０が処理を起動する方法を概略的に図示しているフローチャートである。ステップ２４では、プロセッサ１０は、プログラム命令の実行を開始する。ステップ２６では、命令を起動するハードウエアアクセラレータは、プロセッサ１０によって実行され、かつ、これによって、ハードウエアアクセラレータ１２に、プロセッサ１０が適切な信号を送信させて、その処理動作をトリガさせる。単一の開始コマンドの受信によって、その処理を開始することができるように、ハードウエアアクセラレータ１２をあらかじめ構成（セットアップ）してもよい。当該構成の予備的なタイプは、処理されるデータ構造に適切なポインタを供給してもよく、暗号化／復号化に使用される鍵値などを提供してもよい。ステップ２８では、ハードウエアアクセラレータによる実行が起動される。ステップ３０では、実行された起動が１つであるか否かに関して、決定がなされる。これに対して、それ自体がさらに処理を継続する以前に、プロセッサ１０が完了を待機していなければならないことが要求される。これが「完了を待機する」ことが要求される起動ではない場合、次いで、処理はステップ２６に戻る。「完了を待機する」ことが要求される場合、次いで、処理は、処理がステップ２６に戻される前に、処理の完了が検出されるステップ３２に移る。
【００３３】
図４は、前記ハードウエアアクセラレータ１２の制御を概略的に図示しているフローチャートである。ステップ３４では、ハードウエアアクセラレータ１２は、その処理を開始するためのトリガの受信を待機する。そのトリガが受信されると、処理はステップ３６に進む。そこで、ハードウエアアクセラレータ１２は、メモリシステムからその一時的な変数をロードし、かつ、その結果、必要に応じて、結果の値を書き込むことを含むその処理を実行する。ステップ３８では、処理された全ての値がハードウエアアクセラレータ１２によって処理されたか否かに関して、決定がなされる。全ての値が処理された場合、次いで、制御は、ステップ３４に戻ってプロセッサ１０からの次のトリガを待機し、ハードウエアアクセラレータ１２によって、さらなる処理オペレーションを開始する。ステップ３８の決定が、処理される値がさらにまだ存在することであった場合、次いで、処理が停止されなければならないことを示すメモリシステム監視回路１６からトリガ信号が受信され、かつ、プロセッサ１０によって、他の動作のために、クリーンオペレーションが実行されたか否かに関して、チェックがなされる。そのトリガが、監視回路１６のメモリシステムから受信されない場合、次いで、処理は３６に戻る。しかしながら、そのトリガ信号が、メモリシステム監視回路１６から受信された場合、次いで、処理は、ハードウエアアクセラレータ１２によって、処理が停止されるステップ４２に進む。次いで、ステップ４４は、ハードウエアアクセラレータレジスタ２０内の任意のダーティ値を、それらをメモリシステム１４，６，８に書き込むことによってクリーンする。次いで、処理はステップ３４に戻る。
【００３４】
図５は、前記メモリシステム監視回路１６の動作を概略的に図示しているフローチャートである。ステップ４６では、ハードウエアアクセラレータ１２がアクティブになるまで、回路は待機する。ハードウエアアクセラレータ１２がアクティブであるとき、処理はステップ４８に進む。この実施例では、一般にメモリオペレーションに潜在的に競合するのではなく、これらの特定の領域では、メモリシステム監視回路１６がオペレーションに応答できるように、ハードウエアアクセラレータ１２によって使用されるメモリ領域が読み取られる。次いで、ステップ５０は、ハードウエアアクセラレータ１２がその処理を停止し、かつ、それ自体をクリーンする必要を示す任意の所定のメモリオプションが検出されたか否かを決定する。そのメモリオペレーションが検出された場合、次いで、ステップ５２は、ハードウエアアクセラレータに送信されて、その停止及びクリーンオペレーションを実行することをトリガする適切なトリガ信号を生成する。その所定のメモリオペレーションが検出されなかった場合、処理はステップ５０からステップ５４に進み、そこで、ハードウエアアクセラレータがまだアクティブであるか否かに関してチェックがなされる。ハードウエアアクセラレータがまだアクティブである場合、次いで、処理はステップ５０に戻る。ハードウエアアクセラレータがもはやアクティブではない場合、次いで、処理はステップ４６に戻る。
【００３５】
上記の技術は、発明の名称を「安全ではないアプリケーションへの安全なサービスの提供」及び「追加的な処理デバイスによって処理のための中央プロセッサから送信された安全なデータの機密の保護」とし、共に出願中の米国特許出願に開示された技術に関連する。これらの２つの共に出願中の特許出願の開示はその全体を本明細書に組み込む。
【００３６】
本発明の代表的な実施形態が添付図面を参照して、本明細書に詳細に記載されたが、本発明は、これらの正確な実施形態に限定はされず、かつ、多様な変化及び変形例は、添付の特許請求の範囲によって定義された本発明の範囲及び真の趣旨から逸脱することなく、当業者によって実施することができることが理解されなければならない。
【図面の簡単な説明】
【００３７】
【図１】図１は、プログラム可能な汎用プロセッサ、ハードウエアアクセラレータ、メモリシステムを具備しているデータ処理システム概略的に図示している。
【図２】図２は、プログラム可能な汎用プロセッサがメモリシステムをハードウエアアクセラレータと共有する２つの異なる方法を概略的に図示している。
【図３】図３は、プログラム可能な汎用プロセッサがハードウエアアクセラレータ上で処理を起動する方法を概略的に図示しているフローチャートである。
【図４】図４は、メモリ監視回路から受信したトリガ信号に応答するようなハードウエアアクセラレータの制御を概略的に図示しているフローチャートである。
【図５】図５は、メモリ監視回路がプログラム可能な汎用プロセッサによって実行された所定のメモリオペレーションに応じて、ハードウエアアクセラレータに供給されるトリガ信号を生成する方法を概略的に図示しているフローチャートである。
【符号の説明】
【００３８】
２  データ処理装置
４  集積回路システムオンチップ
６  メインメモリ
８  ハードディスクドライブ
１０  プログラム可能な汎用プロセッサ
１２  ハードウエアアクセラレータ
１４  キャッシュメモリ
１６  メモリシステム監視回路
１８  メモリ管理ユニット
２０  レジスタ
２２  処理ロジック
【図１】
0005258500.tif 000002
【図２】
0005258500.tif 000003
【図３】
0005258500.tif 000004
【図４】
0005258500.tif 000005
【図５】
0005258500.tif 000006