JP2011191865A - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP2011191865A
JP2011191865A JP2010055697A JP2010055697A JP2011191865A JP 2011191865 A JP2011191865 A JP 2011191865A JP 2010055697 A JP2010055697 A JP 2010055697A JP 2010055697 A JP2010055697 A JP 2010055697A JP 2011191865 A JP2011191865 A JP 2011191865A
Authority
JP
Japan
Prior art keywords
event
address
code
interrupt
array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2010055697A
Other languages
English (en)
Inventor
Akira Tsurugasaki
晃 鶴ヶ崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2010055697A priority Critical patent/JP2011191865A/ja
Publication of JP2011191865A publication Critical patent/JP2011191865A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】割り込みイベント処理シーケンス、分岐イベント処理シーケンス、メモリ参照イベント処理シーケンスを高速に処理する。
【解決手段】第2記憶部(104)、CPUコア(103)、専有バス(105)を設ける。CPUコアは、例外又は割り込みのイベントが発生された場合、上記専有バスを介して上記第2記憶部にアクセスし、例外又は割り込みのイベントに対応する例外又は割り込みの処理ルーチンの先頭アドレス情報を取得する。またCPUコアは、分岐命令等による分岐イベントが発生された場合、上記専有バスを介して上記第2記憶部にアクセスし、分岐のイベントに対応した分岐先アドレスと当該分岐先の命令列等を取得する。さらにCPUコアは、オペランド参照命令によるメモリ参照イベントが発生した場合、上記専有バスを介して上記第2記憶部にアクセスし、メモリ参照のイベントに対応したメモリ参照先アドレスと当該参照先データ列等を取得する。
【選択図】図1

Description

