(57)【特許請求の範囲】
【請求項１】
プログラムを実行する主演算部と、
前記主演算部で実行されるプログラムの一部の処理を実行する副演算部と、
前記主演算部と前記副演算部からのアクセスを受ける共有メモリと、を有し、
前記副演算部は、
前記主演算部から与えられるアクセス許可範囲アドレス値を格納するレジスタと、
前記主演算部から与えられる動作命令に応じて所定の処理を行う情報処理部と、
前記情報処理部から前記共有メモリに発せられたアクセス要求のうち、前記アクセス許可範囲アドレス値により指定されたアクセス許可範囲内に対するアクセス要求を前記共有メモリに与え、前記アクセス許可範囲アドレス値により指定されたアクセス許可範囲外に対するアクセス要求を遮断するメモリ保護部と、
を有する半導体装置。
【請求項２】
前記主演算部では、前記プログラムとして高い信頼性の信頼済みプログラムと信頼済みプログラムよりも信頼性が低い信頼済みでないプログラムとが実行され、前記副演算部の前記レジスタに対する前記アクセス許可範囲アドレス値の格納処理は、前記信頼済みプログラムにより行われる請求項１に記載の半導体装置。
【請求項３】
前記主演算部は、前記副演算部の前記レジスタに対する前記アクセス許可範囲アドレス値の格納処理を前記副演算部の起動前に行う請求項１に記載の半導体装置。
【請求項４】
前記メモリ保護部は、前記アクセス許可範囲アドレス値により指定されたアクセス許可範囲外に対するアクセス要求を検出した場合には、前記主演算部にエラー通知を行い、
前記主演算部は、前記エラー通知に応じて前記副演算部の動作停止処理、前記副演算部を利用するプログラムの停止処理の少なくとも１つを割込処理として実行する請求項１に記載の半導体装置。
【請求項５】
前記副演算部は、前記主演算部が利用するメモリ空間上にメモリ空間が定義されず、前記副演算部のみが利用可能な内部メモリと、
前記レジスタ、前記情報処理部、前記メモリ保護部、前記内部メモリ、及び、前記共有メモリを初期化する初期化処理を行うリセット制御回路と、を有し、
前記リセット制御回路は、前記副演算部の起動時及び終了時に前記初期化処理を行う請求項１に記載の半導体装置。
【請求項６】
前記リセット制御回路は、前記アクセス許可範囲のうち前記主演算部から指定された特定アクセス許可範囲については前記初期化処理を行わない請求項５に記載の半導体装置。
【請求項７】
前記主演算部で実行されるプログラム毎にアクセス範囲を制御するメモリ管理ユニットを更に有する請求項１に記載の半導体装置。
【請求項８】
前記副演算部の前記レジスタに格納される前記アクセス許可範囲アドレス値は、前記メモリ管理ユニットにおいて前記副演算部を利用するプログラムに許可されたメモリ管理領域内のアドレス値を有する請求項７に記載の半導体装置。
【請求項９】
前記副演算部は、
前記共有メモリの前記アクセス許可範囲内に設定されたパラメータ設定領域に格納された動作パラメータを読み込むパラメータ読込部と、
前記パラメータ読込部から与えられた前記動作パラメータに基づき前記共有メモリに対するアクセスアドレスを生成するアクセスアドレス生成部と、を更に有する請求項１に記載の半導体装置。
【請求項１０】
前記共有メモリは、前記主演算部及び前記副演算部とは別の半導体チップ上に設けられる請求項１に記載の半導体装置。
【請求項１１】
プログラムを実行する主演算部と、
前記主演算部で実行されるプログラムの一部の処理を実行し、前記主演算部から与えられるアクセス許可範囲アドレス値を格納するレジスタを含む副演算部と、
前記主演算部と前記副演算部からのアクセスを受ける共有メモリと、を有する半導体装置におけるメモリアクセス制御方法であって、
前記副演算部は、
前記主演算部から与えられる動作命令に応じて所定の処理を行い、
前記所定の処理に応じて前記共有メモリに発せられたアクセス要求のうち、前記アクセス許可範囲アドレス値により指定されたアクセス許可範囲内に対するアクセス要求を前記共有メモリに与え、前記アクセス許可範囲アドレス値により指定されたアクセス許可範囲外に対するアクセス要求を遮断する半導体装置のメモリアクセス制御方法。
【請求項１２】
前記主演算部では、前記プログラムとして高い信頼性の信頼済みプログラムと信頼済みプログラムよりも信頼性が低い信頼済みでないプログラムとが実行され、前記副演算部の前記レジスタに対する前記アクセス許可範囲アドレス値の格納処理は、前記信頼済みプログラムにより行われる請求項１１に記載の半導体装置のメモリアクセス制御方法。
【請求項１３】
前記主演算部は、前記副演算部の前記レジスタに対する前記アクセス許可範囲アドレス値の格納処理を前記副演算部の起動前に行う請求項１１に記載の半導体装置のメモリアクセス制御方法。
【請求項１４】
前記副演算部は、前記アクセス許可範囲アドレス値により指定されたアクセス許可範囲外に対するアクセス要求を検出した場合には、前記主演算部にエラー通知を行い、
前記主演算部は、前記エラー通知に応じて前記副演算部の動作停止処理、前記副演算部を利用するプログラムの停止処理の少なくとも１つを割込処理として実行する請求項１１に記載の半導体装置のメモリアクセス制御方法。
【請求項１５】
前記副演算部は、前記主演算部が利用するメモリ空間上にメモリ空間が定義されず、前記副演算部のみが利用可能な内部メモリを有し、
前記副演算部の起動時及び終了時に前記内部メモリの初期化処理を行う請求項１１に記載の半導体装置のメモリアクセス制御方法。
【請求項１６】
前記副演算部は、前記共有メモリ上の前記アクセス許可範囲のうち前記主演算部から指定された特定アクセス許可範囲については前記初期化処理を行わない請求項１５に記載の半導体装置のメモリアクセス制御方法。
【請求項１７】
前記副演算部は、
前記共有メモリの前記アクセス許可範囲内に設定されたパラメータ設定領域に格納された動作パラメータを読み込み、
読み出した前記動作パラメータに基づき前記共有メモリに対するアクセスアドレスを生成する請求項１１に記載の半導体装置のメモリアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置及びそのメモリアクセス制御方法に関し、例えばプログラムを実行する主演算部と、前記プログラムの一部の処理を実行する副演算部と、主演算部と副演算部とにより共有される共有メモリと、を有する半導体装置及びそのメモリアクセス制御方法に関する。
【背景技術】
【０００２】
プログラムに基づき各種処理を行う半導体装置では、１つの半導体装置上で複数のプログラムが実行されることがある。このような半導体装置では、複数のプログラム間で利用するメモリ空間が干渉することを防ぐメモリ保護機構が求められる。そこで、メモリ保護機構の一例が特許文献１に開示されている。
特許文献１に記載の半導体装置は、制御対象装置の駆動制御を行う駆動制御部と前記駆動制御に係る安全制御を行う安全制御部とが１つのプロセッサ上に備えられる安全制御システムであって、予め駆動制御部、安全制御部それぞれに係るデータ格納領域として所定の記憶領域が割り当てられており、駆動制御部がアクセス不可の記憶領域として、安全制御部に割り当てられた記憶領域が登録されるメモリ保護情報記憶手段と、駆動制御部によるメモリアクセス実行の際、当該アクセス先とメモリ保護情報記憶手段に登録された登録情報を参照し、当該アクセス先が前記アクセス不可の記憶領域であった場合、駆動制御部による安全制御部に割り当てられた記憶領域へのメモリアクセスを阻止するメモリ保護手段と、を備える。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−４８８４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
半導体装置では、多様な処理を行う主演算部に加えて、当該主演算部で実行されるプログラムの一部の特定の処理を高速に実行する副演算部を備えることで、処理速度を向上させている。また、主演算部と副演算部とを有する半導体装置では、主演算部と副演算部とで共用される共用メモリを有する。このような半導体装置では、処理速度を高めるために副演算部が共用メモリに直接アクセスを行う。ここで、特許文献１に記載の技術では、主演算部上で発生する共用メモリに対するメモリ保護を行うことができる。しかしながら、主演算部も利用する共用メモリに副演算部が直接アクセスを行う場合、特許文献１の起技術では、副演算部による共用メモリへのアクセスに対するメモリ保護を行うことが出来ない問題が生じる。
【０００５】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００６】
一実施の形態によれば、半導体装置及びそのメモリアクセス制御方法は、主演算部で実行されるプログラムの一部の処理を実行する副演算部と、主演算部と副演算部とにより共用される共用メモリを有し、副演算部が、主演算部から与えられるアクセス許可範囲アドレス値に基づき副演算部で実行される処理に起因して発生する共用メモリに対するアクセスを許可又は不許可とするメモリ保護部を有する。
【発明の効果】
【０００７】
一実施の形態によれば、半導体装置及びそのメモリアクセス制御方法は、副演算部から共用メモリへのアクセスに対してメモリ保護を行うことができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１にかかる半導体装置のブロック図である。
【図２】実施の形態１にかかるハードウェアＩＰのブロック図である。
【図３】実施の形態１にかかる半導体装置において、信頼済みでないプログラムから利用要求があった時のメモリ配置とアクセス許可範囲との関係を説明する図である。
【図４】実施の形態１にかかる半導体装置において、信頼済みのプログラムから利用要求があった時のメモリ配置とアクセス許可範囲との関係を説明する図である。
【図５】実施の形態１にかかるハードウェアＩＰの起動シーケンス及びレジスタ設定シーケンスを説明するシーケンス図である。
【図６】実施の形態１にかかるハードウェアＩＰのメモリアクセスシーケンスの第１の例を説明するシーケンス図である。
【図７】実施の形態１にかかるハードウェアＩＰのメモリアクセスシーケンスの第２の例を説明するシーケンス図である。
【図８】実施の形態１にかかるハードウェアＩＰにおいてメモリアクセス違反が生じ他場合の半導体装置の処理シーケンスを説明するシーケンス図である。
【図９】実施の形態２にかかるハードウェアＩＰのブロック図である。
【図１０】実施の形態２にかかるハードウェアＩＰの起動シーケンスを説明するシーケンス図である。
【図１１】実施の形態２にかかるハードウェアＩＰの終了シーケンスを説明するシーケンス図である。
【図１２】実施の形態２にかかるハードウェアＩＰに設定されたアクセス許可範囲のメモリ配置を説明する図である。
【図１３】実施の形態３にかかる半導体装置のブロック図である。
【図１４】実施の形態３にかかる半導体装置におけるメモリ配置とアクセス許可範囲との関係を説明する図である。
【図１５】実施の形態４にかかるハードウェアＩＰのブロック図である。
【図１６】実施の形態４にかかる半導体装置におけるメモリ配置とアクセス許可範囲との関係を説明する図である。
【発明を実施するための形態】
【０００９】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１０】
実施の形態１
図１に実施の形態１にかかる半導体装置１のブロック図を示す。図１に示すように、実施の形態１にかかる半導体装置１は、主演算装置（例えば、ＣＰＵ１０）、共有メモリ２１、副演算装置（例えば、ハードウェアＩＰ２２、２３）を有する。この明細書において、副演算装置(ハードウェアＩＰ)とは、演算装置の内部に処理命令を格納するレジスタを有する演算装置であって、レジスタに設定された処理命令に基づいて処理を行う演算装置のことを言う。処理命令は、特定の処理内容を表すよう予め定義された数値であっても構わない。このとき、レジスタの値は、例えば主演算装置によって設定される。また、図１では、副演算装置として、それぞれが同一構成となる複数のハードウェアＩＰを有する例を示したが、ハードウェアＩＰの構成は、異なる構成であっても構わない。
【００１１】
ＣＰＵ１０は、プログラムを実行する。半導体装置１では、ＣＰＵ１０で実行されるプログラムによりハードウェアＩＰ２２、２３及び共有メモリ２１へのアクセスが生じる。ＣＰＵ１０は、プログラムを実行する演算部１１を有する。図１では図示を省略したが、半導体装置１は、メモリコントローラ、内部メモリ、入出力インタフェース回路等を含み、それらはＣＰＵ１０に含まれても良い。図１に示す例では、演算部１１上でオペレーティングシステム（以下、ＯＳと称す）と、アプリケーションプログラムＡＰＰａ、ＡＰＰｂとが実行されている。
【００１２】
ＯＳ及びアプリケーションプログラムＡＰＰａ、ＡＰＰｂは、高いレベルの検証が行われ、機能安全上若しくはセキュリティ上の保護が十分になされている信頼性が高いプログラム（以下、信頼済みプログラムと称す）と、検証のレベルが低く、機能安全上もしくはセキュリティ上の保護が十分になされていないプログラム（以下、信頼済みでないプログラム）が混在している。信頼済みプログラムであるか、それとも信頼済みでないプログラムであるかの情報はプログラムの中に予め含まれている。その基準は、たとえば国際標準化機構に定める基準に則って定められる。なお、実施の形態ではＯＳが１つの場合で説明を行っているが、実際にはこの限りではなく、複数のＯＳが存在していても良い。
【００１３】
信頼済みプログラムの一例としては、例えば、自動車における自動運転アプリケーションなどがあげられる。一方、信頼済みでないプログラムの一例としては動画再生アプリケーションなどがあげられる。信頼済みプログラムと信頼済みでないプログラムが同じＣＰＵ上で実行されるとき、信頼済みでないプログラムと信頼済みプログラムとの間でデータ干渉が起こらないようにする必要がある。なお、自動車の例をあげたが、実際にはこれらのアプリケーションに限定されるものでない。
【００１４】
共有メモリ２１は、例えば、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性のメモリ、或いは、ＦＬＡＳＨメモリ等の不揮発性のメモリである。共有メモリ２１は、ＣＰＵ１０とハードウェアＩＰ２２、２３からのアクセスを受ける。なお、共有メモリ２１は、半導体装置１が利用するものであれば良く、ＣＰＵ１０及びハードウェアＩＰ２２、２３とは別の半導体チップ上に設けられていても良い。
【００１５】
ハードウェアＩＰ２２、２３は、ＣＰＵ１０で実行されるプログラムの一部の処理を実行するハードウェアである。ハードウェアＩＰ２２、２３は、例えば、符号化画像の復号処理、画像認識処理の一処理として行われる画像変換処理、特徴点抽出処理等の特定の処理を専ら行う。図１では、ハードウェアＩＰ２２、ハードウェアＩＰ２３は同じ構成であるため、ハードウェアＩＰ２２を例にハードウェアＩＰの構成を説明する。
【００１６】
そこで、図２に実施の形態１にかかるハードウェアＩＰ２２のブロック図を示す。図２に示すように、ハードウェアＩＰ２２は、情報処理部３１、レジスタ群３２、メモリアクセスコマンド生成部３３、メモリ保護部３４を有する。
【００１７】
情報処理部３１は、ＣＰＵ１０から与えられる動作命令に応じて所定の処理を行う。レジスタ群３２は、複数のレジスタを有する。図２に示す例では、複数のレジスタのうち１つのレジスタにＣＰＵ１０から与えられる処理命令を格納する。この処理命令は、ハードウェアＩＰ２２が如何なる動作を行うものかを指示するものである。また、複数のレジスタのうち２つのレジスタにＣＰＵ１０から与えられるアクセス許可範囲アドレス値を格納する。また、このアクセス許可範囲アドレス値は、アクセス許可範囲の先頭のアドレスを示すアクセス許可先頭アドレスと、アクセス許可範囲の最終のアドレスを示すアクセス許可最終アドレスと、を含む。また、レジスタ群３２に含まれるレジスタには、情報処理部３１が処理すべきデータ、データ処理に用いる動作パラメータ等も格納される。なお、ハードウェアＩＰ２２、２３では、アクセス許可先頭アドレスとアクセス許可最終アドレスを格納するレジスタの代わりに、アクセス許可先頭アドレスとアクセス許可領域サイズを格納するレジスタによりアクセス許可範囲を指定することもできる。
【００１８】
メモリアクセスコマンド生成部３３は、情報処理部３１でアクセス要求が発生した際に、そのアクセス要求に対応する共有メモリ２１のアドレスを生成し、当該アクセスアドレスを付したアクセス要求を出力する。例えば、情報処理部３１で共有メモリ２１に格納されている画像の特定座標の画素値へのアクセス要求が発生した際に、メモリアクセスコマンド生成部３３は情報処理部３１から座標にて指定された当該画素が格納されている共有メモリ２１のアドレスを生成する。
【００１９】
メモリ保護部３４は、情報処理部３１から共有メモリ２１に発せられたアクセス要求のうち、アクセス許可範囲アドレス値により指定されたアクセス許可範囲内に対するアクセス要求を共有メモリに与え、アクセス許可範囲アドレス値により指定されたアクセス許可範囲外に対するアクセス要求を遮断する。なお、ハードウェアＩＰ２２では、メモリ保護部３４が受信するアクセス要求はメモリアクセスコマンド生成部３３から出力される。
【００２０】
また、メモリ保護部３４は、アクセス許可範囲アドレス値により指定されたアクセス許可範囲外に対するアクセス要求を検出した場合には、ＣＰＵ１０にエラー通知ＥＲＲ１を出力する。そして、ＣＰＵ１０は、エラー通知ＥＲＲ１に応じてハードウェアＩＰ２２の動作停止処理、ハードウェアＩＰ２２を利用するプログラムの停止処理の少なくとも１つを割込処理として実行する。
【００２１】
上記したように、実施の形態１にかかる半導体装置１では、ハードウェアＩＰ２２に、情報処理部３１から共有メモリ２１に発せられたアクセス要求を有効に共有メモリ２１に与えるか否を、ＣＰＵ１０により設定されたアクセス許可範囲アドレス値に基づき判断する。そこで、図３に実施の形態１にかかる半導体装置１におけるメモリ配置とアクセス許可範囲との関係を説明する図を示す。
【００２２】
図３及び図４では、半導体装置１上のメモリ及びレジスタに対する利用権限を示すメモリ空間をメモリ配置として示した。実施の形態１にかかる半導体装置１では、ＣＰＵ１０が信頼済みプログラム（例えば、機能安全アプリケーション）と信頼済みでないプログラム（例えば、非機能安全アプリケーション）を実行するため、ＣＰＵ１０は最も高い信頼性が要求されるメモリ空間であるシステム領域を含む全メモリ空間にアクセスが可能である。一方、ハードウェアＩＰについては、処理命令が非機能安全アプリケーションによる命令である場合、図３に示すように非機能安全アプリケーションに許可されたアクセス範囲のうちレジスタ群３２に格納されたアクセス許可先頭アドレスからアクセス許可最終アドレスまでのメモリ空間にしかアクセスが許可されない。
【００２３】
処理命令が機能安全アプリケーションによる命令である場合も同様に、図４に示すように機能安全アプリケーションに許可されたアクセス範囲のうちレジスタ群３２に格納されたアクセス許可先頭アドレスからアクセス許可最終アドレスまでのメモリ空間にしかアクセスが許可されない。
【００２４】
続いて、実施の形態１にかかる半導体装置１の動作について説明する。以下の説明では、半導体装置１の動作を、ハードウェアＩＰの起動動作及びハードウェアＩＰのレジスタ設定動作、ハードウェアＩＰのメモリアクセス動作、及び、メモリアクセス違反発生の動作に分けて説明を行う。
【００２５】
まず、図５に実施の形態１にかかるハードウェアＩＰの起動シーケンス及びレジスタ設定シーケンスを説明するシーケンス図を示す。図５に示す例における半導体装置１では、アプリケーションが起動した後にハードウェアＩＰに対する利用要求を発生させる。そして、アプリケーションは、ハードウェアＩＰの利用要求の発生に伴い、ハードウェアＩＰ２２に対してレジスタ設定命令を出力する。
【００２６】
アプリケーションは、ハードウェアＩＰの動作パラメータの１つとしてアクセス許可範囲アドレス値を含むレジスタ設定命令を機能安全アプリケーション（図５では、ＯＳと記載）に出力する。ＯＳは、アプリケーションからレジスタ設定命令を受け取ったことに応じて、ハードウェアＩＰにレジスタ設定命令を出力する。
【００２７】
そして、ハードウェアＩＰは、レジスタ設定命令に含まれる動作パラメータをレジスタ群３２に保存する。また、ハードウェアＩＰは、レジスタ群３２に格納された動作パラメータに含まれるアクセス許可範囲アドレス値に基づきメモリ保護部３４にアクセス許可範囲を設定する。
【００２８】
そして、アプリケーションは、ハードウェアＩＰに対する具体的な処理指示を生成し、この処理内容を処理命令としてハードウェアＩＰに与える。ハードウェアＩＰは、この処理命令に応じて処理を開始する。
【００２９】
上述したように、ＣＰＵ１０は、ハードウェアＩＰのレジスタ群３２に対するアクセス許可範囲アドレス値の格納処理をハードウェアＩＰの起動前に行う。
【００３０】
続いて、図６に実施の形態１にかかるハードウェアＩＰのメモリアクセスシーケンスの第１の例を説明するシーケンス図を示す。図６に示すように、実施の形態１にかかるハードウェアＩＰは、情報処理部３１における処理によりメモリアクセスが発生した場合、情報処理部３１がメモリアクセスコマンド生成部３３にメモリアクセス要求を出力し、メモリアクセスコマンド生成部３３がアクセスアドレスを生成する。そして、ハードウェアＩＰは、メモリアクセスコマンド生成部３３で生成されたアクセスアドレスを用いて共有メモリ２１へのアクセスを行う。このとき、ハードウェアＩＰでは、メモリアクセスコマンド生成部３３で生成されたアクセスアドレスがアクセス許可範囲内にあるときは、アクセス要求を共有メモリ２１に出力する。一方、ハードウェアＩＰでは、メモリアクセスコマンド生成部３３で生成されたアクセスアドレスがアクセス許可範囲外にあるときは、アクセス要求を遮断してエラー通知ＥＲＲ１をＣＰＵ１０に通知する。
【００３１】
また、図７に実施の形態１にかかるハードウェアＩＰのメモリアクセスシーケンスの第２の例を説明するシーケンス図を示す。図７に示すように、ハードウェアＩＰのメモリアクセスシーケンスの第２の例では、メモリアクセスコマンド生成部３３で生成されたアクセスアドレスがアクセス許可範囲外にあるときのメモリ保護部３４の動作が第１の例と異なる。第２の例では、メモリ保護部３４は、メモリアクセスコマンド生成部３３で生成されたアクセスアドレスがアクセス許可範囲外にある、メモリアクセスコマンド生成部３３から与えられたアクセスアドレスをアクセス範囲内のアドレスに丸め込む処理を行った後にアクセス要求を共有メモリ２１に出力する。また、第２の例においても、メモリ保護部３４は、メモリアクセス違反が生じた場合にはエラー通知ＥＲＲ１をＣＰＵ１０に通知する。
【００３２】
ハードウェアＩＰのメモリアクセスシーケンスの第１の例及び第２の例に示すように、メモリアクセス違反が生じた場合のメモリ保護部３４の処理は、仕様に応じて様々なアクセス要求の遮断方法が考えられる。
【００３３】
続いて、図８に実施の形態１にかかるハードウェアＩＰにおいてメモリアクセス違反が生じた場合の半導体装置の処理シーケンスを説明するシーケンス図を示す。図８に示すように、実施の形態１にかかる半導体装置１は、ハードウェアＩＰからＣＰＵ１０にエラー通知ＥＲＲ１が通知された場合には、エラー通知ＥＲＲ１の割り込み処理Ｐ１〜Ｐ３の少なくとも１つを行うことで発生原因となった処理を停止させる。
【００３４】
割り込み処理Ｐ１では、ＯＳがハードウェアＩＰに対するリセット命令を発行する。ハードウェアＩＰは、このリセット命令に基づき情報処理部３１、レジスタ群３２、メモリアクセスコマンド生成部３３、メモリ保護部３４を初期状態に戻す初期化処理を実行し、待機状態に移行する。
【００３５】
割り込み処理Ｐ２では、ＯＳがハードウェアＩＰを利用するアプリケーションに対して処理停止命令を発行する。処理停止命令を受けたアプリケーションは、その時点での処理状態にかかわらず終了処理を実行し、処理を停止する。
【００３６】
割り込み処理Ｐ３では、ＯＳがハードウェアＩＰを利用するアプリケーションに関連するタスクを、その時点の処理状態にかかわらずに終了させる。図８に示す例では、割り込み処理Ｐ１〜Ｐ３が終了した時点でＯＳがエラー通知ＥＲＲ１に応じて実行した割り込み処理を終了させる。
【００３７】
上記の説明より、実施の形態１にかかる半導体装置１では、ハードウェアＩＰに設けられるメモリ保護部３４がＣＰＵ１０から与えられるメモリアクセス範囲内のアクセス要求のみを共有メモリ２１に出力する。これにより、実施の形態１にかかる半導体装置１では、ＣＰＵ１０からハードウェアＩＰのアクセス範囲を制限することができる。そして、実施の形態１にかかる半導体装置１では、ハードウェアＩＰのアクセス範囲を制限することで、ＣＰＵ１０上で動作するアプリケーションの不具合、或いは、ハッキング等に起因してハードウェアＩＰが他のアプリケーション利用領域に保持されているデータを破壊してしまうことを防止することができる。
【００３８】
また、実施の形態１にかかる半導体装置１では、ＣＰＵ１０で実行されるプログラムの一部の処理をハードウェアＩＰで処理することで、高い処理性能を実現することができる。そして、上記のハードウェアＩＰにおけるメモリ保護機構を有することで、実施の形態１にかかる半導体装置１は、高い処理性能と高い信頼性を共に実現することができる。
【００３９】
実施の形態２
実施の形態２では、ハードウェアＩＰ２２の別の形態となるハードウェアＩＰ２２ａについて説明する。なお、実施の形態２の説明において、実施の形態１と同じ構成要素については、実施の形態１と同じ符号を付して説明を省略する。
【００４０】
図９に実施の形態２にかかるハードウェアＩＰ２２ａのブロック図を示す。図９に示すように、実施の形態２にかかるハードウェアＩＰ２２ａは、実施の形態１にかかるハードウェアＩＰ２２に対して、内部メモリ４１及びリセット制御回路４２を追加したものである。
【００４１】
内部メモリ４１は、ＣＰＵ１０が利用するメモリ空間上にメモリ空間が定義されず、ハードウェアＩＰ２２ａのみが利用可能なメモリである。内部メモリ４１は例えばＳＲＡＭ（Static Random Access Memory）である。
【００４２】
リセット制御回路４２は、レジスタ群３２、情報処理部３１、メモリ保護部３４、内部メモリ４１、及び、共有メモリ２１を少なくとも初期化する初期化処理を行う。また、リセット制御回路４２は、ハードウェアＩＰ２２ａの起動時及び終了時の少なくともどちらかで初期化処理を行う。図９に示す例では、リセット制御回路４２は、ＣＰＵ１０から発せられる処理命令が処理命令格納レジスタに格納したことに応じて起動命令ＷＫＵが発せられたと認識して、当該起動命令ＷＫＵに基づき起動時の初期化処理を行い、情報処理部３１が出力する終了通知信号ＥＮＤ又はＣＰＵ１０から発せられる停止命令ＳＴＰに基づき終了時の初期化処理を行う。また、図９に示す例では、リセット制御回路４２は、初期化信号ＲＳＴ１により内部メモリ４１を初期化し、初期化信号ＲＳＴ２により情報処理部３１を初期化し、初期化信号ＲＳＴ３によりメモリアクセスコマンド生成部３３を初期化し、初期化信号ＲＳＴ４によりメモリ保護部３４を初期化し、初期化信号ＲＳＴ５によりレジスタ群３２を初期化する。また、リセット制御回路４２は、共有メモリ２１を初期化する際にレジスタ群３２に格納されたアクセス許可範囲アドレス値を参照する。
【００４３】
続いて、実施の形態２にかかるハードウェアＩＰ２２ａの動作について説明する。そこで、図１０に実施の形態２にかかるハードウェアＩＰの起動シーケンスを説明するシーケンス図を示す。
【００４４】
図１０に示すように、ＣＰＵ１０は、レジスタ設定命令をハードウェアＩＰ２２ａに与える。ハードウェアＩＰ２２ａは、レジスタ設定命令を受けて、レジスタ群３２にレジスタ設定値を保存する。また、ハードウェアＩＰ２２ａは、レジスタ群３２に格納されたレジスタ設定値に含まれるアクセス許可範囲アドレス値に基づきメモリ保護部３４にアクセス許可範囲を設定する。その後、ＣＰＵ１０は、処理命令をハードウェアＩＰに与える。
【００４５】
ハードウェアＩＰ２２ａは、ＣＰＵ１０から処理命令が通知されたことに応じて、まず内部リセット処理を実行する。この内部リセット処理では、内部メモリ４１、情報処理部３１を少なくともリセットする。その後、ハードウェアＩＰ２２ａのリセット制御回路４２は、レジスタ群３２に格納されたアクセス許可範囲アドレス値により指定されるアクセス許可範囲の共有メモリ２１に対して初期化処理を行う外部リセット処理を実行する。この外部リセット処理が完了した後、ハードウェアＩＰ２２ａは、処理命令に応じた処理を開始する。
【００４６】
続いて、図１１に実施の形態２にかかるハードウェアＩＰの終了シーケンスを説明するシーケンス図を示す。図１１では、ハードウェアＩＰ２２ａにおいて所定の処理が完了した後の終了シーケンスを示したが、ＣＰＵ１０からの停止命令ＳＴＰに基づき実行される終了シーケンスでも停止命令ＳＴＰに基づき動作終了処理以降の処理が行われるのみで実質的には同じ動作となる。
【００４７】
図１１に示すように、ハードウェアＩＰ２２ａは、情報処理部３１での処理が終了すると動作終了処理を開始する。この動作終了処理では、まず、ハードウェアＩＰ２２ａのリセット制御回路４２が、レジスタ群３２に格納されたアクセス許可範囲アドレス値により指定されるアクセス許可範囲の共有メモリ２１に対して初期化処理を行う外部リセット処理を実行する。その後、ハードウェアＩＰ２２ａは、少なくとも、内部メモリ４１、情報処理部３１、レジスタ群３２をリセットする内部リセット処理を実行する。そして、この内部リセット処理が完了したことに応じて、ハードウェアＩＰ２２ａは、処理完了通知をＣＰＵ１０に出力し、次の動作命令を待機する待機状態に移行する。
【００４８】
上記説明では、終了シーケンスでのリセット処理において、レジスタ群３２、及び、共有メモリ２１上のアクセス許可範囲に対応する領域全体を初期化する例を説明した。しかしながら、ハードウェアＩＰ２２ａの利用した処理を行う場合、ハードウェアＩＰ２２ａの動作終了後にアプリケーションがハードウェアＩＰ２２ａの処理結果を参照するために、処理結果を残す必要が生じる場合がある。このような場合、ハードウェアＩＰ２２ａは、残すべき処理結果をリセット制御回路４２による初期化処理で初期化されない領域に保存する必要がある。そこで、リセット制御回路４２が実施する外部リセット処理の別の例を図１２を参照して説明する。
【００４９】
図１２は実施の形態２にかかるハードウェアＩＰに設定されたアクセス許可範囲のメモリ配置を説明する図である。図１２に示す例では、アクセス許可先頭アドレスとアクセス許可終了アドレスとにより指定されるアクセス許可範囲がハードウェアＩＰ２２の終了シーケンス中にリセットされない領域と、リセットされる領域とに分けられる。ハードウェアＩＰ２２ａは、保存すべき情報を、例えば、終了シーケンス中にリセットされない領域に保存する。図１２に示す例では、終了シーケンス中にリセットされない領域に動作完了時アドレス保存領域、処理結果保存領域、及び、アクセスログ保存領域が定義されている。そして、リセット制御回路４２は、終了シーケンスの外部リセット処理では、終了シーケンス中にリセットされる領域のみを初期化する。終了シーケンスの外部リセット処理おいてリセットされない領域は、例えば、レジスタ群３２に格納されるレジスタ設定値の１つとして指定される。レジスタ群３２についても、終了シーケンス中にリセットされない領域と、リセットされる領域とを定義することで、残すべき処理結果をリセット制御回路４２による初期化処理で初期化されないようにすることが可能である。また、レジスタ群３２のうち残すべき処理結果を、共有メモリ２１上のアクセス許可範囲内のリセットされない領域に保存してもよい。
【００５０】
ハードウェアＩＰは、複数のアプリケーションにより利用されることがある。このようなハードウェアＩＰでは、前の処理に利用したレジスタ設定値或いは処理結果が残っていると、残った情報により後でハードウェアＩＰを利用するアプリケーションの誤動作を引き起こす、或いは、残った情報をきっかけにアプリケーション間でハッキングが可能になる等の不具合が生じる。
【００５１】
しかしながら、実施の形態２にかかるハードウェアＩＰ２２ａでは、ハードウェアＩＰ２２ａの起動時及び終了時に利用していた情報を初期化する。これにより、実施の形態２にかかるハードウェアＩＰ２２ａを有する半導体装置では、アプリケーション間のデータ干渉による不具合の回避、及び、ハッキングの可能性の低減を実現することができる。
【００５２】
特に、実施の形態２にかかるハードウェアＩＰ２２ａに設けられる内部メモリ４１は、ＣＰＵ１０が認識するメモリ空間上に定義されないメモリ空間となる。この内部メモリ４１は、ＣＰＵ１０に認識されないため、通常はリセットすることができない。しかしながら、実施の形態２にかかるハードウェアＩＰ２２ａでは、この内部メモリ４１の初期化を実行することができる。これにより、内部メモリ４１に残った情報による不具合を回避することができる。
【００５３】
実施の形態３
実施の形態３では、実施の形態１にかかる半導体装置１の別の形態となる半導体装置２について説明する。なお、実施の形態３の説明において、実施の形態１と同じ構成要素については、実施の形態１と同じ符号を付して説明を省略する。
【００５４】
図１３に実施の形態３にかかる半導体装置２のブロック図を示す。図１３に示すように、実施の形態３にかかる半導体装置２は、実施の形態１にかかる半導体装置１にメモリ管理ユニット５１を追加したものである。メモリ管理ユニット５１は、ＣＰＵ１０で実行されるプログラム毎にアクセス範囲を制御する。
【００５５】
図１４に実施の形態３にかかる半導体装置２におけるメモリ配置とアクセス許可範囲との関係の一例を説明する図を示す。図１４に示すように、実施の形態３にかかる半導体装置２では、メモリ管理ユニット５１により、ＣＰＵ１０で実行されるプログラムのうち機能安全アプリケーションに対しては全てのメモリ空間にアクセスを許可する、一方、ＣＰＵ１０で実行されるプログラムのうち非機能安全アプリケーションに対しては、メモリ空間のうち機能安全アプリケーションに割り当てられた領域をメモリ管理ユニット５１によりアクセス不可とすることができる。
【００５６】
上記説明より、実施の形態３にかかる半導体装置２では、メモリ管理ユニット５１によりアプリケーション毎にアクセス許可範囲を設定することができる。実施の形態３にかかる半導体装置２は、アプリケーション間の干渉を防止することで、実施の形態１にかかる半導体装置１よりも信頼性を高めることができる。
【００５７】
実施の形態４
実施の形態４では、実施の形態１にかかるハードウェアＩＰ２２の別の形態となるハードウェアＩＰ２２ｂを説明する。なお、実施の形態４にかかる半導体装置は、実施の形態３にかかる半導体装置２のハードウェアＩＰ２２をハードウェアＩＰ２２ｂに置き換えたものとして説明するが、メモリ管理ユニット５１を有していなくてもハードウェアＩＰ２２ｂを利用することは可能である。
【００５８】
図１５に実施の形態４にかかるハードウェアＩＰ２２ｂのブロック図を示す。図１５に示すようにハードウェアＩＰ２２ｂは、実施の形態１にかかるハードウェアＩＰ２２に動作パラメータ読込部６１を追加したものである。動作パラメータ読込部６１は、共有メモリ２１のアクセス許可範囲内に設定されたパラメータ設定領域に格納された動作パラメータを読み込む。また、実施の形態４にかかるメモリアクセスコマンド生成部３３は、パラメータ読込部６１から与えられた動作パラメータに基づき共有メモリに対するアクセスアドレスを生成する。
【００５９】
実施の形態４にかかる半導体装置は、ハードウェアＩＰ２２ｂがＣＰＵ１０のアプリケーションから指示された処理単位毎に異なるメモリ範囲をアクセス許可されて利用する。また、ハードウェアＩＰ２２ｂがＣＰＵ１０のアプリケーションから指示された処理を実行している最中に利用するワークメモリを共有メモリ２１に格納された動作パラメータにて指定する。
【００６０】
そこで、図１６に実施の形態４にかかる半導体装置におけるメモリ配置とアクセス許可範囲との関係を説明する図を示す。図１６に示す例は、ハードウェアＩＰ２２ｂを動画再生に利用されるものである。この動画再生処理では、フレーム毎に画像の復号を行う必要があり、ハードウェアＩＰ２２ｂはこの復号処理を行うものとする。また、図１６に示す例では、ハードウェアＩＰ２２ｂがアプリケーションＡＰＰａにより利用されるものである。さらに、図１６に示す例は、ハードウェアＩＰ２２ｂがメモリ管理ユニット５１により設定されるアプリケーションＡＰＰａのアクセス許可範囲のうちフレーム０処理時のアクセス許可範囲を利用して復号処理を行うものである。
【００６１】
図１６に示すように、ハードウェアＩＰ２２ｂが利用するアクセス許可範囲は、ハードウェアＩＰ２２ｂのレジスタ群３２に設定されるアクセス許可範囲となる。つまり、ハードウェアＩＰ２２ｂのレジスタ群３２に格納されるアクセス許可範囲アドレス値は、メモリ管理ユニット５１においてハードウェアＩＰ２２ｂを利用するプログラムに許可されたメモリ管理領域内のアドレス値を有する。
【００６２】
そして、実施の形態４にかかる半導体装置では、ハードウェアＩＰ２２ｂのアクセス許可範囲内にワークメモリ０の先頭アドレス及びワークメモリ１の先頭アドレスが格納される。このワークメモリの先頭アドレスは、アプリケーションＡＰＰａによりアクセス許可範囲内のアドレスが設定される。そして、ハードウェアＩＰ２２ｂは、動作パラメータ読込部６１により、ワークメモリの先頭アドレスをハードウェアＩＰ２２ｂの処理単位毎に読み出し、アクセス許可範囲内のアドレスをワークメモリとして利用する。
【００６３】
上記説明より、実施の形態４にかかる半導体装置では、ハードウェアＩＰ２２ｂが利用する共有メモリ２１上のワークメモリを、アプリケーションＡＰＰａから自由に設定することが可能となる。一方で、ワークメモリの先頭アドレスを共有メモリ２１上に設定することから、共有メモリ２１の故障やアプリケーションＡＰＰａの不具合により不正なアドレスを動作パラメータ読込部６１が読み込み、さらに不正なアドレスがＭＭＵにより設定されたアクセス許可範囲内であった場合には、異なるフレームでアクセス許可されたメモリ範囲を破壊する危険性がある。その場合でも、実施の形態４にかかる半導体装置は、メモリ保護部３４によりフレーム毎に設定されたアクセス許可範囲外にアクセスし、異なるフレームで利用されるメモリ範囲を破壊することはない。これにより、実施の形態４にかかる半導体装置は、ハードウェアＩＰ２２ｂが利用する共有メモリ２１条のワークメモリの配置に高い自由度を持ちながら、ＣＰＵ１０上で動作するアプリケーションの不具合、或いは、ハッキング等に起因してハードウェアＩＰ２２ｂが異なるフレームで利用するメモリ領域に保持されているデータを破壊してしまうことを防止することができる。
【００６４】
また、実施の形態４にかかる半導体装置は、メモリ管理ユニット５１により設定されるハードウェアＩＰ２２ｂを利用するプログラムにアクセスが許可されるメモリ管理領域内に、さらにハードウェアＩＰ２２ｂのアクセス許可範囲を設定する。これにより、ハードウェアＩＰ２２ｂを利用するプログラム、又は、ハードウェアＩＰ２２ｂを利用するプログラムにより用いられる他のハードウェアＩＰによる共有メモリ２１上の情報の破壊を防止することができる。
【００６５】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。例えば、上記説明では、機能安全アプリケーションと非機能安全アプリケーションとを用いた説明をしたが、機能安全アプリケーションと非機能安全アプリケーションとをホストＯＳとゲストＯＳに置き換えることもできる。
【符号の説明】
【００６６】
１、２  半導体装置
２  半導体装置
１０  ＣＰＵ
１１  演算部
２１  共有メモリ
２２、２２ａ、２２ｂ、２３  ハードウェアＩＰ
３１  情報処理部
３２  レジスタ群
３３  メモリアクセスコマンド生成部
３４  メモリ保護部
４１  内部メモリ
４２  リセット制御回路
５１  メモリ管理ユニット
６１  動作パラメータ読込部
ＥＲＲ１、ＥＲＲ２  エラー通知
ＲＳＴ１〜ＲＳＴ５  初期化信号
【図１】
0006758222.tif 000002
【図２】
0006758222.tif 000003
【図３】
0006758222.tif 000004
【図４】
0006758222.tif 000005
【図５】
0006758222.tif 000006
【図６】
0006758222.tif 000007
【図７】
0006758222.tif 000008
【図８】
0006758222.tif 000009
【図９】
0006758222.tif 000010
【図１０】
0006758222.tif 000011
【図１１】
0006758222.tif 000012
【図１２】
0006758222.tif 000013
【図１３】
0006758222.tif 000014
【図１４】
0006758222.tif 000015
【図１５】
0006758222.tif 000016
【図１６】
0006758222.tif 000017