(57)【要約】【課題】シングルＣＰＵを用いて、記憶装置から読み出すデータと、このデータを読み出す際の消費電流との関連性を減らして、消費電流からデータを推測することを防止することができる情報処理装置を得ること。【解決手段】ＣＰＵ１００は、１回目のロードアクセスによってＲＯＭ１０１のアドレスＡｄ０に格納されたデータＤ１１〜Ｄ１８をデータバス１０３に出力させ、データの一部であるデータＤ１１〜Ｄ１４を格納する。つぎに、ＣＰＵ１００は、２回目のロードアクセスによってＲＯＭ１０１のアドレスＡｄ１に格納されたデータＤ２１〜Ｄ２８を出力させ、データの一部であるデータＤ２１〜Ｄ２４を格納する。ＣＰＵ１００は、格納したＤ１１〜Ｄ１４とＤ２１〜Ｄ２４とを連結してデータバス１０３のバス幅のデータＤ１１〜Ｄ１４，Ｄ２１〜Ｄ２４を生成する。【選択図】        図３
2009015580.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する記憶装置と、該記憶装置からデータバスを介してデータを読み出して所定の処理を実行するＣＰＵとを有する情報処理装置において、
前記ＣＰＵは、
前記記憶装置の複数のアドレスを指定し、指定したアドレスが示す領域に格納される各データの一部を選択し、選択した一部のデータを連結して前記データバスのバス幅のデータを生成し、生成したデータを用いて前記所定の処理を実行すること、
を特徴とする情報処理装置。
【請求項２】
前記ＣＰＵは、
前記各データの一部として連続したビットを選択すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ＣＰＵは、
前記各データの一部として不連続なビットを選択すること、
を特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記ＣＰＵは、
前記記憶装置の複数のアドレスを指定して前記記憶装置から指定したアドレスが示す領域に格納された各データを読み出すコマンドを有すること、
を特徴とする請求項１〜３の何れか一つに記載の情報処理装置。
【請求項５】
データを格納する記憶装置と、予め定められた規則にしたがって数値を発生する数値発生装置と、前記記憶装置に格納されたデータを読み出して所定の処理を実行するＣＰＵとがデータバスによって接続される情報処理装置において、
前記記憶装置は、
前記ＣＰＵの指示に基づいて、前記ＣＰＵから指定されたアドレスが示す領域に格納されたデータの一部を前記データバスに出力し、
前記数値発生装置は、
前記ＣＰＵの指示に基づいて、前記記憶装置が出力したデータの一部とは異なるビットのデータを前記データバスに出力し、
前記ＣＰＵは、
前記記憶装置に複数回アクセスして、前記記憶装置がデータバスに出力したデータを選択し、選択したデータを連結して前記データバスのバス幅のデータを生成し、生成したデータを用いて前記所定の処理を実行すること、
を特徴とする情報処理装置。
【請求項６】
前記記憶装置は、
前記データの一部として連続したビットを前記データバスに出力し、
前記数値発生装置は、
前記記憶装置が出力した連続したビットとは異なる連続したビットを前記データバスに出力すること、
を特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記記憶装置は、
データの一部として不連続なビットを前記データバスに出力し、
前記数値発生装置は、
前記記憶装置が出力した不連続なビットとは異なる不連続なビットを前記データバスに出力すること、
を特徴とする請求項５に記載の情報処理装置。
【請求項８】
前記ＣＰＵは、
前記記憶装置の複数のアドレスを指定して前記記憶装置から指定したアドレスが示す領域に格納された各データを読み出すコマンドを有すること、
を特徴とする請求項５〜７の何れか一つに記載の情報処理装置。
【請求項９】
データを格納する記憶装置と、該記憶装置に格納されたデータを読み出して所定の処理を行なうＣＰＵとを有し、データバスを介して前記ＣＰＵが前記記憶装置からデータを読み出す情報処理装置において、
前記記憶装置は、
第１および第２のアドレスが示す領域に格納される各データを読み出し、読み出したデータの一部を選択して前記データバスのバス幅のデータとしてデータバスに出力し、
前記ＣＰＵは、
前記記憶装置に第１および第２のアドレスを組として異なるアドレスを複数回指定してデータバスにデータを出力させ、第１および第２のアドレスの組に対する各データの一部を選択し、選択した各データの一部を連結してバス幅のデータを生成し、生成したデータを用いて前記所定の処理を行うこと、
を特徴とする情報処理装置。
【請求項１０】
前記記憶装置は、
前記読み出したデータの一部として前記第１および第２のアドレスが示す領域に格納されるそれぞれのデータの連続したビットを選択して前記データバスに出力し、
前記ＣＰＵは、
データの一部として前記記憶装置が出力したデータの一部の連続したビットを選択すること、
を特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記記憶装置は、
前記読み出したデータの一部として前記第１および第２のアドレスが示す領域に格納されるそれぞれのデータの不連続なビットを選択して前記データバスに出力し、
前記ＣＰＵは、
データの一部として前記記憶装置が出力したデータの一部の不連続なビットを選択すること、
を特徴とする請求項９に記載の情報処理装置。
【請求項１２】
前記ＣＰＵは、
前記記憶装置の前記第１および第２のアドレスの組を複数回指定して前記記憶装置がデータバスに出力するデータを読み出すコマンドを有すること、
を特徴とする請求項９〜１１の何れか一つに記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置に格納されたデータを読み出して演算を行う情報処理装置に関するものであり、特に、このデータを読み出す際の消費電流との関連性を減らして、消費電流からデータを推測することを防止することができる情報処理装置に関するものである。
【背景技術】
【０００２】
従来から、記憶装置から読み出すデータと、このデータを読み出す際の消費電流との関連性を減らして、消費電流からデータを推測することを防止するための種々の技術が考えられている。
【０００３】
たとえば、特許文献１に記載の従来技術では、正常データと正常データの各ビットを反転させたビット反転データとを組としてデータバスに出力することで、ハミング重みを一定にしてデータの依存性を消費電流に反映させないようにして消費電流からデータの推測を防止する技術が開示されている。
【０００４】
【特許文献１】特開２００４−３５７３１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１に記載の従来技術では、正常データとビット反転データに対して演算処理を同時に行う必要があるが、シングルＣＰＵである汎用組み込みＣＰＵでは、正常データとビット反転データとに対して同一処理を同時に実行することはできないという問題があった。
【０００６】
本発明は、上記に鑑みてなされたものであって、シングルＣＰＵを用いて、記憶装置から読み出すデータと、このデータを読み出す際の消費電流との関連性を減らして、消費電流からデータを推測することを防止することができる情報処理装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、データを格納する記憶装置と、該記憶装置からデータバスを介してデータを読み出して所定の処理を実行するＣＰＵとを有する情報処理装置において、前記ＣＰＵは、前記記憶装置の複数のアドレスを指定し、指定したアドレスが示す領域に格納される各データの一部を選択し、選択した一部のデータを連結して前記データバスのバス幅のデータを生成し、生成したデータを用いて前記所定の処理を実行すること、を特徴とする。
【発明の効果】
【０００８】
この発明によれば、ＣＰＵが、記憶装置の複数のアドレスを指定し、指定したアドレスが示す領域に格納される各データの一部を選択し、選択した一部のデータを連結してデータバスのバス幅のデータを生成するようにしているため、シングルＣＰＵを用いて、記憶装置から読み出すデータと、このデータを読み出す際の消費電流との関連性を減らして、消費電流からデータを推測することを防止することができる情報処理装置を得ることができるという効果を奏する。
【発明を実施するための最良の形態】
【０００９】
以下に、本発明にかかる情報処理装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１０】
実施の形態１．
図１〜図３を用いてこの発明の実施の形態１を説明する。図１は、この発明における情報処理装置の実施の形態１の構成を示すブロック図である。図１において、情報処理装置は、ＣＰＵ（Control Processing Unit）１００と、不揮発性メモリ（以下、ＲＯＭ（Read Only Memory）という）１０１と、揮発性メモリ（以下、ＲＡＭ（Random Access Memory）という）とが、データバス１０３によって接続される。なお、データバス１０３のバス幅は任意であるが、ここでは、説明を簡単にするためにデータバス１０３のバス幅を８ビットとする。また、以下の説明において、ＲＯＭ１０１およびＲＡＭ１０２をあわせて記憶素子ということがある。
【００１１】
ＲＯＭ１０１は、ＣＰＵ１００が実行するプログラムおよびプログラムで用いる固定データを格納する。ＲＡＭ１０２は、ＣＰＵ１００に一時的な作業領域として用いられる。      
【００１２】
ＣＰＵ１００は、複数の汎用レジスタを有し、ＲＯＭ１０１に格納されたプログラムにしたがって算術演算や論理演算などの演算処理、ＲＯＭ１０１に格納されたデータのロード、およびＲＡＭ１０２へのデータのストア／ロードを実行して所望の機能を実現する。
【００１３】
ＣＰＵ１００と記憶素子間のデータ転送は、データバス１０３のバス幅単位（ここでは、８ビット単位）で行われるが、記憶素子に格納される８ビット単位のデータは、データビット（データとして意味のあるデータを格納するビット）と、冗長ビットとで構成される。ＣＰＵ１００は、複数の異なるアドレスを指定して記憶素子から複数回データをロードし、ロードした各データの冗長ビットを廃棄して、各データのデータビットのデータを連結して８ビットのデータを生成する。
【００１４】
なお、図１においては、データバス１０３のみを記載したが、ＣＰＵ１００、ＲＯＭ１０１、およびＲＡＭ１０２は、データのストア／ロードを制御する制御信号（チップセレクト信号やリードイネーブル信号、ライトイネーブル信号など）を伝送する制御バス、およびアクセスすべき（データをストア／ロードすべき）アドレスを指定するアドレスバスによっても接続されている。また、ＣＰＵ１００、ＲＯＭ１０１、およびＲＡＭ１０２が別々の創始イメージとなっているが、１チップマイコンのように１つのパッケージにこれらの構成要素が組み込まれていてもよい。また、データバス１０３には、外部との通信を行うＩ／Ｏ装置などが接続されていてもかまわない。
【００１５】
図２のフローチャート、および図３を参照して、この実施の形態１の情報処理装置のＣＰＵ１００が記憶素子からデータをロードするデータロード処理の動作について説明する。ＣＰＵ１００は、ロードアクセス対象となる記憶素子のアドレスを指定する（図２のステップＳ１０１）。
【００１６】
具体的には、ＣＰＵ１００は、ロードアクセス対象となる記憶素子の制御タイミングに基づいて当該記憶素子に対する制御信号をアサートにするとともに、アクセスすべきアドレスを示すアドレス信号を出力する。ここでは、ＲＯＭ１０１をロードアクセス対象とし、ＣＰＵ１００は、ＲＯＭ１０１に対する制御信号（チップセレクト信号やリードイネーブル信号）をアサートにして、アクセスすべきアドレスＡｄ０を示すアドレス信号を出力する。
【００１７】
記憶素子は、制御信号およびアドレス信号に基づいてアドレス信号によって指定された領域に格納されたバス幅のデータを読み出してデータバス１０３に出力する（図２のステップＳ１０２）。図３においては、ＲＯＭ１０１のアドレスＡｄ０が示す領域にはＤ１１〜Ｄ１８の８ビットのデータが格納されている。したがって、ＲＯＭ１０１は、Ｄ１１〜Ｄ１８をデータバス１０３に出力する。
【００１８】
ＣＰＵ１００は、データバス１０３上のデータの一部（予め定められたデータビット）を内部の汎用レジスタに格納する（図２のステップＳ１０３）。また、ＣＰＵ１００は、記憶素子のアクセスタイミングに基づいて制御信号をネゲートにする。
【００１９】
図３においては、ＲＯＭ１０１のアドレスＡｄ０が示す領域に格納されたＤ１１〜Ｄ１８の８ビットのデータのＤ１１をＭＳＢ（Most  Significant  Bit）とし、Ｄ１８をＬＳＢ（Least  Significant  Bit）とした場合に、下位４ビットを冗長データとし、上位４ビットをデータビットとしている。しがたって、ＣＰＵ１００は、上位４ビット（Ｄ１１〜Ｄ１４）をデータビットとして汎用レジスタである８ビットレジスタＡに格納する。
【００２０】
ＣＰＵ１００は、記憶素子のアドレスを変更して指定する（図２のステップＳ１０４）。具体的には、ステップＳ１０１において指定したアドレスが示す領域に格納されたデータと組となるデータを格納している領域を示すアドレス信号をアドレスバスに出力し、アクセス対象となる記憶素子に対する制御信号をアサートにする。この組付けは、たとえば、アドレス「００００」とアドレス「０００１」とを組とするなど予めルールを定めておけばよい。ここでは、ＣＰＵ１００は、先のステップＳ１０１において指定したアドレスＡｄ０が示す領域に格納されたＤ１１〜Ｄ１８の８ビットのデータと組となるデータが格納されている領域を示すアドレスＡｄ１を指定する。
【００２１】
記憶素子は、制御信号およびアドレス信号に基づいてアドレス信号によって指定された領域に格納されたバス幅のデータを読み出してデータバス１０３に出力する（図２のステップＳ１０５）。図３においては、ＲＯＭ１０１のアドレスＡｄ１が示す領域にはＤ２１〜Ｄ２８の８ビットのデータが格納されている。したがって、ＲＯＭ１０１は、Ｄ２１〜Ｄ２８をデータバス１０３に出力する。
【００２２】
ＣＰＵ１００は、データバス１０３上のデータの一部（予め定められたデータビット）を内部の汎用レジスタに格納する（図２のステップＳ１０６）。また、ＣＰＵ１００は、記憶素子のアクセスタイミングに基づいて制御信号をネゲートにする。
【００２３】
図３においては、ＲＯＭ１０１のアドレスＡｄ１が示す領域に格納されたＤ２１〜Ｄ２８の８ビットのデータのＤ２１をＭＳＢとし、Ｄ２８をＬＳＢとした場合に、上位４ビットをデータビットとし、下位４ビットを冗長データとしている。しがたって、ＣＰＵ１００は、上位４ビット（Ｄ２１〜Ｄ２４）をデータビットとして汎用レジスタである８ビットレジスタＢに格納する。
【００２４】
ＣＰＵ１００は、ステップＳ１０３において汎用レジスタに格納したデータと、ステップＳ１０６において汎用レジスタに格納したデータとを連結してバス幅のデータを生成してデータロード処理を終了する（図２のステップＳ１０７）。
【００２５】
図３においては、ＣＰＵ１００は、８ビットレジスタＡに格納したアドレスＡｄ０のデータビットのデータＤ１１〜Ｄ１４を上位４ビットとし、８ビットレジスタＢに格納したアドレスＡｄ１のデータビットのデータＤ２１〜Ｄ２４を下位４ビットとして連結してバス幅８ビットのデータを生成し、８ビットレジスタＣに格納している。すなわち、ＣＰＵ１００は、１回目のロードアクセスによってＲＯＭ１０１から読み出したデータを一部（上位４ビット）と、２回目のロードアクセスによってＲＯＭ１０１から読み出したデータの一部（下位４ビット）とを選択し、１回目のロードアクセスによって選択したデータを上位４ビットとし、２回目のロードアクセスによって選択したデータを下位４ビットとして連結して所定の処理に用いるデータとしている。
【００２６】
ＣＰＵ１００は、生成したデータを用いてプログラムにしたがった処理を行う。なお、ここでは、ロードアクセス対象をＲＯＭ１０１としたが、ロードアクセス対象がＲＡＭ１０２であってもデータロード処理は同様となる。
【００２７】
このように、この実施の形態１においては、ＣＰＵ１００が、記憶装置（記憶素子）であるＲＯＭ１０１またはＲＡＭ１０２の複数のアドレスを指定し、指定したアドレスが示す領域に格納される各データの一部を選択し、選択した一部のデータを連結してデータバスのバス幅のデータを生成するようにしているため、シングルのＣＰＵを用いて、実際の処理に用いるデータをカモフラージュしてＲＯＭ１０１またはＲＡＭ１０２からデータを読み出すことが可能となり、実際の処理に用いるデータと、ＲＯＭ１０１またはＲＡＭ１０２からデータを読み出す際の消費電流との関連性を減らして、消費電流からデータを推測することを防止することができる。
【００２８】
なお、この実施の形態１においては、記憶素子に格納する８ビットのデータの上位４ビットをデータビットとし、下位４ビットを冗長ビットとして説明したが、冗長ビットとデータビットとのビット位置はこれに限るものではなく、たとえば、データビットを奇数ビットとし、冗長ビットを偶数ビットとするなど、データビットと冗長ビットの位置は不連続であってもかまわない。
【００２９】
また、この実施の形態１においては、記憶素子に格納する８ビットのデータのうちデータビットおよび冗長ビットの数を４ビットずつとして２回のロードによって読み出した２組のデータを連結する場合を例に挙げて説明したが、記憶素子に格納する８ビットのデータのデータビットと冗長ビットの割合を変えて、２組以上のデータを連結するようにしてもよい。
【００３０】
さらに、この実施の形態１では、データロード処理を複数の手順に分けて説明したが、連結ビット情報などで構成されるパラメータつきのデータロード処理コマンドを用いるようにしてもよい。すなわち、パラメータにアクセスすべき記憶素子を識別するための識別子や１回目および２回目のロードアクセスのアドレスなど、記憶素子からデータを読み出して連結する際に必要な情報をパラメータとするデータロード処理コマンドを設けてＣＰＵ１００に実行させる。これにより、ＣＰＵ１００が実行するプログラムのコーディングを簡単にすることができる。
【００３１】
実施の形態２．
図４〜図６を用いてこの発明の実施の形態２を説明する。図４は、この発明における情報処理装置の実施の形態２の構成を示す図である。図４に示した情報処理装置は、先の図１に示した実施の形態１の情報処理装置に、データバス１０３に接続される数値発生装置１０４が追加されている。先の図１に示した実施の形態１と同じ機能を持つ構成部分には同一符号を付し、重複する説明は省略する。
【００３２】
ＲＯＭ１０１およびＲＡＭ１０２は、先の実施の形態１と同じ機能に加え、指定されたアドレスのデータを読み出してデータバス１０３に出力する際に、ＣＰＵ１００から指定されたビットのみを選択してデータバス１０３に出力する出力ビット選択機能を備えている。
【００３３】
数値発生装置１０４は、規定された数値、または規定されない数値をバス幅分のビットで発生する数値発声機能と、ＣＰＵ１００から指定されたビットのみを選択してデータバス１０３に出力する出力ビット選択機能を備えている。
【００３４】
なお、図４においては、ＣＰＵ１００、ＲＯＭ１０１、ＲＡＭ１０２、および数値発生装置１０４が別々の素子イメージでかかれているが、１チップマイコンのように１つのパッケージにこれらの構成要素が組み込まれていてもよい。
【００３５】
つぎに、図５のフローチャート、および図６を参照して、この実施の形態２の情報処理装置のデータロード処理の動作について説明する。なお、先の図２のフローチャートを参照して説明した実施の形態１のデータロード処理の動作と同じ動作については、その詳細な説明を省略する。
【００３６】
ＣＰＵ１００は、ロードアクセス対象となる記憶素子のアドレスを指定する（図５のステップＳ２０１）。図６においては、ＲＯＭ１０１をロードアクセス対象とし、ＣＰＵ１００は、ＲＯＭ１０１に対する制御信号をアサートにして、アクセスすべきアドレスＡｄ０を示すアドレス信号を出力する。また、ＣＰＵ１００は、ＲＯＭ１０１および数値発生装置１０４の出力ビット選択機能にデータバス１０３へ出力するビットを選択させる選択制御信号を制御信号に含めて出力する。たとえば、ＣＰＵ１００は、上位４ビットをデータバス１０３に出力させる選択制御信号を制御信号に含めて出力する。
【００３７】
記憶素子は、制御信号およびアドレス信号に基づいてアドレス信号によって指定された領域に格納されたバス幅のデータを読み出して、選択制御信号によって指定されたビットのデータをデータバス１０３に出力する（図５のステップＳ２０２）。図６においては、ＲＯＭ１０１のアドレスＡｄ０が示す領域には、Ｄ１１〜Ｄ１８の８ビットのデータが格納されている。ここで、Ｄ１１をＭＳＢとし、Ｄ１８をＬＳＢとすると、ＣＰＵ１００は、ＲＯＭ１０１に対して上位４ビットをデータバス１０３に出力させる選択制御信号を出力しているので、ＲＯＭ１０１の出力ビット選択機能は、読み出した８ビットデータＤ１１〜Ｄ１８の上位４ビットＤ１１〜Ｄ１４を選択してデータバス１０３の上位４ビットに出力する。
【００３８】
一方、数値発生装置１０４は、ＣＰＵ１００が記憶素子に出力した制御信号をスヌープしてロードアクセスであるか否かを判定し、ロードアクセスである場合にはバス幅分の数値を発生する。数値制御装置は、選択制御信号によって指定されたビットのデータをデータバス１０３に出力する（図５のステップＳ２０３）。
【００３９】
図６においては、ＣＰＵ１００は、ＲＯＭ１０１に対して上位４ビットのデータを出力させる出力選択信号を出力している。数値発生装置１０４の出力ビット選択機能は、ＲＯＭ１０１に対する出力選択信号からＲＯＭ１０１が上位４ビットをデータバス１０３に出力することを認識し、発生した数値の下位４ビット（Ｎ５〜Ｎ８）をデータバス１０３の下位４ビットに出力する。すなわち、数値発生装置１０４の出力ビット選択機能は、出力制御信号によって記憶素子の出力ビット選択機能が出力するビットとは異なるビットを選択してデータバス１０３に出力する機能を有する。これにより、データバス１０３の上位４ビットにはＤ１１〜Ｄ１４が出力され、下位４ビットにはＮ５〜Ｎ８が出力される。
【００４０】
ＣＰＵ１００は、データバス１０３のデータの一部（出力制御信号で指定したビットであり、ここでは上位４ビット）を内部の汎用レジスタに格納する（図５のステップＳ２０４）。
【００４１】
図６においては、出力制御信号としてＲＯＭ１０１の上位４ビットを指定している。よって、ＣＰＵ１００は、ＲＯＭ１０１が出力したデータＤ１１〜Ｄ１４、すなわちデータバス１０３の上位４ビットをデータビットとして汎用レジスタである８ビットレジスタＡに格納する。
【００４２】
ＣＰＵ１００がデータバス１０３の上位４ビットを８ビットレジスタＡに格納した後、記憶素子（図６においては、ＲＯＭ１０１）は、先のステップＳ２０２によって出力したビットとは異なるビット（図６においては、下位４ビット）のデータをデータバス１０３に出力する（図５のステップＳ２０５）。
【００４３】
一方、数値発生装置１０４は、先のステップＳ２０３によって出力したビットとは異なるビット（図６においては、上位４ビット）のデータをデータバス１０３に出力する（図５のステップＳ２０６）。
【００４４】
なお、記憶素子および数値発生装置１０４がデータバス１０３に出力するデータビットの切替は、予め定められたタイミングで行ってもよいし、ＣＰＵ１００が、記憶素子への出力制御信号を切り替えて行うようにしてもよい。
【００４５】
図６においては、ＲＯＭ１０１は、アドレスＡｄ０のデータＤ１１〜Ｄ１８の下位４ビットＤ１５〜Ｄ１８をデータバス１０３の下位４ビットに出力し、数値発生装置１０４は発生した数値の上位４ビットＮ１〜Ｎ４をデータバス１０３の上位４ビットに出力する。
【００４６】
ＣＰＵ１００は、データバス１０３のデータの一部（ここでは下位４ビット）を内部の汎用レジスタに格納する（図５のステップＳ２０７）。図６においては、ＣＰＵ１００は、ＲＯＭ１０１が出力したデータＤ１５〜１８、すなわちデータバス１０３の下位４ビットをデータビットとして汎用レジスタである８ビットレジスタＢに格納する。
【００４７】
ＣＰＵ１００は、ステップＳ２０４において汎用レジスタに格納したデータと、ステップＳ２０７において汎用レジスタに格納したデータとを連結してバス幅のデータを生成してデータロード処理を終了する（図５のステップＳ２０８）。
【００４８】
図６においては、ＣＰＵ１００は、８ビットレジスタＡに格納したＲＯＭ１０１のアドレスＡｄ０が示す領域に格納されたデータＤ１１〜Ｄ１８の上位４ビットのデータＤ１１〜Ｄ１４と、８ビットレジスタＢに格納したＲＯＭ１０１のアドレスＡｄ０が示す領域に格納されたデータＤ１１〜Ｄ１８の下位４ビットのデータＤ１５〜Ｄ１８とを連結してバス幅８ビットのデータＤ１１〜Ｄ１８を生成して８ビットレジスタＣに格納している。
【００４９】
ＣＰＵ１００は、生成したデータを用いてプログラムにしたがった処理を行う。なお、ここでは、ロードアクセス対象をＲＯＭ１０１としたが、ロードアクセス対象がＲＡＭ１０２であってもデータロード処理は同様となる。
【００５０】
このように、この実施の形態２においては、記憶装置（記憶素子）であるＲＯＭ１０１またはＲＡＭ１０２は、ＣＰＵ１００の指示に基づいて、ＣＰＵ１００から指定されたアドレスが示す領域に格納されたデータの一部をデータバス１０３に出力し、数値発生装置１０４は、ＣＰＵ１００の指示に基づいて、ＲＯＭ１０１またはＲＡＭ１０２が出力したデータの一部とは異なるビットのデータをデータバス１０３に出力し、ＣＰＵ１００は、ＲＯＭ１０１またはＲＡＭ１０２に複数回アクセスして、ＲＯＭ１０１またはＲＡＭ１０２がデータバス１０３に出力したデータを選択し、選択したデータを連結してデータバス１０３のバス幅のデータを生成し、生成したデータを用いて所定の処理を実行するようにしているため、シングルのＣＰＵを用いて、実際の処理に用いるデータをカモフラージュしてＲＯＭ１０１またはＲＡＭ１０２からデータを読み出すことが可能となり、実際の処理に用いるデータと、ＲＯＭ１０１またはＲＡＭ１０２からデータを読み出す際の消費電流との関連性を減らして、消費電流からデータを推測することを防止することができる。
【００５１】
なお、この実施の形態２においては、１回目のロードアクセス時に記憶素子の上位４ビットをデータビットとしてデータバス１０３の上位４ビットに出力し、数値発生装置１０４が発生した数値の下位４ビットを冗長ビットとしてデータバス１０３の下位４ビットに出力し、２回目のロードアクセス時に記憶素子の下位４ビットをデータビットとしてデータバス１０３の下位４ビットに出力し、数値発生装置１０４が発生した数値の上位４ビットを冗長ビットとしてデータバス１０３の上位４ビットに出力する場合を説明したが、冗長ビットとデータビットのビット位置はこれに限るものではなく、データビットと冗長ビットとのビット位置は不連続であってもかまわない。
【００５２】
たとえば、１回目のロードアクセス時に記憶素子が奇数ビットをデータビットとしてデータバス１０３の奇数ビットに出力し、数値発生装置１０４が発生した数値の偶数ビットを冗長ビットとしてデータバス１０３の偶数ビットに出力してＣＰＵ１００が奇数ビットのデータを格納する。２回目のロードアクセス時に記憶素子が偶数ビットをデータビットとしてデータバス１０３に出力し、数値発生装置１０４が発生した数値の奇数ビットを冗長ビットとしてデータバス１０３に出力してＣＰＵ１００が偶数ビットのデータを格納する。そして、１回目に格納した奇数ビットと２回目に格納した偶数ビットとをＣＰＵ１００が連結して８ビットデータを生成してもよい。
【００５３】
また、この実施の形態２においては、データビットと冗長ビットのビット数を４ビットずつとしたが、データビットと冗長ビットの割合を変えて、２組以上のデータを連結するようにしてもよい。
【００５４】
さらに、この実施の形態２では、データロード処理を複数の手順に分けて説明したが、連結ビット情報などで構成されるパラメータつきのデータロード処理コマンドを用いるようにしてもよい。すなわち、パラメータにアクセスすべき記憶素子を識別するための識別子やアクセスすべきアドレス、１回目および２回目に記憶素子が選択すべきビットの指定など、記憶素子からデータを読み出して連結する際に必要な情報をパラメータとするデータロード処理コマンドを設けてＣＰＵ１００に実行させる。これにより、ＣＰＵ１００が実行するプログラムのコーディングを簡単にすることができる。
【００５５】
実施の形態３．
図７〜図９を用いてこの発明の実施の形態３を説明する。図７は、この発明における情報処理装置の実施の形態３の構成を示す図である。図７に示した情報処理装置は、先の図１に示した実施の形態１の情報処理装置に、データバス１０３に接続される特殊メモリ（以下、特殊ＲＯＭという）１０５が追加されている。先の図１に示した実施の形態１と同じ機能を持つ構成部分には同一符号を付し、重複する説明は省略する。
【００５６】
特殊ＲＯＭ１０５は、データバス１０３のバス幅単位でデータを格納するともに、データ読み出しに特化した不揮発性メモリである。この特殊ＲＯＭ１０５は、２回のアドレス指定によってバス幅の２倍のビット幅のデータを読み出し、読み出したビット幅のデータのうち所定のビットを選択してバス幅のデータを生成してデータバス１０３に出力する。
【００５７】
具体的には、１回目のアドレスを指定アドレスとし、２回目のアドレスを指定アドレス２とすると、特殊ＲＯＭ１０５は、指定アドレスのデータのｎ（０＜ｎ＜バス幅、ｎは整数）ビットのデータと、指定アドレス２のデータの「バス幅−ｎ」ビットのデータとをデータバス１０３に出力する。
【００５８】
なお、図７においては、ＣＰＵ１００、ＲＯＭ１０１、ＲＡＭ１０２、および特殊ＲＯＭ１０５が別々の素子イメージでかかれているが、１チップマイコンのように１つのパッケージにこれらの構成要素が組み込まれていてもよい。
【００５９】
次に図８のフローチャート、および図９を参照して、この実施の形態３の情報処理装置のデータロード処理の動作について説明する。なお、ＲＯＭ１０１およびＲＡＭ１０２へのロードアクセスによるデータ読み出しは、先の図２のフローチャートを参照して説明した実施の形態１のデータロード処理の動作と同じであるので、ここではその説明を省略し、特殊ＲＯＭ１０５へのロードアクセスの動作について説明する。
【００６０】
ＣＰＵ１００は、特殊ＲＯＭ１０５のアドレスを指定する（図８のステップＳ３０１）。ＣＰＵ１００は、予め定められた規則にしたがって指定したアドレス（指定アドレス）から指定アドレス２を求めて指定する（図８のステップＳ３０２）。
【００６１】
具体的には、ＣＰＵ１００は、特殊ＲＯＭ１０５に対する制御信号をアサートにして、アクセスすべき指定アドレス（ここでは、アドレスＡｄ００）を示すアドレス信号をアドレスバスに出力する。特殊ＲＯＭ１０５は、このアドレス信号が示すアドレスＡｄ００を自身の内部のレジスタに保持する。ＣＰＵ１００は、予め定められた規則（たとえば、アドレスＡｄ００にオフセットを加える、アドレスＡｄ００のビットを反転させるなど）にしたがって指定アドレス２となるアドレスＡｄ０１を求めて、アドレスＡｄ０１を示すアドレス信号をアドレスバスに出力する。
【００６２】
特殊ＲＯＭ１０５は、自身のレジスタに保持したアドレスＡｄ００およびアドレスＡｄ０１が示す領域に格納されたデータを読み出してデータバス１０３に出力する（図８のステップＳ３０３）。図９においては、特殊ＲＯＭ１０５のアドレスＡｄ００が示す領域には、データバス１０３のバス幅である８ビットのデータＤ１１〜Ｄ１８が格納され、アドレスＡｄ０１が示す領域には、８ビットのデータＤ２１〜Ｄ２８が格納されている。
【００６３】
ここで、特殊ＲＯＭ１０５は、アドレスＡｄ００（指定アドレス）が示す領域に格納されたデータの上位ｎビットと、アドレスＡｄ０１（指定アドレス２）が示す領域に格納されたデータの下位「８−ｎ」ビットをデータバス１０３に出力する。図９においては、「ｎ＝４」の場合であり、データＤ１１〜Ｄ１８のＤ１１をＭＳＢとし、Ｄ１８をＬＳＢとし、データＤ２１〜Ｄ２８のＤ２１をＭＳＢとし、Ｄ２８をＬＳＢとすると、特殊ＲＯＭ１０５は、アドレスＡｄ００が示す領域に格納された上位４ビットのデータＤ１１〜Ｄ１４をデータバス１０３の上位４ビットに出力し、アドレスＡｄ０１が示す領域に格納された下位４ビットのデータＤ２５〜Ｄ２８をデータバス１０３の下位４ビットに出力する。
【００６４】
ＣＰＵ１００は、データバス１０３のデータの一部を内部の汎用レジスタに格納する（図８のステップＳ３０４）。また、ＣＰＵ１００は、特殊ＲＯＭ１０５のアクセスタイミングに基づいて制御信号をネゲートにする。
【００６５】
図９においては、ＣＰＵ１００は、データバス１０３の上位４ビット（Ｄ１１〜Ｄ１４）を汎用レジスタである８ビットレジスタＡに格納する。すなわち、１回目のロードアクセス時においては、特殊ＲＯＭ１０５のアドレスＡｄ００が示す領域に格納されたデータＤ１１〜Ｄ１８の上位４ビットのデータＤ１１〜Ｄ１４がデータビットであり、アドレスＡｄ００が示す領域に格納されたデータＤ１１〜Ｄ１８の下位４ビットのデータＤ１５〜Ｄ１８およびアドレスＡｄ０１が示す領域に格納されたデータＤ２１〜Ｄ２８が冗長データとなっている。
【００６６】
ＣＰＵ１００は、特殊ＲＯＭ１０５のアドレスを変更指定する（図８のステップＳ３０５）。ＣＰＵ１００は、予め定められた規則にしたがって指定したアドレス（指定アドレス）から指定アドレス２を求めて指定する（図８のステップＳ３０６）。
【００６７】
具体的には、ステップＳ３０２において指定した指定アドレスが示す領域に格納されたデータと組となるデータを格納するアドレスが指定アドレス２となるアドレス信号をアドレスバスに出力し、特殊ＲＯＭ１０５に対する制御信号をアサートにする。図９においては、ＣＰＵ１００は、アドレスＡｄ１０を示すアドレス信号をアドレスバスに出力する。特殊ＲＯＭ１０５は、このアドレス信号が示すアドレスＡｄ１０を自身の内部レジスタに保持する。ＣＰＵ１００は、予め定められた規則にしたがって指定アドレス２となるアドレスＡｄ１１を求めて、アドレスＡｄ１１を示すアドレス信号をアドレスバスに出力する。
【００６８】
特殊ＲＯＭ１０５は、自身のレジスタに保持したアドレスＡｄ１０およびアドレスＡｄ１１が示す領域に格納されたデータを読み出してデータバス１０３に出力する（図８のステップＳ３０７）。図９においては、特殊ＲＯＭ１０５のアドレスＡｄ１０が示す領域には、データバス１０３のバス幅である８ビットのデータＤ３１〜Ｄ３８が格納され、アドレスＡｄ１１が示す領域には、８ビットのデータＤ４１〜Ｄ４８が格納されている。
【００６９】
ここで、特殊ＲＯＭ１０５は、アドレスＡｄ００（指定アドレス）が示す領域に格納されたデータの上位ｎビットと、アドレスＡｄ０１（指定アドレス２）が示す領域に格納されたデータの下位「８−ｎ」ビットをデータバス１０３に出力する。図９においては、「ｎ＝４」の場合であり、データＤ３１〜Ｄ３８のＤ３１をＭＳＢとし、Ｄ３８をＬＳＢとし、データＤ４１〜Ｄ４８のＤ４１をＭＳＢとし、Ｄ４８をＬＳＢとすると、特殊ＲＯＭ１０５は、アドレスＡｄ１０が示す領域に格納された上位４ビットのデータＤ３１〜Ｄ３４をデータバス１０３の上位４ビットに出力し、アドレスＡｄ１１が示す領域に格納された下位４ビットのデータＤ４５〜Ｄ４８をデータバス１０３の下位４ビットに出力する。
【００７０】
ＣＰＵ１００は、データバス１０３のデータの一部を内部の汎用レジスタに格納する（図９のステップＳ３０８）。また、ＣＰＵ１００は、特殊ＲＯＭ１０５のアクセスタイミングに基づいて制御信号をネゲートにする。
【００７１】
図９においては、ＣＰＵ１００は、データバス１０３の下位４ビット（Ｄ４５〜Ｄ４８）を汎用レジスタである８ビットレジスタＢに格納する。すなわち、２回目のロードアクセス時においては、特殊ＲＯＭ１０５のアドレスＡｄ１１が示す領域に格納されたデータＤ４１〜Ｄ４８の下位４ビットのデータＤ４５〜Ｄ４８がデータビットであり、アドレスＡｄ１１が示す領域に格納されたデータＤ４１〜Ｄ４８の上位４ビットのデータＤ４１〜Ｄ４４およびアドレスＡｄ１０が示す領域に格納されたデータＤ３１〜Ｄ３８が冗長データとなっている。
【００７２】
ＣＰＵ１００は、ステップＳ３０４において汎用レジスタに格納したデータと、ステップＳ３０８において汎用レジスタに格納したデータとを連結してバス幅のデータを生成してデータロード処理を終了する（図５のステップＳ３０９）。
【００７３】
図９においては、ＣＰＵ１００は、８ビットレジスタＡに格納した特殊ＲＯＭ１０５のアドレスＡｄ００が示す領域に格納されたデータＤ１１〜Ｄ１８の上位４ビットのデータＤ１１〜Ｄ１４と、８ビットレジスタＢに格納した特殊ＲＯＭ１０５のアドレスＡｄ１１が示す領域に格納されたデータＤ４１〜Ｄ４８の下位４ビットのデータＤ４５〜Ｄ４８とを連結してバス幅８ビットのデータＤ１１〜Ｄ１４，Ｄ４５〜Ｄ４８を生成して８ビットレジスタＣに格納している。
【００７４】
ＣＰＵ１００は、生成したデータを用いてプログラムにしたがった処理を行う。
【００７５】
このように、この実施の形態３においては、記憶装置である特殊ＲＯＭ１０５は、第１および第２のアドレスが示す領域に格納される各データを読み出し、読み出したデータの一部を選択して前記データバスのバス幅のデータとしてデータバスに出力し、ＣＰＵ１００は、特殊ＲＯＭ１０５に第１および第２のアドレスを組として異なるアドレスを複数回指定してデータバスにデータを出力させ、第１および第２のアドレスの組に対する各データの一部を選択し、選択した各データの一部を連結してバス幅のデータを生成し、生成したデータを用いて所定の処理を行うようにしているため、シングルのＣＰＵを用いて、実際の処理に用いるデータをカモフラージュしてＲＯＭ１０１またはＲＡＭ１０２からデータを読み出すことが可能となり、実際の処理に用いるデータと、ＲＯＭ１０１またはＲＡＭ１０２からデータを読み出す際の消費電流との関連性を減らして、消費電流からデータを推測することを防止することができる。
【００７６】
なお、この実施の形態３においては、１回目のロードアクセスでは、特殊ＲＯＭ１０５の指定アドレスが示す領域に格納される８ビットのデータのうち上位４ビットをデータビットとし、指定アドレスが示す領域に格納される８ビットのデータのうち下位４ビットと指定アドレス２が示す領域に格納される８ビットのデータを冗長ビットとし、２回目のロードアクセスでは、特殊ＲＯＭ１０５の指定アドレス２が示す領域に格納される８ビットのデータのうち下位４ビットをデータビットとし、指定アドレス２が示す領域に格納される８ビットのうち上位４ビットと、指定アドレス１が示す領域に格納される８ビットのデータとを冗長ビットとして説明したが、データビットと冗長ビットとのビット位置はこれに限るものではなく、連続であってもよいし、不連続であってもかまわない。
【００７７】
また、この実施の形態３においては、ＣＰＵ１００が、特殊ＲＯＭ１０５が１回目にデータバス１０３に出力したデータの上位４ビットと、２回目にデータバス１０３に出力したデータの下位４ビットとを連結してデータを生成するようにした。すなわち、ＣＰＵ１００が、特殊ＲＯＭ１０５が出力した連続したビットを選択して連結するようにしたが、不連続なビット、たとえば、１回目に出力したデータの奇数ビットと２回目に出力したデータの偶数ビットとを選択して連結するようにしてもよい。
【００７８】
さらに、この実施の形態３においては、特殊ＲＯＭ１０５から２回のロードによって読み出した２組のデータを連結する場合を例に挙げて説明したが、特殊ＲＯＭ１０５に格納するデータビットと冗長ビットの割合を変えて、２組以上のデータを連結するようにしてもよい。
【００７９】
さらにまた、この実施の形態３では、データロード処理を複数の手順に分けて説明したが、連結ビット情報などで構成されるパラメータつきのデータロード処理コマンドを用いるようにしてもよい。すなわち、パラメータに特殊ＲＯＭ１０５を識別するための識別子や１回目および２回目のロードアクセスのアドレス（指定アドレスと指定アドレス２との組）など、特殊ＲＯＭ１０５からデータを読み出して連結する際に必要な情報をパラメータとするデータロード処理コマンドを設けてＣＰＵ１００に実行させる。これにより、ＣＰＵ１００が実行するプログラムのコーディングを簡単にすることができる。
【産業上の利用可能性】
【００８０】
以上のように、本発明にかかる情報処理装置は、記憶装置から読み出すデータと、このデータを読み出す際の消費電流との関連性を減らして、消費電流からデータを推測することを防止する必要のあるシステムに有用であり、特に、ＩＣチップなどに適している。
【図面の簡単な説明】
【００８１】
【図１】この発明における情報処理装置の実施の形態１の構成を示すブロック図である。
【図２】この発明における情報処理装置の実施の形態１の動作を説明するためのフローチャートである。
【図３】この発明における情報処理装置の実施の形態１の動作を説明するための図である。
【図４】この発明における情報処理装置の実施の形態２の構成を示すブロック図である。
【図５】この発明における情報処理装置の実施の形態２の動作を説明するためのフローチャートである。
【図６】この発明における情報処理装置の実施の形態２の動作を説明するための図である。
【図７】この発明における情報処理装置の実施の形態３の構成を示すブロック図である。
【図８】この発明における情報処理装置の実施の形態３の動作を説明するためのフローチャートである。
【図９】この発明における情報処理装置の実施の形態３の動作を説明するための図である。
【符号の説明】
【００８２】
１００  ＣＰＵ
１０１  ＲＯＭ
１０２  ＲＡＭ
１０３  データバス
１０４  数値発生装置
１０５  特殊ＲＯＭ
【図１】
2009015580.tif 000003
【図２】
2009015580.tif 000004
【図３】
2009015580.tif 000005
【図４】
2009015580.tif 000006
【図５】
2009015580.tif 000007
【図６】
2009015580.tif 000008
【図７】
2009015580.tif 000009
【図８】
2009015580.tif 000010
【図９】
2009015580.tif 000011