(57)【要約】【課題】ＮＶメモリに格納された保護したいプログラムを、オペランドアクセスに対しては読み出し不可としつつ、命令フェッチに対しては高速にアクセス可能とする。【解決手段】リセット解除後、ＣＰＵコア３０からのアクセスに応じる前に、ＢＰモニタレジスタ１４はＦｌａｓｈモジュール２０の各ＢＰビット情報を保持している。ＲＡＭ転送処理部１２は、Ｆｌａｓｈモジュール２０内の保護対象ブロックのプログラムをＣＰＵコア３０からのアクセスに応じる前に読み出して、各ブロックと同一サイズのＰｒｏｔｅｃｔ−ＲＡＭ１１に転送する。Ｆｌａｓｈ ＩＦ１０は、ＣＰＵコア３０からの命令フェッチのアドレスとＢＰモニタレジスタ１４の値とを比較し、アクセス先が保護対象ブロックであるときには、セレクタ処理部１３はＰｒｏｔｅｃｔ−ＲＡＭ１１からの読み出しを選択して、読み出した保護対象ブロックのプログラムをＣＰＵコア３０に出力する。【選択図】図１
2009048322.tif 000002
【特許請求の範囲】
【請求項１】
各々のブロックが、プログラムデータを格納するメモリアレイと前記メモリアレイに格納されている前記プログラムデータの内容を外部からの読み取りに対して保護すべきか否かの情報を示すプロテクト制御ビットを格納するプロテクト制御ビット領域とから成る、複数のブロックに分割された不揮発性メモリと、
ＣＰＵとの間に設けられており、
前記ＣＰＵからＣＰＵバスを介してその内容を外部からの読み取りに対して保護すべき対象のプログラムデータを読み出すことを指令するオペランドアクセスを要求して来た場合には前記保護対象のプログラムデータ以外のデータを無効化処理データとして前記ＣＰＵ側に送信するインタフェースモジュールであって、
リセット解除後、前記ＣＰＵからのアクセス要求に応じる前に、前記不揮発性メモリの前記複数のブロックの各々から前記プロテクト制御ビットを読み出して、ブロック数と同数のビット数の信号から成り、且つ、各ブロックのプロテクト制御ビットを当該信号の各ビットの値に順次に設定されるモニタ信号を作成するプロテクト制御ビット読み出し部と、
前記ＣＰＵからのアクセス要求に応じる前に、前記プロテクト制御ビット読み出し部によって作成された前記モニタ信号を既に保有するモニタレジスタと、
前記プロテクト制御ビットが当該ブロック内に格納されているプログラムデータの内容を外部からの読み取りに対して保護すべきことを示している保護対象のブロック内に格納されているプログラムデータを、前記ＣＰＵからのアクセス要求に応じる前の段階で、読み出して転送するＲＡＭ転送処理部と、
前記不揮発性メモリの各ブロックと同じ記憶容量を有しており、前記ＲＡＭ転送処理部によって転送されて来た前記保護対象のブロック内に格納されているプログラムデータを、前記ＣＰＵからのアクセス要求に応じる前の段階で、予め格納するプロテクトＲＡＭと、
前記ＣＰＵから前記ＣＰＵバスを介して命令フェッチの要求を受けた場合に、前記命令フェッチのアドレスと前記モニタレジスタ内の前記モニタ信号とを比較して、前記命令フェッチのアクセス先が前記保護対象のブロックであるか否かを判定する比較部と、
前記不揮発性メモリの前記複数のブロックの各々の前記メモリアレイに格納されているプログラムデータを読み出す機能を有するメモリアレイ読み出し部と、
その入力端が前記プロテクトＲＡＭと前記メモリアレイ読み出し部とに接続されており、前記比較部での結果が前記命令フェッチの前記アクセス先が前記保護対象のブロックであることを示している場合には、前記プロテクトＲＡＭからのデータ読み出しを選択して、前記プロテクトＲＡＭに格納されている前記保護対象プログラムデータを読み出した上で、前記ＣＰＵバスを介して、前記ＣＰＵに送信するセレクタ処理部とを備えることを特徴とする、
インタフェースモジュール。
【請求項２】
各々のブロックが、プログラムデータを格納するメモリアレイと前記メモリアレイに格納されている前記プログラムデータの内容を外部からの読み取りに対して保護すべきか否かの情報を示すプロテクト制御ビットを格納するプロテクト制御ビット領域とから成る、複数のブロックに分割された不揮発性メモリと、
ＣＰＵとの間に設けられており、
前記ＣＰＵからＣＰＵバスを介してその内容を外部からの読み取りに対して保護すべき対象のプログラムデータを読み出すことを指令するオペランドアクセスを要求して来た場合には前記保護対象のプログラムデータ以外のデータを無効化処理データとして前記ＣＰＵ側に送信するインタフェースモジュールであって、
リセット解除後、前記ＣＰＵからのアクセス要求に応じる前に、前記不揮発性メモリの前記複数のブロックの各々から前記プロテクト制御ビットを読み出して、ブロック数と同数のビット数の信号から成り、且つ、各ブロックのプロテクト制御ビットを当該信号の各ビットの値に順次に設定されるモニタ信号を作成するプロテクト制御ビット読み出し部と、
前記ＣＰＵからのアクセス要求に応じる前に、前記プロテクト制御ビット読み出し部によって作成された前記モニタ信号を既に保有するモニタレジスタと、
リセット解除後、前記ＣＰＵからのアクセス要求に応じる前に、前記ＣＰＵバスを介して前記ＣＰＵによって書き込まれた、前記保護対象のプログラムデータの内の一部であって且つ転送すべきプログラム領域の情報を保有する転送領域設定レジスタと、
前記ＣＰＵからのアクセス要求に応じる前に、前記ＣＰＵバスを介して前記ＣＰＵによって転送開始を示す値が書き込まれる転送動作指定ビットと、転送状況フラグビットとを有する転送制御信号を保有する転送制御レジスタと、
前記ＣＰＵからのアクセス要求に応じる前に、前記転送制御レジスタによる制御の下で、且つ、前記モニタレジスタと前記転送領域設定レジスタが保持する前記情報を参照しつつ、前記保護対象のプログラムデータの内の一部であって且つ転送すべき前記プログラム領域を前記不揮発性メモリから読み出して転送するＲＡＭ転送処理部と、
前記保護対象のプログラムデータの内の一部であって且つ転送すべき前記プログラム領域と同一の記憶領域を有しており、前記ＲＡＭ転送処理部によって転送されて来た前記保護対象のプログラムデータの内の一部であって且つ転送すべき前記プログラム領域を、前記ＣＰＵからのアクセス要求に応じる前の段階で、予め格納するプロテクトＲＡＭと、
前記ＣＰＵから前記ＣＰＵバスを介して命令フェッチの要求を受けた場合に、前記命令フェッチのアドレスと前記モニタレジスタと前記転送領域設定レジスタが保持する前記情報とを比較して、前記命令フェッチのアクセス先が前記保護対象のブロック内のプログラムデータの一部であって且つ転送すべき前記プログラム領域であるか否かを判定する比較部と、
前記不揮発性メモリの前記複数のブロックの各々の前記メモリアレイに格納されているプログラムデータを読み出す機能を有するメモリアレイ読み出し部と、
その入力端が前記プロテクトＲＡＭと前記メモリアレイ読み出し部とに接続されており、前記比較部での結果が前記命令フェッチの前記アクセス先が前記保護対象のブロック内の前記プログラム領域であることを示している場合であって、且つ、前記転送制御レジスタの前記転送状況フラグビットが転送完了を示している場合には、前記プロテクトＲＡＭからのデータ読み出しを選択して、前記プロテクトＲＡＭに格納されている前記保護対象のブロック内の前記プログラム領域を読み出した上で、前記ＣＰＵバスを介して、前記ＣＰＵに送信するセレクタ処理部とを備えることを特徴とする、
インタフェースモジュール。
【請求項３】
ＣＰＵと、
不揮発性メモリと、
請求項１又は２に記載の前記インタフェースモジュールとが、
１つのＬＳＩチップ内に搭載されていることを特徴とする、
半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、保護対象となるプログラムの読み出し要求をＣＰＵから受けた場合には無効化処理を行う、不揮発性メモリとＣＰＵ間に設けられたインタフェースモジュールに於いて、ＣＰＵから命令フェッチを受けた場合には保護対象となるプログラムに高速にアクセス可能とする技術に関する。
【背景技術】
【０００２】
Ｆｌａｓｈメモリに代表されるＮｏｎ−Ｖｏｌａｔｉｌｅメモリ(以下、不揮発性メモリをＮＶメモリと記載する)の動作速度(周波数)は、一般的にＣＰＵよりも低速である。今後、半導体の微細加工化やメモリの大容量化に伴い、この傾向は拡大する。
【０００３】
メモリの動作速度がＣＰＵよりも遅いと、ＣＰＵからのメモリへのアクセスで遅延が発生し、ＣＰＵのサイクル性能が劣化する。これをカバーするために、従来は、小容量・高速のメモリをＣＰＵの近傍（多くの場合はＣＰＵと同一チップ上に）に配置する手法が広く用いられていた。代表的な手法は、スクラッチパッドメモリ(又は、スクラッチパッドＲＡＭ。以下では、ＳＰＭと記載する)、又は、キャッシュメモリ（以下では、キャッシュと記載する）を用いる手法である。
【０００４】
ＳＰＭを用いる場合には、高速にアクセスしたいＮＶメモリの内容を、予め（例えば起動時に）ＮＶメモリからＳＰＭに転送しておいて、ＣＰＵからはＳＰＭをアクセスする。
【０００５】
ＳＰＭとキャッシュを比較した場合、組み込み用途に於いては、ハードウェア規模が小さく（＝消費電力が小さく）、且つ、アクセス時間が予見出来るＳＰＭが使われる用途が多い。これに対して、ゲーム機用等の高性能・高価格のＬＳＩでは、ＳＰＭとキャッシュの両方を採用している例もある。
【０００６】
ＳＰＭは、一般的には小容量のＳＲＡＭより成り、特殊な制御回路を必要としない（ハードウェア規模がキャッシュよりも小さい理由である）。
【０００７】
一方で、ＮＶメモリに関しては、格納されるプログラムの秘密性、秘匿性（ノウハウ等を含んだプログラムの内容が外部から読み取られるのを防止すること。）を保護したいという近年の要求がある。これを実現するために、従来のＦｌａｓｈメモリ内蔵マイコンでは、保護したいメモリ領域を指定しておけば、データ読み出しで無効な値が読み出されるという”Ｔｒｕｓｔｅｄ−Ｆｌａｓｈ”機能がある。こうしておけば、プログラム実行の際の命令フェッチによるメモリ内容のアクセスは可能であるが、悪意のあるユーザーが保護したいメモリ内容を読み出してその内容を認識・コピーすることが出来ないので、メモリ内容の秘密性、秘匿性が保護される。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ＮＶメモリに格納されているプログラムの内で、その秘密性、秘匿性を保護したいプログラムが格納されている領域を高速に実行したい場合、ＳＰＭを用いることは出来ない。何故ならば、ＳＰＭに転送したプログラムの内容は保護されないので、悪意のあるユーザーが、ＳＰＭに転送したその秘密性、秘匿性を保護したいプログラムをデータとして読み出し可能となるからである。
【０００９】
他方、命令読み出しとなるキャッシュを用いた場合にはこうした事態は発生しないが、上述した様にハードウェア規模等でＳＰＭに劣る面があるため、常にキャッシュを採用出来る状況には無い。
【００１０】
本発明は、こうした課題を解決するために成されたものであり、その主目的は、ＮＶメモリに格納されたプログラムの内でその秘密性、秘匿性を保護したい箇所のプログラムを高速に実行することが可能なインタフェースモジュールを提供することにある。
【課題を解決するための手段】
【００１１】
この発明の主題は、ＮＶメモリのプロテクト領域に特化したスクラッチパッドメモリをインタフェースモジュール内に設けておき、ＮＶメモリの一部である「プロテクト領域」の内容を、予め専用の上記スクラッチパッドメモリにハードウェア的に転送し、その内容をＮＶメモリのプロテクト領域と同様に保護される仕組みを実現する。
【００１２】
以下、この発明の主題の様々な具体化を、添付図面を基に、その効果・利点と共に、詳述する。
【発明の効果】
【００１３】
本発明の主題によれば、ＣＰＵに対して無効化処理を行うインタフェースモジュールに於いて、命令フェッチをＣＰＵから受けた場合には、大規模なハードウェアを追加すること無く、ＮＶメモリに格納されたプログラムの内でその秘密性、秘匿性を保護したい箇所に格納された保護対象のプログラムを高速に実行することが出来る。
【発明を実施するための最良の形態】
【００１４】
以下では、ＮＶメモリを代表するＦｌａｓｈメモリを例として説明する。勿論、Ｆｌａｓｈメモリ以外のＮＶメモリの場合に於いても、同様の構成が可能である。
【００１５】
（実施の形態１）
対比の観点から、先ず、図４に、想定される従来例のＦｌａｓｈメモリ内蔵マイコンのブロック図（概略図)を示す。ここに示したモジュールは、（図に記載しない）他のモジュールと併せて、１つのＬＳＩチップに搭載されている。この点は、後述する図１及び図２の半導体集積回路の場合も同様である。
【００１６】
ＣＰＵコア３０は、Ｆｌａｓｈモジュール２０やＲＡＭ３１（スクラッチパッドメモリに該当）等のメモリに格納されたプログラムを実行する。
【００１７】
ＣＰＵバス３３は、ＣＰＵコア３０、Ｆｌａｓｈモジュール２０、ＲＡＭ３１、周辺ＩＯ３２等のモジュールを接続する。ＣＰＵバス３３は、アドレスバス及びデータバスから成る一般的なバスである。又、ＣＰＵバス３３のマスタとなるＣＰＵコア３０からスレーブとなる各モジュール３１，３２，２０に対するアクセス要求については、(図には示していない)バスアービタが調停を行う。
【００１８】
信号線ＲＬは、ＣＰＵコア３０から発せられたオペランドアクセス要求又は命令フェッチ要求を指令する要求信号及びリクエスト信号を送信する信号線である。又、信号線ＡＬは、ＣＰＵコア３０から発せられたアドレス信号を送信する信号線である。
【００１９】
Ｆｌａｓｈモジュール２０は、不揮発性のメモリを含むモジュールである。メモリアレイは、通常のＲＯＭとして使われる領域である。図４、後述する図１及び図２に示されるＦｌａｓｈモジュール２０は、「ブロック」と呼ばれる単位に分割される。各ブロックは、プログラムを格納するメモリアレイとは別に、プロテクト制御ビット(以下、ＢＰビットと言う)を格納するプロテクト制御ビット領域を持つ。ＢＰビットは、プロテクトに関するそのブロックの属性を記憶する。即ち、ＢＰビットは、メモリアレイに格納されているプログラムの秘密性、秘匿性を保護すべきか否かの情報を示す。メモリの消去は、ブロック単位で実行可能であり、メモリアレイとＢＰビットとが同時に消去される。
【００２０】
本実施の形態及び図４の従来例では、その説明を容易にするために、以下の場合を例に説明する。即ち、Ｆｌａｓｈモジュール２０は、３２ｋバイトの０〜７の８ブロックから成る (全体としては、その記憶容量は２５６ｋバイトである)。又、Ｆｌａｓｈモジュール２０の各ブロック０〜７のＣＰＵバス３３からの論理アドレスは、図５に示す通りである。図５は、本実施の形態に係る図１及び図２の半導体集積回路に於いて援用される。又、ＢＰビット＝０の場合は、そのブロックに格納されているプログラムの秘密性、秘匿性を保護するプロテクト対象を意味している。他方、ＢＰビット＝１の場合には、そのブロックに格納されているプログラムの秘密性、秘匿性を保護しない非プロテクト対象を意味する。従って、本実施の形態の場合では（図４、図１及び図２参照）、ブロック１のみがプロテクト対象であり、それ以外のブロックは非プロテクト対象に設定されている。
【００２１】
Ｆｌａｓｈインタフェース（以下、Ｆｌａｓｈ ＩＦと言う）１０Ｐ（後述する図１及び図２では参照符号は１０）は、ＣＰＵコア３０からＦｌａｓｈモジュール２０へのアクセスを制御するモジュールである。
【００２２】
従来例のＦｌａｓｈ ＩＦ１０Ｐの第一の機能は、プロトコル変換及びタイミングの制御である（いわゆる、ブリッジ）。つまり、ＣＰＵバス３３のプロトコルに応じて、Ｆｌａｓｈモジュール２０の読出し動作に必要なＦｌａｓｈ固有の制御信号を出力・制御し、又、ＣＰＵバス３３側にＦｌａｓｈモジュール２０から読出した値を出力し、読み出したデータが有効であることをＣＰＵコア３０へ通知するＥＮＤ信号を出力する（タイミング通知：図７参照）。
【００２３】
従来例のＦｌａｓｈ ＩＦ１０Ｐの第二の機能は、プロテクト制御である。プロテクト制御は、リセット解除時の「プロテクト情報読出し処理」と、アクセス要求発生時の「読出し無効化処理」とから成る。
【００２４】
「プロテクト情報読出し処理」に於いては、電源がＯＮとなり、スイッチのリセット解除後に、ＣＰＵバス３３からのアクセス要求に応じる前に、Ｆｌａｓｈ ＩＦ１０Ｐ内のＢＰビット読み出し部１８は、制御信号でＢＰビットのアドレスを指定することによって、Ｆｌａｓｈモジュール２０の全ブロックからＢＰビットを読み出す。そして、Ｆｌａｓｈ ＩＦ１０ＰのＢＰビット読み出し部１８は、読み出したＢＰビットから、全ブロック数と同数のビット数の信号から成り、且つ、各ブロックのＢＰビットを当該信号の各ビットの値に順次に設定されるモニタ信号を作成する。そして、ＢＰビット読み出し部１８は、ここでは８ビットから成るモニタ信号として、Ｆｌａｓｈ ＩＦ１０Ｐ内の、後に、Ｒｅａｄ−Ｏｎｌｙとなるレジスタ「ＢＰモニタレジスタ(ＢＰＰＲＥＧ)１４」に保持する。図６に、ＢＰモニタレジスタ１４に保持されている８ビットのモニタ信号を示す。この処理が終了するまでは、Ｆｌａｓｈ ＩＦ１０Ｐは、ＣＰＵバス３３からのアクセス要求は受け付けない。従って、Ｆｌａｓｈモジュール２０の全ブロックからのＢＰビットの読出し・ＢＰモニタレジスタ１４へのモニタ信号の保持の完了後まで、アクセス要求への応答が遅延される。ＣＰＵバス３３側からのＦｌａｓｈモジュール２０のアクセスの処理に先駆けて、ＢＰビットの値を、Ｆｌａｓｈモジュール２０よりも高速にアクセス可能なＦｌａｓｈ ＩＦ１０Ｐ内のＢＰモニタレジスタ１４に転送しておくことで、「読出し無効化処理」によるアクセス時間の劣化を避けている。
【００２５】
Ｆｌａｓｈ ＩＦ１０Ｐ内のメモリアレイ読み出し部１９は、制御信号で各メモリアレイのアドレスを指定することによって、Ｆｌａｓｈモジュール２０内の各ブロック０〜７のメモリアレイに格納されているプログラムを読み出す機能を呈する。
【００２６】
次に、プロテクト情報読出し処理後の「読出し無効化処理」を説明する。Ｆｌａｓｈ ＩＦ１０Ｐ内には、ＣＰＵコア３０からのアクセス要求が、Ｆｌａｓｈモジュール２０内の各ブロックからのプログラムの読み出しを指令するオペランドアクセス（ＯＡ）か、それとも、各ブロックのプログラムの実行を指示する命令フェッチ（ＩＦ）であるかを選別する機能部（図示せず）を、有している。斯かる選別機能部の実行により、Ｆｌａｓｈ ＩＦ１０Ｐが、ＣＰＵコア３０から、リクエスト信号と共に、データ読出しのアクセス要求（オペランドアクセス）を受け付けたときには、Ｆｌａｓｈ ＩＦ１０Ｐ内の比較部ＣＰは、アクセス要求に含まれるアドレス（例えば、図５の中位のビット）をＢＰＲＥＧ１４に保持したモニタ信号のビット情報と比較する。比較の結果、データ読み出しのアクセス要求先のブロックがＦｌａｓｈモジュール２０内の保護対象のブロック（ここではブロック１）を含む場合には、当該比較結果を受けて、Ｆｌａｓｈ ＩＦ１０Ｐ内の無効化処理部１５は、ＣＰＵバス３３側への読出しデータを無効化(例えば“０”を出力)する。尚、無効化信号としては、“０”レベルの信号である必然性はなく、要は、無効化処理部１５は、保護対象のブロック内のプログラムとは異なるデータを無効化信号としてＣＰＵバス３３側へ送信すれば良い。具体的には、ＣＰＵコア３０からの読出し要求のアドレスが、プロテクト対象のブロック１に対応するアドレス(Ｈ‘ＦＦＦＦ００００〜Ｈ’ＦＦＦＦ７ＦＦＦ）である場合には、無効化処理部１５は、ＣＰＵバス３３側への読出し値を“０”に変換する。この無効化処理は、Ｆｌａｓｈモジュール２０のアクセスに要する時間がＣＰＵバス３３の動作よりも低速であるため、高速に判別するための特殊なプロセスや高速に動作が必要な回路を用いることなく簡便な判別処理フロー及び高速動作を必要としない簡易回路で実現可能である。これに対して、Ｆｌａｓｈ ＩＦ１０Ｐ内の上記選別機能部が、ＣＰＵバス３３側から、リクエスト信号と共に、命令フェッチのアクセス要求を受けた場合には、無効化の必要性が無いので、Ｆｌａｓｈ ＩＦ１０Ｐ内の比較部ＣＰはアドレスの比較を行わない。即ち、無効化処理部１５では無効化処理が行われず、従って、Ｆｌａｓｈモジュール２０から読み出したデータがそのままＣＰＵバス３３に出力される。
【００２７】
尚、Ｆｌａｓｈ ＩＦ１０Ｐ内の上記選別機能部がＣＰＵバス３３側からオペランドアクセスを受け付けたときには、効率性の観点から、Ｆｌａｓｈ ＩＦ１０Ｐは、比較部ＣＰによるアドレスの比較処理と並行して、Ｆｌａｓｈモジュール２０内の対応するブロック内のデータを読み出す処理を行う構成にしても良い。即ち、比較的時間のかかる読み出し処理をしている間に、読み出し処理よりも処理時間を必要とはしない比較処理を終えることが出来るので、効率的な処理が行えるのである。
【００２８】
ここで、図４のＲＡＭモジュール３１は高速アクセス可能なメモリであり、その全領域又はその一部をＳＰＭとして利用可能である。但し、既述の通り、Ｆｌａｓｈ ＩＦ１０Ｐが保護対象ブロックの読出し無効化処理を行うので、プロテクト対象領域のプログラムのデータをＳＰＭとしてのＲＡＭモジュール３１に転送することが出来ない。従って、図４の半導体集積回路では、課題の欄で既述した通り、Ｆｌａｓｈモジュール２０近傍のＲＡＭモジュール３１をＳＰＭとして用いたアクセスの高速化を実現することが出来ない。
【００２９】
本実施の形態の特徴点は、図４のＦｌａｓｈ ＩＦ１０Ｐの構成を改良する点にある。ここで、図１は、本実施の形態の一例に係るＦｌａｓｈメモリ内蔵マイコン（半導体集積回路）の主要部を概略的に示すブロック図である。Ｆｌａｓｈ ＩＦ１０以外の構成要素は、図４の対応する構成要素と同じである。又、Ｆｌａｓｈ ＩＦ１０に含まれる、プロテクト制御ビット読み出し部１８、ＢＰＲＥＧ１４、メモリアレイ読み出し部１９及び無効化処理部１５も図４の対応する構成要素と同じであり、その各々の動作も同じである。
【００３０】
図１に示す様に、本実施の形態に係るＦｌａｓｈ ＩＦ１０は、図４の従来例で述べたＦｌａｓｈ ＩＦ１０Ｐの役割及び機能に加えて、Ｆｌａｓｈモジュール（不揮発性メモリに該当）２０内のプロテクト対象領域を高速にアクセスする機能を有する。そのために、Ｆｌａｓｈ ＩＦ１０には、Ｐｒｏｔｅｃｔ−ＲＡＭ１１とＲＡＭ転送処理部１２とセレクタ処理部１３とが追加されている。尚、ここでは、Ｆｌａｓｈモジュール２０内の保護対象のブロックはブロック１の１個なので、それに応じてＰｒｏｔｅｃｔ−ＲＡＭ１１の数も１個であるが、Ｐｒｏｔｅｃｔ−ＲＡＭ１１の数はＦｌａｓｈモジュール２０内の保護対象のブロック数、又はブロック当たりの記憶容量に対応している。その意味で、Ｐｒｏｔｅｃｔ−ＲＡＭ１１の数は少なくとも１個である。
【００３１】
Ｆｌａｓｈ ＩＦ１０内に追加されたＰｒｏｔｅｃｔ−ＲＡＭ（プロテクト領域に特化したＳＰＭ）１１は、Ｆｌａｓｈモジュール２０内の、１ブロックと同じサイズ（ここでは記憶容量は３２ｋバイト）を持ち、ＲＡＭモジュール３１と同様に、高速アクセスが可能なメモリである。このＰｒｏｔｅｃｔ−ＲＡＭ１１に対して、図４の従来例で既述した「プロテクト情報読出し処理」が完了してから、ＣＰＵバス３３からのアクセス要求に応じる前の段階で、次の処理が実行される。即ち、Ｆｌａｓｈ ＩＦ１０内に追加されたＲＡＭ転送処理部１２は、ＢＰビットが０である保護対象ブロック（ここではブロック１）のメモリアレイの内容（プログラムデータ）を読み出して、読み出した保護対象のプログラムデータを、Ｐｒｏｔｅｃｔ−ＲＡＭ１１に転送する。この転送により、Ｐｒｏｔｅｃｔ−ＲＡＭ１１に於いて、読み出された保護対象のプログラムデータの複写（コピー）が行われる。尚、ここでは、保護対象ブロックの数は１個なので、ＢＰビットの内で２ビット以上、即ち、２ブロック以上に於いて“０”の設定は保障されない仕様を想定している。勿論、Ｐｒｏｔｅｃｔ−ＲＡＭ１１を２ブロック分用意すれば、２ビットを“０”に設定しても良いことは言うまでもない。
【００３２】
今、Ｆｌａｓｈ ＩＦ１０内の既述した選別機能部が、ＣＰＵバス３３側から、リクエスト信号と共に、プログラム実行を指令する命令フェッチ（ＩＦ）の要求を受けたと判断した場合、Ｆｌａｓｈ ＩＦ１０内の既述した比較部ＣＰは、命令フェッチのアドレスを、予めＢＰＲＥＧ１４内に保持したモニタ信号が与える情報と比較する。比較部ＣＰの結果により、命令フェッチのアクセス先がＦｌａｓｈモジュール２０内の保護対象のブロックである場合には、Ｆｌａｓｈ ＩＦ１０に追加されたセレクタ処理部１３は、保護対象ブロックのメモリアレイ内の内容は既にＰｒｏｔｅｃｔ−ＲＡＭ１１に転送されているので、Ｐｒｏｔｅｃｔ−ＲＡＭ１１からのデータ読み出しを選択して、Ｐｒｏｔｅｃｔ−ＲＡＭ１１から実際に読み出した値を、ＣＰＵバス３３側に出力する。尚、セレクタ処理部１３の入力端は、Ｐｒｏｔｅｃｔ−ＲＡＭ１１の出力端と、図４に於いて既述したＢＰビット読み出し部１８及びメモリアレイ読み出し部１９の出力端とに接続されている。
【００３３】
そして、Ｆｌａｓｈ ＩＦ１０では、Ｐｒｏｔｅｃｔ−ＲＡＭ１１がセレクタ処理部１３によって選択された場合には、従来例で説明したタイミング制御機能を実現する制御回路は、データが有効であることを通知するタイミングを早める。即ち、Ｆｌａｓｈ ＩＦ１０は、ＣＰＵコア３０に対して、命令フェッチのアクセス先のメモリアレイの内容の送信完了を伝える（リクエスト信号に対応した）ＥＮＤ信号の送信タイミングをも早める。それに対して、比較部ＣＰの結果が、命令フェッチのアクセス先がＦｌａｓｈモジュール２０内の非保護対象のブロックである場合には、セレクタ処理部１３は、非保護対象のブロックのメモリアレイから直接読み出された値を選択して、その値をＣＰＵバス３３側に出力する。
【００３４】
本実施の形態に係るＦｌａｓｈ ＩＦ１０は、ＣＰＵバス３３側からロード命令等の転送命令の実行により、保護対象ブロックを直接読み出そうとするデータ読出しのアクセス要求（オペランドアクセス）を受けた場合には、図４の従来例と同じ無効化判定処理を行う。よって、プロテクト対象となるＦｌａｓｈモジュール２０内の保護対象ブロックへのデータ読出しアクセスは無効化され、図４の従来例と同様に、Ｐｒｏｔｅｃｔ−ＲＡＭ１１へ複写されデータ読み出しされているデータはセレクタ処理後に同じく無効化処理され、Ｆｌａｓｈモジュール２０内の保護対象ブロック内のプログラムの秘密性、秘匿性は保護される。一方、ＣＰＵコア３０のフェッチ動作による当該保護対象ブロックへのアクセス（フェッチアクセス）では、読み出しが無効化されず、正しいデータの読み出しが行われる。
【００３５】
以上より、本実施の形態によれば、プロテクト対象のブロックに配置されるプログラムを、高速アクセス可能で且つ読出し不可であるＰｒｏｔｅｃｔ−ＲＡＭ１１に予め転送しておくことで、ＣＰＵバス３３側から命令フェッチの要求を受けた場合に、そのアクセス先である保護対象ブロック内のメモリアレイのプログラムを、その秘密性、秘匿性を保護しつつ、高速に実行することが出来る。
【００３６】
（実施の形態２）
実施の形態１では、Ｆｌａｓｈモジュール２０内のプロテクト対象のブロックのメモリアレイの内容を全て高速アクセス化することを実現しようとしたため、図１のＰｒｏｔｅｃｔ−ＲＡＭ１１はＦｌａｓｈモジュール２０の１ブロックと同じサイズ（記憶容量）を必要とした。例えば、図１の説明の例では、Ｐｒｏｔｅｃｔ−ＲＡＭ１１の記憶領域は３２ｋバイトであった。この様なサイズのＰｒｏｔｅｃｔ−ＲＡＭ１１は比較的に高価なＲＡＭと言え、低コスト化の面で問題がある。
【００３７】
しかし、ＢＰビットが“０”である保護対象のブロックのメモリアレイ内のプログラム中で高速アクセス化したい領域は、１ブロックのサイズよりも小さい場合が多いと考えられる。
【００３８】
そこで、本実施の形態は、実施の形態１の変形例として、高速アクセス化したいプログラムの領域を、Ｆｌａｓｈモジュール２０の１ブロックのサイズよりも小さい単位で選択出来る構成を実現する。そのために、本実施の形態では、図１のＦｌａｓｈ ＩＦ１０の構成を改良する。
【００３９】
図２は、１ＬＳＩチップ上に搭載された、本実施の形態に係るＦｌａｓｈメモリ内蔵マイコンの構成を概略的に示すブロック図である。図２中、Ｆｌａｓｈ ＩＦ１０Ａ以外の構成要素は、実施の形態１（図１）に於ける対応構成要素と同じである。
【００４０】
尚、本実施の形態では、説明を容易にするために、以下の場合を想定する。即ち、Ｆｌａｓｈモジュール２０のブロック構成は実施の形態１と同じとし、Ｐｒｏｔｅｃｔ−ＲＡＭ１１Ａのサイズは４ｋバイト（１ブロックのサイズの１／８)とする。
【００４１】
本実施の形態のＦｌａｓｈ ＩＦ１０Ａでは、実施の形態１とは異なり、保護対象ブロックのメモリアレイ内のプログラムの内で高速アスセス化したい領域のデータのＰｒｏｔｅｃｔ−ＲＡＭ１１Ａへの転送は、「プロテクト情報読出し処理」完了によって、ＲＡＭ転送処理部１２Ａが自動的に当該転送を開始するのではなく、転送制御レジスタ１７を用いて明示的に行う。その際に用いる転送領域設定レジスタ１６は、ＣＰＵコア３０側から、どの領域を高速アスセス化したいのかを書き込めるレジスタである。
【００４２】
図２に示す通り、Ｆｌａｓｈ ＩＦ１０Ａには、Ｐｒｏｔｅｃｔ−ＲＡＭ１１Ａへ転送する、Ｆｌａｓｈモジュール２０に於ける保護対象ブロックのメモリアレイ内のプログラムの内で高速アスセス化したい領域を設定可能な「転送領域設定レジスタ(ＴＭＲＥＧ)１６」が追加されている。転送領域設定レジスタ１６（ＴＭＲＥＧ）は、８ビットのＲｅａｄ／Ｗｒｉｔｅ可能なレジスタであり、Ｐｒｏｔｅｃｔ−ＲＡＭ１１Ａへそのデータが転送される領域を指定する。即ち、転送領域設定レジスタＴＭＲＥＧは、保護対象ブロック中のプログラムの内でユーザーが高速アクセス化したいと考える領域を４ｋバイト単位で指定する。
【００４３】
更に、Ｆｌａｓｈ ＩＦ１０Ａには、Ｐｒｏｔｅｃｔ−ＲＡＭ１１Ａへの転送動作を制御する「転送制御レジスタ１７（ＴＣＲＥＧ)」が追加配置されている。ＴＣＲＥＧ１７は、８ビットのＲｅａｄ／Ｗｒｉｔｅ可能なレジスタであり、このレジスタ１７によって、ＢＰモニタレジスタ１４と転送領域設定レジスタＴＭＲＥＧとで指定されたＦｌａｓｈモジュール２０の領域からＰｒｏｔｅｃｔ−ＲＡＭ１１Ａへのデータ転送を制御する。
【００４４】
ここで、図３に、これらのレジスタ１６，１７の仕様例を示す。図３では、各レジスタ１６，１７の８ビット信号の初期値が示されている。ユーザーは、ＣＰＵコア３０を用いて、各レジスタＴＭＲＥＧ、ＴＣＲＥＧの各ビット値を書き込む。例えば、ブロック１が保護対象としてプログラムされている場合に、ブロック１中の領域の内で４番目の領域のデータを高速アクセス化したい場合には、レジスタＴＭＲＥＧの８ビット信号に於けるビット３の値を“１”に書き換える。尚、ここでは、説明の便宜上、その秘密性、秘匿性を保護したいブロックを一つのブロックに限定している。
【００４５】
図３の仕様例に関して、Ｓｔｅｐ１に於いて、ユーザーは、ＣＰＵコア３０を用いて、転送領域設定レジスタＴＭＲＥＧに値を設定する。次のＳｔｅｐ２では、ユーザーは、ＣＰＵコア３０を用いて、転送制御レジスタＴＣＲＥＧのｂｉｔ０に“１”を設定する（転送開始）。Ｓｔｅｐ３では、転送制御レジスタＴＣＲＥＧのｂｉｔ１の値が“１” （転送完了）になるまで、ポーリング状態となる。
【００４６】
本実施の形態のＲＡＭ転送処理部１２Ａは、Ｓｔｅｐ２の設定に応じて、Ｆｌａｓｈモジュール２０内の保護対象ブロック内の特定された領域からＰｒｏｔｅｃｔ−ＲＡＭ１１Ａへのデータ転送を開始する。その際、ＲＡＭ転送処理部１２Ａは、ＢＰモニタレジスタ１４と転送領域設定レジスタＴＭＲＥＧの値を参照する。ＲＡＭ転送処理部１２Ａからの転送終了が転送制御レジスタＴＣＲＥＧに通知されると、転送制御レジスタＴＣＲＥＧは、そのｂｉｔ１の値を“１”にセットする。
【００４７】
Ｐｒｏｔｅｃｔ−ＲＡＭ１１Ａへのデータ転送の完了後、これ以降に於いて、Ｆｌａｓｈ ＩＦ１０Ａは、ＣＰＵバス３３側からのアクセス要求（オペランドアクセス又は命令フェッチ）に応じる。この点は、実施の形態１のＰｒｏｔｅｃｔ−ＲＡＭ１１と同様である。
【００４８】
本実施の形態に係るＦｌａｓｈ ＩＦ１０Ａ内の比較部ＣＰＡは、実施の形態１の既述したＦｌａｓｈ ＩＦ１０内の比較部ＣＰとは異なり、Ｆｌａｓｈ ＩＦ１０Ａの選別機能部が、リクエスト信号と共に、命令フェッチの要求を受けた場合には、命令フェッチのアドレスと、ＢＰモニタレジスタ１４と、転送領域設定レジスタＴＭＲＥＧが保持する情報とを比較する。比較の結果、命令フェッチのアクセス先がＰｒｏｔｅｃｔ−ＲＡＭ１１Ａにそのデータが転送された保護対象ブロック内の領域であり、且つ、転送制御レジスタＴＣＲＥＧのｂｉｔ１の値が“１”（転送完了）を示している場合には、セレクタ処理部１３Ａは、Ｐｒｏｔｅｃｔ−ＲＡＭ１１Ａの読出し値を選択して、その読出し値をＣＰＵバス３３側に出力する。
【００４９】
無効化処理部１５は、実施の形態１と同様に、ＢＰモニタレジスタ（ＢＰＲＥＧ）１４の値に応じた処理を行うので、プロテクト機能は同様に実現される。
【００５０】
尚、本実施の形態で示した制御レジスタのインタフェース仕様は一例であり、同等の機能が実現できれば、その他の仕様でも構わない。
【００５１】
本実施の形態によれば、ＣＰＵバス３３側からのアクセス要求に応じる前に、プロテクト対象のブロックの一部に配置されるプログラムを、高速アクセス可能で且つ読出し不可であるＰｒｏｔｅｃｔ−ＲＡＭ１１Ａに予め転送しておくので、Ｆｌａｓｈモジュール２０内のプロテクト対象のブロックの一部に配置されるプログラムを高速に実行することが出来る。そのため、Ｐｒｏｔｅｃｔ−ＲＡＭ１１Ａのサイズを、Ｆｌａｓｈモジュール２０内の転送するプログラム領域と同等に縮小化して、Ｐｒｏｔｅｃｔ−ＲＡＭ１１Ａの低コスト化を実現することが出来る。しかも、転送するプログラム領域をユーザーが選択することが出来るため、ソフトウェアの最適化の際に自由度の高いインタフェースモジュールを提供することが出来る。
【００５２】
（付記）
以上、本発明の実施の形態を詳細に開示し記述したが、以上の記述は本発明の適用可能な局面を例示したものであって、本発明はこれに限定されるものではない。即ち、記述した局面に対する様々な修正や変形例を、この発明の範囲から逸脱することの無い範囲内で考えることが可能である。
【産業上の利用可能性】
【００５３】
この発明は、例えば、ＮＶメモリとＣＰＵとを同一チップ上に搭載したＬＳＩや、ハードウェア規模や消費電力等の制約から、キャッシュの採用が不適当な用途向けの製品に適用して好適である。
【図面の簡単な説明】
【００５４】
【図１】本発明の実施の形態１に係る半導体集積回路の主要部の構成を示すブロック図である。
【図２】本発明の実施の形態２に係る半導体集積回路の主要部の構成を示すブロック図である。
【図３】本発明の実施の形態２に係るインタフェースモジュール内の各レジスタの初期値を示す図である。
【図４】従来技術に係る半導体集積回路の主要部の構成を示すブロック図である。
【図５】Ｆｌａｓｈモジュールの各ブロックのＣＰＵバスからの論理アドレスを示す図である。
【図６】ＢＰモニタレジスタに保持されているモニタ信号の例を示す図である。
【図７】ＥＮＤ信号の出力タイミングを示すタイミングチャートである。
【符号の説明】
【００５５】
１０，１０Ａ  Ｆｌａｓｈ ＩＦ、１１，１１Ａ  Ｐｒｏｔｅｃｔ−ＲＡＭ、１２，１２Ａ  ＲＡＭ転送処理部、１３，１３Ａ  セレクタ処理部、１４  ＢＰモニタレジスタ、１５  無効化処理部、２０  Ｆｌａｓｈモジュール、３０  ＣＰＵコア、３３  ＣＰＵバス。
【図１】
2009048322.tif 000003
【図２】
2009048322.tif 000004
【図３】
2009048322.tif 000005
【図４】
2009048322.tif 000006
【図５】
2009048322.tif 000007
【図６】
2009048322.tif 000008
【図７】
2009048322.tif 000009