説明

記憶位置抽出装置および記憶位置抽出方法

【課題】共通部分抽出に必要となる処理の並列化を可能とし、処理全体の効率化を図って処理時間を高速化することを課題とする。
【解決手段】共通アドレス抽出装置10は、各バイトに対して篩処理一回目のログ加算処理を実施し、一回目のログ加算処理が終了した後の各バイトの値に対して、条件を満足するバイトのアドレスに付属するパリティビットをオンとする。続いて、共通アドレス抽出装置10は、パリティビットの値を保持した状態のまま、各バイトに対して篩処理二回目のログ加算処理を実施する。そして、共通アドレス抽出装置10は、二回目の篩処理が終了した後のバイトが保持する値それぞれに対して、条件を満足しないバイトのアドレスに付属するパリティビットをオフとする。その後、共通アドレス抽出装置10は、対応するパリティビットの値が1であるバイトのアドレスを、条件を満足するメモリアドレスの共通部分として、抽出する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、複数の演算結果記憶領域にそれぞれ記憶された各演算結果のうち所定の条件を満足する演算結果の記憶位置を抽出する記憶位置抽出装置および記憶位置抽出方法に関する。
【背景技術】
【0002】
近年、インターネット等の広がりにより、決済や個人認証を、ネットワークを通じて電子的に行う必要性が増しているが、その情報セキュリティを保持するための基盤技術の一つとしてRSA暗号が用いられている。このRSA暗号の安全性は素因数分解問題の困難性に基づいており、この暗号を安全に利用するためには、RSA暗号の安全性評価を精密に行い、その実装パラメータが適切に設定されているかを評価することが重要となっている。
【0003】
このような評価のためには、現在知られている最も効率的な素因数分解アルゴリズムがどのくらいの計算量で実施できるのかを図る必要があり、素因数分解アルゴリズムをソフトウェアの面だけでなく、専用ハードウェアによる評価が欠かせない。
【0004】
例えば、RSA暗号の安全性を評価するうえで重要となる素因数分解アルゴリズムの中で、現時点で最も効率的な手法として知られている方法は一般数体篩法である。具体的に、一般数体篩法は、多項式選択ステップ、関係式探索ステップ、行列計算ステップおよび平方根計算ステップの四つのステップから構成される(非特許文献1参照)。
【0005】
この一般数体篩法に必要な計算量として、上記のステップの中で最も本質的な部分は関係式探索ステップである。この関係式探索ステップは、さらに篩処理部と関係式検査部の2種類の処理から構成されているが、中でも篩処理が計算量の上で本質的であることが知られている。
【0006】
この篩処理とは、メモリを初期化する操作ならびにログ加算と閾値判定を合わせた処理のことをいう。このログ加算処理では、各々1バイト(8ビット)のデータ容量を持つメモリ空間を準備し、用意された多数の素数各々について、一定の条件を満たすアドレスのデータに対して、素数の対数値を加算する処理を行う。また、閾値判定処理では、全ての素数に対しログ加算処理が行われたあと、あらかじめ決められた閾値以上となるメモリデータのアドレスを抽出する処理が行われる(特許文献1参照)。そして、この篩処理を複数回を実施する度毎に各々抽出されたメモリアドレスの共通部分を求める処理も重要であり、併せて効率的に実施される必要がある。
【0007】
従来より、メモリアドレスの共通部分を求める手法としては、この共通部分を求める際に、複数の篩処理それぞれについて抽出されたアドレスを一旦外部記憶装置に蓄え、それらのデータを突き合わせることで、共通部分を求める方法が知られている。
【0008】
具体的に説明すると、図9に示すように、一回目の篩処理が終了した後の各バイトの値に対して、閾値「6」以上であるかを判定し、閾値「6」以上の値を保持するバイトのアドレス「1」、「5」を装置外部のバッファに転送し、バッファに保持される。続いて、二回目の篩処理が終了した後に同様の処理を行って、閾値「6」以上の値を保持するバイトのアドレス「3」、「5」を転送し、同じくバッファに保持される。そして、各々のバッファに保持された結果から、共通部分「5」を抽出する。ここで、ハードウェアからバッファへデータ転送する処理およびバッファに保持された共通部分を抽出する処理は逐次処理となる。
【0009】
【特許文献1】特開2007−188263号公報
【非特許文献1】伊豆哲也、木田祐司「素因数分解の現状について」日本応用数理学会論文誌、Vol.13, No.2(20030625) pp. 289-303, 2003.
【発明の開示】
【発明が解決しようとする課題】
【0010】
ところで、上記したバッファへのデータ転送を行ってメモリアドレスの共通部分を抽出する技術では、共通部分を抽出する際に、通常外部記憶装置への出力バスは単一であるため、篩処理結果を抽出する際、ならびに共通部分を抽出する際において、いずれも並列化が困難であるため、逐次処理によるデータ転送時間の増加や、処理時間の増加等の問題が発生し、処理全体の効率が低下するという課題があった。
【0011】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、共通部分抽出に必要となる処理の並列化を可能とし、処理全体の効率化を図って処理時間を高速化することを目的とする。
【課題を解決するための手段】
【0012】
上述した課題を解決し、目的を達成するため、本発明は、複数の演算結果記憶領域にそれぞれ記憶された各演算結果のうち所定の条件を満足する演算結果の記憶位置を抽出する記憶位置抽出装置であって、前記所定の条件を満足する演算結果であることを示す第一の情報を演算結果記憶領域に対応付けて記憶する記憶手段と、各演算結果が更新されるごとに前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、当該所定の条件を満足しないことを示す第二の情報に変更する変更手段と、前記変更手段により変更された変更結果に基づいて前記所定の条件を満足する演算結果の記憶位置を抽出する抽出手段と、を備えたことを特徴とする。
【0013】
また、本発明は、上記の発明において、初回の演算における演算結果のうち、前記所定の条件に満足する演算結果の演算結果記憶領域に対応付けて前記第一の情報を設定する設定手段をさらに備え、前記変更手段は、初回以後の演算において、前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、当該所定の条件を満足しないことを示す第二の情報に変更することを特徴とする。
【0014】
また、本発明は、上記の発明において、演算開始時点において、全ての演算結果記憶領域に対応付けて前記第一の情報を設定する設定手段をさらに備え、前記変更手段は、前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、当該所定の条件を満足しないことを示す第二の情報に変更することを特徴とする。
【0015】
また、本発明は、複数の演算結果記憶領域にそれぞれ記憶された各演算結果のうち所定の条件を満足する演算結果の記憶位置を抽出する記憶位置抽出方法であって、前記所定の条件を満足する演算結果であることを示す第一の情報を演算結果記憶領域に対応付けて記憶する記憶工程と、各演算結果が更新されるごとに前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、当該所定の条件を満足しないことを示す第二の情報に変更する変更工程と、前記変更工程により変更された変更結果に基づいて前記所定の条件を満足する演算結果の記憶位置を抽出する抽出工程と、を含んだことを特徴とする。
【発明の効果】
【0016】
本発明によれば、演算装置内部にパリティビットをアドレス毎に準備し、本パリティビットを用いて抽出アドレス情報を処理することにより、共通部分抽出に必要となる処理の並列化を可能とし、処理全体の効率化を図って処理時間を高速化することが可能である。
【発明を実施するための最良の形態】
【0017】
以下に添付図面を参照して、この発明に係る記憶位置抽出装置および記憶位置抽出方法の実施例を詳細に説明する。
【実施例1】
【0018】
以下の実施例では、実施例1に係る共通アドレス抽出装置の概要および特徴、共通アドレス抽出装置の構成および処理の流れを順に説明し、最後に実施例1による効果を説明する。
【0019】
[実施例1に係る共通アドレス抽出装置の概要および特徴]
まず最初に、図1を用いて、実施例1に係る共通アドレス抽出装置の概要および特徴を説明する。図1は、実施例1に係る共通アドレス抽出装置の概要および特徴を説明するための図である。
【0020】
実施例1の共通アドレス抽出装置10では、複数の演算結果記憶領域にそれぞれ記憶された各演算結果のうち所定の条件を満足する演算結果のメモリアドレスを抽出することを概要とする。そして、この共通アドレス抽出装置10では、処理全体の効率化を図って処理を高速化する点に主たる特徴がある。
【0021】
この主たる特徴について具体的に説明すると、共通アドレス抽出装置10は、アドレスごとのログ加算処理結果を記憶する1バイトの記憶領域と、ログ加算処理結果が選択条件に適合するか否かを示すフラグをアドレスごとに記憶する1ビットの記憶領域(パリティビット)とを対応付けて記憶するメモリを有する。
【0022】
このような構成のもと、共通アドレス抽出装置10は、各バイトに対して篩処理一回目のログ加算処理を実施する(図1の(1)参照)。そして、共通アドレス抽出装置10は、一回目のログ加算処理が終了した後の各バイトの値に対して、条件を満足するバイトのアドレスに付属するパリティビットをオンとする(図1の(2)参照)。具体的には、共通アドレス抽出装置10は、一回目のログ加算処理が終了した後にバイトが保持する値それぞれに対して、閾値以上であるか判定し、その結果、閾値以上の値を保持するバイトのアドレスのパリティビットを「1」とする。
【0023】
続いて、共通アドレス抽出装置10は、パリティビットの値を保持した状態のまま、各バイトに対して篩処理二回目のログ加算処理を実施する(図1の(3)参照)。そして、共通アドレス抽出装置10は、二回目の篩処理が終了した後のバイトが保持する値それぞれに対して、条件を満足しないバイトのアドレスに付属するパリティビットをオフとする(図1の(4)参照)。具体的には、共通アドレス抽出装置10は、二回目の篩処理が終了した後にバイトが保持する値それぞれに対して、閾値未満の値であるかを判定し、その結果、閾値未満の値を保持するバイトのアドレスのパリティビットを0とする。
【0024】
その後、共通アドレス抽出装置10は、対応するパリティビットの値が1であるバイトのアドレスを、条件を満足するメモリアドレスの共通部分として、抽出して格納する(図1の(5)参照)。なお、上記では、篩処理を二回実行して共通部分を抽出する場合を説明するが、篩処理を二回以上実行して共通部分を抽出するようにしてもよい。
【0025】
このように、共通アドレス抽出装置10は、共通部分抽出に必要となる処理の並列化を可能とする結果、上記した主たる特徴のごとく、処理全体の効率化を図って処理を高速化することが可能である。
【0026】
[共通アドレス抽出装置10の構成]
次に、図2を用いて、図1に示した共通アドレス抽出装置10の構成を説明する。図2は、実施例1に係る共通アドレス抽出装置10の構成を示すブロック図である。なお、以下では、FPGAに共通アドレス抽出装置を適用した場合として説明する。
【0027】
同図に示すように、この共通アドレス抽出装置10は、演算部11a〜11n、メモリ12a〜12n、制御部13を備え、因子基底データベース20a、20bとそれぞれ接続される。演算部11a〜11nには、メモリ12a〜12nがそれぞれ割当てられている。以下にこれらの各部の処理を説明する。
【0028】
因子基底データベース20a、20bは、3つ組の自然数(p、s、log)である因子基底の集合を記憶する。この因子基底とは、pが素数であり、sが0以上p未満の自然数、logがpの対数値log2(p)の小数点以下を切り上げた自然数である。因子基底データベース20a、20bでは、それぞれ異なる因子基底の集合が記憶され、因子基底データベース20aに格納された因子基底(p、s、log)は、一回目の篩処理で用いられ、因子基底データベース20bに格納された因子基底(p、s、log)は、二回目の篩処理で用いられるものとする。なお、因子基底データベース20a、20bそれぞれは、因子基底の総数として、約5000万個程度を記憶する。
【0029】
演算部11は、因子基底データベース20から因子基底を読み出して、因子基底を用いてログ加算処理を行う。図3の例を用いて具体的に説明すると、まず、演算部11aは、各バイトの値を0に初期化し、因子基底データベース20から(p、s、log)を読み出す。そして、演算部11aは、s<Sであるか否か判定し(つまり、sの値がメモリサイズをはみ出すか否かを判定し)、s<Sである場合には、メモリ空間におけるバイト位置sのメモリ値を読み出し、その値にlogの値を加算し、その値を同じバイト位置に書き戻す。
【0030】
そして、演算部11aは、s+pを改めてsとし、メモリ12aのメモリサイズをはみ出すまで(つまり、s+pの値がS以上となるまで)、上記の処理を繰り返す。そして、演算部11aは、メモリサイズをはみ出した場合には、s−Sを改めてsとし、(p、s、log)を演算部11bに引き渡す。その後、全ての演算部11a〜11nが上記の処理を行うと、最後の演算部11nは、一回目の篩処理を終了した旨(または、一回目以降の篩処理が終了した旨)を後述する閾値判定部13aに通知する。
【0031】
ここで、図4を用いてログ加算処理の計算例について説明する。図4の例では、因子基底データベース20に因子基底(p、s、log)として、(3,0,2)、(5,0,3)、(7,4,3),(11,4,4),(13,6,4),(17,3,5),(19,2,5)が記憶されている場合に、演算部11aは、その因子基底を順番に読み出して、ログ加算処理を行い、全ての因子基底を用いて行ったログ加算処理結果の合計をメモリ12に記憶させる。つまり、図4の例では、ログ加算処理結果の合計として、アドレス0〜6には、それぞれ「5」、「0」、「5」、「7」、「7」、「3」、「6」が記憶されている。その後、後述する制御部13が、ログ加算処理が終了した後にバイトが保持する値それぞれに対して、閾値「6」以上であるか判定し、その結果、閾値「6」以上の値を保持するバイトのアドレスであるアドレス「3」、「4」、「6」のパリティビットを1とする。
【0032】
メモリ12a〜12nは、メモリ空間としてS=219バイトをトータルで有し、アドレスごとのログ加算処理結果を記憶するデータ容量として1バイトの記憶領域と、ログ加算処理結果が選択条件に適合するか否かを示すフラグをアドレスごとに記憶する1ビットのパリティビットを有する。
【0033】
制御部13は、閾値判定部13aと共通アドレス抽出部13bとを備える。この閾値判定部13aは、一回目の篩処理が終了した後の各メモリ12a〜12nのバイトの値に対して、閾値以上であるかを判定し、閾値以上であるバイトのアドレスに付属するパリティビットをオンとする。また、一回目の篩処理以後では、篩処理が終了した後の各バイトの値に対して、閾値未満であるかを判定し、閾値未満であるバイトのアドレスに付属するパリティビットをオフとする。
【0034】
具体的には、閾値判定部13aは、演算部11nから一回目の篩処理が終了した旨の通知を受け付けると、篩処理が終了した後の各バイトの値に対して、閾値以上であるか判定し、その結果、閾値判定部13aは、閾値以上の値を保持するバイトのアドレスのパリティビットを1とする。また、共通アドレス抽出装置10は、演算部11nから一回目以降の篩処理が終了した旨の通知を受け付けると、篩処理が終了した後の各バイトの値それぞれに対して、閾値未満の値であるかを判定し、その結果、閾値未満の値を保持するバイトのアドレスのパリティビットを0とする。
【0035】
図5の例を用いて説明すると、閾値判定部13aは、一回目の篩処理が終了した後の各バイトの値に対して、閾値(図5の例では、閾値「6」)以上であるかを判定し、閾値以上であるアドレス「1」および「5」に付属するパリティビットを「1」とする。その後、二回目の篩処理が終了した後の各バイトの値に対して、閾値未満の値であるかを判定し、その結果、パリティビットが「1」であって閾値未満であるアドレス「1」に付属するパリティビットを「0」とする。その結果、篩処理1回目および篩処理2回目両方の結果の共通部分をパリティビットが「1」であるアドレス「5」として後述する共通アドレス13bが抽出する。
【0036】
共通アドレス抽出部13bは、対応するパリティビットの値が1であるバイトのアドレスを、閾値以上であるメモリアドレスの共通部分として、抽出する。例えば、前述した図5の例を用いて説明すると、共通アドレス抽出部13bは、同図に示すように、パリティビットが「1」であるアドレス「5」をメモリアドレスの共通部分として抽出する。
【0037】
[共通アドレス抽出装置による処理]
次に、図6を用いて、実施例1に係る共通アドレス抽出装置10による全体の処理の流れを説明する。図6は、実施例1に係る共通アドレス抽出装置10の全体の処理動作を示すフローチャートである。
【0038】
同図に示すように、共通アドレス抽出装置10は、各バイトの値を0に初期化し(ステップS101)、一回目の篩処理(後に、図7を用いて詳述)を実行する(ステップS102)。そして、共通アドレス抽出装置10は、一回目の篩処理が終了した後の各バイトの値に対して、閾値以上であるかを判定し、閾値以上であるバイトのアドレスに付属するパリティビットをオンとする(ステップS103)。
【0039】
そして、共通アドレス抽出装置10は、各バイトの値を0に初期化し(ステップS104)、二回目の篩処理を実行する(ステップS105)。その後、共通アドレス抽出装置10は、二回目の篩処理が終了した後、篩処理が終了した後の各バイトの値に対して、閾値未満であるかを判定し、閾値未満であるバイトのアドレスに付属するパリティビットをオフとする(ステップS106)。
【0040】
そして、共通アドレス抽出装置10は、対応するパリティビットの値が1であるバイトのアドレスを、閾値以上であるメモリアドレスの共通部分として、抽出する(ステップS107)。
【0041】
続いて、図7を用いて、実施例1に係る共通アドレス抽出装置10による篩処理の流れを説明する。図7は、実施例1に係る共通アドレス抽出装置10の篩処理の動作を示すフローチャートである。
【0042】
同図に示すように、共通アドレス抽出装置10の演算部11aは、因子基底データベース20から因子基底(p、s、log)を読み出す(ステップS201)。そして、演算部11aは、s<Sであるか否か判定し(ステップS202)、s<Sである場合には(ステップS202肯定)、メモリ空間におけるバイト位置sのメモリ値を読み出し、その値にlogの値を加算し、その値を同じバイト位置に書き戻す(ステップS203)。
【0043】
そして、演算部11aは、s+pを改めてsとし(ステップS204)、ステップS202に戻って、s<Sであるか否か(つまり、s+pの値がSを超えたか否か)判定し、s<Sでないと判定されるまで上記したステップS202〜S205の処理を繰り返す。一方、ステップS202において、演算部11aは、s<Sでないと判定した場合には(ステップS202否定)、s−Sを改めてsとし、(p、s、log)を演算部11bに引き渡す(ステップS205)。ここで、演算部11bに引き渡すと同時に、因子基底データベース20に格納されている次の因子基底(p、s、log)を読み出し、読み出した因子基底(p、s、log)を用いて、上記したステップS202〜S205と同様の処理を行う。
【0044】
その後、演算部11bは、演算部11aから(p、s、log)を受信すると、上記したステップS202〜S205と同様の処理を行い、次の演算部11cに(p、s、log)を引き渡し(ステップS206〜S209)、演算部11nまで処理を繰り返す(ステップS210〜S212)。そして、演算部11nは、因子基底データベース20に格納されている全ての因子基底(p、s、log)を用いたログ加算処理を行った後、上記したステップS103に移行する。なお、図6に示した一回目の篩処理と二回目の篩処理とは同様の処理を行うが、一回目の篩処理では、因子基底データベース20aに格納された因子基底(p、s、log)を用いてログ加算処理を行い、二回目の篩処理では、因子基底データベース20bに格納された因子基底(p、s、log)を用いてログ加算処理を行う。
【0045】
[実施例1の効果]
上述してきたように、共通アドレス抽出装置10は、演算装置内部にパリティビットをアドレス毎に準備し、本パリティビットを用いて抽出アドレス情報を処理することにより、共通部分抽出に必要となる処理の並列化を可能とし、処理全体の効率化を図って処理時間を高速化することが可能である。
【0046】
また、実施例1によれば、ハードウェアロジックとして実現することにより、閾値判定、共通項抽出の処理が並列に実行可能であり、またさらに閾値判定と同時に共通項の抽出およびメモリの初期化が可能となり、これにより共通項抽出処理にかかる時間が大幅に圧縮され、素因数分解における篩処理全体の演算効率が著しく向上する。また、FPGA(例えば、Virtex4)に内蔵されているメモリロジックエレメントは、各1バイトエレメントに、1ビットのパリティを含んだ9bitを単位としており、本アルゴリズムをハードウェア実装する際には特に有効である。
【実施例2】
【0047】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例2として本発明に含まれる他の実施例を説明する。
【0048】
(1)パリティビット
本発明は、処理開始時点において全てのパリティビットをオンにし、各演算後に条件に適合しないアドレスに付属するパリティビットをオフとするようにしてもよい。具体的には、図8に示すように、共通アドレス抽出装置10aは、演算開始時点では、各バイトに付属するパリティビットを全て1とすると共に、各バイトの値を0に初期化する(図8、(1)参照)。そして、共通アドレス抽出装置10aは、パリティビットの値を保持した状態のまま、各バイトに対して篩処理一回目を実施する(図8の(2)参照)。
【0049】
その後、共通アドレス抽出装置10aは、一回目の篩処理が終了した後の各バイトの値に対して、条件を満足するバイトのアドレス(閾値として定めた値である6以上の値を持つバイトのアドレス)については、パリティビットを「1」のまま変化させず、条件を満足しないバイトのアドレス(同じく6未満であるバイトのアドレス)に付属するパリティビットを「0」とし、同時に全てのバイトの値を0に初期化する(図8の(3)参照)。
【0050】
続いて、共通アドレス抽出装置10aは、パリティビットの値を保持した状態のまま、各バイトに対して篩処理二回目を実施する(図8の(4)参照)。そして、共通アドレス抽出装置10aは、二回目の篩処理が終了した後の各バイトの値に対して、条件を満足するバイトのアドレス(閾値として定めた値である6以上の値を持つバイトのアドレス)については、パリティビットを変化させず、条件を満足しないバイトのアドレス(同じく6未満であるバイトのアドレス)に付属するパリティビットを0とし、同時に全てのバイトの値を0に初期化する(図8の(5)参照)。その後、対応するパリティビットの値が1であるバイトのアドレスを抽出する。
【0051】
このように、処理開始時点において全てのパリティビットをオンにし、各演算後は、閾値未満の値を保持するバイトのアドレスに付属するパリティビットをオフにするので、回路の構造を単純化することが可能である。
【0052】
(2)システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、演算部11と制御部13を統合してもよい。
【0053】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0054】
(付記1)複数の演算結果記憶領域にそれぞれ記憶された各演算結果のうち所定の条件を満足する演算結果の記憶位置を抽出する記憶位置抽出装置であって、
前記所定の条件を満足する演算結果であることを示す第一の情報を演算結果記憶領域に対応付けて記憶する記憶手段と、
各演算結果が更新されるごとに前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、当該所定の条件を満足しないことを示す第二の情報に変更する変更手段と、
前記変更手段により変更された変更結果に基づいて前記所定の条件を満足する演算結果の記憶位置を抽出する抽出手段と、
を備えたことを特徴とする記憶位置抽出装置。
【0055】
(付記2)初回の演算における演算結果のうち、前記所定の条件に満足する演算結果の演算結果記憶領域に対応付けて前記第一の情報を設定する設定手段をさらに備え、
前記変更手段は、初回以後の演算において、前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、前記第二の情報に変更することを特徴とする付記1に記載の記憶位置抽出装置。
【0056】
(付記3)演算開始時点において、全ての演算結果記憶領域に対応付けて前記第一の情報を設定する設定手段をさらに備え、
前記変更手段は、前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、前記第二の情報に変更することを特徴とする付記1に記載の記憶位置抽出装置。
【0057】
(付記4)前記演算結果記憶領域に対する演算を並列に行うことを特徴とする付記1〜3のいずれか一つに記載の記憶位置抽出装置。
【0058】
(付記5)前記変更手段は、前記第一の情報を更新する処理を並列に行うことを特徴とする付記1〜4のいずれか一つに記載の記憶位置抽出装置。
【0059】
(付記6)前記変更手段によって前記第一の情報が前記第二の情報に変更されると同時に、前記演算結果記憶領域を初期化する演算結果初期化手段をさらに備えることを特徴とする付記1〜5のいずれか一つに記載の記憶位置抽出装置。
【0060】
(付記7)前記記憶手段は、前記演算結果記憶領域として、一バイトを一単位とすることを特徴とする付記1〜6のいずれか一つに記載の記憶位置抽出装置。
【0061】
(付記8)前記記憶手段は、九バイトを一単位とし、そのうち八ビットを前記演算結果記憶領域とし、一ビットを前記第一の情報を記憶する領域とすることを特徴とする付記1〜7のいずれか一つに記載の記憶位置抽出装置。
【0062】
(付記9)複数の演算結果記憶領域にそれぞれ記憶された各演算結果のうち所定の条件を満足する演算結果の記憶位置を抽出する記憶位置抽出方法であって、
前記所定の条件を満足する演算結果であることを示す第一の情報を演算結果記憶領域に対応付けて記憶する記憶工程と、
各演算結果が更新されるごとに前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、当該所定の条件を満足しないことを示す第二の情報に変更する変更工程と、
前記変更工程により変更された変更結果に基づいて前記所定の条件を満足する演算結果の記憶位置を抽出する抽出工程と、
を含んだことを特徴とする記憶位置抽出方法。
【0063】
(付記10)初回の演算における演算結果のうち、前記所定の条件に満足する演算結果の演算結果記憶領域に対応付けて前記第一の情報を設定する設定工程をさらに含み、
前記変更工程は、初回以後の演算において、前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、前記第二の情報に変更することを特徴とする付記9に記載の記憶位置抽出方法。
【0064】
(付記11)演算開始時点において、全ての演算結果記憶領域に対応付けて前記第一の情報を設定する設定工程をさらに含み、
前記変更工程は、前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、前記第二の情報に変更することを特徴とする付記9に記載の記憶位置抽出方法。
【0065】
(付記12)前記演算結果記憶領域に対する演算を並列に行うことを特徴とする付記9〜11のいずれか一つに記載の記憶位置抽出方法。
【0066】
(付記13)前記変更工程は、前記第一の情報を更新する処理を並列に行うことを特徴とする付記9〜12のいずれか一つに記載の記憶位置抽出方法。
【0067】
(付記14)前記変更工程によって前記第一の情報が前記第二の情報に変更されると同時に、前記演算結果記憶領域を初期化する演算結果初期化手段をさらに含んだことを特徴とする付記9〜13のいずれか一つに記載の記憶位置抽出方法。
【0068】
(付記15)前記記憶工程は、前記演算結果記憶領域として、一バイトを一単位とすることを特徴とする付記9〜14のいずれか一つに記載の記憶位置抽出方法。
【0069】
(付記16)前記記憶工程は、九バイトを一単位とし、そのうち八ビットを前記演算結果記憶領域とし、一ビットを前記第一の情報を記憶する領域とすることを特徴とする付記9〜15のいずれか一つに記載の記憶位置抽出方法。
【産業上の利用可能性】
【0070】
以上のように、本発明に係る記憶位置抽出装置および記憶位置抽出方法は複数の演算結果記憶領域にそれぞれ記憶された各演算結果のうち所定の条件を満足する演算結果の記憶位置を抽出する場合に有用であり、特に、共通部分抽出に必要となる処理の並列化を可能とし、処理全体の効率化を図って処理を高速化することに適する。
【図面の簡単な説明】
【0071】
【図1】実施例1に係る共通アドレス抽出装置10の概要および特徴を説明するための図である。
【図2】実施例1に係る共通アドレス抽出装置10の構成を示すブロック図である。
【図3】ログ加算処理について説明するための図である。
【図4】ログ加算処理の計算例について説明するための図である。
【図5】閾値判定処理について説明するための図である。
【図6】実施例1に係る共通アドレス抽出装置10の全体の処理動作を示すフローチャートである。
【図7】実施例1に係る共通アドレス抽出装置10の篩処理の動作を示すフローチャートである。
【図8】実施例2に係る共通アドレス抽出装置10aを説明するための図である。
【図9】従来の篩処理を説明するための図である。
【符号の説明】
【0072】
10、10a 共通アドレス抽出装置
11a〜11n 演算部
12a〜12n メモリ
13 制御部
13a 閾値判定部
13b 共通アドレス抽出部
20a、20b 因子基底データベース

