(57)【要約】【課題】高い自由度かつ低コストでハンドラを配置できるとともに、高速にハンドラアドレスを特定できるマイクロコントローラ、ハンドラアドレス特定方法及びプログラムを提供する。【解決手段】マイクロコントローラ１００は、複数の割込要因による割込要求の入力に応じ、前記割込要因に予め対応付けられた制御情報をＣＰＵ３００に対して出力する割込コントローラ２００と、制御情報に予め対応付けられた割込ハンドラを格納するハンドラ記憶手段４０１と、ハンドラ記憶手段４０１よりアクセス時間が短く、ベースアドレスを格納するベースアドレス記憶手段４０２と、ベースアドレス記憶手段４０２に接続されたＣＰＵ３００とを有する。ＣＰＵ３００は、ベースアドレス及び制御情報に基づいて、ハンドラ記憶手段４０１におけるハンドラの格納位置であるハンドラアドレスを特定する。【選択図】図１
2014081783.tif 000002
【特許請求の範囲】
【請求項１】
複数の割込要因による割込要求に応じて割込ハンドラを実行するマイクロコントローラであって、
前記割込ハンドラの格納位置を示すアドレスであるハンドラアドレスを特定するために用いられるベースアドレスを記憶する第１の記憶手段と、
前記割込ハンドラを記憶する第２の記憶手段と、
前記割込要求の入力に応じて、割込要求と、前記割込要因に予め対応付けられた制御情報を出力する割込コントローラと、
前記割込コントローラから出力された割込要求に応じて、前記割込ハンドラを取得して実行するＣＰＵを備え、
前記ＣＰＵから前記第１の記憶手段に対するアクセス時間は、前記ＣＰＵから前記第２の記憶手段に対するアクセス時間よりも短く、かつ、
前記ＣＰＵは、
（ａ）前記割込コントローラから出力された割込要求に応じて、前記第１の記憶手段にアクセスして前記ベースアドレスを取得し、
（ｂ）当該取得されたベースアドレスと、前記割込コントローラから出力された前記制御情報に基づいて、前記ハンドラアドレスを特定し、
（ｃ）特定されたハンドラアドレスに基づいて前記第２の記憶手段にアクセスして前記割込ハンドラを実行する、
マイクロコントローラ。
【請求項２】
前記第２の記憶手段は、前記制御情報と前記ハンドラアドレスとを予め対応付けたハンドラアドレステーブルを格納するテーブル記憶領域を有し、
前記ベースアドレスは、前記第２の記憶手段における前記ハンドラアドレステーブルの格納位置を示すアドレスであり、
前記ＣＰＵは、
（ｂ−１）前記ベースアドレスに基づいて前記ハンドラアドレステーブルを参照し、当該ハンドラアドレステーブルにおいて前記割込コントローラから出力された前記制御情報と対応づけられた前記ハンドラアドレスを特定する
請求項１記載のマイクロコントローラ。
【請求項３】
前記第２の記憶手段は、複数の割込ハンドラのそれぞれを、前記制御情報によって特定される順に、予め用意された固定サイズの個別領域のそれぞれに格納するハンドラ格納領域を有し、
前記ベースアドレスは、前記第２の記憶手段における前記ハンドラ格納領域の格納位置を示すアドレスであり、
前記ＣＰＵは、
（ｂ−２）前記ベースアドレスに基づいて、前記制御情報によって特定される順と、前記ハンドラ格納領域において前記割込ハンドラのそれぞれを格納する個別領域の固定サイズから前記ハンドラアドレスを特定する
請求項１記載のマイクロコントローラ。
【請求項４】
複数の割込要因による割込要求に応じて割込ハンドラを実行するマイクロコントローラであって、
前記割込要求の入力に応じて、割込要求と、前記割込要因に予め対応付けられた第１又は第２の制御情報と、前記割込要因に予め対応づけられたハンドラアドレス特定方式情報とを出力する割込コントローラと、
前記割込コントローラから出力された割込要求に応じて、前記第１の割込ハンドラ又は前記第２の割込ハンドラを取得して実行するＣＰＵと、
前記第１の割込ハンドラの格納位置を示すアドレスである第１のハンドラアドレスを特定するために用いられる第１のベースアドレスと、前記第２の割込ハンドラの格納位置を示すアドレスである第２のハンドラアドレスを特定するために用いられる第２のベースアドレスを記憶する第１の記憶手段と、
複数の前記第１の割込ハンドラのそれぞれを前記第１の制御情報によって特定される順に予め用意された固定サイズの個別領域のそれぞれに格納する第１の割込ハンドラ格納領域と、前記第２の制御情報と前記第２のハンドラアドレスとを予め対応付けたハンドラアドレステーブルを格納するテーブル記憶領域と、前記第１の割込ハンドラを格納する第１の割込ハンドラ格納領域とを有する第２の記憶手段とを備え、
前記ＣＰＵから前記第１の記憶手段に対するアクセス時間は、前記ＣＰＵから前記第２の記憶手段に対するアクセス時間よりも短く、かつ、
前記ＣＰＵは、
（Ａ）前記ハンドラアドレス特定方式情報が直接分岐方式を示す場合には、
（ａ）前記割込コントローラから出力された割込要求に応じて、前記第１の記憶手段にアクセスして前記第１のベースアドレスを取得し、
（ｂ−２）前記第１のベースアドレスに基づいて、前記第１の制御情報によって特定される順と、前記第１のハンドラ格納領域において前記割込ハンドラのそれぞれを格納する個別領域の固定サイズから前記第１のハンドラアドレスを特定し、
（ｃ）特定された第１のハンドラアドレスに基づいて前記第２の記憶手段にアクセスして前記第１の割込ハンドラを実行する、
（Ｂ）前記ハンドラアドレス特定方式情報がテーブル参照方式を示す場合には、
（ａ）前記割込コントローラから出力された割込要求に応じて、前記第１の記憶手段にアクセスして前記第２のベースアドレスを取得し、
（ｂ−１）前記第２のベースアドレスに基づいて前記ハンドラアドレステーブルを参照し、当該ハンドラアドレステーブルにおいて前記割込コントローラから出力された前記第２の制御情報と対応づけられた前記第２のハンドラアドレスを特定し、
（ｃ）特定された第２のハンドラアドレスに基づいて前記第２の記憶手段にアクセスして前記第２の割込ハンドラを実行する、
マイクロコントローラ。
【請求項５】
前記第１の記憶手段は、レジスタであり、
前記第２の記憶手段は、前記レジスタよりも前記ＣＰＵによるアクセス時間が長いメモリである
請求項１乃至４いずれか１項記載のマイクロコントローラ。
【請求項６】
前記テーブル記憶領域と、前記第１の割込ハンドラ格納領域と、前記第２の割込ハンドラ格納領域が同一のアドレス空間上にある
請求項４記載のマイクロコントローラ。
【請求項７】
前記制御情報は優先度である
請求項１乃至３いずれか１項記載のマイクロコントローラ。
【請求項８】
前記第制御情報は割込要因の識別子である
請求項１乃至３いずれか１項記載のマイクロコントローラ。
【請求項９】
前記制御情報はハンドラ識別子である
請求項１乃至３いずれか１項記載のマイクロコントローラ。
【請求項１０】
前記第２の制御情報は割込要因の識別子である
請求項４又は６記載のマイクロコントローラ。
【請求項１１】
複数の割込要因に共通のハンドラ識別子が予め対応付けられ、
前記第２の記憶手段は、前記ハンドラ識別子に対応する格納領域に、割込要因毎に異なる他のハンドラへさらに分岐する処理を前記ＣＰＵに実行させるハンドラを格納する
請求項９記載のマイクロコントローラ。
【請求項１２】
前記第２の記憶手段は、複数のハンドラ識別子に対応する連続する格納領域に１つのハンドラを格納し、
前記複数のハンドラ識別子のうち、前記連続する格納領域の先頭領域に対応するハンドラの識別子のみが、所定の割込要因と対応付けられる
請求項９又は１１記載のマイクロコントローラ。
【請求項１３】
ＣＰＵが、
割込コントローラから割込要因に対応する制御情報を入力するステップと、
第１の記憶手段からベースアドレスを取得するステップと、
前記ベースアドレス及び前記制御情報に基づいて、第２の記憶手段におけるハンドラの格納位置であるハンドラアドレスを特定するステップと、を有し、
前記ＣＰＵから前記第１の記憶手段に対するアクセス時間は、前記ＣＰＵから前記第２の記憶手段に対するアクセス時間よりも短い
ハンドラアドレス特定方法。
【請求項１４】
前記ベースアドレスは、前記第２の記憶手段における、前記制御情報と前記ハンドラアドレスとを予め対応付けたハンドラアドレステーブルの格納位置を示すアドレスである
請求項１３記載のハンドラアドレス特定方法。
【請求項１５】
前記第２の記憶手段は、複数の割込ハンドラのそれぞれを、前記制御情報によって特定される順に、予め用意された固定サイズの個別領域のそれぞれに格納するハンドラ格納領域を有し、
前記ベースアドレスは、前記第２の記憶手段における前記ハンドラ格納領域の格納位置を示すアドレスである
請求項１３記載のハンドラアドレス特定方法。
【請求項１６】
ＣＰＵが、
割込コントローラから、割込要因に対応する第１又は第２の制御情報と、前記割込要因に対応するハンドラアドレス特定方式情報とを入力するステップと、
（Ａ）前記ハンドラアドレス特定方式情報が直接分岐方式を示す場合、
第１の記憶手段から第１のベースアドレスを取得するステップと、
前記第１のベースアドレス及び前記第１の制御情報に基づいて、第２の記憶手段における第１のハンドラ格納領域から第１のハンドラの格納位置である第１のハンドラアドレスを特定するステップと、
（Ｂ）前記ハンドラアドレス特定方式情報がテーブル参照方式を示す場合、
第１の記憶手段から第２のベースアドレスを取得するステップと、
前記第２のベースアドレス及び前記第２の制御情報に基づいて、ハンドラアドレステーブルから第２のハンドラアドレスを特定するステップと、を有し、
前記第１のハンドラ格納領域は、前記第１のハンドラをそれぞれ格納するための固定サイズの個別領域に前記第１の制御情報に基づく順序で格納し、
前記第１のベースアドレスは、前記第２の記憶手段における前記第１のハンドラ格納領域の格納位置を示すアドレスであり、
前記ハンドラアドレステーブルは、前記第２の制御情報と前記第２のハンドラアドレスとを予め対応付けたテーブルであり、
前記第２のベースアドレスは、前記第２の記憶手段におけるハンドラアドレステーブルの格納位置を示すアドレスであり、
前記ＣＰＵから前記第１の記憶手段に対するアクセス時間は、前記ＣＰＵから前記第２の記憶手段に対するアクセス時間よりも短い
ハンドラアドレス特定方法。
【請求項１７】
前記第１の記憶手段は、レジスタであり、
前記第２の記憶手段は、前記レジスタよりも前記ＣＰＵによるアクセス時間が長いメモリである
請求項１３乃至１６いずれか１項記載のハンドラアドレス特定方法。
【請求項１８】
前記第１の制御情報はハンドラ識別子であり、
複数の割込要因に共通のハンドラ識別子が予め対応付けられ、
前記第２の記憶手段は、前記ハンドラ識別子に対応する格納領域に、割込要因毎に異なる他のハンドラへさらに分岐する処理を前記ＣＰＵに実行させるハンドラを格納する
請求項１６記載のハンドラアドレス特定方法。
【請求項１９】
前記第２の記憶手段は、複数のハンドラ識別子に対応する連続する格納領域に１つのハンドラを格納し、
前記複数のハンドラ識別子のうち、前記連続する格納領域の先頭領域に対応するハンドラの識別子のみが、所定の割込要因と対応付けられる
請求項１８記載のハンドラアドレス特定方法。
【請求項２０】
コンピュータに、請求項１３乃至１９のいずれか１項記載の方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラ、ハンドラアドレス特定方法及びプログラムに関し、特にハンドラアドレスを特定する技術に関する。
【背景技術】
【０００２】
マイクロコントローラは、演算結果がエラーを起こした場合や周辺機器から処理要求が送られてきた場合等に、実行中のプログラムを中断してあらかじめ登録されたプログラムを呼び出す機能を持っている。これを割込という。このとき、割込要求の種類に応じて呼び出される、割込を処理及び制御するためにメモリ上に待機しているプログラムを割込ハンドラ（以下、割込ハンドラ又はハンドラ）という。従来より、マイクロコントローラに対する割込要求に応じ、実行すべきハンドラの格納アドレス（以下、ハンドラアドレス）を特定するための方式が提案されている。
【０００３】
特許文献１は、ハンドラアドレスの特定方式として、固定ベクタ割込方式及び可変ベクタ割込方式を開示している。固定ベクタ割込方式では、複数の割込レベルに対応付けられた複数のハンドラアドレスが、レジスタＩＨＡに格納されている。そして、発生した割込要求の割込レベルに応じ、レジスタＩＨＡからその割込レベルに対応するハンドラアドレスを選択する。固定ベクタ割込方式は、処理時間が短く、レジスタＩＨＡの内容を自由に設定できるため自由度が高いという特長がある。一方、可変ベクタ割込方式とは、割込が発生するとベクタ番号フェッチを行い、そのベクタ番号に基づいてベクタテーブルエントリ計算を行い、ハンドラアドレスを特定する方式である。可変ベクタ割込方式も、自由度が高いという特長がある。
【０００４】
特許文献１はさらに、固定ベクタ割込方式及び可変ベクタ割込方式のそれぞれの特長を補完するため、これらの方式を選択可能とした構成を開示している。具体的には、複数の割込レベル毎に、それぞれ採用すべきハンドラアドレスの特定方式を予め対応付けてレジスタＩＶＣに格納しておき、発生した割込要求の割込レベルに応じ、レジスタＩＶＣからその割込レベルに対応するハンドラアドレスの特定方式を選択するものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０６−３２４８８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１記載の装置では、固定ベクタ割込方式のために、レジスタＩＨＡが、複数の割込レベルに対応する複数のハンドラアドレスをすべて格納している。かかる構成においては、割込レベルの種類が増大するほど、レジスタＩＨＡのサイズも増大する。また、一般にレジスタＩＨＡに使用されるようなレジスタは、汎用のフラッシュメモリ等に比べアクセス時間が短い、換言すれば高速である半面、単位ビットあたりの面積（コスト）が高価である。そのため、レジスタの増大は、回路サイズや製造コストの増大を招くという問題がある。よって、高速かつ高い自由度という特長を維持しつつ、小サイズ、低コストを実現できるハンドラアドレスの特定手法が望まれる。
【０００７】
その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態によれば、マイクロコントローラは、複数の割込要因による割込要求に応じて割込ハンドラを実行するマイクロコントローラであって、
前記割込ハンドラの格納位置を示すアドレスであるハンドラアドレスを特定するために用いられるベースアドレスを記憶する第１の記憶手段と、前記割込ハンドラを記憶する第２の記憶手段と、
前記割込要求の入力に応じて、割込要求と、前記割込要因に予め対応付けられた制御情報を出力する割込コントローラと、
前記割込コントローラから出力された割込要求に応じて、前記割込ハンドラを取得して実行するＣＰＵを備え、
前記ＣＰＵから前記第１の記憶手段に対するアクセス時間は、前記ＣＰＵから前記第２の記憶手段に対するアクセス時間よりも短く、かつ、
前記ＣＰＵは、
（ａ）前記割込コントローラから出力された割込要求に応じて、前記第１の記憶手段にアクセスして前記ベースアドレスを取得し、
（ｂ）当該取得されたベースアドレスと、前記割込コントローラから出力された前記制御情報に基づいて、前記ハンドラアドレスを特定し、
（ｃ）特定されたハンドラアドレスに基づいて前記第２の記憶手段にアクセスして前記割込ハンドラを実行する。
【０００９】
他の実施の形態によれば、マイクロコントローラは、複数の割込要因による割込要求に応じて割込ハンドラを実行するマイクロコントローラであって、
前記割込要求の入力に応じて、割込要求と、前記割込要因に予め対応付けられた第１又は第２の制御情報と、前記割込要因に予め対応づけられたハンドラアドレス特定方式情報とを出力する割込コントローラと、
前記割込コントローラから出力された割込要求に応じて、前記第１の割込ハンドラ又は前記第２の割込ハンドラを取得して実行するＣＰＵと、
前記第１の割込ハンドラの格納位置を示すアドレスである第１のハンドラアドレスを特定するために用いられる第１のベースアドレスと、前記第２の割込ハンドラの格納位置を示すアドレスである第２のハンドラアドレスを特定するために用いられる第２のベースアドレスを記憶する第１の記憶手段と、
複数の前記第１の割込ハンドラのそれぞれを前記第１の制御情報によって特定される順に予め用意された固定サイズの個別領域のそれぞれに格納する第１の割込ハンドラ格納領域と、前記第２の制御情報と前記第２のハンドラアドレスとを予め対応付けたハンドラアドレステーブルを格納するテーブル記憶領域と、前記第１の割込ハンドラを格納する第１の割込ハンドラ格納領域とを有する第２の記憶手段とを備え、
前記ＣＰＵから前記第１の記憶手段に対するアクセス時間は、前記ＣＰＵから前記第２の記憶手段に対するアクセス時間よりも短く、かつ、
前記ＣＰＵは、
（Ａ）前記ハンドラアドレス特定方式情報が直接分岐方式を示す場合には、
（ａ）前記割込コントローラから出力された割込要求に応じて、前記第１の記憶手段にアクセスして前記第１のベースアドレスを取得し、
（ｂ−２）前記第１のベースアドレスに基づいて、前記第１の制御情報によって特定される順と、前記第１のハンドラ格納領域において前記割込ハンドラのそれぞれを格納する個別領域の固定サイズから前記第１のハンドラアドレスを特定し、
（ｃ）特定された第１のハンドラアドレスに基づいて前記第２の記憶手段にアクセスして前記第１の割込ハンドラを実行する、
（Ｂ）前記ハンドラアドレス特定方式情報がテーブル参照方式を示す場合には、
（ａ）前記割込コントローラから出力された割込要求に応じて、前記第１の記憶手段にアクセスして前記第２のベースアドレスを取得し、
（ｂ−１）前記第２のベースアドレスに基づいて前記ハンドラアドレステーブルを参照し、当該ハンドラアドレステーブルにおいて前記割込コントローラから出力された前記第２の制御情報と対応づけられた前記第２のハンドラアドレスを特定し、
（ｃ）特定された第２のハンドラアドレスに基づいて前記第２の記憶手段にアクセスして前記第２の割込ハンドラを実行する。
【００１０】
他の実施の形態によれば、ハンドラアドレス特定方法は、ＣＰＵが、
割込コントローラから割込要因に対応する制御情報を入力するステップと、
第１の記憶手段からベースアドレスを取得するステップと、
前記ベースアドレス及び前記制御情報に基づいて、第２の記憶手段におけるハンドラの格納位置であるハンドラアドレスを特定するステップと、を有し、
前記ＣＰＵから前記第１の記憶手段に対するアクセス時間は、前記ＣＰＵから前記第２の記憶手段に対するアクセス時間よりも短い。
【００１１】
他の実施の形態によれば、ハンドラアドレス特定方法は、ＣＰＵが、
割込コントローラから、割込要因に対応する第１又は第２の制御情報と、前記割込要因に対応するハンドラアドレス特定方式情報とを入力するステップと、
（Ａ）前記ハンドラアドレス特定方式情報が直接分岐方式を示す場合、
第１の記憶手段から第１のベースアドレスを取得するステップと、
前記第１のベースアドレス及び前記第１の制御情報に基づいて、第２の記憶手段における第１のハンドラ格納領域から第１のハンドラの格納位置である第１のハンドラアドレスを特定するステップと、
（Ｂ）前記ハンドラアドレス特定方式情報がテーブル参照方式を示す場合、
第１の記憶手段から第２のベースアドレスを取得するステップと、
前記第２のベースアドレス及び前記第２の制御情報に基づいて、ハンドラアドレステーブルから第２のハンドラアドレスを特定するステップと、を有し、
前記第１のハンドラ格納領域は、前記第１のハンドラをそれぞれ格納するための固定サイズの個別領域に前記第１の制御情報に基づく順序で格納し、
前記第１のベースアドレスは、前記第２の記憶手段における前記第１のハンドラ格納領域の格納位置を示すアドレスであり、
前記ハンドラアドレステーブルは、前記第２の制御情報と前記第２のハンドラアドレスとを予め対応付けたテーブルであり、
前記第２のベースアドレスは、前記第２の記憶手段におけるハンドラアドレステーブルの格納位置を示すアドレスであり、
前記ＣＰＵから前記第１の記憶手段に対するアクセス時間は、前記ＣＰＵから前記第２の記憶手段に対するアクセス時間よりも短い。
【００１２】
他の実施の形態によれば、プログラムは、コンピュータに、上述のいずれか１つの方法を実行させるものである。
【発明の効果】
【００１３】
本発明により、高い自由度かつ低コストでハンドラを配置できるとともに、高速にハンドラアドレスを特定できるマイクロコントローラ、ハンドラアドレス特定方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１にかかるマイクロコントローラ１００の構成を示す図である。
【図２】実施の形態１にかかるマイクロコントローラ１００の構成を示す図である。
【図３】実施の形態１にかかる割込コントローラ２００の構成を示す図である。
【図４】実施の形態１にかかる割込制御レジスタ２０６の構成を示す図である。
【図５】実施の形態１にかかるベースレジスタ４０２０及び４０３０の構成を示す図である。
【図６】実施の形態１にかかるマイクロコントローラ２００の処理を示すフローチャートである。
【図７】実施の形態１にかかるメモリ４０１０におけるハンドラの配置を示す図である。
【図８】実施の形態１にかかるマイクロコントローラ２００の処理を示すタイミングチャートである。
【図９】実施の形態２にかかる割込制御レジスタ２０６の構成を示す図である。
【図１０】実施の形態２にかかるマイクロコントローラ２００の処理を示すフローチャートである。
【図１１】実施の形態２にかかるメモリ４０１０におけるハンドラの配置を示す図である。
【図１２】実施の形態３にかかる割込制御レジスタ２０６の構成を示す図である。
【図１３】実施の形態３にかかるマイクロコントローラ２００の処理を示すフローチャートである。
【図１４】実施の形態３にかかるメモリ４０１０におけるハンドラの配置を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【００１６】
＜実施の形態１＞
本実施の形態では、上述の固定ベクタ割当方式に比べ低コストであるテーブル参照方式と、テーブル参照方式に比べより高速な割込応答が可能である直接分岐方式と、の２つのハンドラアドレス特定方式を開示する。
【００１７】
はじめに、テーブル参照方式の概要について説明する。テーブル参照方式では、ハンドラアドレステーブルベースレジスタ（ＨＴＢＡＳＥ）がハンドラアドレステーブルの先頭アドレスを格納し、ハンドラアドレステーブルが、複数の割込要因に対応する複数のハンドラアドレスを格納する。そして、割込要求の発生に応じ、ＣＰＵが、レジスタＨＴＢＡＳＥからハンドラアドレステーブルの先頭アドレスを取得し、ハンドラアドレステーブルから、その割込要求の割込要因に対応するハンドラアドレスを選択する。
【００１８】
テーブル参照方式では、ハンドラアドレステーブルを、レジスタに比べ低速であるが単位ビット当たりの面積（コスト）が安価である汎用のフラッシュメモリ等に格納することが可能である。したがって、テーブル参照方式は、特許文献１記載の固定ベクタ割込方式においてレジスタＩＨＡに要していたコストを削減することができる。
【００１９】
本実施の形態は、このような構成により、高速かつ高い自由度という特長を維持しつつ、小サイズ、低コストでのハンドラアドレスの特定を実現する。
【００２０】
一方、より高速な割込応答性への要求も存在する。よって、本実施の形態では、この更なる要求に応えるため、直接分岐方式によるハンドラアドレスの特定もサポートした。直接分岐方式によれば、テーブル参照方式よりも高速な割込応答を実現できる。
【００２１】
直接分岐方式の概要について説明する。直接分岐方式では、ハンドラアドレスベースレジスタ（ＨＡＢＡＳＥ）がベースアドレスを格納する。また、メモリ（汎用のフラッシュメモリ等）が、複数の割込レベル（例えば優先度）に対応する複数のハンドラを、ベースアドレスを先頭に優先度順に格納する。ここで、各ハンドラの格納領域のサイズは一律に固定される。そのため、ベースアドレスと優先度とに基づき、その優先度に対応するハンドラの格納領域のアドレス（ハンドラアドレス）が一意に特定される。割込要求が発生すると、ＣＰＵは、レジスタＨＡＢＡＳＥからベースアドレスを取得し、ベースアドレスとその割込要求の優先度とから、ハンドラアドレスを特定する。
【００２２】
直接分岐方式は、ハンドラアドレステーブルを参照するステップを要しないため、テーブル参照方式に比べ高速である。但し、直接分岐方式では、ハンドラの格納領域のサイズが固定されるという制約が生ずる。
【００２３】
図１を用いて、上述の特徴を備えたマイクロコントローラ１００の構成について説明する。
【００２４】
本実施の形態にかかるマイクロコントローラ１００は、少なくとも割込コントローラ２００、ＣＰＵ３００、ハンドラ記憶手段４０１、ベースアドレス記憶手段４０２を含む。
【００２５】
ハンドラ記憶手段４０１は、第２の記憶手段として割込ハンドラを格納する記憶手段である。ハンドラ記憶手段４０１における割込ハンドラの格納アドレスをハンドラアドレスという。ハンドラ記憶手段４０１としては、例えば汎用のフラッシュメモリを用いることができる。
【００２６】
ベースアドレス記憶手段４０２は、第１の記憶手段として、ベースアドレスを格納する記憶手段である。ベースアドレス記憶手段４０２としては、例えばレジスタを用いることができる。ＣＰＵ３００から第１の記憶手段であるベースアドレス記憶手段４０２に対するアクセス時間は、ＣＰＵ３００から第２の記憶手段であるハンドラ記憶手段４０１に対するアクセス時間よりも短い。ここで、ベースアドレスとは、ハンドラアドレスを特定するための演算の基準、即ちハンドラアドレスを特定するために用いられるアドレスである。
【００２７】
割込コントローラ２００は、複数の割込要因による割込要求の入力に応じ、割込要因毎に予め対応付けられた制御情報をＣＰＵ３００に対して出力する。
【００２８】
ＣＰＵ３００は、割込コントローラ２００が出力する制御情報と、ベースアドレス記憶手段４０２に格納されているベースアドレスと、をパラメタとする所定の演算によってハンドラアドレスを特定する。
【００２９】
例えば、テーブル参照方式によりハンドラアドレスを特定する場合は、以下の演算を行うことによりハンドラアドレスを特定できる。
【００３０】
前提として、マイクロコントローラ１００は、制御情報とハンドラアドレスとを予め対応付けたハンドラアドレステーブルを格納している、テーブル記憶手段をさらに有しているものとする。また、ベースアドレスは、テーブル記憶手段におけるハンドラアドレステーブルの格納アドレスを示しているものとする。このとき、ＣＰＵ３００は、テーブル記憶手段のベースアドレスに格納されているハンドラアドレステーブルから、制御情報をキーとして目的のハンドラアドレスを取得する。その後、ＣＰＵ３００は、ハンドラ記憶手段４０１のハンドラアドレスからハンドラを取得し、割込処理を実行することができる。
【００３１】
また、直接分岐方式によりハンドラアドレスを特定する場合は、以下の演算を行うことによりハンドラアドレスを特定できる。
【００３２】
前提として、ハンドラ記憶手段４０１は、ハンドラをそれぞれ格納するための固定長の領域を、制御情報に基づく順序で格納したハンドラ格納領域を有しているものとする。また、ベースアドレスは、ハンドラ記憶手段４０１におけるハンドラ格納領域の先頭アドレスを示しているものとする。このとき、ＣＰＵ３００は、ハンドラ記憶手段４０１のベースアドレスと、上述の固定長と、制御情報に基づく順序のルールとに基づき、ハンドラアドレスを特定する。その後、ＣＰＵ３００は、ハンドラ記憶手段４０１のハンドラアドレスからハンドラを取得し、割込処理を実行することができる。
【００３３】
また、本実施の形態では、これらの２つのハンドラアドレス特定方式それぞれの特長を補完するため、条件に応じてこれらの方式を選択するための構成も開示する。これにより、小サイズ、低コストを前提としつつ、高速性と自由度とのバランスを兼ね備えたハンドラアドレス特定手法を実現できる。
【００３４】
図２を用いて、２つのハンドラアドレス特定方式を選択可能なマイクロコントローラ１００の構成について説明する。
【００３５】
割込コントローラ２００は、マイクロコントローラ１００の内部の周辺機能１０１からの割込要求、及びマイクロコントローラ１００の外部からの割込要求の入力を受け付け、ＣＰＵ３００に割込処理に必要な情報を出力する。割込コントローラ２００は、例えば、割込要因に応じたハンドラアドレスの特定方式を選択し、その選択の結果をハンドラアドレス特定方式情報としてＣＰＵ３００に出力することが可能である。外部からの割込要求の中には、例えば、自動車の衝突センサ５０２からの割込要求のように、ＣＰＵ３００が高速に応答してエアバッグを膨らませる処理を行う必要があるものもあれば、温度センサ５０１からの割込要求のように、それほど高速な応答が必要でないものもある。衝突センサ５０２のように、高速な応答性が求められる割込要因による割込要求の場合は、ハンドラアドレスの特定方式として、直接分岐方式が適している。また、温度センサ５０１のように、それほど高速な応答が必要でない割込要因による割込要求の場合は、ハンドラアドレスの特定方式として、メモリの利用効率を高められるテーブル参照方式が適している。
【００３６】
ハンドラ記憶手段４０１としてのメモリ４０１０は、プログラム格納領域としてのフラッシュメモリである。ＣＰＵ３００の動作速度がメモリ４０１０の動作速度よりも大きい場合には、その速度差によるＣＰＵ３００の処理性能低下を防ぐため、メモリ４０１０とＣＰＵ３００との間にキャッシュ１０４を設けることが多い。
【００３７】
図２のようにメモリ４０１０がマイクロコントローラ１００の内部に搭載される場合、割込ハンドラ（直接分岐方式によって特定される割込ハンドラ（第１の割込ハンドラ）及びテーブル参照方式によって特定される割込ハンドラ（第２の割込ハンドラ）を含む）及びテーブル参照方式において用いられるハンドラアドレステーブルをメモリ４０１０に格納することが好適である。本実施の形態では、第１の割込ハンドラ、第２の割込ハンドラ及びハンドラアドレステーブルがメモリ４０１０に格納されている形態を例として説明する。なお、第１の割込ハンドラ、第２の割込ハンドラ、及びハンドラアドレステーブルは、必ずしも物理的に同一のメモリ４０１０に格納する必要はない。例えば、第１の割込ハンドラ、第２の割込ハンドラ、及びハンドラアドレステーブルを、１つのアドレス空間を構成する複数の物理的な記憶装置に分散して格納しても良い。あるいは、これらをそれぞれ異なるアドレス空間に格納することもできる。具体的には、第１の割込ハンドラ又は第２の割込ハンドラのいずれか一方をメモリ４０１０に格納し、他方をＲＡＭ１０５、外部メモリ５０３又は図示しない他の記憶手段に格納しても良い。
【００３８】
ＣＰＵ３００は、メモリ４０１０に格納されたプログラムに従って所定の処理を実行する。ＣＰＵ３００は、命令フェッチユニット３０２及びキャッシュ１０４を介して、メモリ４０１０に格納されている命令コードを読み出す。ＣＰＵ３００が必要とする命令コードが既にキャッシュ１０４に格納されている場合は、メモリ４０１０に対するアクセスは行われず、キャッシュ１０４から直ちに命令フェッチユニット３０２に命令コードが送られる。
【００３９】
なお、プログラムは、マイクロコントローラ１００の内部にあるＲＡＭ１０５又はマイクロコントローラ１００の外部にある外部メモリ５０３に格納することもできる。ＲＡＭ１０５に命令コードが格納されている場合、ＣＰＵ３００は、命令フェッチユニット３０２、キャッシュ１０４、ＣＰＵバス１０３、ロードストアユニット３０３を介して命令コードを読み出す。また、外部メモリ５０３に命令コードが格納されている場合、ＣＰＵ３００は、命令フェッチユニット３０２、キャッシュ１０４、ＣＰＵバス１０３、外部メモリキャッシュ１０６、外部メモリコントローラ１０７を介して命令コードを読み出す。
【００４０】
ＣＰＵ３００が、割込コントローラ２００から、直接分岐方式が選択された割込要因からの割込要求を受け付けた場合、まず実行ユニット３０１が、ベースアドレス記憶手段４０２としてのハンドラアドレスベースレジスタ（ＨＡＢＡＳＥ）４０２０にアクセスし、第１のベースアドレスを取得する。そして、実行ユニット３０１は、取得した第１のベースアドレスと、割込コントローラ２００から受け付けた第１の制御情報、典型的には優先度を用いて、ハンドラアドレスを計算する。ハンドラアドレスの計算方法については後に詳述する。ＣＰＵ３００は、こうして得られたハンドラアドレスから、上述の手順により、ハンドラの命令コードの読み出しを行う。
【００４１】
ＣＰＵ３００が、割込コントローラ２００から、テーブル参照方式が選択された割込要因からの割込要求を受け付けた場合、まず実行ユニット３０１が、ベースアドレス記憶手段４０２としてのハンドラアドレステーブルベースレジスタ（ＨＴＢＡＳＥ）４０３０にアクセスし、第２のベースアドレスを取得する。そして、実行ユニット３０１は、取得した第２のベースアドレスと、割込コントローラ２００から受け付けた第２の制御情報、典型的には割込要因の識別子、例えば要因番号を用いて、ハンドラアドレスの格納アドレスを計算する。ハンドラアドレスの格納アドレスについては後に詳述する。
次いで、ＣＰＵ３００は、ハンドラアドレスの格納アドレスを、ロードストアユニット３０３からＣＰＵバス１０３に出力する。ハンドラアドレスの格納アドレスがメモリ４０１０内のアドレスであれば、ＣＰＵ３００は、メモリ４０１０の上記格納アドレスからからハンドラアドレスを読み出す。すなわち、ＣＰＵ３００は、ロードストアユニット３０３、ＣＰＵバス１０３、キャッシュ１０４を介して、メモリ４０１０からハンドラアドレスを読み出す。ＣＰＵ３００が必要とするハンドラアドレスが既にキャッシュ１０４に格納されている場合は、メモリ４０１０へのアクセスは行われず、キャッシュ１０４から直ちにＣＰＵバス１０３を経由してロードストアユニット３０３にハンドラアドレスが送られる。こうして得られたハンドラアドレスからの命令コードの読み出しは、上述した手順により行われる。
【００４２】
ベースアドレス記憶手段４０２としてのハンドラアドレスベースレジスタ（ＨＡＢＡＳＥ）４０２０は、第１のベースアドレスとしての、直接分岐方式のハンドラの開始アドレス（ベースアドレス）を設定するレジスタである。第２のレジスタとしてのハンドラアドレステーブルベースレジスタ（ＨＴＢＡＳＥ）４０３０は、第２のベースアドレスとしての、テーブル参照方式のハンドラアドレステーブルの開始アドレス（ベースアドレス）を設定するレジスタである。ＨＡＢＡＳＥ４０２０及びＨＴＢＡＳＥ４０３０は、ＣＰＵ３００の内部又は外部のいずれに設けても良いが、ＣＰＵ３００が可能な限り高速に、すなわち短いアクセス時間でアクセスできるよう、ＣＰＵ３００の近傍に設けることが望ましい。
【００４３】
なお、ＨＡＢＡＳＥ４０２０及びＨＴＢＡＳＥ４０３０に格納するベースアドレスを適切に設定することで、第１の割込ハンドラ、第２の割込ハンドラ及びハンドラアドレステーブルを、メモリ４０１０のみならず、マイクロコントローラ１００の内部にあるＲＡＭ１０５、マイクロコントローラ１００の外部にある外部メモリ５０３又は図示しない他の記憶手段に格納することも可能である。例えば、ハンドラアドレステーブルをロードストアユニット３０３に直結したＲＡＭ１０５に格納すれば、ハンドラアドレスの読み出しを高速に行えるようになり、テーブル参照方式が選択された割込要因の割込要求に対する応答性能を高めることが可能である。
【００４４】
図３を用いて、割込コントローラ２００の具体的な実装例を示す。
【００４５】
割込コントローラ２００は、マイクロコントローラ１００の内部にある周辺機能や、マイクロコントローラ１００の外部からの割込要求０乃至ｎの入力を受け付ける。割込要求０乃至ｎは、それぞれ割込要因０乃至ｎに対応しており、それぞれ独立の信号線を介して要求検出部２０１に入力される。
【００４６】
要求検出部２０１は、上述の割込要求の入力を検出する。割込要求の検出結果は、割込要因０乃至ｎ毎に要求フラグ２０２に格納される。また、要求フラグ２０２の内容は要求マスク部２０３に送られる。
【００４７】
要求マスク部２０３は、割込要因０乃至ｎ毎に設けられた割込制御レジスタ２０６から入力される要求マスク０乃至ｎに従って、割込要求をマスクするか否か、すなわちＣＰＵ３００への割込を禁止するか又は許可するかを決定し、マスクしない場合、割込要求を優先度判定部２０４に送る。
【００４８】
優先度判定部２０４は、要求マスク部２０３から入力される割込要求と、割込制御レジスタ２０６から入力される、割込要因０乃至ｎ毎に設定された優先度０乃至ｎとに基づいて、最高優先度の割込要因を選択する。優先度判定部２０４は、選択された最高優先度の割込要因の要因番号及び優先度を、割込要求生成部２０５へ送る。
【００４９】
割込要求生成部２０５は、優先度判定部２０４から入力される最高優先度の割込要因の要因番号、優先度、及び割込制御レジスタ２０６から入力される割込要因毎に設定されたハンドラアドレス特定方式情報０乃至ｎに基づいて、ＣＰＵ３００に対し、割込要求とともに、ＣＰＵ３００がハンドラアドレスを特定するのに必要な情報である、第１の制御情報としての優先度、第２の制御情報としての要因番号、及びハンドラアドレス特定方式情報を出力する。ここで、ハンドラアドレス特定方式情報とは、ハンドラアドレスの特定方式、すなわち、直接分岐方式又はテーブル参照方式のいずれの方式によりハンドラアドレスを特定すべきかを示す情報である。なお、割込要求生成部２０５は、ハンドラアドレス特定方式情報が直接分岐方式である場合には第１の制御情報とハンドラアドレス特定方式情報のみを、テーブル参照方式である場合は第２の制御情報とハンドラアドレス特定方式情報のみをＣＰＵ３００に出力することとしても良い。
【００５０】
ＣＰＵ３００は、割込コントローラ２００から割込要求を受け付けると、割込応答と受け付けた割込要求の要因番号とを割込コントローラ２００に通知する。
【００５１】
割込コントローラ２００の内部にある割込応答入力部２０７は、ＣＰＵ３００から通知される割込応答と要因番号との入力を受け付け、要因番号に対応する要求フラグクリア信号を要求フラグ２０２へ出力し、要因番号に対応する割込要因の要求フラグ２０２をクリアする。
【００５２】
周辺バスインタフェース２０８は、周辺バスから割込制御レジスタ２０６へのアクセス要求を受け付け、割込制御レジスタ２０６に値を設定したり、割込制御レジスタ２０６から値を読み出したりするための制御を行う。
【００５３】
図４を用いて、割込制御レジスタ２０６の具体例について説明する。
【００５４】
割込制御レジスタ２０６は、割込要因０乃至ｎに対応してそれぞれ設けられる。割込制御レジスタ２０６は、対応する割込要因からの割込要求をマスクするか否かを設定するビット（ＥＩＭＫ）、対応する割込要因からの割込要求をＣＰＵ３００が受け付けた際のハンドラアドレス特定方式情報を設定するビット（ＥＩＴＢ）、対応する割込要因の優先度を設定するビット（ＥＩＰ３−ＥＩＰ０）を含む。
【００５５】
図５を用いて、ＨＡＢＡＳＥ４０２０、ＨＴＢＡＳＥ４０３０の具体例について説明する。
【００５６】
ハンドラアドレスベースレジスタ（ＨＡＢＡＳＥ）４０２０は、直接分岐方式の割込ハンドラの開始アドレス（ベースアドレス）を設定するレジスタである。直接分岐方式の割込ハンドラ（第１の割込ハンドラ）は、このレジスタに設定されたアドレスを先頭に、優先度順に配置される。
【００５７】
ハンドラアドレステーブルベースレジスタ（ＨＴＢＡＳＥ）４０３０は、テーブル参照方式のハンドラアドレステーブルの開始アドレス（ベースアドレス）を設定するレジスタである。テーブル参照方式のハンドラアドレスは、このレジスタに設定されたアドレスを先頭に、割込要因の要因番号順に配置される。
【００５８】
つづいて、図６を用いて、マイクロコントローラ１００が割込要求を受け付けた際にＣＰＵ３００が実行する処理について説明する。
【００５９】
Ｓ１０１：ＣＰＵ３００は、割込コントローラ２００から割込要求信号とともに、ハンドラアドレスを特定するための情報として、第１の制御情報としての優先度及び第２の制御情報としての割込の要因番号のうち少なくともいずれか一方と、ハンドラアドレス特定方式情報との入力を受け付ける。
【００６０】
このとき、ＣＰＵ３００は、割込コントローラ２００に対し、割込応答と受け付けた割込の要因番号を出力することができる。これにより、割込コントローラ２００は、当該要因番号に係る割込要求がＣＰＵ３００によって受け付けられたことを認識できる。割込コントローラ２００の内部にある割込応答入力部２０７は、当該要因番号に対応する割込要因の要求フラグ２０２をクリアして、当該要因番号に係る割込要求の受け付け待ち状態を解消する。
【００６１】
Ｓ１０２：割込コントローラ２００から入力されたハンドラアドレス特定方式情報が直接分岐方式を示す情報である場合、ＣＰＵ３００は、ハンドラアドレスベースレジスタ（ＨＡＢＡＳＥ）４０２０の値を取得する。
【００６２】
Ｓ１０３：一方、割込コントローラ２００から入力されたハンドラアドレス特定方式情報がテーブル参照方式を示す情報である場合、ＣＰＵ３００は、ハンドラアドレステーブルベースレジスタ（ＨＴＢＡＳＥ）４０３０の値を取得する。
【００６３】
Ｓ１０４：ハンドラアドレス特定方式情報が直接分岐方式を示す情報である場合、ＣＰＵ３００は、Ｓ１０１において入力された第１の制御情報としての優先度と、Ｓ１０２において取得したＨＡＢＡＳＥの値とに基づいて、ハンドラアドレスを特定する。具体的には、数１の計算を行ってハンドラアドレスを特定する。数１において、ハンドラサイズは所定の固定値（例えば１６バイト）である。
（数１）ハンドラアドレス  ＝  ＨＡＢＡＳＥに格納されたベースアドレス  ＋  優先度  ×  ハンドラサイズ
【００６４】
Ｓ１０５：ハンドラアドレス特定方式情報がテーブル参照方式を示す情報である場合、ＣＰＵ３００は、まず、Ｓ１０１において入力された第２の制御情報としての要因番号と、Ｓ１０３において取得したＨＴＢＡＳＥの値とに基づいて、ハンドラアドレスの格納アドレスを特定する。具体的には、数２の計算を行ってハンドラアドレスの格納アドレス、すなわちハンドラアドレスが格納されているテーブルのアドレスを特定する。数２において、アドレスサイズは所定の固定値（例えば４バイト）である。
（数２）ハンドラアドレスの格納アドレス  ＝  ＨＴＢＡＳＥに格納されたベースアドレス  ＋  要因番号  ×  アドレスサイズ
【００６５】
Ｓ１０６：ＣＰＵ３００は、数２により計算したハンドラアドレスの格納アドレスからデータを読み出し、読み出されたデータをハンドラアドレスとする。
【００６６】
Ｓ１０７：ＣＰＵ３００は、ハンドラアドレスへ分岐する。すなわち、直接分岐方式又はテーブル参照方式のいずれかのハンドラアドレスの特定方式により特定したハンドラアドレスに格納された割込ハンドラの命令コードを読み出し、その命令コードに従い処理を行う。
【００６７】
図７に、メモリ４０１０における、割込ハンドラ（第１の割込ハンドラ及び第２の割込ハンドラ）のアドレス空間上の配置イメージを示す。
【００６８】
直接分岐方式の割込ハンドラ（第１の割込ハンドラ）６０２は、ハンドラアドレスベースレジスタ（ＨＡＢＡＳＥ）４０２０に設定されたベースアドレス６０１から優先度順に配置される。各ハンドラの格納領域のサイズ、すなわちハンドラサイズは固定である（例えば１６バイト）。例えば、優先度として０乃至１５が設定可能である場合、ベースアドレス６０１を基点として、優先度０乃至１５に対応するハンドラＩＮＴＰＲ０乃至ＩＮＴＰＲ１５が、それぞれ１６バイトのハンドラサイズの領域に格納されて、優先度順に配置される。
【００６９】
テーブル参照方式のハンドラアドレスは、ハンドラアドレステーブルベースレジスタ（ＨＴＢＡＳＥ）４０３０に設定されたベースアドレス６０３から要因番号順に配置される。これらのハンドラアドレスを格納する領域をハンドラアドレステーブル６０４と呼ぶ。各ハンドラアドレスの格納領域のサイズ、すなわちアドレスサイズは固定である（例えば４バイト）。例えば、要因番号として０乃至ｎが存在する場合、ベースアドレス６０３を基点として、要因番号０乃至ｎに対応するハンドラアドレスＩＮＴ０乃至ＩＮＴｎが、それぞれ４バイトのアドレスサイズの領域に格納されて、要因番号順に配置される。
【００７０】
テーブル参照方式では、各要因番号に対応する割込ハンドラ（第２の割込ハンドラ）の配置アドレス及びサイズは任意である（６０５）。
【００７１】
図８に、割込発生時の割込コントローラ２００とＣＰＵ３００間との信号のタイミングチャートを示す。
【００７２】
時刻ｔ２：割込要因１の割込要求（ｒｅｑ１）がアサートされる。
【００７３】
時刻ｔ３〜ｔ５：ｒｅｑ１のアサートを受け、要求フラグ１がセットされる。割込コントローラ２００は、ＣＰＵ３００へ割込要求（ｉｎｔｒｅｑ）とともに、要因番号（ｉｎｔｎｕｍ［Ｎ：０］）、優先度（ｉｎｔｐｒｉ［３：０］）、ハンドラアドレス特定方式情報（ｉｎｔｅｉｔｂ）を出力する。このとき、割込要因１に対応する割込制御レジスタ１の設定値は以下のようになっており、この設定値に従って割込コントローラ２００からＣＰＵ３００へ信号が出力される。
ＥＩＴＢ  ＝  １：テーブル参照方式を選択
ＥＩＰ３−ＥＩＰ０  ＝  ５：優先度５
【００７４】
なお、この期間は、ＣＰＵ３００が、割込応答（ｉｎｔａｃｋ）と要因番号（ｉｎｔａｃｋｎｕｍ［Ｎ：０］）を割込コントローラ２００に通知していないことからわかるように、ＣＰＵ３００が優先度５よりも高い優先度の割り込みを処理中であるなどの何らかの理由により、この割り込みはＣＰＵ３００に受け付けられていない。
【００７５】
時刻ｔ５：割込要因３の割込要求（ｒｅｑ３）がアサートされる。
【００７６】
時刻ｔ６〜ｔ８：ｒｅｑ３のアサートを受け、要求フラグ３がセットされる。割込要因３の優先度は、割込要因１の優先度よりも高いため、割込コントローラ２００がＣＰＵ３００へ通知する情報が、要因１のものから要因３のものに切り替わる。要因３に対応する割込制御レジスタ３の設定値は以下のようになっており、この設定値に従って割込コントローラ２００からＣＰＵ３００へ信号が出力される。
ＥＩＴＢ  ＝  ０：優先度に基づいた直接分岐方式を選択
ＥＩＰ３−ＥＩＰ０  ＝  ２：優先度２
【００７７】
時刻ｔ８：ＣＰＵ３００が要因３の割込要求を受け付け、割込応答（ｉｎｔａｃｋ）と要因番号（ｉｎｔａｃｋｎｕｍ［Ｎ：０］）を割込コントローラ２００に通知する。
【００７８】
時刻ｔ９：割込コントローラ２００がＣＰＵ３００から割込応答（ｉｎｔａｃｋ）を受け取り、要因３に対応する要求フラグ３をクリアすると同時に割込要求（ｉｎｔｒｅｑ）を取り下げる。
【００７９】
時刻ｔ１０〜ｔ１２：要求フラグ１はセットされたままであるため、割込コントローラ２００は再びＣＰＵ３００へ割込要求（ｉｎｔｒｅｑ）とともに要因１の情報（要因番号、優先度、ハンドラアドレス特定方式情報）を通知する。
【００８０】
本実施の形態においては、割込コントローラ２００の外部のメモリ４０１０にハンドラやハンドラアドレステーブルを格納することとしたため、ハンドラやハンドラアドレステーブルを自由に配置することが可能であり、割込要因の数が増大したとしても、低コストで割込要因に対応するハンドラを設けることができる。
【００８１】
また、本実施の形態においては、メモリ４０１０よりアクセス時間が短いＨＡＢＡＳＥ４０２０、ＨＴＢＡＳＥ４０３０にベースアドレスを格納することにより、ＣＰＵ３００はハンドラアドレス又はハンドラアドレスの格納アドレスを高速に計算することができる。
【００８２】
＜実施の形態２＞
実施の形態１の直接分岐方式では、割込要因に応じて設定された優先度に基づいてハンドラアドレスを特定する。そのため、直接分岐方式でハンドラアドレスを特定できる割込ハンドラ（第１の割込ハンドラ）の数は、優先度の数以下に制限される。また、複数の割込要因を同一の優先度に設定し、かつ、これらの複数の要因のハンドラアドレスの特定方法を直接分岐方式とした場合、これらの複数の割込要因の割込ハンドラは同一となるので、割込ハンドラ内で割込要因を判別する処理を行う必要が生じ、直接分岐方式の利点である高速な割込応答性を損なってしまう。
【００８３】
そこで、本発明の実施の形態２においては、割込制御レジスタ２０６に、直接分岐方式を選択した場合のハンドラ番号を指定するビットをさらに設ける。これにより、割込要因に設定した優先度とは独立に、直接分岐方式のハンドラアドレスを特定することができ、実施の形態１における上述の問題点を解決することができる。
【００８４】
本発明の実施の形態２にかかるマイクロコントローラ１００の構成について説明する。
【００８５】
実施の形態２のマイクロコントローラ１００は、割込コントローラ２００内の割込制御レジスタ２０６の構成に特徴を有する。その余の構成については、実施の形態１と同様である。
【００８６】
図９を用いて、本実施の形態における割込制御レジスタ２０６の構成について説明する。
【００８７】
割込制御レジスタ２０６は、割込要因０乃至ｎ毎に設けられる。割込制御レジスタ２０６は、ハンドラアドレス特定方式情報が直接分岐方式に設定された場合の、ハンドラ番号を指定するビット（ＨＮ５−ＨＮ０）を含む。なお、本実施の形態における上記ビット数は一例であり、これに限定されるものではない。
【００８８】
図１０を用いて、本実施の形態におけるマイクロコントローラ１００が割込要求を受け付けた際にＣＰＵ３００が実行する処理について説明する。
【００８９】
Ｓ２０１：ＣＰＵ３００は、割込コントローラ２００から割込要求信号とともに、ハンドラアドレスを特定するための情報として、第１の制御情報としてのハンドラ番号及び第２の制御情報としての割込の要因番号のうち少なくともいずれか一方と、ハンドラアドレス特定方式情報との入力を受け付ける。
【００９０】
このとき、ＣＰＵ３００は、割込コントローラ２００に対し、割込応答と受け付けた割込の要因番号を出力することができる。
【００９１】
Ｓ１０２：割込コントローラ２００から入力されたハンドラアドレス特定方式情報が直接分岐方式を示す情報である場合、ＣＰＵ３００は、ハンドラアドレスベースレジスタ（ＨＡＢＡＳＥ）４０２０の値を取得する。
【００９２】
Ｓ１０３：一方、割込コントローラ２００から入力されたハンドラアドレス特定方式情報がテーブル参照方式を示す情報である場合、ＣＰＵ３００は、ハンドラアドレステーブルベースレジスタ（ＨＴＢＡＳＥ）４０３０の値を取得する。
【００９３】
Ｓ２０４：ハンドラアドレス特定方式情報が直接分岐方式を示す情報である場合、ＣＰＵ３００は、Ｓ２０１において入力された第１の制御情報としてのハンドラ番号と、Ｓ１０２において取得したＨＡＢＡＳＥの値とに基づいて、ハンドラアドレスを特定する。具体的には、数３の計算を行ってハンドラアドレスを特定する。
（数３）ハンドラアドレス  ＝  ＨＡＢＡＳＥに格納されたベースアドレス  ＋  ハンドラ番号  ×  ハンドラサイズ
【００９４】
Ｓ１０５：ハンドラアドレス特定方式情報がテーブル参照方式を示す情報である場合、ＣＰＵ３００は、まず、Ｓ２０１において入力された第２の制御情報としての要因番号と、Ｓ１０３において取得したＨＴＢＡＳＥの値とに基づいて、ハンドラアドレスの格納アドレスを特定する。具体的には、数２の計算を行ってハンドラアドレスの格納アドレス、すなわちハンドラアドレスが格納されているテーブルのアドレスを特定する。
【００９５】
Ｓ１０６：ＣＰＵ３００は、数２により計算したハンドラアドレスの格納アドレスからデータを読み出し、読み出されたデータをハンドラアドレスとする。
【００９６】
Ｓ１０７：ＣＰＵ３００は、ハンドラアドレスへ分岐する。すなわち、直接分岐方式又はテーブル参照方式のいずれかのハンドラアドレスの特定方式により特定したハンドラアドレスに格納された割込ハンドラの命令コードを読み出し、その命令コードに従い処理を行う。
【００９７】
図１１に、本実施の形態における割込ハンドラ（第１の割込ハンドラ及び第２の割込ハンドラ）のアドレス空間上の配置イメージを示す。
【００９８】
直接分岐方式の割込ハンドラ（第１の割込ハンドラ）６０６は、ハンドラアドレスベースレジスタ（ＨＡＢＡＳＥ）４０２０に設定されたベースアドレス６０１からハンドラ番号順に配置される。各ハンドラの格納領域のサイズ、すなわちハンドラサイズは固定である（例えば１６バイト）。例えば、ハンドラ番号として０乃至６３が設定可能である場合、ベースアドレス６０１を基点として、ハンドラ番号０乃至６３に対応するハンドラＩＮＴＮＵＭ０乃至ＩＮＴＮＵＭ６３が、それぞれ１６バイトのハンドラサイズの領域に格納されて、ハンドラ番号順に配置される。
【００９９】
テーブル参照方式のハンドラアドレスは、ハンドラアドレステーブルベースレジスタ（ＨＴＢＡＳＥ）４０３０に設定されたベースアドレス６０３から要因番号順に配置される。これらのハンドラアドレスを格納する領域をハンドラアドレステーブル６０４と呼ぶ。各ハンドラアドレスの格納領域のサイズ、すなわちアドレスサイズは固定である（例えば４バイト）。例えば、要因番号として０乃至ｎが存在する場合、ベースアドレス６０３を基点として、要因番号０乃至ｎに対応するハンドラアドレスＩＮＴ０乃至ＩＮＴ１５が、それぞれ４バイトのアドレスサイズの領域に格納されて、要因番号順に配置される。
【０１００】
テーブル参照方式では、各要因番号に対応する割込ハンドラ（第２の割込ハンドラ）の配置アドレス及びサイズは任意である（６０５）。
【０１０１】
本実施の形態においては、直接分岐方式において、割込コントローラ２００が、割込制御レジスタ２０６によって割込要因に予め対応付けられたハンドラ番号をＣＰＵ３００に出力し、ＣＰＵ３００がハンドラ番号に基づいてハンドラアドレスを特定するよう構成した。これにより、優先度の数に拘束されることなく、ハンドラの数を特定することができる。また、ハンドラ内で割込要因を判別する処理を行う必要がない。
【０１０２】
＜実施の形態３＞
実施の形態１及び実施の形態２では、高速な割込応答が必要な割込要因については直接分岐方式を、そうでない割込要因についてはテーブル参照方式を割り当てることにより、高速な割込応答性とメモリの自由かつ効率的な利用とを両立させた。
【０１０３】
しかしながら、何らかの制約条件により、ハンドラアドレスの特定方式として直接分岐方式しか利用できない場合が考えられる。本発明の実施の形態３は、かかる場合においてもメモリを自由かつ効率的に利用することができるマイクロコントローラ１００に関する。
【０１０４】
本発明の実施の形態３にかかるマイクロコントローラ１００の構成について説明する。
【０１０５】
実施の形態３のマイクロコントローラ１００は、割込コントローラ２００内の割込制御レジスタ２０６の構成と、メモリ４０１０内の割込ハンドラの配置方法とに特徴を有する。その余の構成については、実施の形態１及び実施の形態２と同様である。
【０１０６】
図１２を用いて、本実施の形態における割込制御レジスタ２０６の構成について説明する。
【０１０７】
割込制御レジスタ２０６は、割込要因０乃至ｎ毎に設けられる。割込制御レジスタ２０６は、ハンドラ番号を指定するビット（ＨＮ５−ＨＮ０）を含む。なお、本実施の形態における上記ビット数は一例であり、これに限定されるものではない。本実施の形態では、割込要因０乃至ｎのうち、高速な割込応答を必要としない割込要因ｘ１乃至ｘｎのハンドラ番号を、全て共通の番号、例えば６３に設定する。これにより、ＣＰＵ３００が割込要因ｘ１乃至ｘｎからの割込要求を受け付けた場合、ハンドラ番号６３の割込ハンドラへ分岐する。
【０１０８】
図１３を用いて、本実施の形態におけるマイクロコントローラ１００が割込要求を受け付けた際にＣＰＵ３００が実行する処理について説明する。
【０１０９】
Ｓ３０１：ＣＰＵ３００は、割込コントローラ２００から割込要求信号とともに、ハンドラアドレスを特定するための情報として、第１の制御情報としてのハンドラ番号の入力を受け付ける。
【０１１０】
このとき、ＣＰＵ３００は、割込コントローラ２００に対し、割込応答と受け付けた割込の要因番号を出力することができる。
【０１１１】
Ｓ１０２：ＣＰＵ３００は、ハンドラアドレスベースレジスタ（ＨＡＢＡＳＥ）４０２０の値を取得する。
【０１１２】
Ｓ２０４：ＣＰＵ３００は、Ｓ３０１において入力された第１の制御情報としてのハンドラ番号と、Ｓ１０２において取得したＨＡＢＡＳＥの値とに基づいて、ハンドラアドレスを特定する。具体的には、数３の計算を行ってハンドラアドレスを特定する。
【０１１３】
Ｓ１０７：ＣＰＵ３００は、ハンドラアドレスへ分岐する。すなわち、ハンドラアドレスに格納された割込ハンドラの命令コードを読み出し、その命令コードに従い処理を行う。
【０１１４】
図１４に、本実施の形態における割込ハンドラのアドレス空間上の配置イメージを示す。
【０１１５】
割込ハンドラ（第１の割込ハンドラ）６０６は、ハンドラアドレスベースレジスタ（ＨＡＢＡＳＥ）４０２０に設定されたベースアドレス６０１からハンドラ番号順に配置される。各ハンドラの格納領域のサイズ、すなわちハンドラサイズは固定である（例えば１６バイト）。例えば、ハンドラ番号として０乃至６３が設定可能である場合、ベースアドレス６０１を基点として、ハンドラ番号０乃至６３に対応するハンドラＩＮＴＮＵＭ０乃至ＩＮＴＮＵＭ６３が、それぞれ１６バイトのハンドラサイズの領域に格納されて、ハンドラ番号順に配置される。
【０１１６】
本実施の形態では、割込コントローラ２００内の割込制御レジスタ２０６において、高速な割込応答を必要としない割込要因ｘ１乃至ｘｎのハンドラ番号が、全て共通の番号、例えば６３に設定される。これにより、ＣＰＵ３００が割込要因ｘ１乃至ｘｎからの割込要求を受け付けた場合、ハンドラＩＮＴＮＵＭ６３へ分岐する。ハンドラＩＮＴＮＵＭ６３には、割込要求が割込要因ｘ１乃至ｘｎのどの要因からのものなのかを判別し、割込要因ｘ１乃至ｘｎそれぞれに固有のハンドラＩＮＴｘ１乃至ＩＮＴｘｎへ分岐する処理を記述しておく。こうすることで、高速な割込応答を必要としない割込要因ｘ１乃至ｘｎについて、割込ハンドラ（第１の割込ハンドラ）の配置場所やサイズに自由度が増し、メモリの利用効率を高めることができる。
【０１１７】
本実施の形態においては、直接分岐方式しか利用できないマイクロコントローラ１００において、割込コントローラ２００内の割込制御レジスタ２０６が、高速な割込応答を必要としない割込要因に共通のハンドラ番号を割り当て、メモリ４０１０内の上記共通のハンドラ番号に対応する割込ハンドラに、割込要求の割込要因を判別し、割込要因毎の他の割込ハンドラへ分岐する処理を行わせる。これにより、高速な割込応答を必要としない割込要因について、割込ハンドラの配置場所やサイズに自由度が増し、メモリの利用効率を高めることができる。
【０１１８】
＜実施の形態４＞
実施の形態３は、高速な割込応答を必要としない割込要因について、メモリの自由かつ効率的な利用を実現した。本発明の実施の形態４は、高速な割込応答を必要とする割込要因についても、メモリを自由かつ効率的に利用することができるマイクロコントローラ１００に関する。
【０１１９】
本発明の実施の形態４にかかるマイクロコントローラ１００の構成について説明する。
【０１２０】
実施の形態４のマイクロコントローラ１００は、割込コントローラ２００内の割込制御レジスタ２０６の構成と、メモリ４０１０内の割込ハンドラの配置方法とに特徴を有する。その余の構成については、実施の形態３と同様である。
【０１２１】
本実施の形態における割込制御レジスタ２０６は、高速な割込応答を必要とする割込要因ｙのハンドラ番号を任意の要因番号、例えば３０に設定する。このとき、もし割込要因ｙに対応する割込ハンドラが、規定のハンドラサイズより大きいものである場合、割込制御レジスタ２０６は、ハンドラ番号３０に連続するハンドラ番号３１を、他のどの割込要因にも割り当てないようにする。
【０１２２】
加えて、図１４に示すように、メモリ４０１０内のハンドラＩＮＴＮＵＭ３０の領域とハンドラＩＮＴＮＵＭ３１の領域を連結した領域に、要因ｙの割込ハンドラを格納する。
【０１２３】
これにより、高速な割込応答性能を損なわないまま割込ハンドラのサイズの自由度を増すことができる。
【０１２４】
本実施の形態においては、メモリ４０１０が、複数の割込ハンドラの識別子と関連付けられた連続する格納領域に１つの割込ハンドラを格納し、割込コントローラ２００内の割込制御レジスタ２０６は、上記複数の割込ハンドラの識別子のうち、上記連続する格納領域の先頭領域に関連付けられた割込ハンドラの識別子のみを、所定の割込要因と対応付けるよう構成した。これにより、高速な割込応答性能を損なわないまま割込ハンドラのサイズの自由度を増すことができる。
【０１２５】
＜その他の実施の形態＞
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【０１２６】
例えば、上述の実施の形態では、ハードウェアの構成として説明したが、これに限定されるものではなく、任意の処理を、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【０１２７】
１００  マイクロコントローラ
１０１  周辺機能
１０２  周辺バス
１０３  ＣＰＵバス
１０４  キャッシュ
１０５  ＲＡＭ
１０６  外部メモリキャッシュ
１０７  外部メモリコントローラ
２００  割込コントローラ
２０１  要求検出部
２０２  要求フラグ
２０３  要求マスク部
２０４  優先度判定部
２０５  割込要求生成部
２０６  割込制御レジスタ
２０７  割込応答入力部
２０８  周辺バスインタフェース
３００  ＣＰＵ
３０１  実行ユニット
３０２  命令フェッチユニット
３０３  ロードストアユニット
４０１  ハンドラ記憶手段
４０２  ベースアドレス記憶手段
４０１０  メモリ
４０２０  ＨＡＢＡＳＥ（第１のベースアドレス記憶手段）
４０３０  ＨＴＢＡＳＥ（第２のベースアドレス記憶手段）
５０１  温度センサ
５０２  衝突センサ
５０３  外部メモリ
【図１】
2014081783.tif 000003
【図２】
2014081783.tif 000004
【図３】
2014081783.tif 000005
【図４】
2014081783.tif 000006
【図５】
2014081783.tif 000007
【図６】
2014081783.tif 000008
【図７】
2014081783.tif 000009
【図８】
2014081783.tif 000010
【図９】
2014081783.tif 000011
【図１０】
2014081783.tif 000012
【図１１】
2014081783.tif 000013
【図１２】
2014081783.tif 000014
【図１３】
2014081783.tif 000015
【図１４】
2014081783.tif 000016