(57)【要約】 【課題】ＲＯＭなどに記録されるＩＰＬやＢＩＯＳ等が解析されるのを防止する情報処理装置等を提供する。【解決手段】情報処理装置１０１の中央処理装置１０２が命令データを記憶装置１０３から読み出す場合、論理アドレス信号出力端子１１１に命令データの論理アドレスを、命令取得信号出力端子１１２にその旨を出力し、アドレス変換部１０４は、論理アドレスを物理アドレスに変換して物理アドレス信号入力端子１３１に与え、セレクト部１０５は、論理アドレスが記憶装置１０３の命令データ記憶範囲で、かつ、命令データを読み出す旨が命令取得信号出力端子１１２に出力されているか否かを、記憶装置１０３のセレクト信号入力端子１３２に与え、記憶装置１０３は、セレクト信号入力端子１３２が真である場合、データ信号出力端子１３３に物理アドレスに記憶されるデータを出力して、データ信号入力端子１１３に与える。【選択図】図１
2009223611.tif 000002
【特許請求の範囲】
【請求項１】
処理の種類を表す命令データ、もしくは、処理の対象となる対象データのうち、所望のデータが配置される論理アドレスを出力する論理アドレス信号出力端子と、当該所望のデータが当該命令データであるか否かを出力する命令取得出力端子と、当該所望のデータの入力を受け付けるデータ信号入力端子と、を有する中央処理装置と、
当該中央処理装置にて実行されるべき処理の種類を表す命令データが、物理アドレスに対応付けて記憶され、所望のデータが記憶される物理アドレスの入力を受け付ける物理アドレス信号入力端子と、当該物理アドレス信号入力端子を介して入力を受け付けられた物理アドレスからデータを読み出すか否かを表す入力を受け付けるセレクト信号入力端子と、前記セレクト信号入力端子によりデータを読み出す旨を表す入力が受け付けられると、前記物理アドレス信号入力端子により入力を受け付けられた物理アドレスに記憶されるデータを出力するデータ信号出力端子と、を有する記憶装置と、
当該論理アドレス信号出力端子から出力される論理アドレスを物理アドレスに変換して、当該物理アドレス信号入力端子へ与えるアドレス変換部、
当該論理アドレス信号出力端子から出力される論理アドレスが当該命令データが記憶される物理アドレスに対応付けられる範囲に含まれ、かつ、当該命令取得出力端子から当該所望のデータが当該命令データである旨が出力されている、との条件が満たされるか否かを判定して、当該判定結果を命令データを読み出すか否かを表すものとして当該セレクト信号入力端子へ与えるセレクト部を備え、
当該データ信号出力端子は、当該データ信号入力端子に接続されることを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記記憶装置は、当該中央処理装置にて処理の対象となるべき対象データが、物理アドレスに対応付けてさらに記憶され、
前記セレクト部は、当該論理アドレス信号出力端子から出力される論理アドレスが当該対象データが記憶される物理アドレスに対応付けられる範囲に含まれるか否かを判定して、当該判定結果をデータを読み出すか否かを表すものとして当該セレクト信号入力端子へ与える
ことを特徴とする情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記記憶装置は、不揮発性記憶装置であり、
前記記憶装置に記憶される命令データは、当該中央処理装置が実行するイニシャルプログラムローダ、および、基本入出力システムを含む
ことを特徴とする情報処理装置。
【請求項４】
請求項３に記載の情報処理装置であって、
当該論理アドレス信号出力端子、および、当該アドレス変換部は、アドレスバスに接続され、
当該データ信号入力端子、および、当該データ信号出力端子は、データバスに接続され、
当該アドレスバスならびに当該データバスには、一時的にデータを記憶するランダムアクセスメモリ、および、当該情報処理装置に対する入出力を行う入出力装置が接続される
ことを特徴とする情報処理装置。
【請求項５】
中央処理装置と、記憶装置と、アドレス変換部と、セレクト部と、を有する情報処理装置が実行する情報処理方法であって、
前記中央処理装置は、処理の種類を表す命令データ、もしくは、処理の対象となる対象データのうち、所望のデータが配置される論理アドレスを出力する論理アドレス信号出力端子と、当該所望のデータが当該命令データであるか否かを出力する命令取得出力端子と、当該所望のデータの入力を受け付けるデータ信号入力端子と、を有し、
前記記憶装置には、当該中央処理装置にて実行されるべき処理の種類を表す命令データが、物理アドレスに対応付けて記憶され、
前記記憶装置は、所望のデータが記憶される物理アドレスの入力を受け付ける物理アドレス信号入力端子と、当該物理アドレス信号入力端子を介して入力を受け付けられた物理アドレスからデータを読み出すか否かを表す入力を受け付けるセレクト信号入力端子と、前記セレクト信号入力端子によりデータを読み出す旨を表す入力が受け付けられると、前記物理アドレス信号入力端子により入力を受け付けられた物理アドレスに記憶されるデータを出力するデータ信号出力端子と、を有し、
当該データ信号出力端子は、当該データ信号入力端子に接続され、
前記アドレス変換部が、当該論理アドレス信号出力端子から出力される論理アドレスを物理アドレスに変換して、当該物理アドレス信号入力端子へ与えるアドレス変換工程、
前記セレクト部が、当該論理アドレス信号出力端子から出力される論理アドレスが当該命令データが記憶される物理アドレスに対応付けられる範囲に含まれ、かつ、当該命令取得出力端子から当該所望のデータが当該命令データである旨が出力されている、との条件が満たされるか否かを判定して、当該判定結果を命令データを読み出すか否かを表すものとして当該セレクト信号入力端子へ与えるセレクト工程
を備えることを特徴とする情報処理方法。
【請求項６】
再構成可能な電子回路を、
処理の種類を表す命令データ、もしくは、処理の対象となる対象データのうち、所望のデータが配置される論理アドレスを出力する論理アドレス信号出力端子と、当該所望のデータが当該命令データであるか否かを出力する命令取得出力端子と、当該所望のデータの入力を受け付けるデータ信号入力端子と、を有する中央処理装置と、
当該中央処理装置にて実行されるべき処理の種類を表す命令データが、物理アドレスに対応付けて記憶され、所望のデータが記憶される物理アドレスの入力を受け付ける物理アドレス信号入力端子と、当該物理アドレス信号入力端子を介して入力を受け付けられた物理アドレスからデータを読み出すか否かを表す入力を受け付けるセレクト信号入力端子と、前記セレクト信号入力端子によりデータを読み出す旨を表す入力が受け付けられると、前記物理アドレス信号入力端子により入力を受け付けられた物理アドレスに記憶されるデータを出力するデータ信号出力端子と、を有する記憶装置と、
当該論理アドレス信号出力端子から出力される論理アドレスを物理アドレスに変換して、当該物理アドレス信号入力端子へ与えるアドレス変換部、
当該論理アドレス信号出力端子から出力される論理アドレスが当該命令データが記憶される物理アドレスに対応付けられる範囲に含まれ、かつ、当該命令取得出力端子から当該所望のデータが当該命令データである旨が出力されている、との条件が満たされるか否かを判定して、当該判定結果を命令データを読み出すか否かを表すものとして当該セレクト信号入力端子へ与えるセレクト部
として機能させ、
当該データ信号出力端子は、当該データ信号入力端子に接続される
ように機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータなどの情報処理装置のＲＯＭ（Read Only Memory）などに記録されるイニシャルプログラムローダ（ＩＰＬ；Initial Program Loader）や基本入出力システム（ＢＩＯＳ；Basic Input/Output System）、各種のアプリケーションプログラムなどが解析されるのを防止するのに好適な情報処理装置、情報処理方法、ならびに、これらを再構成可能な電子回路により実現するためのプログラムに関する。
【背景技術】
【０００２】
従来から、中央処理装置（ＣＰＵ；Central Processing Unit）が、ＲＯＭやＲＡＭ（Random Access Memory）等と接続される情報処理装置が提案されている。
【０００３】
このような情報処理装置では、アドレスバス、データバスを介してＣＰＵとＲＯＭやＲＡＭ等が接続されている。
【０００４】
ＣＰＵが処理可能なメモリ空間内には、ＲＯＭやＲＡＭが有する記憶域が配置されており、ＲＯＭやＲＡＭに記憶されるデータの場所は、論理アドレスとして表現される。
【０００５】
一方、ＲＯＭやＲＡＭが実際にデータを記憶する物理アドレスは、論理アドレスから変換可能であり、一般には、論理アドレスの下位ビットで表現される。
【０００６】
また、論理アドレスの上位ビットの値を見れば、それがＲＯＭに対するものであるのか、ＲＡＭに対するものであるのか、それ以外であるのか、を弁別することができる。
【０００７】
したがって、アドレスバスに出力される論理アドレスから、ＲＯＭ、ＲＡＭ等のデバイスが処理対象となるのか否かを判別するアドレスデコーダ回路が利用されている。
【０００８】
たとえば、ＲＯＭ用のアドレスデコーダ回路の出力はＲＯＭのチップセレクト信号入力端子に与えられ、ＲＯＭは、チップセレクト信号入力端子に与えられる値に基づいて、自身がＣＰＵの処理の対象となっているか否かを判別する。
【０００９】
たとえば、ＲＯＭに対するチップセレクト信号入力端子がアクティブである場合、すなわち、アドレスバスに出力されている論理アドレスが当該ＲＯＭに割り当てられているものである場合には、アドレスバスに出力されている論理アドレスの下位ビットの値から、当該ＲＯＭ内における物理アドレスを取得して、当該物理アドレスに記憶されている値をデータバスに出力すると、ＣＰＵは、当該ＲＯＭ内のデータを読み出すことが可能となる。
【００１０】
一方で、ＣＰＵは、実行すべき命令をＲＯＭやＲＡＭから読み出し（「インストラクションフェッチ」「オペコードフェッチ」等、命令を取得する段階）、当該命令にしたがって処理の対象となるデータをＲＡＭ等から読み出して（「オペランドフェッチ」等、処理対象を取得する段階）、当該処理を実行し、必要に応じてＲＡＭ等に処理結果を書き込む。
【００１１】
一般に、ＲＯＭには、当該情報処理装置が起動する際に実行されるイニシャルプログラムローダや、当該情報処理装置が入出力を行う際の低レベルプログラムを集めた基本入出力システムなどが記憶され、ＲＡＭには、アプリケーションプログラム等、上位のプログラムが記憶される。また、携帯ゲーム装置などにおいては、アドレスバスならびにデータバスに接続されるＲＯＭカセットにゲームのプログラムを記録しておく手法も広く用いられている。
【００１２】
さて、このようなアドレスデコーダを利用した情報処理装置に関する技術については、以下の文献に開示されている。
【特許文献１】特開２００２−２４５０２４号公報
【００１３】
ここで、[特許文献１]に開示の技術においては、コンピュータがスタンバイ状態に入ったことを示すＣＰＵからの信号に基づいて、ＲＯＭ内のアドレスを解読するアドレスデコーダの出力データを強制的に特定アドレスに設定することで、スタンバイ時の消費電流条件をテスト時と実動作時とで合致させ、消費電流規格を満たすことを高い精度で保証することとしている。
【００１４】
さて、ＲＯＭやＲＡＭに記憶されているデータは、ＣＰＵにより実行される命令データと解釈することもでき、ＣＰＵによる処理の対象となる対象データと解釈することもできる。したがって、ＲＯＭに記憶されているＩＰＬやＢＩＯＳ等を、対象データとして読み出して出力するプログラムをＣＰＵに実行させれば、ＩＰＬやＢＩＯＳ等そのものを取得することが可能である。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、ＲＯＭ内に記憶されているＩＰＬやＢＩＯＳ、ＲＯＭカセットに記憶されているゲームプログラム等は重要なソフトウェア資産であるから、そのノウハウをできるだけ秘匿したいとの要望は強い。
【００１６】
また、これらのプログラムを改変する不正行為を防止するためには、これらのプログラムの読み出しそのものを困難にすることが効果的であると考えられるから、ＲＯＭ内に記憶されているＩＰＬやＢＩＯＳ、ＲＯＭカセットに記憶されているゲームプログラム等の、対象データとしての読み出しをできなくする技術が強く求められている。
【００１７】
本発明は、上記のような課題を解決するもので、コンピュータなどの情報処理装置のＲＯＭなどに記録されるＩＰＬやＢＩＯＳ、各種のアプリケーションプログラムなどが解析されるのを防止するのに好適な情報処理装置、情報処理方法、ならびに、これらを再構成可能な電子回路により実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【００１９】
本発明の第１の観点に係る情報処理装置は、中央処理装置、記憶装置、アドレス変換部、セレクト部を有し、以下のように構成する。
【００２０】
すなわち、中央処理装置は、処理の種類を表す命令データ、もしくは、処理の対象となる対象データのうち、所望のデータが配置される論理アドレスを出力する論理アドレス信号出力端子と、当該所望のデータが当該命令データであるか否かを出力する命令取得出力端子と、当該所望のデータの入力を受け付けるデータ信号入力端子と、を有する。
【００２１】
この中央処理装置は、一般的な情報処理装置におけるＣＰＵに相当するものである。なお、命令取得出力端子から出力される信号は、当該データ取得が「インストラクションフェッチ」「オペコードフェッチ」なのか、それとも「オペランドフェッチ」なのか、を示すと考えることもできる。
【００２２】
一方、記憶装置は、当該中央処理装置にて実行されるべき処理の種類を表す命令データが、物理アドレスに対応付けて記憶され、所望のデータが記憶される物理アドレスの入力を受け付ける物理アドレス信号入力端子と、当該物理アドレス信号入力端子を介して入力を受け付けられた物理アドレスからデータを読み出すか否かを表す入力を受け付けるセレクト信号入力端子と、セレクト信号入力端子によりデータを読み出す旨を表す入力が受け付けられると、物理アドレス信号入力端子により入力を受け付けられた物理アドレスに記憶されるデータを出力するデータ信号出力端子と、を有する。
【００２３】
この記憶装置は、一般的な情報処理装置におけるＲＯＭやＲＯＭカセットに相当するものであり、命令データは、ＩＰＬやＢＩＯＳ、アプリケーションプログラム等に相当する。
【００２４】
さらに、アドレス変換部は、当該論理アドレス信号出力端子から出力される論理アドレスを物理アドレスに変換して、当該物理アドレス信号入力端子へ与える。
【００２５】
典型的には、ＲＯＭの物理アドレスは論理アドレスの下位ビットから構成される。この場合、アドレス変換部は、中央処理装置の論理アドレス信号出力端子から出力される信号の一部を記憶装置に与える機能を果たす。
【００２６】
そして、セレクト部は、当該論理アドレス信号出力端子から出力される論理アドレスが当該命令データが記憶される物理アドレスに対応付けられる範囲に含まれ、かつ、当該命令取得出力端子から当該所望のデータが当該命令データである旨が出力されている、との条件が満たされるか否かを判定して、当該判定結果を命令データを読み出すか否かを表すものとして当該セレクト信号入力端子へ与える。
【００２７】
上記の例では、『論理アドレスがＲＯＭ内のＩＰＬやＢＩＯＳ等のプログラム部分に対するアクセスを意味するものであり、かつ、当該アクセスが「インストラクションフェッチ」「オペランドフェッチ」である』との条件が成立するか否かを判定するものである。
【００２８】
したがって、ＩＰＬやＢＩＯＳ等のプログラム部分を「オペランド」、すなわち、単なる対象データとして読み出そうとしても、上記の条件が成立しないため、ＲＯＭは、当該アクセスが自身へのものである、とは認識しなくなる。
【００２９】
そして、当該データ信号出力端子は、当該データ信号入力端子に接続される。
【００３０】
いわゆるデータバスに相当するものであり、ＲＯＭがセレクトされた場合には、指定された論理アドレス・物理アドレスに記憶されるデータをＲＯＭが出力するが、そうでない場合には、ＲＯＭはデータを出力しない。したがって、ＩＰＬやＢＩＯＳ等のプログラム部分を「オペランド」、すなわち、単なる対象データとして読み出そうとすると、ランダムな値、もしくは、データバスの既定値が得られることになる。この値は、正論理と負論理、アクティブハイとアクティブローのいずれを選択するかにより、０のみが並んだビット列、もしくは、１のみが並んだビット列となるのが典型的である。
【００３１】
本発明によれば、ＲＯＭなどに記録されるＩＰＬやＢＩＯＳ、各種のアプリケーションプログラムなどを単なるデータとして読み出そうとするプログラムをＣＰＵで実行したとしても、読み出しできないため、これらのプログラムが解析されるのを防止することができるようになる。
【００３２】
また、本発明の情報処理装置において、記憶装置は、当該中央処理装置にて処理の対象となるべき対象データが、物理アドレスに対応付けてさらに記憶され、セレクト部は、当該論理アドレス信号出力端子から出力される論理アドレスが当該対象データが記憶される物理アドレスに対応付けられる範囲に含まれるか否かを判定して、当該判定結果をデータを読み出すか否かを表すものとして当該セレクト信号入力端子へ与えるように構成することができる。
【００３３】
たとえば、ＲＯＭ内にフォントデータなどが記録されている場合を想定するものである。フォントデータは、命令データではなく対象データであるから、フォントデータが記憶されている領域については、「オペランドフェッチ」により読み出しがされることとなる。
【００３４】
したがって、「インストラクションフェッチ」「オペコードフェッチ」でないことを読み出し条件として設定しても良いが、通常のプログラムにおいては、フォントデータ等の対象データ領域をこれらのフェッチで読み出すことは事実上ない。
【００３５】
そこで、アドレスデコードの回路を単純にするため、ＲＯＭ内の対象データが配置される領域と命令データが配置される領域とを切り分けて、前者については、命令取得信号の状態を参照せずに、アクセスを行うこととする。
【００３６】
本発明によれば、ＲＯＭ等に記録された命令データと対象データを適切に区別しながら、アドレスデコードの回路をできるだけ単純に構成することができるようになる。
【００３７】
また、本発明の情報処理装置において、記憶装置は、不揮発性記憶装置であり、記憶装置に記憶される命令データは、当該中央処理装置が実行するイニシャルプログラムローダ、および、基本入出力システムを含むように構成することができる。
【００３８】
本発明は、上記発明の好適実施形態に係るものであり、本発明によれば、ＩＰＬやＢＩＯＳの解析をできるだけ防止することができるようになる。
【００３９】
また、本発明の情報処理装置において、当該論理アドレス信号出力端子、および、当該アドレス変換部は、アドレスバスに接続され、当該データ信号入力端子、および、当該データ信号出力端子は、データバスに接続され、当該アドレスバスならびに当該データバスには、一時的にデータを記憶するランダムアクセスメモリ、および、当該情報処理装置に対する入出力を行う入出力装置が接続されるように構成することができる。
【００４０】
本発明は、本発明の原理を典型的なコンピュータに適用したものであり、広く用いられるコンピュータに単純な回路を追加するだけで、本発明の構成とすることが可能となる。
【００４１】
本発明のその他の観点に係る情報処理方法は、中央処理装置と、記憶装置と、アドレス変換部と、セレクト部と、を有する情報処理装置が実行し、アドレス変換工程と、セレクト工程と、を備え、以下のように構成する。
【００４２】
すなわち、中央処理装置は、処理の種類を表す命令データ、もしくは、処理の対象となる対象データのうち、所望のデータが配置される論理アドレスを出力する論理アドレス信号出力端子と、当該所望のデータが当該命令データであるか否かを出力する命令取得出力端子と、当該所望のデータの入力を受け付けるデータ信号入力端子と、を有する。
【００４３】
一方、記憶装置には、当該中央処理装置にて実行されるべき処理の種類を表す命令データが、物理アドレスに対応付けて記憶される。
【００４４】
さらに、記憶装置は、所望のデータが記憶される物理アドレスの入力を受け付ける物理アドレス信号入力端子と、当該物理アドレス信号入力端子を介して入力を受け付けられた物理アドレスからデータを読み出すか否かを表す入力を受け付けるセレクト信号入力端子と、セレクト信号入力端子によりデータを読み出す旨を表す入力が受け付けられると、物理アドレス信号入力端子により入力を受け付けられた物理アドレスに記憶されるデータを出力するデータ信号出力端子と、を有する。
【００４５】
そして、当該データ信号出力端子は、当該データ信号入力端子に接続される。
【００４６】
ここで、アドレス変換工程では、アドレス変換部が、当該論理アドレス信号出力端子から出力される論理アドレスを物理アドレスに変換して、当該物理アドレス信号入力端子へ与える。
【００４７】
一方、セレクト工程では、セレクト部が、当該論理アドレス信号出力端子から出力される論理アドレスが当該命令データが記憶される物理アドレスに対応付けられる範囲に含まれ、かつ、当該命令取得出力端子から当該所望のデータが当該命令データである旨が出力されている、との条件が満たされるか否かを判定して、当該判定結果を命令データを読み出すか否かを表すものとして当該セレクト信号入力端子へ与える。
【００４８】
本発明のその他の観点に係るプログラムは、再構成可能な電子回路により、上記の情報処理装置を実現し、上記の情報処理方法を実行させるように構成する。
【００４９】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【００５０】
上記プログラムは、当該プログラムによって再構成されて電子回路を構成するＦＰＧＡ（Field Programmable Gate Array）やＤＳＰ（Ditigal Signal Processor）などの電子装置とは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００５１】
本発明によれば、コンピュータなどの情報処理装置のＲＯＭなどに記録されるＩＰＬやＢＩＯＳ、各種のアプリケーションプログラムなどが解析されるのを防止するのに好適な情報処理装置、情報処理方法、ならびに、これらを再構成可能な電子回路により実現するためのプログラムを提供することができる。
【発明を実施するための最良の形態】
【００５２】
以下に本発明の実施形態を説明する。なお、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００５３】
図１は、本実施形態に係る情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００５４】
本実施形態に係る情報処理装置１０１は、中央処理装置１０２、記憶装置１０３、アドレス変換部１０４、セレクト部１０５を有する。
【００５５】
ここで、中央処理装置１０２は、いわゆるＣＰＵに相当するものであり、記憶装置１０３は、いわゆるＲＯＭやＲＯＭカセットに相当するものであり、アドレス変換部１０４は、アドレス信号線の下位ビット部分を記憶装置１０３に接続する配線に相当し、セレクト部１０５は、アドレスデコーダに相当するものである。以下、詳細に説明する。
【００５６】
中央処理装置１０２は、少なくとも以下の信号端子を有する。
（１）論理アドレス信号出力端子１１１。所望のデータが配置される論理アドレスを出力する。データには、実行するプログラムそのもの、すなわち、処理の種類を表す命令データと、当該プログラムの処理の対象となるもの、すなわち、処理の対象となる対象データが存在し、中央処理装置１０２が有するメモリ空間内の論理アドレスによって、データを記憶する位置が定められる。一般にはアドレスバスに接続される。
（２）命令取得信号出力端子１１２。中央処理装置１０２がある論理アドレスに記憶されるデータを取得するために、論理アドレス信号出力端子１１１に当該論理アドレスを出力したときに、当該中央処理装置１０２が当該データを命令データとして必要としているのか、それとも対象データとして必要としているのかを示す。
（３）データ信号入力端子１１３。論理アドレス信号出力端子１１１に出力された論理アドレスから読み出されたデータが与えられる。一般にはデータバスに接続され、データ信号書込端子（図示せず）と一体に構成される。この場合は、読書信号線（図示せず）と共働して、読書信号線に「読込」を出力することで、データバスからのデータの読み込みを行う。
【００５７】
命令取得信号出力端子１１２から出力される信号は、当該データ取得が「インストラクションフェッチ」「オペコードフェッチ」なのか、それとも「オペランドフェッチ」なのか、を示すと考えることもできる。
【００５８】
広く普及したＺ８０（商標）というＣＰＵでは、「Ｍ１サイクル」において「インストラクションフェッチ」を行い、Ｍ１信号端子によって、現在のサイクルが「Ｍ１サイクル」であるか否かを示すこととしている（ただし、負論理を用いている）。したがって、Ｚ８０の場合には、Ｍ１信号端子が命令取得信号出力端子１１２に相当する。
【００５９】
一方、記憶装置１０３には、以下のデータが物理アドレスに対応付けて記憶される。
（１）当該中央処理装置１０２にて実行されるべき処理の種類を表す命令データ。たとえば、ＩＰＬやＢＩＯＳ、アプリケーションプログラム等。
（２）当該中央処理装置１０２にて実行されるべき処理の対象となる対象データ。記憶装置１０３がＲＯＭである場合には、たとえばフォントデータ等、書き換えを必要とせず、ＢＩＯＳ等で利用されるデータが相当する。
【００６０】
そして、記憶装置１０３は、少なくとも以下の信号端子を有する。
（１）物理アドレス信号入力端子１３１。所望のデータが記憶される物理アドレスの入力を受け付ける。ＣＰＵのメモリ空間の一部に記憶装置１０３が割り当てられるのが一般的であり、この場合、論理アドレスの所定下位ビットが、物理アドレスに相当する。一般には、アドレスバスの一部の信号線が、物理アドレス信号入力端子１３１に接続される。
（２）セレクト信号入力端子１３２。当該物理アドレス信号入力端子１３１を介して入力を受け付けられた物理アドレスからデータを読み出すか否かを表す入力を受け付ける。中央処理装置１０２がバスを介して複数の装置（ＲＯＭ、ＲＡＭ、その他の入出力装置等）と接続されている場合に、中央処理装置１０２がデータのやりとりをしたい装置が、当該記憶装置１０３である旨を示すための信号が与えられる。
（３）データ信号出力端子１３３と、セレクト信号入力端子１３２にデータを読み出す旨を表す入力が受け付けられると、物理アドレス信号入力端子１３１により入力を受け付けられた物理アドレスに記憶されるデータを出力するものである。一般にはデータバスに接続される。
【００６１】
アドレス変換部１０４は、当該論理アドレス信号出力端子１１１から出力される論理アドレスを物理アドレスに変換して、当該物理アドレス信号入力端子１３１へ与えるものである。
【００６２】
上記のように、典型的には、ＲＯＭの物理アドレスは論理アドレスの下位ビットから構成される。したがって、アドレス変換部１０４は、典型的には、アドレスバスの一部を記憶装置１０３に接続することで実現される。
【００６３】
さて、従来の情報処理装置においては、論理アドレスの所定上位ビットが当該記憶装置に割り当てられるアドレスの所定のビットパターンになっているか否かをアドレスデコーダが判断し、その結果を直ちにセレクト信号入力端子１３２に与えていた。このため、記憶装置１０３へのアクセスが、オペコードフェッチなのかオペランドフェッチなのかの区別はされなかった。
【００６４】
このため、記憶装置１０３に格納された命令データを読み出してダンプするプログラムを、中央処理装置１０２にて実行すると、ＩＰＬやＢＩＯＳ等が読み出されてしまい、動作解析が可能となってしまっていた。
【００６５】
一方、本実施形態においては、以下のような構成を採用することで、ＩＰＬやＢＩＯＳ等を「命令データ」として読み出して実行することは可能とする一方で、「対象データ」としての読み出しを禁止して、解析などを防止することとしている。
【００６６】
図２は、情報処理装置１０１にて実行される処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【００６７】
本図に示す処理は、中央処理装置１０２が、記憶装置１０３に記憶されているデータを読み出そうとしている状況を想定したものである。また、各処理は電子回路によって適宜並列に実行されるため、フローチャート上でもそのように表記しているが、その順序は適当に変更が可能である。
【００６８】
すなわち、中央処理装置１０２は論理アドレス信号出力端子１１１に所望のデータが記憶されていると想定される論理アドレスを出力するが、この際、同時に、命令取得信号出力端子１１２からは、当該所望のデータが当該命令データであるか否かが、出力される（ステップＳ３０１）。
【００６９】
アドレス変換部１０４は、当該論理アドレスを記憶装置１０３における物理アドレスに変換して（ステップＳ３０２）、記憶装置の物理アドレス信号入力端子１３１に出力する（ステップＳ３０３）。
【００７０】
一方、セレクト部１０５は、以下の条件
（１）当該論理アドレス信号出力端子１１１から出力される論理アドレスが当該命令データが記憶される物理アドレスに対応付けられる範囲に含まれ、かつ、
（２）当該命令取得信号出力端子１１２から当該所望のデータが当該命令データである旨が出力されている
が満たされるか否かを判定して（ステップＳ３０４）、判定結果を、命令データを読み出すか否かを表すものとして当該セレクト信号入力端子１３２へ与える（ステップＳ３０５）。
【００７１】
上記の条件（１）は、読み出そうとしているデータが、ＩＰＬやＢＩＯＳ等、保護したいと考えている命令データであるか否かを示すものである。
【００７２】
一方、条件（２）は、読み出しのタイミングが、Ｚ８０でいうＭ１サイクルに相当するか否か、すなわち、当該アクセスが「インストラクションフェッチ」「オペランドフェッチ」であるか否かを示すものである。
【００７３】
このように構成することで、ＩＰＬやＢＩＯＳ等のプログラム部分を「オペランド」、すなわち、単なる対象データとして読み出そうとしても、上記の条件が成立しないため、ＲＯＭは、当該アクセスが自身へのものである、とは認識しなくなる。
【００７４】
すなわち、記憶装置１０３は、セレクト信号入力端子１３２に与えられた判定結果が真である場合（ステップＳ３０６；Ｙｅｓ）、物理アドレス信号入力端子１３１に与えられている物理アドレスに記憶されているデータをデータ信号出力端子１３３から出力する（ステップＳ３０７）。
【００７５】
一方、セレクト信号入力端子１３２に与えられた判定結果が偽である場合（ステップＳ３０６；Ｎｏ）、データの出力は行わない。
【００７６】
上記のように、当該データ信号出力端子１３３は、当該データ信号入力端子１１３に、典型的にはデータバスを介して接続されている。
【００７７】
その後中央処理装置１０２は、データ信号入力端子１１３に入力されているデータを、「当該アドレスに記憶されているデータ」として読み出して（ステップＳ３０８）、本処理を終了する。
【００７８】
ＲＯＭがセレクトされた場合には、指定された論理アドレス・物理アドレスに記憶されるデータをＲＯＭが出力するが、そうでない場合には、ＲＯＭはデータを出力しない。
【００７９】
したがって、ＩＰＬやＢＩＯＳ等のプログラム部分を「オペランド」、すなわち、単なる対象データとして読み出そうとすると、ランダムな値、もしくは、データバスの既定値が得られることになる。
【００８０】
この値は、正論理と負論理、アクティブハイとアクティブローのいずれを選択するかにより、０のみが並んだビット列、もしくは、１のみが並んだビット列となるのが典型的である。
【００８１】
図３は、本実施形態の情報処理装置の、より具体的な構成例を示す説明図である。以下、本図を参照して説明する。
【００８２】
なお、以下の説明では、理解を容易にするため、回路構成において正論理ならびにアクティブハイを採用し、「〜であるか否か」の前者を「１」に、後者を「０」に、それぞれ割り当てて説明する。しかしながら、実装に合わせて、回路や配線の一部を、負論理やアクティブローにより実装することは、当業者には容易であり、これらの態様についても、本発明の範囲に含まれる。
【００８３】
本図に示す実施形態においては、ＣＰＵ  ２０１が中央処理装置１０２を、ＲＯＭ  ２０２が記憶装置１０３を、それぞれ実現する。また、アドレス変換部１０４は、アドレスバス２１１からＲＯＭ  ２０２への配線により実現され、セレクト部１０５は、アドレスバス２１１ならびにＣＰＵ  ２０１のＭ１信号端子（Ｍ１）に接続される論理回路２１３により実現される。
【００８４】
また、ＲＡＭ  ２０３ならびに入出力機器２０４もアドレスバス２１１およびデータバス２１４により構成されるバスに接続されており、ＣＰＵ  ２０１のＲ／Ｗ信号端子（Ｒ／Ｗ）とアドレスデコーダ２１６、２１７によって、バスを使用するタイミングが設定される。
【００８５】
以下論理アドレスは１６ビット（ａ０〜ａ１５）で表現され、データバスは８ビット（ｄ０〜ｄ７）であると想定する。するとメモリ空間は、全体で、216 = 65536バイトということになる。以下、先頭に「０ｘ」を付すことで、１６進数表記であることを表す。たとえば、0x0000 = 0，0xffff = 65535である。
【００８６】
図４は、当該構成例におけるメモリ空間の様子を示す説明図である。以下、本図を参照して説明する。
【００８７】
本図に示すように、ＣＰＵ  ２０１の論理アドレスとしては、以下のようにメモリ割り当てが行われており、メモリマップＩＯ（memory-mapped I/O）が採用されている。
（１）論理アドレス0x0000〜0x7fff（３２キロバイト）  …  ＲＡＭ  ２０３。
（２）論理アドレス0x8000〜0x9fff（８キロバイト）  …  入出力機器２０４。
（３）論理アドレス0xa000〜0xdfff（１６キロバイト）  …  ＲＯＭ  ２０２内の対象データ（フォント等）。
（４）論理アドレス0xe000〜0xffff（８キロバイト）  …  ＲＯＭ  ２０２内の命令データ（ＩＰＬ、ＢＩＯＳ等）。
【００８８】
さて、論理アドレスAは、信号線a0〜a15により、
A = a0 + a1×2 + a2×22 + … + a15×215
のように表現できる。したがって、上記（１）〜（４）は、以下のように区別することができる。
（１）a15 = 0であれば、ＲＡＭ  ２０３へのアクセス。
（２）a15 = 1，a14 = a13 = 0であれば、入出力機器２０４へのアクセス。
（３）a15 = 1，a14 = 0，a13 = 1、または、a15 = 1，a14 = 1，a13 = 0であれば、ＲＯＭ  ２０２内の対象データへのアクセス。
（４）a15 = a14 = a13 = 1であれば、ＲＯＭ  ２０２内の命令データへのアクセス。
【００８９】
このような信号線の状態から、論理回路２１３およびアドレスデコーダ２１６、２１７が構成されている。
【００９０】
Ｍ１信号端子（Ｍ１）は、命令取得信号出力端子１１２に相当するものであり、論理回路２１３に接続されている。すなわち、ＲＯＭ  ２０２に対しては、
（ａ）a15 = 1，a14 = 0，a13 = 1、
（ｂ）a15 = 1，a14 = 1，a13 = 0、
（ｃ）a15 = 1，a14 = 1，a13 = 1，M1 = 1
のいずれかの場合に、セレクト信号入力端子１３２に相当するＣＳ端子（ＣＳ）に「１」が入力されることになる。
【００９１】
また、本実施形態では、ＲＯＭ  ２０２の総容量は２４キロバイトであり、物理アドレスは、0x0000〜0x5fffの範囲をとることになるが、単純にa14〜a0を並べると、その値は、0x2000〜0x7fffの間となってしまう。
【００９２】
そこで、a14，a13の２ビット整数に対して１を減算する減算回路２１９を間に配置することにより、値をシフトして、0x0000〜0x5fffとなるようにしている。減算回路２１９が、アドレス変換部１０４に相当する。
【００９３】
なお、物理アドレスから論理アドレスへの変換が単なる下位ビットの取得で済む場合には、減算回路２１９に相当するような明示的なアドレス変換部１０４を用意する必要はなく、アドレスバス２１１の信号線の一部を、ＲＯＭ  ２０２に接続すれば良い。
【００９４】
ここで、本実施形態が従来の態様と異なるのは、Ｍ１信号端子（Ｍ１）の出力を、論理回路２１３内にて考慮している部分のみである。すなわち、従来の情報処理装置に対しても簡易な回路の追加のみによって、本発明を実現することが可能であり、コンピュータ等のＲＯＭ等に記録されるＩＰＬやＢＩＯＳ、各種のアプリケーションプログラムなどが解析されるのをできるだけ防止することができる。
【００９５】
なお、これらの電子回路は、たとえばＦＰＧＡ（Field Programmable Gate Array）やＤＳＰ（Digital Signal Processor）に対する回路構成用のプログラムを実行することで、これらの再構成可能なハードウェア上に実現することが可能である。
【００９６】
また、メモリマッピングが動的に変更できるようなハードウェアにおいては、メモリマッピングとインストラクションフェッチとの処理を組み合わせるような属性をハードウェア的に用意することで、上記発明を実現することが可能である。
【実施例２】
【００９７】
上記の実施形態では、ＲＯＭ  ２０２の読み出しをインストラクションフェッチ時のみに可能とすることで、ＲＯＭ  ２０２に記憶されている情報の解析を困難にすることとしていたが、ＲＡＭ  ２０３内にも、これと同様な「保護領域」を用意することができる。
【００９８】
すなわち、ＲＡＭ  ２０３に割り当てられるアドレス空間の一部については、
（１）当該アドレス範囲からの読み出しであるか否かを判定する電子回路を設け、その出力とＭ１信号端子（Ｍ１）との論理積をとって、ＲＡＭ  ２０３のＣＳ信号端子に与える。
（２）当該アドレス範囲への書き込みは、従来と同様に行う。
のように構成する。
【００９９】
そして、プログラムローダが、ＤＶＤ−ＲＯＭやＲＯＭカセット等の外部記憶媒体からＲＡＭ  ２０３にプログラムを読み出して実行する場合に、保護したいプログラム部分については、ＲＡＭ  ２０３内の「保護領域」にロードすることとするのである。
【０１００】
各種の情報処理装置で使用されるプログラムならびにそのローダは、アドレス空間内において、プログラム断片を種々の位置に配置できるように、リロケータブルに設計されていることが多い。本実施形態においては、保護したいプログラム断片については、「保護領域」に配置するように、リロケータブル情報を設定しておく。
【０１０１】
また、プログラムに所定の暗号化を施してから外部記憶媒体に記録しておくこととし、プログラムローダは復号をしながら「保護領域」にロードするものとし、プログラムローダ自体も、ＲＯＭ  ２０２またはＲＡＭ  ２０３内の「保護領域」に配置しておくことが望ましい。
【０１０２】
このようにすると、プログラムを不正に解析しようとする第三者が、外部記憶媒体からＲＡＭ  ２０３にアプリケーションプログラムをデータとして読み出すような解析プログラムを情報処理装置１０１にて実行したとしても、読み出されるプログラムは暗号化されたものとなる。
【０１０３】
また、プログラムローダを起動して外部記憶媒体からプログラムを復号化しつつ読み出したとしても、これを復号した結果は、「保護領域」に置かれることとなり、データとして読み出すことはできない。
【０１０４】
したがって、第三者が不正解析を試みようとしたとしても、解析を一層困難にすることができるのである。
【産業上の利用可能性】
【０１０５】
以上説明したように、本発明によれば、コンピュータなどの情報処理装置のＲＯＭなどに記録されるＩＰＬやＢＩＯＳ、各種のアプリケーションプログラムなどが解析されるのを防止するのに好適な情報処理装置、情報処理方法、ならびに、これらを再構成可能な電子回路により実現するためのプログラムを提供することができる。
【図面の簡単な説明】
【０１０６】
【図１】本実施形態に係る情報処理装置の概要構成を示す模式図である。
【図２】本実施形態に係る情報処理装置にて実行される処理の制御の流れを示すフローチャートである。
【図３】本実施形態の情報処理装置の、より具体的な構成例を示す説明図である。
【図４】当該構成例におけるメモリ空間の様子を示す説明図である。
【符号の説明】
【０１０７】
１０１  情報処理装置
１０２  中央処理装置
１０３  記憶装置
１０４  アドレス変換部
１０５  セレクト部
１１１  論理アドレス信号出力端子
１１２  命令取得信号出力端子
１１３  データ信号入力端子
１３１  物理アドレス信号入力端子
１３２  セレクト信号入力端子
１３３  データ信号出力端子
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  入出力機器
２１１  アドレスバス
２１３  論理回路
２１４  データバス
２１６  アドレスデコーダ
２１７  アドレスデコーダ
２１９  減算回路
【図１】
2009223611.tif 000003
【図２】
2009223611.tif 000004
【図３】
2009223611.tif 000005
【図４】
2009223611.tif 000006