【特許請求の範囲】
【請求項1】
複数の演算結果記憶領域にそれぞれ記憶された各演算結果のうち所定の条件を満足する演算結果の記憶位置を抽出する記憶位置抽出装置であって、
前記所定の条件を満足する演算結果であることを示す第一の情報を演算結果記憶領域に対応付けて記憶する記憶手段と、
各演算結果が更新されるごとに前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、当該所定の条件を満足しないことを示す第二の情報に変更する変更手段と、
前記変更手段により変更された変更結果に基づいて前記所定の条件を満足する演算結果の記憶位置を抽出する抽出手段と、
を備えた記憶位置抽出装置。
【請求項2】
初回の演算における演算結果のうち、前記所定の条件を満足する演算結果の演算結果記憶領域に対応付けて前記第一の情報を設定する設定手段をさらに備え、
前記変更手段は、初回以後の演算において、前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、前記第二の情報に変更することを特徴とする請求項1に記載の記憶位置抽出装置。
【請求項3】
演算開始時点において、全ての演算結果記憶領域に対応付けて前記第一の情報を設定する設定手段をさらに備え、
前記変更手段は、前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、前記第二の情報に変更することを特徴とする請求項1に記載の記憶位置抽出装置。
【請求項4】
複数の演算結果記憶領域にそれぞれ記憶された各演算結果のうち所定の条件を満足する演算結果の記憶位置を抽出する記憶位置抽出方法であって、
前記所定の条件を満足する演算結果であることを示す第一の情報を演算結果記憶領域に対応付けて記憶部に記憶する記憶工程と、
各演算結果が更新されるごとに前記所定の条件を満足しなくなった演算結果に対応する第一の情報を、当該所定の条件を満足しないことを示す第二の情報に変更する変更工程と、
前記変更工程により変更された変更結果に基づいて前記所定の条件を満足する演算結果の記憶位置を抽出する抽出工程と、
を含んだ記憶位置抽出方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2009−58690(P2009−58690A)
【公開日】平成21年3月19日(2009.3.19)
【国際特許分類】
【出願番号】特願2007−224881(P2007−224881)
【出願日】平成19年8月30日(2007.8.30)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成18年度、独立行政法人情報通信研究機構、「素因数分解の困難性に基づく暗号の技術的評価に関する研究開発」委託研究、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】