【解決手段】 本発明は、バスに接続され、CPUコアおよび該CPUコアのキャッシュメモリを備えたプロセッサモジュールと、前記バスに接続され、割り込みハンドラを記憶するためのシステムメモリと、前記バスに接続されたDMAコントローラとを備える半導体装置である。前記DMAコントローラは、外部からの状態信号に基づく所定の転送命令に従って、前記システムメモリに記憶された前記割り込みハンドラを、前記バスを介して、前記プロセッサモジュールに転送するように制御を行う。また、前記プロセッサモジュールは、前記DMAコントローラによる制御に従って転送される前記割り込みハンドラを前記キャッシュメモリの少なくとも1つの記憶領域に書き込むように制御する。
前記アドレステーブルは、前記バックリフィル部により書き込み可能な前記キャッシュメモリの前記少なくとも1つの記憶領域を示すアドレスを含む、請求項3記載の半導体装置。
前記アドレステーブルは、前記キャッシュメモリの前記少なくとも1つの記憶領域に対する、前記CPUコア以外のコンポーネントによるアクセスが可能であることを示す有効フラグを含む、請求項3記載の半導体装置。
前記バックリフィル部は、前記バスを介して第1の書き込みコマンドを検出した場合、前記第1の書き込みコマンドが示すアドレスおよび前記アドレステーブルに基づいて、前記キャッシュメモリの所定の記憶領域を無効化する、請求項3記載の半導体装置。
前記バックリフィル部は、前記バスを介して第2の書き込みコマンドを検出した場合、前記第2の書き込みコマンドが示すアドレスおよび前記アドレステーブルに基づいて、前記バスを介して転送される前記少なくとも1つの割り込みハンドラを前記キャッシュメモリの前記少なくとも1つの記憶領域に書き込みを行う、請求項3記載の半導体装置。
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来のキャッシュ機構においては、キャッシュメモリのサイズは小さく、かつ、限られているため、ロックした特定の領域に保持されたデータであっても、システムの状態の変化に応じて置換乃至はリフィルが必要となる場合がある。このような場合、CPUは、状態変化に基づく割り込み等に従って特殊なキャッシュ処理を実行することとなり、その間、他の処理を実施することができず、このため、かかる特殊な処理はCPUのパフォーマンスを阻害する要因となっていた。また、かかる特殊なキャッシュ処理は、典型的には、アセンブラ等のプリミティブな言語で記述されることから、開発負担は大きく、開発の期間が長期化し、これにより、開発のコストを押し上げる要因となっていた。
【0006】
そこで、本発明は、CPUの利用に供されるキャッシュ領域に対して、CPU以外のコンポーネント乃至はモジュールによるアクセスを可能にしたマイクロアーキテクチャを提供することを目的とする。
【0007】
より具体的には、本発明は、システムオンチップ型半導体集積回路であって、該半導体集積回路におけるCPUコアによる処理を介すことなく、該CPUコアのキャッシュ領域における特定の領域に対してデータを置換乃至はリフィルすることができる半導体集積回路を提供することを目的の一つとする。
【課題を解決するための手段】
【0008】
上記課題を解決するための本発明は、以下に示す発明特定事項乃至は技術的特徴を含んで構成される。
【0009】
即ち、ある観点に従う本発明は、バスと、前記バスに接続され、CPUコアおよび該CPUコアの利用に供されるキャッシュメモリを備えたプロセッサモジュールと、前記バスに接続され、少なくとも1つの割り込みハンドラを記憶するためのシステムメモリと、前記バスに接続されたDMAコントローラと、を備える半導体装置である。前記DMAコントローラは、外部からの状態信号に基づく所定の転送命令に従って、前記システムメモリに記憶された前記少なくとも1つの割り込みハンドラを、前記バスを介して、前記プロセッサモジュールに転送するように制御を行う。また、前記プロセッサモジュールは、前記DMAコントローラによる制御に従って転送される前記少なくとも1つの割り込みハンドラを前記キャッシュメモリの少なくとも1つの記憶領域に書き込むように制御する。
【0010】
従って、CPUコアによる処理を介すことなく、該CPUコアのキャッシュメモリにおける特定のキャッシュ領域に対してデータを置換乃至はリフィルすることができるようになる。従って、CPUコアは、かかるキャッシュ領域に対してデータの置換が行われている間であっても、他の処理を実行することができるようになる。
【0011】
前記半導体装置はシステムオンチップ型半導体装置として構成され得る。
【0012】
また、前記プロセッサモジュールは、前記少なくとも1つの割り込みハンドラと前記キャッシュメモリの前記少なくとも1つの記憶領域を示すアドレスとを関連付けるアドレステーブルと、前記アドレステーブルに従って、前記バスを介して転送される前記少なくとも1つの割り込みハンドラを前記キャッシュメモリの前記少なくとも1つの記憶領域に書き込みを行うバックリフィル部とを備え得る。
【0013】
また、前記アドレステーブルは、前記バックリフィル部により書き込み可能な前記キャッシュメモリの前記少なくとも1つの記憶領域を示すアドレスを含み得る。さらに、前記アドレステーブルは、前記キャッシュメモリの前記少なくとも1つの記憶領域に対する、CPU以外のコンポーネント乃至はモジュールによるアクセスが可能であることを示す有効フラグを含み得る。
【0014】
また、前記バックリフィル部は、前記バスを介して第1の書き込みコマンドを検出した場合、前記第1の書き込みコマンドが示すアドレスおよび前記アドレステーブルに基づいて、前記キャッシュメモリの所定の記憶領域を無効化し得る。
【0015】
さらに、前記バックリフィル部は、前記バスを介して第2の書き込みコマンドを検出した場合、前記第2の書き込みコマンドが示すアドレスおよび前記アドレステーブルに基づいて、前記バスを介して転送される前記少なくとも1つの割り込みハンドラを前記キャッシュメモリの前記少なくとも1つの記憶領域に書き込みを行い得る。
【0016】
さらにまた、前記半導体装置は、I/Oピンを介して外部との入出力制御を行うアプリケーションモジュールをさらに備え得る。
【0017】
前記アプリケーションモジュールは、前記I/Oピンを共有する2以上の特定のサブモジュールを含み得る。
【0018】
また、前記アプリケーションモジュールは、前記状態信号が示すシステム状態の変化を検出するように構成される。そして、前記アプリケーションモジュールは、前記状態信号に基づいて前記システム状態の変化を検出する場合に、前記検出されたシステム状態の変化に対応する一の特定のサブモジュールに対応する一の割り込みハンドラが前記プロセッサモジュールに転送されるように、前記DMAコントローラに対して転送指示を行い得る。
【0019】
さらに、前記アプリケーションモジュールは、前記DMAコントローラの制御による転送完了後、前記プロセッサモジュールの前記CPUコアに対して割り込みをかけ得る。これにより、前記CPUコアは、前記割り込みに応じて前記キャッシュメモリの前記少なくとも1つの記憶領域に前記一の割り込みハンドラが書き込まれたことを認識して使用し得る。
【0020】
なお、本発明は、上記装置の発明を方法の発明としても成立する。即ち、別の観点に従う本発明は、半導体装置におけるキャッシュ制御方法として把握され得る。
【発明の効果】
【0021】
本発明によれば、システムオンチップ型半導体装置において、CPUコアによる処理を介すことなく、該CPUコアのキャッシュメモリにおける特定のキャッシュ領域に対してデータを置換乃至はリフィルすることができるようになる。従って、CPUコアは、かかるキャッシュ領域に対してデータの置換が行われている間であっても、他の処理を実行することができるようになる。
【0022】
また、本発明によれば、システムオンチップ型半導体装置を用いたシステムの状態に変化が生じて、キャッシュメモリにおける特定の領域にロック(書き込み禁止)されたデータを置換する必要が生じた場合であっても、CPUコアによる処理を介すことなく、円滑に、該特定の領域におけるデータを置換し、その後、該特定の領域を再びロックすることができるようになる。
【0023】
従って、プロセッサモジュールに対する特殊な処理をアセンブラ等で記述する必要がなく、開発者の開発負担は軽減され、これにより、開発の期間を短縮し、開発のコストも抑えることができるようになる。
【0024】
本発明の他の技術的特徴、目的、及び作用効果乃至は利点は、添付した図面を参照して説明される以下の実施形態により明らかにされる。
【発明を実施するための形態】
【0026】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。本発明は、その趣旨を逸脱しない範囲で種々変形(例えば各実施形態を組み合わせる等)して実施することができる。また、以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。図面は模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
【0027】
図1は、本発明の一実施形態に係る半導体装置の概略構成の一例を示す図である。同図に示すように、半導体装置100は、複数のコンポーネント(機能ブロック)、例えば、プロセッサモジュール110と、システムメモリ120と、アプリケーションモジュール130と、DMAコントローラ(以下、「DMAC」という。)140とを含み、これらのコンポーネントをバス150により相互に接続にして構成されたシステムオンチップ(SoC)である。
【0028】
プロセッサモジュール110は、CPUコア111が、プログラムとして記述された命令セットを解釈することにより処理を実行するコンポーネントである。ここでは、「CPUコア」という語は、演算回路を含む処理装置を意味するプロセッサやCPU、MPU、マイクロコントローラ等と同義のものとして扱われ、また、マルチコアプロセッサを意味するものであっても良い。プロセッサモジュール110は、典型的には、CPUコア111に加え、バスインターフェース(以下、「バスI/F」という。)112と、キャッシュ機構113と、割り込みコントローラ114とを含んで構成される。本実施形態では、また、プロセッサモジュール110は、アドレステーブル115とバックリフィル部116とをさらに含む。また、図示はしていないが、プロセッサモジュール110は、CPUコア111にブリッジを介して接続されるチップセットに関わる機能ブロックを含んでいても良い。
【0029】
バスI/F112は、プロセッサモジュール110をバス150に接続するためのインターフェース回路である。バスI/F112は、例えば、所定のバスプロトコルに従って、バス150を介して他のコンポーネント(例えばシステムメモリ120)とのデータのやり取りを制御する。
【0030】
キャッシュ機構113は、CPUコア111とバスおよび他のコンポーネントとの間の処理性能差を吸収するための記憶階層を実現するコンポーネントである。キャッシュ機構113は、典型的には、キャッシュメモリ1131とロード/ストア部1132とを含む。キャッシュメモリ1131は、高速アクセス可能なメモリ(例えばスタティックRAM)で構成されるが、これに限られるものではない。キャッシュメモリ1131は、典型的には、ライン(またはブロック)と呼ばれる所定サイズの記憶領域(キャッシュライン)に命令および/またはデータ(プログラムを含む。)を記憶する。ロード/ストア部1132は、キャッシュメモリ1131に対するアクセスを制御する回路であり、所定のキャッシュアルゴリズムに従って、キャッシュメモリ1131上のデータを置換し、また、目的とするデータがキャッシュメモリ1131上にあるか否かを判定し、それがキャッシュメモリ1131上にあると判定する場合(即ち、キャッシュヒットの場合)、CPUコア111の利用に供するために、該データをキャッシュメモリ1131から読み出す。キャッシュ機構113は、複数のレベルキャッシュ(例えば、L1キャッシュ、L2キャッシュ等)で構成されても良い。また、キャッシュ機構113におけるデータ格納構造は、本例では、理解の容易のため、1組のタグにより構成されるダイレクトマップ構造であるものとするが、これに限られるものではなく、例えば、セットアソシアティブ構造やフルアソシアティブ構造であっても良い。
【0031】
割り込みコントローラ114は、プロセッサモジュール110の外部のコンポーネント(例えば、アプリケーションモジュール130や通信モジュール(図示せず))から発行される各種の割り込み信号INTを受けて、CPUコア111に対して該割り込み信号に対応する割り込みをかける回路である。CPUコア111は、割り込みがかかると、それに対応する処理乃至は動作を行うことになる。例えば、割り込みコントローラ114は、アプリケーションモジュール130における特定のモジュールから送られる割り込み信号INTを受けると、CPUコア111に対して割り込みをかけ、これにより、CPUコア111の制御の下、該特定のモジュールに対応するプログラム(即ち、割り込みハンドラ)を実行する。特に、本実施形態のCPUコア111は、キャッシュメモリ113への割り込みハンドラのキャッシュ(即ち、リフィル)処理が必要な場合であっても、かかるキャッシュ処理から解放され、該キャッシュ処理が行われている間、他の処理を行うことができる。
【0032】
アドレステーブル115は、キャッシュされるデータとバスアドレスとを関連付けるための各種のパラメータを格納するテーブルである。アドレステーブル115は、例えば、CPUコア111に実行される特殊命令によって書き換えられる。アドレステーブル115は、半導体装置100を含むシステムが起動した際、例えば、BIOSにより初期化される。
【0033】
バックリフィル部116は、バスI/F112を介して転送される特定のデータを、アドレステーブル115に従って、キャッシュメモリ1131にキャッシュするためのコンポーネントである。つまり、バスI/F112を介して転送される特定のデータは、アドレステーブル115に従って、バックリフィル部116の制御の下(即ち、ロード/ストア部1132の制御とは無関係に)、キャッシュメモリ1131にキャッシュされることになる。
【0034】
システムメモリ120は、典型的には、揮発性メモリ(例えばDRAM)、不揮発性メモリ(例えばROMやフラッシュメモリ等)またはこれらの組み合わせからなるCPUコア111の1次記憶装置である。典型的には、CPUコア111は、所定のバスプロトコルに従ってシステムバスアドレスを指定することにより、システムメモリ120上の対応する記憶領域に対してアクセスすることができる。記憶階層の観点から、一般に、システムメモリ120に対するアクセスは、キャッシュメモリ1131に対するそれよりも低速である。システムメモリ120は、典型的には、割り込みハンドラ、制御プログラム、及びプログラムデータ等の全部または一部を保持し、プロセッサモジュール110の利用に供される。本実施形態では、システムメモリ120は、割り込みハンドラとして、アプリケーションモジュール130の構成に対応するPWM割り込みハンドラ121およびキャプチャ割り込みハンドラ122を保持する。
【0035】
アプリケーションモジュール130は、外部のコンポーネント(図示せず)との間で入出力制御を行うコンポーネントであり、一以上の特定のサブモジュールを含んで構成される。本実施形態では、アプリケーションモジュール130は、例えば、PWMモジュール131と、キャプチャモジュール132とを含んで構成される。PWMモジュール131は、所定の設定に従って、パルス波信号のデューティ比を変化させることにより該パルス波信号を変調し、I/O信号ピン133に対して出力する機能ブロックである。PWMモジュール131は、パルス波信号の出力が完了すると、割り込みコントローラ114に対する割り込み信号INTをアサートする。一方、キャプチャモジュール132は、I/O信号ピン133に入力されるパルス波信号のデューティ比を計測する機能ブロックである。キャプチャモジュール132は、デューティ比の計測が完了すると、割り込みコントローラ114に対する割り込み信号INTをアサートする。
【0036】
本実施形態では、PWMモジュール131とキャプチャモジュール132とは、I/O信号ピン133を共有するように構成されており、従って、仕様上、PWMモジュール131とキャプチャモジュール132とが同時に駆動されることはないものとする。PWMモジュール131またはキャプチャモジュール132のいずれが駆動されるかは、半導体装置100の外部から状態信号ピン134に入力される状態信号に依存する。従って、半導体装置100の設計上、PWMモジュール131およびキャプチャモジュール132のそれぞれに対応するPWM割り込みハンドラ121及びキャプチャ割り込みハンドラ122は、キャッシュメモリ1131に両方ともキャッシュされる必要はない。つまり、メモリサイズの限られたキャッシュメモリ1131を有効的に用いるため、PWM割り込みハンドラ121およびキャプチャ割り込みハンドラ122は、キャッシュメモリ1131の特定の領域に排他的にキャッシュされる。
【0037】
アプリケーションモジュール130は、例えば、DMAC140と制御線を介して接続される。アプリケーションモジュール130は、半導体装置100の外部から状態信号ピン134に入力される状態信号が示す状態の変化に応じて、制御線を介してDMAC140に対してスタート信号を出力し、これにより、データ(即ち、対応する割り込みハンドラ)の転送を要求する。
【0038】
DMAC140は、指定されたコンポーネント間で、直接的にデータを転送するためのコンポーネントである。本実施形態では、DMAC140は、アプリケーションモジュール130から出力されるスタート信号に従って、システムメモリ120に記憶された特定の割り込みハンドラをプロセッサモジュール110のキャッシュメモリ1131に対して転送する。例えば、DMAC140のレジスタ(図示せず)には、転送元の記憶領域のアドレス(転送元アドレス)、転送先の記憶領域のアドレス(転送先アドレス)、およびデータ長を示すパラメータを含む命令が予めセットされ、または、必要に応じてセットされる。DMAC140は、スタート信号に従って要求されたデータ転送が完了すると、制御線を介してアプリケーションモジュール130に対して終了信号を出力し、データ転送が完了した旨を通知する。
【0039】
バス150は、コンピュータシステム100におけるプロセッサモジュール110等のコンポーネント間でデータを伝送するための各種の信号線を含む伝送路である。バス150は、典型的には、コンポーネントのアドレス情報を伝送するためのアドレス線ADDと、コンポーネントにデータを伝送するためのデータ線DATAと、コンポーネントに対する制御情報を伝送するための制御線CNTとを含んで構成される(図示せず)。バス150は、例えば、シリアル方式であってもパラレル方式であっても良い。
【0040】
図2は、本発明の一実施形態に係る半導体装置におけるプロセッサモジュール110のキャッシュメモリの概略構成の一例を説明するための図である。本実施形態では、キャッシュメモリ1131のデータ格納構造は、ダイレクトマップ方式を採用している。従って、同図に示すように、キャッシュメモリ1131は、例えば、インデックス欄201、有効フラグ欄202、タグ欄203、およびデータブロック欄204からなる複数のキャッシュライン(記憶領域)で構成される。
【0041】
インデックス欄201は、各キャッシュラインを一意に管理するための欄である。本例では、インデックス欄201には、1024個のキャッシュラインを一意に管理するため、インデックス番号“0〜1023”の数字が割り当てられている。有効フラグ欄は、該キャッシュラインが有効であるか否かを示す欄である。例えば、有効フラグ欄の値が“1”であれば、該キャッシュラインは有効であることを示し、“0”であれば、該キャッシュラインは無効であることを示す。タグ欄203は、システムメモリ120上のどのアドレスのデータが保持されているかを管理するための欄である。データブロック欄204は、データを格納する欄である。本例では、データブロック欄204のサイズは、32バイトである。
【0042】
図3は、本発明の一実施形態に係る半導体装置におけるプロセッサモジュール110のアドレステーブルの概略構成の一例を説明するための図である。上述したように、アドレステーブル115は、キャッシュされるデータとバスアドレスとを関連付けるための各種のパラメータを格納するテーブルである。CPUコア111およびバックリフィル部116は、例えば、特殊命令を実行することにより、アドレステーブル115の内容を書き換えることができる。
【0043】
即ち、同図に示すように、アドレステーブル115は、例えば、セット番号欄301、有効フラグ欄302、インデックス欄303、データ長欄304、ターゲット欄305、ポート欄306、およびクリア欄307からなる複数のパラメータセットで構成される。
【0044】
セット番号欄301は、各パラメータセットを一意に管理するための番号を保持する欄である。本例では、セット番号欄301は、8個のパラメータセットを管理するため、セット番号“0〜7”の数字が割り当てられている。有効フラグ欄302は、該パラメータセットが有効であるか否かを示す欄である。後述するように、有効フラグ欄302が有効であることを示す値(例えば“1”)である場合、そのパラメータセットが示すキャッシュ領域が、バス150を介して外部のコンポーネントから書き込み可能な状態であることを示す。インデックス欄303は、プロセッサモジュール110の外部のコンポーネントがバス150を介してデータを書き込み可能なキャッシュメモリ1131内の先頭アドレス(即ち、キャッシュライン)を指定する欄である。即ち、インデックス欄303には、プロセッサモジュール110の外部のコンポーネントがバス150を介してデータを書き込み可能なキャッシュメモリ1131のインデックス欄201の値が格納される。データ長欄304は、外部から書き込み可能なキャッシュメモリ1131の記憶領域サイズを例えばキャッシュラインの数によって指定する。他の例として、データ長欄304は、キャッシュラインのサイズに合わせたバイト数やワード数によって指定しても良い。ターゲット欄305は、キャッシュの対象となるシステムメモリ120上の記憶領域のアドレス(即ち、システムバスアドレス)を指定する欄である。典型的には、ターゲット欄305には、常にキャッシュヒットさせたいデータ(ターゲットデータ)を格納するシステムメモリ120上の記憶領域の先頭アドレス(ターゲットアドレス)が格納される。ポート欄306は、ターゲットデータが書き込まれるべきキャッシュメモリ1131上のキャッシュ領域の先頭アドレスに対応するシステムバスアドレス(ポートアドレス)を指定する欄である。クリア欄307は、該当するパラメータセットが示すキャッシュ領域を無効にする際に使用されるシステムバスアドレスを指定する欄である。クリア欄307に所定のシステムバスアドレス(クリアアドレス)が指定され、そのシステムバスアドレスに対して書き込みが行われると、該パラメータセットにおけるインデックス欄303およびデータ長欄304で指定されたキャッシュ領域が無効化されることとなる。
【0045】
かかるアドレステーブル115によれば、インデックス欄303とデータ長欄304とで示されるキャッシュメモリ1131上のキャッシュ領域は、ターゲット欄305と該データ長欄304とで示されるシステムメモリ120上の記憶領域(システムバス領域)に対応することになる。また、インデックス欄303とデータ長欄304とで示されるキャッシュメモリ1131上のキャッシュ領域が、有効フラグ欄302によって有効であるとされる場合、対応するポート欄306とデータ長欄304とで示されるシステムバスアドレスに対して書き込みが行われ、その内容が書き換えられることとなる。
【0046】
なお、インデックス欄303およびデータ長欄304で指定される同一のキャッシュ領域は、複数のパラメータセットによって指定されても良い。
【0047】
アドレステーブル115を参照するバックリフィル部116は、バスI/F112を介してポート欄306とデータ長欄304とで示される領域に対する書き込みコマンドを検出すると、取り込まれるデータをインデックス欄303とデータ長欄304とで示されるキャッシュメモリ1131上のキャッシュ領域(即ち、キャッシュライン)に書き込む。また、バックリフィル部116は、該キャッシュ領域に対する書き込みを完了すると、キャッシュメモリ1131における対応するキャッシュラインの有効フラグ欄202に有効であることを示す値をセットする。またこれと同時に、バックリフィル部116は、該キャッシュ領域をロック状態とする。
【0048】
また、アドレステーブル115の内容に従ってバス150を介した外部のコンポーネントからのアクセスが許可されたキャッシュ領域であっても、CPUコア111は、有効フラグ欄302が無効であることを示す値(例えば“0”)である場合には、かかるキャッシュ領域を使用することができる。
【0049】
図4は、本発明の一実施形態に係る半導体装置におけるプロセッサモジュール110のシステムアドレス空間を説明するための図である。同図に示すように、CPUコア111は、システムメモリ120のアドレス空間と、キャッシュメモリ1131のアドレス空間とを含むシステムアドレス空間400を管理し得る。システムメモリ120のアドレス空間は、割り込みハンドラを記憶する記憶領域を有する。該記憶領域は、アドレステーブル115によって、ターゲットアドレスと呼ばれるシステムバスアドレスに対応付けられている。また、キャッシュメモリ1131の記憶領域は、アドレステーブル115によってポートアドレスに対応付けられている。なお、本例では、CPUコア111のシステムアドレス空間400は0x0〜0xFFFF_FFFFとしたが、これに限られるものではなく、CPUコア111の仕様に応じて設定され得る。
【0050】
以上のように構成される半導体装置100は、典型的には、いわゆるマザーボード等に搭載され、他の半導体装置やコンポーネントとともに電子回路システムを構成する。例えば、電子回路システムに電源が投入されると、半導体装置100は起動し、所定の初期化処理を行う。例えば、キャッシュメモリ1131のキャッシュラインは全て無効となる。また、アドレステーブル151の全てのパラメータセットも無効となる。この場合には、CPUコア111は、全てのキャッシュラインを使用することができ、ロード/ストア部1132によって、所定のデータがキャッシュされ、アクセス可能になる。
【0051】
初期化処理において、または、初期化処理後、アプリケーションモジュール130のPWMモジュール131またはキャプチャモジュール132のいずれかが有効な状態になり、CPUコア111は、所定のシーケンスを実行して、その処理を実行するための割り込みハンドラがキャッシュメモリ1131にキャッシュされるように、アドレステーブル151の初期設定を行う。
【0052】
例えば、PWM割り込みハンドラ121およびキャプチャ割り込みハンドラ122は、システムメモリ120上に、
図5に示すように配置されているものとする。このことから明らかなように、PWM割り込みハンドラ121のデータ長は、0x480であり、キャプチャ割り込みハンドラ122のデータ長は、0x524である。本例では、キャッシュメモリ1131のデータブロック204のバウンダリーは32バイトであるため、それぞれの割り込みハンドラ121および122の全体がキャッシュメモリ1131にキャッシュされるために、以下の本数のキャッシュラインが必要となる。
PWM割り込みハンドラ121…37本
キャプチャ割り込みハンドラ122…42本
【0053】
CPUコア111は、例えば、システムメモリ120上に書き込まれている制御情報に基づいて、使用される割り込みハンドラが書き込まれるべきキャッシュメモリ1131上のアドレスに対応するシステムバスアドレス(ポートアドレス)を得ることができるようになっている。つまり、かかるシステムバスアドレス(ポートアドレス)に対する書き込みコマンドが発行されると、割り込みハンドラは、キャッシュメモリ1131上の対応するキャッシュラインに書き込まれることになる。本例では、PWM割り込みハンドラ121およびキャプチャ割り込みハンドラ122をキャッシュメモリ1131に書き込むためのシステムバスアドレス(ポートアドレス)はそれぞれ、0x5000_3400および0x5000_6540であるものとする。また、かかる制御情報には、キャッシュメモリ1131上の割り込みハンドラを削除(無効)にするためのシステムバスアドレス(クリアアドレス)もまた保持されている。本例では、PWM割り込みハンドラ121およびキャプチャ割り込みハンドラ122を無効にするためのシステムバスアドレス(クリアアドレス)はそれぞれ、0x6000_3400および0x6000_6540であるものとする。CPUコア111は、初期化処理において、または、初期化処理後、該制御情報の内容に従って、例えば
図6に示すようにアドレステーブル151を初期設定する。この時点では、キャッシュメモリ機構113のロード/ストア部1132は、所定のキャッシュアルゴリズムに従って、例えば、最もアクセス頻度が高いデータがキャッシュメモリ1131に保持されるように、動作を行う。
【0054】
次に、以上のように構成された半導体装置100における割り込みハンドラのキャッシュ処理について説明する。
図7は、本発明の一実施形態に係る半導体装置における割り込みハンドラのキャッシュ処理の一例を説明するためのフローチャートである。
【0055】
同図に示すように、半導体装置100のアプリケーションモジュール130は、状態信号ピン134に入力される状態信号が変化したか否かを監視する(S701)。半導体装置100を含む電子回路システムにおいて、その状態が変化し、状態信号が変化すると、アプリケーションモジュール130は、これを検出し(S701のYes)、所定の割り込みハンドラがキャッシュメモリ1131上でCPUコア111の利用に供されるようにするため、DMAC140に対してスタート信号を出力する(S702)。これにより、アプリケーションモジュール130は、DMAC140から出力される終了信号を待つことになる。
【0056】
DMAC140は、スタート信号を受けると、キャッシュメモリ1131上の所定のキャッシュラインを無効化するため、所定のシステムバスアドレス(クリアアドレス)に対して書き込みコマンドを発行し、バックリフィル部116は、これを検出して、アドレステーブル115に従って、キャッシュメモリ1131上の指定されたキャッシュラインを全て無効化する(S703)。即ち、本例では、DMAC140は、レジスタに予め定められた該割り込みハンドラと排他的な関係にある割り込みハンドラのクリアアドレスに対して書き込みコマンドを発行し、バックリフィル部116は、アドレステーブル115のクリア欄307に対応するインデックス欄303およびデータ長欄304で示されるキャッシュメモリ1131のキャッシュラインの有効フラグ欄202に“0”を書き込む。
【0057】
続いて、DMAC140は、システムメモリ120上の転送元アドレス(割り込みハンドラのターゲットアドレス)、転送先アドレス(割り込みハンドラのポートアドレス)および該割り込みハンドラのデータ長を含む所定のパラメータを所定のレジスタにセットして、該割り込みハンドラを構成するデータの転送を開始する(S704)。これにより、バスI/F112を介して転送されるデータを受けるバックリフィル部116は、アドレステーブル115に従って、キャッシュメモリ1131上の指定されたキャッシュラインに該データを書き込んでいくことになる。DMAC140は、かかるデータの転送を監視し(S704)、データの転送が完了すると(S704のYes)、アプリケーションモジュール130に対して終了信号を出力する(S705)。
【0058】
アプリケーションモジュール130は、DMAC140より終了信号を受けると、割り込みハンドラのキャッシュメモリ1131へのキャッシュが完了したと判断し、割り込みコントローラ114に対して割り込み信号INTを出力する(S706)。これにより、CPUコア111には割り込みがかかり、CPUコア111は、割り込みハンドラがキャッシュメモリ1131に書き込まれたことを認識することになる。
【0059】
図8A及び
図8Bは、本発明の一実施形態に係る半導体装置におけるバックリフィル部による処理の一例を説明するためのフローチャートである。バックリフィル部116は、例えば、クリアアドレスに従った処理とポートアドレスに従った処理を並行的に実行し得る。
【0060】
即ち、同
図Aに示すように、バックリフィル部116は、バスI/F112を介してクリアアドレスに対する書き込みコマンドがあったか否かを監視する(S801A)。バックリフィル部116は、クリアアドレスに対する書き込みコマンドがあったことを検出すると(S801AのYes)、アドレステーブル115を参照し、クリア欄307に書き込みコマンドが示すクリアアドレスが書き込まれているパラメータセットが示すキャッシュラインを無効化する(S802A)。即ち、バックリフィル部116は、書き込みコマンドが示すクリアアドレスが書き込まれたアドレステーブル115のクリア欄307に対応するインデックス欄303およびデータ長欄304で示されるキャッシュメモリ1131のキャッシュラインの有効フラグ欄202に“0”を書き込む。
【0061】
また、バックリフィル部116は、バスI/F112を介してポートアドレスに対する書き込みコマンドがあったか否かを監視する(S801B)。バックリフィル部116は、ポートアドレスに対する書き込みコマンドがあったことを検出すると(S801BのYes)、バスI/F112を介して転送されてくるデータを、アドレステーブル115に従って、キャッシュメモリ1131の対応するキャッシュラインに順次に書き込んでいく(S802B)。このように、DMAC140の制御の下でバスI/F112を介して転送されてくるデータは、バックリフィル部116によって、アドレステーブル115が示す内容に従い、キャッシュメモリ1131の所定の領域に書き込まれることになる。
【0062】
次に、割り込みハンドラがバスI/F112を介してキャッシュメモリ1131に書き込まれる場合の処理の流れについて、PWM割り込みハンドラ121およびキャプチャ割り込みハンドラ122のそれぞれを例にして説明する。
【0063】
<PWMモジュール131の有効化の場合>
まず、電子回路システムにおいて状態が変化し、アプリケーションモジュール130に対してPWMモジュール131を有効にするよう指示する状態信号が入力されたとする。アプリケーションモジュール130は、これを受けて、スタート信号を“Start[1:0]=10b”として出力することにより、DMAC140に対して、PWMモジュール131用に規定されたデータ転送を実行するよう指示を出す。
【0064】
DMAC140は、かかるスタート信号を受けると、クリアアドレス“0x6000_6540”に対して書き込みコマンドを発行する。クリアアドレス“0x6000_6540”は、PWM割り込みハンドラ121と排他的に使用されるキャプチャ割り込みハンドラ122を無効にするための指定アドレスである。バックリフィル部116は、該クリアアドレスに対する書き込みコマンドを検出すると、アドレステーブル115のパラメータセット番号“1”が示すパラメータセットの内容に従って、キャッシュメモリ1131のインデックス番号“0〜41”のキャッシュラインを
図9に示すように全て無効にする。
【0065】
次に、DMAC140は、バックリフィル部116によるキャッシュラインの無効化の完了後、以下の転送パラメータに従ったデータの転送を行うため、書き込みコマンドを発行する。
転送元アドレス:0x4000_3400(PWM割り込みハンドラ121のターゲットアドレス)
転送先アドレス:0x5000_3400(PWM割り込みハンドラ121のポートアドレス)
データ長:0x4A0(PWM割り込みハンドラ121のデータ長;32バイト×:37ライン)
【0066】
これにより、半導体装置100において、DMAC140の制御の下、
図10に示すようなデータ転送が開始する。バックリフィル部116は、該書き込みコマンドを検出すると、アドレステーブル115を参照し、アドレステーブル115のパラメータセット番号“0”が示すパラメータセットの内容に従って、キャッシュメモリ1131のキャッシュラインに順次にデータをキャッシュする。この結果、キャッシュメモリ1131の内容は、
図11に示すようにセットされる。同図から明らかなように、インデックス番号“0〜36”のキャッシュラインは有効フラグ欄202が有効を示すことになり、さらに自動的にロックされることで、ロード/ストア部1132によって書き換えられることはなくなる。
【0067】
DMAC140は、データの転送が完了すると、終了信号を“Finish[1:0]=10b”として出力することにより、アプリケーションモジュール130に対して、PWM割り込みハンドラ121のキャッシュメモリ1131への転送が完了したことを通知する。これに伴い、スタート信号および終了信号はともに“00b”の値に戻る。
【0068】
この後、アプリケーションモジュール130は、割り込みコントローラ114に対して割り込み信号INTを出力し、これにより、CPUコア111に割り込みをかける。CPUコア111は、該割り込みがかかると、キャッシュメモリ1131にキャッシュされたPWM割り込みハンドラ121がキャッシュメモリ1131に書き込まれたことを認識し、その後、PWMモジュール131からの割り込み信号INTがアサートされるごとに、キャッシュメモリ1131上のPWM割り込みハンドラを使用することになる。
【0069】
<キャプチャモジュール132の有効化の場合>
次に、電子回路システムにおいて状態が変化し、アプリケーションモジュール130に対してキャプチャモジュール132を有効にするよう指示する状態信号が入力されたとする。アプリケーションモジュール130は、これを受けて、スタート信号を“Start[1:0]=11b”として出力することにより、DMAC140に対してキャプチャモジュール132用に規定されたデータ転送を実行するよう指示を出す。
【0070】
DMAC140は、かかるスタート信号を受けると、クリアアドレス“0x6000_3400”に対して書き込みコマンドを発行する。クリアアドレス“0x6000_3400”は、キャプチャ割り込みハンドラ122と排他的に使用されるPWM割り込みハンドラ121を無効にするための指定アドレスである。バックリフィル部116は、該クリアアドレスに対する書き込みコマンドを検出すると、アドレステーブル115のパラメータセット番号“0”が示すパラメータセットの内容に従って、キャッシュメモリ1131のインデックス番号“0〜36”のキャッシュラインを
図12に示すように全て無効にする。
【0071】
次に、DMAC140は、バックリフィル部116によるキャッシュラインの無効化の完了後、以下の転送パラメータに従ったデータの転送を行うため、書き込みコマンドを発行する。
転送元アドレス:0x4000_6540(キャプチャ割り込みハンドラ122のターゲットアドレス)
転送先アドレス:0x5000_6540(キャプチャ割り込みハンドラ122のポートアドレス)
データ長:0x540(キャプチャ割り込みハンドラ122のデータ長;32バイト×:42ライン)
【0072】
これにより、半導体装置100において、DMAC140の制御の下、
図13に示すようなデータ転送が開始する。バックリフィル部116は、該書き込みコマンドを検出すると、アドレステーブル115を参照し、アドレステーブル115のパラメータセット番号“1”が示すパラメータセットの内容に従って、キャッシュメモリ1131のキャッシュラインに順次にデータを書き込む。この結果、キャッシュメモリ1131の内容は、
図14に示すようにセットされる。同図から明らかなように、インデックス番号“0〜41”のキャッシュラインは有効フラグ欄202が有効を示し、さらに自動的にロックされることで、ロード/ストア部1132によって書き換えられることはなくなる。
【0073】
DMAC140は、データの転送が完了すると、終了信号を“Finish[1:0]=11b”として出力することにより、アプリケーションモジュール130に対して、キャプチャ割り込みハンドラ122のキャッシュメモリ1131への転送が完了したことを通知する。これに伴い、スタート信号および終了信号はともに“00b”の値に戻る。
【0074】
この後、アプリケーションモジュール130は、割り込みコントローラ114に対して割り込み信号INTを出力し、これにより、CPUコア111に割り込みをかける。CPUコア111は、該割り込みがかかると、キャッシュメモリ1131にキャッシュされたキャプチャ割り込みハンドラ122がキャッシュメモリ1131に書き込まれたことを認識することになる。その後、キャプチャモジュール132から割り込み信号INTがアサートされるごとに、該キャッシュメモリ1131上の割り込みを使用することになる。
【0075】
以上のように、本実施形態によれば、システムオンチップ型半導体装置100において、CPUコア111による処理を介すことなく、該CPUコア111の特定のキャッシュラインに対してデータがキャッシュされることになる。従って、CPUコア111は、かかるキャッシュラインに対してデータの置換が行われている間であっても、他の処理を実行することができるようになる。
【0076】
また、本実施形態によれば、半導体装置100を用いたシステムの状態に変化が生じて、キャッシュメモリ1131上の特定のキャッシュラインにロックされたデータを置換する必要が生じた場合であっても、CPUコア111による処理を介すことなく、円滑に、特定のキャッシュラインに対するデータを置換し、該特定のキャッシュラインを再びロックすることができるようになる。
【0077】
図15は、本発明の一実施形態に係る半導体装置の概略構成の変形例を示す図である。本例の半導体装置100’は、同図に示すように、プロセッサモジュール110のロード/ストア部1501が上述したバックリフィル部116の機能を包含するように構成されている点で、
図1に示した半導体装置100と異なっている。即ち、ロード/ストア部1501は、バスI/F112を介して書き込みコマンドを検出した場合には、アドレステーブル115に示す内容に従って、バスI/F112を介して転送されてくるデータをキャッシュメモリ1131に書き込むように動作する。
【0078】
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。
【0079】
例えば、本明細書に開示される方法においては、その結果に矛盾が生じない限り、ステップ、動作又は機能を並行して又は異なる順に実施しても良い。説明されたステップ、動作および機能は、単なる例として提供されており、ステップ、動作および機能のうちのいくつかは、発明の要旨を逸脱しない範囲で、省略でき、また、互いに結合させることで一つのものとしてもよく、また、他のステップ、動作又は機能を追加してもよい。
【0080】
また、本明細書では、さまざまな実施形態が開示されているが、一の実施形態における特定のフィーチャ(技術的事項)を、適宜改良しながら、他の実施形態に追加し、又は該他の実施形態における特定のフィーチャと置換することができ、そのような形態も本発明の要旨に含まれる。