(57)【要約】【課題】実行プログラムの小規模な修正を行うためのメモリ効率の良い欠陥修正手法を提案すること。【解決手段】照合部２０は、ＣＰＵ１０の実行アドレスが、ＲＯＭ５０において置換されるべき命令である被置換命令が格納された被置換命令格納アドレスと合致するか否かの照合を行う。そして、照合部２０により合致判定されると、ＣＰＵ１０は、当該実行アドレスの命令に代えて、ＲＡＭ６０に格納された対応アドレステーブル６３を参照し、当該被置換命令格納アドレスに対応する置換命令格納アドレスを特定する。そして、特定した置換命令格納アドレスの置換命令６１をＲＡＭ６０から読み出して実行する。【選択図】図１
2011154505.tif 000002
【特許請求の範囲】
【請求項１】
実行プログラムが格納されたプログラム格納部と、
前記実行プログラム中の被置換命令に対する置換命令が格納された置換命令格納部と、
前記プログラム格納部において前記被置換命令が格納された被置換命令格納アドレスと、前記置換命令格納部において前記置換命令が格納された置換命令格納アドレスとを対応付けて記憶する対応アドレス格納部と、
前記プログラム格納部に格納された前記実行プログラムの実行アドレスを順次変化させながら、前記実行プログラムに従って演算処理を実行する演算処理部と、
前記実行アドレスが、前記被置換命令格納アドレスか否かを判定する判定部と、
を備え、
前記演算処理部が、前記判定部により合致判定された場合に、当該実行アドレスの命令に代えて、対応する前記置換命令格納アドレスに格納された置換命令を実行する、
演算処理装置。
【請求項２】
前記置換命令格納部には、前記実行プログラム中の連続する規定被置換数の前記被置換命令に対する、規定置換数の前記置換命令が格納されており、
前記演算処理部は、前記判定部により合致判定された場合に、当該実行アドレスから前記規定被置換数分の命令に代えて、対応する前記置換命令格納アドレスから前記規定置換数分の置換命令を実行する、
請求項１に記載の演算処理装置。
【請求項３】
実行プログラムが格納されたプログラム格納部と、前記実行プログラム中の被置換命令に対する置換命令が格納された置換命令格納部と、前記プログラム格納部において前記被置換命令が格納された被置換命令格納アドレスと前記置換命令格納部において前記置換命令が格納された置換命令格納アドレスとを対応付けて記憶する対応アドレス格納部と、を備えた演算処理装置における前記実行プログラムの演算実行方法であって、
前記実行プログラムの実行アドレスが、前記被置換命令格納アドレスとなった場合に、当該実行アドレスの命令に代えて、対応する前記置換命令格納アドレスに格納された置換命令を実行する、
演算実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置及び演算実行方法に関する。
【背景技術】
【０００２】
コンピューター等の演算処理装置は、記憶装置に記憶された実行プログラムに従って、ＣＰＵ（Central Processing Unit）等のプロセッサーが演算処理を実行する。一旦製造した後に、実行プログラムに欠陥（バグ）が存在することが判明した場合、ユーザーにパッチプログラムを頒布して自主的なプログラムの修正を依頼する等の必要がある。しかし、実行プログラムを記憶している記憶装置がフラッシュメモリであれば再書き込み可能であるが、マスクＲＯＭ（Read Only Memory）等の再書き込み不可能な記憶装置である場合には、基板ごとの交換が必要となる。このため、製造販売したコンピューターを回収して修理する必要がある。
【０００３】
この問題を解決するための１つの技術として、修正プログラムを別途の記憶領域に記憶させ、ＣＰＵが、実行プログラム中の欠陥部分を実行しようとした場合に、修正プログラムにジャンプさせて、その修正プログラムを実行させる技術が知られている（例えば特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−３２５７１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示されている技術は、実行プログラムの大規模な修正を想定した技術であり、修正プログラムを差し替えプログラムのように利用する。すなわち、特許文献１の技術は、実行プログラム中の欠陥部分が格納されている開始アドレス及び終端アドレスを予め特定・記憶しておき、実行プログラムの実行中に開始アドレスに差し掛かったときに、修正プログラムに処理を移行させ、修正プログラムの処理を実行した後に、先の終端アドレスに戻る仕組みである。
【０００６】
確かに、特許文献１の技術のように、プログラムを差し替えるほどの大規模な修正を施すことによっても、プログラムの欠陥（バグ）に対処することはできる。しかし、欠陥（バグ）への対処法として、１〜数命令程度の小規模な修正を行いたい場合もある。この場合、特許文献１の技術をそのまま適用すると、修正を必要とする命令数が少数であるにも関わらず、修正プログラムを実行した後の戻り命令や戻り先のアドレス等の情報を記憶する必要があるなど、修正命令数に対する相対的なメモリ容量が増大するという問題があった。
【０００７】
本発明は上述した課題に鑑みて為されたものであり、その目的とするところは、実行プログラムの小規模な修正を行うためのメモリ効率の良い欠陥修正手法を提案することにある。
【課題を解決するための手段】
【０００８】
以上の課題を解決するための第１の形態は、実行プログラムが格納されたプログラム格納部と、前記実行プログラム中の被置換命令に対する置換命令が格納された置換命令格納部と、前記プログラム格納部において前記被置換命令が格納された被置換命令格納アドレスと、前記置換命令格納部において前記置換命令が格納された置換命令格納アドレスとを対応付けて記憶する対応アドレス格納部と、前記プログラム格納部に格納された前記実行プログラムの実行アドレスを順次変化させながら、前記実行プログラムに従って演算処理を実行する演算処理部と、前記実行アドレスが、前記被置換命令格納アドレスか否かを判定する判定部と、を備え、前記演算処理部が、前記判定部により合致判定された場合に、当該実行アドレスの命令に代えて、対応する前記置換命令格納アドレスに格納された置換命令を実行する、演算処理装置である。
【０００９】
また、他の形態として、実行プログラムが格納されたプログラム格納部と、前記実行プログラム中の被置換命令に対する置換命令が格納された置換命令格納部と、前記プログラム格納部において前記被置換命令が格納された被置換命令格納アドレスと前記置換命令格納部において前記置換命令が格納された置換命令格納アドレスとを対応付けて記憶する対応アドレス格納部と、を備えた演算処理装置における前記実行プログラムの演算実行方法であって、前記実行プログラムの実行アドレスが、前記被置換命令格納アドレスとなった場合に、当該実行アドレスの命令に代えて、対応する前記置換命令格納アドレスに格納された置換命令を実行する、演算実行方法を構成してもよい。
【００１０】
この第１の形態等によれば、演算処理部は、プログラム格納部に格納された実行プログラムを実行する。この際、判定部は、演算処理部の実行アドレスが、プログラム格納部において被置換命令が格納された被置換命令格納アドレスか否かを判定する。そして、判定部により合致判定されると、演算処理部は、当該実行アドレスの命令に代えて、対応アドレス格納部に格納された当該被置換命令格納アドレスに対応する置換命令格納アドレスに格納された置換命令を実行する。
【００１１】
置き換えたい置き換え先の命令である置換命令を置換命令格納アドレスに格納しておき、実行アドレスが被置換命令格納アドレスと合致した場合に、当該実行アドレスの命令に代えて置換命令を実行するという単純な構成としたことで、実行プログラムの小規模な修正に対処することができる。また、単純な構成であるがゆえに、修正を必要とする命令数に対して必要とする相対的なメモリ容量は少なく済み、メモリ効率の良い欠陥修正手法が実現される。
【００１２】
また、第２の形態として、第１の形態の演算処理装置であって、前記置換命令格納部には、前記実行プログラム中の連続する規定被置換数の前記被置換命令に対する、規定置換数の前記置換命令が格納されており、前記演算処理部は、前記判定部により合致判定された場合に、当該実行アドレスから前記規定被置換数分の命令に代えて、対応する前記置換命令格納アドレスから前記規定置換数分の置換命令を実行する、演算処理装置を構成してもよい。
【００１３】
この第２の形態によれば、演算処理部は、判定部により合致判定された場合に、当該実行アドレスから規定被置換数分の命令に代えて、対応する置換命令格納アドレスから規定置換数分の置換命令を実行する。規定被置換数及び規定置換数を予め定めておけば、幾つ分の命令を修正すればよいかが自明となる。そのため、実行プログラムにおいて欠陥が生じている部分のサイズや、欠陥が生じている部分の終端アドレス等の情報をメモリに記憶させておく必要がなくなり、メモリ効率の一層の向上が図られる。
【図面の簡単な説明】
【００１４】
【図１】演算処理装置の機能構成部分の概略図。
【図２】実行プログラムの格納状態の一例を示す図。
【図３】置換命令の格納状態の一例を示す図。
【図４】対応アドレステーブルのテーブル構成の一例を示す図。
【図５】演算処理装置の動作の説明図。
【図６】変形例における演算処理装置の動作の説明図。
【発明を実施するための形態】
【００１５】
以下、図面を参照して、本発明を適用した演算処理装置について説明する。なお、本発明を適用可能な実施形態が以下説明する実施形態に限定されるわけでないことは勿論である。
【００１６】
１．機能構成
図１は、本実施形態における演算処理装置１の本実施形態に係る機能構成部分を概略的に示すブロック図である。演算処理装置１は、ＣＰＵ（Central Processing Unit）１０と、第１照合部２０−１〜第Ｎ照合部２０−Ｎで構成される照合部２０と、チップセレクタ部３０と、レジスタ４０と、ＲＯＭ（Read Only Memory）５０と、ＲＡＭ（Random Access Memory）６０とを備えて構成される。また、ＣＰＵ１０と、ＲＯＭ５０と、ＲＡＭ６０とは、バス７０を介して接続されている。
【００１７】
ＣＰＵ１０は、ＲＯＭ５０に記憶されているシステムプログラム等の各種プログラムに従って演算処理装置１の各部を統括的に制御するプロセッサーであり、演算処理部に相当する。ＣＰＵ１０は、実行アドレスを指定するためのプログラムカウンタ１１と、実行する命令を記憶するための命令レジスタ１３とを備えている。そして、プログラムカウンタ１１によって、ＲＯＭ５０に格納された実行プログラム５１の実行アドレスを順次変化させながら、当該実行アドレスに記憶されている命令を命令レジスタ１３に読み出して、実行プログラム５１を順次実行していく。
【００１８】
本実施形態では、ＣＰＵ１０の実行状態として２つの状態を定義し、実行プログラム５１を実行する定常の状態を「定常状態」と定義し、欠陥（バグ）部分においてＲＡＭ６０に格納された置換命令を読み出して実行する状態を「修正状態」と定義する。
【００１９】
プログラムカウンタ１１は、プログラムレジスタとも呼ばれ、実行プログラム中の各命令が、当該命令が格納されたアドレス（以下、「命令格納アドレス」と称す。）から読み出される毎に、次の命令格納アドレスを指し示すようにカウントアップされるカウンタであるが、定常状態と修正状態とで異なる動作をする。このプログラムカウンタ１１の動作については、詳細に後述する。
【００２０】
命令レジスタ１３は、ＲＯＭ５０から読み出された命令、又は、ＲＡＭ６０から読み出された置換命令が一時的に格納されるレジスタである。より具体的には、ＣＰＵ１０は、定常状態においては、プログラムカウンタ１１によって指定されたＲＯＭ５０の命令格納アドレスから命令を読み出して命令レジスタ１３に格納し、格納した命令をデコードして実行する。一方、修正状態においては、ＣＰＵ１０は、ＲＡＭ６０から置換命令を読み出して命令レジスタ１３に格納し、格納した置換命令をデコードして実行する。
【００２１】
照合部２０は、プログラムカウンタ１１から取得したＣＰＵ１０の実行アドレスと、レジスタ４０から出力される被置換命令格納先頭アドレスとを照合する照合回路である。照合部２０は、第１照合部２０−１〜第Ｎ照合部２０−ＮのＮ個の照合回路によって並列的に構成され、Ｎ個のアドレスを同時比較する。そして、各照合部２０−１〜２０−Ｎは、適合又は不適合の照合結果をそれぞれチップセレクタ部３０に出力する。照合部２０は、実行アドレスが被置換命令格納先頭アドレスか否かを判定する判定部に相当する。
【００２２】
本実施形態では、ＲＯＭ５０の命令格納アドレスのうち、ＲＡＭ６０に格納された置換命令によって置換されるべき命令が格納されたアドレスのことを「被置換命令格納アドレス」と称する。また、ＲＡＭ６０の置換命令が格納されたアドレスのことを「置換命令格納アドレス」と称する。
【００２３】
チップセレクタ部３０は、ＣＰＵ１０が、データの入出力やアクセスしたい物理アドレスを指定するための記憶装置（メモリ）を、ＲＯＭ５０及びＲＡＭ６０の何れかに選択的に切り替える回路部である。チップセレクタ部３０は、第１照合部２０−１〜第Ｎ照合部２０−Ｎそれぞれから適合又は不適合の照合結果を入力し、それらの照合結果に応じたチップセレクト処理を行う。
【００２４】
具体的には、第１照合部２０−１〜第Ｎ照合部２０−Ｎの何れの照合結果も不適合であれば、チップセレクタ部３０は、「不一致（ＯＦＦ）」の照合結果信号をＣＰＵ１０に出力し、ＲＯＭ５０を選択するための回路選択信号の一種であるチップセレクト（ｃｓ（chip select））信号をＲＯＭ５０に出力する。これにより、ＣＰＵ１０は、ＲＯＭ５０へのアクセスが可能となる。
【００２５】
その一方で、第１照合部２０−１〜第Ｎ照合部２０−Ｎの照合結果が１つでも適合であれば、チップセレクタ部３０は、「合致（ＯＮ）」の照合結果信号をＣＰＵ１０に出力し、ＲＡＭ６０を選択するためのチップセレクト信号をＲＡＭ６０に出力する。これにより、ＣＰＵ１０は、ＲＡＭ６０へのアクセスが可能となる。
【００２６】
レジスタ４０は、連続する規定被置換数の被置換命令格納アドレスのうちの先頭のアドレス（「被置換命令格納先頭アドレス」と称す。）を記憶・保持している記憶装置であり、演算処理装置１の電源ＯＮ時に、ＲＡＭ６０から被置換命令格納先頭アドレスが読み出されて記憶される。レジスタ４０に格納された被置換命令格納先頭アドレスは、それぞれ第１照合部２０−１〜第Ｎ照合部２０−Ｎにより実行アドレスと照合される。
【００２７】
ＲＯＭ５０は、読み取り専用の不揮発性の記憶装置であり、ＣＰＵ１０が演算処理装置１の各部を制御するためのシステムプログラム等の各種プログラムや各種データ等を記憶している。ＲＯＭ５０には、ＣＰＵ１０が演算処理を実行するための実行プログラム５１が格納されている。ＲＯＭ５０は、実行プログラムが格納されたプログラム格納部に相当する。
【００２８】
ＲＡＭ６０は、読み書き可能な揮発性の記憶装置であり、ＣＰＵ１０により実行されるシステムプログラム、各種処理プログラム、各種処理の処理中データ、処理結果などを一時的に記憶するワークエリアを形成している。ＲＡＭ６０には、例えば、置換命令６１と、対応アドレステーブル６３とが格納される。置換命令６１は、ＲＯＭ５０に格納された命令に置換して実行される命令である。
【００２９】
チップセレクタ部３０により、チップセレクト信号がＲＡＭ６０に切り替えられている場合には、置換命令アドレスの置換命令６１がＣＰＵ１０により読み出されて実行される。ＲＡＭ６０は、実行プログラム中の被置換命令に対する置換命令が格納された置換命令格納部に相当するとともに、被置換命令格納アドレスと置換命令格納アドレスとを対応付けて記憶する対応アドレス格納部に相当する。
【００３０】
バス７０は、ＣＰＵ１０がＲＯＭ５０又はＲＡＭ６０との間で各種データの入出力を行うためのデータバスや、ＣＰＵ１０がアクセスしたい物理アドレスを指定するためのアドレスバスに相当する。
【００３１】
２．データ構成
図２は、ＲＯＭ５０に格納された実行プログラム５１の格納状態の一例を示す図である。ＲＯＭ５０の各アドレス（番地）には、実行プログラム５１の命令（命令１，命令２，・・・）が順番に格納されている。本実施形態では、ＲＯＭ５０のアドレスのことを「命令格納アドレス」と称する。また、１命令当たり、２アドレスが割り振られているものとする。
【００３２】
図３は、ＲＡＭ６０に格納された置換命令６１の格納状態の一例を示す図である。ＲＡＭ６０の各アドレス（番地）に、ＣＰＵ１０が修正状態において実行する置換命令（置換命令１，置換命令２，・・・）がそれぞれ格納されている。本実施形態では、置換命令が格納されているアドレスのことを「置換命令格納アドレス」と称する。また、１命令当たり、２アドレスが割り振られているものとする。
【００３３】
図４は、対応アドレステーブル６３のテーブル構成の一例を示す図である。対応アドレステーブル６３は、被置換命令格納先頭アドレス６３１と、置換命令格納先頭アドレス６３３との対応関係が記憶されたテーブルである。例えば、被置換命令格納先頭アドレス「０ｘ００００４」には、置換命令格納先頭アドレス「０ｘ０００００」が対応付けて記憶されている。
【００３４】
３．動作
図５は、演算処理装置１の動作を説明するための図である。ＣＰＵ１０は、ＲＯＭ５０に格納されている実行プログラム５１に従って演算処理を実行する。この際、ＣＰＵ１０は、所定のクロック周波数（動作周波数）に従って、１クロックずつ命令を順次に読み出して実行していく。以下、１クロック目から順に動作を説明する。
【００３５】
（１）１クロック目
１クロック目では、プログラムカウンタ１１には、命令格納アドレスのうちの先頭のアドレスである「０ｘ０００００」がセットされる。照合部２０（２０−１〜２０−Ｎ）は、プログラムカウンタ１１の実行アドレス「０ｘ０００００」と、レジスタ４０の被置換命令格納先頭アドレス｛「０ｘ００００４」，「０ｘ００５Ｄ２」，・・・｝とをそれぞれ照合する。この場合、被置換命令格納先頭アドレスに「０ｘ０００００」は存在しないため、照合結果は何れも不適合となる。従って、各照合部２０−１〜２０−Ｎは、不適合の照合結果をチップセレクタ部３０に出力する。
【００３６】
チップセレクタ部３０は、各照合部２０−１〜２０−Ｎから不適合の照合結果を入力すると、「不一致（ＯＦＦ）」の照合結果信号をＣＰＵ１０に出力し、ＣＰＵ１０がＲＯＭ５０に格納された命令を読み出して実行するように指示する（定常状態）。
【００３７】
定常状態においては、チップセレクタ部３０は、チップセレクト信号を１クロック分だけＲＯＭ５０に切り替え、１クロックの期間、ＣＰＵ１０がＲＯＭ５０にアクセスすることを可能にする。ＣＰＵ１０は、ＲＯＭ５０の命令格納アドレス「０ｘ０００００」に格納された「命令１」を読み出して実行する。
【００３８】
また、定常状態においては、１クロックにつき２アドレスずつプログラムカウンタ１１のアドレスをカウントアップさせる。従って、ＣＰＵ１０は、ＲＯＭ５０に格納された「命令１」を実行した後、プログラムカウンタ１１の実行アドレス「０ｘ０００００」を２アドレス分カウントアップし、「０ｘ００００２」に更新する。
【００３９】
（２）２クロック目
２クロック目では、照合部２０（２０−１〜２０−Ｎ）は、プログラムカウンタ１１の実行アドレス「０ｘ００００２」と、レジスタ４０の被置換命令格納先頭アドレス｛「０ｘ００００４」，「０ｘ００５Ｄ２」，・・・｝とをそれぞれ照合する。この場合も、照合結果は何れも不適合となるため、各照合部２０−１〜２０−Ｎは、不適合の照合結果をチップセレクタ部３０に出力する。
【００４０】
チップセレクタ部３０は、各照合部２０−１〜２０−Ｎから不適合の照合結果を入力すると、「不一致（ＯＦＦ）」の照合結果信号をＣＰＵ１０に出力するとともに、チップセレクト信号を１クロック分だけＲＯＭ５０に切り替える。そして、ＣＰＵ１０は、ＲＯＭ５０にアクセスして、命令格納アドレス「０ｘ００００２」に格納された「命令２」を読み出して実行する。そして、ＣＰＵ１０は、プログラムカウンタ１１の実行アドレス「０ｘ００００２」を２アドレス分カウントアップし、「０ｘ００００４」に更新する。
【００４１】
（３）３クロック目
３クロック目では、照合部２０（２０−１〜２０−Ｎ）は、プログラムカウンタ１１の実行アドレス「０ｘ００００４」と、レジスタ４０の被置換命令格納先頭アドレス｛「０ｘ００００４」，「０ｘ００５Ｄ２」，・・・｝とをそれぞれ照合する。この場合、１つ目の被置換命令格納先頭アドレスが「０ｘ００００４」であるため、第１照合部２０−１において照合結果が適合となる。従って、第１照合部２０−１は、適合の照合結果をチップセレクタ部３０に出力し、それ以外の照合部は、不適合の照合結果をチップセレクタ部３０に出力する。
【００４２】
チップセレクタ部３０は、第１照合部２０−１から適合の照合結果を入力したことで、「合致（ＯＮ）」の照合結果信号をＣＰＵ１０に出力する。そして、ＣＰＵ１０がＲＡＭ６０に格納された置換命令を読み出して実行するように指示する（修正状態）。
【００４３】
修正状態においては、チップセレクタ部３０は、チップセレクト信号をＮクロック分だけＲＡＭ６０に切り替える処理を行い、Ｎクロックの期間、ＣＰＵ１０がＲＡＭ６０にアクセスすることを可能にする。Ｎの値は、ＣＰＵ１０が、ＲＡＭ６０にアクセスして対応アドレステーブル６３を参照し、置換命令を読み出すアドレスを特定するクロック数と、特定したアドレスから置換命令を読み出すクロック数と、読み出した置換命令をデコードして実行するまでのクロック数とを考慮し、これら一連の処理が完了するまでのクロック数（時間）に設定する。
【００４４】
ＣＰＵ１０は、チップセレクタ部３０により選択されたＲＡＭ６０へアクセスして、対応アドレステーブル６３を参照する。そして、プログラムカウンタ１１の実行アドレス「０ｘ００００４」（＝被置換命令格納先頭アドレス６３１）に対応する置換命令格納先頭アドレス６３３を特定する。
【００４５】
この場合、図４によれば、被置換命令格納先頭アドレス「０ｘ００００４」に対応する置換命令格納先頭アドレスは「０ｘ０００００」となる。従って、ＣＰＵ１０は、ＲＡＭ６０の置換命令格納先頭アドレス「０ｘ０００００」に格納された「置換命令１」を読み出して実行する。この際、ＣＰＵ１０は、実行プログラム５１中の連続する規定被置換数の命令に対して、連続する規定置換数の置換命令をＲＡＭ６０から読み出して実行する。
【００４６】
本実施形態では、規定被置換数及び規定置換数を「２」とした場合について説明する。この場合、ＣＰＵ１０は、ＲＯＭ５０の命令格納アドレス「０ｘ００００４」、「０ｘ００００６」に格納された連続する２個の命令である「命令３」、「命令４」を、ＲＡＭ６０の置換命令格納先頭アドレス「０ｘ０００００」、「０ｘ００００２」に格納された連続する２個の置換命令である「置換命令１」、「置換命令２」に置き換えて実行する。
【００４７】
また、修正状態においては、ＣＰＵ１０は、プログラムカウンタ１１のアドレスを４アドレスカウントアップさせる。よって、ＣＰＵ１０は、プログラムカウンタ１１の実行アドレス「０ｘ００００４」を４アドレス分カウントアップし、「０ｘ００００８」に更新する。
【００４８】
以降、ＣＰＵ１０は、同様の処理を繰り返す。すなわち、定常状態に戻って、アドレス「０ｘ００００８」から順にＲＯＭ５０に格納された命令を順次に実行していく。しかし、実行アドレスが被置換命令格納先頭アドレスと合致した場合は、修正状態に移行し、ＲＯＭ５０に格納された規定置換数の命令の代わりに、ＲＡＭ６０に格納された規定置換数の置換命令を実行する。
【００４９】
４．作用効果
演算処理装置１において、ＣＰＵ１０は、ＲＯＭ５０に格納された実行プログラム５１の実行アドレスが順次変化させながら演算処理を実行する。この際、照合部２０は、ＣＰＵ１０の実行アドレスが、ＲＯＭ５０において置換されるべき命令である被置換命令が格納された被置換命令格納アドレスと合致するか否かの照合を行う。そして、照合部２０により合致判定されると、ＣＰＵ１０は、当該実行アドレスの命令に代えて、ＲＡＭ６０に格納された対応アドレステーブル６３を参照し、当該被置換命令格納アドレスに対応する置換命令格納アドレスを特定する。そして、特定した置換命令格納アドレスの置換命令６１をＲＡＭ６０から読み出して実行する。
【００５０】
以上のように、本実施形態では、被置換命令格納先頭アドレスと置換命令格納先頭アドレスとを対応付けた対応アドレステーブルに従って置換命令を実行する単純な構成を採用している。そのため、処理の高速化が実現されるとともに、不必要な情報をメモリに記憶させておく必要がなくなり、メモリ効率の改善が実現される。実行プログラムの小規模な修正には好適である。
【００５１】
また、本実施形態の演算処理装置１は、照合部２０により合致判定された場合に、ＲＯＭ５０の被置換命令格納先頭アドレスから規定被置換数分の命令に代えて、ＲＡＭ６０の対応する置換命令格納先頭アドレスから規定置換数分の置換命令を読み出して実行するという単純な構成である。
【００５２】
規定被置換数及び規定置換数を予め定めておけば、ＲＡＭ６０に格納された対応アドレステーブル６３を参照することで、実行プログラムの何れのアドレスから幾つ分の修正を行えばよいかが明確となる。そのため、実行プログラムにおいて欠陥が生じている部分のサイズや、欠陥が生じている部分の終端アドレス等の情報をメモリに記憶させておく必要がなくなり、メモリ効率の一層の向上が図られる。
【００５３】
５．変形例
５−１．置換命令
置換命令には、任意の命令を指定できる。これにより、別途のサブルーチンとしての修正プログラムを読み出して実行することも可能である。
【００５４】
図６は、この場合の演算処理装置１の動作を説明するための図である。例えば、ＲＡＭ６０の置換命令格納アドレス「０ｘ０００００」には、修正プログラムを読み出すための「ＣＡＬＬ命令」が格納されている。修正プログラムは、同じＲＡＭ６０内の別のアドレスに格納しておいてもよいし、ＲＡＭ以外の記憶装置に格納しておいてもよい。
【００５５】
実行アドレスが「０ｘ００００４」となると、被置換命令格納先頭アドレスと合致する。この場合、ＣＰＵ１０は、ＲＯＭ５０に格納された「命令３」を実行する代わりに、ＲＡＭ６０に格納された「ＣＡＬＬ命令」を実行する。これにより、例えばＲＡＭ６０の別の格納領域に格納された修正プログラムが読み出されて実行される。
【００５６】
修正プログラムの実行が完了すると（リターン）、ＲＡＭ６０のアドレス「０ｘ００００２」に戻る。そして、ＮＵＬＬの後、ＲＯＭ５０の命令格納アドレス「０ｘ００００６」に格納された「命令４」を実行せずに（「命令４」をスルーして）、命令格納アドレス「０ｘ００００８」に移行して「命令５」を実行する。
【００５７】
５−２．規定被置換数及び規定置換数
上述した実施形態では、規定被置換数及び規定置換数を「２」として説明したが、これらの数値は適宜設定変更可能である。例えば、規定被置換数及び規定置換数を「１」や「３」として、１個の命令を１個の置換命令で置換したり、連続する３個の命令を連続する３個の命令で置換するように構成してもよい。また、規定被置換数及び規定置換数を異なる数としてもよい。
【００５８】
５−３．置換命令の格納場所
上述した実施形態では、置換命令をＲＡＭ６０に格納するものとして説明したが、ＲＡＭ６０以外の予め定められた格納場所に置換命令を格納することとしてもよい。この場合は、ＲＯＭ５０において置換対象の命令が格納された被置換命令格納アドレスと、上記の格納場所において置換命令が格納された置換命令格納アドレスとを対応付けた対応テーブル６３を用意し、上記の格納場所の対応するアドレスから置換命令を読み出して実行するようにすればよい。
【符号の説明】
【００５９】
１  演算処理装置、  １０  ＣＰＵ、  １１  プログラムカウンタ、  １３  命令レジスタ、  ２０  照合部、  ３０  チップセレクタ部、  ４０  レジスタ、  ５０  ＲＯＭ、  ６０  ＲＡＭ、  ７０  バス
【図１】
2011154505.tif 000003
【図２】
2011154505.tif 000004
【図３】
2011154505.tif 000005
【図４】
2011154505.tif 000006
【図５】
2011154505.tif 000007
【図６】
2011154505.tif 000008