JP2003296104A - プロセッサおよびアセンブラ/コンパイラ - Google Patents
プロセッサおよびアセンブラ/コンパイラInfo
- Publication number
- JP2003296104A JP2003296104A JP2002103340A JP2002103340A JP2003296104A JP 2003296104 A JP2003296104 A JP 2003296104A JP 2002103340 A JP2002103340 A JP 2002103340A JP 2002103340 A JP2002103340 A JP 2002103340A JP 2003296104 A JP2003296104 A JP 2003296104A
- Authority
- JP
- Japan
- Prior art keywords
- address
- program data
- assembler
- processor
- compiler
- 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.)
- Pending
Links
Landscapes
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
Abstract
(57)【要約】
【課題】プロセッサの性能を劣化させることなく、メモ
リに格納されたプログラムデータの解析、改変造を防
ぎ、設計者の意図したプログラムのみ処理を行う。 【解決手段】プログラムデータの格納されたメモリに対
し出力するアドレスを、不連続かつ一定の規則に従った
順序で発生し、命令およびオペランドのフェッチを行う
プロセッサと、ソースコードをオブジェクトコードに翻
訳した後、上記順序に対応する順序に並べ替えることで
最終的なプログラムデータを生成するアセンブラ/コン
パイラ。
リに格納されたプログラムデータの解析、改変造を防
ぎ、設計者の意図したプログラムのみ処理を行う。 【解決手段】プログラムデータの格納されたメモリに対
し出力するアドレスを、不連続かつ一定の規則に従った
順序で発生し、命令およびオペランドのフェッチを行う
プロセッサと、ソースコードをオブジェクトコードに翻
訳した後、上記順序に対応する順序に並べ替えることで
最終的なプログラムデータを生成するアセンブラ/コン
パイラ。
Description
【0001】
【発明の属する技術分野】本発明は、メモリに格納され
たプログラムデータの解析、改変造を防ぎ、設計者の意
図したプログラムのみ処理を行うプロセッサと、上記プ
ロセッサに所望のプログラムを実行させるためのアセン
ブラ/コンパイラに関する。
たプログラムデータの解析、改変造を防ぎ、設計者の意
図したプログラムのみ処理を行うプロセッサと、上記プ
ロセッサに所望のプログラムを実行させるためのアセン
ブラ/コンパイラに関する。
【0002】
【従来の技術】プロセッサは、プログラムデータを格納
するメモリにアドレスを出力し、命令およびオペランド
のフェッチを行う。従来、上記アドレスは、プロセッサ
内部に用意したメモリへのアクセスごとに1ずつ加算さ
れる、プログラムカウンタの値を使用している。この方
法では、プログラムデータが実行順にメモリ内に整列す
るため、容易にプログラムデータの解析、改変造が行わ
れるおそれがあった。
するメモリにアドレスを出力し、命令およびオペランド
のフェッチを行う。従来、上記アドレスは、プロセッサ
内部に用意したメモリへのアクセスごとに1ずつ加算さ
れる、プログラムカウンタの値を使用している。この方
法では、プログラムデータが実行順にメモリ内に整列す
るため、容易にプログラムデータの解析、改変造が行わ
れるおそれがあった。
【0003】上記の問題点に対し、特開平10−209
56においては、メモリ内のプログラムデータを暗号化
する一方、プロセッサ内に上記暗号化に対応する復号化
回路を用意しておき、プロセッサは命令およびオペラン
ドのフェッチごとに、フェッチしたデータを復号化しな
がらプログラムを実行するという技術が提案されてい
る。
56においては、メモリ内のプログラムデータを暗号化
する一方、プロセッサ内に上記暗号化に対応する復号化
回路を用意しておき、プロセッサは命令およびオペラン
ドのフェッチごとに、フェッチしたデータを復号化しな
がらプログラムを実行するという技術が提案されてい
る。
【0004】この従来技術によると、メモリ内のプログ
ラムデータが暗号化されているため、プログラムデータ
の解析、改変造を防ぐことができる。しかし、上記従来
技術では、フェッチごとに復号化のための演算処理時間
が必要となるため、プロセッサの処理速度・性能が劣化
する。また、プロセッサ内に専用の復号化回路を用意す
る必要があり、回路規模および消費電力の増大を招いて
いた。
ラムデータが暗号化されているため、プログラムデータ
の解析、改変造を防ぐことができる。しかし、上記従来
技術では、フェッチごとに復号化のための演算処理時間
が必要となるため、プロセッサの処理速度・性能が劣化
する。また、プロセッサ内に専用の復号化回路を用意す
る必要があり、回路規模および消費電力の増大を招いて
いた。
【0005】
【発明が解決しようとする課題】本発明の目的は、上述
の問題点に対してプロセッサの性能を劣化させることな
く、メモリに格納されたプログラムデータの解析、改変
造を防ぎ、設計者の意図したプログラムのみ処理を行う
プロセッサと、上記プロセッサに所望のプログラムを実
行させるためのアセンブラ/コンパイラを提供すること
にある。
の問題点に対してプロセッサの性能を劣化させることな
く、メモリに格納されたプログラムデータの解析、改変
造を防ぎ、設計者の意図したプログラムのみ処理を行う
プロセッサと、上記プロセッサに所望のプログラムを実
行させるためのアセンブラ/コンパイラを提供すること
にある。
【0006】
【課題を解決するための手段】上記課題を解決するため
の本発明のプロセッサは、プログラムデータが格納され
たメモリに対して出力するアドレスの生成手段を備え、
上記アドレス生成手段はアドレスを不連続かつ一定の規
則に従った順序で発生するアドレス生成手段であること
を特徴とする。
の本発明のプロセッサは、プログラムデータが格納され
たメモリに対して出力するアドレスの生成手段を備え、
上記アドレス生成手段はアドレスを不連続かつ一定の規
則に従った順序で発生するアドレス生成手段であること
を特徴とする。
【0007】また、上記プロセッサにおいて、上記アド
レス生成手段は現在のアドレス値に対しガロア体上の乗
算を行うことで次のアドレス値を生成するアドレス生成
手段であることを特徴とする。
レス生成手段は現在のアドレス値に対しガロア体上の乗
算を行うことで次のアドレス値を生成するアドレス生成
手段であることを特徴とする。
【0008】また、本発明において、メモリへのプログ
ラムデータの格納方法は、上記アドレス生成手段により
生成されないアドレスにダミーデータを埋め込むことを
特徴とする。
ラムデータの格納方法は、上記アドレス生成手段により
生成されないアドレスにダミーデータを埋め込むことを
特徴とする。
【0009】また、本発明において、アセンブラ/コン
パイラは、ソースコードをオブジェクトコードに翻訳し
た後、不連続かつ一定の規則に従った順序に並べ替える
ことで最終的なプログラムデータを生成するアセンブル
/コンパイル手段を備えたことを特徴とする。
パイラは、ソースコードをオブジェクトコードに翻訳し
た後、不連続かつ一定の規則に従った順序に並べ替える
ことで最終的なプログラムデータを生成するアセンブル
/コンパイル手段を備えたことを特徴とする。
【0010】また、上記アセンブラ/コンパイラにおい
て、上記アセンブル/コンパイル手段は、ソースコード
をオブジェクトコードに翻訳した後、プログラムデータ
の格納されるメモリのプログラムデータの格納される先
頭アドレス値に対しガロア体上の乗算を繰り返すことで
得られる数列の順序に並べ替えることで最終的なプログ
ラムデータを生成することを特徴とする。
て、上記アセンブル/コンパイル手段は、ソースコード
をオブジェクトコードに翻訳した後、プログラムデータ
の格納されるメモリのプログラムデータの格納される先
頭アドレス値に対しガロア体上の乗算を繰り返すことで
得られる数列の順序に並べ替えることで最終的なプログ
ラムデータを生成することを特徴とする。
【0011】また、上記アセンブラ/コンパイラにおい
て、上記アセンブル/コンパイル手段は、不連続かつ一
定の規則に従った順序に並べ替えた後、プログラムデー
タの格納されるメモリのプログラムデータが格納されな
いアドレスにダミーデータを埋め込んで最終的なプログ
ラムデータを生成することを特徴とする。
て、上記アセンブル/コンパイル手段は、不連続かつ一
定の規則に従った順序に並べ替えた後、プログラムデー
タの格納されるメモリのプログラムデータが格納されな
いアドレスにダミーデータを埋め込んで最終的なプログ
ラムデータを生成することを特徴とする。
【0012】上記本発明の構成によれば、プロセッサ
は、プログラムデータの格納されたメモリに対し出力す
るアドレスを不連続な一定の規則に従った順序で発生
し、命令およびオペランドのフェッチを行い、アセンブ
ラ/コンパイラはソースコードをオブジェクトコードに
翻訳した後、上記順序に対応する順序に並べ替えること
で最終的なプログラムデータを生成する。これらのプロ
セッサおよびアセンブラ/コンパイラを使用すること
で、プログラムデータを不連続にメモリ内に格納するこ
とができる。
は、プログラムデータの格納されたメモリに対し出力す
るアドレスを不連続な一定の規則に従った順序で発生
し、命令およびオペランドのフェッチを行い、アセンブ
ラ/コンパイラはソースコードをオブジェクトコードに
翻訳した後、上記順序に対応する順序に並べ替えること
で最終的なプログラムデータを生成する。これらのプロ
セッサおよびアセンブラ/コンパイラを使用すること
で、プログラムデータを不連続にメモリ内に格納するこ
とができる。
【0013】アドレスを不連続な一定の規則に従った順
序で発生する手段の一例を以下に示す。アドレスバス幅
をmbitとすると、プログラムデータの格納される先
頭アドレス値に対し、位数2mのガロア体(以下、GF
(2m)と表記する)上で原始多項式の根αの乗算を繰
り返すことで、0hを除く全てのアドレスを不連続に発
生することができる。すなわち、現在のアドレス値に対
し上記αを乗算することで、次のアドレス値を生成する
ことができる。
序で発生する手段の一例を以下に示す。アドレスバス幅
をmbitとすると、プログラムデータの格納される先
頭アドレス値に対し、位数2mのガロア体(以下、GF
(2m)と表記する)上で原始多項式の根αの乗算を繰
り返すことで、0hを除く全てのアドレスを不連続に発
生することができる。すなわち、現在のアドレス値に対
し上記αを乗算することで、次のアドレス値を生成する
ことができる。
【0014】ガロア体上で上記αを乗算する回路は、一
般に使用されている線形シフトレジスタ(Linear
Shift Register;以下、LSRと記
す)で実現可能であり、その処理速度および回路規模
は、従来のプログラムカウンタと同等である。さらに、
GF(2m)の原始多項式およびプログラムデータの格
納される先頭アドレス値を選定することで、異なる順序
でアドレスを発生することができるため、仮にプログラ
ムデータが不連続にメモリ内に格納されていることがわ
かったとしても、プログラムデータの解析、改変造は困
難である。ただし、プログラムデータの格納される先頭
アドレス値に0hを選定することはできない。
般に使用されている線形シフトレジスタ(Linear
Shift Register;以下、LSRと記
す)で実現可能であり、その処理速度および回路規模
は、従来のプログラムカウンタと同等である。さらに、
GF(2m)の原始多項式およびプログラムデータの格
納される先頭アドレス値を選定することで、異なる順序
でアドレスを発生することができるため、仮にプログラ
ムデータが不連続にメモリ内に格納されていることがわ
かったとしても、プログラムデータの解析、改変造は困
難である。ただし、プログラムデータの格納される先頭
アドレス値に0hを選定することはできない。
【0015】上記の例では、プロセッサにおいてプログ
ラムカウンタの代わりにガロア体上の乗算器を用い、一
方、アセンブラ/コンパイラにおいてガロア体上の乗算
によって得た順序にオブジェクトコードを並べ替えるこ
とで、プログラムデータを不連続にメモリ内に格納する
ことができる。
ラムカウンタの代わりにガロア体上の乗算器を用い、一
方、アセンブラ/コンパイラにおいてガロア体上の乗算
によって得た順序にオブジェクトコードを並べ替えるこ
とで、プログラムデータを不連続にメモリ内に格納する
ことができる。
【0016】上記の例の他に、アドレスを不連続な一定
の規則に従った順序で発生する手段としては、乱数発生
器として一般に使用されているM系列発生器などを用い
ることもできる。
の規則に従った順序で発生する手段としては、乱数発生
器として一般に使用されているM系列発生器などを用い
ることもできる。
【0017】このように本発明では、プログラムデータ
を不連続にメモリ内に格納するため、プロセッサの性能
を劣化させることなく、プログラムデータの解析、改変
造を困難にし、設計者の意図したプログラムのみ処理を
行うプロセッサおよびアセンブラ/コンパイラを提供す
ることができる。
を不連続にメモリ内に格納するため、プロセッサの性能
を劣化させることなく、プログラムデータの解析、改変
造を困難にし、設計者の意図したプログラムのみ処理を
行うプロセッサおよびアセンブラ/コンパイラを提供す
ることができる。
【0018】
【発明の実施の形態】図1に本発明の一実施例のプロセ
ッサ構成例を示す。プロセッサ1は、不連続アドレス生
成部11、フェッチ部12、命令解読部13、演算部1
4から構成される。また、データバス4およびアドレス
バス5にて、外部にあってプログラムデータ7を格納す
るメモリ3と接続される。上記プログラムデータ7は、
メモリ格納前にアセンブラ/コンパイラ2によりソース
コード6からアセンブル/コンパイルされたオブジェク
トコードである。
ッサ構成例を示す。プロセッサ1は、不連続アドレス生
成部11、フェッチ部12、命令解読部13、演算部1
4から構成される。また、データバス4およびアドレス
バス5にて、外部にあってプログラムデータ7を格納す
るメモリ3と接続される。上記プログラムデータ7は、
メモリ格納前にアセンブラ/コンパイラ2によりソース
コード6からアセンブル/コンパイルされたオブジェク
トコードである。
【0019】不連続アドレス生成部11は、命令解読部
13もしくは演算部14の指示により、次にフェッチす
べきアドレスを生成し、アドレスバス5上に出力する。
フェッチ部12は、メモリ3からアドレスバス5上のア
ドレスにより読み出されたデータバス4上の命令コード
もしくはオペランドをフェッチし、命令コードは命令解
読部13に、また、オペランドは演算部14に受け渡
す。命令解読部13は、フェッチした命令コードを解読
し、不連続アドレス生成部11および演算部14に対
し、命令コードに応じた所定の指示を与える。演算部1
4は、命令解読部13の指示により、内部のレジスタ、
オペランド、アドレスを用いて所定の演算を行い、ま
た、不連続アドレス生成部11に対して、次のアドレス
の生成を指示する。
13もしくは演算部14の指示により、次にフェッチす
べきアドレスを生成し、アドレスバス5上に出力する。
フェッチ部12は、メモリ3からアドレスバス5上のア
ドレスにより読み出されたデータバス4上の命令コード
もしくはオペランドをフェッチし、命令コードは命令解
読部13に、また、オペランドは演算部14に受け渡
す。命令解読部13は、フェッチした命令コードを解読
し、不連続アドレス生成部11および演算部14に対
し、命令コードに応じた所定の指示を与える。演算部1
4は、命令解読部13の指示により、内部のレジスタ、
オペランド、アドレスを用いて所定の演算を行い、ま
た、不連続アドレス生成部11に対して、次のアドレス
の生成を指示する。
【0020】このプロセッサ1は、一般的なプロセッサ
のプログラムカウンタを、不連続アドレス生成部11に
変更することで実現可能である。図2〜8に不連続アド
レス生成部11におけるアドレス生成方法の一例を示
す。
のプログラムカウンタを、不連続アドレス生成部11に
変更することで実現可能である。図2〜8に不連続アド
レス生成部11におけるアドレス生成方法の一例を示
す。
【0021】図2にアドレス生成フローを示す。アドレ
スバス幅をmbitとすると、プログラムの格納される
先頭アドレス値A0(21)に対し、GF(2m)上で
原始多項式H(x)の根αの乗算22を繰り返すこと
で、0Hを除く全てのアドレスを不連続に発生すること
ができる。そこで、プログラムカウンタのインクリメン
トに、上記αの乗算を対応させ、現在のアドレス値に対
し上記αを乗算することで、次のアドレス値を生成す
る。すなわち、プログラムカウンタをxだけインクリメ
ントする操作は、現在のアドレス値に対し上記αをx回
乗算することに相当する。この演算は、一般に使用され
ているLSRで実現可能である。
スバス幅をmbitとすると、プログラムの格納される
先頭アドレス値A0(21)に対し、GF(2m)上で
原始多項式H(x)の根αの乗算22を繰り返すこと
で、0Hを除く全てのアドレスを不連続に発生すること
ができる。そこで、プログラムカウンタのインクリメン
トに、上記αの乗算を対応させ、現在のアドレス値に対
し上記αを乗算することで、次のアドレス値を生成す
る。すなわち、プログラムカウンタをxだけインクリメ
ントする操作は、現在のアドレス値に対し上記αをx回
乗算することに相当する。この演算は、一般に使用され
ているLSRで実現可能である。
【0022】図3にLSRの構成例を示す。LSR31
は、1タイムスロットの遅延素子32が直接もしくはG
F(2m)上の加算器、すなわち、排他的論理和(XO
R)演算器33で連結された回路であり、XOR演算器
33の位置はH(x)により決まる。例えば、アドレス
バス幅が8bitの場合、ガロア体はGF(28)を用
い、H(x)はx8+x4+x3+x2+1,x8+x
6+x5+x3+1などから選択できる。先頭アドレス
値A0を01hとすると、H(x)=x8+x 4+x3
+x2+1の場合、生成されるアドレス列は01h,0
2h,04h,08h,10h,20h,40h,80
h,1Dh,3Ah,…となり、不連続にアドレスが生
成される。
は、1タイムスロットの遅延素子32が直接もしくはG
F(2m)上の加算器、すなわち、排他的論理和(XO
R)演算器33で連結された回路であり、XOR演算器
33の位置はH(x)により決まる。例えば、アドレス
バス幅が8bitの場合、ガロア体はGF(28)を用
い、H(x)はx8+x4+x3+x2+1,x8+x
6+x5+x3+1などから選択できる。先頭アドレス
値A0を01hとすると、H(x)=x8+x 4+x3
+x2+1の場合、生成されるアドレス列は01h,0
2h,04h,08h,10h,20h,40h,80
h,1Dh,3Ah,…となり、不連続にアドレスが生
成される。
【0023】H(x)は、プロセッサが固有の原始多項
式を持ち、常にそれを用いてもよいし、外部からの設定
により、プログラムごとにいくつかの原始多項式の中か
ら任意に選択できるようにしてもよい。
式を持ち、常にそれを用いてもよいし、外部からの設定
により、プログラムごとにいくつかの原始多項式の中か
ら任意に選択できるようにしてもよい。
【0024】図4に上記後者の場合のLSR構成例を示
す。LSR31の全遅延素子32間に、XOR演算器3
3と、XORとスルーを選択するセレクタ42を用意し
ておく。どの遅延素子間でXORを行うかを、用いるH
(x)に従いセレクタ42に対し設定することで、プロ
グラムごとに原始多項式を変更することが可能である。
す。LSR31の全遅延素子32間に、XOR演算器3
3と、XORとスルーを選択するセレクタ42を用意し
ておく。どの遅延素子間でXORを行うかを、用いるH
(x)に従いセレクタ42に対し設定することで、プロ
グラムごとに原始多項式を変更することが可能である。
【0025】また、原始多項式が同一の場合でも、先頭
アドレス値A0を任意のアドレスに設定することによ
り、LSRが発生する系列の位相を変えることができ
る。例として、アドレスバス幅が4bitの場合につい
て、図5を用いて説明する。原始多項式H(x)=x4
+x+1とすると、先頭アドレス値A0=1hのときL
SRが発生する系列51と、先頭アドレス値A0=Bh
のときLSRが発生する系列52は、位相が異なる。こ
の結果、見掛け上異なるアドレス順序となり、よりプロ
グラムデータの解析を困難とすることができる。ただ
し、有限体の性質上、プログラムの格納される先頭アド
レス値に0Hを選定することはできない。
アドレス値A0を任意のアドレスに設定することによ
り、LSRが発生する系列の位相を変えることができ
る。例として、アドレスバス幅が4bitの場合につい
て、図5を用いて説明する。原始多項式H(x)=x4
+x+1とすると、先頭アドレス値A0=1hのときL
SRが発生する系列51と、先頭アドレス値A0=Bh
のときLSRが発生する系列52は、位相が異なる。こ
の結果、見掛け上異なるアドレス順序となり、よりプロ
グラムデータの解析を困難とすることができる。ただ
し、有限体の性質上、プログラムの格納される先頭アド
レス値に0Hを選定することはできない。
【0026】H(x)として、原始多項式ではない既約
多項式を用いてもよい。原始多項式ではない既約多項式
を用いた場合、LSRが発生する系列が、原始多項式を
用いた場合に比べより短い周期となり、生成されないア
ドレスが生ずる。例として、アドレスバス幅が4bit
の場合について、図6を用いて説明する。GF(24)
の既約多項式は、x4+x+1,x4+x3+1,x4
+x3+x2+x+1,x2+x+1の4つである。こ
のうち、x4+x+1,x4+x3+1は原始多項式で
あり、LSRが発生する系列61の周期は24−1=1
5である。
多項式を用いてもよい。原始多項式ではない既約多項式
を用いた場合、LSRが発生する系列が、原始多項式を
用いた場合に比べより短い周期となり、生成されないア
ドレスが生ずる。例として、アドレスバス幅が4bit
の場合について、図6を用いて説明する。GF(24)
の既約多項式は、x4+x+1,x4+x3+1,x4
+x3+x2+x+1,x2+x+1の4つである。こ
のうち、x4+x+1,x4+x3+1は原始多項式で
あり、LSRが発生する系列61の周期は24−1=1
5である。
【0027】一方、原始多項式でない既約多項式x4+
x3+x2+x+1を用いた場合、LSRが発生する系
列62の周期は5であり、生成されないアドレス63が
生ずる。従って、原始多項式ではない既約多項式を用い
た場合、プログラムデータの長さが、発生系列の周期よ
り短くなくてはならない。しかし、プログラムの格納さ
れる先頭アドレス値により発生系列が異なるため、使用
しないアドレスにダミーデータを埋め込むことで、より
プログラムデータの解析を困難とすることができる。
x3+x2+x+1を用いた場合、LSRが発生する系
列62の周期は5であり、生成されないアドレス63が
生ずる。従って、原始多項式ではない既約多項式を用い
た場合、プログラムデータの長さが、発生系列の周期よ
り短くなくてはならない。しかし、プログラムの格納さ
れる先頭アドレス値により発生系列が異なるため、使用
しないアドレスにダミーデータを埋め込むことで、より
プログラムデータの解析を困難とすることができる。
【0028】例として、アドレスバス幅が4bitの場
合について、図7、8を用いて説明する。原始多項式で
ない既約多項式x4+x3+x2+x+1をH(x)に
用いて、先頭アドレス値A0=1hのときLSRが発生
する系列71と、先頭アドレス値A0=3hのときLS
Rが発生する系列72とでは、発生するアドレスが異な
る。従って、先頭アドレス値A0=1hのプログラムデ
ータ81と、先頭アドレス値A0=1hのプログラムデ
ータ82のように、プログラムごとに先頭アドレス値A
0を変え、かつ、使用しないアドレスにダミーデータ8
4を埋め込むことで、アドレス生成に使用する既約多項
式および先頭アドレスの秘匿性を高め、よりプログラム
データの解析を困難とすることができる。
合について、図7、8を用いて説明する。原始多項式で
ない既約多項式x4+x3+x2+x+1をH(x)に
用いて、先頭アドレス値A0=1hのときLSRが発生
する系列71と、先頭アドレス値A0=3hのときLS
Rが発生する系列72とでは、発生するアドレスが異な
る。従って、先頭アドレス値A0=1hのプログラムデ
ータ81と、先頭アドレス値A0=1hのプログラムデ
ータ82のように、プログラムごとに先頭アドレス値A
0を変え、かつ、使用しないアドレスにダミーデータ8
4を埋め込むことで、アドレス生成に使用する既約多項
式および先頭アドレスの秘匿性を高め、よりプログラム
データの解析を困難とすることができる。
【0029】ダミーデータ84は、ランダムデータでも
よいが、適度に命令コードを混ぜるなどして実際のプロ
グラムデータに似たデータとすると、よりプログラムデ
ータの解析を困難とすることができる。なお、ダミーデ
ータ84の埋め込みは、プログラムデータ生成時にアセ
ンブラ/コンパイラにより行ってもよいし、人手で行っ
てもよい。また、プログラムごとに先頭アドレス値A0
を変えることで、メモリに同時に複数格納されたプログ
ラムデータ83を扱うことも可能となる。
よいが、適度に命令コードを混ぜるなどして実際のプロ
グラムデータに似たデータとすると、よりプログラムデ
ータの解析を困難とすることができる。なお、ダミーデ
ータ84の埋め込みは、プログラムデータ生成時にアセ
ンブラ/コンパイラにより行ってもよいし、人手で行っ
てもよい。また、プログラムごとに先頭アドレス値A0
を変えることで、メモリに同時に複数格納されたプログ
ラムデータ83を扱うことも可能となる。
【0030】本実施例で用いるLSRは、アドレスバス
と同bitのレジスタであり、一般的なプロセッサに用
いられるプログラムカウンタと、レジスタのbit数は
同一である。他にアドレスバスのbit数以下のXOR
演算器が必要となるが、これは、プログラムカウンタを
インクリメントするための整数加算器より小さな回路規
模である。また、LSRによる新たなアドレスの生成は
1タイムスロットで行われるため、処理速度に関しても
プログラムカウンタのインクリメントと同等である。こ
のように本実施例によれば、プロセッサの性能を劣化さ
せることなく、一般的なプロセッサのプログラムカウン
タを不連続アドレス生成部11に変更することが可能で
ある。
と同bitのレジスタであり、一般的なプロセッサに用
いられるプログラムカウンタと、レジスタのbit数は
同一である。他にアドレスバスのbit数以下のXOR
演算器が必要となるが、これは、プログラムカウンタを
インクリメントするための整数加算器より小さな回路規
模である。また、LSRによる新たなアドレスの生成は
1タイムスロットで行われるため、処理速度に関しても
プログラムカウンタのインクリメントと同等である。こ
のように本実施例によれば、プロセッサの性能を劣化さ
せることなく、一般的なプロセッサのプログラムカウン
タを不連続アドレス生成部11に変更することが可能で
ある。
【0031】本実施例に挙げたアドレス生成方法はあく
まで一例であり、その他不連続な一定の規則に従った順
序でアドレスを生成する方法であれば、不連続アドレス
生成部11におけるアドレス生成方法として適用可能で
ある。例えば、ガロア体上で上記αを乗算する回路であ
るLSRの代わりに、乱数発生器として一般に使用され
ている、同じくガロア体上の演算により不連続系列を発
生するM系列発生器などを用いることもできる。
まで一例であり、その他不連続な一定の規則に従った順
序でアドレスを生成する方法であれば、不連続アドレス
生成部11におけるアドレス生成方法として適用可能で
ある。例えば、ガロア体上で上記αを乗算する回路であ
るLSRの代わりに、乱数発生器として一般に使用され
ている、同じくガロア体上の演算により不連続系列を発
生するM系列発生器などを用いることもできる。
【0032】図9に、上記のプロセッサ1が実行するプ
ログラムデータ7をソースコード6から変換するアセン
ブラ/コンパイラ2のフローチャートを示す。
ログラムデータ7をソースコード6から変換するアセン
ブラ/コンパイラ2のフローチャートを示す。
【0033】ステップ101にて、一般のアセンブラ/
コンパイラと同様に、ソースコード6をオブジェクトコ
ードに変換する。ステップ102にて、プロセッサ1の
持つ不連続アドレス生成部11におけるアドレス生成方
法と同一の方法にて、アドレス系列を生成する。アドレ
ス生成方法で用いる演算は、ソフトウェアによる実現で
よい。ステップ103にて、オブジェクトコードを、ス
テップ102で生成したアドレス系列の順序にソート
し、結果をプログラムデータ7とする。
コンパイラと同様に、ソースコード6をオブジェクトコ
ードに変換する。ステップ102にて、プロセッサ1の
持つ不連続アドレス生成部11におけるアドレス生成方
法と同一の方法にて、アドレス系列を生成する。アドレ
ス生成方法で用いる演算は、ソフトウェアによる実現で
よい。ステップ103にて、オブジェクトコードを、ス
テップ102で生成したアドレス系列の順序にソート
し、結果をプログラムデータ7とする。
【0034】以上、本発明を実施例に基づき具体的に説
明したが、本発明は上記実施例に限定されるものではな
く、その要旨を逸脱しない範囲で種々変更可能である。
明したが、本発明は上記実施例に限定されるものではな
く、その要旨を逸脱しない範囲で種々変更可能である。
【0035】
【発明の効果】本発明によれば、プロセッサの性能を劣
化させることなく、メモリに格納されたプログラムデー
タの解析、改変造を防ぎ、設計者の意図したプログラム
のみ処理を行うプロセッサと、上記プロセッサに所望の
プログラムを実行させるためのアセンブラ/コンパイラ
を提供することができる。
化させることなく、メモリに格納されたプログラムデー
タの解析、改変造を防ぎ、設計者の意図したプログラム
のみ処理を行うプロセッサと、上記プロセッサに所望の
プログラムを実行させるためのアセンブラ/コンパイラ
を提供することができる。
【図1】本発明の一実施例におけるプロセッサの構成を
示すブロック図。
示すブロック図。
【図2】本発明の一実施例におけるアドレス生成方法を
示したフロー図。
示したフロー図。
【図3】本発明の一実施例におけるLSRの一例を示し
たブロック図。
たブロック図。
【図4】本発明の一実施例におけるLSRの一例を示し
たブロック図。
たブロック図。
【図5】本発明の一実施例におけるLSRが発生するア
ドレスの説明図。
ドレスの説明図。
【図6】本発明の一実施例におけるLSRが発生するア
ドレスの説明図。
ドレスの説明図。
【図7】本発明の一実施例におけるLSRが発生するア
ドレスの説明図。
ドレスの説明図。
【図8】本発明の一実施例におけるメモリに格納された
プログラムデータの説明図。
プログラムデータの説明図。
【図9】本発明の一実施例によるアセンブラ/コンパイ
ラの動作例を示したフロー図。
ラの動作例を示したフロー図。
1…プロセッサ、2…アセンブラ/コンパイラ、3…メ
モリ、4…データバス、5…アドレスバス、6…ソース
コード、7…プログラムデータ、11…不連続アドレス
生成部、12…フェッチ部、13…命令解読部、14…
演算部、21…先頭アドレス、22…GF(2m)の原
始多項式H(x)の根αとの乗算、31…LSR、32
…1タイムスロットの遅延素子、33…GF(2)上の
加算器、42…セレクタ、51…先頭アドレス値A0=
1hのときLSRが発生する系列、52…先頭アドレス
値A0=BhのときLSRが発生する系列、61…H
(x)=x4+x+1のときLSRが発生する系列、6
2…H(x)=x4+x3+x 2+x+1のときLSR
が発生する系列、63…H(x)=x4+x3+x2+
x+1のとき生成されないアドレス、71…先頭アドレ
ス値A0=1hのときLSRが発生する系列、72…先
頭アドレス値A0=3hのときLSRが発生する系列、
81…先頭アドレス値A0=1hのプログラムデータ、
82…先頭アドレス値A0=3hのプログラムデータ、
83…メモリに複数格納されたプログラムデータ、84
…ダミーデータ。
モリ、4…データバス、5…アドレスバス、6…ソース
コード、7…プログラムデータ、11…不連続アドレス
生成部、12…フェッチ部、13…命令解読部、14…
演算部、21…先頭アドレス、22…GF(2m)の原
始多項式H(x)の根αとの乗算、31…LSR、32
…1タイムスロットの遅延素子、33…GF(2)上の
加算器、42…セレクタ、51…先頭アドレス値A0=
1hのときLSRが発生する系列、52…先頭アドレス
値A0=BhのときLSRが発生する系列、61…H
(x)=x4+x+1のときLSRが発生する系列、6
2…H(x)=x4+x3+x 2+x+1のときLSR
が発生する系列、63…H(x)=x4+x3+x2+
x+1のとき生成されないアドレス、71…先頭アドレ
ス値A0=1hのときLSRが発生する系列、72…先
頭アドレス値A0=3hのときLSRが発生する系列、
81…先頭アドレス値A0=1hのプログラムデータ、
82…先頭アドレス値A0=3hのプログラムデータ、
83…メモリに複数格納されたプログラムデータ、84
…ダミーデータ。
Claims (6)
- 【請求項1】プログラムデータの格納されたメモリに対
し出力するアドレスの生成手段を備え、上記アドレス生
成手段はアドレスを不連続かつ一定の規則に従った順序
で発生するアドレス生成手段であることを特徴とするプ
ロセッサ。 - 【請求項2】上記アドレス生成手段は、現在のアドレス
値に対しガロア体上の乗算を行うことで次のアドレス値
を生成するアドレス生成手段であることを特徴とする請
求項1記載のプロセッサ。 - 【請求項3】請求項1または2に記載のプロセッサによ
る上記アドレス生成手段により生成されないアドレス
に、ダミーデータを埋め込むことを特徴とするメモリへ
のプログラムデータ格納方法。 - 【請求項4】ソースコードをオブジェクトコードに翻訳
した後、不連続かつ一定の規則に従った順序に並べ替え
ることで最終的なプログラムデータを生成するアセンブ
ル/コンパイル手段を備えたことを特徴とするアセンブ
ラ/コンパイラ。 - 【請求項5】上記アセンブル/コンパイル手段は、ソー
スコードをオブジェクトコードに翻訳した後、プログラ
ムデータの格納されるメモリのプログラムデータの格納
される先頭アドレス値に対しガロア体上の乗算を繰り返
すことで得られる数列の順序に並べ替えることで最終的
なプログラムデータを生成するアセンブル/コンパイル
手段であることを特徴とする請求項4記載のアセンブラ
/コンパイラ。 - 【請求項6】上記アセンブル/コンパイル手段は、不連
続かつ一定の規則に従った順序に並べ替えた後、プログ
ラムデータの格納されるメモリのプログラムデータが格
納されないアドレスにダミーデータを埋め込んで最終的
なプログラムデータを生成するアセンブル/コンパイル
手段であることを特徴とする請求項4記載のアセンブラ
/コンパイラ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002103340A JP2003296104A (ja) | 2002-04-05 | 2002-04-05 | プロセッサおよびアセンブラ/コンパイラ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002103340A JP2003296104A (ja) | 2002-04-05 | 2002-04-05 | プロセッサおよびアセンブラ/コンパイラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2003296104A true JP2003296104A (ja) | 2003-10-17 |
Family
ID=29389233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002103340A Pending JP2003296104A (ja) | 2002-04-05 | 2002-04-05 | プロセッサおよびアセンブラ/コンパイラ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2003296104A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005292126A (ja) * | 2004-04-05 | 2005-10-20 | Agilent Technol Inc | 自動試験システム及び操作方法 |
JP2006155140A (ja) * | 2004-11-29 | 2006-06-15 | Renesas Technology Corp | 情報処理装置、および、そのアドレス制御方法 |
JP2006277411A (ja) * | 2005-03-29 | 2006-10-12 | Toshiba Corp | プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法 |
-
2002
- 2002-04-05 JP JP2002103340A patent/JP2003296104A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005292126A (ja) * | 2004-04-05 | 2005-10-20 | Agilent Technol Inc | 自動試験システム及び操作方法 |
JP2006155140A (ja) * | 2004-11-29 | 2006-06-15 | Renesas Technology Corp | 情報処理装置、および、そのアドレス制御方法 |
JP4664655B2 (ja) * | 2004-11-29 | 2011-04-06 | ルネサスエレクトロニクス株式会社 | 情報処理装置、および、そのアドレス制御方法 |
JP2006277411A (ja) * | 2005-03-29 | 2006-10-12 | Toshiba Corp | プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法 |
JP4551802B2 (ja) * | 2005-03-29 | 2010-09-29 | 株式会社東芝 | プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法 |
US8532296B2 (en) | 2005-03-29 | 2013-09-10 | Kabushiki Kaisha Toshiba | Processor, memory device, computer system, and method for transferring data |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Alkim et al. | ISA Extensions for Finite Field Arithmetic Accelerating Kyber and NewHope on RISC-V. | |
Schneier et al. | Fast software encryption: Designing encryption algorithms for optimal software speed on the Intel Pentium processor | |
EP2917833B1 (en) | Compiler generating operator free code | |
US20040202317A1 (en) | Advanced encryption standard (AES) implementation as an instruction set extension | |
Yu et al. | Vector processing as a soft-core CPU accelerator | |
JP7285850B2 (ja) | コンパイルデバイス及び方法 | |
JP7132926B2 (ja) | コンパイルデバイス及びコンパイル方法 | |
JP2009282992A (ja) | 多項式演算オペレーション | |
JP2011138219A (ja) | 並列プログラム解析結果表示装置および並列プログラム解析結果表示方法 | |
Liu et al. | Efficient software implementation of ring-LWE encryption on IoT processors | |
Bos et al. | Fly, you fool! Faster Frodo for the ARM Cortex-M4 | |
JP2003296104A (ja) | プロセッサおよびアセンブラ/コンパイラ | |
Tan et al. | Evaluating the highly-pipelined Intel Stratix 10 FPGA architecture using open-source benchmarks | |
JP5193358B2 (ja) | 多項式データ処理演算 | |
JP3723115B2 (ja) | 単一命令多重データ処理 | |
Millar | Design of a flexible schoenhage-strassen FFT polynomial multiplier with high-level synthesis | |
JP2006072961A (ja) | 演算処理装置のメモリ回路 | |
CN109375895B (zh) | 多项式乘法的加速方法及装置、ntru加解密加速方法及装置 | |
JP6897213B2 (ja) | コード生成装置、コード生成方法及びコード生成プログラム | |
Guo et al. | Optimized system-on-chip integration of a programmable ECC coprocessor | |
Bertels et al. | Developing applications for polymorphic processors: the delft workbench | |
Jungeblut et al. | Resource efficiency of hardware extensions of a 4-issue VLIW processor for elliptic curve cryptography | |
US8375077B2 (en) | Method, apparatus and media for performing GF(2) polynomial operations | |
Fournier et al. | A vector approach to cryptography implementation | |
Ketata et al. | Detailed analysis of the AES CTR mode parallel execution using OpenMP |