(58)【調査した分野】(Int.Cl.,DB名)
前記主演算部では、前記プログラムとして高い信頼性の信頼済みプログラムと信頼済みプログラムよりも信頼性が低い信頼済みでないプログラムとが実行され、前記副演算部の前記レジスタに対する前記アクセス許可範囲アドレス値の格納処理は、前記信頼済みプログラムにより行われる請求項1に記載の半導体装置。
前記メモリ保護部は、前記アクセス許可範囲アドレス値により指定されたアクセス許可範囲外に対するアクセス要求を検出した場合には、前記主演算部にエラー通知を行い、
前記主演算部は、前記エラー通知に応じて前記副演算部の動作停止処理、前記副演算部を利用するプログラムの停止処理の少なくとも1つを割込処理として実行する請求項1に記載の半導体装置。
前記リセット制御回路は、前記アクセス許可範囲のうち前記主演算部から指定された特定アクセス許可範囲については前記初期化処理を行わない請求項5に記載の半導体装置。
前記副演算部の前記レジスタに格納される前記アクセス許可範囲アドレス値は、前記メモリ管理ユニットにおいて前記副演算部を利用するプログラムに許可されたメモリ管理領域内のアドレス値を有する請求項7に記載の半導体装置。
前記主演算部では、前記プログラムとして高い信頼性の信頼済みプログラムと信頼済みプログラムよりも信頼性が低い信頼済みでないプログラムとが実行され、前記副演算部の前記レジスタに対する前記アクセス許可範囲アドレス値の格納処理は、前記信頼済みプログラムにより行われる請求項11に記載の半導体装置のメモリアクセス制御方法。
前記主演算部は、前記副演算部の前記レジスタに対する前記アクセス許可範囲アドレス値の格納処理を前記副演算部の起動前に行う請求項11に記載の半導体装置のメモリアクセス制御方法。
前記副演算部は、前記共有メモリ上の前記アクセス許可範囲のうち前記主演算部から指定された特定アクセス許可範囲については前記初期化処理を行わない請求項15に記載の半導体装置のメモリアクセス制御方法。
【発明を実施するための形態】
【0009】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0010】
実施の形態1
図1に実施の形態1にかかる半導体装置1のブロック図を示す。
図1に示すように、実施の形態1にかかる半導体装置1は、主演算装置(例えば、CPU10)、共有メモリ21、副演算装置(例えば、ハードウェアIP22、23)を有する。この明細書において、副演算装置(ハードウェアIP)とは、演算装置の内部に処理命令を格納するレジスタを有する演算装置であって、レジスタに設定された処理命令に基づいて処理を行う演算装置のことを言う。処理命令は、特定の処理内容を表すよう予め定義された数値であっても構わない。このとき、レジスタの値は、例えば主演算装置によって設定される。また、
図1では、副演算装置として、それぞれが同一構成となる複数のハードウェアIPを有する例を示したが、ハードウェアIPの構成は、異なる構成であっても構わない。
【0011】
CPU10は、プログラムを実行する。半導体装置1では、CPU10で実行されるプログラムによりハードウェアIP22、23及び共有メモリ21へのアクセスが生じる。CPU10は、プログラムを実行する演算部11を有する。
図1では図示を省略したが、半導体装置1は、メモリコントローラ、内部メモリ、入出力インタフェース回路等を含み、それらはCPU10に含まれても良い。
図1に示す例では、演算部11上でオペレーティングシステム(以下、OSと称す)と、アプリケーションプログラムAPPa、APPbとが実行されている。
【0012】
OS及びアプリケーションプログラムAPPa、APPbは、高いレベルの検証が行われ、機能安全上若しくはセキュリティ上の保護が十分になされている信頼性が高いプログラム(以下、信頼済みプログラムと称す)と、検証のレベルが低く、機能安全上もしくはセキュリティ上の保護が十分になされていないプログラム(以下、信頼済みでないプログラム)が混在している。信頼済みプログラムであるか、それとも信頼済みでないプログラムであるかの情報はプログラムの中に予め含まれている。その基準は、たとえば国際標準化機構に定める基準に則って定められる。なお、実施の形態ではOSが1つの場合で説明を行っているが、実際にはこの限りではなく、複数のOSが存在していても良い。
【0013】
信頼済みプログラムの一例としては、例えば、自動車における自動運転アプリケーションなどがあげられる。一方、信頼済みでないプログラムの一例としては動画再生アプリケーションなどがあげられる。信頼済みプログラムと信頼済みでないプログラムが同じCPU上で実行されるとき、信頼済みでないプログラムと信頼済みプログラムとの間でデータ干渉が起こらないようにする必要がある。なお、自動車の例をあげたが、実際にはこれらのアプリケーションに限定されるものでない。
【0014】
共有メモリ21は、例えば、DRAM(Dynamic Random Access Memory)等の揮発性のメモリ、或いは、FLASHメモリ等の不揮発性のメモリである。共有メモリ21は、CPU10とハードウェアIP22、23からのアクセスを受ける。なお、共有メモリ21は、半導体装置1が利用するものであれば良く、CPU10及びハードウェアIP22、23とは別の半導体チップ上に設けられていても良い。
【0015】
ハードウェアIP22、23は、CPU10で実行されるプログラムの一部の処理を実行するハードウェアである。ハードウェアIP22、23は、例えば、符号化画像の復号処理、画像認識処理の一処理として行われる画像変換処理、特徴点抽出処理等の特定の処理を専ら行う。
図1では、ハードウェアIP22、ハードウェアIP23は同じ構成であるため、ハードウェアIP22を例にハードウェアIPの構成を説明する。
【0016】
そこで、
図2に実施の形態1にかかるハードウェアIP22のブロック図を示す。
図2に示すように、ハードウェアIP22は、情報処理部31、レジスタ群32、メモリアクセスコマンド生成部33、メモリ保護部34を有する。
【0017】
情報処理部31は、CPU10から与えられる動作命令に応じて所定の処理を行う。レジスタ群32は、複数のレジスタを有する。
図2に示す例では、複数のレジスタのうち1つのレジスタにCPU10から与えられる処理命令を格納する。この処理命令は、ハードウェアIP22が如何なる動作を行うものかを指示するものである。また、複数のレジスタのうち2つのレジスタにCPU10から与えられるアクセス許可範囲アドレス値を格納する。また、このアクセス許可範囲アドレス値は、アクセス許可範囲の先頭のアドレスを示すアクセス許可先頭アドレスと、アクセス許可範囲の最終のアドレスを示すアクセス許可最終アドレスと、を含む。また、レジスタ群32に含まれるレジスタには、情報処理部31が処理すべきデータ、データ処理に用いる動作パラメータ等も格納される。なお、ハードウェアIP22、23では、アクセス許可先頭アドレスとアクセス許可最終アドレスを格納するレジスタの代わりに、アクセス許可先頭アドレスとアクセス許可領域サイズを格納するレジスタによりアクセス許可範囲を指定することもできる。
【0018】
メモリアクセスコマンド生成部33は、情報処理部31でアクセス要求が発生した際に、そのアクセス要求に対応する共有メモリ21のアドレスを生成し、当該アクセスアドレスを付したアクセス要求を出力する。例えば、情報処理部31で共有メモリ21に格納されている画像の特定座標の画素値へのアクセス要求が発生した際に、メモリアクセスコマンド生成部33は情報処理部31から座標にて指定された当該画素が格納されている共有メモリ21のアドレスを生成する。
【0019】
メモリ保護部34は、情報処理部31から共有メモリ21に発せられたアクセス要求のうち、アクセス許可範囲アドレス値により指定されたアクセス許可範囲内に対するアクセス要求を共有メモリに与え、アクセス許可範囲アドレス値により指定されたアクセス許可範囲外に対するアクセス要求を遮断する。なお、ハードウェアIP22では、メモリ保護部34が受信するアクセス要求はメモリアクセスコマンド生成部33から出力される。
【0020】
また、メモリ保護部34は、アクセス許可範囲アドレス値により指定されたアクセス許可範囲外に対するアクセス要求を検出した場合には、CPU10にエラー通知ERR1を出力する。そして、CPU10は、エラー通知ERR1に応じてハードウェアIP22の動作停止処理、ハードウェアIP22を利用するプログラムの停止処理の少なくとも1つを割込処理として実行する。
【0021】
上記したように、実施の形態1にかかる半導体装置1では、ハードウェアIP22に、情報処理部31から共有メモリ21に発せられたアクセス要求を有効に共有メモリ21に与えるか否を、CPU10により設定されたアクセス許可範囲アドレス値に基づき判断する。そこで、
図3に実施の形態1にかかる半導体装置1におけるメモリ配置とアクセス許可範囲との関係を説明する図を示す。
【0022】
図3及び
図4では、半導体装置1上のメモリ及びレジスタに対する利用権限を示すメモリ空間をメモリ配置として示した。実施の形態1にかかる半導体装置1では、CPU10が信頼済みプログラム(例えば、機能安全アプリケーション)と信頼済みでないプログラム(例えば、非機能安全アプリケーション)を実行するため、CPU10は最も高い信頼性が要求されるメモリ空間であるシステム領域を含む全メモリ空間にアクセスが可能である。一方、ハードウェアIPについては、処理命令が非機能安全アプリケーションによる命令である場合、
図3に示すように非機能安全アプリケーションに許可されたアクセス範囲のうちレジスタ群32に格納されたアクセス許可先頭アドレスからアクセス許可最終アドレスまでのメモリ空間にしかアクセスが許可されない。
【0023】
処理命令が機能安全アプリケーションによる命令である場合も同様に、
図4に示すように機能安全アプリケーションに許可されたアクセス範囲のうちレジスタ群32に格納されたアクセス許可先頭アドレスからアクセス許可最終アドレスまでのメモリ空間にしかアクセスが許可されない。
【0024】
続いて、実施の形態1にかかる半導体装置1の動作について説明する。以下の説明では、半導体装置1の動作を、ハードウェアIPの起動動作及びハードウェアIPのレジスタ設定動作、ハードウェアIPのメモリアクセス動作、及び、メモリアクセス違反発生の動作に分けて説明を行う。
【0025】
まず、
図5に実施の形態1にかかるハードウェアIPの起動シーケンス及びレジスタ設定シーケンスを説明するシーケンス図を示す。
図5に示す例における半導体装置1では、アプリケーションが起動した後にハードウェアIPに対する利用要求を発生させる。そして、アプリケーションは、ハードウェアIPの利用要求の発生に伴い、ハードウェアIP22に対してレジスタ設定命令を出力する。
【0026】
アプリケーションは、ハードウェアIPの動作パラメータの1つとしてアクセス許可範囲アドレス値を含むレジスタ設定命令を機能安全アプリケーション(
図5では、OSと記載)に出力する。OSは、アプリケーションからレジスタ設定命令を受け取ったことに応じて、ハードウェアIPにレジスタ設定命令を出力する。
【0027】
そして、ハードウェアIPは、レジスタ設定命令に含まれる動作パラメータをレジスタ群32に保存する。また、ハードウェアIPは、レジスタ群32に格納された動作パラメータに含まれるアクセス許可範囲アドレス値に基づきメモリ保護部34にアクセス許可範囲を設定する。
【0028】
そして、アプリケーションは、ハードウェアIPに対する具体的な処理指示を生成し、この処理内容を処理命令としてハードウェアIPに与える。ハードウェアIPは、この処理命令に応じて処理を開始する。
【0029】
上述したように、CPU10は、ハードウェアIPのレジスタ群32に対するアクセス許可範囲アドレス値の格納処理をハードウェアIPの起動前に行う。
【0030】
続いて、
図6に実施の形態1にかかるハードウェアIPのメモリアクセスシーケンスの第1の例を説明するシーケンス図を示す。
図6に示すように、実施の形態1にかかるハードウェアIPは、情報処理部31における処理によりメモリアクセスが発生した場合、情報処理部31がメモリアクセスコマンド生成部33にメモリアクセス要求を出力し、メモリアクセスコマンド生成部33がアクセスアドレスを生成する。そして、ハードウェアIPは、メモリアクセスコマンド生成部33で生成されたアクセスアドレスを用いて共有メモリ21へのアクセスを行う。このとき、ハードウェアIPでは、メモリアクセスコマンド生成部33で生成されたアクセスアドレスがアクセス許可範囲内にあるときは、アクセス要求を共有メモリ21に出力する。一方、ハードウェアIPでは、メモリアクセスコマンド生成部33で生成されたアクセスアドレスがアクセス許可範囲外にあるときは、アクセス要求を遮断してエラー通知ERR1をCPU10に通知する。
【0031】
また、
図7に実施の形態1にかかるハードウェアIPのメモリアクセスシーケンスの第2の例を説明するシーケンス図を示す。
図7に示すように、ハードウェアIPのメモリアクセスシーケンスの第2の例では、メモリアクセスコマンド生成部33で生成されたアクセスアドレスがアクセス許可範囲外にあるときのメモリ保護部34の動作が第1の例と異なる。第2の例では、メモリ保護部34は、メモリアクセスコマンド生成部33で生成されたアクセスアドレスがアクセス許可範囲外にある、メモリアクセスコマンド生成部33から与えられたアクセスアドレスをアクセス範囲内のアドレスに丸め込む処理を行った後にアクセス要求を共有メモリ21に出力する。また、第2の例においても、メモリ保護部34は、メモリアクセス違反が生じた場合にはエラー通知ERR1をCPU10に通知する。
【0032】
ハードウェアIPのメモリアクセスシーケンスの第1の例及び第2の例に示すように、メモリアクセス違反が生じた場合のメモリ保護部34の処理は、仕様に応じて様々なアクセス要求の遮断方法が考えられる。
【0033】
続いて、
図8に実施の形態1にかかるハードウェアIPにおいてメモリアクセス違反が生じた場合の半導体装置の処理シーケンスを説明するシーケンス図を示す。
図8に示すように、実施の形態1にかかる半導体装置1は、ハードウェアIPからCPU10にエラー通知ERR1が通知された場合には、エラー通知ERR1の割り込み処理P1〜P3の少なくとも1つを行うことで発生原因となった処理を停止させる。
【0034】
割り込み処理P1では、OSがハードウェアIPに対するリセット命令を発行する。ハードウェアIPは、このリセット命令に基づき情報処理部31、レジスタ群32、メモリアクセスコマンド生成部33、メモリ保護部34を初期状態に戻す初期化処理を実行し、待機状態に移行する。
【0035】
割り込み処理P2では、OSがハードウェアIPを利用するアプリケーションに対して処理停止命令を発行する。処理停止命令を受けたアプリケーションは、その時点での処理状態にかかわらず終了処理を実行し、処理を停止する。
【0036】
割り込み処理P3では、OSがハードウェアIPを利用するアプリケーションに関連するタスクを、その時点の処理状態にかかわらずに終了させる。
図8に示す例では、割り込み処理P1〜P3が終了した時点でOSがエラー通知ERR1に応じて実行した割り込み処理を終了させる。
【0037】
上記の説明より、実施の形態1にかかる半導体装置1では、ハードウェアIPに設けられるメモリ保護部34がCPU10から与えられるメモリアクセス範囲内のアクセス要求のみを共有メモリ21に出力する。これにより、実施の形態1にかかる半導体装置1では、CPU10からハードウェアIPのアクセス範囲を制限することができる。そして、実施の形態1にかかる半導体装置1では、ハードウェアIPのアクセス範囲を制限することで、CPU10上で動作するアプリケーションの不具合、或いは、ハッキング等に起因してハードウェアIPが他のアプリケーション利用領域に保持されているデータを破壊してしまうことを防止することができる。
【0038】
また、実施の形態1にかかる半導体装置1では、CPU10で実行されるプログラムの一部の処理をハードウェアIPで処理することで、高い処理性能を実現することができる。そして、上記のハードウェアIPにおけるメモリ保護機構を有することで、実施の形態1にかかる半導体装置1は、高い処理性能と高い信頼性を共に実現することができる。
【0039】
実施の形態2
実施の形態2では、ハードウェアIP22の別の形態となるハードウェアIP22aについて説明する。なお、実施の形態2の説明において、実施の形態1と同じ構成要素については、実施の形態1と同じ符号を付して説明を省略する。
【0040】
図9に実施の形態2にかかるハードウェアIP22aのブロック図を示す。
図9に示すように、実施の形態2にかかるハードウェアIP22aは、実施の形態1にかかるハードウェアIP22に対して、内部メモリ41及びリセット制御回路42を追加したものである。
【0041】
内部メモリ41は、CPU10が利用するメモリ空間上にメモリ空間が定義されず、ハードウェアIP22aのみが利用可能なメモリである。内部メモリ41は例えばSRAM(Static Random Access Memory)である。
【0042】
リセット制御回路42は、レジスタ群32、情報処理部31、メモリ保護部34、内部メモリ41、及び、共有メモリ21を少なくとも初期化する初期化処理を行う。また、リセット制御回路42は、ハードウェアIP22aの起動時及び終了時の少なくともどちらかで初期化処理を行う。
図9に示す例では、リセット制御回路42は、CPU10から発せられる処理命令が処理命令格納レジスタに格納したことに応じて起動命令WKUが発せられたと認識して、当該起動命令WKUに基づき起動時の初期化処理を行い、情報処理部31が出力する終了通知信号END又はCPU10から発せられる停止命令STPに基づき終了時の初期化処理を行う。また、
図9に示す例では、リセット制御回路42は、初期化信号RST1により内部メモリ41を初期化し、初期化信号RST2により情報処理部31を初期化し、初期化信号RST3によりメモリアクセスコマンド生成部33を初期化し、初期化信号RST4によりメモリ保護部34を初期化し、初期化信号RST5によりレジスタ群32を初期化する。また、リセット制御回路42は、共有メモリ21を初期化する際にレジスタ群32に格納されたアクセス許可範囲アドレス値を参照する。
【0043】
続いて、実施の形態2にかかるハードウェアIP22aの動作について説明する。そこで、
図10に実施の形態2にかかるハードウェアIPの起動シーケンスを説明するシーケンス図を示す。
【0044】
図10に示すように、CPU10は、レジスタ設定命令をハードウェアIP22aに与える。ハードウェアIP22aは、レジスタ設定命令を受けて、レジスタ群32にレジスタ設定値を保存する。また、ハードウェアIP22aは、レジスタ群32に格納されたレジスタ設定値に含まれるアクセス許可範囲アドレス値に基づきメモリ保護部34にアクセス許可範囲を設定する。その後、CPU10は、処理命令をハードウェアIPに与える。
【0045】
ハードウェアIP22aは、CPU10から処理命令が通知されたことに応じて、まず内部リセット処理を実行する。この内部リセット処理では、内部メモリ41、情報処理部31を少なくともリセットする。その後、ハードウェアIP22aのリセット制御回路42は、レジスタ群32に格納されたアクセス許可範囲アドレス値により指定されるアクセス許可範囲の共有メモリ21に対して初期化処理を行う外部リセット処理を実行する。この外部リセット処理が完了した後、ハードウェアIP22aは、処理命令に応じた処理を開始する。
【0046】
続いて、
図11に実施の形態2にかかるハードウェアIPの終了シーケンスを説明するシーケンス図を示す。
図11では、ハードウェアIP22aにおいて所定の処理が完了した後の終了シーケンスを示したが、CPU10からの停止命令STPに基づき実行される終了シーケンスでも停止命令STPに基づき動作終了処理以降の処理が行われるのみで実質的には同じ動作となる。
【0047】
図11に示すように、ハードウェアIP22aは、情報処理部31での処理が終了すると動作終了処理を開始する。この動作終了処理では、まず、ハードウェアIP22aのリセット制御回路42が、レジスタ群32に格納されたアクセス許可範囲アドレス値により指定されるアクセス許可範囲の共有メモリ21に対して初期化処理を行う外部リセット処理を実行する。その後、ハードウェアIP22aは、少なくとも、内部メモリ41、情報処理部31、レジスタ群32をリセットする内部リセット処理を実行する。そして、この内部リセット処理が完了したことに応じて、ハードウェアIP22aは、処理完了通知をCPU10に出力し、次の動作命令を待機する待機状態に移行する。
【0048】
上記説明では、終了シーケンスでのリセット処理において、レジスタ群32、及び、共有メモリ21上のアクセス許可範囲に対応する領域全体を初期化する例を説明した。しかしながら、ハードウェアIP22aの利用した処理を行う場合、ハードウェアIP22aの動作終了後にアプリケーションがハードウェアIP22aの処理結果を参照するために、処理結果を残す必要が生じる場合がある。このような場合、ハードウェアIP22aは、残すべき処理結果をリセット制御回路42による初期化処理で初期化されない領域に保存する必要がある。そこで、リセット制御回路42が実施する外部リセット処理の別の例を
図12を参照して説明する。
【0049】
図12は実施の形態2にかかるハードウェアIPに設定されたアクセス許可範囲のメモリ配置を説明する図である。
図12に示す例では、アクセス許可先頭アドレスとアクセス許可終了アドレスとにより指定されるアクセス許可範囲がハードウェアIP22の終了シーケンス中にリセットされない領域と、リセットされる領域とに分けられる。ハードウェアIP22aは、保存すべき情報を、例えば、終了シーケンス中にリセットされない領域に保存する。
図12に示す例では、終了シーケンス中にリセットされない領域に動作完了時アドレス保存領域、処理結果保存領域、及び、アクセスログ保存領域が定義されている。そして、リセット制御回路42は、終了シーケンスの外部リセット処理では、終了シーケンス中にリセットされる領域のみを初期化する。終了シーケンスの外部リセット処理おいてリセットされない領域は、例えば、レジスタ群32に格納されるレジスタ設定値の1つとして指定される。レジスタ群32についても、終了シーケンス中にリセットされない領域と、リセットされる領域とを定義することで、残すべき処理結果をリセット制御回路42による初期化処理で初期化されないようにすることが可能である。また、レジスタ群32のうち残すべき処理結果を、共有メモリ21上のアクセス許可範囲内のリセットされない領域に保存してもよい。
【0050】
ハードウェアIPは、複数のアプリケーションにより利用されることがある。このようなハードウェアIPでは、前の処理に利用したレジスタ設定値或いは処理結果が残っていると、残った情報により後でハードウェアIPを利用するアプリケーションの誤動作を引き起こす、或いは、残った情報をきっかけにアプリケーション間でハッキングが可能になる等の不具合が生じる。
【0051】
しかしながら、実施の形態2にかかるハードウェアIP22aでは、ハードウェアIP22aの起動時及び終了時に利用していた情報を初期化する。これにより、実施の形態2にかかるハードウェアIP22aを有する半導体装置では、アプリケーション間のデータ干渉による不具合の回避、及び、ハッキングの可能性の低減を実現することができる。
【0052】
特に、実施の形態2にかかるハードウェアIP22aに設けられる内部メモリ41は、CPU10が認識するメモリ空間上に定義されないメモリ空間となる。この内部メモリ41は、CPU10に認識されないため、通常はリセットすることができない。しかしながら、実施の形態2にかかるハードウェアIP22aでは、この内部メモリ41の初期化を実行することができる。これにより、内部メモリ41に残った情報による不具合を回避することができる。
【0053】
実施の形態3
実施の形態3では、実施の形態1にかかる半導体装置1の別の形態となる半導体装置2について説明する。なお、実施の形態3の説明において、実施の形態1と同じ構成要素については、実施の形態1と同じ符号を付して説明を省略する。
【0054】
図13に実施の形態3にかかる半導体装置2のブロック図を示す。
図13に示すように、実施の形態3にかかる半導体装置2は、実施の形態1にかかる半導体装置1にメモリ管理ユニット51を追加したものである。メモリ管理ユニット51は、CPU10で実行されるプログラム毎にアクセス範囲を制御する。
【0055】
図14に実施の形態3にかかる半導体装置2におけるメモリ配置とアクセス許可範囲との関係の一例を説明する図を示す。
図14に示すように、実施の形態3にかかる半導体装置2では、メモリ管理ユニット51により、CPU10で実行されるプログラムのうち機能安全アプリケーションに対しては全てのメモリ空間にアクセスを許可する、一方、CPU10で実行されるプログラムのうち非機能安全アプリケーションに対しては、メモリ空間のうち機能安全アプリケーションに割り当てられた領域をメモリ管理ユニット51によりアクセス不可とすることができる。
【0056】
上記説明より、実施の形態3にかかる半導体装置2では、メモリ管理ユニット51によりアプリケーション毎にアクセス許可範囲を設定することができる。実施の形態3にかかる半導体装置2は、アプリケーション間の干渉を防止することで、実施の形態1にかかる半導体装置1よりも信頼性を高めることができる。
【0057】
実施の形態4
実施の形態4では、実施の形態1にかかるハードウェアIP22の別の形態となるハードウェアIP22bを説明する。なお、実施の形態4にかかる半導体装置は、実施の形態3にかかる半導体装置2のハードウェアIP22をハードウェアIP22bに置き換えたものとして説明するが、メモリ管理ユニット51を有していなくてもハードウェアIP22bを利用することは可能である。
【0058】
図15に実施の形態4にかかるハードウェアIP22bのブロック図を示す。
図15に示すようにハードウェアIP22bは、実施の形態1にかかるハードウェアIP22に動作パラメータ読込部61を追加したものである。動作パラメータ読込部61は、共有メモリ21のアクセス許可範囲内に設定されたパラメータ設定領域に格納された動作パラメータを読み込む。また、実施の形態4にかかるメモリアクセスコマンド生成部33は、パラメータ読込部61から与えられた動作パラメータに基づき共有メモリに対するアクセスアドレスを生成する。
【0059】
実施の形態4にかかる半導体装置は、ハードウェアIP22bがCPU10のアプリケーションから指示された処理単位毎に異なるメモリ範囲をアクセス許可されて利用する。また、ハードウェアIP22bがCPU10のアプリケーションから指示された処理を実行している最中に利用するワークメモリを共有メモリ21に格納された動作パラメータにて指定する。
【0060】
そこで、
図16に実施の形態4にかかる半導体装置におけるメモリ配置とアクセス許可範囲との関係を説明する図を示す。
図16に示す例は、ハードウェアIP22bを動画再生に利用されるものである。この動画再生処理では、フレーム毎に画像の復号を行う必要があり、ハードウェアIP22bはこの復号処理を行うものとする。また、
図16に示す例では、ハードウェアIP22bがアプリケーションAPPaにより利用されるものである。さらに、
図16に示す例は、ハードウェアIP22bがメモリ管理ユニット51により設定されるアプリケーションAPPaのアクセス許可範囲のうちフレーム0処理時のアクセス許可範囲を利用して復号処理を行うものである。
【0061】
図16に示すように、ハードウェアIP22bが利用するアクセス許可範囲は、ハードウェアIP22bのレジスタ群32に設定されるアクセス許可範囲となる。つまり、ハードウェアIP22bのレジスタ群32に格納されるアクセス許可範囲アドレス値は、メモリ管理ユニット51においてハードウェアIP22bを利用するプログラムに許可されたメモリ管理領域内のアドレス値を有する。
【0062】
そして、実施の形態4にかかる半導体装置では、ハードウェアIP22bのアクセス許可範囲内にワークメモリ0の先頭アドレス及びワークメモリ1の先頭アドレスが格納される。このワークメモリの先頭アドレスは、アプリケーションAPPaによりアクセス許可範囲内のアドレスが設定される。そして、ハードウェアIP22bは、動作パラメータ読込部61により、ワークメモリの先頭アドレスをハードウェアIP22bの処理単位毎に読み出し、アクセス許可範囲内のアドレスをワークメモリとして利用する。
【0063】
上記説明より、実施の形態4にかかる半導体装置では、ハードウェアIP22bが利用する共有メモリ21上のワークメモリを、アプリケーションAPPaから自由に設定することが可能となる。一方で、ワークメモリの先頭アドレスを共有メモリ21上に設定することから、共有メモリ21の故障やアプリケーションAPPaの不具合により不正なアドレスを動作パラメータ読込部61が読み込み、さらに不正なアドレスがMMUにより設定されたアクセス許可範囲内であった場合には、異なるフレームでアクセス許可されたメモリ範囲を破壊する危険性がある。その場合でも、実施の形態4にかかる半導体装置は、メモリ保護部34によりフレーム毎に設定されたアクセス許可範囲外にアクセスし、異なるフレームで利用されるメモリ範囲を破壊することはない。これにより、実施の形態4にかかる半導体装置は、ハードウェアIP22bが利用する共有メモリ21条のワークメモリの配置に高い自由度を持ちながら、CPU10上で動作するアプリケーションの不具合、或いは、ハッキング等に起因してハードウェアIP22bが異なるフレームで利用するメモリ領域に保持されているデータを破壊してしまうことを防止することができる。
【0064】
また、実施の形態4にかかる半導体装置は、メモリ管理ユニット51により設定されるハードウェアIP22bを利用するプログラムにアクセスが許可されるメモリ管理領域内に、さらにハードウェアIP22bのアクセス許可範囲を設定する。これにより、ハードウェアIP22bを利用するプログラム、又は、ハードウェアIP22bを利用するプログラムにより用いられる他のハードウェアIPによる共有メモリ21上の情報の破壊を防止することができる。
【0065】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。例えば、上記説明では、機能安全アプリケーションと非機能安全アプリケーションとを用いた説明をしたが、機能安全アプリケーションと非機能安全アプリケーションとをホストOSとゲストOSに置き換えることもできる。