(57)【要約】      （修正有）【課題】スピンロック制御によるループ処理において永久ループを回避する。【解決手段】スピンロック制御部３０４は、第１の演算部２１０が実行する排他制御命令に関するループ処理が１回以上発生したことに応じて、排他制御命令の処理対象となっている第１のキャッシュメモリ３０２のデータに対応する第２のキャッシュメモリ３３２のデータの消去をスヌープコントローラ２３に指示する。スヌープ処理部３０３は、排他制御命令に関する処理が完了するまでの間、第１のキャッシュメモリ３０２に対するスヌープ要求を無効にして第１のキャッシュメモリ３０２のキャッシュ状態を第１の演算部２１０が独占する状態とする。【選択図】図２
2013246496.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの実行結果に応じてリソースに対するアクセス要求を行う第１、第２の演算部と、
前記第１の演算部が利用する第１のキャッシュメモリと、
前記第２の演算部が利用する第２のキャッシュメモリと、
前記第１のキャッシュメモリと、前記第２のキャッシュメモリとの間のコヒーレンシを管理するスヌープコントローラと、
前記スヌープコントローラから前記第１のキャッシュメモリに与えられるスヌープ要求の有効と無効とを制御するスピンロック制御部と、を有し、
前記スピンロック制御部は、
前記第１の演算部が実行する排他制御命令に関するループ処理が１回以上発生したことに応じて、前記排他制御命令の処理対象となっている前記第１のキャッシュメモリのデータに対応する前記第２のキャッシュメモリのデータの消去を前記スヌープコントローラに指示し、
前記排他制御命令に関する処理が完了するまでの間、前記第１のキャッシュメモリに対する前記スヌープ要求を無効にして前記第１のキャッシュメモリのキャッシュ状態を前記第１の演算部が独占する状態とする半導体装置。
【請求項２】
前記スヌープ要求に応じて、前記第１のキャッシュメモリの該当データの状態を前記第２のキャッシュメモリの状態遷移に応じて遷移させるスヌープ処理部を有する請求項１に記載の半導体装置。
【請求項３】
前記スピンロック制御部は、前記スヌープ処理部毎に設けられる請求項２記載の半導体装置。
【請求項４】
前記スピンロック制御部は、前記スヌープコントローラ内に設けられ、前記第１の演算部が実行する前記排他制御命令に関するループ処理が１回以上発生したことに応じて、前記第２のキャッシュメモリの状態の遷移に応じて生じる前記第１のキャッシュメモリに対するスヌープ要求を無効化する請求項１に記載の半導体装置。
【請求項５】
前記スピンロック制御部は、前記第１の演算部から割り込み処理が発生したことの通知を受けた場合、前記排他制御命令に関するループ処理の発生回数に変わらず前記スヌープ要求の無効状態を解除する請求項１に記載の半導体装置。
【請求項６】
前記スピンロック制御部は、前記スヌープ要求を無効状態とする期間が予め設定された所定の期間に達した場合、前記スヌープ要求を無効状態から有効状態に切り替える請求項１に記載の半導体装置。
【請求項７】
前記スピンロック制御部は、
前記排他制御命令に関するループ処理の発生回数が予め定めた所定の回数に達したことに応じて、前記排他制御命令の処理対象となっている前記第１のキャッシュメモリのデータに対応する前記第２のキャッシュメモリのデータの消去を前記スヌープコントローラに指示し、
前記排他制御命令に関する処理が完了するまでの間、前記第１のキャッシュメモリに対する前記スヌープ要求を無効化する請求項１に記載の半導体装置。
【請求項８】
前記第１のキャッシュメモリに対応して設けられる第１のキャッシュ制御部と、
前記第２のキャッシュメモリに対応して設けられる第２のキャッシュ制御部と、を有し、
前記第１、第２のキャッシュ制御部は、
前記第１、第２の演算部から要求されたデータが前記第１、第２のキャッシュメモリに存在している場合には前記第１、第２のキャッシュメモリから前記要求されたデータを読み出し、
前記要求されたデータが前記第１、第２のキャッシュメモリに存在していない場合には前記第１、第２のキャッシュメモリとは別に設けられる前記リソースから前記要求されたデータを読み出すと共に前記第１、第２のキャッシュメモリに前記リソースから読み出したデータを書き込む請求項１に記載の半導体装置。
【請求項９】
前記スピンロック制御部は、前記排他制御処理中の書き込み命令を実行した後に前記スヌープ要求の無効化状態を解除する請求項１に記載の半導体装置。
【請求項１０】
前記スピンロック制御部は、前記排他制御処理が成功した場合には前記ループ処理の発生回数を示すスヌープカウント値を初期値にリセットする請求項１に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、複数の演算器に共有される共有メモリと、前記複数の演算器毎に設けられるキャッシュメモリと、キャッシュメモリ間のコヒーレンシを管理するスヌープコントローラと、を有する半導体装置に関する。
【背景技術】
【０００２】
半導体装置では、１つのバスに複数のバスマスタを接続するバスシステムが多く提案されている。このようなバスシステムでは、１つのバスマスタがバスに接続される他の装置（バスマスタ及びバススレーブを含む）にリード・ライトアクセスを行う場合に、他のバスマスタのバスアクセスを挟まずに行うアトミックアクセスにより処理を行うことがある。バスシステムではこのようなアトミックアクセスを行う場合にシステム全体の転送性能を損なうことを防止するためにリードアクセスとライトアクセスを分割した排他制御命令が実装されることがある。また、排他制御命令による処理が成功したかを判断する機構をバススレーブに実装する。
【０００３】
このようなバスシステムの一例にマルチコアプロセッサにおけるキャッシュのコヒーレンシ管理システムがある。マルチコアプロセッサは、複数の演算器（例えば、ＣＰＵ（Central Processing Unit）コア）を有する。そして、複数のＣＰＵコアは、それぞれキャッシュメモリを有する。キャッシュメモリには、バスを介して接続される記憶装置（例えば、共有メモリ）から読み出されたデータが格納される。このとき、キャッシュメモリを有するマルチコアプロセッサでは、共有メモリ上のデータの一貫性を保持するために、キャッシュメモリ間のコヒーレンシ管理を行う。このコヒーレンシ管理を行うマルチコアプロセッサでは、キャッシュメモリを制御するキャッシュ制御部と、複数のキャッシュメモリ間の状態に基づき複数のキャッシュメモリのそれぞれにスヌープ要求を発行するスヌープコントローラと、をスヌープバスにより接続する。そして、それぞれのＣＰＵコアに設けられるキャッシュ制御部をバスマスタとしてバスシステムを構成する。
【０００４】
上記のようなコヒーレンシ管理を行うマルチコアプロセッサでは、排他制御命令によってアトミックアクセスを行うが、排他制御命令に基づく排他制御処理が失敗することがある。そのため、排他制御処理を再度実行できるようにループ処理を行う。このループ処理は、スピンロック制御と呼ばれる。しかし、スピンロック制御を行うとループ処理から抜け出せなくなる永久ループの状態に陥ることがある。
【０００５】
そこで、特許文献１では、ソフトウェア制御にてスピンロック処理を終了させることで処理が永久ループに陥ることを防止する技術が開示されている。また、特許文献２では、一のＣＰＵによる所定のデータの獲得が失敗した場合に、他のＣＰＵが所定のデータの占有状態の解放を行うまで一のＣＰＵをサスペンド状態とすることが開示されている。これにより、特許文献２では、スピンロック制御基づくループ処理を削減して消費電力を削減する。また、特許文献３では、スピンロック制御によるループ処理の回数が所定の回数に達した場合に、ループ処理を停止してＣＰＵを通常動作に復帰させる技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第６，７７９，０９０号明細書
【特許文献２】特開２００５−３１６８５４号公報
【特許文献３】特開２００５−３２７０８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記先行技術では、スピンロック制御によるループ処理において永久ループを回避するためには、ソフトウェアによって対策を行う。そのため、ハードウェア構成を変更した場合にはソフトウェアの改変が必要となる問題が生じる。その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態によれば、半導体装置は、排他制御命令に関するループ処理が１回以上発生したことに応じて、排他制御命令に関する処理が完了するまでの間、第１のキャッシュメモリに対するスヌープ要求を無効化にして第１のキャッシュメモリのキャッシュ状態を第１の演算部が独占する状態とする。
【発明の効果】
【０００９】
一実施の形態によれば、ソフトウェアの改変を行うことなく、スピンロック制御によるループ処理において永久ループを回避することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１にかかる半導体装置のブロック図である。
【図２】実施の形態１にかかるＣＰＵブロックのブロック図である。
【図３】実施の形態１にかかる半導体装置の動作を示すフローチャートである。
【図４】実施の形態１にかかる半導体装置において実行される排他制御命令の一例である。
【図５】一般的な排他制御命令におけるキャッシュの状態遷移を示す表である。
【図６】実施の形態１にかかる半導体装置で排他制御命令を実行した場合のキャッシュの状態遷移を示す表である。
【図７】実施の形態２にかかるＣＰＵブロックのブロック図である。
【図８】実施の形態３にかかるＣＰＵブロックのブロック図である。
【図９】実施の形態３にかかる半導体装置の動作を示すフローチャートである。
【図１０】実施の形態４にかかるＣＰＵブロックのブロック図である。
【図１１】実施の形態４にかかる半導体装置の動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
実施の形態１
以下、図面を参照して実施の形態について説明する。まず、実施の形態１にかかる半導体装置ＩＣのブロック図を図１に示す。図１に示すブロック図では、実施の形態において特徴的な部分を有する演算部１と、演算部１により利用される周辺回路を示した。図１では、周辺回路として、ＳＲＡＭ（Static Random Access Memory）１０、不揮発性メモリ１１、メモリコントローラ１２、ＤＭＡＣ（Direct Memory Access Controller）１３、ＳＰＩ（Serial Peripheral Interface）１４を示した。また、図１では、半導体装置ＩＣがメモリコントローラ１２を用いてアクセスする外部メモリ（例えば、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory））を示した。図１に示すように、演算部１、ＳＲＡＭ１０、不揮発性メモリ１１、メモリコントローラ１２、ＤＭＡＣ１３及びＳＰＩ１４は、システムバスＳＢ１を介して互いに接続される。
【００１２】
また、演算部１は、ＣＰＵ２１０〜２１３、キャッシュコントローラ２２０〜２２３、スヌープコントローラ２３、バスインタフェース２４０〜２４３、割り込みコントローラ２５を有する。また、キャッシュコントローラ２２０〜２２３及びスヌープコントローラ２３は、スヌープバスＳＢ２により互いに接続される。なお、演算部１の同一構成の複数のブロックのうち２つのブロックにより実施の形態にかかる半導体装置ＩＣの動作を説明することができるため、図１及び以降で説明する図面では、複数設けられるブロックについては、複数のブロックのうちの２つのみを示して、その他を省略する。具体的には、図１では、同一の複数のブロックについては、ＣＰＵ２１０、２１３、キャッシュコントローラ２２０、２２３、バスインタフェース２４０、２４３を示した。ここで、演算部１は、実施の形態において特徴的な部分の１つであるため、この演算部１について、より詳細なブロック図を図２に示す。
【００１３】
図２に示すように、演算部１は、第１の演算部（例えば、ＣＰＵ２１０）、第２の演算部（例えば、ＣＰＵ２１３）、第１のキャッシュコントローラ２２０、第２のキャッシュコントローラ２２３、スヌープコントローラ２３、バスインタフェース２４０、２４３を少なくとも有する。また、図２では、割り込みコントローラ２５を示した。割り込みコントローラ２５は、周辺回路及び外部に接続される装置において生成された割り込み要求に応じてＣＰＵ２１０〜２１３に割り込み処理を指示する。
【００１４】
ＣＰＵ２１０、２１３は、プログラムの実行結果に応じてリソース（例えば、周辺装置、オペランドキャッシュ及び外部に設けられる装置）に対するアクセス要求を行う。より具体的には、ＣＰＵ２１０、２１３は、リソースへのアクセスを行う場合、まず、オペランドキャッシュに対してアクセスを行い、当該オペランドキャッシュに希望するデータがない場合にスヌープコントローラ２３を介して周辺装置或いは外部に設けられる装置にアクセス要求を行う。なお、以下の説明では、データには、ＣＰＵにおける演算の対象となるデータと、演算の種類或いは動作の種類を示す命令コードと、が含まれるものとする。
【００１５】
キャッシュコントローラ２２０は、ＣＰＵ２１０に対応して設けられるものである。キャッシュコントローラ２２０は、第１のキャッシュ制御部（以下、キャッシュ制御部３０１と称す）、第１のキャッシュメモリ（以下、オペランドキャッシュ３０２と称す）、第１のスヌープ処理部（以下、スヌープ処理部３０３と称す）、第１のスピンロック制御部（以下、スピンロック制御部３０４と称す）と、を有する。また、キャッシュコントローラ２２３は、ＣＰＵ２１３に対応して設けられるものである。キャッシュコントローラ２２３は、第２のキャッシュ制御部（以下、キャッシュ制御部３３１と称す）、第２のキャッシュメモリ（以下、オペランドキャッシュ３３２と称す）、第２のスヌープ処理部（以下、スヌープ処理部３３３と称す）、第２のスピンロック制御部（以下、スピンロック制御部３３４）を有する。ここで、実施の形態１では、スピンロック制御部は、スヌープ処理部毎に設けられる。ここで、キャッシュコントローラ２２０、２２３は、同じ構成を有するため、ここではキャッシュコントローラ２２０を例にキャッシュコントローラについて説明する。
【００１６】
キャッシュ制御部３０１は、オペランドキャッシュ３０２にＣＰＵ２１０が要求したデータが存在するかの探索を行う。そして、オペランドキャッシュ３０２に要求されたデータが存在する場合には、キャッシュ制御部３０１は、オペランドキャッシュ３０２から要求されたデータをＣＰＵ２１０に返信する。一方、オペランドキャッシュ３０２に要求されたデータが存在しない場合には、キャッシュ制御部３０１は、周辺装置等のリソースから要求されたデータを取得して、取得したデータをＣＰＵ２１０に返信すると共にオペランドキャッシュ３０２に書き込む。また、キャッシュ制御部３０１は、オペランドキャッシュ３０２上のデータが書き換えられた場合には、書き換えられたデータに対応するリソース上のデータを書き換える。
【００１７】
オペランドキャッシュ３０２は、第１の演算部（例えば、ＣＰＵ２１０）が利用する一時記憶装置である。オペランドキャッシュ３０２は、ＣＰＵ２１０がアクセス要求とともに出力するアクセスアドレスの一部をタグとして有する。オペランドキャッシュ３０２は、アクセスアドレスの一部をインデックスアドレスとしてタグが参照される。また、オペランドキャッシュ３０２は、タグとデータとを対応づけて記憶する。そして、オペランドキャッシュ３０２は、インデックスアドレスに基づき参照されたタグと、キャッシュ制御部３０１が受信したアクセスアドレスのうち当該タグとして利用される部分の値と、が一致した場合、タグに対応づけられたデータをキャッシュ制御部３０１に出力する。一方、オペランドキャッシュ３０２は、インデックスアドレスに基づき参照されたタグと、キャッシュ制御部３０１が受信したアクセスアドレスのうち当該タグとして利用される部分の値と、が不一致であった場合、ミスヒットを示す応答をキャッシュ制御部３０１に出力する。
【００１８】
また、オペランドキャッシュ３０２は、格納しているデータの状態を示すフラグ値を有する。このフラグ値は、タグと対応づけて記憶される。キャッシュメモリの一形態によれば、フラグ値には３つの値が含まれる。より具体的には、データの有効と無効とを示すバリッドビット、データが他のＣＰＵと共有されるものであるか排他的に利用できるものであるかを示す共有ビット、キャッシュ上のデータが転送元のデータと異なることを示すダーティービットがフラグ値として設定される。このフラグ値は、キャッシュ制御部３０１及びスヌープ処理部３０３により書き換え及び参照される。
【００１９】
スヌープ処理部３０３は、ＣＰＵ２１０がオペランドキャッシュ３０２のキャッシュの状態の更新要求を発行した場合に、スヌープバスＳＢ２にスヌープ要求を発行する。そして、スヌープ処理部３０３は、スヌープバスＳＢ２からスヌープ要求に対応するスヌープレスポンスがあったことに応じてまた、オペランドキャッシュ３０２のキャッシュの状態の更新を更新する。
【００２０】
また、スヌープ処理部３０３は、スヌープバスＳＢ２を介して他のＣＰＵ（例えば、ＣＰＵ２１３）が発行したスヌープ要求を受信したことに応じて、スヌープ処理部３０３の該当データの状態をオペランドキャッシュ３３２の状態遷移に応じて遷移させる。そして、スヌープ処理部３０３は、オペランドキャッシュ３０２の状態を更新した後にスヌープバスＳＢ２に受信したスヌープ要求に対応するスヌープレスポンスを出力する。
【００２１】
また、スヌープ処理部３０３は、スピンロック制御部３０４からの指示に基づき、他のＣＰＵ（例えば、ＣＰＵ２１３）から発行されるスヌープ要求を一時的に無効化（例えば、マスク）する。
【００２２】
スピンロック制御部３０４は、スヌープコントローラからオペランドキャッシュ３０２に与えられるスヌープ要求の有効と無効とを制御する。そして、スピンロック制御部３０４は、ＣＰＵ２１０が実行する排他制御命令に関するループ処理が１回以上発生したことに応じて、排他制御命令の処理対象となっているオペランドキャッシュ３０２のデータに対応するオペランドキャッシュ３３２のデータの消去をスヌープコントローラ２３に指示する。また、スヌープ処理部３０３は、排他制御命令に関する処理が完了するまでの間、オペランドキャッシュ３０２に対するスヌープ要求を無効にしてオペランドキャッシュ３０２のキャッシュ状態をＣＰＵ２１０が独占する状態とする。
【００２３】
ここで、キャッシュを独占する状態とは、一のＣＰＵが対応するオペランドキャッシュ上のキャッシュにアクセスしている期間は、当該キャッシュの複製元のデータに他のＣＰＵがアクセスできない状態をいうものとする。つまり、キャッシュを独占する状態とは、一のＣＰＵのみが処理対象のキャッシュの複製元のデータの所有権を有している状態を言う。
【００２４】
より具体的には、スピンロック制御部３０４は、ＳＮカウンタ３０５を有する。そして、スピンロック制御部３０４は、排他制御命令のループ処理が発生する回数をＳＮカウンタ３０５によりカウントする。ＳＮカウンタ３０５がカウントする値を、以下ではスヌープカウント値と称す。スピンロック制御部３０４は、ＳＮカウンタ３０５によって生成したスヌープカウント値が予め定めた所定の回数に達したことに応じて、オペランドキャッシュ３３２のデータの消去とスヌープ要求の無効化をスヌープ処理部３０３に指示する。また、スピンロック制御部３０４は、排他制御処理中の書き込み命令を実行した後にスヌープ要求の無効化状態を解除する。なお、スピンロック制御部３０４は、排他制御命令に関する処理が正常に終了したことに応じてスヌープカウント値を初期値にリセットする。
【００２５】
また、スピンロック制御部３０４は、オペランドキャッシュ３３２のデータの消去処理と、バスを介して入力されるスヌープ要求の無効化処理を行うが、実施の形態１では、スピンロック制御部３０４は、スヌープ処理部３０３に各処理を指示することで、上記処理を実現する。より具体的には、スピンロック制御部３０４は、スヌープカウント値が予め定めた所定の回数に達したことに応じて、オペランドキャッシュ３３２のデータの消去処理とスヌープ要求の無効化処理とをスヌープ処理部３０３に指示する。そして、スヌープ処理部３０３は、データの消去処理の指示に対応して、他のＣＰＵに利用されるキャッシュメモリ上の該当するデータに対応づけられるバリッドビットを無効状態（例えば、０）とするスヌープ要求をスヌープバスＳＢ２に出力する。また、スヌープ処理部３０３は、スヌープ要求の無効化処理の指示に応じて、スヌープバスＳＢ２から入力されるスヌープ要求をマスクする。そして、スピンロック制御部３０４は、排他制御処理中の書き込み命令を実行した後にスヌープ要求の無効化状態（例えば、マスク）の解除をスヌープ処理部３０３に指示する。
【００２６】
スヌープコントローラ２３は、各ＣＰＵに対応して設けられているキャッシュメモリの間のコヒーレンシを管理する。図１で示す例では、スヌープコントローラ２３は、第１のキャッシュメモリ（例えば、オペランドキャッシュ３０２）と、第２のキャッシュメモリ（例えば、オペランドキャッシュ３３２）との間のコヒーレンシを管理する。
【００２７】
より具体的には、スヌープコントローラ２３は、各ＣＰＵに対応した複製タグ２３０〜２３３を有する。つまり、複製タグ２３０〜２３３は、オペランドキャッシュ３０２〜３３２に対応するものである。複製タグ２３０〜２３３には、オペランドキャッシュ３０２〜３３２上に記憶されているキャッシュのタグ及び当該タグに対応づけられるフラグ値の一部が格納される。スヌープコントローラ２３は、この複製タグ２３０〜２３３を参照することで、同一の複製元のデータがオペランドキャッシュ３０２〜３３２のいずれに記憶されているか、及び、記憶されたデータの状態（例えば、共有状態、排他状態及びバリッド状態等）を知ることができる。
【００２８】
複製タグ２３０〜２３３は、例えば、タグとフラグ値を含む。このタグはＣＰＵがアクセス要求に付随して出力するアクセスアドレスの一部である。また、フラグ値は、複製タグの一形態では２つの値が含まれる。より具体的には、データの有効と無効とを示すバリッドビット、データが他のＣＰＵと共有されるものであるか排他的に利用できるものであるかを示す共有ビットがフラグ値として設定される。このフラグ値は、スヌープコントローラ３０３により書き換え及び参照される。
【００２９】
また、スヌープコントローラ２３は、一のＣＰＵに対応するキャッシュコントローラからスヌープ要求を受けた場合、複製タグに対してスヌープ要求に対応したデータのタグに一致するタグがあるかを探索する。そして、スヌープコントローラ２３は、受信したスヌープ要求により示されるタグに一致するタグを有する複製タグが発見された場合、発見された複製タグに対応するＣＰＵに接続されるキャッシュコントローラにスヌープ要求を発行する。また、スヌープコントローラ３０３は、受信したスヌープ要求に基づき複製タグのフラグ値を更新する。
【００３０】
バスインタフェース２４０、２４３は、キャッシュコントローラ２２０、２２３とシステムバスＳＢ１との間のデータの入出力処理及びバスアクセス制御を行うインタフェース回路である。
【００３１】
続いて、実施の形態１にかかる半導体装置の動作について説明する。図３に実施の形態１にかかる半導体装置において排他制御命令を実行した場合の動作を示すフローチャートを示す。ここで、排他制御命令は、排他ロード処理と、排他演算処理と、排他ストア処理と、の３つの処理を少なくとも含む。ここで、排他制御命令における演算処理は、複数の演算命令により構成されていても良く、また、数ステップの処理時間を要するものであっても良い。また、図３に示す例は、複数のＣＰＵのうちの１つのＣＰＵにおいて排他演算命令が実行されたときの処理を示すものである。従って、以下ではＣＰＵ２１０において排他演算命令が実行された場合を動作の一例として説明する。
【００３２】
図３に示すように、ＣＰＵ２１０が排他演算命令を実行した場合、まず、排他ロード処理を実行する（ステップＳ１０）。このステップＳ１０では、オペランドキャッシュ３０２上にＣＰＵ２１０が要求したデータがあれば、ＣＰＵ２１０にオペランドキャッシュ３０２上のデータが読み出される。一方、オペランドキャッシュ３０２上にＣＰＵ２１０が要求したデータがなければ、キャッシュ制御部３０１は、システムバスＳＢ１を介して周辺機器等から要求されたデータを取得し、取得したデータのＣＰＵ２１０への送信処理とオペランドキャッシュ３０２への格納処理とを行う。
【００３３】
次いで、ＣＰＵ２１０は、スピンロック制御部３０４にスヌープカウント値ＳＮＣと予め定められたループ回数の制限値（例えば、規定値）とを比較させる（ステップＳ１１）。このステップＳ１１において、スヌープカウント値ＳＮＣが規定値よりも小さいと判断された場合（ステップＳ１１のＮＯの枝）、ＣＰＵ２１０は、排他ロード処理において取得したデータを用いて排他演算処理を実行する（ステップＳ１４）。その後、ＣＰＵ２１０は、排他ストア処理を実行して、排他演算処理の結果をオペランドキャッシュ３０２に書き戻す（ステップＳ１５）。
【００３４】
次いで、ＣＰＵ２１０は、スピンロック制御部３０４にスヌープカウント値ＳＮＣと規定値とを比較させる（ステップＳ１６）。このステップＳ１６において、スヌープカウント値ＳＮＣが規定値よりも小さいと判断された場合（ステップＳ１６のＮＯの枝）、ＣＰＵ２１０は、排他制御命令に基づく処理が成功したか否かを判断する（ステップＳ１８）。具体的な処理の一例では、ステップＳ１５の処理が行われるタイミングで該当するキャッシュのバリッドビットがキャッシュが無効な状態（例えば、０）を示している場合、当該キャッシュに書き込まれたデータはシステム上無効と判断され排他制御処理が失敗となる。一方、ステップＳ１５の処理が行われるタイミングで該当するキャッシュのバリッドビットが有効な状態（例えば、１）を示している場合、当該キャッシュに書き込まれたデータはシステム上有効と判断され排他制御処理は成功と判断される。そして、ステップＳ１６において、排他制御処理が成功していると判断された場合（ステップＳ１８のＹＥＳの枝）、ＣＰＵ２１０は、スピンロック制御部３０４にスヌープカウント値ＳＮＣのリセットを指示して排他制御処理を終了する。
【００３５】
一方、ステップＳ１６において、排他制御処理が失敗していると判断された場合（ステップＳ１８のＮＯの枝）、ＣＰＵ２１０は、スピンロック制御部３０４にスヌープカウント値ＳＮＣを１つ増加させる指示を行う。また、スピンロック制御部３０４は、排他制御命令の再実行をＣＰＵ２１０に指示する。これにより、ＣＰＵ２１０は、再度ステップＳ１０からステップＳ１８までの処理を実行する。このように、排他制御処理の失敗が連続して続くと、スヌープカウント値ＳＮＣはループ処理を繰り返す毎に増加する。そして、スヌープカウント値ＳＮＣが規定値に達すると、スピンロック制御部３０４は、通常のループ処理とは異なる処理を行う。
【００３６】
まず、半導体装置ＩＣでは、スヌープカウント値ＳＮＣと規定値との比較をステップＳ１１において行う。そして、スヌープカウント値ＳＮＣが規定値よりも大きいと判断された場合（ステップＳ１１のＹＥＳの枝）、スピンロック制御部３０４は、スヌープ処理部３０３にスヌープ要求の発行を指示することで、スヌープコントローラ２３に他のＣＰＵに対応するオペランドキャッシュの内容の消去を指示する（ステップＳ１２）。このとき発行されるスヌープ要求は、他のＣＰＵ内のキャッシュのうち処理対象キャッシュのタグと同一のタグを有するキャッシュの内容を消去するパージ要求である。これにより、スヌープコントローラ２３は、処理対象キャッシュのタグと同一のタグを有する複製タグを探索する。そして、スヌープコントローラ２３は、処理対象キャッシュのタグと同一のタグを有する複製タグに対応づけられるキャッシュコントローラに対してパージ要求を発行する。また、スヌープコントローラ２３は、発見された複製タグ上の処理対象キャッシュのタグに対応するバリッドビットを無効状態とする。さらに、スヌープコントローラ２３からパージ要求を受けたキャッシュコントローラ内のスヌープ処理部は、処理対象キャッシュのタグと同一のタグを有するキャッシュ上のバリッドビットをキャッシュの無効状態を示す値（例えば、０）に更新する。
【００３７】
続いて、スピンロック制御部３０４は、スヌープ処理部３０３にスヌープ要求をマスクするように指示を行う（ステップＳ１３）。その後、ＣＰＵ２１０は、排他ロード処理において取得したデータを用いて排他演算処理を実行する（ステップＳ１４）。その後、ＣＰＵ２１０は、排他ストア処理を実行して、排他演算処理の結果をオペランドキャッシュ３０２に書き戻す（ステップＳ１５）。
【００３８】
続いて、スヌープカウント値ＳＮＣが規定値よりも大きいと判断される場合（ステップＳ１６のＹＥＳの枝）、スピンロック制御部３０４は、スヌープ処理部３０３にスヌープ要求のマスクの解除を指示する（ステップＳ１７）。これにより、スヌープ処理部３０３は、スヌープコントローラ２３から発行されるスヌープ要求を受け付けられる状態となる。
【００３９】
ステップＳ１２、Ｓ１３、Ｓ１７の処理を実行した場合、ステップＳ１２、Ｓ１３の処理によって、処理対象キャッシュが、ＣＰＵ２１０により独占される状態、かつ、他のＣＰＵにおけるキャッシュアクセスによる影響を受けない状態となる。そのため、ステップＳ１２、Ｓ１３、Ｓ１７の処理が行われた場合には、確実に排他制御処理は成功する（ステップＳ１８のＹＥＳの枝）。ＣＰＵ２１０は、排他制御処理が成功すると、スピンロック制御部３０４にスヌープカウント値ＳＮＣのリセットを指示して排他制御処理を終了する。
【００４０】
続いて、排他制御命令の一例を挙げて半導体装置ＩＣの排他制御処理について説明する。図４に排他制御命令を構成するプログラムの一例を示す。図４に示すように、排他制御命令は、排他ロード命令ＭＯＶＬＩと排他ストア命令ＭＯＶＣＯと、その間に挟まれた演算命令とにより構成される。なお、以下では、排他ロード命令ＭＯＶＬＩと排他ストア命令ＭＯＶＣＯとに挟まれた演算命令を排他演算命令と称す。
【００４１】
排他ロード命令ＭＯＶＬＩは、共通リソースのアドレスＲ１にあるデータをキャッシュ上のアドレスＲ０に読み込む命令である。このとき、キャッシュ上のアドレスＲ０にすでに共通リソースのアドレスＲ１のデータがあれば、オペランドキャッシュ３０２は、キャッシュヒットの信号をキャッシュ制御部３０１に返信する。
【００４２】
図４に示す例では、排他演算命令として加算命令ＡＤＤを示した。この加算命令ＡＤＤは、共通リソースのアドレスＲ２の値とアドレスＲ１の値とを加算してアドレスＲ１に書き戻すものである。
【００４３】
排他ストア命令ＭＯＶＣＯは、キャッシュ上のアドレスＲ０にあるデータを共通リソースのアドレスＲ１に書き戻す命令である。このとき、キャッシュ上のアドレスＲ０に対応するキャッシュの状態が無効な状態であった場合、キャッシュ制御部３０１は、共通リソースにアドレスＲ０の書き戻しは行わずに、処理が失敗したことをＣＰＵ２１０に通知する。
【００４４】
図４に示す例では、排他ストア命令ＭＯＶＣＯの後に分岐命令ＢＦが配置される。この分岐命令ＢＦは、排他ストア命令ＭＯＶＣＯによる処理が失敗した場合には、再実行ルーチンＲＥＴＲＹに処理を分岐させる命令である。また、分岐命令ＢＦは、排他ストア命令ＭＯＶＣＯによる処理が成功した場合には、処理を終了する命令である。
【００４５】
続いて、キャッシュの状態に着目して実施の形態１にかかる半導体装置ＩＣの動作を説明する。図５に、実施の形態１にかかる半導体装置ＩＣのスピンロック制御部３０４による他のキャッシュに対するパージ要求及びスヌープ要求のマスク処理を行うことなく排他演算命令を実行した場合のオペランドキャッシュ３０２の状態遷移を示す表を示す。つまり、図５に示す状態遷移は、図３のステップＳ１１及びステップＳ１６のＮＯの枝に進んだ場合におけるキャッシュの状態遷移を示すものである。
【００４６】
まず、実施の形態１にかかる半導体装置ＩＣでは、キャッシュは４つの状態をとるものとする。例えば、キャッシュは、共有（Ｓｈａｒｅｄ）状態、排他（Ｅｘｃｌｕｓｉｖｅ）状態、更新（Ｍｏｄｉｆｉｅｄ）状態、無効（Ｉｎｖａｌｉｄ）状態をとる。共有状態は、共有ビットが１の状態であり、他のＣＰＵにも同じ複製元のデータが複製元と同じ状態で存在している状態である。排他状態は、共有ビットが０の状態であり、自オペランドキャッシュ内の対象キャッシュと同じ複製元のデータが他のオペランドキャッシュ内にない状態である。更新状態は、ダーティービットが１の状態であり、キャッシュのデータが複製元のデータとは異なる値に更新されたことを示す状態である。無効状態は、バリッドビットが０の状態であり、自オペランドキャッシュ内のキャッシュは複製元もデータと同じものであるが、他のオペランドキャッシュ内のキャッシュのデータが複製元のデータとは異なる値に更新されたことを示すものである。無効状態のデータの値をさらに更新してしまうと、複製元のデータの一貫性が保持できなくなるため、無効状態のデータに対する更新処理は禁止される。
【００４７】
図５に示すように、半導体装置ＩＣでは、排他ロード命令ＭＯＶＬＩを実行する時点でキャッシュの状態が共有状態、更新状態、排他状態のいずれかの状態であれば、排他ロード命令ＭＯＶＬＩによるロード処理は完了する。そして、排他演算命令ＡＤＤの実行中のキャッシュの状態が共有状態である場合には、他のＣＰＵが他のオペランドキャッシュに対して更新処理を行ったことに応じて自オペランドキャッシュに対してパージ要求が通知されることがある。この場合、自オペランドキャッシュのキャッシュは、排他演算命令実行中に無効状態に遷移する。このような場合は、排他ストア命令ＭＯＶＣＯを実行しても処理対象キャッシュの更新が禁止されるため、排他制御処理が失敗する。
【００４８】
一方、排他演算命令ＡＤＤの実行中にキャッシュが共有状態、更新状態又は排他状態を維持している場合、排他ストア命令ＭＯＶＣＯを実行することによりキャッシュの状態を更新状態とし、排他制御処理を成功させることができる。
【００４９】
また、実施の形態１にかかる半導体装置ＩＣにおいて、ループ処理を予め決められた規定値の回数繰り返した後のキャッシュの状態遷移について説明する。図６に、実施の形態１にかかる半導体装置ＩＣのスピンロック制御部３０４による他のキャッシュに対するパージ要求及びスヌープ要求のマスク処理を行った上で排他演算命令を実行した場合のオペランドキャッシュ３０２の状態遷移を示す表を示す。
【００５０】
図６に示すように、実施の形態１にかかる半導体装置ＩＣでは、ループ処理の繰り返し回数（つまり、スヌープカウント値ＳＮＣ）が規定値以上になると、排他ロード命令ＭＯＶＬＩの実行後にパージ要求を他のキャッシュに対して発行する。そのため、排他演算命令ＡＤＤの実行中は、自オペランドキャッシュのキャッシュの状態は、更新状態又は排他状態となる。また、実施の形態１にかかる半導体装置ＩＣでは、ループ処理の繰り返し回数（つまり、スヌープカウント値ＳＮＣ）が規定値以上になると、排他演算命令ＡＤＤ及び排他ストア命令ＭＯＶＣＯの実行が完了するまで他のオペランドキャッシュからのスヌープ要求をマスクする。そのため、図６に示す例では、排他演算命令ＡＤＤ及び排他ストア命令ＭＯＶＣＯの実行中にキャッシュが無効状態となることなく、排他ストア命令ＭＯＶＣＯによってキャッシュを更新状態とすることができる。
【００５１】
上記説明より、実施の形態１にかかる半導体装置ＩＣでは、排他制御命令に関するループ処理のループ回数が規定値に達した場合、排他制御命令による処理の対象となっているキャッシュ以外のキャッシュに対してパージ要求を発行して、他のキャッシュを無効化する。また、実施の形態１にかかる半導体装置ＩＣでは、排他制御命令に関するループ処理のループ回数が規定値に達した場合、排他制御命令による処理の対象となっているキャッシュに対するパージ要求等のスヌープ要求を無効化（例えば、マスク）する。これにより、実施の形態１にかかる半導体装置ＩＣでは、他のキャッシュに対するパージ要求及び他のキャッシュからのスヌープ要求のマスク処理を行った後は、確実に排他制御命令を実行することができる。
【００５２】
上記処理において、実施の形態１にかかる半導体装置ＩＣは、排他制御命令に関するループ処理が上限回数（例えば、規定値）に達したことハードウェア実装されたカウンタにより生成されるスヌープカウント値ＳＮＣに基づき検出する。そして、実施の形態１にかかる半導体装置ＩＣは、スヌープカウント値ＳＮＣに基づくパージ要求の発行処理とスヌープ要求のマスク処理とを、スピンロック制御部３０４により行う。
【００５３】
これにより、実施の形態１にかかる半導体装置ＩＣは、プログラムの動作によることなく排他制御命令に関するループ処理が上限回数以上繰り返されることを防止することができる。また、実施の形態１にかかる半導体装置ＩＣでは、ＣＰＵコアの数の変更等のハードウェアの構成変更が生じた場合にも、プログラムに改変を加えることなくループ処理が上限回数以上繰り返すことを防止することができる。
【００５４】
一方、ループ処理の上限回数をプログラムの動作により実現した場合、ループ処理毎にループ回数のカウントアップ、ループ回数の判定、ループ処理に応じた処理の定義等のルーチンをプログラム中に組み込む必要があり、ループ処理毎の処理時間が長くなる問題がある。しかし、実施の形態１にかかる半導体装置ＩＣでは、ループ処理の繰り返し及びループ処理の回数が規定値に達した後の排他制御命令の強制実行をハードウェアの動作にて実現する。そのため、実施の形態１にかかる半導体装置ＩＣでは、ループ処理中のルーチン数を削減して半導体装置ＩＣのループ処理にかかる処理時間を短縮することができる。
【００５５】
実施の形態２
実施の形態２では、スピンロック制御部の配置の別の形態を示す。図７に実施の形態２にかかる半導体装置ＩＣの演算部２のブロック図を示す。なお、実施の形態２の説明では、実施の形態１において説明した構成要素と同じ構成要素については実施の形態１と同じ符号を付して説明を省略する。
【００５６】
図７に示すように、演算部２は、キャッシュコントローラ２２０、２２３、２３に代えてキャッシュコントローラ２２０ａ、２２３ａ、２３ａを有する。キャッシュコントローラ２２０ａは、キャッシュコントローラ２２０からスピンロック制御回路３０４を除いたものである。キャッシュコントローラ２２３ａは、キャッシュコントローラ２２３からスピンロック制御部３３４を除いたものである。スヌープコントローラ２３ａは、スヌープコントローラ２３にスピンロック制御部２３４を追加した物である。また、スピンロック制御部２３４は、スヌープカウント値ＳＮＣを生成するＳＮカウンタ２３５を有する。
【００５７】
つまり、実施の形態２では、スピンロック制御部２３４がスヌープコントローラ２３ａ内に設けられる。そして、スピンロック制御部２３４は、第１の演算部（例えば、ＣＰＵ２１０）が実行する排他制御命令に関するループ処理が１回以上発生したことに応じて、第２のキャッシュメモリ（例えば、オペランドキャッシュ３３２）の状態の遷移に応じて生じる第１のキャッシュメモリ（例えば、オペランドキャッシュ３０２）に対するスヌープ要求を無効化（例えば、マスク）する。また、スピンロック制御部２３４は、第１の演算部（例えば、ＣＰＵ０）が実行する排他制御命令に関するループ処理が１回以上発生したことに応じて、排他制御命令の処理対象となっているオペランドキャッシュ３０２のデータに対応するオペランドキャッシュ３３２のデータの消去を指示するパージ要求を発行する。
【００５８】
また、スピンロック制御部２３４は、スヌープバスＳＢ２を介してＣＰＵ２１０或いはＣＰＵ２１３が実行する排他制御命令が失敗したことの通知を受ける。さらに、スピンロック制御部２３４は、スヌープバスＳＢ２を介してＣＰＵ２１０或いはＣＰＵ２１３が実行する排他制御命令に関するループ処理の実行を指示する。
【００５９】
つまり、実施の形態２にかかる半導体装置ＩＣにおける排他制御命令に関する動作は、実施の形態１と実質的に同じものとなる。従って、実施の形態２では、半導体装置ＩＣに関する動作に説明を省略する。
【００６０】
上記説明より、実施の形態２にかかる半導体装置ＩＣでは、スピンロック制御部２３４をＣＰＵ２１０〜２１３又はキャッシュコントローラ２２０ａ〜２２３ａに対して共通に設ける。これにより、実施の形態２にかかる半導体装置ＩＣは、スピンロック制御部に関する回路を削減し、回路面積を実施の形態１にかかる半導体装置ＩＣよりも小さくすることができる。
【００６１】
実施の形態３
実施の形態３では、ＣＰＵ２１０〜２１３に対して割り込み処理が発生した場合のスピンロック制御部の動作の一例について説明する。実施の形態３にかかる半導体装置ＩＣの演算部３のブロック図を図８に示す。なお、実施の形態３の説明では、実施の形態１において説明した構成要素と同じ構成要素については実施の形態１と同じ符号を付して説明を省略する。
【００６２】
図８に示す例では、ＣＰＵ２１０〜２１３に代えてＣＰＵ２１０ｂ〜２１３ｂを示した。ＣＰＵ２１０ｂ〜２１３ｂは、ＣＰＵ２１０〜２１３に割り込み処理の発生を通知する信号を出力する機能を追加したものである。
【００６３】
また、図８に示すように、実施の形態３にかかる半導体装置ＩＣは、キャッシュコントローラ２２０〜２２３に代えてキャッシュコントローラ２２０ｂ〜２２３ｂを有する。キャッシュコントローラ２２０ｂ〜２２３ｂは、スピンロック制御部３０４〜３３４に代えてスピンロック制御部３０４ｂ〜３３４ｂを有する。スピンロック制御部３０４ｂは、第１の演算部（例えば、ＣＰＵ２１０ｂ）から割り込み処理が発生したことの通知を受けた場合、排他制御命令に関するループ処理の発生回数に変わらずスヌープ要求の無効状態を解除する。つまり、スピンロック制御部３０４ｂ〜３３４ｂは、対応するＣＰＵから割り込み処理が発生したことの通知を受けた場合、排他制御命令に関するループ処理の発生回数に変わらずスヌープ要求の無効状態を解除する。なお、割り込み処理は、ＣＰＵが割り込みコントローラ２５から割り込み発生通知を受けた場合に行われる処理である。また、この例外発生通知は、周辺装置或いは演算部３から出力されるものである。
【００６４】
割り込み処理が発生した場合には排他制御命令に基づく処理は一旦停止されるが、このとき、オペランドキャッシュのスヌープ処理が禁止状態となっていた場合、他のＣＰＵの実行を妨げることになり、システム全体の性能劣化につながる。そこで、実施の形態３にかかる半導体装置ＩＣでは、割り込み処理が発生した場合にはオペランドキャッシュのスヌープ処理の禁止状態を解除することで前述の弊害を回避する。
【００６５】
ここで、実施の形態３にかかる半導体装置ＩＣの動作を示すフローチャートを図９に示し、図９を参照して実施の形態３にかかる半導体装置ＩＣの動作を説明する。図９に示すように、実施の形態３にかかる半導体装置ＩＣは、割り込み処理が発生しなければ、実施の形態１にかかる半導体装置ＩＣと同じ動作を行う。
【００６６】
一方、実施の形態３にかかる半導体装置ＩＣは、スヌープ要求のマスク処理が発生する可能性のあるステップＳ１０〜Ｓ１５の処理が行われている期間に割り込み処理が発生した場合には、スピンロック制御部３０４ｂがスヌープカウント値ＳＮＣに関わらずスヌープ要求のマスクを解除する（ステップＳ２１）。そして、実施の形態３にかかる半導体装置ＩＣは、スヌープ要求のマスクの解除後に割り込み処理を実行する（ステップＳ２２）。その後、実施の形態３にかかる半導体装置ＩＣは、割り込み処理の実行後に排他制御命令の実行をステップＳ１０から再開する。
【００６７】
上記説明より、実施の形態３にかかる半導体装置ＩＣでは、割り込み処理が発生した場合にスヌープ要求のマスクを解除して、割り込み処理を行うプログラムが自由にオペランドキャッシュを利用できるようにする。これにより、実施の形態３にかかる半導体装置ＩＣでは、割り込み処理がスヌープ要求のマスクにより阻害されることなく実行される。
【００６８】
実施の形態４
実施の形態４では、ＣＰＵ２１０〜２１３に対して割り込み処理が発生した場合のスピンロック制御部の動作の別の例について説明する。実施の形態４にかかる半導体装置ＩＣの演算部４のブロック図を図１０に示す。なお、実施の形態４の説明では、実施の形態１において説明した構成要素と同じ構成要素については実施の形態１と同じ符号を付して説明を省略する。
【００６９】
図１０に示すように、実施の形態４にかかる半導体装置ＩＣは、実施の形態１にかかる半導体装置ＩＣのキャッシュコントローラ２２０〜２２３に代えてキャッシュコントローラ２２０ｃ〜２２３ｃを有する。キャッシュコントローラ２２０ｃ〜２２３ｃは、スピンロック制御部３０４〜３３４に代えてスピンロック制御部３０４ｃ〜３３４ｃを有する。スピンロック制御部３０４ｃ〜３３４ｃは、スピンロック制御部３０４〜３３４にスヌープ禁止タイマ３０６〜３３６を追加したものである。このスヌープ禁止タイマ３０６〜３３６は、スヌープ要求のマスク処理を開始してからの経過時間を計測する。スピンロック制御部３０４ｃ〜３３４ｃは、スヌープ要求を無効状態とする期間が予め設定された所定の期間（スヌープ禁止タイマ３０６に設定された時間）に達した場合、スヌープ要求のマスクを解除する。
【００７０】
ここで、実施の形態４にかかる半導体装置ＩＣの動作を示すフローチャートを図１１に示し、図１１を参照して実施の形態４にかかる半導体装置ＩＣの動作を説明する。図１１に示すように、実施の形態４にかかる半導体装置ＩＣは、スヌープ禁止タイマに関する処理（ステップＳ３０〜Ｓ３２）以外の処理は、実施の形態１にかかる半導体装置ＩＣと同じである。
【００７１】
実施の形態４にかかる半導体装置ＩＣでは、ステップＳ１３においてスヌープ要求のマスク処理を行った後にスヌープ禁止タイマ３０６を起動する（ステップＳ３０）。そして、実施の形態４にかかる半導体装置ＩＣは、排他演算処理と並行してスヌープ禁止タイマ３０６による実行時間の計測を行う（ステップＳ１４）。このとき、排他演算処理の処理時間が予め設定された時間に達すると、スヌープ禁止タイマ３０６において、タイムアウトが発生する。そして、このタイムアウトの発生に伴い、スピンロック制御部３０４ｃは、スヌープ処理のマスクを解除する（ステップＳ３１）。そして、実施の形態４にかかる半導体装置ＩＣは、スヌープ処理のマスク解除後に実施の形態１にかかる半導体装置ＩＣと同様の処理を継続する（ステップＳ１４〜Ｓ１６）。
【００７２】
上記説明より、実施の形態４にかかる半導体装置ＩＣでは、スヌープ要求をマスクする排他制御命令の実行時間が所定の時間よりも長くなった場合にスヌープ要求のマスクを解除する。これにより、実施の形態４にかかる半導体装置ＩＣでは、スヌープ要求のマスク処理に起因してシステム全体の処理が滞る期間を所定の長さに制限することができる。
【００７３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【００７４】
１〜４  演算部
１０  ＳＲＡＭ
１１  不揮発性メモリ
１２  メモリコントローラ
１３  ＤＭＡＣ
１４  ＳＰＩ
２１０〜２１３  ＣＰＵ
２１０ｂ〜２１３ｂ  ＣＰＵ
２２０〜２２３  キャッシュコントローラ
２２０ａ〜２２３ａ  キャッシュコントローラ
２２０ｂ〜２２３ｂ  キャッシュコントローラ
２２０ｃ〜２２３ｃ  キャッシュコントローラ
２３、２３ａ  スヌープコントローラ
２３０〜２３３  複製タグ
２４０〜２４３  バスインタフェース
２５  割り込みコントローラ
３０１〜３３１  キャッシュ制御部
３０２〜３３２  オペランドキャッシュ
３０３〜３３３  スヌープ処理部
３０４〜３３４、２３４  スピンロック制御部
３０４ｂ〜３３４ｂ  スピンロック制御部
３０４ｃ〜３３４ｃ  スピンロック制御部
３０５〜３３５、２３５  ＳＮカウンタ
３０６、３３６  スヌープ禁止タイマ
ＳＢ１  システムバス
ＳＢ２  スヌープバス
【図１】
2013246496.tif 000003
【図２】
2013246496.tif 000004
【図３】
2013246496.tif 000005
【図４】
2013246496.tif 000006
【図５】
2013246496.tif 000007
【図６】
2013246496.tif 000008
【図７】
2013246496.tif 000009
【図８】
2013246496.tif 000010
【図９】
2013246496.tif 000011
【図１０】
2013246496.tif 000012
【図１１】
2013246496.tif 000013