(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023070696
(43)【公開日】2023-05-22
(54)【発明の名称】半導体装置
(51)【国際特許分類】
G06F 11/22 20060101AFI20230515BHJP
G06F 12/1027 20160101ALI20230515BHJP
G06F 12/1009 20160101ALI20230515BHJP
【FI】
G06F11/22 675Z
G06F12/1027
G06F12/1009
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2021182950
(22)【出願日】2021-11-10
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】110002066
【氏名又は名称】弁理士法人筒井国際特許事務所
(72)【発明者】
【氏名】会田 康男
(72)【発明者】
【氏名】川上 大輔
(72)【発明者】
【氏名】平木 俊行
【テーマコード(参考)】
5B048
5B205
【Fターム(参考)】
5B048AA19
5B048CC11
5B205MM51
5B205RR04
5B205VV11
5B205VV22
(57)【要約】
【課題】階層構造からなる複数のメモリ管理ユニットの故障箇所を特定する半導体装置を提供する。
【解決手段】半導体装置は、処理部に対応して設けられる1次メモリ管理ユニットと、1次メモリ管理ユニットと階層構造を成す2次メモリ管理ユニットとを備える。1次メモリ管理ユニットは、仮想アドレスを物理アドレスに変換する第1アドレス変換部と、第1アドレス変換部の自己診断テストを行う第1自己診断テスト部を有する。2次メモリ管理ユニットは、仮想アドレスを物理アドレスに変換する第2アドレス変換部と、第2アドレス変換部の自己診断テストを行う第2自己診断テスト部を有する。第1および第2自己診断テスト部による自己診断テスト結果は、結果格納部に格納される。
【選択図】
図2
【特許請求の範囲】
【請求項1】
仮想アドレスを用いてメモリアクセス要求を発行する処理部と、
前記処理部に対応して設けられた1次メモリ管理ユニットと、
前記1次メモリ管理ユニットと階層構造を成し、前記1次メモリ管理ユニットに接続される2次メモリ管理ユニットと、
を備え、
前記1次メモリ管理ユニットは、前記メモリアクセス要求の前記仮想アドレスを物理アドレスに変換する第1アドレス変換部と、前記第1アドレス変換部の自己診断テストを行う第1自己診断テスト部とを含み、
前記2次メモリ管理ユニットは、前記メモリアクセス要求が前記1次メモリ管理ユニットでアドレス変換されなかった場合に、前記メモリアクセス要求の前記仮想アドレスを物理アドレスに変換する第2アドレス変換部と前記第2アドレス変換部の自己診断テストを行う第2自己診断テスト部とを含み、
前記第1および第2自己診断テスト部の自己診断テスト結果である第1および第2自己診断テスト結果を格納する結果格納部と、
を備える半導体装置。
【請求項2】
請求項1に記載の半導体装置は、CPUをさらに有し、
前記CPUは、前記結果格納部から前記第1および第2自己診断テスト結果を読み出し、前記第1自己診断テスト結果に基づいて前記1次メモリ管理ユニットに対する第1リセット信号を発行し、前記第2自己診断テスト結果に基づいて前記2次メモリ管理ユニットに対する第2リセット信号を発行する、
半導体装置。
【請求項3】
自己診断テスト開始信号を出力する自己診断テスト実行指示部を更に有し、
前記第1自己診断テスト部は、前記自己診断テスト開始信号に応じて前記第1アドレス変換部へ自己診断用メモリアクセス要求を発行するリクエスト制御部を有する、
請求項1に記載の半導体装置。
【請求項4】
第1および第2アドレス変換部はそれぞれ、
メモリに記憶されたページテーブルの一部である複数のページテーブルエントリを格納するトランスレーションルックアサイドバッファと、
前記トランスレーションルックアサイドバッファの検索結果に基づいて前記仮想アドレスを物理アドレスに変換するアドレス変換回路と、
を有し、
前記第1および第2自己診断テスト部はそれぞれ、前記自己診断テスト開始信号に応じて、対応するトランスレーションルックアサイドバッファに含まれる前記複数のページテーブルエントリを自己診断テスト用ページテーブルエントリに書き換えるトランスレーションルックアサイドバッファ制御部を備える、
請求項3に記載の半導体装置。
【請求項5】
前記第1アドレス変換部のトランスレーションルックアサイドバッファに格納された複数の自己診断テスト用ページテーブルエントリと、前記第2アドレス変換部のトランスレーションルックアサイドバッファに格納された自己診断テスト用ページテーブルエントリとはそれぞれ異なる、
請求項4に記載の半導体装置。
【請求項6】
前記自己診断テスト実行指示部としてCPUをさらに有し、
前記CPUがソフトウェアプログラムに従って前記自己診断テスト開始信号を出力する、
請求項3に記載の半導体装置。
【請求項7】
前記自己診断テスト開始信号は、自己診断テストを実行する対象となるメモリ管理ユニットを指定する情報を含む、
請求項3に記載の半導体装置。
【請求項8】
前記自己診断テスト実行指示部として機能するタイマーモジュールをさらに有し、
前記タイマーモジュールは、所定の周期で前記自己診断テスト開始信号を出力する、
請求項3に記載の半導体装置。
【請求項9】
請求項8に記載の半導体装置は、前記半導体装置の動作環境を検知するセンサをさらに有し、
前記タイマーモジュールが前記自己診断テスト開始信号を出力する周期は、前記センサの検知結果に応じて制御される、半導体装置。
【請求項10】
前記センサは温度センサである、請求項9に記載の半導体装置。
【請求項11】
前記センサは電圧センサである、請求項9に記載の半導体装置。
【請求項12】
前記処理部からのメモリアクセル要求に対する前記第1および第2アドレス変換部のアドレス変換結果がアドレス変換エラーを示すときに、前記自己診断テスト実行指示部に対して、前記自己診断テスト開始信号を出力するように要求する割り込み要求部をさらに有する、
請求項3に記載の半導体装置。
【請求項13】
第1および第2アドレス変換部はそれぞれ、
メモリに記憶されたページテーブルの一部を格納するトランスレーションルックアサイドバッファと、
前記トランスレーションルックアサイドバッファの検索結果に基づいて前記仮想アドレスを物理アドレスに変換するアドレス変換回路と、
を有し、
前記第1自己診断テスト部は、前記自己診断テスト開始信号に基づいて、第1または第2アドレス変換部の前記アドレス変換結果が前記アドレス変換エラーとなる前記トランスレーションルックアサイドバッファのページテーブルエントリにヒットする自己診断テスト用メモリアクセス要求を発行する、
請求項12に記載の半導体装置。
【請求項14】
第1および第2アドレス変換部はそれぞれ、
メモリに記憶されたページテーブルの一部である複数のページテーブルエントリを格納するトランスレーションルックアサイドバッファと、
前記トランスレーションルックアサイドバッファの検索結果に基づいて前記仮想アドレスを物理アドレスに変換するアドレス変換回路と、
を有し、
前記複数のページテーブルエントリそれぞれは、仮想アドレスから物理アドレスへの変換情報と、自己診断テストの結果に基づいて有効または無効が設定される有効化情報を有する、
請求項1に記載の半導体装置。
【請求項15】
仮想アドレスが設定されたメモリアクセス要求を発行するメモリアクセス要求発行部と、
メモリが記憶するページテーブルの第1の部分を保持する第1トランスレーションルックアサイドバッファを含む第1アドレス変換部と、前記第1アドレス変換部の自己診断テストを行う第1自己診断テスト部と、を有する1次メモリ管理ユニットと、
前記メモリが記憶するページテーブルの第2の部分を保持し、前記仮想アドレスに対応するページテーブルエントリが前記第1トランスレーションルックアサイドバッファに存在しなかった場合にアクセスされる第2トランスレーションルックアサイドバッファを含む第2アドレス変換部と、前記第2アドレス変換部の自己診断テストを行う第2自己診断テスト部と、を有する2次メモリ管理ユニットと、
前記第1および第2自己診断テスト部による自己診断テストの結果である第1および第2の自己診断テスト結果を格納する結果格納部と、
を備える半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関し、特に、仮想アドレスから物理アドレスに変換するメモリ管理ユニットを備える半導体装置に好適に利用できるものである。
【背景技術】
【0002】
近年、車載用の半導体装置は、高性能化や多機能化に伴い、中央処理装置(CPU)に加えて、特定の処理を高速で実行する複数の専用処理部を内蔵している。例えば、専用処理部は、画像データの圧縮・伸張処理を実行する画像処理部やDMA(Direct Memory Access)転送のためのDMAコントローラ等である。このような専用処理部は、共有リソースである外部メモリを効率よく利用するために、仮想アドレスを用いたメモリアクセス制御を行う。
【0003】
仮想アドレスは、専用処理部がデータをアクセスする仮想メモリ上のアドレスであり、物理メモリ上で有効なアドレス(物理アドレス)とは異なる。専用処理部が複数存在し、専用処理部ごとに異なる仮想メモリ空間を使用する場合、メモリ管理ユニット(MMU)は専用処理部ごとに設けられてもよい。
【0004】
MMUは、アドレス変換をより高速に行うために、トランスレーションルックアサイドバッファ(TLB)を備える。TLBは、仮想アドレスと物理アドレスの対応づけのため変換情報であるページテーブルのキャッシュとして機能する。
【0005】
TLBは、キャッシュと同様に階層構造を採用することができる。したがって、容量の異なるTLBを有するMMUが、階層的に設けられている。専用処理部が仮想アドレスを用いてメモリにアクセスすると、まず、専用処理部に最も近いMMU(1次MMU)でアドレス変換が実行される。1次MMUのTLBに対応するエントリが見つからない場合は、2次MMUのTLBが検索される。2次MMUのTLB内にも対応するエントリがない場合には、外部メモリのページテーブルから対応するエントリが取得される。このように、1次MMU、2次MMU、メモリの順にページテーブルウォークが行われ、仮想アドレスが物理アドレスに変換される。
【0006】
MMUについて、以下のように開示された技術がある。
【0007】
特開2000-148589(特許文献1)は、TLBを複数に分割し、選択したTLBにおいて、入力された仮想アドレスがヒットしなかった場合に、他のTLBを選択してアドレス変換を行うメモリ管理装置が開示されている。
【先行技術文献】
【特許文献】
【0008】
【発明の概要】
【発明が解決しようとする課題】
【0009】
車載用の半導体装置は、機能安全機構の搭載が求められている。そのため、MMUによるアドレス変換機能についても故障検出が必要とされる。
【0010】
専用処理部からのメモリアクセス要求に設定された仮想アドレスは、1次MMU、2次MMU、メモリの順にページテーブルウォークすることによって、物理アドレスに変換される。そして、変換された物理アドレスに基づいて物理メモリからデータが読み出される。したがって、物理メモリから読み出されたデータを期待値データと照合することで、アドレス変換機能の故障が検出され得る。しかしながら、この検出方法では、どの階層のMMUに故障が発生しているかを特定することは難しい。そのため、この検出方法で、アドレス変換機能の故障が検出されると、1次MMU,2次MMUおよびメモリのすべてのアドレス変換機能のリセットが必要となり、リセットに要する時間がかかる可能性がある。
【0011】
その他の課題および新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0012】
一実施の形態によれば、半導体装置は、仮想アドレスを用いてメモリアクセス要求を発行する処理部と、処理部に対応して設けられた1次メモリ管理ユニットと、1次メモリ管理ユニットと階層構造を成す2次メモリ管理ユニットとを有し、1次メモリ管理ユニットはメモリアクセス要求の仮想アドレスを物理アドレスに変換する第1アドレス変換部と、第1アドレス変換部の自己診断テストを行う第1自己診断テスト部とを含み、第2メモリ管理ユニットは、メモリアクセス要求が1次メモリ管理ユニットでアドレス変換されなかった場合に、メモリアクセス要求の仮想アドレスを物理アドレスに変換する第2アドレス変換部と第2アドレス変換部の自己診断テストを行う第2自己診断テスト部とを含み、第1および第2の自己診断テスト部の自己診断テスト結果である第1および第2自己診断テスト結果を格納する結果格納部と、を備える。
【0013】
他の実施の形態によれば、半導体装置は、仮想アドレスが設定されたメモリアクセス要求を発行するメモリアクセス要求発行部と、メモリが記憶するページテーブルの第1の部分を保持する第1トランスレーションルックアサイドバッファを含む第1アドレス変換部と、第1アドレス変換部の自己診断テストを行う第1自己診断テスト部と、を有する1次メモリ管理ユニットと、メモリが記憶するページテーブルの第2の部分を保持し、仮想アドレスに対応するページテーブルエントリが第1トランスレーションルックアサイドバッファに存在しなかった場合にアクセスされる第2トランスレーションルックアサイドバッファを含む第2アドレス変換部と、第2アドレス変換部の自己診断テストを行う第2自己診断テスト部と、を有する2次メモリ管理ユニットと、第1および第2自己診断テスト部による自己診断テストの結果である第1および第2の自己診断テスト結果を格納する結果格納部と、を備える。
【発明の効果】
【0014】
前記一実施の形態によれば、アドレス変換機能に関する故障箇所を特定することができる。その結果、特定された故障箇所に応じた適切な処理を実行することができる。
【図面の簡単な説明】
【0015】
【
図1】
図1は、実施の形態1に係るデータ処理装置の構成を示すブロック図である。
【
図2】
図2は、MMUの構成の一例を示すブロック図である。
【
図3】
図3は、MMUの構成の一例を示すブロック図である。
【
図4】
図4は、実施の形態1に係る半導体装置のアドレス変換機能の自己診断テストを示すフローチャートである。
【
図5】
図5は、実施の形態1に係る半導体装置のアドレス変換機能の自己診断テストを示すフローチャートである。
【
図6】
図6は、実施の形態1に係る半導体装置のアドレス変換機能の自己診断テストを示すフローチャートである。
【
図7】
図7は、メモリのページテーブルの構成を説明する図である。
【
図8】
図8は、実施の形態1に係る変形例を説明する図である。
【
図9】
図9は、実施の形態2に係る半導体装置を説明する図である。
【
図10】
図10は、実施の形態2の変形例1に係る半導体装置を説明するための図である。
【
図11】
図11は、実施の形態3に係るMMUの構成の一例を示すブロック図である。
【
図12】
図12は、実施の形態3に係るMMUの構成の一例を示すブロック図である。
【
図13】
図13は、実施の形態3に係る半導体装置のアドレス変換機能の自己診断テストを示すフローチャートである。
【
図14】
図14は、実施の形態4に係るMMUの構成の一例を示すブロック図である。
【発明を実施するための形態】
【0016】
以下、一実施の形態に係るデータ処理装置について、図面を参照して詳細に説明する。なお、明細書および図面において、同一の構成要件または対応する構成要件には、同一の符号を付し、重複する説明は省略する。また、図面では、説明の便宜上、構成を省略または簡略化している場合もある。また、各実施の形態の少なくとも一部は、互いに任意に組み合わされてもよい。
【0017】
<実施の形態1>
図1は、実施の形態1に係るデータ処理装置の構成を示すブロック図である。
図1に示されるように、データ処理装置100は、半導体装置10とメモリ20とを備える。半導体装置10は、CPU1、専用処理部2、MMU3および5、バス4およびメモリコントローラ6を含む。メモリ20は、物理メモリであって、例えば、ダイナミックランダムアクセスメモリ(DRAM)で構成される。なお、物理メモリは、DRAMに限定されるわけではない。
【0018】
CPU1は、不図示のROM(Read Only Memory)等の記憶装置に格納されたOSプログラムやアプリケーションプログラムなどのソフトウェアプログラムを実行する。
【0019】
専用処理部2は、アプリケーションプログラムの処理の一部を実行するアクセラレータである。例えば、専用処理部2は、画像データの圧縮・伸張処理を実行する画像処理部や、DMA転送のためのDMAコントローラでもよい。
【0020】
MMU3および5は、階層的に設けられたメモリ管理ユニットであり、専用処理部2からのメモリアクセス要求に設定された仮想アドレスを物理アドレスに変換する。本実施の形態1では、MMU3が1次MMU(上位MMU)であり、MMU5が2次MMU(下位MMU)である。すなわち、専用処理部2に接続されるMMU3が1次MMU(上位MMU)であり、バス4を介して接続されるMMU5が2次MMU(下位MMU)である。 詳細は後述するが、MMU3およびMMU5はそれぞれ、ページテーブルをキャッシュするトランスレーションルックアサイドバッファ(TLB)を有する。MMU3のTLBのエントリ数は、MMU5のTLBのエントリ数よりも少ない。そのため、MMU5のTLBの検索動作は、エントリ数が少ないMMU3のTLBの検索動作よりも低速である。さらに、詳細は後述するが、MMU3および5はそれぞれ自己診断テスト部を有する。
【0021】
メモリコントローラ6は、バス4およびメモリ20に接続される。メモリコントローラ6は、バスを介して受け取ったアクセス要求に応じてメモリ20をアクセスし、データの受け渡しを行う。
【0022】
メモリ20は、CPU1および専用処理部2の処理用データや処理結果データ、および、仮想アドレスと物理アドレスの対応づけのために用いる変換情報であるページテーブルを格納する。メモリ20は、メモリコントローラ6を介してデータの読出し、書込みが行われる。
【0023】
なお、半導体装置10は、好ましくは1つの半導体チップ上で構成されるが、これに限定されるものではない。CPU1、専用処理部2、MMU3、メモリコントローラ6は、それぞれ別個の半導体装置として形成されることも可能である。
【0024】
次に、実施の形態1に係るMMU3の構成を説明する。
図2は、MMU3の構成の一例を示すブロック図である。
図2に示されるように、MMU3は、アドレス変換部31および自己診断テスト部32を有する。
【0025】
アドレス変換部31は、TLB311とアドレス変換回路312を有する。TLB311は、複数のページテーブルエントリを有し、メモリ20に格納されるページテーブルのキャッシュとして機能する。各ページテーブルエントリはタグ情報とデータとを有する。
【0026】
TLB311は、受け取ったメモリアクセス要求に設定されている仮想アドレスとタグ情報とを比較し、検索結果を出力する。アドレス変換回路312は、TLB311から出力された検索結果に基づいて、仮想アドレスを物理アドレスに変換する。
【0027】
自己診断テスト部32は、自己診断テスト制御部321、リクエスト制御部322、TLB制御部323、判定部324、および、自己診断テスト結果格納部325を有する。
【0028】
自己診断テスト制御部321は、自己診断テスト実行指示部としてのCPU1から自己診断テスト開始信号1000を受信して、MMU3のアドレス変換機能の自己診断テスト制御を開始する。具体的には、自己診断テスト制御部321は、自己診断テスト開始信号1000に応じて、リクエスト制御部322およびTLB制御部323に自己診断テスト指示信号1001を出力する。
【0029】
リクエスト制御部322は、自己診断テスト指示信号1001を受けて、自己診断テスト用のメモリアクセス要求1003を生成する。自己診断テスト用のメモリアクセス要求1003はアドレス変換部31に出力される。
【0030】
TLB制御部323は、自己診断テスト指示信号1001に応じて、TLB書き換え信号1002を生成する。TLB書き換え信号1002は、自己診断テスト用のページテーブルエントリデータとTLB書き換え制御信号を含む。TLB制御部323は、TLB書き換え信号1002をTLB311に出力し、TLB311は、TLB書き換え信号1002に基づいてページテーブルエントリを自己診断テスト用のページテーブルエントリに書き換える。
【0031】
判定部324は、TLB311のヒット/ミス結果を示すTLBヒット/ミス信号1004およびアドレス変換回路312によるアドレス変換結果1005を受信する。判定部324は、TLBヒット/ミス信号1004およびアドレス変換結果1005を、それぞれ、TLBヒット/ミス信号の期待値およびアドレス変換結果の期待値と比較する。そして、判定部324は、比較結果に基づいてアドレス変換機能の自己診断テスト結果を判定し、自己診断テスト判定結果信号1006を出力する。また、判定部324は、MMU5から、自己診断テスト用メモリアクセス要求のレスポンスとして、MMU5のTLBヒット/ミスおよびアドレス変換結果の情報を含むレスポンス情報1008を受信する。判定部324は、レスポンス情報1008に含まれるTLBヒット/ミスおよびアドレス変換結果の情報が期待どおりの結果となっているかを比較し、MMU5のアドレス変換機能の自己診断テスト結果を判定する。
【0032】
自己診断テスト結果格納部325は、判定部324によって判定された自己診断テスト判定結果信号1006を格納する。自己診断テスト結果格納部325は、例えば、レジスタで構成されるが、データを記憶できるものであればよい。自己診断テスト結果格納部325は、ページテーブルエントリ毎の自己診断テスト結果を格納する。例えば、自己診断テスト結果格納部325は、複数ビットを有するレジスタであり、各ビットに、MMU3の各ページテーブルエントリの自己診断テスト結果、MMU5の各ページテーブルエントリの自己診断テスト結果、および、メモリ20の各ページテーブルエントリの自己診断テスト結果を格納してもよい。また、自己診断テスト結果格納部325が複数のレジスタを有し、MMU3の各ページテーブルエントリの自己診断テスト結果、MMU5の各ページテーブルエントリの自己診断テスト結果、および、メモリ20の各ページテーブルエントリの自己診断テスト結果が異なるレジスタに格納されてもよい。これらの自己診断テスト結果は、自己診断テスト結果情報1007としてCPU1に読み出される。
【0033】
図3は、MMU5の構成の一例を示すブロック図である。
図3に示されるように、MMU5は、アドレス変換部51と自己診断テスト部52を有する。
【0034】
アドレス変換部51は、MMU3のアドレス変換部31と同様に、TLB511とアドレス変換回路512を含む。TLB511は、TLB311と同様に、メモリ20に格納されるページテーブルのキャッシュとして機能する。TLB511も、TLB311と同様にタグ情報とデータからなるページテーブルエントリを有する。TLB511のページテーブルエントリ数は、TLB311のページテーブルエントリ数よりも多い。アドレス変換回路512は、TLB511から出力された検索結果に基づいて、仮想アドレスを物理アドレスに変換する。
【0035】
自己診断テスト部52は、MMU3の自己診断テスト部32とは異なり、自己診断テスト制御部521およびTLB制御部523で構成される。
【0036】
自己診断テスト制御部521は、自己診断テスト制御部321と同様に、CPU1から自己診断テスト開始信号1000を受信する。自己診断テスト制御部521は、自己診断テスト開始信号1000に応じて、TLB523に自己診断テスト指示信号1011を出力する。
【0037】
TLB制御部523は、自己診断テスト指示信号1011を受信して、TLB書き換え信号1012を生成する。TLB書き換え信号1012に基づいて、TLB511の各エントリは、自己診断テスト用エントリに書き換えられる。
【0038】
(アドレス変換動作)
次に、
図1乃至3を参照しながら、通常動作におけるMMU3および5のアドレス変換動作について説明する。
【0039】
まず、1次MMUであるMMU3が、専用処理部2よりメモリアクセス要求を受信する。メモリアクセス要求で指定された仮想アドレスは、TLB311内のタグ情報と比較される。TLB311内に、当該仮想アドレスに対応するタグ情報がある場合(TLBヒット)には、TLB311は、ヒットしたエントリのデータをアドレス変換回路312に出力する。アドレス変換回路312は、受信したデータに基づいて、仮想アドレスを物理アドレスに変換する。そして、MMU3で変換された物理アドレスでもって、メモリ20がアクセスされる。
【0040】
一方、TLB311内に、当該仮想アドレスに対応するタグ情報がない場合(TLBミス)には、当該メモリアクセス要求は、2次MMUであるMMU5に転送される。メモリアクセス要求で指定された仮想アドレスは、TLB511内のタグ情報と比較される。TLB511内に、仮想アドレスに対応するタグ情報がある場合(TLBヒット)には、TLB511は、ヒットしたエントリのデータをアドレス変換回路512に出力する。アドレス変換回路512は、受け取ったデータに基づいて、仮想アドレスを物理アドレスに変換する。そしてMMU5で変換された物理アドレスによって、メモリ20がアクセスされる。
【0041】
TLB511内に仮想アドレスに対応するタグ情報がない場合(TLBミス)には、MMU5は、ページテーブルウォーク(PTW)要求を発行する。このPTW要求に基づいてメモリ20のページテーブルがアクセスされ、仮想アドレスが物理アドレスに変換される。
【0042】
(自己診断テスト)
次に、実施の形態1に係る半導体装置のアドレス変換機能の自己診断テスト例について説明する。
図4~
図6は、実施の形態1に係る半導体装置のアドレス変換機能の自己診断テスト例を示すフローチャートである。
【0043】
まず、CPU1が、ソフトウェアプログラムに従って、MMU3および5に対して自己診断テスト開始信号1000を出力する。
【0044】
次に、自己診断テスト制御部321および521が自己診断テスト開始信号1000を受信する。これにより、MMU3および5は、自己診断テストモードになる。自己診断テスト制御部321は、自己診断テスト開始信号1000に基づいて、リクエスト制御部322とTLB制御部323に向けて自己診断テスト指示信号1001を出力する。TLB制御部323は、自己診断テスト指示信号1001に従って、TLB311の全てのエントリを自己診断テスト用ページテーブルエントリに書き換える。同様に、自己診断テスト制御部521は、自己診断テスト開始信号1000に基づいて、TLB制御部523に向けて自己診断テスト指示信号1011を出力する。TLB制御部523は、自己診断テスト指示信号1011に従って、TLB511の全てのエントリを自己診断テスト用ページテーブルエントリに書き換える。また、CPU1は、
図7に示すように、メモリ20に対して、メモリ20のページテーブル領域201の一部を自己診断テスト用ページテーブル202に書き換えるように指示する(ステップS1)。なお、TLB311および511、並びに、メモリ20の自己診断テスト用ページテーブル202には、異なる仮想アドレスに対するページテーブルエントリが格納されている。
【0045】
自己診断テスト指示信号1001を受信したリクエスト制御部322は、自己診断テスト用のメモリアクセス要求1003を発行する。以降、自己診断テスト用のメモリアクセス要求1003を自己診断テスト用リクエスト1003と称する。リクエスト制御部322は、まず、TLB311の自己診断テスト用のページテーブルエントリのタグ情報にヒットする仮想アドレスが設定された自己診断テスト用リクエスト1003を発行する(ステップS2)。
【0046】
アドレス変換部31は、自己診断テスト用リクエスト1003を受信する。アドレス変換部31のTLB311は、自己診断テスト用リクエスト1003に設定された仮想アドレスに対応するエントリを検索する(ステップS3)。そして、TLB311は、検索結果としてTLBヒット/ミス信号1004を出力する。TLBヒットの場合には、TLB311は、ヒットしたエントリのデータをアドレス変換回路312に出力する。アドレス変換回路312は、ヒットしたエントリのデータを用いて仮想アドレスを物理アドレスに変換し、当該物理アドレスをアドレス変換結果1005として判定部324に出力する。
【0047】
判定部324は、TLBヒット/ミス信号1004およびアドレス変換結果1005を、TLBヒット/ミス信号の期待値およびアドレス変換結果の期待値とそれぞれ比較する(ステップS4)。TLBヒット/ミス信号1004およびアドレス変換結果1005が期待値と異なる場合は(ステップS4のNO)、判定部324は、MMU3に故障が発生していると判断する(ステップS6)。そして、判定部324は、MMU3に故障が発生していることを示す自己診断テスト判定結果信号1006を生成し、自己診断テスト結果格納部325に格納する。自己診断テスト用リクエスト1003には、自己診断テスト用のページテーブルエントリに書き換えられたTLB311のタグ情報にヒットする仮想アドレスが設定される。、TLBヒット/ミス信号がTLBミスを示している場合には、TLB311に故障が発生している可能性がある。したがって、判定部324はMMU3に故障が発生していると判断する。一方、TLBヒット/ミス信号1004およびアドレス変換結果1005が期待値と一致する場合は(ステップS4のYES)、判定部324は、その自己診断テスト判定結果信号1006を自己診断テスト結果格納部325へ格納し、次のステップ(ステップS5)に進む。
【0048】
TLB311内に、対応する自己診断テスト用リクエストが発行されていないエントリがある場合には、ステップS2に戻る(ステップS5のNO)。そして、リクエスト制御部322は、TLB311内の残りのエントリに対応する自己診断テスト用リクエスト1003を発行する。このように、ステップS2からステップS5までの動作が繰り返され、TLB311の全エントリが順にヒットするような自己診断テスト用リクエスト1003が順次発行される。
【0049】
TLB311内の全エントリに対応する自己診断テスト用リクエストが発行されている場合には(ステップS5のYES)、MMU5のアドレス変換機能の自己診断テストが行われる。リクエスト制御部322は、自己診断テスト用のページテーブルエントリに書き換えられたTLB511のタグ情報にヒットする仮想アドレスが設定された自己診断テスト用リクエスト1003aを発行する(ステップS7)。すなわち、自己診断テスト用リクエスト1003aの仮想アドレスは、TLB311のタグ情報にヒットしない。
【0050】
自己診断テスト用リクエスト1003aは、最初に、アドレス変換部31に供給される。アドレス変換部31のTLB311は、自己診断テスト用リクエスト1003aに設定された仮想アドレスに対応するエントリを検索する(ステップS8)。当該仮想アドレスに対応するエントリがTLB311上に存在しない場合(TLBミス)には(ステップS9のYES)、自己診断テスト用リクエスト1003aは、2次MMUであるMMU5に転送される。自己診断テスト用リクエスト1003aは、TLB311のタグ情報にヒットする仮想アドレスを有していないので、検索結果がTLBヒットである場合には(ステップS9のNO)、TLB311に故障が発生していると判断される(ステップS12)。
【0051】
転送された自己診断テスト用リクエスト1003aを受信したMMU5のアドレス変換部51は、TLB511による検索動作を開始する。すなわち、TLB511は、自己診断テスト用リクエスト1003aの仮想アドレスに対応するエントリを検索する(ステップS10)。アドレス変換回路512は、TLB511の検索結果に基づいて、仮想アドレスを物理アドレスに変換する。TLB511の検索結果およびアドレス変換回路512のアドレス変換結果は、自己診断テスト用リクエスト1003aのレスポンス情報1008としてMMU3の判定部324に出力される。
【0052】
判定部324は、レスポンス情報1008に含まれるTLB511の検索結果およびアドレス変換回路512のアドレス変換結果が期待通りの結果であるか否かを判定する。検索結果およびアドレス変換結果が期待通りの結果である場合には(ステップS11のYES)、判定部324は、その判定結果に基づき自己診断テスト判定結果信号1006を生成し、自己診断テスト結果格納部325へ格納し、次のステップ(ステップS13)に進む。一方、検索結果およびアドレス変換結果が期待通りの結果と異なっている場合には(ステップS11のNO)、判定部324は、MMU5に故障が発生していると判断し、MMU5に故障が発生していることを示す自己診断テスト判定結果信号1006を生成し、自己診断テスト結果格納部325に格納する。
【0053】
TLB511のすべてのエントリに対応する自己診断テスト用リクエスト1003aが発行されている場合(ステップS13のYES)には、メモリ20のページテーブルを用いたアドレス変換機能の自己診断テストを行う。リクエスト制御部322は、メモリ20の自己診断テスト用ページテーブル202に格納された仮想アドレスを含む自己診断テスト用リクエスト1003bを発行する(ステップS14)。すなわち、自己診断テスト用リクエスト1003bには、TLB311および511のエントリに対応する仮想アドレスを含まない。
【0054】
自己診断テスト用リクエスト1003bは、最初に、アドレス変換部31に供給される。TLB311は、自己診断テスト用リクエスト1003bの仮想アドレスに対応するエントリを検索する。自己診断テスト用リクエスト1003bの仮想アドレスに対応するエントリがTLB311上に存在しない場合(TLBミス)には(ステップS15のYES)、自己診断テスト用リクエスト1003bは、MMU5に転送される。自己診断テスト用リクエスト1003bの仮想アドレスに対応するエントリはTLB311上には存在しないはずである。したがって、自己診断テスト用リクエスト1003bの仮想アドレスに対応するエントリがTLB311上に存在するという検索結果が得られた場合には(ステップS15のNO)、TLB311に故障が発生していると判断される(ステップS18)。
【0055】
転送された自己診断テスト用リクエスト1003bを受けるMMU5のアドレス変換部51は、TLB511による検索を行う。TLB511は、自己診断テスト用リクエスト1003bに対応するエントリを検索する。自己診断テスト用リクエスト1003bの仮想アドレスに対応するエントリがTLB511に存在しない場合には(ステップS16のYES)、MMU5はメモリ20に対してページテーブルウォークリクエスト(PTWリクエスト)を発行する。PTWリクエストに従って、メモリ20の自己診断テスト用ページテーブル202からアドレス変換情報が読み出される。MMU5は、メモリ20の自己診断テスト用ページテーブル202からのアドレス変換情報をもとに、自己診断テスト用リクエスト1003bの仮想アドレスを物理アドレスに変換する。メモリ20の自己診断テスト用ページテーブル202からの変換情報に基づいてアドレス変換した結果は、自己診断テスト用リクエスト1003bに対応するレスポンス情報1008として、MMU3の判定部324に出力される。一方、自己診断テスト用リクエスト1003bの仮想アドレスに対応するエントリはTLB511上にも存在しないはずである。したがって、自己診断テスト用リクエスト1003bの仮想アドレスに対応するエントリがTLB511上に存在するという検索結果が得られた場合には(ステップS16のNO)、TLB511に故障が発生していると判断される(ステップS18)。
【0056】
判定部324は、レスポンス情報1008に含まれるアドレス変換結果が、期待通りの結果であるかを判定する。アドレス変換結果が期待通りの結果である場合には(ステップS17のYES)、半導体装置10のアドレス変換機能の自己診断テストを完了する。アドレス変換結果が期待通りの結果と異なる場合には(ステップS17のNO)、メモリ20の自己診断テスト用ページテーブル202を用いたアドレス変換機能、例えば、MMU3からメモリ20までの経路に故障があると判断される(ステップS18)。
【0057】
(リセットおよび復帰処理)
上述したように、本実施の形態によれば、MMUごとにアドレス変換機能の自己診断テストを行うことができる。各MMUの自己診断テスト結果は、それぞれ自己診断テスト結果格納部325に格納される。CPU1は、自己診断テスト結果格納部325に記憶された自己診断テスト結果情報1007を読み出し、データ処理装置100の安全性を確保するためにアドレス変換機能のリセットまたは復帰処理を行う。自己診断テスト結果情報1007は各MMUの自己診断テスト結果を含むため、CPU1は、故障が発生しているMMUの階層を認識することができる。したがって、CPU1は、自己診断テスト結果情報1007に基づいて、リセットまたは復帰処理を実行すべき範囲を設定することができる。例えば、自己診断テスト結果情報1007が、MMU3にのみ故障が発生しているエントリが存在することを示している場合には、CPU1は、MMU3に対してのみシステムリセット信号1010を発行する。また、自己診断テスト結果情報1007がMMU5にのみ故障が発生しているエントリが存在することを示す場合には、CPU1は、MMU5に対してシステムリセット信号1010を発行する。このように、各MMUの自己診断テスト結果に基づいて、リセットまたは復帰処理を実施すべきMMUを設定することができる。
【0058】
なお、下位MMUと上位MMU間のデータバス上において故障が発生している可能性も考えられる。したがって、自己診断テスト結果情報1007が、MMU5に故障が発生しているエントリが存在していることを示す場合には、CPU1は、MMU5のみならず下位のMMU3にもシステムリセット信号1010を発行してもよい。
【0059】
上述したように、実施の形態1によれば、階層構造を有する複数のMMUのそれぞれの自己診断テストを実行することができ、各階層のMMUの自己診断テスト結果を出力することができる。これによって、どの階層のMMUに故障が発生しているかを特定することができる。したがって、特定された故障箇所に応じて、リセットまたは復帰処理を実施すべき範囲を設定することができる。これによって、アドレス変換機能の故障が検出されたときに、リセットまたは復帰処理の処理時間を短くすることができる。
【0060】
また、各MMUの自己診断テスト部は、メモリアクセス要求発行元の専用処理部2ではなくCPU1からの指示によって自己診断テストを開始する。すなわち、各MMUの自己診断テストの実行を、ソフトウェアプログラムで制御することが可能になる。これによって、MMUの自己診断テストの実行タイミングを任意に設定することが可能になり、システム設計の手間を低減することができる。
【0061】
なお、本実施の形態1によれば、2階層からなるMMUが設けられた半導体装置について説明したが、これに限定されるものではない。また、半導体装置10が、仮想アドレスを用いてメモリアクセスを行う複数の処理部を有していてもよい。
【0062】
<変形例>
以上の説明では、半導体装置10のアドレス変換機能は、CPU1から出力される自己診断テスト開始信号1000に応じて、MMU3、MMU5およびメモリ20の順に自己診断テストが実行される。しかしながら、自己診断テスト開始信号1000は、自己診断テストの実行開始指示だけでなく、自己診断テストを実行する対象となるMMUを指定する情報を有していてもよい。これによって、MMUごとに自己診断テストを実行することができる。
【0063】
例えば、CPU1が、自己診断テストの対象としてMMU3を指定する情報を有する自己診断テスト開始信号1000を出力したとする。自己診断テスト開始信号1000を受信するMMU3の自己診断テスト制御部321は、TLB323に自己診断テスト指示信号1001を出力する。TLB制御部323は、自己診断テスト指示信号1001に応じて、TLB311の各エントリを自己診断テスト用エントリに書き換える。MMU3の自己診断テスト制御部321は、自己診断テスト開始信号1000に応じて、自己診断テストの対象であるMMU3の自己診断テスト用のリクエストを発行するようにリクエスト制御部322に指示し、MMU3の自己診断テストが実行される。但し、本変形例において、リクエスト制御部322は、自己診断テストの対象外であるMMU5のための自己診断テスト用リクエストは発行しない。また、自己診断テスト開始信号1000を受信するMMU5の自己診断テスト制御部521は、自己診断テスト対象ではないため、自己診断テスト指示信号1011を出力しない。したがって、TLB511は、自己診断テスト用エントリに書き換えられない。
【0064】
自己診断テスト実行中は、専用処理部2から発行されるメモリアクセス要求は処理できなくなる。したがって、本変形例1のように、自己診断テストの対象を設定することにより、自己診断テストに要する時間を短縮することができる。
【0065】
また、半導体装置10は、複数の専用処理部2を含んでいてもよい。そして、複数の専用処理部ごとに1次MMUが設けられ、2次MMUは複数の専用処理部で共有されてもよい。すなわち、
図8に示すように、半導体装置10aは、複数の専用処理部2_0および2_1を備える。1次MMUとしてのMMU3_0および3_1は、専用処理部2_0および2_1に対してそれぞれ設けられ、MMU5は、専用処理部2_0および2_1の2次MMUとして設けられてもよい。このような構成において、実施の形態1で説明したように、専用処理部2_0からのメモリアクセス要求に対するアドレス変換機能の自己診断テストを実行する場合には、MMU3およびMMU5は自己診断テストモードに設定される。したがって、この自己診断テストを行っている間は、MMU5は、専用処理部2_1からのメモリアクセス要求に対するアドレス変換ができなくなる。そのため、自己診断テストの実行が、システム全体の性能に影響を与えてしまう可能性がある。
【0066】
しかしながら、本変形例1のように、MMUごとに自己診断テストの対象を設定することによって、自己診断テストの実行によるシステム全体の性能への影響を小さくすることができる。例えば、専用処理部2_0に関連するアドレス変換機能のうち、自己診断テストの実行対象がMMU3_0に設定された場合には、MMU5は通常動作を行うことができる。したがって、専用処理部2_1からのメモリアクセス要求を処理することができる。すなわち、MMU3_0の自己診断テストの実行によって、専用処理部2_1の動作を止める必要がない。よって、自己診断テストの実行によるシステム全体への性能劣化を防ぐことができる。
【0067】
<実施の形態2>
実施の形態2に係る半導体装置について、
図9を参照しながら説明する。実施の形態2は、自己診断テスト開始信号1000がタイマーモジュール7から供給されている点で、実施の形態1と異なる。それ以外は、実施の形態1と同様であるため、説明を省略する。
【0068】
上述したように、実施の形態1ではCPU1から自己診断テスト開始信号1000が出力されるが、本実施の形態2では、タイマーモジュール7から自己診断テスト開始信号1000が出力される。すなわち、実施の形態2において、MMU3および5の自己診断テスト部は、タイマーモジュール7から所定の期間ごとに出力される自己診断テスト開始信号1000を受信する。したがって、半導体装置10のアドレス変換機能の自己診断テストが所定期間ごとに行われ、定期的に故障確認ができる。これによって、データ処理装置の安全性が高められる。
【0069】
<実施の形態2の変形例1>
図10は、実施の形態2の変形例1に係る半導体装置を説明するための図である。実施の形態2では、タイマーモジュール7は一定の周期で自己診断テスト開始信号1000を出力しているが、その自己診断テスト開始信号1000を出力する周期が制御されてもよい。
図10に示すように、温度センサ8および電圧センサ9がさらに設けられ、温度センサ8および電圧センサ9のモニタ結果に応じて、タイマーモジュール7が自己診断テスト開始信号1000を出力する周期が制御されてもよい。なお、
図10では、本変形例の説明に用いられる構成要素のみが示されており、
図1における他の構成要素は省略されている。
【0070】
本変形例1によれば、温度センサ8が半導体装置内部の温度を測定する。CPU1は、温度センサの測定結果を受け、その測定結果に基づいて半導体装置の高温状態が所定期間以上続いているか判定する。CPU1は、半導体装置の高温状態が所定期間以上続いていると判定した場合に、タイマーモジュール7を、自己診断テスト開始信号1000を出力する周期を変更するように制御する。例えば、タイマーモジュール7は、自己診断テスト開始信号1000を出力する頻度を上げるように制御される。半導体装置はさらに不図示のテスト温度設定レジスタを備え、タイマーモジュール7の制御を開始するための温度を設定してもよい。
【0071】
また、電圧センサ9が半導体装置内の動作電圧を測定する。その測定結果をCPU1が受信する。CPU1は、半導体装置が長時間にわたって低電圧状態または高電圧状態にあると判定した場合に、タイマーモジュール7を制御する。例えば、タイマーモジュール7は、自己診断テスト開始信号1000を出力する頻度を上げるように制御される。半導体装置はさらに不図示のテスト電圧設定レジスタを備え、タイマーモジュール7の制御を開始するための温度を設定してもよい。
【0072】
このように、温度センサおよび電圧センサによって半導体装置の状態をモニタし、モニタ結果に応じて、アドレス変換機能の自己診断テストを実行することができる。すなわち、半導体装置の動作環境に応じて自己診断テストを実行することができる。これによって、故障検出率を向上させることができる。
【0073】
なお、変形例1では、温度センサ8と電圧センサ9の両方を設けた例について説明したが、温度センサ8と電圧センサ9のいずれか一方のみで半導体装置内の状態をモニタして、モニタ結果に応じて自己診断テストの実行間隔が制御されてもよい。
【0074】
<実施の形態2の変形例2>
タイマーモジュール7が出力する自己診断テスト開始信号1000の周期は、半導体装置の総使用時間に応じて変更されてもよい。ソフトウェアプログラムによって総使用時間を保持し、総使用時間が予め設定された時間を超えた場合に、CPU1がタイマーモジュール7を制御して、自己診断テストを実行する頻度を変更してもよい。
【0075】
<実施の形態3>
次に実施の形態3について説明する。実施の形態3では、実施の形態1に係るMMU3およびMMU5の別の形態となるMMU3aおよび5aについて説明する。
図11および12は、それぞれ、実施の形態3に係る半導体装置10aに含まれるMMU3aおよび5aの構成の一例を示すブロック図である。実施の形態3において、半導体装置10aのMMU3aおよび5a以外の構成は、
図1に示されるものと同様でよい。したがって、ここでは、それらの説明を省略する。
【0076】
図11は、MMU3aの構成例を示すブロック図である。MMU3aは、割り込み要求部33を更に備える点で、実施の形態1で説明したMMU3(
図2参照)と異なる。さらに、MMU3aは、アドレス変換部31に代えてアドレス変換部31a、自己診断テスト部32に代えて自己診断テスト部32aを備える点で、実施の形態1で説明したMMU3(
図2参照)と異なる。なお、
図11に示されたアドレス変換部31aおよび自己診断テスト部32aの構成のうち、
図2と同一の機能を有する構成に対しては同一の符号を付し、説明を省略する。
【0077】
アドレス変換部31aのTLB311aは、実施の形態1におけるTLB311と同様に、仮想アドレスから物理アドレスへの変換のための複数のページテーブルエントリを有し、メモリ20に格納されるページテーブルのキャッシュとして機能する。各ページテーブルエントリは、タグ情報とデータに加えてセキュア情報を有する。セキュア情報は、メモリアクセス要求元である専用処理部に対するアクセス権に関する情報である。例えば、メモリアクセス要求元が仮想アドレスで指定されるメモリ領域へアクセスしてもよいか否か(例えば、読出しのみ、書込みのみ、または、読出しおよび書込みが可能)がセキュア情報として設定されている。TLB311aは、メモリアクセス要求に含まれる仮想アドレスとタグ情報とを比較する。さらに、メモリアクセス要求に設定されたセキュア情報(例えば、リード/ライト情報)と、TLB311aのセキュア情報とを比較する。TLB311aは、仮想アドレスに対応するページテーブルエントリを有していても(TLBヒット)、セキュア情報が不一致の場合には、アドレス変換エラーとしてアドレス変換エラー通知信号を出力する。TLB311aは、メモリアクセス要求の仮想アドレスに対応するページテーブルエントリが存在し、且つ、セキュア情報が一致するときに、TLB311aの検索結果をアドレス変換回路312に出力する。
【0078】
自己診断テスト部32aは、エラーアドレスレジスタ236をさらに備える点で、
図11に示された自己診断テスト部32と異なる。エラーアドレスレジスタ326は、アドレス変換部31aにおいてアドレス変換エラーと判断されたメモリアクセス要求の仮想アドレスと、当該エントリのアドレス情報とを格納する。
【0079】
TLB制御部323aは、自己診断テスト制御部321から出力される自己診断テスト指示信号1001に応じて、エラーアドレスレジスタ326に格納された仮想アドレスおよびエントリアドレス情報を読み出す。TLB制御部323aは、読み出した仮想アドレスに基づいて自己診断テスト用ページテーブルエントリを生成する。自己診断テスト用ページテーブルエントリのタグ情報は、エラーアドレスレジスタ326から読み出した仮想アドレスに対応する。TLB制御部323aは、エラーアドレスレジスタ326から読み出したエントリアドレスの内容を、自己診断テスト用ページテーブルエントリに書き換えるために、TLB書き換え信号1002を出力する。
【0080】
割り込み要求部33は、アドレス変換部31aからのアドレス変換エラー通知信号1013を受信する。そして、割り込み要求部33は、アドレス変換エラー通知信号1013に応じて、CPU1へアドレス変換エラー割り込み通知信号1009を出力する。
【0081】
次に、
図12に示す、実施の形態2におけるMMU5aについて説明する。
図12は、実施の形態2におけるMMU5aの構成例を示すブロック図である。MMU5aは、アドレス変換部51に代えてアドレス変換部51aと、自己診断テスト部52に代えて自己診断テスト部52aと、エラーアドレスレジスタ526を備える点で、MMU5(
図3参照)と異なる。なお、
図12に示されたアドレス変換部51aおよび自己診断テスト部52aの構成のうち、
図3と同一の機能を有する構成に対しては同一の符号を付し、説明を省略する。
【0082】
アドレス変換部51aのTLB511aは、TLB311aと同様に、メモリ20に格納されるページテーブルのキャッシュとして機能する。TLB511aの各ページテーブルエントリは、TLB311aのページテーブルエントリと同様に、タグ情報とデータに加えてセキュア情報を有する。TLB511aも、たとえメモリアクセス要求の仮想アドレスに対応するページテーブルエントリがTLB511aに存在していたとしても、メモリアクセス要求のセキュア情報と当該ページテーブルエントリのセキュア情報とが一致していない場合には、アドレス変換エラー通知信号を出力する。アドレス変換エラー通知信号は、MMU5aに与えられたメモリアクセス要求に対するレスポンスとして、MMU3aに送り返される。
【0083】
自己診断テスト部52aは、自己診断テスト制御部521、TLB制御部523a、および、エラーアドレスレジスタ526を有する。
【0084】
エラーアドレスレジスタ526は、
図11のエラーアドレスレジスタ326と同様、アドレス変換部51aにおいてアドレス変換エラーと判断されたメモリアクセス要求の仮想アドレスと、当該エントリのアドレス情報とを格納する。
【0085】
TLB制御部523aは、自己診断テスト制御部521から出力される自己診断テスト指示信号1011に応じて、エラーアドレスレジスタ526に格納された仮想アドレスとエントリアドレス情報とを読み出す。TLB制御部523aは、読み出した仮想アドレスに基づいて生成されるタグ情報を有する自己診断テスト用ページテーブルエントリを生成する。TLB制御部523aは、エラーアドレスレジスタ526から読み出したエントリアドレスの内容を、自己診断テスト用ページテーブルエントリに書き換えるために、TLB書き換え信号1012を出力する。
【0086】
(自己診断テスト)
次に、実施の形態3に係る半導体装置のアドレス変換機能の自己診断テスト動作例について説明する。実施の形態3に係る半導体装置は、アドレス変換エラーの発生に応じてMMUの自己診断テストを実行する。
図13は、実施の形態3に係る半導体装置において、アドレス変換エラーが発生したときの自己診断テストを説明するフローチャートである。以下、MMU5aで、アドレス変換エラーが発生した場合を例にして説明する。
1次MMUであるMMU3aが、専用処理部2からメモリアクセス要求を受ける。MMU3aのTLB311aには、メモリアクセス要求の仮想アドレスに対応するページテーブルエントリが存在していない場合、当該メモリアクセス要求は、2次MMUであるMMU5aに転送される。
【0087】
MMU5aがメモリアクセス要求を受信すると、TLB511aは、メモリアクセス要求の仮想アドレスに対応するページテーブルエントリを検索する。TLB511aは、仮想アドレスに対応するページテーブルエントリがヒットするものの、メモリアクセス要求のセキュア情報と、ヒットしたページテーブルエントリが有するセキュア情報が不一致であることを示すとき、アドレス変換エラー通知信号を出力する。
【0088】
アドレス変換エラーが発生すると、アドレス変換エラーと判断されたメモリアクセス要求の仮想アドレスとエントリアドレスがエラーアドレスレジスタ526に格納される(ステップS100)。TLB511aから出力されたアドレス変換エラー通知信号は、MMU5aに与えられたメモリアクセス要求に対するレスポンスとしてMMU3aに送り返される。アドレス変換エラー通知信号1013は、MMU3aの割り込み要求部33に受信される。割り込み要求部33は、アドレス変換エラー通知信号1013に応じて、CPU1へ割り込み要求1009を出力する(ステップS101)。CPU1は、割り込み要求1009に応じて自己診断テスト開始信号1000をMMU3aおよびMMU5aに出力する(ステップS102)。これによって、MMU3aおよび5aが自己診断テストモードになる。
【0089】
MMU3aおよび5aの自己診断テスト制御部321および521は、自己診断テスト開始信号1000に応じて、TLB制御部323aおよび523aに対して、自己診断テスト指示信号1001および1011を出力する。
【0090】
自己診断テスト指示信号1001および1011を受信したTLB制御部323aおよび523aは、それぞれ、エラーアドレスレジスタ326および526に格納された仮想アドレスを読み出す。TLB制御部323aおよび523aは、読み出した仮想アドレスに基づくタグ情報を有する自己診断テスト用ページテーブルエントリを生成する。生成された自己診断テスト用ページテーブルエントリは、各TLB311aおよび511aのエラーアドレスレジスタ326および526から読み出したエラーエントリアドレスに書き込まれる。したがって、TLB511aのアドレス変換エラーが発生したエントリは、TLB制御部523aに生成されたページテーブルエントリに書き換えられる(ステップS103)。
【0091】
次に、自己診断テスト用リクエスト1003dがリクエスト制御部322から発行される(ステップS104)。自己診断テスト用リクエスト1003dは、アドレス変換エラーが発生したエントリ、すなわち、TLB511aのアドレス変換エラーが発生したエントリでヒットすることを期待した仮想アドレスが設定される。したがって、自己診断テスト用リクエスト1003dの仮想アドレスは、MMU3aではアドレス変換されず、当該自己診断テスト用リクエスト1003dはMMU5aに転送される。
【0092】
MMU5aは、自己診断テスト用リクエスト1003dに基づきアドレス変換を行う。MMU5aによるアドレス変換において、再度アドレス変換エラーが検出された場合には(ステップS105のNO)、アドレス変換エラー通知信号が出力される。したがって、このアドレス変換エラーが自己診断テスト用リクエスト1003dのレスポンス情報としてMMU3aに送り返される。そして、MMU3aの割り込み要求部33は、アドレス変換エラー通知信号1013に応じて、CPU1へ変換エラー割り込み通知信号1009を出力する(ステップS107)。一方、アドレス変換エラーが検出されない場合は(ステップS105のYES)、MMU5aのTLBヒット/ミス結果と、アドレス変換結果が、自己診断テスト用リクエスト1003dのレスポンス情報1008としてMMU3aに送られ、MMU3aの判定部324に入力される。
【0093】
判定部324は、レスポンス情報1008に含まれるTLBヒット/ミス結果およびアドレス変換結果が期待通りの結果であるか否かを判定する(ステップS106)。TLBヒット/ミス結果およびアドレス変換結果が期待通りの結果でない場合は(ステップS106のNO)、TLB511aに故障が発生していると判定され、MMU5aに故障が発生していることを示す自己診断テスト判定結果信号1006を生成して自己診断テスト結果格納部325に格納する。一方、TLBヒット/ミス結果およびアドレス変換結果が期待通りの結果である場合には(ステップS106のYES)、アドレス変換エラーはTLB511aの一過性の故障であると判断される。
【0094】
CPU1は、MMU3aおよび5aが自己診断テストモードに遷移している状態で、変換エラー割り込み通知信号1009を受信すると、MMU3aまたは5aに恒久的な故障が生じていると判断することができる。一方、CPU1は、MMU3aおよび5aが自己診断テストモードに遷移している状態で、変換エラー割り込み通知信号1009を受信せず、且つ、自己診断テスト判定結果信号からMMU3aおよびMMU5aの故障情報が得られなかった場合には、アドレス変換エラーはTLBの一過性の故障であると判断する。
【0095】
上述したように、本実施の形態3によれば、アドレス変換エラーに基づいてMMUの自己診断テストを実施する。これによって、TLBの故障要因が、一過性の故障か、恒久的な故障かを判別することができる。例えば、CPU1は、TLBの故障要因が一過性の故障であると判断する場合には、TLBに対するリセットを実施後、通常動作状態に復帰することができる。また、CPU1は、TLBの故障要因が恒久的な故障であった場合には、半導体装置を含むシステム全体が安全状態に遷移するように制御する。このように、アドレス変換エラーの故障原因が一過性なものか、恒久的なものかを判別することで、故障要因に適した処理を実行することができる。
【0096】
<実施の形態4>
次に、実施の形態4について説明する。実施の形態4では、実施の形態1に係るMMU3の別の形態となるMMU3bについて説明する。
図14は、実施の形態4に係る半導体装置10bに含まれるMMU3bの構成の一例を示すブロック図である。MMU3bは、アドレス変換部31bと自己診断テスト部32bを備える。アドレス変換部31bは、TLB311に代えてTLB311bを備える点で、実施の形態1のアドレス変換部31(
図2参照)と異なる。また、自己診断テスト部32bは、判定部324に代えて判定部324bを備える点で、実施の形態1の自己診断テスト部32(
図2参照)と異なる。
図14に示されたアドレス変換部31bおよび自己診断テスト部32bの構成のうち、
図2と同一の機能を有する構成に対しては、同一の符号を付し、その説明を省略する。
【0097】
アドレス変換部31bのTLB311bは、実施の形態1におけるTLB311と同様に、仮想アドレスから物理アドレスへの変換のための複数のページテーブルエントリを有し、メモリ20に格納されるページテーブルのキャッシュとして機能する。各ページテーブルエントリは、タグ情報およびデータに加えて、有効フラグデータを含む。有効フラグデータは、当該エントリの有効または無効を示すものである。
【0098】
自己診断テスト部32bの判定部324bは、実施の形態1のTLB324と同様に、TLBヒット/ミス信号1004およびアドレス変換結果1005を受信して、アドレス変換部31bのアドレス変換機能の自己診断テスト結果を判定する。判定部324bは、さらに、自己診断テスト判定結果に基づいて、TLB311bの有効フラグデータを設定する有効フラグ制御信号1009を出力する。例えば、判定部324bは、自己診断テスト判定の結果、故障が発生していると判断したエントリに対して、無効を示す有効フラグデータを設定するために、有効フラグ制御信号1009を出力する。これによって、故障が発生しているエントリは無効に設定される。MMU3bは、TLB311bの無効エントリ以外の有効エントリを用いて、アドレス変換動作を行うことができる。MMU3bは、TLBの全エントリを利用することはできないものの、一部のエントリでもってアドレス変換動作を継続して行うことができるため、システムが安全状態へ遷移するまでの時間を確保することができる。
【0099】
また、判定部324bは、自己診断テスト結果に加えて、有効フラグデータを設定したか否かについての情報も自己診断テスト結果格納部325に格納する。自己診断テスト結果および有効フラグデータ設定に関する情報は、自己診断テスト結果情報1007bとしてCPU1に読み出される。CPU1は、有効フラグデータ設定に関する情報を含む自己診断テスト結果情報1007bに基づいて、システムを適切な動作モードに遷移させることができる。例えば、CPU1は、無効を示す有効フラグデータが設定されたエントリの数に応じて、システム動作の継続を判断してもよいし、遷移すべき動作モードを判断してもよい。
【0100】
なお、1次MMUであるMMU3bについて説明したが、下位のMMUのTLBが、TLB311bと同様に、有効フラグデータを有しており、自己診断テスト結果に基づいて設定されてもよい。
【0101】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【0102】
また、実施の形態1-4において、アドレス変換機能が2階層からなるMMUで構成されている例について説明したが、2階層以上の階層構造を有していてもよい。また、専用処理部が階層構造を有しており、MMUが、階層構造の専用処理部に対応するような階層構造を有していてもよい。
【符号の説明】
【0103】
1 CPU
2、2_0、2_1 専用処理部
3、3_0、3_1、3a、3b、5、5a MMU
4 バス
6 メモリコントローラ
7 タイマーモジュール
8 温度センサ
9 電圧センサ
10、10a、 半導体装置
20 メモリ
31、31a、31b、51、51a アドレス変換部
32、32a、32b、52 自己診断テスト部
100 データ処理装置
311、311a、311b、511、511a トランスレーションルックアサイドバッファ
312、312a、512 アドレス変換回路
321、521 自己診断テスト制御部
322 リクエスト制御部
323、323a、523、523a TLB制御部
324、324b 判定部
325 自己診断テスト結果格納部
326、526 エラーアドレスレジスタ
33 割り込み要求部