【手続補正書】
【提出日】平成21年11月10日(2009.11.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
キャッシュコヒーレンシ制御を行う半導体集積回路装置であって、
複数のＣＰＵコアと、
スヌープコントローラと、を有し、
前記複数のＣＰＵコアは夫々中央処理装置と、キャッシュメモリと、キャッシュコントローラと、バスインタフェースコントローラと、を有し、
前記スヌープコントローラは前記複数のＣＰＵコア夫々のキャッシュメモリの情報を夫々複製した複数の複製タグを有し、
前記キャッシュコントローラは、前記中央処理装置から、命令あるいはデータアクセス要求を受け取り、所望のデータをアクセスするために前記キャッシュメモリの制御あるいは前記バスインタフェースコントローラへのアクセス要求を行うものであり、
前記バスインタフェースコントローラは前記アクセス要求を受け取り、所望のデータをアクセス制御するものであり、
前記スヌープコントローラは、前記キャッシュコントローラから通知される情報を受け取り、キャッシュコヒーレンシの制御を行うものであり、
前記キャッシュコントローラは、前記中央処理装置が、メモリ割り付けキャッシュアクセスによって前記キャッシュメモリの登録内容を更新した際に、前記キャッシュメモリの登録内容が更新されたことを検知する手段を有し、前記スヌープコントローラに前記キャッシュメモリの登録内容が更新されたことを通知する手段を有し、
前記スヌープコントローラは、前記キャッシュメモリの登録内容が更新されたことが通知されると、前記キャッシュメモリの更新された登録内容に従って前記複製タグを更新し、
前記複数のＣＰＵコアは夫々、前記キャッシュメモリの登録情報を更新するときに対応する前記複製タグを参照し、コヒーレンシ制御を行うことを特徴とする半導体集積回路装置。
【請求項２】
請求項１記載の半導体集積回路装置において、
前記スヌープコントローラは、
キャッシュクリアを行うキャッシュ操作命令の実行時に前記複製タグをクリアすることを特徴とする半導体集積回路装置。
【請求項３】
請求項１または２記載の半導体集積回路装置において、
前記複数のＣＰＵコアのうち、少なくとも１個以上のＣＰＵコアはデータを共有しないアドレス領域を有し、
前記キャッシュコントローラは、
仮想アドレスを物理アドレスに変換するアドレス変換テーブルを備え、
前記アドレス変換テーブルは、
コヒーレンシが有効か無効かを示す選択情報を有し、前記データを共有しないアドレス領域に対してコヒーレンシを無効とするものであり、
前記キャッシュコントローラは、
前記アドレス変換テーブルの選択情報を参照し、コヒーレンシ有効となっている際に前記キャッシュメモリの登録内容が更新されたことを前記スヌープコントローラに通知し、コヒーレンシ制御を行うことを特徴とする半導体集積回路装置。
【請求項４】
請求項１または２記載の半導体集積回路装置において、
前記複数のＣＰＵコアのうち少なくとも１個以上のＣＰＵコアはデータを共有しないアドレス領域を有し、
前記キャッシュコントローラは、
コヒーレンシが有効か無効かを示す選択情報を格納するレジスタを有し、前記データを共有しないアドレス領域に対してコヒーレンシを無効とするものであり、
アドレスデコード時に前記レジスタの選択情報を参照し、コヒーレンシ有効となっている際に前記キャッシュメモリの登録内容が更新されたことを前記スヌープコントローラに通知し、コヒーレンシ制御を行うことを特徴とする半導体集積回路装置。
【請求項５】
請求項１〜４のいずれか１項に記載の半導体集積回路装置において、
前記キャッシュコントローラは、
ライトスルーとコピーバックとを混在して使用するか否かを設定する設定レジスタを備えることを特徴とする半導体集積回路装置。
【請求項６】
請求項５記載の半導体集積回路装置において、
前記キャッシュコントローラは、
ライトスルー設定時にキャッシュライトミスを起こした際に前記設定レジスタがライトスルーとコピーバックとを混在に設定されている場合、前記中央処理装置にダーティデータが存在することを考慮したスヌープ処理とライト処理を行うコマンドを発行し、
ライトスルー設定時にキャッシュライトミスを起こした際に前記設定レジスタが非混在に設定されている場合、前記中央処理装置がダーティデータを所持していないことを考慮したスヌープ処理とライト処理を行うコマンドを発行することを特徴とする半導体集積回路装置。
【請求項７】
請求項５または６記載の半導体集積回路装置において、
前記キャッシュコントローラは、
ライトスルー設定時にキャッシュリードミスを起こした際に前記設定レジスタがライトスルーとコピーバックとを混在に設定されている場合、前記中央処理装置にダーティデータが存在することを考慮したコマンドを発行し、
ライトスルー設定時にキャッシュリードミスを起こした際に前記設定レジスタが非混在に設定されている場合、前記中央処理装置にダーティデータが存在しないことを考慮したコマンドを発行し、要求が受け付けられたと同時にフィル要求を出力することを発行することを特徴とする半導体集積回路装置。
【請求項８】
請求項１〜７のいずれか１項に記載の半導体集積回路装置において、
前記キャッシュコントローラは、
前記中央処理装置から任意のアドレスのデータを有するキャッシュメモリの情報を操作するためのキャッシュ操作命令を実行する要求を受け取ると、前記任意のアドレスのデータを有するキャッシュメモリを有する前記ＣＰＵコア内の中央処理装置に前記任意のアドレスのデータを有するキャッシュメモリの情報を操作するためのキャッシュ操作を行うことを前記スヌープコントローラに要求するスヌープバス要求を発生させることを特徴とする半導体集積回路装置。
【請求項９】
請求項１〜７のいずれか１項に記載の半導体集積回路装置において、
前記キャッシュコントローラは、
前記中央処理装置から任意のアドレス範囲のデータを有するキャッシュメモリの情報をメモリに反映させるためのキャッシュ操作命令を実行する要求を受け取ると、前記任意のアドレス範囲のデータを有するキャッシュメモリを有する前記ＣＰＵコア内の中央処理装置に前記任意のアドレス範囲のデータを有するキャッシュメモリの情報をメモリに反映させるためのキャッシュ操作を行うことを前記スヌープコントローラに要求することを特徴とする半導体集積回路装置。
【請求項１０】
請求項１〜９のいずれか１項に記載の半導体集積回路装置において、
前記スヌープコントローラは、
任意の１つの前記中央処理装置から、すべての前記複製タグを参照するアドレスマップ、および自己の前記中央処理装置に対応する前記複製タグを参照するアドレスマップを有し、
前記キャッシュコントローラは、
前記アドレスマップを参照可能であり、
前記スヌープコントローラは、
アクセス要求が発生した際にアドレスデコードによってすべての前記複製タグを参照するアドレスマップであるか、または自己の前記中央処理装置に対応する前記複製タグであるかを判断することを特徴とする半導体集積回路装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【発明の名称】半導体集積回路装置
【技術分野】
【０００１】
本発明は、複数の中央処理装置を備えた半導体集積回路装置におけるキャッシュアクセス技術に関し、特に、ＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉｐｌｅ  Ｐｒｏｃｅｓｓｏｒ）構造の半導体集積回路装置によるコヒーレンシ制御に有効な技術に関する。
【背景技術】
【０００２】
複数のＣＰＵが処理を分担する、いわゆるＳＭＰ構造の半導体集積回路装置では、ＣＰＵ間のキャッシュコヒーレンシを保つ手段として、各ＣＰＵのキャッシュ登録情報を格納する複製アドレスアレイ（複製タグ）と各ＣＰＵから他のＣＰＵのキャッシュ登録情報をスヌープするための共有バス（以下、スヌープバスという）が存在するものが知られている。各ＣＰＵは、コヒーレンシ有効／無効を選択することができる。
【０００３】
ＳＭＰ構成の半導体集積回路装置におけるコヒーレンシ（共有）制御では、該コヒーレンシ制御に必要なのは真に複数のＣＰＵ間でデータ共有している領域のみである。よって、コヒーレンシ制御が不良な領域（データ共有しない領域）に対して、コヒーレンシ制御を行うことにより、性能が低下してしまうことになる。
【０００４】
さらに、ＳＭＰ構成の半導体集積回路装置では、プロセス毎に同一物理領域をライトスルーとコピーバックで使用したい場合があり、たとえば、プロトコルの混在を可能とする技術として、ライトスルーとコピーバックとの区別をスヌープバスのステータス信号に追加することにより、スヌープ処理の内容を選択するものが知られている（特許文献１参照）。
【０００５】
また、ＳＭＰ構成の半導体集積回路装置は、一般に、プロセスを実行するＣＰＵの割り当てをＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が自動的に振り分けている。
【０００６】
さらに、ＳＭＰ構成の半導体集積回路装置をデバッグする際、すべてのＣＰＵのキャッシュ登録状況を見るためには、全ＣＰＵのプログラム実行を一時停止した後、ＣＰＵ毎にキャッシュ操作を行っている。
【特許文献１】特開平０４−１２３１５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところが、上記のようなＳＭＰ構成の半導体集積回路装置では、次のような問題点があることが本発明者により見い出された。
【０００８】
ＣＰＵ間のキャッシュコヒーレンシを保つ技術において、複製アドレスアレイ（複製タグ）への登録は、各ＣＰＵがキャッシュミスした際に起こすスヌープバス要求のタイミングにて行われる。スヌープバス要求後のスヌープ処理を正しく行うためには、各ＣＰＵのキャッシュ登録情報と複製アドレスアレイ（複製タグ）の登録情報が一致している必要がある。
【０００９】
また、各ＣＰＵのキャッシュ登録内容はメモリ割り付けキャッシュアクセスによって参照／更新可能な場合、メモリ割り付けキャッシュアクセスにより登録内容がクリア可能になる。クリアされた場合、複製アドレスアレイ（複製タグ）も情報一致させるために、複製アドレスアレイ（複製タグ）の内容をクリアしなければならないが、複製アドレスアレイ（複製タグ）をクリアする手段を有していない。
【００１０】
そのため、キャッシュ格納情報を誤認識し、コヒーレンシ制御が正常に行われない可能性がある。
【００１１】
また、シングルコア構成のソフトウェアを流用した場合、複製アドレスアレイ（複製タグ）をクリアする処理の追加が必要となってしまい、ソフトウェアの工数の増加、およびコスト向上などが発生してしまう。
【００１２】
次に、コヒーレンシの有効／無効を選択する技術では、コヒーレンシの有効を選択した場合に、非共有領域に対してもスヌープ処理が発生してしまい、半導体集積回路装置の性能が劣化してしまうという問題がある。
【００１３】
ライトスルーとコピーバックとの区別をスヌープバスのステータス信号に追加する技術では、コヒーレンシプロトコルが混在しないときでも、回避処理が発生してしまい、スヌープ処理性能が低下してしまうという問題がある。
【００１４】
プロセスを実行するＣＰＵの割り当てをＯＳが振り分ける場合、コンテクストスイッチなどでプロセス実行が中断された際に、プロセスが再開した場合に同じＣＰＵで行われない場合がある。
【００１５】
実行中断時点でダーティデータがキャッシュに残存しているにも関わらず、他のＣＰＵで実行再開される場合、再開以降に実行する命令の中にキャッシュ操作命令（指定したアドレスが登録されているキャッシュライン操作）があると、所望のキャッシュ操作ができない場合がある。
【００１６】
この場合、キャッシュ操作命令実行後にＤＭＡ転送を行うプログラムを書いてしまうと、ダーティデータを書き戻せないままＤＭＡ転送を行ってしまい、期待通りの動作にならない恐れがある。
【００１７】
さらに、他のＣＰＵのキャッシュを操作する場合には、ＣＰＵ間割り込みを用いて全ＣＰＵのプロセス実行を中断し、ＣＰＵそれぞれでキャッシュ操作命令を実行する必要があり、キャッシュ操作に手間が掛かってしまうという問題がある。
【００１８】
また、デバッグの際に、すべてのＣＰＵのキャッシュ登録状況を見る場合、前述したように、全ＣＰＵのプログラム実行を一時停止した後、ＣＰＵ毎にキャッシュ操作を行わなければならず、他のＣＰＵの割り込み要求、キャッシュ読み出し、共有領域への結果書き込み、および共有領域からの結果読み出しなどの処理が必要となり、デバッグ効率が低下してしまうという問題がある。
【００１９】
本発明の目的は、ＳＭＰ構成の半導体集積回路装置において、キャッシュコヒーレンシ制御の異常を防止し、処理性能を向上させる技術を提供することにある。
【００２０】
また、本発明の他の目的は、コヒーレンシプロトコルによる性能劣化を防止し、ソフトウェア、およびデバッグの効率を向上させる技術を提供することにある。
【００２１】
本発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００２２】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００２３】
本発明による半導体集積回路装置は、アクセス要求を受け取り、所望のデータをアクセスするバスインタフェースコントローラと、中央処理装置と、該中央処理装置からの命令、データアクセス要求を受け取り、所望のデータをアクセスするためにキャッシュ操作やバスインタフェースコントローラにアクセス要求を行うキャッシュコントローラとを備えた複数のＣＰＵコアと、キャッシュミスが発生した際にキャッシュコントローラから発行されるスヌープ要求を受け取り、コヒーレンシ制御を行うスヌープコントローラとを有した半導体集積回路装置であって、キャッシュコントローラは、中央処理装置が、メモリ割り付けキャッシュアクセスによって登録内容をクリアした際に、各中央処理装置のキャッシュ登録情報を格納する複製アドレスアレイ（複製タグ）の内容をクリアする要求を発行し、スヌープコントローラは、キャッシュコントローラから発行されたスヌープバス要求を受理すると、複製アドレスアレイ（複製タグ）を参照し、スヌープバス要求に従って複製タグを更新するものである。
【００２４】
また、本願のその他の発明の概要を簡単に示す。
【００２５】
本発明による半導体集積回路装置は、前記スヌープコントローラが、キャッシュクリアを行うキャッシュ操作命令の実行時に複製アドレスアレイ（複製タグ）をクリアするものである。
【００２６】
また、本発明の半導体集積回路装置は、前記キャッシュコントローラが、仮想アドレスを物理アドレスに変換するアドレス変換テーブルを備え、該アドレス変換テーブルは、コヒーレンシが有効か無効かを示す選択情報を有し、キャッシュコントローラは、アドレス変換テーブルの選択情報を参照し、コヒーレンシ有効となっている際にスヌープコントローラにスヌープバス処理を発生させ、コヒーレンシ制御を行うものである。
【００２７】
さらに、本発明の半導体集積回路装置は、前記キャッシュコントローラが、コヒーレンシが有効か無効かを示す選択情報を格納するレジスタを有し、アドレスデコード時にレジスタの選択情報を参照し、コヒーレンシ有効となっている際にスヌープコントローラにスヌープバス処理を発生させ、コヒーレンシ制御を行うものである。
【００２８】
また、本発明の半導体集積回路装置は、前記キャッシュコントローラが、ライトスルーとコピーバックとを混在して使用するか否かを設定する設定レジスタを備え、スヌープバス要求が必要の際に、該設定レジスタを参照してバスコマンドを発行するものである。
【００２９】
さらに、本発明の半導体集積回路装置は、前記キャッシュコントローラが、ライトスルー設定時にキャッシュライトミスを起こした際に設定レジスタが混在に設定されている場合、中央処理装置にダーティデータが存在することを考慮したスヌープ処理とライト処理を行うコマンドを発行し、ライトスルー設定時にキャッシュライトミスを起こした際に設定レジスタが非混在に設定されている場合、中央処理装置がダーティデータを所持していないことを考慮したスヌープ処理とライト処理を行うコマンドを発行するものである。
【００３０】
また、本発明の半導体集積回路装置は、前記キャッシュコントローラが、キャッシュリードミスを起こした際に設定レジスタが混在に設定されている場合、中央処理装置にダーティデータが存在することを考慮したコマンドを発行し、中央処理装置のスヌープ要求完了まで待機し、キャッシュリードミスを起こした際に設定レジスタが非混在に設定されている場合、中央処理装置にダーティデータが存在しないことを考慮したコマンドを発行し、要求が受け付けられたと同時にフィル要求を出力することを発行するものである。
【００３１】
さらに、本発明の半導体集積回路装置は、前記キャッシュコントローラが、中央処理装置からキャッシュ操作命令を実行する要求を受け取ると、任意のアドレスを有する中央処理装置にキャッシュ操作を行うことを要求するスヌープバス要求を発生させるものである。
【００３２】
また、本発明の半導体集積回路装置は、前記キャッシュコントローラが、中央処理装置からキャッシュ操作命令を実行する要求を受け取ると、任意のアドレス範囲を有する中央処理装置にキャッシュ操作を行うことを要求するスヌープバス要求を発生させるものである。
【００３３】
さらに、本発明の半導体集積回路装置は、前記スヌープコントローラが、任意の１つの中央処理装置から、すべての中央処理装置の複製アドレスアレイ（複製タグ）を参照するアドレスマップ、および１つの中央処理装置の複製アドレスアレイ（複製タグ）を参照するアドレスマップを有し、前記キャッシュコントローラは、アドレスマップを参照可能であり、スヌープコントローラは、アクセス要求が発生した際にアドレスデコードによってすべての中央処理装置の複製アドレスアレイ（複製タグ）を参照するアドレスマップであるか、または１つの中央処理装置の複製アドレスアレイ（複製タグ）を参照するアドレスマップであるかを判断するものである。
【発明の効果】
【００３４】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００３５】
（１）複製アドレスアレイ（複製タグ）に関係なく、キャッシュの登録内容をクリアすることが可能となり、キャッシュコヒーレンシ制御を良好に行うことができる。
【００３６】
（２）非共有領域に対するコヒーレンシ制御のペナルティをなくすことができるので、半導体集積回路装置の性能を向上させることができる。
【００３７】
（３）ライトスルーとコピーバックを使用することが可能となり、ソフトウェアなどの開発効率を向上させることができる。
【００３８】
（４）プロセスマイグレーションを考慮したキャッシュ操作を容易に実施することが可能となる。
【００３９】
（５）１つのＣＰＵからすべてのＣＰＵの複製アドレスアレイ（複製タグ）を参照することができるので、デバッグを容易に、効率よく行うことができる。
【発明を実施するための最良の形態】
【００４０】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００４１】
（実施の形態１）
図１は、本発明の実施の形態１による半導体集積回路装置のブロック図、図２は、図１の半導体集積回路装置で用いられるオペランドキャッシュの構成例を示す説明図、図３は、図１の半導体集積回路装置で用いられる複製アドレスアレイ（複製タグ）の構成例を示す説明図、図４は、図１の半導体集積回路装置による通常のスヌープ処理の一例を示す説明図、図５は、図１の半導体集積回路装置によるスヌープ処理において、メモリ割り付けキャッシュアクセス結果と複製アドレスアレイ（複製タグ）の同期を行う際の一例を示す説明図、図６は、図１の半導体集積回路装置に用いられるオペランドキャッシュ／アドレスアレイの構成を示す説明図である。
【００４２】
本実施の形態１において、半導体集積回路装置１は、ＳＭＰ構成からなる。半導体集積回路装置１は、図１に示すように、複数のＣＰＵコア２、スヌープコントローラ（ＳＮＣ）３、ハードウェアＩＰ（ＨＷ  ＩＰｎ）４0〜４n、ＤＭＡコントローラ（ＤＭＡＣ）５、チップ外部高速転送インタフェース（ＰＣＩ  Ｅｘｐ）６、外部メモリインタフェース（ＥＢＳＣ）７、周辺モジュールバスコントローラ（ＰＢＳＣ）８、および周辺モジュールであるタイマ（ＴＭＵ）９、割り込みコントローラ（ＩＮＴＣ）１０、クロックパルス生成器（ＣＰＧ）１１、汎用Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）ポート（ＧＰＩＯ）１２から構成されている。
【００４３】
これらＣＰＵコア２とスヌープコントローラ３とは、スヌープバスＢ１を介して相互に接続されている。ＣＰＵコア２、スヌープコントローラ３、ハードウェアＩＰ４0〜４n、ＤＭＡコントローラ５、チップ外部高速転送インタフェース６、外部メモリインタフェース７、ならびに周辺モジュールバスコントローラ（ＰＢＳＣ）８は、オンチップシステムバスＢ２を介して相互に接続されている。
【００４４】
また、周辺モジュールバスコントローラ８、タイマ９、割り込みコントローラ１０、クロックパルス生成器１１、ならびに汎用Ｉ／Ｏポート１２は、周辺モジュールバスＢ３を介して相互に接続されている。
【００４５】
ＣＰＵコア２は、ＣＰＵ２ａ、命令キャッシュ（Ｉ＄）２ｂ、データキャッシュ（Ｄ＄）２ｃ、キャッシュコントローラ（ＣＣＮ）２ｄ、ならびにバスインタフェースコントローラ（ＢＩＣ）２ｅから構成されている。
【００４６】
ＣＰＵ２ａは、メモリに記憶されたプログラムを定義された命令単位で読み、必要なデータを取り込みながら、演算・処理を実行する。命令キャッシュ２ｂは、ＣＰＵ２ａからの命令アクセスサイクルを短縮させるために、ＣＰＵコア２外に格納された命令を一時的に格納する。
【００４７】
データキャッシュ２ｃは、ＣＰＵ２ａからのデータアクセスサイクルを短縮させるため、ＣＰＵコア２外に格納された命令を一時的に格納する。キャッシュコントローラ２ｄは、ＣＰＵ２ａからの命令、データアクセス要求を受け取り、所望のデータをアクセスするために、キャッシュ操作やバスインタフェースコントローラ２ｅにアクセス要求を行う。
【００４８】
バスインタフェースコントローラ２ｅは、キャッシュコントローラ２ｄからアクセス要求を受け取り、オンチップシステムバスＢ２経由で所望のデータをアクセスする。
【００４９】
また、スヌープコントローラ３は、キャッシュミスが発生した際にキャッシュコントローラ２ｄから発行されるスヌープ要求を受け取り、コヒーレンシ制御を行う。ハードウェアＩＰ４0〜４nは、 ハードウェアアクセラレータなど、ＣＰＵ２ａの負担軽減化の為、アルゴリズムが確定したプログラムをハードウェア化してオンチップシステムバスＢ２に接続されたモジュールからなる。
【００５０】
ＤＭＡコントローラ５は、ＣＰＵ２ａを介さずにメモリ間のデータ転送を制御する。チップ外部高速転送インタフェース６は、チップ間を高速データ転送するためのインタフェースからなる。
【００５１】
外部メモリインタフェース７は、オンチップシステムバスＢ２経由からのアクセス要求を受け取り、チップ外部に接続される装置へのアクセス要求を行う。周辺モジュールバスコントローラ８は、周辺モジュールをアクセスする。
【００５２】
タイマ９は、所望の時間設定をし、ある時間に到達すると、割り込みコントローラ１０に割り込み要求を起こす。割り込みコントローラ１０は、周辺モジュール／チップ外部から割り込み要求を受付け、ＣＰＵ２ａに割り込み要求を行う。
【００５３】
クロックパルス生成器１１は、各モジュールにクロックを供給する。汎用Ｉ／Ｏポート１２は、チップ外部に固定信号を出力したり、チップ内部情報を出力するインタフェースである。
【００５４】
半導体集積回路装置１では、複数のＣＰＵコア２がスヌープ処理をスヌープバスＢ１からスヌープコントローラ３を介して行うことで、キャッシュコヒーレンシを保っている。
【００５５】
キャッシュは、図２に示すように、アドレスアレイとデータアレイに分類される。アドレスアレイは、アドレスを示すアドレスタグ、データが有効か無効かを示す有効ビット（Ｖ）、他のＣＰＵ２ａと同じデータを有することを示す共有ビット（Ｓ）、キャッシュの転送されたデータが転送元と異なることを示すダーティビット（Ｕ）により構成されており、データアレイはアドレスタグに指定された領域のデータが保存される。
【００５６】
複製アドレスアレイ（複製タグ）は、図３に示すように、アドレスタグ、有効ビット（Ｖ）、共有ビット（Ｓ）により構成されている。また、各ＣＰＵ２ａにおけるアドレスアレイと複製アドレスアレイ（複製タグ）との内容は一致する。
【００５７】
ここで、通常のスヌープ処理について説明する。
【００５８】
図４は、ＣＰＵコア２におけるＣＰＵ２ａ、キャッシュコントローラ２ｄ、およびスヌープコントローラ３における通常のスヌープ処理の一例を示す説明図である。
【００５９】
スヌープ処理は、まず、ＣＰＵ２ａからのオペランド要求をキャッシュコントローラ２ｄが受理（ステップＳ１０１）し、キャッシュ探索（ステップＳ１０２）後にキャッシュコヒーレンシ動作が必要になった場合（たとえば、キャッシュミスにより他ＣＰＵ２ａのキャッシュ状況確認が必要になるとき）、スヌープコントローラ３にスヌープバス要求（ステップＳ１０３）を送る。
【００６０】
スヌープバス要求受理後に複製アドレスアレイ（複製タグ）（ステップＳ１０４）を引き、各ＣＰＵ２ａにコヒーレンシを保つためのスヌープ要求を発行するか（ステップＳ１０５）どうかを判定する。
【００６１】
各ＣＰＵ２ａはスヌープ要求を受け、キャッシュ探索を行った後（ステップＳ１０６）、レスポンス（ステップＳ１０７）を返す。バス要求発行元はレスポンスを受け取った（ステップＳ１０８）後に、キャッシュ更新し（ステップＳ１０９）、他のＣＰＵ２ａに最新データがない場合は、バスインタフェースコントローラＢ２経由で実デバイスにアクセス（ステップＳ１１０）を行う。
【００６２】
また、最新データがあった場合は、スヌープコントローラ３から実デバイスにライトバック（ステップＳ１０８）と共にキャッシュを更新する。
【００６３】
次に、本実施の形態における半導体集積回路装置１の動作について説明する。
【００６４】
図５は、ＣＰＵコア２におけるＣＰＵ２ａ、キャッシュコントローラ２ｄ、およびスヌープコントローラ３におけるスヌープ処理において、メモリ割り付けキャッシュアクセス結果と複製アドレスアレイ（複製タグ）の同期を行う際の一例を示す説明図である。
【００６５】
まず、メモリ割り付けキャッシュアクセスは、ＣＰＵ２ａからアクセス要求をキャッシュコントローラが受理した後（ステップＳ２０１）、キャッシュコントローラ２ｄのアドレスデコーダＡＤで検知される。
【００６６】
キャッシュコントローラ２ｄに設けられた制御部２ｄ1 は、アクセス要求（図６によってアクセスすべきウェイ・エントリが決定する）に従ってキャッシュをアクセスする（ステップＳ２０２）。
【００６７】
これによって読み出されたキャッシュステータスと更新データとを比較し、有効ビットが有効から無効に変化した場合は登録内容をクリアしたと判断される。クリアと判断した後、「複製アドレスアレイ（複製タグ）内容をクリア」するスヌープバス要求を発行する（ステップＳ２０３）。
【００６８】
スヌープコントローラ３は、スヌープバス要求受理後に複製アドレスアレイ（複製タグ）を引き（ステップＳ２０４）、スヌープバス要求に従って複製アドレスアレイ（複製タグ）を更新する。更新が完了した後、レスポンスを返し（ステップＳ２０５）、アドレスアレイの更新を行う（ステップＳ２０６）。これにより、キャッシュと複製アドレスアレイ（複製タグ）の登録内容が同期化される。
【００６９】
それにより、本実施の形態１によれば、複製アドレスアレイ（複製タグ）を気にする必要なく、キャッシュの登録内容をクリアすることが可能となり、キャッシュコヒーレンシ制御を良好に行うことができる。
【００７０】
また、本実施の形態１では、メモリ割り付けキャッシュアクセスにおいて、複製アドレスアレイ（複製タグ）を同期する場合について記載したが、たとえば、キャッシュクリアを行うキャッシュ操作命令実行時においても複製アドレスアレイ（複製タグ）をクリアする機能を有するようにしてもよい。
【００７１】
この場合、命令デコード時にキャッシュ操作命令を検知し、キャッシュコントローラにおいて複製アドレスアレイ（複製タグ）をクリアするスヌープバス要求を発行する。キャッシュ構成は命令・キャッシュ分離型でも命令・キャッシュ一体型のいずれでもあってもよい。
【００７２】
（実施の形態２）
図７は、本発明の実施の形態２によるコヒーレンシ有効／無効選択情報が追加されたアドレス変換テーブルの構成例を示す説明図である。
【００７３】
本実施の形態２において、図１の半導体集積回路装置１は、非共有領域に対してコヒーレンシ制御を行わない機能を有している。
【００７４】
この場合、キャッシュコントローラ２ｄのアドレスデコーダＡＤにおいて、コヒーレンシ有効／無効選択情報を参照し、コヒーレンシ有効のときのみスヌープバス要求を発生させる。
【００７５】
コヒーレンシ有効／無効選択情報は、図７に示すように、アドレス変換テーブル（ＴＬＢ：Ｔｒａｎｓｉｔｉｏｎ  Ｌｏｏｋｓｉｄｅ  Ｂｕｆｆｅｒ）ＴＢに格納される。仮想アドレスを物理アドレスに変換する際にアドレス変換テーブルＴＢを引くため、その際に選択情報も同時に参照することができる。
【００７６】
アドレス変換テーブルＴＢは、プロセス番号ＡＳＩＤ（Ａｄｄｒｅｓｓ  Ｓｐａｃｅ  ＩＤｅｎｔｉｆｉｅｒ）、仮想アドレスＶＰＮ（Ｖｉｒｔｕａｌ  Ｐａｇｅ  Ｎｕｍｂｅｒ）、有効ビットＶを索引とすると、物理アドレスＰＰＮ（Ｐｈｙｓｉｃａｌ  Ｐａｇｅ  Ｎｕｍｂｅｒ）、コヒーレンシ無効ＮＣＣ（Ｎｏｔ  Ｃａｃｈｅ  Ｃｏｈｅｒｅｎｃｙ  Ｍｏｄｅ）、複数プロセス共有許可ＳＨ（ＳＨａｒｅ）、キャッシュブル領域指定Ｃ（Ｃａｃｈｅａｂｌｅ）、ダーティ状態Ｄ（Ｄｉｒｔｙ）、コヒーレンシプロトコルＷＴ（Ｗｒｉｔｅ  Ｔｈｒｏｕｇｈ）情報がそれぞれ読み出せることになる。このアドレス変換テーブルＴＢへの情報登録は、ソフトウェアにて行う。
【００７７】
それにより、本実施の形態２では、非共有領域に対するコヒーレンシ制御のペナルティを減少させることができるので、半導体集積回路装置１における性能を向上させることができる。
【００７８】
また、本実施の形態２においては、アドレス変換テーブルＴＢにコヒーレンシ有効／無効選択情報を備えた構成としたが、たとえば、コヒーレンシ有効／無効の選択情報を適当な領域毎に設定できるレジスタに設定するようにしてもよい。ここでは、そのレジスタとして、キャッシュコントローラ２ｄの制御部２ｄ1 に備えられている制御レジスタＣＣＲ（図４参照）を用いる。
【００７９】
この場合には、一定領域（Ｐ０，Ｐ１…）毎にコヒーレンシ制御を行うか否かを、図８に示す制御レジスタＣＣＲ内のビットに指定する。この指定ビットをアドレスデコード時に参照することによって、コヒーレンシ制御を選択することができる。
【００８０】
（実施の形態３）
図９は、本発明の実施の形態３による制御レジスタにおけるコヒーレンシプロトコル混在ビットの説明図である。
【００８１】
本実施の形態３において、図１の半導体集積回路装置１は、コヒーレンシプロトコル混在／非混在を設定するレジスタとプロトコル混在に対応する機構を有している。
【００８２】
この場合、コヒーレンシプロトコル混在／非混在を設定するレジスタは、たとえば、キャッシュコントローラ２ｄの制御部２ｄ1 に備えられている制御レジスタＣＣＲ（図４）を用いる。
【００８３】
キャッシュコントローラ２ｄによるキャッシュ操作中に、スヌープバス要求が必要になった場合、図９に示す制御レジスタＣＣＲのコヒーレンシプロトコル混在ビットＭＣＰを参照することにより、状況に対応したバスコマンドを発行する。
【００８４】
制御レジスタＣＣＲは、メモリ割り付けアクセスにより制御することができる（例：アドレス０ｘｆｆ００００１ｃ番地）。
【００８５】
ライトスルー設定時にキャッシュライトミスを起こしたとき、混在の場合は、他ＣＰＵ２ａにダーティデータが存在することを考慮したスヌープ処理とライト処理を行うコマンドＢＵＳＷＴ＿ＳＮＷ（ＢＵＳ  Ｗｒｉｔｅ  Ｔｈｒｏｕｇｈ  ｗｉｔｈ  ＳＮｏｏｐ  Ｗａｉｔ）を発行し、非混在の場合には、他ＣＰＵ２ａがダーティデータを所持していないことを考慮したスヌープ処理とライト処理を行うコマンドＢＵＳＷＴ（ＢＵＳ  Ｗｒｉｔｅ  Ｔｈｒｏｕｇｈ）を発行する。
【００８６】
また、キャッシュリードミスを起こしたとき、混在の場合は、他ＣＰＵ２ａにダーティデータが存在することを考慮したコマンドＢＵＳＲＤ（ＢＵＳ  Ｒｅａｄ  ｗｉｔｈ  ＳＮｏｏｐ  Ｗａｉｔ）を発行し、他ＣＰＵ２ａのスヌープ要求完了まで待つ（これは、ダーティデータがレスポンスとして返り、キャッシュフィルするからである）。
【００８７】
非混在の場合は、他ＣＰＵ２ａにダーティデータが存在しないことを考慮したコマンドＢＵＳＲＤ（ＢＵＳ  Ｒｅａｄ）を発行し、要求が受け付けられたと同時にオンチップシステムバスＢ２へフィル要求を出す。
【００８８】
これにより、全ＣＰＵライトスルー設定時にキャッシュリードミスを起こし、スヌープバス要求を行ってレスポンスを待つという動作が不要となる。また、レスポンスを待つ場合、レスポンスを待っても、ダーティデータが返って来ないと無駄な待ちになる。
【００８９】
常にプロトコル混在を考慮したプロセッサの場合、このような無駄な待ち時間が多く発生してしまうことになるが、本実施の形態３のように、制御レジスタＣＣＲのコヒーレンシプロトコル混在ビットＭＣＰを参照することにより、無駄な待ちを減少させることができる。
【００９０】
それにより、本実施の形態３によれば、プロセス毎に同一物理領域をライトスルーとコピーバックで使用することが可能となり、ソフトウェアなどの開発効率を向上させることができる。
【００９１】
また、コヒーレンシプロトコル混在／非混在の制御は、たとえば、アドレス変換テーブルＴＢのエントリ毎、あるいは共有領域毎に制御を可変とするようにしてもよい。
【００９２】
（実施の形態４）
図１０は、本発明の実施の形態４によるプロセスマイグレーションを考慮したキャッシュ操作命令の処理例を示す説明図である。
【００９３】
本実施の形態４において、図１の半導体集積回路装置１は、キャッシュ操作命令の実行時においてスヌープ要求を用いることにより、すべてのＣＰＵ２ａに対してキャッシュ操作を可能にする機能を有している。
【００９４】
図１０は、中断されたプロセスが他ＣＰＵ２ａで再開される、いわゆるプロセスマイグレーションを考慮したキャッシュ操作命令（ＯＣＢＷＢ）の処理例を示す説明図である。
【００９５】
キャッシュ操作命令は、ＣＰＵ２ａによる命令デコード検知される。ＣＰＵ２ａからキャッシュ操作命令を実行する旨をキャッシュコントローラ２ｄに通知し、制御部２ｄ1にてキャッシュミス時と同様にスヌープバス要求を発生させる。
【００９６】
そのとき、「所定アドレスを持つＣＰＵ２ａにキャッシュ操作を行うこと」をスヌープバス要求内容とする。スヌープコントローラ３（図１）はスヌープバス要求を受理すると、複製アドレスアレイ（複製タグ）をリードした後、所定エントリを持つＣＰＵ２ａにスヌープ要求を発行する。
【００９７】
それにより、本実施の形態４では、プロセスマイグレーションを考慮したキャッシュ操作を容易に実施することが可能となる。
【００９８】
また、キャッシュ操作命令を１つ用意するだけで、すべてのＣＰＵ２ａのキャッシュ操作が可能となり、プロセスマイグレーションを考慮したキャッシュ操作処理を用意する必要がなくなり、ソフトウェアの開発効率を向上させることができる。
【００９９】
さらに、上記した「所定アドレス」は、所定アドレス指定に範囲を持たせるようにしてもよい（例：０ｘ００００Ｆ？？？？のキャッシュラインを持つエントリを全て操作）。これによって、１命令／１ブロックであった所を１命令で複数ブロックを操作することが可能となり、プログラム容量を削減することができる。
【０１００】
（実施の形態５）
図１１は、本発明の実施の形態５によるメモリ割り付けアクセスを検知する複製アドレスアレイ（複製タグ）の構成例を示す説明図である。
【０１０１】
本実施の形態５において、図１の半導体集積回路装置１は、１つのＣＰＵからすべてのＣＰＵの複製アドレスアレイ（複製タグ）を参照する機能を有している。
【０１０２】
この場合、複製アドレスアレイ（複製タグ）へのアクセスは、スヌープバスＢ１とは別に直接参照可能なインタフェースをバスインタフェースコントローラ２ｅとスヌープコントローラ３との間で持つものとする（キャッシュコントローラ２ｄにその機能を有してもよい）。
【０１０３】
メモリ割り付けアクセスは、キャッシュコントローラ２ｄのアドレスデコーダＡＤで検知され、図１２に示すように、アドレスビット３１−２４で判定することができる。
【０１０４】
ＣＰＵ２ａからのアクセス要求をキャッシュコントローラが受理し（ステップＳ３０１）、複製アドレスアレイ（複製タグ）へのアクセスを検知すると、バスインタフェースコントローラ２ｅ経由でスヌープコントローラ３へアクセス要求を行う（ステップＳ３０２）。
【０１０５】
スヌープコントローラ３は、アドレスデコードにより、すべてのＣＰＵの複製アドレスアレイ（複製タグ）を参照できるアドレスマップか、自ＣＰＵの複製アドレスアレイ（複製タグ）のみ参照できるアドレスマップかを判断し、該複製アドレスアレイ（複製タグ）をアクセスする（ステップＳ３０３）。その後、アクセスしたデータをレスポンスとして返す（ステップＳ３０４）。
【０１０６】
図１２の場合、アドレスビット２３で判定できる。すべてのＣＰＵの複製アドレスアレイ（複製タグ）を参照する場合は、ビット１６−１５で参照先を判定することができる。
【０１０７】
それにより、本実施の形態５によれば、１つのＣＰＵからすべてのＣＰＵの複製アドレスアレイ（複製タグ）を参照することが可能となるので、すべてのＣＰＵのキャッシュ登録状況を見るためにそれらすべてのＣＰＵのプログラム実行を割り込み要求などによって一時停止させる操作を不要とすることができるので、デバッグが容易に行うことができる。
【０１０８】
また、上記では、スヌープコントローラ３が、アドレスデコードにより、すべてのＣＰＵの複製アドレスアレイ（複製タグ）を参照できるアドレスマップか、自ＣＰＵの複製アドレスアレイ（複製タグ）のみ参照できるアドレスマップかを判断していたが、たとえば、複製アドレスアレイ（複製タグ）をアクセスする命令を追加するようにしてもよい。
【０１０９】
さらに、アクセス方法をオンチップシステムバスＢ２経由とし、複製アドレスアレイ（複製タグ）へのアクセスもスヌープバス要求にし、レスポンスにリードデータを返すようにしてもよい。
【０１１０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【０１１１】
本発明は、複数の中央処理装置を備えたＳＭＰ構造の半導体集積回路装置によるコヒーレンシ制御に有効な技術に関する。
【図面の簡単な説明】
【０１１２】
【図１】本発明の実施の形態１による半導体集積回路装置のブロック図である。
【図２】図１の半導体集積回路装置で用いられるオペランドキャッシュの構成例を示す説明図である。
【図３】図１の半導体集積回路装置で用いられる複製アドレスアレイ（複製タグ）の構成例を示す説明図である。
【図４】図１の半導体集積回路装置による通常のスヌープ処理の一例を示す説明図である。
【図５】図１の半導体集積回路装置によるスヌープ処理において、メモリ割り付けキャッシュアクセス結果と複製アドレスアレイ（複製タグ）の同期を行う際の一例を示す説明図である。
【図６】図１の半導体集積回路装置に用いられるオペランドキャッシュ／アドレスアレイの構成を示す説明図である。
【図７】本発明の実施の形態２によるコヒーレンシ有効／無効選択情報が追加されたアドレス変換テーブルの構成例を示す説明図である。
【図８】本発明の他の実施の形態によるコヒーレンシ制御を指定する制御レジスタにおける指定ビットの説明図である。
【図９】本発明の実施の形態３による制御レジスタにおけるコヒーレンシプロトコル混在ビットの説明図である。
【図１０】本発明の実施の形態４によるプロセスマイグレーションを考慮したキャッシュ操作命令の処理例を示す説明図である。
【図１１】図１の半導体集積回路装置で用いられるメモリ割り付け複製アドレスアレイ（複製タグ）アクセスの構成例を示す説明図である。
【図１２】本発明の実施の形態５によるメモリ割り付けアクセスを検知する複製アドレスアレイ（複製タグ）の構成を示す説明図である。
【符号の説明】
【０１１３】
１  半導体集積回路装置
２  ＣＰＵコア
２ａ  ＣＰＵ
２ｂ  命令キャッシュ
２ｃ  データキャッシュ
２ｄ  キャッシュコントローラ
２ｅ  バスインタフェースコントローラ
３  スヌープコントローラ
４0〜４n  ハードウェアＩＰ
５  ＤＭＡコントローラ
６  チップ外部高速転送インタフェース
７  外部メモリインタフェース
８  周辺モジュールバスコントローラ
９  タイマ
１０  割り込みコントローラ
１１  クロックパルス生成器
１２  汎用Ｉ／Ｏポート
Ｂ１  スヌープバス
Ｂ２  オンチップシステムバス
Ｂ３  周辺モジュールバス
ＣＣＲ  制御レジスタ
ＡＤ  アドレスデコーダ
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2008123333.tif 000001