本発明は、半導体装置、さらにはそれにおける割り込みイベントを含むイベント処理の制御技術に関する。
半導体装置の一例としてマイクロコンピュータ(「マイクロプロセッサ」とも称される)を挙げることができる。マイクロコンピュータはCPU(Central Processing Unit;中央処理装置)を含み、このCPUでは、例外に対する処理や、割り込みに対する処理が行われる。「例外」は、プロセッサが命令の実行中にゼロ除算のようなエラー条件を検出したときに発生する。CPUは、保護違反、ページ・フォルト、内部マシン・フォルトをはじめ、さまざまなエラー条件を例外として検出する。これに対して「割り込み」は、通常、プログラムの実行中に、周辺モジュールからのサービス要求のような、CPUにとって外部的なイベントをハードウェアから要求を受けたときに起こる。これを「ハードウェア割り込み」という。また、ソフトウェアでも、所定命令を実行することにより割り込みを発生することができ、それを「ソフトウェア割り込み」という。
例外又は割り込みに応じて呼び出されるプログラムを「ハンドラー」という。例えば割り込みハンドラーでは、割り込み要因の解析、及び割り込み要因に対応した割り込み処理ルーチンの先頭アドレスが生成され、そのアドレスに分岐される。例外ハンドラーでは、例外処理ルーチンの先頭アドレスが生成され、そのアドレスに分岐される。処理ルーチンの先頭アドレスは「ベクタ」と称される。ハンドラーによるこのアドレス生成はソフトウェア処理であり、CPUによって管理されるアドレス空間上に配置されたベクタテーブルを参照するためのメモリアクセスを伴う。例外や割り込みのイベントが発生すると、CPUは実行中のプログラムが扱っているデータなどをメモリ上に退避して、対応するハンドラーを呼び出して処理する。そしてハンドラーによる処理が終了すると、CPUは、先に退避しておいたデータを元に戻して分岐前のプログラムの実行を再開する。
特許文献1には、検出したい割り込み要因を予め割り込みフラグパターンレジスタに設定しておくことで、入力された割り込みフラグの値に対し、前記設定した分の割り込み要因を検出し、割り込み判定処理を行い、その割り込み要因に該当するベクタ番号を出力する技術が記載されている。
特許文献2には、外部割り込みを対象とし、メモリが記憶する複数の処理プログラムを指定するプログラム指定情報を記憶する処理記憶部を有し、メモリ内のデータまたはプログラム指定情報のいずれかをセレクタで選択し、プログラム指定情報に応じたメモリ内の処理プログラムを読み出して実行する技術が記載されている。
特開2005−85055号公報 特開2006−202034号公報
割り込みハンドラーを用いる場合、割り込みが発生してから実際の要因別の処理ルーチンが実行されるまでには、割り込みハンドラー処理に要するタイムラグがあり、これが、実質上の割り込みの応答時間、処理性能の低下を生じさせている。通常、割り込み応答時間は、割り込み要求が発生してからCPUが割り込み要求を受け付けて、割り込みハンドラに分岐するまでの時間で規定され、ハンドラー処理時間は勘案されていない。これは、ハンドラー処理時間が、ソフトウェアの処理内容、実行状態、およびシステムの稼動状態に依存するため、確定が困難とされるためである。
特許文献1に記載された技術によれば、複数の割り込み要因の中から特定の要因に対応したベクタ番号を出力するようにしている。このベクタ番号からベクタテーブルのアドレスを生成し、それを参照して、そこに格納されている該当要因の割り込みベクタ(割り込み要因に対応する割り込み処理ルーチンの先頭アドレス)が取得される。しかし、ベクタ番号からベクタテーブルのアドレスを生成し、メモリを参照する必要があり、それに要する時間は、割り込みベクタが得られるまでの時間短縮を阻害することが、本願発明者によって見いだされた。
特許文献2に記載された技術によれば、特許文献2における図1に示されるようにマイクロプロセッサ内のデータ入力部に共通バスを介してデータを供給するようにしているため、そこにはセレクタ等の周辺回路を設ける必要がある。
本発明の目的は、例外や割り込みのイベントが発生した場合、対応する処理ルーチンへ分岐(遷移)する動作、つまり当該イベント処理ルーチンへの分岐処理シーケンスを高速に処理するための技術を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
すなわち、半導体装置は、イベントの発生により起動される処理を実行可能なCPUコアを含む。上記イベントは、識別コードのイベント・コードにより各々を識別可能とされ、上記処理は、例外処理、およびハードウェア割り込み処理、ソフトウェア割り込み処理、分岐処理、およびメモリ参照処理の少なくとも一つを含み、さらに、例外要因、ハードウェア割り込み要因、ソフトウェア割り込み要因、分岐先アドレス、およびメモリ参照先アドレスを含む要因に基づいて個別の処理を区別可能とされる。また、半導体装置は、例外又は割り込み処理ルーチンのベクタテーブルを形成可能な第1記憶部と、上記イベント・コードを格納可能なイベント記憶部と、上記イベント記憶部に対応する第2記憶部と、上記イベント・コードを上記第2記憶部へ伝達可能な専有バスとを含む。上記第2記憶部は、上記処理に関連付けられるアドレス、命令コード、データ、および当該処理に係わる制御情報を含む第2イベント情報を上記イベント・コードに対応させて格納する第1機能と、上記第1機能によって格納された上記第2イベント情報の中から、入力されたイベント・コードに対応する第2イベント情報を選択する第2機能とを含む。また上記第2記憶部は、上記第2機能によって選択された第2イベント情報を、上記専有バスを介して上記CPUコアに出力する第3機能を含む。そして、上記CPUコアは、上記専有バスを介して伝達された上記第2イベント情報に基づいて上記処理を実行する。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、例外や割り込みのイベントが発生した場合、対応する当該イベント処理シーケンスを高速に処理することができる。
本発明にかかる半導体装置の一例とされるマイクロコンピュータの構成例ブロック図である。 図1に示されるマイクロコンピュータの比較対象とされるマイクロコンピュータの構成例ブロック図である。 図2に示されるマイクロコンピュータにおける割り込みイベント処理シーケンスの説明図である。 図1に示されるマイクロコンピュータにおける主要部の動作タイミング図である。 ハードウェア割り込み処理とソフトウェア割り込み処理の説明図である。 図1に示されるマイクロコンピュータと図2に示されるマイクロコンピュータとのベクタフェッチの所要時間を比較するための説明図である。 図1に示されるマイクロコンピュータに含まれるイベントキャッシュメモリの構成例ブロック図である。 上記マイクロコンピュータで実行されるデータ転送命令のフォーマット説明図である。 上記マイクロコンピュータで実行されるデータ転送命令のフォーマット説明図である。 図1に示されるマイクロコンピュータに含まれるイベントキャッシュメモリの別の構成例ブロック図である。 図1に示されるマイクロコンピュータに含まれるイベントキャッシュメモリの別の構成例ブロック図である。 上記マイクロコンピュータで実行されるデータ転送命令のフォーマット説明図である。 上記マイクロコンピュータで実行されるデータ転送命令のフォーマット説明図である。 図1に示されるマイクロコンピュータに含まれるイベントキャッシュメモリの別の構成例ブロック図である。 上記マイクロコンピュータで実行されるデータ転送命令のフォーマット説明図である。 上記マイクロコンピュータで実行されるデータ転送命令のフォーマット説明図である。 上記マイクロコンピュータで実行されるデータ転送命令のフォーマット説明図である。 図1に示されるマイクロコンピュータに含まれるイベントキャッシュメモリの別の構成例ブロック図である。 図1に示されるマイクロコンピュータに含まれるイベントキャッシュメモリの別の構成例ブロック図である。 図1に示されるマイクロコンピュータに含まれるイベントキャッシュメモリの別の構成例ブロック図である。 上記マイクロコンピュータで実行されるデータ転送命令のフォーマット説明図である。 上記マイクロコンピュータで実行されるデータ転送命令のフォーマット説明図である。
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕本発明の代表的な実施の形態に係る半導体装置(100)は、イベントの発生により起動される処理を実行可能なCPUコア(103)を含む。上記イベントは、識別コードのイベント・コードにより各々を識別可能とされ、上記処理は、例外処理、およびハードウェア割り込み処理、ソフトウェア割り込み処理、分岐処理、およびメモリ参照処理の少なくとも一つを含み、さらに、例外要因、ハードウェア割り込み要因、ソフトウェア割り込み要因、分岐先アドレス、およびメモリ参照先アドレスを含む要因に基づいて個別の処理を区別可能とされる。また、半導体装置は、例外又は割り込み処理ルーチンのベクタテーブルを形成可能な第1記憶部(113)と、上記イベント・コードを格納可能なイベント記憶部(14)と、上記イベント記憶部に対応する第2記憶部(104)と、上記イベント・コードを上記第2記憶部へ伝達可能な専有バス(105)とを含む。
上記第2記憶部(104)は、上記処理に関連付けられるアドレス、命令コード、データ、および当該処理に係わる制御情報を含む第2イベント情報を上記イベント・コードに対応させて格納する第1機能と、上記第1機能によって格納された上記第2イベント情報の中から、入力されたイベント・コードに対応する第2イベント情報を選択する第2機能とを含む。また上記第2記憶部は、上記第2機能によって選択された第2イベント情報を、上記専有バスを介して上記CPUコアに出力する第3機能を含む。
そして、上記CPUコアは、上記専有バスを介して伝達された上記第2イベント情報に基づいて上記処理を実行する。
上記の構成により、例外又は割り込みのイベントが発生された場合に、ベクタテーブルの参照やハンドラーを経由しないで、ハードウェアによって当該イベント処理ルーチンの先頭アドレスを取得することができる。これにより、例外や割り込みのイベントが発生した場合、当該イベント処理ルーチンへの分岐処理シーケンス(以下、「イベント処理シーケンス」と称す)の高速化を達成することができる。
〔2〕上記〔1〕において、上記CPUコア(103)には、上記共有バスを介して上記第2記憶部に例外又は割り込みの処理ルーチンの先頭アドレス情報を書き込む処理を含めることができる。
〔3〕上記〔2〕において、上記第2記憶部(104)は、上記CPUコアから上記専有バスを介して上記例外又は割り込みのイベントを示すコードが伝達され、伝達されたコードと一致するコードが上記第2記憶部内に存在する場合には、当該コードに対応する上記先頭アドレス情報を上記専有バス経由で上記CPUコアに通知するように構成することができる。
〔4〕上記〔3〕において、上記CPUコア(103)は、次に実行すべき命令の格納アドレスを保持するプログラムカウンタ(12)と、上記専有バス経由で上記第2記憶部から通知された上記先頭アドレス情報を選択的に上記プログラムカウンタに設定するための選択回路(13)とを含んで構成することができる。
〔5〕上記〔4〕において、上記第2記憶部(104)は、上記例外又は割り込みのイベントに対応するコードが格納されるコードアレイ(71)と、上記コードアレイ内のコードに対応する例外又は割り込みの処理ルーチンの先頭アドレス情報が格納されるアドレスアレイ(72)とを含む。さらに上記第2記憶部(104)は、上記CPUコアから上記専有バスを介して上記例外又は割り込みのイベントを示すコードが伝達された場合に、当該コードが上記コードアレイ内のコードと一致するか否かを判定するコード一致判定論理ブロック(73)と、上記コード一致判定論理ブロックでの判定結果に応じて、上記アドレスアレイ内の先頭アドレス情報を選択するアドレス選択論理ブロック(74)とを含む。このとき、上記アドレス選択論理ブロックの出力が上記専有バス経由で上記CPUコアに伝達される。
〔6〕上記〔5〕において、上記第2記憶部(104)は、更に上記アドレスアレイに格納されている先頭アドレス情報に対応する例外又は割り込みの処理ルーチンにおける先頭命令列が格納されるコマンドアレイ(75)と、上記コード一致判定論理ブロックでの判定結果に応じて、上記コマンドアレイ内の先頭命令列を選択するためのコマンド選択論理ブロック(76)とを含んで構成することができる。このとき、上記コマンドアレイには、他のキャッシュメモリに対するプリフェッチを要求する制御ビットが格納され、上記コマンド選択論理ブロックの出力が上記専有バス経由で上記CPUコアに伝達される。
〔7〕上記〔4〕において、上記第2記憶部(104)は、上記例外又は割り込みのイベントに対応するコードが格納されるコードアレイ(71)と、上記コードアレイ内のコードに対応する例外又は割り込みの処理ルーチンの先頭アドレス情報として、当該先頭アドレスに対応するオフセットアドレスが格納されるアドレスアレイ(72)とを含む。さらに上記第2記憶部(104)は、上記CPUコアから上記専有バスを介して上記例外又は割り込みのイベントを示すコードが伝達された場合に、当該コードが上記コードアレイ内のコードと一致するか否かを判定するコード一致判定論理ブロック(73)と、上記コード一致判定論理ブロックでの判定結果に応じて、上記アドレスアレイ内のオフセットアドレスを選択するアドレス選択論理ブロック(74)とを含む。このとき、上記アドレス選択論理ブロックの出力が上記専有バス経由で上記CPUコアに伝達される。
〔8〕上記〔7〕において、上記CPUコア(103)には、上記専有バス経由で上記第2記憶部(104)から伝達されたオフセットアドレスにベースアドレスを加算することで有効な先頭アドレスを形成するための加算器(15)を含めることができる。
〔9〕上記〔2〕において、上記第2記憶部(104)には、上記例外又は割り込みのイベントに対応する例外又は割り込みの処理ルーチンの先頭アドレス情報が格納されるアドレスアレイ(72)を含めることができる。このとき、上記アドレスアレイ内の先頭アドレス情報は、上記例外又は割り込みのイベントを示すコードを参照アドレスとして読み出し可能にされ、上記専有バスを経由して上記CPUコアに伝達される。
〔10〕上記〔4〕において、上記第2記憶部(104)には、第1イベントキャッシュメモリ(104−1)と、第2イベントキャッシュメモリ(104−2)と、第3イベントキャッシュメモリ(104−3)とを設けることができる。第1イベントキャッシュメモリ(104−1)は、例外イベントに対応する例外処理ルーチンの先頭アドレスを出力可能にされ、第2イベントキャッシュメモリ(104−2)は、ハードウェア割り込みイベントに対応する例外処理ルーチンの先頭アドレスを出力可能にされ、第3イベントキャッシュメモリ(104−3)は、ソフトウェア割り込みイベントに対応する例外処理ルーチンの先頭アドレスを出力可能にされる。このとき、CPUコア(103)は、受け付けられた例外イベントに対応するコードを保持する第1イベントコードレジスタ(14−1)と、受け付けられたハードウェア割り込みイベントに対応するコードを保持する第2イベントコードレジスタ(14−2)と、受け付けられたソフトウェア割り込みイベントに対応するコードを保持する第3イベントコードレジスタ(14−3)とを含んで構成される。上記第1イベントコードレジスタ内のコードに基づいて上記第1イベントキャッシュメモリ内の先頭アドレスが読み出され、上記第2イベントコードレジスタ内のコードに基づいて上記第2イベントキャッシュメモリ内の先頭アドレスが読み出され、上記第3イベントコードレジスタ内のコードに基づいて上記第3イベントキャッシュ内の先頭アドレスが読み出され、上記専有バスを経由して上記CPUコアに伝達される。
〔11〕上記〔4〕において、上記第2記憶部(104)は、例外又は割り込みのイベントに対応する例外又は割り込みの処理ルーチンの先頭アドレスを出力可能な第1イベントキャッシュメモリ(104−1)と、外部周辺機器からの割り込み要求を識別するコードに対応する例外処理ルーチンの先頭アドレスを出力可能な第2イベントキャッシュメモリ(104−2)とを含んで構成することができる。このとき、上記CPUコアは、受け付けられた例外又は割り込みのイベントを示すコードを保持する第1イベントコードレジスタ(14−1)と、上記外部周辺機器からの割り込み要求を識別するコードを保持する第2イベントコードレジスタ(14−2)とを含んで構成される。上記第1イベントコードレジスタ内のコードに基づいて上記第1イベントキャッシュメモリ内の先頭アドレスが読み出され、上記第2イベントコードレジスタ内のコードに基づいて上記第2イベントキャッシュメモリ内の先頭アドレスが読み出され、上記専有バスを経由して上記CPUコアに伝達される。
〔12〕上記〔6〕において、上記第2記憶部(104)は、分岐命令の分岐先アドレスを識別するコードが格納されるコードアレイ(71)を含み、上記コードアレイ内のコードに対応する分岐先アドレス情報が格納されるアドレスアレイ(72)と、上記分岐先アドレスを先頭とする命令列(以下、「分岐先命令列」と称す)が格納されるコマンドアレイ(75)とを含む。
〔13〕上記〔6〕において、上記第2記憶部(104)は、オペランドデータを参照する参照先アドレスを識別するコードが格納されるコードアレイ(71)を含む。さらに上記第2記憶部は、上記コードアレイ内のコードに対応する参照先アドレス情報および当該イベント・コードがオペランドデータの参照か否かを示す制御ビットが格納されるアドレスアレイ(72)と、上記参照先アドレスを先頭とするデータ列(以下、「参照先データ列」と称す)が格納されるコマンドアレイ(75)とを含む。
2.実施の形態の詳細
実施の形態について更に詳述する。
<実施の形態1>
図1には、本発明にかかる半導体装置の一例とされるマイクロコンピュータが示される。
図1に示されるマイクロコンピュータ100は、特に制限されないが、公知の半導体集積回路製造技術により、単結晶シリコン基板などのひとつの半導体基板に形成される。マイクロコンピュータ100は、データキャッシュメモリ101、命令キャッシュメモリ102、CPUコア103、イベントキャッシュメモリ(第2記憶部、E-Cache)104、周辺モジュール109,110、割り込みコントローラ(INTC)111、RAM(Random Access Memory)112、ROM(Read Only Memory)113、外部バスインタフェース116を含む。イベントキャッシュメモリ104は、特に制限されないが連想メモリとされ、割り込みイベント・コードを検索キーとした連想アクセスにより割り込みベクタ等を高速に取得することができるようになっている。周辺モジュール109,110は、時間計測のためのタイマーユニットや、調歩同期式シリアル通信を可能とするシリアルコミュニケーションインタフェースなどとされるが、それに限定されるものではない。割り込みコントローラ111は、複数の割り込み要求を調停する機能を有し、周辺モジュール109,110からの割り込み及び外部割り込み端子からのNMI(Non-Maskable Interrupt)やIRQ(Interrupt Request)をサポートする。RAM112はランダムアクセス可能なメモリであり、ROM113は読み出し専用メモリである。割り込みベクタ(割り込み要求イベントに対応する割り込み処理ルーチンの先頭アドレス)は、ROM113又はRAM112のベクタテーブル領域に格納されている。データキャッシュメモリ101、命令キャッシュメモリ102、CPUコア103、及びイベントキャッシュメモリ104などのモジュールは、共有バス107に結合される。周辺モジュール109,110、割り込みコントローラ111、RAM112、ROM113は周辺バス108に結合される。周辺バス108は外部バスインタフェース116を介して外部バス(図示せず)に結合される。プログラムやデータは、共有バス107や周辺バス108を介してROM113やRAM112又は外部バス上に配置された外部メモリからCPUコア103に読み込まれるが、使用頻度の高いデータや命令については、データキャッシュメモリ101や命令キャッシュメモリ102の記憶情報が利用される。CPUコア103は、プログラムアダー(PCA)11、プログラムカウンタ(PC)12、選択回路13、イベントコードレジスタ(INTEVT、イベント記憶部)14を含む。上記プログラムカウンタ12は、次に実行すべき命令の格納アドレスを保持しているレジスタとされる。CPUコア103は、プログラムカウンタ12が指し示す命令をROM113やRAM112又は外部バス上に配置された外部メモリから読み出して実行する。命令を読み出すと、上記プログラムアダー11により自動的に次に実行すべき命令を指し示すようにインクリメントされる。上記選択回路13は、上記プログラムアダー11の出力とイベントキャッシュメモリ104から伝達された割り込みイベントのベクタとを選択的にプログラムカウンタ12に供給する。上記イベントコードレジスタ14は、割り込みコントローラ111からの割り込み要求がCPUコア103によって受け付けられて確定された割り込みイベントを識別するコード情報(割り込みイベント・コード)を保持する。
上記イベントキャッシュメモリ104は、専有バス105及び共有バス107を介してCPUコア103に結合され、エントリ情報(第2イベント情報)が格納される。
複数のモジュール間で共有される共有バス107は、CPUコア103によって管理されるアドレス空間からイベントキャッシュメモリ104に対して読み出し又は書き込みのためのアクセスを可能とする。例えば読み出しアクセスでは、イベントキャッシュメモリ104のエントリ情報(割り込みイベント・コード、割り込みベクタ、有効ビット等の第2イベント情報)が共有バス107を介してCPUコア103に読み出される。また書き込みアクセスでは、イベントキャッシュメモリ104のエントリ情報(割り込みイベント・コード、割り込みベクタ、有効ビット等)が共有バス107を介してイベントキャッシュメモリ104に格納される。
専有バス105は、割り込みイベントが発生した時に、CPUコア103が当該イベントに対応する割り込みベクタを取得するための専用インタフェースとされる。この専有バス105は、CPUコア103とイベントキャッシュメモリ104との間での信号のやり取りのみに使用されるため、CPU103によって管理されるアドレス空間から分離されている。特に制限されないが、専有バス105のインタフェースの構成要素として、割り込みイベントを識別する信号(割り込みイベント・コード)、割り込みベクタ信号(vector-address)、制御信号1(イベントキャッシュメモリ104に入力されるactive制御等)、制御信号2(イベントキャッシュメモリ104から出力されるenable制御等)を挙げることができる。
図7には、上記イベントキャッシュメモリ104の構成例が示される。
図7に示されるイベントキャッシュメモリ104は、4ウェイセットアソシアティブ方式とされ、1ウェイ当たり1キャッシュラインが設けられている。キャッシュラインは、有効ビット(V)及び割り込みイベント・コード(code)を保持するコードアレイ71、割り込みベクタ(Vector address)を保持するアドレスアレイ72を含む。さらに、上記コードが一致するか否かを判別するためのコード一致比較論理ブロック73、および割り込みベクタを選択するためのアドレス選択論理ブロック74が設けられる。共有バス107は、アドレスバス107Aとデータバス107Bとを含み、このアドレスバス107Aとデータバス107Bを介してコードアレイ71及びアドレスアレイ72の読み出しおよび書き込みが可能とされる。
有効ビット(V)は、イベントキャッシュメモリ104におけるキャッシュラインに格納されたデータの有効性を示す。例えば、このビットが論理値“1”の時、当該キャッシュラインのデータは有効とされ、論理値“0”の時、当該キャッシュラインのデータは無効とされる。尚、特に制限されないが、パワーオンリセット時には、無効に初期化される。
コードアレイ71には、基本的に割り込みイベントコード(intevt-code)が格納される。ただし、コードの冗長ビットは削除可能である。実効ビット長は、CPUのシステムが実装する割り込み要求の総数(割り込み要因の本数ではない)を識別するのに必要十分なビット長とされる。
アドレスアレイ72には、割り込みイベント・コードに対応した割り込みベクタ(vector-address)が格納される。ビット長は、特に制限されないが、基本的に32ビット長とし、CPUコア103によって管理されるアドレス空間に依存して実効ビット長が確保可能とされる。尚、一般にベクタアドレスは偶数番地のみのため、最下位のビット0は常に論理値“0”とするか、またはそれ自体が存在しないようにしても良い。
コード一致判定論理ブロック73は、CPUコア103が受け付けた割り込みイベント・コードとキャッシュラインのコード部(コードアレイ71)に格納される割り込みイベント・コードを比較する。CPUコア103からの割り込みイベント・コードとコードアレイ71に格納される割り込みイベント・コードが一致し、かつ、その当該キャッシュラインの有効ビット(V)が有効状態の場合、その当該キャッシュラインはキャッシュ・ヒットとされ、イネーブル信号(enable)がアサートされる。またキャッシュ・ヒットしたキャッシュラインのウェイを示すためのウェイ選択情報(way-select)が生成される。
アドレス選択論理ブロック74は、コード一致判定論理ブロック73からのウェイ選択情報(way-select)に基づいて、当該ウェイのアドレス部(アドレスアレイ72)に格納されている割り込みベクタを選択し、それを専有バス105経由でCPUコアの選択回路13に送出する。
以上により、CPUコア103は、イベントキャッシュメモリ104を介して、受け付けた割り込みイベント・コードに対応した割り込みベクタを取得することが可能となる。
イベントキャッシュメモリ104における初期化および登録と一般的なキャッシュメモリにおける場合との主たる相違は次の通りである。
一般的なキャッシュメモリでは、CPUの命令処理でキャッシュ・ミスが発生するたびに、置換エントリの選択(例えば、LRU;Least Recently Used)やデータ更新等のペナルティ処理をハードウェア的に逐次処理している。
これに対してイベントキャッシュメモリ104では、そのような動的な処理は不要とされ、基本的にソフトウェア処理によりデータの登録や置換が行われる。イベントキャッシュメモリ104は、基本的にシステムのパワーオンリセット等の初期化ルーチンにおいて、対象とする割り込みイベントの情報(割り込みイベント・コード、割り込みベクタ等)が登録されることで初期化される。またキャッシュミス時には従来の処理シーケンスを継続可能とされる。
この相違の事由として、割り込みベクタの挙動は、システムの開発時期に随時修正されるが、通常のシステム稼働中、基本的に割り込みベクタを修正することがないためである。つまり割り込みベクタは半固定の定数データとして扱うことができる。このため、通常動作時は、イベントキャッシュメモリ104の初期設定をそれ以降に変更する必要がほとんどない。尚、初期化時以外でイベントキャッシュメモリ104のエントリの置換または更新処理は、例えば、割り込み要求を禁止にした状態で実施することができる。
イベントキャッシュメモリ104におけるエントリの検索と一般的なキャッシュメモリにおける場合との主たる相違は次の通りである。
一般的なキャッシュメモリでは、メモリを参照する場合、これに先立って参照アドレスを導出、確定させるための前処理を必要とし、確定された参照アドレスを検索キーとしてエントリの検索が実行される。これに対して、イベントキャッシュメモリ104では、CPUコア103が割り込みイベントを識別する情報(割り込みイベント・コード、INTEVT)を確定させた時点(換言すれば割り込みを受け付けた時点)で、当該割り込みイベント・コードを検索キーとして、コードアレイ71の検索が可能とされる。
またイベントキャッシュメモリ104におけるアクティブ制御(活性制御)と一般的なキャッシュメモリにおける制御との主たる相違は次の通りである。
一般的なキャッシュメモリでは、システム稼働中、メモリ参照がランダムに発生するために、常時、活性状態にするか、高度なアクティブ制御をする必要がある。これに対してイベントキャッシュメモリ104の活性状態は、割り込みイベント発生時に専有バス105を介してイベントキャッシュメモリ104をアクセスして割り込みベクタを取得する時、および共有バス107を介してイベントキャッシュメモリ104を書き込み又は読み出しのために参照する時に限ることができる。これ以外では、基本的に停止状態にできる。よってイベントキャッシュメモリ104の消費電力は、これらの動作状態に応じたアクティブ制御により、容易に抑止できる。例えば割り込みイベント発生時、CPUコア103からのアクティブ制御信号(active)により、イベントキャッシュメモリ104の活性状態を動的に制御する。割り込みイベント発生時、CPUコア103は割り込みイベントの確定に合わせて、アクティブ制御信号をアサートしてイベントキャッシュメモリ104を起動する。イベントキャッシュメモリ104から割り込みベクタを取得後には、アクティブ制御信号をネゲートしてイベントキャッシュメモリ104を停止させる。例えば共有バス107経由でイベントキャッシュメモリ104を参照する場合、特定の制御ビットを設ける事により、イベントキャッシュメモリ104の活性状態を静的に制御する。イベントキャッシュメモリ104を書き込み又は読み出し参照する場合、その制御ビットを有効状態にしてイベントキャッシュメモリ104を事前に活性状態にする。書き込み又は読み出し参照を完了した以降は、その制御ビットを無効状態してイベントキャッシュメモリ104を停止させる。
イベントキャッシュメモリ104へのデータ登録は以下のように行われる。
イベントキャッシュメモリ104のコードアレイ71、アドレスアレイ72等は、CPUコア103のデータ転送命令によるデータ登録または参照を可能にするために、システムのアドレス空間に割り付けられる。これを「イベントキャッシュメモリ104のメモリ割付け」と称する。また、そのアドレスを「メモリ割付けアドレス」と称する。CPUコア103のデータ転送命令には、アセンブリのニーモニック表記の場合、例えば、次の様な命令フォーマットの例が考えられる。尚、これは例示であり、これに限定されるものでは無い。
イベントキャッシュメモリ104にデータを登録する場合の命令フォーマットは、特に制限されないが、「MOV.L Rw、 @Ra」のようになる。この場合、「Rw」に格納されたデータを、「Ra」が指し示すイベントキャッシュメモリ104のメモリ割付けアドレスに書き込む。これにより、「Rw」の格納データは、当該イベントキャッシュメモリ104に書き込まれる。
イベントキャッシュメモリ104の内容を参照する命令フォーマットは、特に制限されないが、「MOV.L @Ra、 Rr」のようになる。この場合、「Ra」が指し示すイベントキャッシュメモリ104のメモリ割付けアドレスから読み出したデータが「Rr」に格納される。これにより、当該イベントキャッシュメモリ104の内容は「Rr」に読み出される。
ここで、「MOV.L」は、アクセスサイズがロングワードのデータ転送命令の名称であり、「Ra」、「Rw」、「Rr」は、それぞれ汎用レジスタの名称である。尚、「Ra」をデータ転送命令のアドレス部、または単にアドレス部と称する。同様に、「Rw」、「Rr」をデータ転送命令のデータ部、または単にデータ部と称する。
上記データ転送命令におけるアドレス部及びデータ部には、各々、図8や図9に示されるようなフォーマット例が考えられる。尚、これは例示であり、これに限定されるものでは無い。
図8には、アドレスアレイに対するデータ転送命令のフォーマット例が示される。このフォーマット例では、アドレス部(Ra)には、イベントキャッシュメモリ104におけるアドレスアレイ72のメモリ割付けアドレス(mapped-address)、ウェイ選択(W)が指定される。データ部(Rw/Rr)には、割り込みベクタ(vector-address)が割り当てられる。
図9には、コードアレイに対するデータ転送命令のフォーマット例が示される。このフォーマット例では、アドレス部(Ra)には、イベントキャッシュメモリ104におけるコードアレイ71のメモリ割付けアドレス(mapped-address)、ウェイ選択(W)が指定される。データ部(Rw/Rr)には、有効ビット(V)、割り込みイベントコード(intevt-code)が割り当てられる。
次に、上記のように構成されたマイクロコンピュータ100における割り込みイベント処理シーケンスの基本的な動作を説明する。
図4には、マイクロコンピュータ100における主要部の動作タイミングが示される。尚、これは例示であり、これに限定されるものでは無い。
割り込みコントローラ111からCPUコア103に対して割り込み要求がなされ(121)、それがCPUコア103によって受け付けられると、例外・割り込み要求のアクノリッジ信号(int_ack)がハイレベルにアサートされる。同時にCPUコア103は、割り込みイベント・コード(122)をイベントコードレジスタ14に確定させて、割り込みイベント処理シーケンスを起動する。このとき、制御信号1(active)がハイレベルにアサートされ、それに呼応してイベントキャッシュメモリ104が起動される(T1)。
マイクロコンピュータ100のレジスタ退避(SR(ステータスレジスタ)やPC(プログラムカウンタ)等の退避)と並行して、イベントキャッシュメモリ104は、割り込みイベント・コードの確定と同時に、当該コードを検索キーとして、イベントキャッシュメモリ104のエントリを検索する(T2)。検索キーに一致する有効なエントリが存在した場合(以下、「キャッシュ・ヒット」と称する)、イベントキャッシュメモリ104のキャッシュラインに格納されている当該割り込みベクタを専有バス105経由でCPUコア103へ供給される。これに呼応して、制御信号2(enable)をアサートして、割り込みイベント・コードの検索キーがキャッシュ・ヒットしたことをCPUコア103へ通知する。
CPUコア103は、制御信号2(enable)がアサートされた場合、レジスタ退避の完了に同期して、上記イベントキャッシュメモリ104からの当該割り込みベクタをプログラムカウンタ(PC)12に設定する(T3)。これにより、CPUコア103は、当該割り込みイベント処理ルーチンの先頭命令のフェッチを行う。この先頭命令がフェッチされた後に選択回路13の経路切り替えにより、プログラムアダー11の出力が選択的にプログラムカウンタ12に伝達される。この状態で、プログラムアダー11によりプログラムカウンタ12が更新されることで、当該割り込みイベント処理ルーチンの先頭命令に続く命令が順次フェッチされ、当該割り込みイベント処理ルーチンが実行される。
一方、検索キーに一致する有効なキャッシュ・エントリが存在しない場合(以下、「キャッシュ・ミス」と称する)、制御信号2(enable)はネゲート状態とされ、CPUコア103は、そのまま従来と同様の割り込みイベント処理シーケンスを継続実行する。すなわち、割り込みイベント・コードからベクタテーブルの参照アドレスを導出し、そのアドレスに基づいて、共有バス107及び周辺バス108を介してROM113等にアクセスして当該割り込みベクタを取得する。そして取得した当該割り込みベクタをプログラムカウンタ(PC)に設定することで、CPUコア103は当該割り込みイベント処理ルーチンの先頭命令のフェッチを開始する。
また、CPUコア103は、割り込みベクタを取得した以降、制御信号1(active)をネゲートして、イベントキャッシュメモリ104の動作を停止することができる。それによって低消費電力化を実現することができる。
図2には、図1に示されるマイクロコンピュータ100の比較対象とされるマイクロコンピュータ200が示される。また、図3には、図2に示されるマイクロコンピュータ200における割り込みイベント処理シーケンスが示される。
図2に示されるマイクロコンピュータ200が図1に示されるマイクロコンピュータ100と大きく相違するのは、イベントキャッシュメモリ104が設けられていない点である。
割り込みイベントが発生した場合、CPUコア203は、割り込みイベント受け付けると同時に、割り込みイベントを識別する情報(割り込みイベント・コード)を割り込みイベントコードレジスタ(INTEVT)14に確定させ、割り込みイベント処理シーケンスを起動する。CPUコア203は、レジスタの退避(スタック退避)、および割り込みイベント・コードから、ROM113内のベクタテーブルの参照アドレスを導出し、そのアドレスに基づいて、共有バス107及び周辺バス107を介してROM113をアクセスすることにより当該割り込みベクタを取得する(123)。取得した当該割り込みベクタをプログラムカウンタ(PC)12に設定することで、CPUコア203は当該割り込みイベント処理ルーチンの先頭命令のフェッチを開始する。このように図2に示される構成によれば、共有バス107や周辺バス108を介してデータ転送を処理するために、バスのトラフィックやバス仕様(バス幅、バスクロック周波数、バスプロトコル)等に影響され、割り込みイベント処理シーケンスの実行ステート数が変動する。つまり割り込みレスポンス時間は、これら要因のために変動する。
尚、図3において、(1)は命令のプリフェッチアドレス、(2),(4)は命令コード、(3)は命令のプリフェッチアドレス、(5)はSP−2、(7)はSP−4、(6),(8)は退避PCと退避CCR、(9),(11)はベクタアドレス、(10),(12),(13)割り込み処理ルーチン開始アドレス、(14)は割り込み処理ルーチン先頭命令である。
これに対して図1に示される構成によれば、イベントキャッシュメモリ104が設けられ、割り込みイベント・コードの確定と同時に、当該イベント・コードを検索キーとして、イベントキャッシュメモリ104のエントリが検索される。そして上記検索キーに一致する有効なエントリが存在した場合に、当該キャッシュメモリ104のキャッシュラインに格納されている当該割り込みベクタを専有バス105経由でCPUコア103へ供給することができる。このようにCPUコア103は、割り込みイベント・コードをイベントキャッシュメモリ104でエントリ検索する事により、専有バス105経由で直接に割り込みベクタを得ることができるので、図2に示されるマイクロコンピュータ200に比べて割り込みベクタを短時間で得ることができる。
例えば図6に示されるように、マイクロコンピュータ200の場合には割り込みベクタを取得するためのメモリ上のベクタテーブルにバス・アクセスを必要とするのに対して、マイクロコンピュータ100の場合はそのようなバス・アクセスが無くなるため、マイクロコンピュータ200の場合のベクタフェッチの所要時間に比べて、マイクロコンピュータ100の場合のベクタフェッチの所要時間が大幅に短縮される。またマイクロコンピュータ100の場合、ベクタフェッチ時には専有バス105を経由することで、上記共有バスの動作状態、さらに従来キャッシュメモリのペナルティ処理等を要因とするベクタフェッチの実行ステート数の変動が解消される。これにより、割込み要求が受け付けられてからの割り込みレスポンスは、高速化と同時に恒常的な応答性が達成される。この様に、マイクロコンピュータ100のベクタフェッチの実行ステート数は、マイクロコンピュータ200の場合と相違して、恒常的な応答性を実現される特徴を有する。
実施の形態1によれば以下の作用効果が得られる。
(1)イベントキャッシュメモリ104が設けられ、割り込みイベント・コードの確定と同時に、当該コードを検索キーとして、イベントキャッシュメモリ104のエントリが検索され、検索キーに一致する有効なエントリが存在した場合に、当該キャッシュ104のキャッシュラインに格納されている当該割り込みベクタを専有バス105経由でCPUコア103へ供給することができる。このようにハンドラーを経由しないでハードウェアによって割り込みベクタを得ることができるので、割り込みベクタを短時間、および定常的な実行ステート数で得ることができる。
(2)特許文献1では、検出したい割り込み要因を予め割り込みフラグパターンレジスタに設定しておくことで、入力された割り込みフラグの値に対し、前記設定した分の割り込み要因を検出し、割り込み判定処理を行い、その割り込み要因に該当するベクタ番号を出力するようにしている。ここで出力されるベクタ番号は、割り込みベクタとは異なるため、上記ベクタ番号に基づいてさらに割り込みベクタを求める必要がある。これに対して実施の形態1によれば、イベントキャッシュメモリ104のエントリが検索され、検索キーに一致する有効なエントリが存在した場合に、当該キャッシュメモリ104のキャッシュラインに格納されている当該割り込みベクタを専有バス105経由でCPUコア103へ供給し、それをプログラムカウンタ12に設定することができるので、高速処理が期待できる。
(3)特許文献2に記載された技術によれば、マイクロプロセッサ内のデータ入力部に共通バスを介してデータを供給するようにしているため、そこにはセレクタ等の周辺回路を設ける必要があるが、実施の形態1によれば、CPUコア103とイベントキャッシュメモリ104とが専有バス105によって結合されているため、上記セレクタ等の周辺回路は不要である。
(4)ソフトウェア割り込み命令の引数をイベントキャッシュメモリ104の検索キーとすることで、ソフトウェア割り込みにおいても、以下のように同様の作用効果を得ることができる。
図5(A)には、ハードウェア割り込み処理の流れが示され、図5(B)にはソフトウェア割り込み処理の流れが示される。
ソフトウェア割り込みとハードウェア割り込みの基本的な相違は、割り込みを要求する手段と、その割り込みイベントを識別する方法であり、割り込みイベント処理シーケンス自体は、図5(A),(B)に示されるように、ほぼ同様な処理シーケンスである。
ソフトウェア割り込みイベントは、プログラムB中に明示されるソフトウェア割り込み命令(図中"TRAP #imm"の命令)を実行して、発生させる。ソフトウェア割り込み命令の引数(図中"#imm")が当該ソフトウェア割り込みイベントの識別コードを示す。ソフトウェア割り込みイベント処理シーケンスでは、この引数で与えられた識別コードをもとにしてベクタテーブルBを参照し、当該割り込みベクタを取得した後、当該割り込み処理ルーチンに分岐する。図5(A)では、ハードウェア処理中に、非CPUアドレス空間に割り当てられたイベントキャッシュメモリE−cacheを利用して、SR(ステータスレジスタ)/PC(プログラムカウンタ)の待避中に割り込み処理用のベクタを取得可能であり、このような並列動作によって、割り込みルーチン分岐までの時短効果を得ることができる。
以上の類似点によりソフトウェア割り込み命令の引数(「#imm」)をイベントキャッシュメモリ104の検索キーとすることで、ソフトウェア割り込みにも適用できる。これにより、図5(A)のハードウェア割り込み処理における並列化した割り込みイベント処理シーケンスは、図5(B)においても実行可能であり、ソフトウェア割り込みイベント処理シーケンスにおいても、上記ハードウェア割り込みの場合と同様の作用効果を得ることができる。
(5)以上「割り込み処理」に注目して説明したが、それに限定されるものではなく、「例外処理」の場合にも、上記(1)乃至(4)の作用効果を得ることができる。例えばROM113には、例外又は割り込みの処理ルーチンの先頭アドレスを導出(出力、供給)可能なベクタテーブルが形成され、イベントキャッシュメモリ104には、例外又は割り込みの処理ルーチンの先頭アドレス情報が格納される。CPUコア103は、例外又は割り込みのイベントが発生された場合、上記ROM113の参照アドレス導出に並行して上記専有バス105を介して上記イベントキャッシュメモリ104にアクセスする。そして、上記例外又は割り込みのイベントに対応する例外又は割り込みの処理ルーチンの先頭アドレス情報が上記イベントキャッシュメモリ104内に存在する場合には、上記ROM113内のベクタテーブルからの先頭アドレス取得に代えて、上記イベントキャッシュメモリ104内の先頭アドレス情報が上記専有バス105経由でCPUコア103に伝達される。これにより、例外又は割り込みのイベントが発生された場合に、ベクタテーブルの参照やハンドラーを経由しないで、ハードウェアによって上記先頭アドレス情報を得ることができる。
<実施の形態2>
図10には、本発明にかかるマイクロコンピュータ100におけるイベントキャッシュメモリ104の別の構成例が示される。
図10に示される構成が図7に示されるのと大きく異なるのは、アドレスアレイ72に、割り込みベクタのオフセットアドレス(offset-address)を格納する点である。
この構成では、キャッシュラインのアドレスアレイ72には、例外又は割り込みイベント処理ルーチンのオフセットアドレス(offset-address)が格納され、このオフセットアドレスがアドレス選択論理ブロック74を介してCPUコア103に伝達される。実効的な割り込みベクタは、上記オフセットアドレスにベースアドレスレジスタ(VBR)16に格納される例外又は割り込み処理ルーチンのベースアドレスを加算した値になる。このため、図10に示される構成を採用する場合、CPUコア103には、例外又は割り込み処理ルーチンのベースアドレス(VBR)を保持するベクタルーチンベースレジスタ16と、このベクタルーチンベースレジスタ16に保持されている例外又は割り込み処理ルーチンのベースアドレス(VBR)をアドレス選択論理ブロック74の出力に加算するための加算器15とが設けられる。上記加算器15の出力が選択回路13に伝達される。
このようにアドレスアレイ72に、割り込みベクタのオフセットアドレス(offset-address)を格納するようにしても、上記オフセットアドレスに例外又は割り込み処理ルーチンのベースアドレス(VBR)を加算することにより、上記実施の形態1の場合と同様の作用効果を得ることができる。
また、アドレスアレイ72の属性として、ベクタアドレス及びオフセットアドレスの双方を採用することができる。例えばアドレスアレイ72にベクタアドレスが格納される場合、ベクタルーチンベースレジスタ16における例外又は割り込み処理ルーチンのベースアドレス(VBR)の値を“0”にすればよい。“0”を加算しても加算結果に影響しないので、ベクタアドレスが変更されることはない。
さらに、特定の制御ビットを設けることで、イベントキャッシュメモリ104におけるアドレスアレイのアドレス属性を指定するようにしてもよい。例えばキャッシュラインのおのおのに制御ビットを設け、この制御ビットの状態によって、アドレスアレイ72の属性を個々に識別し、ベースレジスタ(VBR)の加算の有無を選択することができる。
<実施の形態3>
図11には、本発明にかかるマイクロコンピュータ100におけるイベントキャッシュメモリ104の別の構成例が示される。
図11に示される構成が図7に示されるのと大きく異なるのは、1ウェイが複数のキャッシュラインから構成されている点である。この場合、割り込みイベント・コードはタグ(tag)とエントリ(entry)に意味づけされる要素で構成される。
割り込みイベントが発生したとき、CPUコア103が受け付けた割り込みイベント・コードが格納される割り込みイベントコードレジスタ14のエントリ(entry)情報は、イベントキャッシュメモリ104のキャッシュラインを選択するために使用される。また同レジスタ14のタグ(tag)情報は、キャッシュラインのコード部(コードアレイ71)に格納されたタグ(tag)情報と一致比較するために使用される。コード一致比較論理ブロック73では、割り込みイベントコードレジスタ14のタグ情報と同レジスタ14のエントリ情報で選択されたコードアレイ71のタグ情報との比較が行われ、この比較結果に基づいて、ウェイを選択するためのウェイ選択情報(way-select)等が生成される。
このように構成しても、図7に示されるのと同様の作用効果を得ることができる。
イベントキャッシュメモリ104へのデータ登録はデータ転送命令によって行われる。
図12には、図11の構成を採用する場合のアドレスアレイに対するデータ転送命令のフォーマット例が示される。このフォーマット例では、転送命令のアドレス部(Ra)には、イベントキャッシュメモリ104におけるアドレスアレイのメモリ割付けアドレス(mapped-address)、ウェイ選択(W)、エントリ選択(entry)が割り当てられる。転送命令のデータ部(Rw/Rr)には、割り込みベクタ(vector-address)が割り当てられる。
図13には、図10の構成を採用する場合のコードアレイに対するデータ転送命令のフォーマット例が示される。このフォーマット例では、アドレス部(Ra)には、イベントキャッシュメモリ104におけるコードアレイのメモリ割付けアドレス(mapped-address)、ウェイ選択(W),エントリ選択(entry)が割り当てられる。データ部(Rw/Rr)には、有効ビット(V)、タグ(tag)が割り当てられる。
<実施の形態4>
図14には、本発明にかかるマイクロコンピュータ100におけるイベントキャッシュメモリ104の別の構成例が示される。
図14に示される構成が図11に示されるのと大きく異なるのは、コマンドアレイ75およびアドレスアレイ72にアドレス有効ビット(Va)が付加されている点である。
コマンドアレイ75には、キャッシュラインのアドレスアレイ72に格納されている割り込みベクタを起点とする割り込み処理ルーチンの先頭命令列が格納される。コマンドアレイ75のラインサイズは、基本的に任意であるが、従来のキャッシュメモリと同じラインサイズ、またはその整数倍で構成するのが好適と考えられる。また、割り込みベクタのアドレスは基本的に任意であるが、通常、コマンドアレイ75のラインサイズを境界とするアドレスに配置するのが好適と考えられる。例えば、ラインサイズが32バイトならば、32バイト境界のアドレスに割り込みベクタが配置される。さらに、コマンドアレイ75の出力は、コマンド選択論理ブロック76、コマンド有効ビット選択論理ブロック77、プリフェッチ制御ビット選択論理ブロック78を介して選択的にCPUコア103に伝達されるようになっている。アドレスアレイ72の出力は、アドレス選択論理ブロック74、アドレス有効ビット選択論理ブロック79を介して選択的にCPUコア103に伝達されるようになっている。
ここで、命令列(または命令データ列)の先頭は、命令コードであり、それ以降には、先頭の命令コード以降に実行される命令コードや命令コードで参照されるオペランドデータが含まれる。ここで、コード一致判定論理ブロック73において、割り込みイベントコードレジスタ14のタグ情報とコードアレイ71のタグ情報との比較が行われ、その結果に応じて、コマンド選択論理ブロック76はコマンドアレイ75から一つの命令列を選択する。更に、コマンド有効ビット選択論理ブロック77は、アドレスアレイ72に対応して格納される複数のコマンド有効ビット(Vc)の中から、一つのコマンド有効ビットを選択する。更に、プリフェッチ制御ビット選択論理ブロック78は、アドレスアレイ72に対応して格納される複数のプリフェッチ制御ビット(F)の中から、一つのプロフェッチ制御ビットを選択する。またアドレス選択論理ブロック74は、アドレスアレイ72から一つの割り込みベクタを選択する。アドレス有効ビット選択論理ブロック79は、アドレスアレイ72に対応して格納される複数のアドレス有効ビット(Va)の中から、一つのアドレス有効ビットを選択する。これら選択された、コマンドアレイ、コマンド有効ビット(Vc)、プリフェッチ制御ビット(F)、アドレスアレイ、アドレス有効ビット(Va)は、専有バス105を介してCPUコア103へ供給される。
図14に示される構成例によれば、例えば特定の制御ビットを配置することで、コマンドアレイ75におけるコマンドキャッシュライン(コマンドアレイの命令列)の有効性を一元的に管理することができる。上記コマンドアレイ75内には、コマンドデータに加え、上記特定の制御ビットとしてキャッシュラインの各々に設けたコマンド有効ビット(Vc)によって、コマンドアレイ75のキャッシュラインの有効/無効を示すことができる。さらに、上記コマンドアレイ75内には、上記従来のキャッシュメモリ(イベントキャッシュメモリとは別のキャッシュメモリ)に対するプリフェッチを要求するプリフェッチ制御ビット(F)を設けることができる。さらに、上記アドレスアレイ72には、特定の制御ビットとしてキャッシュラインの各々にアドレス有効ビット(Va)を設けることができる。アドレス有効ビットは、アドレスアレイ選択論理ブロック74によって選択されたアドレスアレイの内容をプログラムカウンタ12に設定するか否かを示す。通常、アドレス有効ビットは有効状態に設定され、選択されたアドレスアレイの内容をプログラムカウンタ12に設定する事を示す。
図14に示される構成の基本的な動作は以下の通りである。
イベントキャッシュメモリ104は、イベントコードレジスタ(INTEVT)14に格納された割り込みイベント・コードを検索キーとして検索を実行する。コード一致判定論理ブロック73において、キャッシュ・ヒットする有効なエントリがあれば、当該エントリのキャッシュ・ヒット情報、割り込みベクタ、アドレス有効ビット(Va)、コマンドアレイ75のデータ、コマンドアレイのコマンド有効ビット(Vc)、およびプリフェッチ制御ビット(F)が専有バス105経由でCPUコア103へ供給される。CPUコア103は、コマンドアレイ75のコマンド有効ビット(Vc)が有効状態、かつアドレスアレイ72のアドレス有効ビット(Va)が有効状態にされている場合、選択された割り込みベクタをプログラムカウンタ12に設定されるとともに、この選択されたコマンドアレイ75の命令列、つまり例外又は割り込みイベント処理ルーチンが実行される。
かかる構成によれば、キャッシュ・ヒットする有効なエントリがあれば、当該エントリのキャッシュ・ヒット情報、割り込みベクタ、アドレス有効ビット(Va)コマンドアレイ75の命令列、コマンドアレイのコマンド有効ビット(Vc)およびプリフェッチ制御ビット(F)が専有バス105経由でCPUコア103へ供給されるため、その時点で、例外又は割り込み処理ルーチンの先頭命令が既に得られている。このため、そのような先頭命令をフェッチするためのROM113等のアクセスは不要になるので、その分、割り込みイベント処理シーケンスに続く割り込み処理ルーチンの初動を高速化できる。またキャッシュ・ヒット時、コマンド有効ビット(Vc)が無効状態、かつアドレス有効ビット(Va)が有効状態にされている場合、対応する命令列が無効とされるため、選択されたアドレスアレイ72のアドレスがプログラムカウンタ12に設定され、当該アドレスで参照されるROM113等からフェッチされる命令が実行される。
なお、コマンド有効ビット(Vc)、アドレス有効ビット(Va)が伴に無効状態の場合は、当該エントリ自体を無効として扱うか、禁止される。
コマンド有効ビット(Vc)が有効状態、かつアドレス有効ビット(Va)が無効状態の場合については、後の実施の形態9において詳細する。
またキャッシュ・ヒット時、当該キャッシュラインのプリフェッチ制御ビット(F)が有効である場合、イベントキャッシュメモリ104から従来のキャッシュメモリ102(図示しない)に対して、当該キャッシュラインに継続する次の命令列(起点のアドレス値=当該割込みベクタ+キャッシュライン長)のプリフェッチを要求する。上記従来のキャッシュメモリは、一般的にCPUに搭載されるキャッシュメモリを構成しており、命令、データ等を格納するように構成され、上記イベントキャッシュメモリとは別に用意される。CPUが、専有バスを介して当該キャッシュラインのコマンドアレイの内容を処理するのと並行して、従来のキャッシュメモリは共有バスを介して、このプリフェッチ要求を処理する。この結果、イベントキャッシュメモリ104と従来のキャッシュメモリは、互いに連携しながら並行動作ができるため、CPUは、イベントキャッシュメモリ104から従来のキャッシュメモリに掛かるCPUコアのパイプライン処理等を停止される事無く、連続的に実行することが可能となる。
また、図14は全ての構成要件を含むだけでなく、例えば、イベントキャッシュメモリ104に、コマンド有効ビット(Vc)を含み、プリフェッチ制御ビット(F)及びプリフェッチ制御ビット選択論理ブロック78と、を含まない場合もある。この場合、イベントキャッシュメモリ104は常に次の命令列のプリフェッチを要求する構成となる。コード一致判定論理ブロック73の判定結果に応じて、アドレス選択論理ブロック74、コマンド選択論理ブロック76、コマンド有効ビット選択論理ブロック77、アドレス有効ビット選択論理ブロック79は、それぞれ対応するビットを選択する。選択されたビットの出力は、専用バス経由でCPUコアに伝達される。プリフェッチを固定的に要求する構成とすることで、プリフェッチの機能を実現しながら、イベントキャッシュメモリ104をより小さい構成要件で実現することが可能となる。
また、例えば、イベントキャッシュメモリ104に、コマンド有効ビット(Vc)及びコマンド有効ビット選択論理ブロック77が含まれない場合もある。この場合、イベントキャッシュメモリ104は、常にコマンドアレイを有効状態とする構成となる。コード一致判定論理ブロック73の判定結果に応じて、アドレス選択論理ブロック74、コマンド選択論理ブロック76、プリフェッチ制御ビット選択論理ブロック78、アドレス有効ビット選択論理ブロック79とは、それぞれ対応するビットを選択する。選択されたビットの出力は、専用バス経由でCPUコアに伝達される。また、イベントキャッシュメモリ104の有効ビット(V)をコマンド有効ビット(Vc)の代わりとして利用することも可能である。この場合、有効ビット(V)が有効である場合、対応するコマンドアレイは有効と判断され、コマンド選択論理ブロック76で該当するコマンドアレイが選択される。選択コマンド有効ビット(Vc)を含まない場合、または、有効ビット(V)を代替する場合には、コマンド有効ビットの機能を実現しながら、イベントキャッシュメモリ104をより少ないビット数、且つ少ない構成要件で実現することが可能となる。
また、例えば、イベントキャッシュメモリ104に、アドレス有効ビット(Va)、アドレス有効ビット選択論理ブロック79が含まれない場合もある。この場合、イベントキャッシュメモリ104は、常にアドレスアレイ72を有効状態とする構成になる。コード一致判定論理ブロック73の判定結果に応じて、アドレス選択論理ブロック74、コマンド選択論理ブロック76、コマンド有効ビット選択論理ブロック77、プリフェッチ制御ビット選択論理ブロック78は、それぞれ対応するビットを選択する。選択されたビットの出力は、専用バス経由でCPUコアに伝達される。
尚、構成要件は、本要旨を逸脱しない範囲において種々変更、削減することを可能とする。
図15には、図14の構成を採用する場合のアドレスアレイに対するデータ転送命令のフォーマット例が示される。
アドレス部(Ra)には、イベントキャッシュメモリ104におけるアドレスアレイ72のメモリ割付けアドレス(mapped-address)、ウェイ選択(W)、エントリ選択(entry)が割り当てられる。データ部(Rw/Rr)には、アドレス有効ビット(Va)、割り込みベクタ(vector-address)が割り当てられる。
図16には、図14の構成を採用する場合のコードアレイ71に対するデータ転送命令のフォーマット例が示される。このフォーマット例では、アドレス部(Ra)には、E-Cacheコードアレイのメモリ割付けアドレス(mapped-address)、ウェイ選択(W)、エントリ選択(entry)が割り当てられる。データ部(Rw/Rr)には、有効ビット(V)、タグ(tag)、コマンド有効ビット(Vc)およびプリフェッチ制御ビット(F)が割り当てられる。
図17には、図14に示される構成を採用する場合のコマンドアレイ75に対するデータ転送命令のフォーマット例が示される。このフォーマット例では、アドレス部(Ra)には、E-Cacheコードアレイのメモリ割付けアドレス(mapped-address)、ウェイ選択(W)、エントリ選択(entry)、ロングワード選択(L)が割り当てられる。データ部(Rw/Rr)には、ロングワードデータ(LW)が割り当てられる。
<実施の形態5>
図18には、本発明にかかるマイクロコンピュータ100におけるイベントキャッシュメモリ104の別の構成例が示される。
図18に示される構成が図7に示されるのと大きく異なるのは、ダイレクトマッピングによって構成される点である。
図18に示される構成では、例外又は割り込みイベント・コード(INTEVT14)によってアドレスアレイ72内のベクタアドレスを選択可能とされる。つまり、割り込みイベント・コードをイベントキャッシュメモリ104におけるアドレスアレイ72の参照アドレスと見なすことで、直接的にアドレスアレイ72を選択し、当該割り込みベクタを取得する。割り込みイベントの発生時、イベントキャッシュメモリ104は、アドレスアレイ72に格納された当該割り込みベクタ(vector address)、及び有効ビット(V)をCPUコア103へ供給する。CPUコア103は、有効ビット(V)がアサートされている場合、適時に当該割り込みベクタをプログラムカウンタ(PC)12へ設定する。
このようにイベントキャッシュメモリ104がダイレクトマッピングによって形成される場合においても、上記の実施の形態の場合と同様の作用効果を得ることができる。図18に示される構成は、エントリの数が少ない小規模システムの場合、割り込みコードを連続的に割り当てしているシステムの場合等に好適と考えられる。
<実施の形態6>
図19には、本発明にかかるマイクロコンピュータ100におけるイベントキャッシュメモリ104の別の構成例が示される。
図19に示される構成が図7に示されるのと大きく異なるのは、割り込みイベントを属性毎に分化して、イベントキャッシュメモリ104を構築した点である。
すなわち、図19におけるイベントキャッシュ104は、第1イベントキャッシュメモリ104−1、第2イベントキャッシュメモリ104−2、第3イベントキャッシュ104−3を含む。第1イベントキャッシュメモリ104−1は、例外イベント・コードに対応した例外処理ルーチンの先頭アドレスを出力する。第2イベントキャッシュメモリ104−2は、割り込みイベント・コードに対応した割り込み処理ルーチンの先頭アドレスを出力する。第3イベントキャッシュメモリ104−3は、ソフトウェア割り込みイベント・コードに対応した割り込み処理ルーチンの先頭アドレスを出力する。
尚、上記1イベントキャッシュメモリ104−1、第2イベントキャッシュメモリ104−2、第3イベントキャッシュメモリ104−3は、実施の形態1〜5、ならびに実施の形態9におけるイベントキャッシュ104と同様に構成することができる。
CPUコア103は、上記第1イベントキャッシュメモリ104−1、第2イベントキャッシュメモリ104−2、第3イベントキャッシュメモリ104−3に対応して、第1イベントコードレジスタ(EXPEVT)14−1、第2イベントコードレジスタ(INTEVT)14−2、第3イベントコードレジスタ(TRPEVT)14−3が配置される。上記イベントコードレジスタ14−1は、CPUコア103が受け付けた例外イベント・コードを保持する。上記イベントコードレジスタ14−2は、CPUが受け付けた割り込みイベント・コードを保持する。上記イベントコードレジスタ14−3は、CPUが処理するソフトウェア割り込みイベント・コードを保持する。
上記イベントコードレジスタ14−1の出力及び第1制御信号(active1)は、上記第1イベントキャッシュメモリ104−1に入力される。上記イベントコードレジスタ14−2の出力及び第2制御信号(active2)は、上記第2イベントキャッシュメモリ104−2に入力される。上記イベントコードレジスタ14−3の出力及び第3制御信号(active3)は、上記第3イベントキャッシュメモリ104−3に入力される。
上記のように、割り込みイベントの属性毎に割り込みイベントコードレジスタ、イベントキャッシュメモリ104が構築される。高機能化・多機能化するマイクロコンピュータでは、イベント数が増加する傾向にあるために、割り込みイベントの属性毎に割り込みイベントコードレジスタ、イベントキャッシュメモリ104を構築したほうが良いと考えられる場合がある。特に、第3イベントキャッシュメモリ104−3を他のイベントキャッシュメモリから分離した構成は、ソフトウェア割り込み命令がオペレーティング・システムのシステムコールに使用されるので、当該サービスルーチンへの直接遷移が可能となり、システムパフォーマンスの向上を図ることができる。また各イベントに分化することで、それぞれのイベント毎にイベント・コードの増減や変更を容易にできる様になるために、イベントキャッシュメモリの利便性が向上する。
尚、このようにイベントキャッシュメモリ、イベントコードレジスタの対について、イベント属性による分化の組み合わせや、増減の構成は、マイクロコンピュータの仕様において適宜に変更することができる。
複数のイベントが同時に発生する場合、CPUコアは、例えば、イベント間の優先判定論理ブロックを設ける事により、各イベントキャッシュメモリからの出力を択一的に選択する機能を有する。
<実施の形態7>
図20には、本発明にかかるマイクロコンピュータ100におけるイベントキャッシュメモリ104の別の構成例が示される。
図20に示される構成が図7に示されるのと大きく異なるのは、複数の外部周辺機器の割り込み要因に対応させた点である。
第1イベントキャッシュメモリ(E-Cache)104−1と、第2イベントキャッシュメモリ(E-Cache2)104−2とを含んでイベントキャッシュメモリ104を形成する。それに対応して、CPUコア103には、第1イベントコードレジスタ(INTEVT)14−1、第2イベントコードレジスタ(INTEVT2)14−2が配置される。第1イベントコードレジスタ(INTEVT)14−1は、CPUコア103によって受け付けられた例外又は割り込み処理のイベント・コードを保持する。これは、図1におけるイベントキャッシュメモリ104と同じである。一方、第2イベントコードレジスタ(INTEVT2)14−2には、割り込みイベントの要因解析コードが保持される。マイクロコンピュータ100の外部には、外部割り込みコントローラ201が配置される。この外部割り込みコントローラ201は、外部周辺機器で発生する複数の割り込み要求を制御する。
一般的に、ひとつの割り込み要求には、複数の割り込み要因が割り当てられる場合が多い。例えば、外部端子数が少ないマイクロコンピュータと複数の外部周辺機器を備えるシステムでは、外部割り込み要求の入力端子数に比べて外部周辺機器からの割り込み要求数が多くなり、1対1の割り当てが困難になる場合がある。この場合の一般的な割り込み処理では、割り込み処理ルーチンにおいて、各割り込み要因フラグを比較演算で識別し、その要因に対応する割り込みベクタを取得し、その後、当該割り込み要因の処理ルーチンに分岐する。このため、各割り込み要因の応答時間は、割り込み要因フラグの比較演算に掛かる実行ステート数に依存して増加する。
これに対して図20に示される構成によれば、外部周辺機器で発生する複数の割り込み要求を識別する信号(EX−INTEVT)の値が特定のレジスタ(INTEVT2)へソフトウェア的に書き込まれ、その1ステート後には、第2イベントコードレジスタ(INTEVT2)14−2から該当する割り込みベクタを取得できる。EX−INTEVTの読み込みは、外部バスインタフェース116又は特定の入力ポートを経由して行うことができる。
<実施の形態8>
図14に示される構成に基づいた、別の実施の形態を説明する。
実施の形態4においては、図14における割り込みイベント・コードを検索キーとして、イベントキャッシュメモリ104から当該イベント・コードに対応した割り込み処理ルーチンの割り込みベクタと命令列を取得する例を示したが、割り込み処理ルーチンに代えて、分岐命令における分岐イベント処理シーケンスを実施するようにしても良い。このとき、引数で与えられた分岐先イベントを識別される分岐先イベント・コードを検索キーとして、イベントキャッシュメモリ104から当該イベント・コードに対応した分岐先アドレスおよび分岐先アドレスを先頭とする命令列を取得可能とする。これにより、割り込み処理時の場合と同様な作用効果が得られる。
従来の分岐命令と本実施の形態における新たな分岐命令との主たる相違は、次の通りである。
従来の分岐命令は、分岐先アドレスの指定方法により、相対アドレッシング型とレジスタ間接アドレッシング型に大別できる。相対アドレッシング型の場合は、分岐命令の引数に特定のベースアドレスからの相対アドレスを指定するために、一命令(単独命令)による局所分岐となる。これは、分岐命令コードにおいて引数に割り当てられるビット長に上限があるためである。レジスタ間接アドレッシング型の場合は、分岐命令の引数に分岐先アドレスを格納している参照レジスタを指定する。ただし、分岐命令の実行前に、メモリに記憶されている分岐先アドレスをこの参照レジスタへ格納するための前処理が必要になるが、広域分岐を可能とする。
本実施の形態における新たな分岐命令の場合、分岐先(分岐先アドレス)に対して、これを識別するイベント・コード(以下、「分岐先イベント・コード」と称する)を事前に定義する。これにより、分岐先イベント・コードとこれに対応した分岐先アドレスを関連付けすることが可能となる。
イベントキャッシュメモリ104のコードアレイ71には分岐先イベント・コードを格納し、アドレスアレイ72には分岐先イベント・コードに対応する分岐先アドレスを格納し、コマンドアレイ75には分岐先アドレスを先頭アドレスとする命令列が格納される。
上記の構成によれば、本実施の形態における新たな分岐命令の実行時には、分岐命令コードに引数として指定された分岐先イベント・コードをイベントコードレジスタ(INTEVT)14に格納する事により、分岐先イベント・コードを検索キーとして、イベントキャッシュメモリ104を検索し、当該イベント・コードに対応した分岐先アドレス及び分岐先命令列を取得可能となる。
以上により、CPUコア103は、イベントキャッシュメモリ104を参照する分岐命令を実行する場合、上記従来分岐命令の様な前処理を不要とし、一命令(単独命令)による広域分岐が可能となる。
また、従来の分岐命令を実行する場合、一般に、上記前処理の過程や分岐先アドレスからの命令の取得時にキャッシュ・ミスを発生させる可能性が大きく、システムの連続処理(例えばCPUコアのパイプライン処理)を阻害する要因になっていた。しかしイベントキャッシュメモリ104を参照する、本実施の形態における新たな分岐命令を実行する場合は、分岐先アドレスを先頭アドレスとする分岐先命令列をイベントキャッシュメモリ104に格納していることより、分岐イベント処理シーケンスとそれに継続される分岐先命令を処理する初動の過程で、キャッシュ・ミスが発生しない。その結果、当該分岐命令を実行するパイプライン処理では、従来の阻害要因が解消されるので、連続パイプライン処理による性能向上を図ることができる。
<実施の形態9>
図14に示される構成に基づいた、別の実施の形態を説明する。
実施の形態4において割り込みイベントとその処理シーケンス例を示し、実施の形態8において分岐イベントとその処理シーケンスの例を示した。これらに代えて、オペランド参照命令によるメモリ参照イベント処理シーケンス(メモリ参照処理)を実施するようにしても良い。
この場合、従来のオペランド参照命令と本実施の形態によるものとの主たる相違は、次の通りである。
従来のオペランド参照命令でメモリ上のオペランドデータを参照する場合、一般にレジスタ間接アドレッシングが用いられる。つまり、従来のオペランド参照命令の引数には、オペランドデータが記憶されているメモリ参照先アドレスを格納した汎用レジスタが指定される。この場合、命令実行に先立って、メモリ参照先アドレスを導出し、汎用レジスタに格納するための前処理を必要とする場合があり、さらに共有バスを介したバス・アクセスを必要とする。これに対して、本実施の形態におけるオペランド参照命令の場合、引数にメモリ参照イベント・コードを指定することにより、その様な前処理やバス・アクセスが不要とされる。
本実施の形態におけるオペランド参照命令の場合、オペランド参照命令で参照されるオペランドデータの参照先アドレスにメモリ参照を識別するコード(以下、「メモリ参照イベント・コード」と称す)を定義する。これにより、メモリ参照イベント・コードとこれに対応したメモリ参照先アドレスを関連付けすることが可能となる。メモリ参照イベント・コードをコードアレイ71に、メモリ参照先アドレスをアドレスアレイ72に、メモリ参照先アドレスを先頭とするオペランドデータ列(メモリ参照先データ列)をコマンドアレイ75に、それぞれ格納される。さらに、アドレス有効ビット(Va)には無効状態を、コマンド有効ビット(Vc)には有効状態を設定する。
上記の構成によれば、本実施の形態におけるオペランド参照命令の実行時には、当該オペランド参照命令コードに引数として指定されたメモリ参照イベント・コードがイベントコードレジスタ(INTEVT)14に格納される事により、メモリ参照イベント・コードを検索キーとして、イベントキャッシュメモリ104を検索可能となる。この検索により、キャッシュ・ヒットした場合、CPUコアは、イベントキャッシュメモリ104から当該イベント・コードに対応したメモリ参照先アドレス、アドレス有効ビット(Va)及びメモリ参照先のオペランドデータ列等を取得可能となる。
この時、コマンド有効ビット(Vc)は有効状態、かつアドレス有効ビット(Va)は無効状態である。CPUコアは、アドレス有効ビット(Va)の無効状態を検出するとき、取得されたメモリ参照先アドレスをプログラムカウンタ12に設定させずに、必要に応じて汎用レジスタ等に格納することが可能である。またCPUコアは、コマンド有効ビット(Vc)の有効状態を検出するとき、取得されたメモリ参照先のオペランドデータ列を有効なデータとして参照可能とされる。
以上により、メモリ参照イベントの場合にも割り込みイベント時および分岐イベント時と同様な作用効果が得られる。
<実施の形態10>
図14に示される構成に基づいた、更に別の実施の形態を説明する。
前記実施の形態8における分岐命令によるイベント処理を、他のイベント処理と分化させる。つまり、割り込みイベント用の(第1の)イベントキャッシュメモリ104および(第1の)イベントコードレジスタに加え、さらに分岐命令の分岐イベント専用に、分岐先イベント・コードを格納する第2のイベントコードレジスタ、当該イベント・コードに対応した分岐先アドレス及び分岐先命令列を格納する第2のイベントキャッシュメモリを構成する。この場合、第2のイベントキャッシュメモリは、アドレス有効ビット(Va)およびアドレス有効ビット選択論理ブロック79を削除し、常にアドレスアレイに格納される分岐先アドレスはプログラムカウンタに格納される。つまり、第2のイベントキャッシュメモリは、第1のイベントキャッシュメモリとは異なる構成であり、さらに、第2のイベントコードレジスタは、第1のイベントコードレジスタとは異なるイベント・コードを格納する。よって、実施の形態8と同様な作用効果に加えて、他のイベント処理との並行処理が可能になる。また分岐先イベント・コードは増減や変更を容易にできる様になるために、イベントキャッシュメモリの利便性が向上する。
<実施の形態11>
図14に示される構成に基づいた、更に別の実施の形態を説明する。
上記実施の形態9におけるオペランド参照命令によるメモリ参照イベント処理を、他のイベント処理と分化させる。つまり、割り込みイベント用の(第1の)イベントキャッシュメモリ104及び(第1の)イベントコードレジスタに加え、さらにオペランド参照命令のメモリ参照イベント専用に、メモリ参照イベント・コードを格納する第2のイベントコードレジスタ、当該イベント・コードに対応したメモリ参照先アドレスおよびメモリ参照先データ列を格納される第2のイベントキャッシュメモリを構成される。
この場合、第2のイベントキャッシュメモリはアドレス有効ビット(Va)およびアドレス有効ビット選択論理ブロック79を削除し、常にアドレスアレイに格納されるメモリ参照先アドレスは、プログラムカウンタに格納されずに、必要に応じて汎用レジスタ等に格納される。つまり、第2のイベントキャッシュメモリは、第1のイベントキャッシュメモリとは異なる構成であり、さらに、第2のイベントコードレジスタは、第1のイベントコードレジスタとは異なるイベント・コードを格納する。よって、実施の形態9と同様な作用効果に加えて、他のイベント処理との並行処理が可能になる。またメモリ参照イベント・コードは、増減や変更を容易にできる様になるために、イベントキャッシュメモリの利便性が向上する。
次に、上記イベントキャッシュメモリ104のアクセスに使用される命令について説明する。
先ず、例外キャッシュブロックの無効化命令(ECBI)を挙げることができる。
この命令の書式は、「ECBI @Rn」となる。
この命令によれば、Rnの内容で示される例外キャッシュブロックのV bitを無効化することができる。Rnには、無効化するキャッシュブロックを示すウェイとエントリを指定する。図21には、上記Rnのフォーマット例が示される。Wはウェイ選択ビット、entryはエントリ選択ビットである。
また、例外キャッシュのプリフェッチ命令(PREE)を挙げることができる。
この命令の書式は、「PREE @Rm、@Rn」となる。
この命令によれば、Rmで示されるアドレスのデータがRnで示されるイベントキャッシュメモリ104のキャッシュラインにプリフェッチされる。Rnで示めすウェイとエントリに対応したキャッシュラインのデータ部に対して、Rmで示めす割り込みベクタを含むキャッシュライン・サイズの境界で始まるキャッシュ1ライン分の命令列を読み込む。例えば、データ部のラインサイズが32バイトの場合、割り込みベクタを含む32バイト境界で始まる32バイトの命令ブロックを読み込む。この場合、Rmで指定したアドレスの下位5ビットは0とみなす。読み込み完了後、同キャッシュラインのコード部にはRnで示すタグ、アドレス部にはRmで示めす割り込みベクタをそれぞれ登録し、V bitを有効に設定する。図22には、上記Rn,Rmのフォーマット例が示される。Wはウェイ選択ビット、entryはエントリ選択ビットである。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、実施の形態1乃至11のいずれか二つ以上の組合せでイベントキャッシュメモリを実装しても良い。さらには、実施の形態10及び11の第2のイベントキャッシュメモリと、実施の形態1乃至9のイベントキャッシュメモリとを一つの半導体装置に実装してもよい。その場合に、必要なイベントをそれぞれ個別のイベントキャッシュメモリで制御することにより、並行処理が可能となる。
11 プログラムアダー
12 プログラムカウンタ
13 選択回路
14 イベントコードレジスタ(イベント記憶部)
15 加算器
16 ベクタルーチンベースレジスタ
71 コードアレイ
72 アドレスアレイ
73 コード一致比較論理ブロック
74 アドレス選択論理ブロック
75 コマンドアレイ
76 コマンドアレイ選択論理ブロック
77 コマンド有効ビット選択論理ブロック
78 プリフェッチビット選択論理ブロック
79 アドレス有効ビット選択論理ブロック
100 マイクロコンピュータ
101 データキャッシュメモリ
102 命令キャッシュメモリ
103 CPUコア
104 イベントキャッシュメモリ(第2記憶部)
105 専有バス
107 共有バス
108 周辺バス
109,110 周辺モジュール
111 割り込みコントローラ
112 RAM
113 ROM

Claims (27)

  1. イベントの発生により起動される処理を実行可能なCPUコアを含み、
    上記イベントは、識別コードのイベント・コードにより各々を識別可能とされ、
    上記処理は、例外処理、ハードウェア割り込み処理、ソフトウェア割り込み処理、分岐処理、およびメモリ参照処理の少なくとも一つを含み、さらに、例外要因、ハードウェア割り込み要因、ソフトウェア割り込み要因、分岐先アドレス、およびメモリ参照先アドレスを含む要因に基づいて個別の処理を区別可能とされ、さらに固有な上記イベント・コードを割り当てることで上記処理の識別が可能な半導体装置であって、
    例外又は割り込み処理ルーチンのベクタテーブルを形成可能な第1記憶部と、
    上記イベント・コードを格納可能なイベント記憶部と、
    上記イベント記憶部に対応する第2記憶部と、
    上記イベント・コードを上記第2記憶部へ伝達可能な専有バスと、を含み、
    上記第2記憶部は、上記処理に関連付けられるアドレス、命令コード、データ、および当該処理に係わる制御情報を含む第2イベント情報を上記イベント・コードに対応させて格納する第1機能と、
    上記第1機能によって格納された上記第2イベント情報の中から、入力されたイベント・コードに対応する第2イベント情報を選択する第2機能と、
    上記第2機能によって選択された第2イベント情報を、上記専有バスを介して上記CPUコアに出力する第3機能と、を含み、
    上記CPUコアは、上記専有バスを介して伝達された上記第2イベント情報に基づいて上記処理を実行することを特徴とする半導体装置。
  2. 上記CPUコアは、上記第2記憶部に入力される上記イベント・コードに対応する有効な上記第2イベント情報が上記第2記憶部に存在しない場合、上記イベント・コードから上記第1記憶部内のベクタテーブルの参照アドレスを導出し、そのアドレスに基づいてベクタアドレスを取得する請求項1記載の半導体装置。
  3. 上記第2記憶部は共有バスに結合され、
    上記共有バスは、上記CPUコアのアドレス空間に上記第2記憶部を配置することを可能とする機能と、上記CPUコアが上記第2記憶部に対して上記第2イベント情報の書き込み処理、および読み出し処理を実行可能とする機能とを含む請求項2記載の半導体装置。
  4. 上記イベント記憶部は複数配置され、第2記憶部は、上記各イベント記憶部に対応して複数配置されて成る請求項3記載の半導体装置。
  5. 上記第2記憶部は、上記イベントが発生されて上記専有バスを介してアクセスされる場合、及び、上記共有バスを介して書き込み処理、または読み出し処理される場合に活性状態とされる請求項4記載の半導体装置。
  6. 上記イベント記憶部に任意のデータを格納し、上記イベント記憶部に格納されるデータに対応される上記イベントを発生させる請求項1記載の半導体装置。
  7. 上記CPUコアを含む複数のモジュール間で共有される共有バスを含み、
    上記CPUコアは、例外又は割り込みのイベントが発生された場合に、当該イベント情報から上記第1記憶部の参照アドレスを導出し、当該参照アドレスに基づいて上記ベクタテーブルから上記イベントに対応する上記先頭アドレスを求め、当該先頭アドレスに基づいて例外又は割り込みの処理ルーチンを実行可能とされ、
    上記第2記憶部は、例外又は割り込みの処理ルーチンの先頭アドレスを含む情報が格納され、
    上記専有バスは、上記共有バスとは別に上記CPUコアと上記第2記憶部との間で信号のやり取りを行うために設けられ、
    上記CPUコアは、例外又は割り込みのイベントが発生された場合、上記第1記憶部の参照アドレス導出に並行して上記専有バスを介して上記第2記憶部にアクセスし、上記例外又は割り込みのイベントに対応する例外又は割り込みの処理ルーチンの有効な先頭アドレス情報が上記第2記憶部内に存在する場合には、上記ベクタテーブルからの先頭アドレス取得に代えて、上記第2記憶部内の先頭アドレス情報を上記専有バス経由で取得する請求項3記載の半導体装置。
  8. 上記CPUコアは、上記共有バスを介して上記第2記憶部に対して、例外又は割り込みの処理ルーチンの先頭アドレスを含む情報を書き込む処理、および読み出し処理をする機能を含む請求項7記載の半導体装置。
  9. 上記第2記憶部は、上記CPUコアから上記専有バスを介して上記例外又は割り込みのイベントを示すコードが伝達され、伝達されたコードと一致する有効なコードが上記第2記憶部内に存在する場合には、当該コードに対応する上記先頭アドレスを含む情報を上記専有バス経由で上記CPUコアに伝達する請求項8記載の半導体装置。
  10. 上記CPUコアは、次に実行すべき命令の格納アドレスを保持するプログラムカウンタと、
    上記専有バス経由で上記第2記憶部から伝達された上記先頭アドレス情報を選択的に上記プログラムカウンタに設定するための選択回路と、を含む請求項8記載の半導体装置。
  11. 上記第2記憶部は、上記例外又は割り込みのイベントに対応するコード情報が格納されるコードアレイと、
    上記コードアレイ内のコード情報に対応する例外又は割り込みの処理ルーチンの先頭アドレス情報が格納されるアドレスアレイと、
    上記CPUコアから上記専有バスを介して上記例外又は割り込みのイベントを示すコード情報が伝達された場合に、当該コード情報が上記コードアレイ内の有効なコード情報と一致するか否かを判定するコード一致判定論理ブロックと、
    上記コード一致判定論理ブロックでの判定結果に応じて、上記アドレスアレイ内の先頭アドレス情報を選択するアドレス選択論理ブロックと、を含み、
    上記アドレス選択論理ブロックの出力が上記専有バス経由で上記CPUコアに伝達される請求項10記載の半導体装置。
  12. 上記第2記憶部は、更に上記アドレスアレイに格納されている先頭アドレス情報に対応する例外又は割り込みの処理ルーチンにおける先頭命令列が格納されるコマンドアレイと、
    上記コード一致判定論理ブロックでの判定結果に応じて、上記コマンドアレイ内の当該先頭命令列を選択するためのコマンド選択論理ブロックと、コマンド有効ビット選択論理ブロックと、プリフェッチ制御ビット選択論理ブロックと、を含み、
    上記コマンドアレイには、更に、他のキャッシュメモリに対するプリフェッチを要求するプリフェッチ制御ビットおよびコマンドアレイの命令列の有効/無効を示すコマンド有効ビットと、が格納され、
    上記コード一致判定論理ブロックの判定結果に応じて、更に、上記コマンド有効ビット選択論理ブロックは、上記コマンド有効ビットを選択し、上記プリフェッチ制御ビット選択論理は、上記プリフェッチ制御ビットを選択し、
    上記コマンド選択論理ブロックの出力、上記有効ビット選択論理ブロック、および上記プリフェッチ制御ビット選択論理ブロックの出力が上記専有バス経由で上記CPUコアに伝達される請求項11記載の半導体装置。
  13. 上記第2記憶部は、上記例外又は割り込みのイベントに対応するコードが格納されるコードアレイと、
    上記コードアレイ内のコードに対応する例外又は割り込みの処理ルーチンの先頭アドレス情報として、当該先頭アドレスに対応するオフセットアドレスが格納されるアドレスアレイと、
    上記CPUコアから上記専有バスを介して上記例外又は割り込みのイベントを示すコードが伝達された場合に、当該コードが上記コードアレイ内の有効なコードと一致するか否かを判定するコード一致判定論理ブロックと、
    上記コード一致判定論理ブロックでの判定結果に応じて、上記アドレスアレイ内のオフセットアドレスを選択するアドレス選択論理ブロックと、を含み、
    上記アドレス選択論理ブロックの出力が上記専有バス経由で上記CPUコアに伝達される請求項3記載の半導体装置。
  14. 上記CPUコアは、上記専有バス経由で上記第2記憶部から伝達されたオフセットアドレスにベースアドレスを加算することで例外又は割り込み処理ルーチンの有効な先頭アドレスを形成するための加算器を含む請求項13記載の半導体装置。
  15. 上記第2記憶部は、上記例外又は割り込みのイベントに対応する例外又は割り込みの処理ルーチンの先頭アドレス情報が格納されるアドレスアレイを含み、
    上記CPUコアより伝達される上記例外又は割り込みのイベントを示すコードを参照アドレスとして上記第2記憶部を参照することで上記アドレスアレイ内の上記先頭アドレス情報を選択し上記専有バスに読み出し可能にされる請求項3記載の半導体装置。
  16. 上記第2記憶部は、例外イベントに対応する例外処理ルーチンの先頭アドレスを出力可能な第1イベントキャッシュと、
    ハードウェア割り込みイベントに対応する例外処理ルーチンの先頭アドレスを出力可能な第2イベントキャッシュメモリと、
    ソフトウェア割り込みイベントに対応する例外処理ルーチンの先頭アドレスを出力可能な第3イベントキャッシュメモリと、を含み、
    上記CPUコアは、受け付けられた例外イベントに対応するコードを保持する第1イベントコードレジスタと、
    受け付けられたハードウェア割り込みイベントに対応するコードを保持する第2イベントコードレジスタと、
    受け付けられたソフトウェア割り込みイベントに対応するコードを保持する第3イベントコードレジスタと、を含み、
    上記第1イベントコードレジスタ内のコードに基づいて上記第1イベントキャッシュメモリ内の先頭アドレスが上記専有バスに読み出され、上記第2イベントコードレジスタ内のコードに基づいて上記第2イベントキャッシュメモリ内の先頭アドレスが上記専有バスに読み出され、上記第3イベントコードレジスタ内のコードに基づいて上記第3イベントキャッシュメモリ内の先頭アドレスが上記専有バスに読み出される請求項4記載の半導体装置。
  17. 上記第2記憶部は、例外又は割り込みのイベントに対応する例外又は割り込みの処理ルーチンの先頭アドレスを出力可能な第1イベントキャッシュメモリと、
    外部周辺機器からの割り込み要求を識別するコードに対応する例外処理ルーチンの先頭アドレスを出力可能な第2イベントキャッシュメモリと、を含み、
    上記CPUコアは、受け付けられた例外又は割り込みのイベントを示すコードを保持する第1イベントコードレジスタと、
    上記外部周辺機器からの割り込み要求を識別するコードを保持する第2イベントコードレジスタと、を含み、
    上記第1イベントコードレジスタ内のコードに基づいて上記第1イベントキャッシュメモリ内の先頭アドレスが上記専有バスに読み出され、上記第2イベントコードレジスタ内のコードに基づいて上記第2イベントキャッシュメモリ内の先頭アドレスが上記専有バスに読み出される請求項4記載の半導体装置。
  18. 上記第2記憶部は、分岐命令の分岐先アドレスを識別するためのイベントを示す分岐先イベント・コードが格納されるコードアレイと、
    上記コードアレイ内のコードに対応する分岐先アドレス情報が格納されるアドレスアレイと、
    上記分岐先アドレスから連続する分岐先命令列が格納されるコマンドアレイと、を含む請求項3記載の半導体装置。
  19. 少なくとも上記分岐先イベント・コードにより、分岐命令の分岐先アドレスを識別可能とされることを特徴とする請求項18記載の半導体装置。
  20. 上記第2記憶部は、更に上記コード一致判定論理ブロックの判定結果に応じて、上記アドレスアレイ内のアドレス有効ビットを選択するためのアドレス有効ビット選択論理ブロックを含み、
    上記アドレスアレイには、更に、格納されているメモリ参照先アドレス情報をプログラムカウンタに設定することを有効/無効に制御されるアドレス有効ビットが格納され、
    上記コード一致判定論理ブロックの判定結果に応じて、更に、上記アドレス有効ビット選択論理ブロックは、上記アドレス有効ビットを選択し、上記アドレス有効ビット選択論理ブロックの出力が上記専有バス経由で上記CPUコアに伝達される請求項3記載の半導体装置。
  21. 上記CPUコアは、更に上記専有バス経由で取得される上記アドレス有効ビットによって、上記専有バス経由で取得される上記アドレスアレイのメモリ参照先アドレス情報をプログラムカウンタに設定するか否かを制御する機能を含む請求項20の半導体装置。
  22. 上記第2記憶部は、上記CPUコアが管理されるアドレス空間におけるメモリ参照先を識別するためのメモリ参照イベント・コードが格納されるコードアレイと、これに関連づけられる上記メモリ参照先のアドレスが格納されるアドレスアレイと、上記アドレスアレイに格納された上記メモリ参照先のアドレスを先頭アドレスとするメモリ参照先のデータ列が格納されるコマンドアレイを含む請求項21記載の半導体装置。
  23. 少なくとも上記メモリ参照イベント・コードにより、メモリ参照先アドレスを識別可能とされることを特徴とする請求項22記載の半導体装置。
  24. 上記第2記憶部は、更に、上記アドレスアレイに格納されている先頭アドレス情報に対応する例外又は割り込みの処理ルーチンにおける先頭命令列が格納されるコマンドアレイと、
    上記コード一致判定論理ブロックでの判定結果に応じて上記コマンドアレイ内の当該先頭命令列を選択するためのコマンド選択論理ブロックと、有効ビット選択論理ブロック77とを含み、
    上記コマンドアレイには、コマンドアレイの命令列の有効/無効を示すコマンド有効ビットが格納され、
    上記コード一致判定論理ブロックの判定結果に応じて、更に上記有効ビット選択論理ブロックは、上記コマンド有効ビットを選択し、
    上記コマンド選択論理ブロックの出力、及び上記有効ビット選択論理ブロックの出力が、上記専有バス経由で上記CPUコアに伝達される請求項11記載の半導体装置。
  25. 上記第2記憶部は、更に、上記アドレスアレイに格納されている先頭アドレス情報に対応する例外又は、割り込みの処理ルーチンにおける先頭命令列が格納されるコマンドアレイと、
    上記コード一致判定論理ブロックでの判定結果に応じて上記コマンドアレイ内の当該先頭命令列を選択するためのコマンド選択論理ブロックと、プリフェッチ制御ビット選択論理ブロックと、を含み、
    上記コマンドアレイには、更に、他のキャッシュメモリに対するプリフェッチを要求するプリフェッチ制御ビットが格納され、
    上記コード一致判定論理ブロックの判定結果に応じて、上記プリフェッチ制御ビット選択論理は、上記プリフェッチ制御ビットを選択し、
    上記コマンド選択論理ブロックの出力、上記プリフェッチ制御ビット選択論理ブロックの出力が、上記専有バス経由で、上記CPUコアに伝達される請求項11記載の半導体装置。
  26. 上記CPUコアは、上記専有バス経由で上記第2記憶部から伝達されたオフセットアドレスにベースアドレスを加算するか否かを制御する信号により上記先頭アドレスを生成可能とする機能を含む請求項14記載の半導体装置。
  27. 上記第2記憶部は、上記イベントのそれぞれに対応されるコマンドアレイのラインサイズを任意に設可能とされることを特徴とする請求項16記載の半導体装置。
JP2010055697A 2010-03-12 2010-03-12 半導体装置 Withdrawn JP2011191865A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010055697A JP2011191865A (ja) 2010-03-12 2010-03-12 半導体装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010055697A JP2011191865A (ja) 2010-03-12 2010-03-12 半導体装置

Publications (1)

Publication Number Publication Date
JP2011191865A true JP2011191865A (ja) 2011-09-29

Family

ID=44796741

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010055697A Withdrawn JP2011191865A (ja) 2010-03-12 2010-03-12 半導体装置

Country Status (1)

Country Link
JP (1) JP2011191865A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113568349A (zh) * 2021-07-27 2021-10-29 深圳市轱辘车联数据技术有限公司 数据处理方法、装置、终端设备及可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113568349A (zh) * 2021-07-27 2021-10-29 深圳市轱辘车联数据技术有限公司 数据处理方法、装置、终端设备及可读存储介质
CN113568349B (zh) * 2021-07-27 2023-05-02 深圳市轱辘车联数据技术有限公司 数据处理方法、装置、终端设备及可读存储介质

Similar Documents

Publication Publication Date Title
US8667225B2 (en) Store aware prefetching for a datastream
US7065632B1 (en) Method and apparatus for speculatively forwarding storehit data in a hierarchical manner
EP2159706B1 (en) Operation processing apparatus and operation processing method
US6963962B2 (en) Memory system for supporting multiple parallel accesses at very high frequencies
JP2004220581A (ja) 入出力(i/o)通信のハードウェア・アクセラレーションを実現するデータ処理システム
JP2000231549A (ja) マイクロプロセッサ
JPH08320796A (ja) データ処理装置
JPH08320829A (ja) データ処理装置
EP1139222A1 (en) Prefetch for TLB cache
JP5625809B2 (ja) 演算処理装置、情報処理装置及び制御方法
US10209991B2 (en) Instruction set and micro-architecture supporting asynchronous memory access
TW200417914A (en) Interrupt-processing system for shortening interrupt latency in microprocessor
WO2006038258A1 (ja) データプロセッサ
US7617380B2 (en) System and method for synchronizing translation lookaside buffer access in a multithread processor
JP2011191865A (ja) 半導体装置
JP3822885B2 (ja) 1チップデータプロセッサ
JP4024247B2 (ja) 半導体データプロセッサ
EP3330848B1 (en) Detection of stack overflow in a multithreaded processor
JP2011154528A (ja) データ処理装置
JP2004005710A (ja) 情報処置装置
JP2007286990A (ja) キャッシュメモリ装置及びそれに用いるキャッシュメモリ制御方法並びにそのプログラム
JPH07282023A (ja) データ転送量可変プロセッサ及びそれを用いたシステム
JP3614207B2 (ja) データ処理装置
JP5440419B2 (ja) 情報処理システム
CN118012455A (zh) 可配置的存储器系统及其存储器管理方法

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20130604