JP2009048322A - インタフェースモジュール及び半導体集積回路 - Google Patents
インタフェースモジュール及び半導体集積回路 Download PDFInfo
- Publication number
- JP2009048322A JP2009048322A JP2007212123A JP2007212123A JP2009048322A JP 2009048322 A JP2009048322 A JP 2009048322A JP 2007212123 A JP2007212123 A JP 2007212123A JP 2007212123 A JP2007212123 A JP 2007212123A JP 2009048322 A JP2009048322 A JP 2009048322A
- Authority
- JP
- Japan
- Prior art keywords
- cpu
- block
- ram
- protected
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】NVメモリに格納された保護したいプログラムを、オペランドアクセスに対しては読み出し不可としつつ、命令フェッチに対しては高速にアクセス可能とする。
【解決手段】リセット解除後、CPUコア30からのアクセスに応じる前に、BPモニタレジスタ14はFlashモジュール20の各BPビット情報を保持している。RAM転送処理部12は、Flashモジュール20内の保護対象ブロックのプログラムをCPUコア30からのアクセスに応じる前に読み出して、各ブロックと同一サイズのProtect−RAM11に転送する。Flash IF10は、CPUコア30からの命令フェッチのアドレスとBPモニタレジスタ14の値とを比較し、アクセス先が保護対象ブロックであるときには、セレクタ処理部13はProtect−RAM11からの読み出しを選択して、読み出した保護対象ブロックのプログラムをCPUコア30に出力する。
【選択図】図1
【解決手段】リセット解除後、CPUコア30からのアクセスに応じる前に、BPモニタレジスタ14はFlashモジュール20の各BPビット情報を保持している。RAM転送処理部12は、Flashモジュール20内の保護対象ブロックのプログラムをCPUコア30からのアクセスに応じる前に読み出して、各ブロックと同一サイズのProtect−RAM11に転送する。Flash IF10は、CPUコア30からの命令フェッチのアドレスとBPモニタレジスタ14の値とを比較し、アクセス先が保護対象ブロックであるときには、セレクタ処理部13はProtect−RAM11からの読み出しを選択して、読み出した保護対象ブロックのプログラムをCPUコア30に出力する。
【選択図】図1
Description
この発明は、保護対象となるプログラムの読み出し要求をCPUから受けた場合には無効化処理を行う、不揮発性メモリとCPU間に設けられたインタフェースモジュールに於いて、CPUから命令フェッチを受けた場合には保護対象となるプログラムに高速にアクセス可能とする技術に関する。
Flashメモリに代表されるNon−Volatileメモリ(以下、不揮発性メモリをNVメモリと記載する)の動作速度(周波数)は、一般的にCPUよりも低速である。今後、半導体の微細加工化やメモリの大容量化に伴い、この傾向は拡大する。
メモリの動作速度がCPUよりも遅いと、CPUからのメモリへのアクセスで遅延が発生し、CPUのサイクル性能が劣化する。これをカバーするために、従来は、小容量・高速のメモリをCPUの近傍(多くの場合はCPUと同一チップ上に)に配置する手法が広く用いられていた。代表的な手法は、スクラッチパッドメモリ(又は、スクラッチパッドRAM。以下では、SPMと記載する)、又は、キャッシュメモリ(以下では、キャッシュと記載する)を用いる手法である。
SPMを用いる場合には、高速にアクセスしたいNVメモリの内容を、予め(例えば起動時に)NVメモリからSPMに転送しておいて、CPUからはSPMをアクセスする。
SPMとキャッシュを比較した場合、組み込み用途に於いては、ハードウェア規模が小さく(=消費電力が小さく)、且つ、アクセス時間が予見出来るSPMが使われる用途が多い。これに対して、ゲーム機用等の高性能・高価格のLSIでは、SPMとキャッシュの両方を採用している例もある。
SPMは、一般的には小容量のSRAMより成り、特殊な制御回路を必要としない(ハードウェア規模がキャッシュよりも小さい理由である)。
一方で、NVメモリに関しては、格納されるプログラムの秘密性、秘匿性(ノウハウ等を含んだプログラムの内容が外部から読み取られるのを防止すること。)を保護したいという近年の要求がある。これを実現するために、従来のFlashメモリ内蔵マイコンでは、保護したいメモリ領域を指定しておけば、データ読み出しで無効な値が読み出されるという”Trusted−Flash”機能がある。こうしておけば、プログラム実行の際の命令フェッチによるメモリ内容のアクセスは可能であるが、悪意のあるユーザーが保護したいメモリ内容を読み出してその内容を認識・コピーすることが出来ないので、メモリ内容の秘密性、秘匿性が保護される。
NVメモリに格納されているプログラムの内で、その秘密性、秘匿性を保護したいプログラムが格納されている領域を高速に実行したい場合、SPMを用いることは出来ない。何故ならば、SPMに転送したプログラムの内容は保護されないので、悪意のあるユーザーが、SPMに転送したその秘密性、秘匿性を保護したいプログラムをデータとして読み出し可能となるからである。
他方、命令読み出しとなるキャッシュを用いた場合にはこうした事態は発生しないが、上述した様にハードウェア規模等でSPMに劣る面があるため、常にキャッシュを採用出来る状況には無い。
本発明は、こうした課題を解決するために成されたものであり、その主目的は、NVメモリに格納されたプログラムの内でその秘密性、秘匿性を保護したい箇所のプログラムを高速に実行することが可能なインタフェースモジュールを提供することにある。
この発明の主題は、NVメモリのプロテクト領域に特化したスクラッチパッドメモリをインタフェースモジュール内に設けておき、NVメモリの一部である「プロテクト領域」の内容を、予め専用の上記スクラッチパッドメモリにハードウェア的に転送し、その内容をNVメモリのプロテクト領域と同様に保護される仕組みを実現する。
以下、この発明の主題の様々な具体化を、添付図面を基に、その効果・利点と共に、詳述する。
本発明の主題によれば、CPUに対して無効化処理を行うインタフェースモジュールに於いて、命令フェッチをCPUから受けた場合には、大規模なハードウェアを追加すること無く、NVメモリに格納されたプログラムの内でその秘密性、秘匿性を保護したい箇所に格納された保護対象のプログラムを高速に実行することが出来る。
以下では、NVメモリを代表するFlashメモリを例として説明する。勿論、Flashメモリ以外のNVメモリの場合に於いても、同様の構成が可能である。
(実施の形態1)
対比の観点から、先ず、図4に、想定される従来例のFlashメモリ内蔵マイコンのブロック図(概略図)を示す。ここに示したモジュールは、(図に記載しない)他のモジュールと併せて、1つのLSIチップに搭載されている。この点は、後述する図1及び図2の半導体集積回路の場合も同様である。
対比の観点から、先ず、図4に、想定される従来例のFlashメモリ内蔵マイコンのブロック図(概略図)を示す。ここに示したモジュールは、(図に記載しない)他のモジュールと併せて、1つのLSIチップに搭載されている。この点は、後述する図1及び図2の半導体集積回路の場合も同様である。
CPUコア30は、Flashモジュール20やRAM31(スクラッチパッドメモリに該当)等のメモリに格納されたプログラムを実行する。
CPUバス33は、CPUコア30、Flashモジュール20、RAM31、周辺IO32等のモジュールを接続する。CPUバス33は、アドレスバス及びデータバスから成る一般的なバスである。又、CPUバス33のマスタとなるCPUコア30からスレーブとなる各モジュール31,32,20に対するアクセス要求については、(図には示していない)バスアービタが調停を行う。
信号線RLは、CPUコア30から発せられたオペランドアクセス要求又は命令フェッチ要求を指令する要求信号及びリクエスト信号を送信する信号線である。又、信号線ALは、CPUコア30から発せられたアドレス信号を送信する信号線である。
Flashモジュール20は、不揮発性のメモリを含むモジュールである。メモリアレイは、通常のROMとして使われる領域である。図4、後述する図1及び図2に示されるFlashモジュール20は、「ブロック」と呼ばれる単位に分割される。各ブロックは、プログラムを格納するメモリアレイとは別に、プロテクト制御ビット(以下、BPビットと言う)を格納するプロテクト制御ビット領域を持つ。BPビットは、プロテクトに関するそのブロックの属性を記憶する。即ち、BPビットは、メモリアレイに格納されているプログラムの秘密性、秘匿性を保護すべきか否かの情報を示す。メモリの消去は、ブロック単位で実行可能であり、メモリアレイとBPビットとが同時に消去される。
本実施の形態及び図4の従来例では、その説明を容易にするために、以下の場合を例に説明する。即ち、Flashモジュール20は、32kバイトの0〜7の8ブロックから成る (全体としては、その記憶容量は256kバイトである)。又、Flashモジュール20の各ブロック0〜7のCPUバス33からの論理アドレスは、図5に示す通りである。図5は、本実施の形態に係る図1及び図2の半導体集積回路に於いて援用される。又、BPビット=0の場合は、そのブロックに格納されているプログラムの秘密性、秘匿性を保護するプロテクト対象を意味している。他方、BPビット=1の場合には、そのブロックに格納されているプログラムの秘密性、秘匿性を保護しない非プロテクト対象を意味する。従って、本実施の形態の場合では(図4、図1及び図2参照)、ブロック1のみがプロテクト対象であり、それ以外のブロックは非プロテクト対象に設定されている。
Flashインタフェース(以下、Flash IFと言う)10P(後述する図1及び図2では参照符号は10)は、CPUコア30からFlashモジュール20へのアクセスを制御するモジュールである。
従来例のFlash IF10Pの第一の機能は、プロトコル変換及びタイミングの制御である(いわゆる、ブリッジ)。つまり、CPUバス33のプロトコルに応じて、Flashモジュール20の読出し動作に必要なFlash固有の制御信号を出力・制御し、又、CPUバス33側にFlashモジュール20から読出した値を出力し、読み出したデータが有効であることをCPUコア30へ通知するEND信号を出力する(タイミング通知:図7参照)。
従来例のFlash IF10Pの第二の機能は、プロテクト制御である。プロテクト制御は、リセット解除時の「プロテクト情報読出し処理」と、アクセス要求発生時の「読出し無効化処理」とから成る。
「プロテクト情報読出し処理」に於いては、電源がONとなり、スイッチのリセット解除後に、CPUバス33からのアクセス要求に応じる前に、Flash IF10P内のBPビット読み出し部18は、制御信号でBPビットのアドレスを指定することによって、Flashモジュール20の全ブロックからBPビットを読み出す。そして、Flash IF10PのBPビット読み出し部18は、読み出したBPビットから、全ブロック数と同数のビット数の信号から成り、且つ、各ブロックのBPビットを当該信号の各ビットの値に順次に設定されるモニタ信号を作成する。そして、BPビット読み出し部18は、ここでは8ビットから成るモニタ信号として、Flash IF10P内の、後に、Read−Onlyとなるレジスタ「BPモニタレジスタ(BPPREG)14」に保持する。図6に、BPモニタレジスタ14に保持されている8ビットのモニタ信号を示す。この処理が終了するまでは、Flash IF10Pは、CPUバス33からのアクセス要求は受け付けない。従って、Flashモジュール20の全ブロックからのBPビットの読出し・BPモニタレジスタ14へのモニタ信号の保持の完了後まで、アクセス要求への応答が遅延される。CPUバス33側からのFlashモジュール20のアクセスの処理に先駆けて、BPビットの値を、Flashモジュール20よりも高速にアクセス可能なFlash IF10P内のBPモニタレジスタ14に転送しておくことで、「読出し無効化処理」によるアクセス時間の劣化を避けている。
Flash IF10P内のメモリアレイ読み出し部19は、制御信号で各メモリアレイのアドレスを指定することによって、Flashモジュール20内の各ブロック0〜7のメモリアレイに格納されているプログラムを読み出す機能を呈する。
次に、プロテクト情報読出し処理後の「読出し無効化処理」を説明する。Flash IF10P内には、CPUコア30からのアクセス要求が、Flashモジュール20内の各ブロックからのプログラムの読み出しを指令するオペランドアクセス(OA)か、それとも、各ブロックのプログラムの実行を指示する命令フェッチ(IF)であるかを選別する機能部(図示せず)を、有している。斯かる選別機能部の実行により、Flash IF10Pが、CPUコア30から、リクエスト信号と共に、データ読出しのアクセス要求(オペランドアクセス)を受け付けたときには、Flash IF10P内の比較部CPは、アクセス要求に含まれるアドレス(例えば、図5の中位のビット)をBPREG14に保持したモニタ信号のビット情報と比較する。比較の結果、データ読み出しのアクセス要求先のブロックがFlashモジュール20内の保護対象のブロック(ここではブロック1)を含む場合には、当該比較結果を受けて、Flash IF10P内の無効化処理部15は、CPUバス33側への読出しデータを無効化(例えば“0”を出力)する。尚、無効化信号としては、“0”レベルの信号である必然性はなく、要は、無効化処理部15は、保護対象のブロック内のプログラムとは異なるデータを無効化信号としてCPUバス33側へ送信すれば良い。具体的には、CPUコア30からの読出し要求のアドレスが、プロテクト対象のブロック1に対応するアドレス(H‘FFFF0000〜H’FFFF7FFF)である場合には、無効化処理部15は、CPUバス33側への読出し値を“0”に変換する。この無効化処理は、Flashモジュール20のアクセスに要する時間がCPUバス33の動作よりも低速であるため、高速に判別するための特殊なプロセスや高速に動作が必要な回路を用いることなく簡便な判別処理フロー及び高速動作を必要としない簡易回路で実現可能である。これに対して、Flash IF10P内の上記選別機能部が、CPUバス33側から、リクエスト信号と共に、命令フェッチのアクセス要求を受けた場合には、無効化の必要性が無いので、Flash IF10P内の比較部CPはアドレスの比較を行わない。即ち、無効化処理部15では無効化処理が行われず、従って、Flashモジュール20から読み出したデータがそのままCPUバス33に出力される。
尚、Flash IF10P内の上記選別機能部がCPUバス33側からオペランドアクセスを受け付けたときには、効率性の観点から、Flash IF10Pは、比較部CPによるアドレスの比較処理と並行して、Flashモジュール20内の対応するブロック内のデータを読み出す処理を行う構成にしても良い。即ち、比較的時間のかかる読み出し処理をしている間に、読み出し処理よりも処理時間を必要とはしない比較処理を終えることが出来るので、効率的な処理が行えるのである。
ここで、図4のRAMモジュール31は高速アクセス可能なメモリであり、その全領域又はその一部をSPMとして利用可能である。但し、既述の通り、Flash IF10Pが保護対象ブロックの読出し無効化処理を行うので、プロテクト対象領域のプログラムのデータをSPMとしてのRAMモジュール31に転送することが出来ない。従って、図4の半導体集積回路では、課題の欄で既述した通り、Flashモジュール20近傍のRAMモジュール31をSPMとして用いたアクセスの高速化を実現することが出来ない。
本実施の形態の特徴点は、図4のFlash IF10Pの構成を改良する点にある。ここで、図1は、本実施の形態の一例に係るFlashメモリ内蔵マイコン(半導体集積回路)の主要部を概略的に示すブロック図である。Flash IF10以外の構成要素は、図4の対応する構成要素と同じである。又、Flash IF10に含まれる、プロテクト制御ビット読み出し部18、BPREG14、メモリアレイ読み出し部19及び無効化処理部15も図4の対応する構成要素と同じであり、その各々の動作も同じである。
図1に示す様に、本実施の形態に係るFlash IF10は、図4の従来例で述べたFlash IF10Pの役割及び機能に加えて、Flashモジュール(不揮発性メモリに該当)20内のプロテクト対象領域を高速にアクセスする機能を有する。そのために、Flash IF10には、Protect−RAM11とRAM転送処理部12とセレクタ処理部13とが追加されている。尚、ここでは、Flashモジュール20内の保護対象のブロックはブロック1の1個なので、それに応じてProtect−RAM11の数も1個であるが、Protect−RAM11の数はFlashモジュール20内の保護対象のブロック数、又はブロック当たりの記憶容量に対応している。その意味で、Protect−RAM11の数は少なくとも1個である。
Flash IF10内に追加されたProtect−RAM(プロテクト領域に特化したSPM)11は、Flashモジュール20内の、1ブロックと同じサイズ(ここでは記憶容量は32kバイト)を持ち、RAMモジュール31と同様に、高速アクセスが可能なメモリである。このProtect−RAM11に対して、図4の従来例で既述した「プロテクト情報読出し処理」が完了してから、CPUバス33からのアクセス要求に応じる前の段階で、次の処理が実行される。即ち、Flash IF10内に追加されたRAM転送処理部12は、BPビットが0である保護対象ブロック(ここではブロック1)のメモリアレイの内容(プログラムデータ)を読み出して、読み出した保護対象のプログラムデータを、Protect−RAM11に転送する。この転送により、Protect−RAM11に於いて、読み出された保護対象のプログラムデータの複写(コピー)が行われる。尚、ここでは、保護対象ブロックの数は1個なので、BPビットの内で2ビット以上、即ち、2ブロック以上に於いて“0”の設定は保障されない仕様を想定している。勿論、Protect−RAM11を2ブロック分用意すれば、2ビットを“0”に設定しても良いことは言うまでもない。
今、Flash IF10内の既述した選別機能部が、CPUバス33側から、リクエスト信号と共に、プログラム実行を指令する命令フェッチ(IF)の要求を受けたと判断した場合、Flash IF10内の既述した比較部CPは、命令フェッチのアドレスを、予めBPREG14内に保持したモニタ信号が与える情報と比較する。比較部CPの結果により、命令フェッチのアクセス先がFlashモジュール20内の保護対象のブロックである場合には、Flash IF10に追加されたセレクタ処理部13は、保護対象ブロックのメモリアレイ内の内容は既にProtect−RAM11に転送されているので、Protect−RAM11からのデータ読み出しを選択して、Protect−RAM11から実際に読み出した値を、CPUバス33側に出力する。尚、セレクタ処理部13の入力端は、Protect−RAM11の出力端と、図4に於いて既述したBPビット読み出し部18及びメモリアレイ読み出し部19の出力端とに接続されている。
そして、Flash IF10では、Protect−RAM11がセレクタ処理部13によって選択された場合には、従来例で説明したタイミング制御機能を実現する制御回路は、データが有効であることを通知するタイミングを早める。即ち、Flash IF10は、CPUコア30に対して、命令フェッチのアクセス先のメモリアレイの内容の送信完了を伝える(リクエスト信号に対応した)END信号の送信タイミングをも早める。それに対して、比較部CPの結果が、命令フェッチのアクセス先がFlashモジュール20内の非保護対象のブロックである場合には、セレクタ処理部13は、非保護対象のブロックのメモリアレイから直接読み出された値を選択して、その値をCPUバス33側に出力する。
本実施の形態に係るFlash IF10は、CPUバス33側からロード命令等の転送命令の実行により、保護対象ブロックを直接読み出そうとするデータ読出しのアクセス要求(オペランドアクセス)を受けた場合には、図4の従来例と同じ無効化判定処理を行う。よって、プロテクト対象となるFlashモジュール20内の保護対象ブロックへのデータ読出しアクセスは無効化され、図4の従来例と同様に、Protect−RAM11へ複写されデータ読み出しされているデータはセレクタ処理後に同じく無効化処理され、Flashモジュール20内の保護対象ブロック内のプログラムの秘密性、秘匿性は保護される。一方、CPUコア30のフェッチ動作による当該保護対象ブロックへのアクセス(フェッチアクセス)では、読み出しが無効化されず、正しいデータの読み出しが行われる。
以上より、本実施の形態によれば、プロテクト対象のブロックに配置されるプログラムを、高速アクセス可能で且つ読出し不可であるProtect−RAM11に予め転送しておくことで、CPUバス33側から命令フェッチの要求を受けた場合に、そのアクセス先である保護対象ブロック内のメモリアレイのプログラムを、その秘密性、秘匿性を保護しつつ、高速に実行することが出来る。
(実施の形態2)
実施の形態1では、Flashモジュール20内のプロテクト対象のブロックのメモリアレイの内容を全て高速アクセス化することを実現しようとしたため、図1のProtect−RAM11はFlashモジュール20の1ブロックと同じサイズ(記憶容量)を必要とした。例えば、図1の説明の例では、Protect−RAM11の記憶領域は32kバイトであった。この様なサイズのProtect−RAM11は比較的に高価なRAMと言え、低コスト化の面で問題がある。
実施の形態1では、Flashモジュール20内のプロテクト対象のブロックのメモリアレイの内容を全て高速アクセス化することを実現しようとしたため、図1のProtect−RAM11はFlashモジュール20の1ブロックと同じサイズ(記憶容量)を必要とした。例えば、図1の説明の例では、Protect−RAM11の記憶領域は32kバイトであった。この様なサイズのProtect−RAM11は比較的に高価なRAMと言え、低コスト化の面で問題がある。
しかし、BPビットが“0”である保護対象のブロックのメモリアレイ内のプログラム中で高速アクセス化したい領域は、1ブロックのサイズよりも小さい場合が多いと考えられる。
そこで、本実施の形態は、実施の形態1の変形例として、高速アクセス化したいプログラムの領域を、Flashモジュール20の1ブロックのサイズよりも小さい単位で選択出来る構成を実現する。そのために、本実施の形態では、図1のFlash IF10の構成を改良する。
図2は、1LSIチップ上に搭載された、本実施の形態に係るFlashメモリ内蔵マイコンの構成を概略的に示すブロック図である。図2中、Flash IF10A以外の構成要素は、実施の形態1(図1)に於ける対応構成要素と同じである。
尚、本実施の形態では、説明を容易にするために、以下の場合を想定する。即ち、Flashモジュール20のブロック構成は実施の形態1と同じとし、Protect−RAM11Aのサイズは4kバイト(1ブロックのサイズの1/8)とする。
本実施の形態のFlash IF10Aでは、実施の形態1とは異なり、保護対象ブロックのメモリアレイ内のプログラムの内で高速アスセス化したい領域のデータのProtect−RAM11Aへの転送は、「プロテクト情報読出し処理」完了によって、RAM転送処理部12Aが自動的に当該転送を開始するのではなく、転送制御レジスタ17を用いて明示的に行う。その際に用いる転送領域設定レジスタ16は、CPUコア30側から、どの領域を高速アスセス化したいのかを書き込めるレジスタである。
図2に示す通り、Flash IF10Aには、Protect−RAM11Aへ転送する、Flashモジュール20に於ける保護対象ブロックのメモリアレイ内のプログラムの内で高速アスセス化したい領域を設定可能な「転送領域設定レジスタ(TMREG)16」が追加されている。転送領域設定レジスタ16(TMREG)は、8ビットのRead/Write可能なレジスタであり、Protect−RAM11Aへそのデータが転送される領域を指定する。即ち、転送領域設定レジスタTMREGは、保護対象ブロック中のプログラムの内でユーザーが高速アクセス化したいと考える領域を4kバイト単位で指定する。
更に、Flash IF10Aには、Protect−RAM11Aへの転送動作を制御する「転送制御レジスタ17(TCREG)」が追加配置されている。TCREG17は、8ビットのRead/Write可能なレジスタであり、このレジスタ17によって、BPモニタレジスタ14と転送領域設定レジスタTMREGとで指定されたFlashモジュール20の領域からProtect−RAM11Aへのデータ転送を制御する。
ここで、図3に、これらのレジスタ16,17の仕様例を示す。図3では、各レジスタ16,17の8ビット信号の初期値が示されている。ユーザーは、CPUコア30を用いて、各レジスタTMREG、TCREGの各ビット値を書き込む。例えば、ブロック1が保護対象としてプログラムされている場合に、ブロック1中の領域の内で4番目の領域のデータを高速アクセス化したい場合には、レジスタTMREGの8ビット信号に於けるビット3の値を“1”に書き換える。尚、ここでは、説明の便宜上、その秘密性、秘匿性を保護したいブロックを一つのブロックに限定している。
図3の仕様例に関して、Step1に於いて、ユーザーは、CPUコア30を用いて、転送領域設定レジスタTMREGに値を設定する。次のStep2では、ユーザーは、CPUコア30を用いて、転送制御レジスタTCREGのbit0に“1”を設定する(転送開始)。Step3では、転送制御レジスタTCREGのbit1の値が“1” (転送完了)になるまで、ポーリング状態となる。
本実施の形態のRAM転送処理部12Aは、Step2の設定に応じて、Flashモジュール20内の保護対象ブロック内の特定された領域からProtect−RAM11Aへのデータ転送を開始する。その際、RAM転送処理部12Aは、BPモニタレジスタ14と転送領域設定レジスタTMREGの値を参照する。RAM転送処理部12Aからの転送終了が転送制御レジスタTCREGに通知されると、転送制御レジスタTCREGは、そのbit1の値を“1”にセットする。
Protect−RAM11Aへのデータ転送の完了後、これ以降に於いて、Flash IF10Aは、CPUバス33側からのアクセス要求(オペランドアクセス又は命令フェッチ)に応じる。この点は、実施の形態1のProtect−RAM11と同様である。
本実施の形態に係るFlash IF10A内の比較部CPAは、実施の形態1の既述したFlash IF10内の比較部CPとは異なり、Flash IF10Aの選別機能部が、リクエスト信号と共に、命令フェッチの要求を受けた場合には、命令フェッチのアドレスと、BPモニタレジスタ14と、転送領域設定レジスタTMREGが保持する情報とを比較する。比較の結果、命令フェッチのアクセス先がProtect−RAM11Aにそのデータが転送された保護対象ブロック内の領域であり、且つ、転送制御レジスタTCREGのbit1の値が“1”(転送完了)を示している場合には、セレクタ処理部13Aは、Protect−RAM11Aの読出し値を選択して、その読出し値をCPUバス33側に出力する。
無効化処理部15は、実施の形態1と同様に、BPモニタレジスタ(BPREG)14の値に応じた処理を行うので、プロテクト機能は同様に実現される。
尚、本実施の形態で示した制御レジスタのインタフェース仕様は一例であり、同等の機能が実現できれば、その他の仕様でも構わない。
本実施の形態によれば、CPUバス33側からのアクセス要求に応じる前に、プロテクト対象のブロックの一部に配置されるプログラムを、高速アクセス可能で且つ読出し不可であるProtect−RAM11Aに予め転送しておくので、Flashモジュール20内のプロテクト対象のブロックの一部に配置されるプログラムを高速に実行することが出来る。そのため、Protect−RAM11Aのサイズを、Flashモジュール20内の転送するプログラム領域と同等に縮小化して、Protect−RAM11Aの低コスト化を実現することが出来る。しかも、転送するプログラム領域をユーザーが選択することが出来るため、ソフトウェアの最適化の際に自由度の高いインタフェースモジュールを提供することが出来る。
(付記)
以上、本発明の実施の形態を詳細に開示し記述したが、以上の記述は本発明の適用可能な局面を例示したものであって、本発明はこれに限定されるものではない。即ち、記述した局面に対する様々な修正や変形例を、この発明の範囲から逸脱することの無い範囲内で考えることが可能である。
以上、本発明の実施の形態を詳細に開示し記述したが、以上の記述は本発明の適用可能な局面を例示したものであって、本発明はこれに限定されるものではない。即ち、記述した局面に対する様々な修正や変形例を、この発明の範囲から逸脱することの無い範囲内で考えることが可能である。
この発明は、例えば、NVメモリとCPUとを同一チップ上に搭載したLSIや、ハードウェア規模や消費電力等の制約から、キャッシュの採用が不適当な用途向けの製品に適用して好適である。
10,10A Flash IF、11,11A Protect−RAM、12,12A RAM転送処理部、13,13A セレクタ処理部、14 BPモニタレジスタ、15 無効化処理部、20 Flashモジュール、30 CPUコア、33 CPUバス。
Claims (3)
- 各々のブロックが、プログラムデータを格納するメモリアレイと前記メモリアレイに格納されている前記プログラムデータの内容を外部からの読み取りに対して保護すべきか否かの情報を示すプロテクト制御ビットを格納するプロテクト制御ビット領域とから成る、複数のブロックに分割された不揮発性メモリと、
CPUとの間に設けられており、
前記CPUからCPUバスを介してその内容を外部からの読み取りに対して保護すべき対象のプログラムデータを読み出すことを指令するオペランドアクセスを要求して来た場合には前記保護対象のプログラムデータ以外のデータを無効化処理データとして前記CPU側に送信するインタフェースモジュールであって、
リセット解除後、前記CPUからのアクセス要求に応じる前に、前記不揮発性メモリの前記複数のブロックの各々から前記プロテクト制御ビットを読み出して、ブロック数と同数のビット数の信号から成り、且つ、各ブロックのプロテクト制御ビットを当該信号の各ビットの値に順次に設定されるモニタ信号を作成するプロテクト制御ビット読み出し部と、
前記CPUからのアクセス要求に応じる前に、前記プロテクト制御ビット読み出し部によって作成された前記モニタ信号を既に保有するモニタレジスタと、
前記プロテクト制御ビットが当該ブロック内に格納されているプログラムデータの内容を外部からの読み取りに対して保護すべきことを示している保護対象のブロック内に格納されているプログラムデータを、前記CPUからのアクセス要求に応じる前の段階で、読み出して転送するRAM転送処理部と、
前記不揮発性メモリの各ブロックと同じ記憶容量を有しており、前記RAM転送処理部によって転送されて来た前記保護対象のブロック内に格納されているプログラムデータを、前記CPUからのアクセス要求に応じる前の段階で、予め格納するプロテクトRAMと、
前記CPUから前記CPUバスを介して命令フェッチの要求を受けた場合に、前記命令フェッチのアドレスと前記モニタレジスタ内の前記モニタ信号とを比較して、前記命令フェッチのアクセス先が前記保護対象のブロックであるか否かを判定する比較部と、
前記不揮発性メモリの前記複数のブロックの各々の前記メモリアレイに格納されているプログラムデータを読み出す機能を有するメモリアレイ読み出し部と、
その入力端が前記プロテクトRAMと前記メモリアレイ読み出し部とに接続されており、前記比較部での結果が前記命令フェッチの前記アクセス先が前記保護対象のブロックであることを示している場合には、前記プロテクトRAMからのデータ読み出しを選択して、前記プロテクトRAMに格納されている前記保護対象プログラムデータを読み出した上で、前記CPUバスを介して、前記CPUに送信するセレクタ処理部とを備えることを特徴とする、
インタフェースモジュール。 - 各々のブロックが、プログラムデータを格納するメモリアレイと前記メモリアレイに格納されている前記プログラムデータの内容を外部からの読み取りに対して保護すべきか否かの情報を示すプロテクト制御ビットを格納するプロテクト制御ビット領域とから成る、複数のブロックに分割された不揮発性メモリと、
CPUとの間に設けられており、
前記CPUからCPUバスを介してその内容を外部からの読み取りに対して保護すべき対象のプログラムデータを読み出すことを指令するオペランドアクセスを要求して来た場合には前記保護対象のプログラムデータ以外のデータを無効化処理データとして前記CPU側に送信するインタフェースモジュールであって、
リセット解除後、前記CPUからのアクセス要求に応じる前に、前記不揮発性メモリの前記複数のブロックの各々から前記プロテクト制御ビットを読み出して、ブロック数と同数のビット数の信号から成り、且つ、各ブロックのプロテクト制御ビットを当該信号の各ビットの値に順次に設定されるモニタ信号を作成するプロテクト制御ビット読み出し部と、
前記CPUからのアクセス要求に応じる前に、前記プロテクト制御ビット読み出し部によって作成された前記モニタ信号を既に保有するモニタレジスタと、
リセット解除後、前記CPUからのアクセス要求に応じる前に、前記CPUバスを介して前記CPUによって書き込まれた、前記保護対象のプログラムデータの内の一部であって且つ転送すべきプログラム領域の情報を保有する転送領域設定レジスタと、
前記CPUからのアクセス要求に応じる前に、前記CPUバスを介して前記CPUによって転送開始を示す値が書き込まれる転送動作指定ビットと、転送状況フラグビットとを有する転送制御信号を保有する転送制御レジスタと、
前記CPUからのアクセス要求に応じる前に、前記転送制御レジスタによる制御の下で、且つ、前記モニタレジスタと前記転送領域設定レジスタが保持する前記情報を参照しつつ、前記保護対象のプログラムデータの内の一部であって且つ転送すべき前記プログラム領域を前記不揮発性メモリから読み出して転送するRAM転送処理部と、
前記保護対象のプログラムデータの内の一部であって且つ転送すべき前記プログラム領域と同一の記憶領域を有しており、前記RAM転送処理部によって転送されて来た前記保護対象のプログラムデータの内の一部であって且つ転送すべき前記プログラム領域を、前記CPUからのアクセス要求に応じる前の段階で、予め格納するプロテクトRAMと、
前記CPUから前記CPUバスを介して命令フェッチの要求を受けた場合に、前記命令フェッチのアドレスと前記モニタレジスタと前記転送領域設定レジスタが保持する前記情報とを比較して、前記命令フェッチのアクセス先が前記保護対象のブロック内のプログラムデータの一部であって且つ転送すべき前記プログラム領域であるか否かを判定する比較部と、
前記不揮発性メモリの前記複数のブロックの各々の前記メモリアレイに格納されているプログラムデータを読み出す機能を有するメモリアレイ読み出し部と、
その入力端が前記プロテクトRAMと前記メモリアレイ読み出し部とに接続されており、前記比較部での結果が前記命令フェッチの前記アクセス先が前記保護対象のブロック内の前記プログラム領域であることを示している場合であって、且つ、前記転送制御レジスタの前記転送状況フラグビットが転送完了を示している場合には、前記プロテクトRAMからのデータ読み出しを選択して、前記プロテクトRAMに格納されている前記保護対象のブロック内の前記プログラム領域を読み出した上で、前記CPUバスを介して、前記CPUに送信するセレクタ処理部とを備えることを特徴とする、
インタフェースモジュール。 - CPUと、
不揮発性メモリと、
請求項1又は2に記載の前記インタフェースモジュールとが、
1つのLSIチップ内に搭載されていることを特徴とする、
半導体集積回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007212123A JP2009048322A (ja) | 2007-08-16 | 2007-08-16 | インタフェースモジュール及び半導体集積回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007212123A JP2009048322A (ja) | 2007-08-16 | 2007-08-16 | インタフェースモジュール及び半導体集積回路 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009048322A true JP2009048322A (ja) | 2009-03-05 |
Family
ID=40500492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007212123A Pending JP2009048322A (ja) | 2007-08-16 | 2007-08-16 | インタフェースモジュール及び半導体集積回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009048322A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113076563A (zh) * | 2021-04-08 | 2021-07-06 | 上海磐启微电子有限公司 | 一种Flash内容保护方法及装置 |
-
2007
- 2007-08-16 JP JP2007212123A patent/JP2009048322A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113076563A (zh) * | 2021-04-08 | 2021-07-06 | 上海磐启微电子有限公司 | 一种Flash内容保护方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5951685A (en) | Computer system with system ROM including serial-access PROM coupled to an auto-configuring memory controller and method of shadowing BIOS code from PROM | |
KR100708128B1 (ko) | 낸드 플래시 메모리 제어 장치 및 방법 | |
JP4593575B2 (ja) | 埋め込み型コンピュータシステムの各構成部材のための共通化インターフェース | |
JP4136359B2 (ja) | マイクロコンピュータ | |
JP2004062280A (ja) | 半導体集積回路 | |
KR100634436B1 (ko) | 멀티 칩 시스템 및 그것의 부트코드 페치 방법 | |
KR20180025127A (ko) | NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법 | |
JP2003044358A (ja) | キャッシュメモリ制御装置 | |
JP2005010942A (ja) | ブートコードが格納されるシーケンシャルアクセス・メモリデバイスを備えた装置及び前記装置の起動方法 | |
US7415576B2 (en) | Data processor with block transfer control | |
WO2021091649A1 (en) | Super-thread processor | |
JP2012043031A (ja) | 共有キャッシュメモリ装置 | |
JP2000276370A (ja) | マイクロコンピュータ、電子機器及びエミュレーション方法 | |
JP2000082010A (ja) | アドレス変換を有するデータ処理方法および装置 | |
JP2009048322A (ja) | インタフェースモジュール及び半導体集積回路 | |
JP3747213B1 (ja) | シーケンシャルromインターフェース対応nand型フラッシュメモリーデバイス及びそのコントローラ | |
JP2568017B2 (ja) | マイクロプロセッサ及びそれを使用したデータ処理システム | |
TWI249130B (en) | Semiconductor device | |
JP4431492B2 (ja) | 複数のコヒーレンシー・グラニュールをサポートするデータ転送ユニット | |
JP2004094807A (ja) | 命令キャッシュおよびマイクロプロセッサとその設計方法 | |
JP5440419B2 (ja) | 情報処理システム | |
JP2005276104A (ja) | マイクロコンピュータ | |
JP3217348B2 (ja) | 情報処理システム | |
JP2004258935A (ja) | 半導体装置 | |
GB2304209A (en) | Starting up a processor system |