JP6603100B2 - メモリ制御装置及びメモリ制御方法 - Google Patents

メモリ制御装置及びメモリ制御方法 Download PDF

Info

Publication number
JP6603100B2
JP6603100B2 JP2015211061A JP2015211061A JP6603100B2 JP 6603100 B2 JP6603100 B2 JP 6603100B2 JP 2015211061 A JP2015211061 A JP 2015211061A JP 2015211061 A JP2015211061 A JP 2015211061A JP 6603100 B2 JP6603100 B2 JP 6603100B2
Authority
JP
Japan
Prior art keywords
instruction
program
memory
address
conversion
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.)
Active
Application number
JP2015211061A
Other languages
English (en)
Other versions
JP2017084062A (ja
Inventor
智晃 安藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lapis Semiconductor Co Ltd
Original Assignee
Lapis Semiconductor Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Lapis Semiconductor Co Ltd filed Critical Lapis Semiconductor Co Ltd
Priority to JP2015211061A priority Critical patent/JP6603100B2/ja
Publication of JP2017084062A publication Critical patent/JP2017084062A/ja
Application granted granted Critical
Publication of JP6603100B2 publication Critical patent/JP6603100B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、メモリ制御装置及びメモリ制御方法に関し、特に、CPU(Central Processing Unit:中央演算処理装置)及びその制御下にあるメモリを備えたマイクロコンピュータシステムにおいて、該メモリの記憶領域等の制御を実行するメモリ制御装置及びメモリ制御方法に関する。
マイクロコンピュータシステムにおいて処理の対象となるプログラムデータは、通常記憶装置(メモリ、例えばフラッシュ(FLASH)メモリ等の不揮発性メモリ)に格納されている。そして、該プログラムに基づく所定の処理の実行は、CPUが具備するプログラムカウンタ(PC)でプログラムデータが格納されたメモリのアドレスが逐次指定され、当該アドレスのプログラムデータが読み出され、そのプログラムデータを命令として実行することにより行われる。
CPUによる処理の実行においては、プログラム上の不具合の修正等のために、処理の内容や順序の変更等を要求される場合がある。処理を変更させる従来技術の一例として、リマップがある。リマップとは、PCに基づくプログラムの実行中において、PCで指定されたメモリの領域に、CPUが本来実行するプログラム空間とは異なったプログラム空間が見えるようにし、その異なったプログラム空間の命令を実行させることにより処理の内容を変更する技術である。
上記のようなリマップ機能について開示した文献として、特許文献1に記載された割り込み制御装置がある。特許文献1に開示された割り込み制御装置は、CPU、メモリ、割り込みコントローラ、リマップ回路を含み、リマップ回路は、リマップレジスタ領域と、セレクタとを含んで構成されている。リマップレジスタ領域は、割り込み要求の数に対応した数のレジスタで構成されており、各レジスタは、同一のメモリ上のアドレスにマッピングされるレジスタであって、各レジスタには、割り込み要求番号に対応した割り込み処理ルーチンへのジャンプ命令が格納されている。セレクタは、割り込みコントローラから通知された割り込み要求番号に基づいて、リマップレジスタ領域内のレジスタから、割り込み要求に対応した割り込み処理ルーチンへのジャンプ命令が格納されたレジスタを1つ選択して、メモリ上の割り込みベクタアドレスにマッピングすることにより、マッピング機能を実現している。
一方、メモリは、プログラム領域、データ領域等の特定の属性を伴った領域に分割されているのが一般的である。プログラム領域とは、プログラム処理の命令を記憶しておく領域である。また、データ領域とは、プログラム処理に伴って必要となるデータを記憶する領域であり、プログラム処理の実行に際しデータが読み出されたり、書き込まれたりする領域である。また、メモリの特定の領域を、書き換え可能領域、あるいは書き換え不可(ライトプロテクト)領域として指定したい場合もある。
読み出し、書き込みの制御に関する従来技術として、フラッシュメモリ等のメモリの一部に予め所定のデータを配置しておき、そのデータをフラッシュメモリに搭載されているロジック回路で読み込み、そのデータのコードオプションを用いて外部からメモリをコントロールすることにより、読み出し、あるいは書き込み機能を制限するブロックイネーブルなどが知られている。
また、ライトプロテクト機能のない不揮発性メモリにおいて、不揮発性のライトプロテクトを実現する従来技術として、特許文献2に開示された半導体情報処理装置が知られている。特許文献2に開示された半導体情報処理装置では、ライトプロテクトを行いたいエリアのアドレスを格納するライトプロテクト保存レジスタが、フラッシュメモリのアトリビュート領域に設定され、このライトプロテクト保存レジスタを用いてシステムからプロテクト範囲が設定されるようになっている。
特開2012−141667号公報 特開2007−207277号公報
しかしながら、特許文献1に開示されたようなリマップでは、PCを指定することによって、通常のメモリ領域とは異なる領域のデータをCPUに見せるという方法でプログラムを実行するため、そのプログラム領域の確保が必要となり、メモリの容量の制限等の理由から、同時に多くのリマップ機能を使用することは難しいという問題点があった。
また、特許文献2に開示されたようなライトプロテクトでは、メモリに対しアクセスの制限を設定することはできるが、メモリのブロック単位での、書き込み、読み出し、あるいは消去といった動作を禁止することしかできず、様々なソフトウエア・アプリケーションに合わせて、メモリを使用することができないという問題点があった。
本発明は、上述した課題を解決するためになされたものであり、簡易な方法でかつ柔軟にメモリの領域設定を行うことが可能なメモリ制御装置及びメモリ制御方法を提供することを目的とする。
本発明に係るメモリ制御装置は、プログラムを実行するための命令が対応するアドレスと共に記憶されたメモリ、及び、前記プログラムを実行するための一連の命令に対応する前記メモリの前記アドレスが順番に格納されかつカウントの進行に伴い格納された前記アドレスを逐次読み出して対応する命令を逐次特定するプログラムカウンタを備えると共に、前記プログラムカウンタにより特定された一連の命令に従ってプログラムを実行する中央処理装置を含むマイクロコンピュータシステムにおける前記メモリを制御するメモリ制御装置であって、前記プログラムカウンタに格納された前記アドレスの少なくとも1つを指定アドレスとして保持する指定アドレスレジスタと、前記指定アドレスに対応する前記メモリの変換前命令と異なる変換後命令を保持する変換後命令保持部と、前記プログラムの進行に伴って前記プログラムカウンタから読み出された前記アドレスと前記指定アドレスレジスタに保持された前記指定アドレスとが一致した場合に、前記変換前命令に代えて前記変換後命令を前記プログラムを実行するための命令として前記中央処理装置に送る命令変換部と、を備える。
本発明に係るメモリ制御方法は、プログラムを実行するための命令が対応するアドレスと共に記憶されたメモリ、及び、前記プログラムを実行するための一連の命令に対応する前記メモリの前記アドレスが順番に格納されかつカウントの進行に伴い格納された前記アドレスを逐次読み出して対応する命令を逐次特定するプログラムカウンタを備えると共に、前記プログラムカウンタにより特定された一連の命令に従ってプログラムを実行する中央処理装置を含むマイクロコンピュータシステムにおける前記メモリを制御するメモリ制御方法であって、指定アドレスレジスタに、前記プログラムカウンタに格納された前記アドレスの少なくとも1つを指定アドレスとして保持させ、変換後命令保持部に、前記指定アドレスに対応する前記メモリの変換前命令と異なる変換後命令を保持させ、命令変換部により、前記プログラムの進行に伴って前記プログラムカウンタから読み出された前記アドレスと前記指定アドレスレジスタに保持された前記指定アドレスとが一致した場合に、前記変換前命令に代えて前記変換後命令を前記プログラムを実行するための命令として前記中央処理装置に送る。
本発明によれば、簡易な方法でかつ柔軟にメモリの領域設定を行うことが可能なメモリ制御装置及びメモリ制御方法を提供することが可能となる。
実施の形態に係るマイクロコンピュータシステムの構成の一例を示す機能ブロック図である。 第1の実施の形態に係るメモリ制御装置の構成の一例を示す機能ブロック図、及び命令変換レジスタセット内容の一例を示す模式図である。 第1の実施の形態に係る命令変換部の構成の一例を示す機能ブロック図である。 第1の実施の形態に係る設定回路を用いた命令変換を説明するための模式図である。 第2の実施の形態に係るメモリ制御装置の構成の一例を示す機能ブロック図、及び命令変換レジスタセット内容の一例を示す模式図である。 第2の実施の形態に係る設定レジスタを用いた命令変換を説明するための模式図である。 第3の実施の形態に係る複数のプログラムカウンタによる命令変換を説明するための模式図である。 第4の実施の形態に係るメモリ制御装置の構成の一例を示す機能ブロック図、及び書き換え設定レジスタセットの内容の一例を示す模式図である。 第4の実施の形態に係るメモリ制御装置の動作を説明するための模式図である。 第4の実施の形態に係るメモリの領域分割の一例を示す模式図である。 第4の実施の形態に係るメモリの領域分割の一例を示す模式図である。 第4の実施の形態に係るメモリの領域分割の一例を示す模式図である。
以下、図面を参照して、本発明を実施するための形態について詳細に説明する。
[第1の実施の形態]
図1ないし図4を参照して、本実施の形態に係るメモリ制御装置について説明する。本実施の形態に係るメモリ制御装置は、予め設けた設定回路でCPUのプログラムカウンタ(PC)を指定することにより、指定されたPCの命令が、メモリに格納された本来実行すべき命令ではなく、ハードウエアで疑似的に設定された命令に変換され、CPUによって当該変換された命令が実行される機能(命令変換機能)を有する。以下では、変換後に実行される命令が、ジャンプ命令(擬似ジャンプ命令)である場合を例示して説明する。
図1は、実施の形態に係るマイクロコンピュータシステム1を示す機能ブロック図である。図1に示すように、マイクロコンピュータシステム1は、メモリ制御装置10、メモリ12、及びCPU14を含んで構成されている。メモリ制御装置10は、本実施の形態に係るメモリ制御装置である。メモリ12の種類は特に限定されないが、本実施の形態では、フラッシュメモリのような不揮発性メモリを想定している。CPU14は、一般的なCPUであり、内部にプログラムカウンタ140を備えている。
図2(a)に本実施の形態に係るメモリ制御装置10の機能ブロック図を示す。図2(a)に示すように、メモリ制御装置10は、命令変換部100、変換後命令設定回路112、及び命令変換レジスタセット120を含んで構成されている。
図2(b)に、本実施の形態に係る命令変換レジスタセット120に含まれるレジスタの内容を示す。図2(b)に示すように、命令変換レジスタセット120は、以下の3つのレジスタが含まれている。
すなわち、「PCON」レジスタは、メモリ制御装置10の命令変換機能を使用するか否かについての指定を格納するレジスタであり、本実施の形態では、論理値=1で使用する、論理値=0で使用しないとしている。むろんこの対応関係は逆の論理値であってもよい。「CSR」レジスタは、命令変換の対象となるPC(以下、「指定PC」という)の、メモリ12におけるセグメントデータを格納するレジスタである。「PC指定」レジスタは、指定PCのアドレスデータを格納するレジスタである。
変換後命令設定回路112は、変換後の命令を設定する回路であり、当該命令を4桁の16進数で指定するハードウエア回路である。
図3(a)に本実施の形態に係る命令変換部100の構成の一例を示す。図3(a)に示すように、命令変換部100は、AND回路102、OR回路104、及びセレクタ106、108、110を含んで構成されている。各セレクタに付与された(1)及び(0)は入力端子を表す符合であり、各々セレクト信号の論理値が「1」の場合に、及び「0」の場合に選択される入力端子であることを示している。命令変換部100の一部である、AND回路102、OR回路104、及びセレクタ106、108を含む回路を、便宜上「選択回路114」といい、選択回路114におけるAND回路102の出力端子を符号「a」で表記し、セレクタ106の出力端子を符号「b」で表記する。
図3(a)に示すように、変換後命令設定回路112の出力「INST1」及び「INST2」は、セレクタ106の(1)入力端子、及びセレクタ108の(1)端子入力に各々接続されている。なお、変換後の命令を示す変換後命令設定回路112の出力が2つあるのは、本実施の形態で想定しているジャンプ命令が2ワードで構成されるためであり、各々4桁の16進数で表されている。変換後命令INST1が上位1ワード分の命令を、変換後命令INST2が下位1ワード分の命令を各々示している。むろん、変換後命令が1ワード命令の場合は、変換後命令設定回路112の出力は、1つの変換後命令INSTである。
次に、命令変換部100の動作について説明する。まず、指定PCのセグメントデータをCSRレジスタに、指定PCのアドレスデータをPC指定レジスタに設定し、本来実行されるべき命令を疑似ジャンプ命令に変換したいPCを設定する。次に、PCONレジスタを論理値「1」に設定して、本命令変換機能を使用することを指定する。
PCONレジスタが有効の場合、CPUが保有するPCのセグメントデータ(CPU_CSR)とCSRレジスタのセグメントデータとの比較処理、及びCPUが保有するPCのアドレスデータ(CPU_PC)とPC指定レジスタのアドレスデータとの比較処理が実行される。比較結果が一致しない場合は何も処理を行わないが、一致した場合は、CPUに出力されるデータCPU_DINが、メモリに記憶されているデータ(メモリデータ)から、変換後命令設定回路112が出力する変換後命令INST1及びINST2、すなわち、本実施の形態では、疑似ジャンプ命令1及び擬似ジャンプ命令2のデータに変換される。
以上の動作を実現する回路の一例について、図3(a)に示す命令変換部100のブロック図に基づいて説明する。なお、図3(a)において、記号X==Yは、XとYが一致した場合には論理値「1」とし、一致しない場合には論理値「0」とすることを表記する記号である。すなわち、PCONレジスタと1が比較され一致した場合(つまり、PCONレジスタの値が「1」の場合)に論理値「1」とされ、CSRレジスタとCPU_CSRとの比較結果が一致した場合に論理値「1」とされ、PC指定レジスタとCPU_PCとの比較結果が一致した場合には論理値「1」とされる。
AND回路102は3入力AND回路であり、PCONレジスタの論理値と、CSRレジスタとCPU_CSRとの比較結果と、PC指定レジスタとCPU_PCとの比較結果が入力さる。AND回路102の出力は、3つの入力の論理値がすべて「1」の場合に「1」を出力し、その他の場合に論理値「0」を出力する。
AND回路102の出力によってセレクタ110が切り換えられ、AND回路102の出力が「0」の場合にはメモリ12に記憶されたデータであるメモリデータが、AND回路102の出力が「1」の場合には擬似ジャンプ命令が選択され、CPU_DINデータとしてバス16に出力される。出力されたCPU_DINデータはCPU14に取り込まれ、実行される。
OR回路104は2入力OR回路であり、PC指定レジスタとCPU_PCとの比較結果と、PC指定レジスタ+1とCPU_PCとの比較結果と、が入力され、いずれか一方が一致した場合に論理値「1」を出力する。PC指定レジスタ+1はPC指定レジスタの次のレジスタを意味している。つまり、本実施の形態では、2ワードの命令を前提としている。
PC指定レジスタとCPU_PCとの比較結果が一致した場合には、OR回路104の一方の入力に論理値「1」が入力されると共に、セレクタ106において、(1)入力端子の変換後命令INST1が選択され、セレクタ110で(1)入力端子が選択されている場合には、INST1がCPU_DINとして出力される。
また、PC指定レジスタ+1とCPU_PCとの比較結果が一致した場合には、OR回路104の他方の入力に論理値「1」が入力されると共に、セレクタ108において、(1)入力端子の変換後命令INST2が選択される。この際、セレクタ106のセレクト信号は論理値「0」となっているので、セレクタ106ではセレクタ108の出力に接続された(0)入力端子が選択され、セレクタ110で(1)入力端子が選択されている場合には、INST2がCPU_DINとして出力される。
命令変換部100は以上のように動作し、PCで指定された本来CPUが実行すべき命令を他の命令に変換し、つまり、本実施の形態では擬似ジャンプ命令に変換し、当該擬似ジャンプ命令を実行する。
次に、図4を参照して、命令変換部100の動作とメモリ12の記憶領域との関係について説明するが、まず上述した命令変換部100の動作を以下にまとめて記す。
[1]CSRレジスタ及びPC指定レジスタにデータを格納する。本例では、このデータを0:0330H(セグメント=0、アドレス=0330H、以下これらのデータを「設定データ」という)とする。
[2]PCONを論理値「1」に設定し、本機能を有効にする。
[3]CSRレジスタの値とCPU_CSRとの比較処理、PC指定レジスタとCPU_PCとの比較処理を実行する。
[4]上記の比較結果がいずれも一致した場合に、変換後命令設定回路112で、ハードウエア的に設定したメモリのアドレスにジャンプする命令を実行する。
[5]ジャンプ先で指定された処理を実行し、予め定められた条件でジャンプ元に戻る。
図4は、CPU14のPCで指定されたアドレスに従って、メモリ12に格納されたプログラムが逐次実行されていく状態を示している。そして、[3]における比較処理の結果、PCに対応するセグメント及びアドレスが[1]で設定した設定データと一致した場合には、本来実行すべき変換前命令20が、変換後の命令である変換後命令22に変換される。より具体的には、PC=0:0330Hで指定された命令MOV R0,#01H、PC=0:0332Hで指定された命令MOV R1,#01Hの組で表された変換前命令20が、B 2:C000H(セグメント・アドレス=2:C000Hへのジャンプ命令)で表された変換後命令22に変換されている。このことにより、図4中の[4]で示されたように、メモリ12のセグメント・アドレス=2:C000Hにジャンプし、当該アドレスに格納されたプログラムを実行する。その後、予め定められた条件で次のPCの値に戻る([5])。
以上のようにして、本実施の形態に係るメモリ制御装置10では、CPU14のプログラムカウンタ140で指定される命令を変換し、実行すべき命令が格納されたメモリ12内の領域が変更される。従って、本実施の形態に係るメモリ制御装置10によれば、簡易な方法でかつ柔軟にメモリの領域設定を行うことが可能となる。
<第1の実施の形態の変形例>
図3(b)を参照して、本実施の形態に係るメモリ制御装置10aについて説明する。
本実施の形態は、指定PCを複数にし、各々の指定PCで変換される命令を異ならせる場合の形態である。そのため、メモリ制御装置10aの命令変換部100は、複合命令変換部100aに変更されている。
図3(b)は、指定PCが3つの場合の複合命令変換部100aの構成の一例を示す機能ブロック図である。複合命令変換部100aは、各々の指定PCに対応する3つの選択回路114−1、114−2、114−3(図示省略)、OR回路130、132、及びセレクタ110aを含んで構成されている。3つの選択回路114−1、114−2、114−3の各々のa端子から出力信号a−1、a−2、及びa−3が出力され、b端子から出力信号b−1、b−2、及びb−3が出力される。出力信号a−1、a−2、a−3は、OR回路130に入力され、出力信号b−1、b−2、b−3は、OR回路132に入力される。
選択回路114−1、114−2、114−3の各々は図3(a)に示す選択回路114と同様の構成となっている、すなわち、各々の選択回路114の入力は、PCONレジスタ==1の演算結果、CSRレジスタ==CPU_CSRの演算結果、PC指定レジスタ==CPU_PCの演算結果、PC指定レジスタ+1==CPU_PCの演算結果、変換後命令INST1、INST2、メモリデータ、及び0000Hである。選択回路114−1、114−2、114−3の各々は、それぞれの入力に対応する出力信号a−1、a−2、a−3、及び出力信号b−1、b−2、b−3を出力する。
いずれかの選択回路114の入力が上記の条件を満たすことにより、出力信号aの値がa=1となった場合には、OR回路130の出力信号が1となり、セレクタ110aによってOR回路132の出力信号が選択される。このとき、OR回路132の出力信号は、出力信号b−1、b−2、b−3のいずれかにより、a=1となった選択回路114における変換後命令INST1又はINST2となっているので、当該選択回路114の変換後命令INST1又はINST2がセレクタ110aから出力され、バス16を介してCPU14に取り込まれ、実行される。一方、いずれの選択回路114の入力も上記の条件を満たさない場合には、OR回路130の出力信号が0となるので、セレクタ110aでメモリデータが選択され、バス16を介してCPU14に取り込まれ、実行される。
なお、本実施の形態では、複合命令変換部100aの指定PCが3つの場合を例示して説明したが、これに限られず、指定PCはいくつであってもよい。また、本実施の形態における指定PCのアドレスは異なっていても同じであってもよいし、指定PCに対応する変換後命令INSTが異なっていても同じであってもよい。
以上詳述したように、本実施の形態に係るメモリ制御装置では、予め指定PCを設定回路にセットしておき、CPUがそのPCの命令を実行しようとした際に、ハードウエアで疑似的に命令を変換することによって、つまり本実施の形態ではジャンプ命令分のみの命令の変換を行うことによって、メモリ内部に格納された本来指定されているアドレスの命令に代えて、意図した領域の命令、すなわちプログラムを実行することができる。従って、リマップのように、CPUに対して、メモリの一定領域のアドレスを化かして見せる必要はなく、また、複数の指定PCを設定したい場合にも、回路(命令変換部100)を追加することによって、容易に設定できるという効果がある。
[第2の実施の形態]
図5及び図6を参照して、本実施の形態に係るメモリ制御装置10bについて説明する。メモリ制御装置10が、変換後命令設定回路112によってハードウエア的に変換後命令INSTを設定したのに対し、本実施の形態は、専用のレジスタによってハードウエア的に変換後命令INSTを設定する形態である。
図5(a)に本実施の形態に係るメモリ制御装置10bのブロック図を示す。図5(a)に示すように、メモリ制御装置10bは、命令変換部100、及び命令変換レジスタセット120aを含んで構成されている。つまり、図2(a)に示すメモリ制御装置10の変換後命令設定回路112を備えていない。図5(a)に示す命令変換部100は、図2(a)に示す命令変換部100と同じものである。
図5(b)に本実施の形態に係る命令変換レジスタセット120aの内容の一例を示す。図5(bに示すように、命令変換レジスタセット120aは、PCONレジスタ、CSRレジスタ、PC指定レジスタ、及び変換後命令レジスタRINSTを含んで構成されている。PCONレジスタ、CSRレジスタ、及びPC指定レジスタの機能は図2(b)と同様なので、詳細な説明は省略する。変換後命令レジスタRINSTは、変換後命令INSTを格納するレジスタであり、その出力は、命令変換部100のセレクタ106の(1)入力端子及びセレクタ108の(1)入力端子に接続されている(図3(a)参照)。
本実施の形態に係るメモリ制御装置10bは、以下のように動作する。
[1]CSRレジスタ及びPC指定レジスタにデータを格納する。本例では、このデータを0:0330H(セグメント=0、アドレス=0330H、以下これらのデータを「設定データ」という)とする。
[2]変換後の命令を、変換後命令レジスタRINSTに格納する。本例では、この命令を、B 2:C000H(セグメント・アドレス=2:C000Hへのジャンプ命令)とする。
[3]PCONを論理値「1」に設定し、本機能を有効にする。
[4]CSRレジスタの値とCPU_CSRとの比較処理、PC指定レジスタとCPU_PCとの比較処理を実行する。
[5]上記の比較結果がいずれも一致した場合に、変換後命令レジスタRINSTでハードウエア的に設定したメモリのアドレスにジャンプする命令を実行する。
[6]ジャンプ先で指定された処理を実行し、予め定められた条件でジャンプ元に戻る。
図6は、CPU14のPCで指定されたアドレスに従って、メモリ12に格納されたプログラムが逐次実行されていく状態を示している。そして、[4]における比較処理の結果、PCに対応するセグメント及びアドレスが[1]で設定した設定データと一致した場合には、本来実行すべき変換前命令20が、変換後の命令である変換後命令22に変換される。より具体的には、PC=0:0330Hで指定された命令MOV R0,#01H、PC=0:0332Hで指定された命令MOV R1,#01Hの組で表された変換前命令20が、B 2:C000H(セグメント・アドレス=2:C000Hへのジャンプ命令)で表された変換後命令22に変換されている。このことにより、図6中の[5]で示されたように、メモリ12のセグメント・アドレス=2:C000Hにジャンプし、当該アドレスに格納されたプログラムを実行する。その後、予め定められた条件で次のPCの値に戻る([6])。
[第3の実施の形態]
図7を参照して、本実施の形態に係るメモリ制御装置10cについて説明する。本実施の形態は、変換後命令レジスタRINSTを用いて、複数の指定PCに対応する形態である。図7は、指定PCのアドレスと、ジャンプ命令でジャンプする飛び先アドレス(ジャンプ先アドレス)の対応を示した図である。図7は、例えば、指定PCのアドレスがPC0の場合には、変換後命令が、ジャンプ命令B 2:C000Hであることを示している。
図7に示すように、設定できるPC、すなわち指定PCが複数ある場合には、指定PCに番号を割り振ることによって、飛び先のアドレスを変更する。処理の流れは指定PCがひとつの場合と同様であるが、飛び先アドレスに関しては、パラメータで先頭のアドレスを設定しておき、そのアドレスを指定PCであるPC0の飛び先に設定し、それ以降はアドレスをずらすことによって飛び先を変更する。この際、アドレスの間隔は、ジャンプ命令が一つ入る程度でよい。また、飛び先によってどのPCからジャンプしてきたか判断できるので、ジャンプ先から戻る場合に便利である。
[第4の実施の形態]
図8ないし図12を参照して、本実施の形態に係るメモリ制御装置10dについて説明する。上記実施の形態では、メモリ制御装置の命令変換機能によって、指定PCを設定することにより本来実行すべき命令を変換し、一例として、メモリの本来指定されたアドレスとは異なるアドレスにジャンプさせ、本来実行すべき処理とは異なる処理を実行させた。これに対し、本実施の形態は、上記実施の形態でジャンプしたジャンプ先のメモリの領域が、処理内容に応じて適切な属性の領域となるように、メモリの領域を分割する形態である。より詳細には、メモリのコードオプションを使用し、ブロックイネーフブルと類似の処理を行いながらも、様々なソフトウエア・アプリケーションに対応させるために、さらに機能を拡張させた形態である。ここで、コードオプションとは、領域分割の対象となるメモリを制御するためのパラメータをさし、本実施の形態では、特に書き換え設定レジスタセットに格納すべきパラメータをいう。
図8(a)は、本実施の形態に係るメモリ制御装置10dの機能ブロック図を示している。図8(a)に示すように、メモリ制御装置10dは、メモリローダ(設定部)200、及び書き換え設定レジスタセット202を含んで構成されている。なお、図8(a)に示したメモリ制御装置10dは、本実施の形態に関わる構成のみを抽出して記載しているが、むろん、図2(a)、図5(a)に示す、命令変換部100、命令変換レジスタセット120(120a)、変換後命令設定回路112を含んでいてもよい。
メモリ12の種類に特に制限はないが、本実施の形態では、フラッシュメモリ等の不揮発性メモリを想定しており、メモリ空間の領域は、一般的なメモリと同様に、プログラム領域210とデータ領域214とに分割されている。本実施の形態に係るメモリ12では、さらに、テスト(設定データ)領域212を備えている。テスト領域212とは、メモリ12の周辺回路を動作させるためのパラメータが格納される領域であるが、本実施の形態では、コードオプション、すなわち書き換え設定のためのデータ(以下、「書き換え設定データ」という)が格納されている。
メモリローダ200は、メモリ12のテスト領域212から書き換え設定データを読み込み、書き換え設定データの各パラメータを書き換え設定レジスタセット202の各レジスタに格納させる。
書き換え設定レジスタセット202は、メモリ12のメモリ空間の領域分割を行うための各パラメータを格納するレジスタの組である。図8(b)に、書き換え設定レジスタセット202の内容を示す。図8(b)に示すように、本実施の形態に係る書き換え設定レジスタセット202には、書き換えアクセプタレジスタ、書き換えプログラム領域開始アドレスレジスタ、及び書き換え領域分割設定レジスタの3つのレジスタが含まれており、これらの3つのレジスタの内容に応じて、メモリ12のメモリ空間が分割される。
書き換えアクセプタレジスタには、書き換えアクセプタを設定するデータ(アクセプタ設定データ)が格納される。アクセプタ設定とは、領域分割のパターンに合わせて、プログラムによるメモリの書き換えや消去、プログラムの実行を可能にするか否かの設定を行うことであり、アクセプタ設定データはこの切り替えを行うためのデータである。このデータの値が所定の値の場合、書き換え処理などが有効状態となる。書き換え処理などを有効状態にした後、書き換えプログラム領域開始アドレスデータと、領域分割設定データをもとに、メモリ12の領域を、固定領域と書き換え領域に区分する。ここで、固定領域とはソフトウエアからイレース(消去)/ライト(書き込み)を行うことができない領域であり、書き換え領域とは、プログラムからイレース/ライトを行うことができる領域である。
書き換えプログラム領域開始アドレスレジスタには、書き換えプログラム領域を開始するアドレスを指定するデータ(プログラム領域開始アドレスデータ)が格納される。上記のアクセプタ設定によって、書き換え処理が有効状態とされている場合に、指定されたアドレス以降が書き換えプログラム領域となる。
書き換え領域分割設定レジスタには、書き換え領域の領域数を指定するデータ(領域分割データ)が格納される。上記のアクセプタ設定によって、書き換え処理が有効状態とされている場合において、例えば、領域分割データの値が「0x0」の場合には書き換え領域を1領域確保し、領域分割データが「0x1」の場合には書き換え領域を2領域確保する。ただし、本実施の形態では、2領域を確保した場合のCPU14の実行領域は、予め定められたレジスタ(CPU14がアクセス可能な領域を指定するレジスタ、以下、「アクセス領域指定レジスタ」という)の値に応じて、片方の領域のみとなる。
本実施の形態に係るメモリ制御装置10dでは、以上の3つのデータ、すなわち、図8(b)に示すアクセプタ設定データ、プログラム領域開始アドレスデータ、及び領域分割データの3つのデータを設定することによって、メモリ制御装置10dによるメモリの分割制御方法が変わる。
次に、図9を参照して、メモリ12の分割制御方法、すなわち、テスト領域212(コードオプション)のデータが各レジスタに格納され、メモリ12のメモリ空間が分割されるまでの流れを説明する。図9の[1]ないし[3]は、本実施の形態に係るメモリ12の分割制御の手順を示しており、その内容は以下のとおりとなっている。
[1]CPU14の起動前に実行されるメモリ制御装置10dのリセット時に、メモリローダ200がテスト領域212に格納されたコードオプションをロードする(読み込む)。
[2]書き換え設定レジスタセットの各レジスタに、メモリローダ200がロードした各データ(アクセプタ設定データ、プログラム領域開始アドレスデータ、及び領域分割データ)が格納される。
[3]コードオプションのデータに基づいてメモリ12の領域分割の設定方法が決定され、領域分割が実行される。
以上の分割制御が実行されることにより、メモリ12に対するCPU14のアクセス方法(以下、「CPUアクセス」という)が設定される。以下、各CPUアクセスについて説明する。なお、図9に示すように、以下の説明では、プログラム領域開始アドレスデータを「0xYYYY」として説明する。
図10(a)は、書き換え無効の場合、すなわち、書き換えアクセプタレジスタにおいて、アクセプタ設定データが無効に設定されている場合のCPUアクセスを、図10(b)は、その際の各レジスタの値を、各々示している。本実施の形態では、アクセプタ設定の値が「0」で書き換え無効、「1」で書き換え有効としている。むろん、この対応関係は逆の論理値であってもよい。図10(a)に示すように、アクセプタ設定データが無効状態においては、プログラムメモリ空間の全領域が固定プログラム領域となるので、ROM参照(データの読み出し)は可能であるが、Erase/Write(消去及び書き込み)は行うことができない。ここで、本実施の形態における「固定プログラム領域」とは「固定プログラム」が格納された領域であり、「固定プログラム」とは、本実施の形態に係るマイクロコンピュータシステム1を動作させるためのプログラムである。
図11(a)は、書き換え有効の場合、すなわち、書き換えアクセプタレジスタにおいて、アクセプタ設定データが有効に設定されている場合で、書き換え領域分割設定が、1領域に設定された場合のCPUアクセスを、図11(b)は、その際の各レジスタの値を各々示している。アクセプタ設定が有効の状態においては、プログラムメモリ空間が、固定プログラム領域と、書き換えプログラム領域とに分割される。書き換えプログラム領域は、書き換えプログラム領域開始アドレスYYYYを開始アドレスとするメモリ空間上の一定の領域を占める。
ここで、本実施の形態における「書き換えプログラム領域」とは「書き換えプログラム」が格納された領域をいう。また、「書き換えプログラム」とは「固定プログラム」と組み合わされるプログラムであり、本実施の形態では、「固定プログラム」+「書き換えプログラム」でひとつのプログラムを構成している。すなわち、例えば固定プログラム中に記述されたジャンプ命令で書き換えプログラムに移行することにより、両者は一体のプログラムとして機能する。固定プログラム領域においては、ROM参照は可能であるが、Erase/Writeは行うことができない。書き換えプログラム領域は書き換え可能領域となるので、ROM参照に加え、Erase/Writeを行うことが可能になる。なお、本実施の形態では、固定プログラム領域の直下を書き換えプログラム領域開始アドレスYYYYとする形態を例示して説明するが、これに限られず、例えば固定プログラム領域との間に一定の記憶領域を空けたアドレスをアドレスYYYYとして指定してもよい。
図12(a)は、書き換え有効の場合で、書き換え領域分割設定が2領域に設定された場合のCPUアクセスを、図12(b)は、その際の各レジスタの値を各々示している。
この場合には、プログラムメモリ空間が、固定プログラム領域と、書き換えプログラム領域0及び書き換えプログラム領域1とに分割される。
本実施の形態において、「書き換えプログラム領域0」とは「書き換えプログラム0」が格納された領域をいい、「書き換えプログラム領域1」とは「書き換えプログラム1」が格納された領域をいう。固定プログラム領域においては、ROM参照は可能であるが、Erase/Writeは行うことができない。一方、本実施の形態では、書き換えプログラム領域0、及び書き換えプログラム領域1の各々を、プログラム実行が可能な領域とするか、Erase/Writeが可能な領域とするかを切り換えることができるように構成されている。
本実施の形態に係るメモリ制御装置10dの領域分割方法について、より詳細に説明する。本実施の形態に係る領域分割方法では、書き換えプログラム領域開始アドレスYYYYが指定されると、当該アドレスYYYY以降(本実施の形態では、固定プログラム領域の直下)に、書き換えプログラムを格納させる領域として、同じ容量の2領域が確保される。以下、図12(a)に示すように、当該2領域を、固定プログラム領域に近い方から順に、「領域A」、「領域B」という。本実施の形態では、当該2領域の容量が同じである形態を例示して説明するが、むろん、これらの容量は異なってもよい。
そして、本実施の形態では、領域Aがプログラム実行の可能な領域とされ、領域BがErase/Writeの可能な領域とされる。そして、本実施の形態では、固定プログラム中に記述されたジャンプ命令によって、固定プログラムの実行後、領域Aに格納されたプログラムに移行するように構成されている。本実施の形態では、この領域A及び領域Bの属性の制御をメモリ制御装置10dが行っている。つまり、書き換えプログラム0/1のうち、領域Aに格納された方がプログラム実行の可能な書き換えプログラムとされ、領域Bに格納された方がErase/Writeの可能な書き換えプログラムとされる。このことにより、仮に、領域Aに書き換えプログラム0が格納され、領域Bに書き換えプログラム1が格納された状態を考えると、一方では、固定プログラム+書き換えプログラム0なるプログラムを実行し、他方では書き換えプログラム1について、更新等の操作を行うという動作が可能となる。
上記に加え、本実施の形態では、領域A及び領域Bに格納する書き換えプログラム0/1が切り換え可能に構成されている。すなわち、書き換えプログラム領域については、先述したように、アクセス領域指定レジスタの設定によって、プログラムとして使用する領域を決定することができる。より具体的には、アクセス領域指定レジスタの値が「0x00」の場合は、図12(a)に示すように、書き換えプログラム領域0が領域Aに格納されることにより、プログラム実行領域(プログラムメモリ空間)として選択されるため、固定プログラム領域と同じ扱いになる。そのため、書き換えプログラム領域0は、ROM参照は可能であるが、Erase/Writeは行うことができない領域となる。このとき、書き換えプログラム領域1は領域Bに格納されるため、書き換え可能領域となるので、ROM参照及びErase/Writeが可能な(更新が可能な)領域となる。
一方、アクセス領域指定レジスタの値が「0x01」の場合は、図12(a)に示すように、書き換えプログラム領域1が領域Aに格納されることにより、プログラム実行領域として選択されるため、固定プログラム領域と同じ扱いになる。そのため、ROM参照は可能であるが、Erase/Writeは行うことができない領域となる。このとき、書き換えプログラム領域0は領域Bに格納されるため、書き換え可能領域となるので、ROM参照及びErase/Writeが可能な(更新が可能な)領域となる。
上記のような構成を有する、本実施の形態に係るメモリ制御装置10dの領域分割方法の作用について、より詳細に説明する。初期状態として、領域Aに書き換えプログラム0が格納され、領域Bに書き換えプログラム1が格納されている状態、すなわち、アクセス領域指定レジスタの値が「0x00」とされている状態を考える。この場合、マイクロコンピュータシステム1のプログラムは、固定プログラム+書き換えプログラム0からなるプログラム(初期プログラム)で作成されている。
その後、この初期プログラムに更新の必要が生じた場合には、例えば、図示しない外部との通信手段を介して領域Bに書き換えプログラム1を書き込んだ後、アクセス領域指定レジスタの値を「0x01」とする。このことにより、書き換えプログラム1が書き換えプログラム0の代わりに領域Aに格納されるので、書き換えプログラム1がCPU14によって実行されるプログラムとなる。一方、初期プログラムにおける書き換えプログラム0は、Erase/Writeの可能なプログラムとされ、次の更新に備えることができる。
以上詳述したように、本実施の形態に係るメモリ制御装置10dの領域分割方法では、アクセス領域指定レジスタによって領域Aに格納する書き換えプログラムと領域Bに格納する書き換えプログラムとを切り換え可能なように構成されているので、固定プログラム領域のプログラムを変更することなく、書き換えプログラムを更新することができるという効果を奏する。
以上のように、本実施の形態に係るメモリ制御装置では、コードオプションによって設定されたデータを、メモリをコントロールするデータとして使用することによって、メモリの使用目的に応じメモリ空間を詳細に分割することができる。また、セキュリティに関しても、書き換えが不可能な領域を設定することにより、プログラムが暴走した場合などでもその領域のデータについては消去や書き込み等を行うことができなくなるため、メモリに記憶させたデータの信頼性も確保できるという効果がある。従って、例えば、上記命令変換機能によってジャンプしたジャンプ先のメモリの領域を、処理内容に応じて適切な属性の領域とすることも可能となる。
1 マイクロコンピュータシステム
10、10a、10b、10c、10d メモリ制御装置
12 メモリ
14 CPU
16 バス
20 変換前命令
22 変換後命令
100、100−1、100−2、100−3 命令変換部
100a 複合命令変換部
102 AND回路
104 OR回路
106 セレクタ
108 セレクタ
110、110a セレクタ
112 変換後命令設定回路
114 選択回路
120、120a 命令変換レジスタセット
130、132 OR回路
140 プログラムカウンタ
200 メモリローダ
202 書き換え設定レジスタセット
210 プログラム領域
212 テスト領域
214 データ領域
INST、INST1、INST2 変換後命令

Claims (8)

  1. プログラムを実行するための命令が対応するアドレスと共に記憶されたメモリ、及び、前記プログラムを実行するための一連の命令に対応する前記メモリの前記アドレスが順番に格納されかつカウントの進行に伴い格納された前記アドレスを逐次読み出して対応する命令を逐次特定するプログラムカウンタを備えると共に、前記プログラムカウンタにより特定された一連の命令に従ってプログラムを実行する中央処理装置を含むマイクロコンピュータシステムにおける前記メモリを制御するメモリ制御装置であって、
    前記プログラムカウンタに格納された前記アドレスの少なくとも1つを指定アドレスとして保持する指定アドレスレジスタと、
    前記指定アドレスに対応する前記メモリの変換前命令と異なる変換後命令を保持する変換後命令保持部と、
    前記プログラムの進行に伴って前記プログラムカウンタから読み出された前記アドレスと前記指定アドレスレジスタに保持された前記指定アドレスとが一致した場合に、前記変換前命令に代えて前記変換後命令を前記プログラムを実行するための命令として前記中央処理装置に送る命令変換部と、
    を備えるメモリ制御装置。
  2. 前記変換後命令保持部が、前記変換後命令を論理回路で保持する保持回路である
    請求項1に記載のメモリ制御装置。
  3. 前記変換後命令保持部が、前記変換後命令を保持するレジスタである
    請求項1に記載のメモリ制御装置。
  4. 前記変換後命令が、前記メモリのジャンプ先アドレスが付与された、前記メモリのアドレスのいずれかへジャンプすることを指示するジャンプ命令である
    請求項1〜請求項3のいずれか1項に記載のメモリ制御装置。
  5. 前記指定アドレスレジスタは、複数の指定レジスタを保持し、
    前記変換後命令保持部は、前記複数の指定レジスタの各々に対応する各々異なるジャンプ先アドレスが付与された複数のジャンプ命令を保持し、
    前記命令変換部は、前記複数の指定レジスタごとに、前記プログラムの進行に伴って前記プログラムカウンタから読み出されたアドレスと前記指定アドレスレジスタに保持された前記指定アドレスとが一致した場合に、前記変換前命令に代えて前記複数のジャンプ命令のいずれかを前記プログラムを実行するための命令として前記中央処理装置に送る
    請求項4に記載のメモリ制御装置。
  6. 前記複数のジャンプ命令の各々に付与された複数のジャンプ先アドレスが、基準となる1つの基準ジャンプ先アドレスと前記基準ジャンプ先アドレスに対する相対アドレスで構成される
    請求項5に記載のメモリ制御装置。
  7. 複数の前記指定アドレスレジスタ、複数の前記変換後命令保持部、複数の前記命令変換部、及び複数の前記命令変換部のいずれかから出力された前記変換後命令を前記中央処理装置に送る論理和回路を備えた
    請求項1〜請求項6のいずれか1項に記載のメモリ制御装置。
  8. プログラムを実行するための命令が対応するアドレスと共に記憶されたメモリ、及び、前記プログラムを実行するための一連の命令に対応する前記メモリの前記アドレスが順番に格納されかつカウントの進行に伴い格納された前記アドレスを逐次読み出して対応する命令を逐次特定するプログラムカウンタを備えると共に、前記プログラムカウンタにより特定された一連の命令に従ってプログラムを実行する中央処理装置を含むマイクロコンピュータシステムにおける前記メモリを制御するメモリ制御方法であって、
    指定アドレスレジスタに、前記プログラムカウンタに格納された前記アドレスの少なくとも1つを指定アドレスとして保持させ、
    変換後命令保持部に、前記指定アドレスに対応する前記メモリの変換前命令と異なる変換後命令を保持させ、
    命令変換部により、前記プログラムの進行に伴って前記プログラムカウンタから読み出された前記アドレスと前記指定アドレスレジスタに保持された前記指定アドレスとが一致した場合に、前記変換前命令に代えて前記変換後命令を前記プログラムを実行するための命令として前記中央処理装置に送る
    メモリ制御方法。
JP2015211061A 2015-10-27 2015-10-27 メモリ制御装置及びメモリ制御方法 Active JP6603100B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015211061A JP6603100B2 (ja) 2015-10-27 2015-10-27 メモリ制御装置及びメモリ制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015211061A JP6603100B2 (ja) 2015-10-27 2015-10-27 メモリ制御装置及びメモリ制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2019186816A Division JP6803957B2 (ja) 2019-10-10 2019-10-10 メモリ制御装置及びメモリ制御方法

Publications (2)

Publication Number Publication Date
JP2017084062A JP2017084062A (ja) 2017-05-18
JP6603100B2 true JP6603100B2 (ja) 2019-11-06

Family

ID=58713081

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015211061A Active JP6603100B2 (ja) 2015-10-27 2015-10-27 メモリ制御装置及びメモリ制御方法

Country Status (1)

Country Link
JP (1) JP6603100B2 (ja)

Also Published As

Publication number Publication date
JP2017084062A (ja) 2017-05-18

Similar Documents

Publication Publication Date Title
JP5328366B2 (ja) プログラム可能な優先値を用いた割込み制御器
US9733950B2 (en) Boot sequencing for multi boot devices
JP5571201B2 (ja) ハードウェアモードおよびセキュリティフラグに基づく、読み出される命令用のメモリエリアの制限
CN107548492B (zh) 具有增强指令集的中央处理单元
WO2003025721A2 (en) Microcontroller with configurable onboard boot-ram
JP2015525916A (ja) メモリ保護装置及び保護方法
JP2009230548A (ja) 情報処理装置と情報処理方法およびストレージシステム
WO2020063975A1 (zh) 一种非易失性存储器的分区保护方法及装置
KR20060002664A (ko) 내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와방법
US20140289455A1 (en) Memory Patching Circuit
JP6603100B2 (ja) メモリ制御装置及びメモリ制御方法
KR102658600B1 (ko) 디바이스를 디버깅할 때 메타데이터에 액세스하기 위한 장치 및 방법
JP6803957B2 (ja) メモリ制御装置及びメモリ制御方法
WO2018100633A1 (ja) 制御装置およびプログラム更新方法
JPH0430399A (ja) 半導体記憶システム
TW201527976A (zh) 積體電路無線電
JP2001306316A (ja) 制御回路およびそれを用いた半導体装置
WO2010058525A1 (ja) 半導体集積回路及びレジスタアドレス制御装置
KR102186221B1 (ko) 하드웨어 기반의 임베디드 시스템의 주소 공간 레이아웃 랜덤화 방법 및 이를 위한 장치
JP2015035155A (ja) 情報処理装置
JP2000259448A (ja) プログラムデバッグ装置
JP2015090512A (ja) メモリダンプ機能を有する情報処理装置
JP2003196087A (ja) マイクロコントローラのメモリアドレッシング方法及びページマッピング装置
JP5823000B2 (ja) マイクロコンピュータ
JP2010176182A (ja) 電子機器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190702

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190828

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190910

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191010

R150 Certificate of patent or registration of utility model

Ref document number: 6603100

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150