【手続補正書】
【提出日】平成17年9月5日(2005.9.5)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】発明の名称
【補正方法】変更
【補正の内容】
【発明の名称】情報処理装置、及び、プログラム実装方法
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
情報処理装置であって、
プログラムを格納するプログラム格納部と、
データを保存するデータ格納部を持つ記憶装置と、
前記プログラムに従い、所定の処理を実行し、データ処理を行う中央演算装置とを有し、
前記プログラムは前記中央演算装置に実行の指示を与える処理命令から構成される一つ以上のデータ処理手段からなるものであって、
前記データ処理手段の一つが、その入力データを処理し、処理済データを出力する入力データ処理手段を含むものであって、
前記情報処理装置は、前記プログラム又は前記データのアドレスを示すプログラムカウンタを有するものであって、
前記アドレスの値がＰＣＳである位置に配置された転送命令又は条件分岐又は無条件分岐命令が実行された直後にアクセスされる前記データ又はサブルーチンを、｜Ｈａｍ（ＰＣＳ， ＰＣＤ［Ｉ］）−Ｈａｍ（ＰＣＳ， ＰＣＤ［Ｊ］）｜≦４（１≦Ｉ＜Ｊ≦ｍ）となるアドレスＰＣＤ［１］， ＰＣＤ［２］，．．．， ＰＣＤ［ｍ］で開始される位置に配置することを特徴とする情報処置装置（但し、ここで、Ｈａｍ（Ａ，Ｂ）は、アドレスＡとＢのハミング距離と定義する。）。
【請求項２】
情報処理装置であって、
プログラムを格納するプログラム格納部と、
データを保存するデータ格納部を持つ記憶装置と、
前記プログラムに従い、所定の処理を実行し、データ処理を行う中央演算装置とを有し、
前記プログラムは前記中央演算装置に実行の指示を与える処理命令から構成される一つ以上のデータ処理手段からなるものであって、
データ処理手段の一つが、その入力データを処理し、処理済データを出力する入力データ処理手段を含むものであって、
前記情報処理装置は、前記プログラム又は前記データのアドレスを示すプログラムカウンタを有するものであって、
前記アドレスの値がＰＣＳ［１］， ＰＣＳ［２］， ．．． ， ＰＣＳ［ｍ］（ｍは２以上の整数）である位置に配置された転送命令又は条件分岐又は無条件分岐命令が実行された直後にアクセスされる前記データ又はサブルーチンを、｜Ｈａｍ（ＰＣＳ［Ｉ］， ＰＣＤ［Ｉ］）−Ｈａｍ（ＰＣＳ［Ｊ］， ＰＣＤ［Ｊ］）｜≦４（１≦Ｉ＜Ｊ≦ｍ）となるアドレスＰＣＤ［１］， ＰＣＤ［２］，．．．， ＰＣＤ［ｍ］で開始される位置に配置することを特徴とする情報処理装置（但し、ここで、Ｈａｍ（Ａ，Ｂ）は、アドレスＡとＢのハミング距離と定義する。）。
【請求項３】
情報処置装置であって、
プログラムを格納するプログラム格納部と、
データを保存するデータ格納部を持つ記憶装置と、
前記プログラムに従い、所定の処理を実行し、データ処理を行う中央演算装置とを有し、前記プログラムは前記中央演算装置に実行の指示を与える処理命令から構成される一つ以上のデータ処理手段からなるものであって、
前記データ処理手段の一つが、その入力データを処理し、処理済データを出力する入力データ処理手段を含むものであって、
前記情報処置装置は、前記プログラム又は前記データのアドレスを示すプログラムカウンタを有するものであって、
前記アドレスの値がＰＣＳである位置に配置された転送命令又は条件分岐又は無条件分岐命令が実行された直後にアクセスされるデータ群のアドレスの集合が、
（第１群）ＰＣＤ［１，１］， ＰＣＤ［１，２］， ．．． ， ＰＣＤ［１，ｍ］
（第２群）ＰＣＤ［２，１］， ＰＣＤ［２，２］， ．．． ， ＰＣＤ［２，ｍ］
………
（第ｎ群）ＰＣＤ［ｎ，１］， ＰＣＤ［ｎ，２］， ．．． ， ＰＣＤ［ｎ，ｍ］
であるとき、
ＰＣＤとのハミング距離の集合Ｓ［ｊ］ ＝ ｛Ｈａｍ（ＰＣＳ， ＰＣＤ［ｊ，ｋ］）； ｋ ＝ １，２，３，．．．， ｍ｝（ｊ＝１，２，３，．．．，ｎ）が、集合としてＳ［１］＝Ｓ［２］＝．．．＝Ｓ［ｎ］を満たすアドレスＰＣＤ［１，１］， ＰＣＤ［１，２］， ．．． ， ＰＣＤ［１，ｍ］，ＰＣＤ［２，１］， ＰＣＤ［２，２］， ．．． ， ＰＣＤ［２，ｍ］，………，ＰＣＤ［ｎ，１］，ＰＣＤ［ｎ，２］， ．．． ， ＰＣＤ［ｎ，ｍ］で開始される位置に配置することを特徴とする情報処理装置（但し、ここで、Ｈａｍ（Ａ，Ｂ）は、アドレスＡとＢのハミング距離と定義する。）。
【請求項４】
請求項３記載の情報処置装置おいて、集合Ｓ［ｊ］（ｊ＝１，２，３， ．．． ，ｎ）内の各アドレスにアクセスする順序を予測できない情報源によって、各ｊ毎ごとにアクセスを行う度に毎回変化させることを特徴とする情報処置装置。
【請求項５】
請求項１記載の情報処置装置において、Ｈａｍ（ＰＣＳ， ＰＣＤ［Ｉ］）＝Ｈａｍ（ＰＣＳ， ＰＣＤ［Ｊ］）（１≦Ｉ＜Ｊ≦ｍ）とすることを特徴とする情報処理装置。
【請求項６】
請求項２記載の情報処置装置において、Ｈａｍ（ＰＣＳ［Ｉ］， ＰＣＤ［Ｉ］）＝Ｈａｍ（ＰＣＳ［Ｊ］， ＰＣＤ［Ｊ］）（１≦Ｉ＜Ｊ≦ｍ） とすることを特徴とする情報処置装置。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００６３
【補正方法】変更
【補正の内容】
【００６３】
アドレス０１００の転送命令にて、データＹ０， Ｙ１， Ｙ２， Ｙ３を読む際のプログラムカウンタは、０１００からＲ０に変化する。この際、Ｒ０に含まれている値と０１００とのハミング距離は、常に同じである。ずなわち、
ｄ＝０の場合、
０１００ → Ｃ２００（ハミング距離４）
０１００ → Ｃ２０２（ハミング距離５）
０１００ → Ｃ２０４（ハミング距離５）
…
０１００ → Ｃ０８０（ハミング距離４）
のように変化する。
ｄ＝１の場合、
０１００ → Ｃ４００（ハミング距離４）
０１００ → Ｃ４０２（ハミング距離５）
０１００ → Ｃ４０４（ハミング距離５）
…
０１００ → Ｃ４８０（ハミング距離４）
であり、ハミング距離の変化の仕方は、ｄ＝０の場合と全く同一である。ｄ＝２，３の場合も同様に変化することは明らかであろう。したがって、アドレスの変化に応じて発生する電力を観測してｄの値を知ることは極めて困難となる。これは、本発明請求項５の実施例の一つである。
ここでは、転送するデータを４つとしたが、これは説明の便宜の為であり、データ数を一般の数とすることによって、本発明の思想が損なわれることはない。又、ここで示したデータ配置は一つの例にすぎず、他のマイクロコンピュータに実装する際には、個々のマイクロコンピュータのアドレス空間に応じて、複数のデータを同じハミング距離となる位置に配置する必要があることはいうまでもない。又、ここでは、複数のデータを読むプログラムを示したが、転送の方向を逆にすることによって、書き込みの場合にも、本発明の思想を適用することができる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００６４
【補正方法】変更
【補正の内容】
【００６４】
上記の実施例は、複数のデータに対応するプログラム側の転送命令が１つしかない場合であるが、これが複数ある場合もある。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
以下に示す本発明の実施例は、説明の便宜のために簡略化されており、実際に本発明を適用する場合とは異なるものであることに注意しておく。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００６８
【補正方法】変更
【補正の内容】
【００６８】
以下に実施例のプログラムコードを示す。動作は、［実施例１］から容易に類推できるものであるので、説明は省略する。
[実施例２]
/*** DATA TABLE ***/
Table:        .DATA.W Y0_pointer ; (=8100)
.DATA.W Y1_pointer ; (=8200)
/*** MAIN ROUTINE ***/
MAIN:        
7FF6          MOV.W @d, R2
7FF8          SHLL R2
7FFA          MOV.W @(table,R2), R0
7FFC          MOV.W #CDB_TOP, R1
7FFE          MOV.B #DATA_LENGTH, R3H
8000          JSR @R0
/*** MOVE Y0 TO CDB ***/
Y0_pointer:
8100          MOV.W #Y0_TOP, R0
8102          MOV.W #CDB_TOP, R1
8104          MOV.B #DATA_LENGTH, R3H
Loop0:
8106          MOV.W @R1, R4
8108          MOV.W R4, @R0
810A          ADDS#2, R0
810C          ADDS#2, R1
810E          DEC.B              R3H
8110          BNE  Loop0
8112          RTS
/*** MOVE Y1 TO CDB ***/
Y1_pointer:
8200          MOV.W #Y1_TOP, R0
8202          MOV.W #CDB_TOP, R1
8204          MOV.B #DATA_LENGTH, R3H
Loop1:        
8206          MOV.W @R1, R4
8208          MOV.W R4, @R0
820A          ADDS#2, R0
820C          ADDS#2, R1
820E          DEC.B              R3H
8210          BNE  Loop1
8212          RTS
ここまでに述べた実施例１，２は、いずれも、プログラムカウンタの変化が全て等しいような例である。しかし、一般には、完全にハミング距離が揃うように配置することが難しい場合がある。このような場合には、プログラムカウンタの変化に伴う消費電力が、測定に伴うノイズと比較して小さい程度にすることにより、ほぼ同様の効果を見込むことができる。申請者は、この点を確認する実験を行い、多くの測定環境において、４ビット程度の違いを区別することには、大きな困難を伴うことを見出した。さらに、５ビット以上の差がある場合は、ノイズを考慮しても、アドレス位置が明確に区別できることを確認した。そこで、この実験結果、すなわち４ビットの差以下にハミング距離を揃えることを本発明の基本的思想とした。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００６９
【補正方法】変更
【補正の内容】
【００６９】
次に図８を用いて本発明の実施例を説明する。