(57)【要約】オペランドレジスタの最大語長よりも短い異なる語長を有する複数のＲＳＡコンピューティングタスクは、オペランドレジスタの最大語長以下になるように、いくつかの異なる語長を組み合わせることにより、同時に処理される。
2021501406.tif 000002
【特許請求の範囲】
【請求項１】
複数のビットサイズのコンピューティングタスクを処理するためのコンピューティングデバイスであって、
直列に結合されている複数のｘビットシフトレジスタであって、前記複数のｘビットシフトレジスタはゲートされて、ｘビットシフトレジスタの出力値が、ゲーティング信号に応答して、次のレジスタの出力またはコントローラの出力へ導かれ、前記次のレジスタの出力が直列な次のｘビットシフトレジスタに結合される、複数のｘビットシフトレジスタと、
複数のｘビットオペランドセグメントを有する第１のｎビットオペランドレジスタと、
複数のｘビットオペランドセグメントを有する第２のｎビットオペランドレジスタと、
第１および第２のｎビットオペランドレジスタにおける複数のｘビットオペランドセグメントに結合されている複数のモジュラー乗算器であって、それぞれのモジュラー乗算器は、第１のオペランドレジスタのｘビットオペランドセグメント、および第２のオペランドレジスタの対応するｘビットオペランドセグメントに結合されている、複数のモジュラー乗算器と、
複数のｘビットシフトレジスタと、第１のｎビットオペランドレジスタと、第２のｎビットオペランドレジスタと、複数のモジュラー乗算器とに結合されているコントローラと
を備え、
前記コントローラは、
ｙビットを有する第１のタスク、およびｚビットを有する第２のタスクを受信し、
前記ｙビットの第１のタスクを第１の複数のｘビットセグメントへと分割し、前記ｚビットの第２のタスクを第２の複数のｘビットセグメントへと分割し、
前記第１の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第１のグループにおける対応するｘビットシフトレジスタへとロードされるように、前記第１の複数のｘビットセグメントを前記複数のｘビットシフトレジスタのシフトレジスタの第１のグループへとロードし、前記第２の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第２のグループにおける対応するｘビットシフトレジスタへとロードされるように、前記第２の複数のｘビットセグメントを複数のｘビットシフトレジスタのシフトレジスタの第２のグループへとロードする
ように構成される、コンピューティングデバイス。
【請求項２】
前記コントローラは、シフトレジスタの前記第１のグループが連続的に接続されてシフトレジスタの前記第１のグループの最後のシフトレジスタのみが前記コントローラへ出力されるように第１の数のゲーティング信号を設定し、およびシフトレジスタの前記第２のグループが連続的に接続されてシフトレジスタの前記第２のグループの最後のシフトレジスタのみが前記コントローラへ出力されるように第２の数のゲーティング信号を設定するようにさらに構成される、請求項１のコンピューティングデバイス。
【請求項３】
前記コントローラは、シフトレジスタの前記第１のグループにおける前記第１の複数のｘビットセグメント、およびシフトレジスタの前記第２のグループにおける前記第２の複数のｘビットセグメントをシフトするようにさらに構成される、請求項２のコンピューティングデバイス。
【請求項４】
前記コントローラは、シフトレジスタの前記第１のグループからの最後のシフトレジスタの出力を第１および第２のオペランドレジスタへとロードし、シフトレジスタの前記第２のグループからの最後のシフトレジスタの出力を前記第１および第２のオペランドレジスタへとロードするようにさらに構成される、請求項３のコンピューティングデバイス。
【請求項５】
前記コントローラは、乗算信号を前記複数のモジュラー乗算器へ出力して、それぞれのモジュラー乗算器が、第１のオペランドレジスタからのｘビットセグメントを第２のオペランドレジスタからの対応するｘビットセグメントと掛け合わせる、請求項４のコンピューティングデバイス。
【請求項６】
前記コントローラに結合されるレジスタファイルをさらに備え、前記レジスタファイルは、基数、指数、モジュラス、およびコンピューティングタスクの中間結果を格納するように構成される、請求項４のコンピューティングデバイス。
【請求項７】
ｎビットは４０９６ビットを含み、ｘビットは５１２ビットを含む、請求項４のコンピューティングデバイス。
【請求項８】
複数のビットサイズのコンピューティングタスクを処理するコンピュータデバイスを動作させる方法であって、
ｙビットを有する第１のタスク、およびｚビットを有する第２のタスクを受信するステップと、
ｙビットの第１のタスクを第１の複数のｘビットセグメントへと分割し、ｚビットの第２のタスクを第２の複数のｘビットセグメントへと分割するステップと、
前記第１の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第１のグループにおける対応するｘビットシフトレジスタへとロードされるように、第１の複数のｘビットセグメントを複数のｘビットシフトレジスタのシフトレジスタの第１のグループへとロードし、前記第２の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第２のグループにおける対応するｘビットシフトレジスタへとロードされるように、第２の複数のｘビットセグメントを複数のｘビットシフトレジスタのシフトレジスタの第２のグループへとロードするステップと
を含む方法。
【請求項９】
シフトレジスタの前記第１のグループが連続的に接続されてシフトレジスタの前記第１のグループの最後のシフトレジスタのみがコントローラへ出力されるように第１の数のゲーティング信号を設定し、およびシフトレジスタの前記第２のグループが連続的に接続されてシフトレジスタの前記第２のグループの最後のシフトレジスタのみが前記コントローラへ出力されるように第２の数のゲーティング信号を設定するステップをさらに備える、請求項８の方法。
【請求項１０】
シフトレジスタの前記第１のグループにおける前記第１の複数のｘビットセグメント、およびシフトレジスタの前記第２のグループにおける前記第２の複数のｘビットセグメントをシフトするステップをさらに備える、請求項９の方法。
【請求項１１】
シフトレジスタの前記第１のグループからの最後のシフトレジスタの出力を第１および第２のオペランドレジスタへとロードし、シフトレジスタの前記第２のグループからの最後のシフトレジスタの出力を前記第１および第２のオペランドレジスタへとロードするステップをさらに備える、請求項１０の方法。
【請求項１２】
乗算信号を複数のモジュラー乗算器へ出力して、それぞれのモジュラー乗算器が、前記第１のオペランドレジスタからのｘビットセグメントを前記第２のオペランドレジスタからの対応するｘビットセグメントと掛け合わせるステップをさらに備える、請求項１１の方法。
【請求項１３】
基数、指数、モジュラス、およびｘビットセグメントを乗算することから生じるコンピューティングタスクの中間結果を格納するステップをさらに備える、請求項１２の方法。
【請求項１４】
ｎビットは４０９６ビットを含み、ｘビットは５１２ビットを含む、請求項１２の方法。
【請求項１５】
プログラム命令を埋め込んだ非一時的なコンピュータ可読記憶媒体であって、前記プログラム命令は、プロセッサによって実行されるときに、前記プロセッサに、コンピューティングデバイスを動作させる方法を実行させ、前記方法は、
ｙビットを有する第１のタスク、およびｚビットを有する第２のタスクを受信するステップと、
前記ｙビットの第１のタスクを第１の複数のｘビットセグメントへと分割し、前記ｚビットの第２のタスクを第２の複数のｘビットセグメントへと分割するステップと、
前記第１の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第１のグループにおける対応するｘビットシフトレジスタへとロードされるように、前記第１の複数のｘビットセグメントを複数のｘビットシフトレジスタのシフトレジスタの第１のグループへとロードし、前記第２の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第２のグループにおける対応するｘビットシフトレジスタへとロードされるように、第２の複数のｘビットセグメントを複数のｘビットシフトレジスタのシフトレジスタの第２のグループへとロードするステップと
を含む、非一時的なコンピュータ可読記憶媒体。
【請求項１６】
前記方法は、シフトレジスタの前記第１のグループが連続的に接続されてシフトレジスタの前記第１のグループの最後のシフトレジスタのみがコントローラへ出力されるように第１の数のゲーティング信号を設定し、およびシフトレジスタの前記第２のグループが連続的に接続されてシフトレジスタの前記第２のグループの最後のシフトレジスタのみが前記コントローラへ出力されるように第２の数のゲーティング信号を設定するステップをさらに備える、請求項１５の非一時的なコンピュータ可読記憶媒体。
【請求項１７】
前記方法は、シフトレジスタの前記第１のグループにおける前記第１の複数のｘビットセグメント、およびシフトレジスタの前記第２のグループにおける前記第２の複数のｘビットセグメントをシフトするステップをさらに備える、請求項１６の非一時的なコンピュータ可読記憶媒体。
【請求項１８】
シフトレジスタの前記第１のグループからの最後のシフトレジスタの出力を第１および第２のオペランドレジスタへとロードし、シフトレジスタの前記第２のグループからの最後のシフトレジスタの出力を前記第１および第２のオペランドレジスタへとロードするステップをさらに備える、請求項１７の非一時的なコンピュータ可読記憶媒体。
【請求項１９】
乗算信号を複数のモジュラー乗算器へ出力して、それぞれのモジュラー乗算器が、前記第１のオペランドレジスタからのｘビットセグメントを前記第２のオペランドレジスタからの対応するｘビットセグメントと掛け合わせるステップをさらに備える、請求項１８の非一時的なコンピュータ可読記憶媒体。
【請求項２０】
ｎビットは４０９６ビットを含み、ｘビットは５１２ビットを含む、請求項１８の非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2017年10月25日に出願された中国特許出願第201711015972.8号の優先権を主張し、この中国特許出願は、その全体が参照によって本明細書に組み込まれている。
【０００２】
本出願は、データ処理に関し、詳細には、タスク処理方法、デバイス、およびシステムに関する。
【背景技術】
【０００３】
ＲＳＡは、既存のネットワーク通信（ＨＴＴＰＳなど）において広く適用されている重要な非対称署名／暗号化アルゴリズムである。ＲＳＡの暗号化および復号パフォーマンスを確実にするために、対応するアクセラレーションユニットが、モジュラー二乗（二乗およびモジュロ）並びにモジュラー乗算（乗算およびモジュロ）という２つの主要な算術演算をそれぞれ実施するために一般に使用される。ＲＳＡの主要な算術プロセスは、反復計算のために２つの算術ユニットを使用することである。処理のシーケンスは、入力指数を変換することを通じて得られる。
【０００４】
ハードウェアアクセラレーションユニットは、計算集約的なＲＳＡ演算がＣＰＵから独立して実行されることを可能にし、それによって、ＣＰＵは、プロトコルスタックおよびオペレーティングシステムに関連したさらに多くの要求を取り扱うことが可能となる。ハードウェアアクセラレーションソリューションにおいては、一般的な方法は、全ての基数、指数、およびモジュラス値をハードウェアアクセラレーションユニット内に構成し、次いでコンピューティングタスクをアンロードすることである。ＲＳＡ−４０９６、ＲＳＡ−２０４８、およびＲＳＡ−１０２４などの異なるモードでのＲＳＡコンピューティングタスクをサポートするために、ハードウェア論理回路の再構築設計、リソース再利用、および並列タスク計算などの問題が、緊急に対処される必要がある重要な技術的ポイントになる。
【０００５】
異なる語長のＲＳＡコンピューティングタスクに関しては、ＲＳＡ−４０９６、ＲＳＡ−２０４８、およびＲＳＡ−１０２４という３つの一般的な語長が、ＲＳＡ−４０９６べき剰余モジュールを設計するための例として使用されることが可能である。ＲＳＡ−２０４８およびＲＳＡ−１０２４という２つのモードに関しては、オペランドの高位ビットがゼロをパディングされ、次いでＲＳＡ−４０９６のモジュールは、依然として計算のために使用される。このアプローチは、それぞれの語長でのコンピューティングタスクが、可能な限り高いスループットで達成され得ることを確実にするが、高位ゼロパディング演算に起因して、多くのリソースが浪費される。ＲＳＡを実施するためのハードウェアは、以下、ＲＳＡ演算モジュールと呼ばれる。
【０００６】
図１は、従来のＲＳＡ演算モジュール１００を示すブロック図である。図１において示されているように、ＲＳＡ演算モジュール１００は、べき剰余全体の反復プロセスにおける正しい制御シーケンスを生成するコントローラ１１０を含む。モジュール１００はまた、指数シフタ１１２と、コンピューティングタスクからの基数、指数、モジュラス、およびその他の中間結果を格納するレジスタファイル１１４とを含む。
【０００７】
加えて、モジュール１００はまた、モジュラー乗算器の２つの入力ファクタをゲートするオペランドレジスタｏｐＡ  １１６ＡおよびオペランドレジスタｏｐＢ  １１６Ｂと、モジュラー乗算器１１８とを含む。モジュラー乗算器１１８は、コア算術ユニットであり、べき剰余の基本的なコンピューティングユニットとみなされることが可能である。（モジュラー乗算器のモジュラスも、レジスタファイルからのものであり、それは、図においてマークされていない。）コントローラ１１０は、指数シフタのデータ状態に従ってモジュラー乗算ユニットの入力オペランドｏｐＡおよびｏｐＢを設定し、反復を用いて一連のモジュラー乗算演算を達成し、それぞれの演算の結果を更新する。
【０００８】
このソリューションの不利な点は、入力オペランドｏｐＡおよびｏｐＢのビット幅が特定のハードウェア設計に関して固定されることであるということが前述の構造から理解されることが可能である。その一方で、べき剰余演算の１つのセットのみが一度に達成されることが可能であるので、ハードウェア実施態様は一般に、サポートされる最大ＲＳＡビット幅に従ってインスタンス化され、それは、リソースが浪費される結果と、その他のビット幅（最大ＲＳＡビット幅に満たないビット幅）を必要とするさらに時間効率の低いＲＳＡ計算とをもたらす。
【０００９】
例えば、この方法を使用して実施されるＲＳＡ−４０９６演算モジュールは、ＲＳＡ−２０４８コンピューティングタスクが実行される場合には、高位ゼロパディングを必要とし、それは、コンピューティングリソースの半分のみを実際に使用する。１つのＲＳＡ−２０４８コンピューティングタスクを完了するための時間がＴとして示される場合には、Ｎ個のＲＳＡ−２０４８コンピューティングタスクのために必要とされる時間は、Ｎ*Ｔである。
【００１０】
従って、従来技術においては、ＲＳＡを実施するためのハードウェアは、一度にべき剰余演算の１つのセットを実行することのみが可能であり、またＲＳＡによってサポートされる最大ビット幅に従って計算を実行することが可能であり、その結果、小さなビット幅を伴うＲＳＡ演算中に高位ゼロパディング演算が必要となり、それは、コンピューティングリソースの浪費および低いコンピューティング効率につながる。
【００１１】
現在のところ、従来技術においてはタスク処理が異なる語長に基づいて実行されてコンピューティングリソースの浪費をもたらすという問題に対処するための効果的なソリューションは提案されていない。
【発明の概要】
【００１２】
本出願は、複数のビットサイズのコンピューティングタスクを処理するためのコンピューティングデバイスを提供する。このコンピューティングデバイスは、直列に結合されている複数のｘビットシフトレジスタを含む。複数のｘビットシフトレジスタがゲートされ、それによって、ｘビットシフトレジスタの出力値が、ゲーティング信号に応答して、次のレジスタの出力またはコントローラの出力へ導かれ得る。次のレジスタの出力は、直列な次のｘビットシフトレジスタに結合される。このコンピューティングデバイスはまた、複数のｘビットオペランドセグメントを有する第１のｎビットオペランドレジスタと、複数のｘビットオペランドセグメントを有する第２のｎビットオペランドレジスタとを含む。このコンピューティングデバイスは、第１および第２のｎビットオペランドレジスタにおける複数のｘビットオペランドセグメントに結合されている複数のモジュラー乗算器をさらに含み、それによって、それぞれのモジュラー乗算器は、第１のオペランドレジスタのｘビットオペランドセグメント、および第２のオペランドレジスタの対応するｘビットオペランドセグメントに結合されている。加えて、このコンピューティングデバイスは、複数のｘビットシフトレジスタと、第１のｎビットオペランドレジスタと、第２のｎビットオペランドレジスタと、複数のモジュラー乗算器とに結合されているコントローラを含む。コントローラは、ｙビットを有する第１のタスク、およびｚビットを有する第２のタスクを受信し、ｙビットの第１のタスクを第１の複数のｘビットセグメントへと分割し、ｚビットの第２のタスクを第２の複数のｘビットセグメントへと分割するように構成される。コントローラは、第１の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第１のグループにおける対応するｘビットシフトレジスタへとロードされるように、第１の複数のｘビットセグメントを複数のｘビットシフトレジスタのシフトレジスタの第１のグループへとさらにロードように構成され、第２の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第２のグループにおける対応するｘビットシフトレジスタへとロードされるように、第２の複数のｘビットセグメントを複数のｘビットシフトレジスタのシフトレジスタの第２のグループへとさらにロードするように構成される。
【００１３】
本出願はまた、複数のビットサイズのコンピューティングタスクを処理するようにコンピュータデバイスを動作させる方法を提供する。この方法は、ｙビットを有する第１のタスク、およびｚビットを有する第２のタスクを受信するステップと、ｙビットの第１のタスクを第１の複数のｘビットセグメントへと分割し、ｚビットの第２のタスクを第２の複数のｘビットセグメントへと分割するステップとを含む。この方法はまた、第１の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第１のグループにおける対応するｘビットシフトレジスタへとロードされるように、第１の複数のｘビットセグメントを複数のｘビットシフトレジスタのシフトレジスタの第１のグループへとロードし、第２の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第２のグループにおける対応するｘビットシフトレジスタへとロードされるように、第２の複数のｘビットセグメントを複数のｘビットシフトレジスタのシフトレジスタの第２のグループへとロードするステップを含む。
【００１４】
本出願は、プログラム命令を埋め込んだ非一時的なコンピュータ可読記憶媒体をさらに含み、プログラム命令は、プロセッサによって実行されたときに、プロセッサに、複数のビットサイズのコンピューティングタスクを処理する方法を実行させる。この方法は、ｙビットを有する第１のタスク、およびｚビットを有する第２のタスクを受信するステップと、ｙビットの第１のタスクを第１の複数のｘビットセグメントへと分割し、ｚビットの第２のタスクを第２の複数のｘビットセグメントへと分割するステップとを含む。この方法はまた、第１の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第１のグループにおける対応するｘビットシフトレジスタへとロードされるように、第１の複数のｘビットセグメントを複数のｘビットシフトレジスタのシフトレジスタの第１のグループへとロードし、第２の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第２のグループにおける対応するｘビットシフトレジスタへとロードされるように、第２の複数のｘビットセグメントを複数のｘビットシフトレジスタのシフトレジスタの第２のグループへとロードするステップを含む。
【００１５】
本出願の原理が利用される例示的な実施形態を示す後述の詳細な説明および添付の図面を参照することによって、本出願の特徴および利点のよりよい理解が得られるであろう。
【図面の簡単な説明】
【００１６】
本明細書にて記述されている図面は、本出願のさらなる理解のために提供されており、本出願の一部を形成する。本出願の例示的な実施形態およびそれらの説明は、本出願を説明するためのものであり、本出願の範囲に対する不当な限定を構成するものではない。
【図１】従来のＲＳＡ演算モジュール１００を示すブロック図である。
【図２】本出願によるタスク処理システム２００の例を示すブロック図である。
【図３】本出願によるＲＳＡ演算モジュール３００の例を示すブロック図である。
【図４】本出願によるセグメント指数シフタ３１２の例を示すブロック図である。
【図５】本出願によるオペランドｏｐＡレジスタ３１６ＡおよびオペランドｏｐＢレジスタ３１６Ｂのセグメント化の例を示す図である。
【図６】本出願によるマルチステージモジュラー乗算器アレイ３１８の例を示す概略図である。
【図７】本出願によるＲＳＡ演算モジュール３００の例をさらに示す概略図である。
【図８】本出願によるタスク処理方法を実施するコンピュータ端末８００の例を示すブロック図である。
【図９Ａ】本出願によるタスク処理方法の例を示すフローチャートである。図９Ａは、タスク処理方法９００の例を示すフローチャートである。
【図９Ｂ】本出願によるタスク処理方法の例を示すフローチャートである。図９Ｂは、方法９００のステップ９１６を実施する方法９５０の例を示すフローチャートである。
【図１０】本出願によるタスク処理デバイス１０００の例を示すブロック図である。
【図１１】本出願によるコンピュータ端末１１００の例を示すブロック図である。
【発明を実施するための形態】
【００１７】
本出願のソリューションを当業者がよりよく理解することを可能にするために、以下、本出願の実施形態における図面を参照しながら、本出願の実施形態における技術的なソリューションが明確にかつ完全に記述される。記述されている実施形態は、本出願の実施形態のうちの全てというよりはむしろ、いくつかにすぎないということは明らかである。本出願における実施形態に基づいて、創造的な取り組みを行うことなく当業者によって得られるその他の全ての実施形態は、本出願の保護範囲内に収まるものとする。
【００１８】
本出願の説明および特許請求の範囲における、並びに上述の図面における「第１の」、「第２の」などの用語は、類似しているオブジェクト同士を区別するために使用されており、必ずしも特定のシーケンスまたは順序を記述するために使用されているとは限らないことが留意されるべきである。これらの数字は、適切な場合には、置き換えられることが可能であり、それによって、本明細書において記述されている本出願の実施形態は、本明細書において示されているまたは記述されている順序以外の順序で実施されることが可能であるということが理解されるべきである。
【００１９】
加えて、「ｉｎｃｌｕｄｅ（含む）」および「ｈａｖｅ（有する）」という用語、およびそれらの任意の変形は、非排他的な包含をカバーすることを意図されている。例えば、一連のステップまたはユニットを含むプロセス、方法、システム、製品、または装置は、明確に列挙されているステップまたはユニットに限定されるのではなく、明確に列挙されてはいない、またはこれらのプロセス、方法、製品、若しくはデバイスに固有のその他のステップまたはユニットを含むことが可能である。
【００２０】
ＲＳＡに関しては、ＲＳＡは、既存のネットワーク通信（ＨＴＴＰＳなど）において広く適用されている重要な非対称署名／暗号化アルゴリズムである。ＲＳＡアルゴリズムは、暗号化キーおよび復号キーを用いた非対称暗号化アルゴリズムである。暗号化キーはパブリックキーであり、復号キーはシークレットキーである。
【００２１】
図２は、本出願によるタスク処理システム２００を示すブロック図である。図２に示されているように、システム２００は、コントローラ２１０を含み、コントローラ２１０は、複数のタスクを取得し、それらの複数のタスクの演算量に従ってコンピューティングリソースをセグメント化し、セグメント化の結果に従って入力オペランドを設定する。
【００２２】
具体的には、複数のタスクは、ＲＳＡ暗号化演算におけるモジュラー乗算タスクであることが可能である。ＲＳＡ暗号化演算におけるモジュラー乗算を通じて、非対称暗号化アルゴリズムによる使用のための固定長を有するキーが得られる。例えば、タスクがＲＳＡ−２０４８である場合には、ＲＳＡ演算モジュールのタスクは、２０４８ビットの長さを有するキーを生成することである。
【００２３】
タスク処理システムが複数のタスクを並列で処理することを可能にするためには、タスクの演算量に従ってコンピューティングリソース上でセグメント化演算が実行される必要がある。コンピューティングリソースは、タスク処理のためのハードウェア装置およびストレージスペースを含むことが可能である。コンピューティングリソースをセグメント化することは、コンピューティングリソースを分割することであることが可能であり、それによって、それぞれの分割されたコンピューティングリソースは、独立してタスクを処理することが可能となる。複数のセグメント化されたコンピューティングリソースは、接続されている関係を通じて並列にまたは直列にタスク処理を実行することが可能である。
【００２４】
具体的には、異なるタイプのＲＳＡ演算モジュールは、異なる最大ビット幅をサポートする。その一方で、異なるタイプのＲＳＡ演算モジュールは、異なる数のセグメントを含み、それぞれのセグメントごとに異なるビット幅を有する。ＲＳＡ−４０９６モードの最大ビット幅を有していて最大数で８つのセグメントをサポートするＲＳＡ演算モジュールを例として使用すると、それぞれのセグメントのビット幅は５１２である。タスクが、１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクである場合には、ＲＳＡ−４０９６における４つのセグメントが、ＲＳＡ−２０４８演算を実行するために使用されることが可能であり、ＲＳＡ−４０９６における２つのセグメントが、ＲＳＡ−１０２４演算のそれぞれを実行するために使用されることが可能である。
【００２５】
図２を再び参照すると、タスク処理システム２００はまた、指数シフタ２２０を含み、指数シフタ２２０は、セグメント指数に関する複数のシフタを含む。そしてそれぞれのセグメントは、セグメント指数に関する対応する数のシフタを含む。具体的には、指数シフタに含まれているセグメント指数に関する複数のシフタは、ＲＳＡハードウェアにおけるセグメントに対応する。
【００２６】
前述のソリューションにおいては、最大数で８つのセグメントと、１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクであるタスクとをサポートするＲＳＡ−４０９６モードの最大ビット幅が、例として使用されている。コントローラによるセグメント化の結果は、ＲＳＡ−２０４８演算を実行するためにＲＳＡ−４０９６における４つのセグメントが使用され、２つのＲＳＡ−１０２４演算を実行するためにＲＳＡ−４０９６における４つのセグメントが使用されるということである。
【００２７】
前述のＲＳＡ−４０９６は、２つのオペランドｏｐＡおよびｏｐＢを有しており、それらの両方は、４０９６ビットの長さを有している。セグメント化の結果に従ってオペランドｏｐＡおよびｏｐＢを設定することは、ｏｐＡおよびｏｐＢを、５１２ビットのビット幅を有する８つのセグメントへと分割することであり得る。例えば、セグメント１からセグメント４は、タスクＲＳＡ−２０４８のオペランドを入力するために使用されることが可能であり、その一方でセグメント５からセグメント６は、タスクＲＳＡ−１０２４のオペランドを入力するために使用されることが可能であり、セグメント７からセグメント８は、その他のタスクＲＳＡ−１０２４のオペランドを入力するために使用されることが可能である。
【００２８】
さらなる例として、４つのＲＳＡ−２０４８の第１のセグメントの第１の５１２ビットセグメントが、ｏｐＡの第１の５１２ビットオペランドとして入力され、４つのＲＳＡ−２０４８の第１のセグメントの第２の５１２ビットセグメントが、ｏｐＡの第２の５１２ビットオペランドとして入力され、４つのＲＳＡ−２０４８の第１のセグメントの第３の５１２ビットセグメントが、ｏｐＡの第３の５１２ビットオペランドとして入力され、４つのＲＳＡ−２０４８の第１のセグメントの第４の５１２ビットセグメントが、ｏｐＡの第４の５１２ビットオペランドとして入力され、ＲＳＡ−１０２４の第２のセグメントの第１の５１２ビットセグメントが、ｏｐＡの第５の５１２ビットオペランドとして入力され、ＲＳＡ−１０２４の第２のセグメントの第２の５１２ビットセグメントが、ｏｐＡの第６の５１２ビットオペランドとして入力され、ＲＳＡ−１０２４の第３のセグメントの第１の５１２ビットセグメントが、ｏｐＡの第７の５１２ビットオペランドとして入力され、ＲＳＡ−１０２４の第３のセグメントの第２の５１２ビットセグメントが、ｏｐＡの第８の５１２ビットオペランドとして入力され、合計で４０９６ビットになる。
【００２９】
ＲＳＡ−２０４８コンピューティングタスクが実行される場合には、データパスにおいて２つ以上のタスクが同時に実行されることが可能であるということが前述の実施形態から理解され得る。１つのＲＳＡ−２０４８コンピューティングタスクを完了するための時間がＴである場合には、Ｎ個のＲＳＡ−２０４８コンピューティングタスクのために必要とされる時間は、Ｎ／２*Ｔである。言い換えれば、時間Ｔの間に２つのＲＳＡ−２０４８タスクが実行されることが可能であるので、それぞれのタスクは、時間Ｔ／２がかかるとみなされることが可能である。従って、効率は、従来技術におけるソリューションと比較して、ほぼ倍増される。
【００３０】
前述のソリューションにおいては、ハードウェアにおいてセグメント化演算が実行される。すなわち、コンピューティングリソースは、演算モジュールの並列再構築を達成するためのタスクの演算量を通じてセグメント化され、それによって演算モジュールは、複数のコンピューティングタスクの並列処理をサポートするためのタスクに従って、対応するコンピューティングリソースを動的に構成することが可能となる。
【００３１】
さらに、本出願は、短い語長またはハイブリッド語長などの大きな計算を必要とするコンピューティングタスクのためにコンピューティングリソースをその最大限度まで利用することが可能である。従って、従来技術においてタスク処理が異なる語長に基づいて実行されてコンピューティングリソースの浪費をもたらすという技術的な問題が解決される。
【００３２】
以下の説明は、ＲＳＡ演算モジュールを演算モジュールとして使用することによって提供される。代替実施形態として、前述のシステムは、複数のサブモジュラー乗算器をカスケードすることによって形成されるマルチステージモジュラー乗算器アレイをさらに含む。マルチステージモジュラー乗算器アレイは、セグメント化の結果に従って入力オペランドが設定された後に、それぞれのタスク上でモジュラー乗算を、対応するサブモジュラー乗算器をそれぞれ使用して実行する。オペランドは、モジュラー乗算のためのデータをマルチステージモジュラー乗算器アレイに入力するために使用される。セグメント化の結果に従ってオペランドを設定することは、セグメント化の結果に従ってオペランドをセグメント化することであり得る。
【００３３】
本出願においては、（最大数で８つのセグメントと、１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクであるタスクとをサポートする）ＲＳＡ−４０９６モードの最大ビット幅が、例として使用されている。オペランドが８つのセグメントに別々に入力された後に、８つのオペランドセグメントが、対応するサブモジュラー乗算器にそれぞれ接続されて、モジュラー乗算器の入力値としての役割を果たす。
【００３４】
例えば、セグメント１からセグメント４のオペランドに接続されているモジュラー乗算器は、タスクＲＳＡ−２０４８のオペランド上でモジュラー乗算を実行し、その一方で、セグメント５からセグメント６のオペランドに接続されているモジュラー乗算器は、タスクＲＳＡ−１０２４のオペランド上でモジュラー乗算を実行し、セグメント７からセグメント８のオペランドに接続されているモジュラー乗算器は、他方のタスクＲＳＡ−１０２４のオペランド上でモジュラー乗算を実行する。
【００３５】
代替実施形態として、前述のシステムは、それぞれのサブモジュラー乗算器の計算を通じて得られた中間結果を格納するレジスタファイルをさらに含む。具体的には、中間結果は、サブモジュラー乗算器によって反復プロセスにおいて得られて次の反復演算のために使用される結果である。その一方で、レジスタファイルはまた、タスクにおいて基数、指数、およびモジュラスを格納するように構成されている。
【００３６】
代替実施形態として、前述のコントローラは、ハードウェアの最大ビット幅およびそれぞれのセグメントの最小ビット幅に従ってセグメント指数に関するシフタの合計数を決定するようにさらに構成されている。代替実施形態として、前述のコントローラは、タスクの演算量およびそれぞれのタスクのビット幅に基づいてセグメント指数に関する複数のシフタ上でセグメント化を実行するようにさらに構成されている。セグメント化の結果は、それぞれのタスクに割り当てられたセグメントに言及し、それぞれのセグメントは、セグメント指数に関する対応する数のシフタを含む。
【００３７】
代替実施形態として、前述のタスク処理システムにおいては、任意の２つの隣接したセグメントの間における補正ゲーティング制御がＯＦＦ状態にあり、それぞれのセグメント内に含まれているセグメント指数に関するシフタ同士の間における補正ゲーティング制御がＯＮ状態にあり、線形変位を有する。代替実施形態として、前述のコントローラは、任意の２つの隣接したセグメントの間においてクロスセグメントシフティングを実行するかどうかを、そのコントローラの第１の補正ゲーティング制御信号を通じて制御するようにさらに構成されている。
【００３８】
代替実施形態として、前述のコントローラは、それぞれのタスクに割り当てられたセグメントに従って入力オペランドをセグメント化するようにさらに構成されており、セグメント化の結果に従って入力オペランドが設定された後に、入力オペランドのセグメント出力は、対応するサブモジュラー乗算器に接続される。
【００３９】
代替実施形態として、前述のコントローラは、それぞれのタスクに割り当てられたセグメントに従ってマルチステージモジュラー乗算器アレイをセグメント化するようにさらに構成されている。コントローラはまた、それぞれのタスクに対応するセグメント化サブモジュラー乗算器を決定し、それぞれのタスクに対応するセグメント化サブモジュラー乗算器を使用してモジュラー乗算をそれぞれ実行するように構成されている。
【００４０】
代替実施形態として、前述のタスク処理システムにおいては、任意の２つの隣接したセグメント化サブモジュラー乗算器の間における補正ゲーティング制御がＯＦＦ状態にある。それぞれのセグメント化サブモジュラー乗算器内に含まれているサブモジュラー乗算器同士の間における補正ゲーティング制御がＯＮ状態にあり、低バイトのサブモジュラー乗算器のキャリー結果が、オフセット補正のために高バイトのサブモジュラー乗算器へ転送される。代替実施形態として、前述のコントローラは、そのコントローラの第２の補正ゲーティング制御信号を通じて、任意のセグメント化サブモジュラー乗算器を、前のステージのモジュラー乗算のキャリータームを次のステージのモジュラー乗算のオフセットタームとして使用するように制御するようにさらに構成されている。
【００４１】
図３は、本出願によるＲＳＡ演算モジュール３００の例を示すブロック図を示す。図３において示されているように、ＲＳＡ演算モジュール３００は、べき剰余全体の反復プロセスにおける補正制御シーケンスを生成するコントローラ３１０と、セグメント指数シフタ３１２とを含む。セグメント指数シフタ３１２は、いくつかのセグメントへと均等に分割され、それぞれのセグメント内には線形シフティングが存在する。２つの隣接したセグメントの間においてクロスセグメントシフティングを実行するかどうかは、コントローラの補正ゲーティング信号に従って決定される。
【００４２】
モジュール３００は、コンピューティングタスクにおける基数、指数、モジュラス、およびその他の中間結果を格納するレジスタファイル３１４をさらに含む。加えて、モジュール３００は、２つの入力ファクタをゲートするセグメント化可能オペランドｏｐＡレジスタ３１６Ａおよびセグメント化可能オペランドｏｐＢレジスタ３１６Ｂと、複数の小型モジュラー乗算器をカスケードすることによって形成された補正ゲーティングを有するマルチステージモジュラー乗算器アレイ３１８とを含む。それぞれの小型モジュラー乗算器は、サポートされる最小セグメント長さに対応するモジュラー乗算を実行することが可能である。それぞれのファクタがセグメント化された後に、それぞれのセグメント出力は、対応するマルチステージモジュラー乗算器に接続される。
【００４３】
最小セグメント長さよりも大きいセグメント長さのモジュラー乗算を実行することが必要である場合には、対応するモジュラー乗算器がカスケードされる必要がある。セグメント化されたモジュラー乗算のそれぞれのステップにおいては、前のステージのモジュラー乗算のキャリータームが、次のステージのモジュラー乗算のオフセットターム（すなわち、補正ターム）として使用される必要があり、それは、コントローラの補正ゲーティング信号によって制御される。（モジュラー乗算器のモジュラスも、レジスタファイルからのものであり、それは、図においてマークされておらず、同様の様式でセグメント化が実行される。）
図４は、本出願によるセグメント指数シフタ３１２の例を示すブロック図を示す。図４において示されているように、指数シフタ３１２は、ｎ個のユニット指数シフタＥＳ１〜ＥＳｎを含む。最後の指数シフタＥＳｎを除いて、指数シフタＥＳ１〜ＥＳｎ−１は、複数のゲーティング信号ＧＳ１〜ＧＳｎ−１のうちの対応するゲーティング信号ＧＳに応答する次のシフタゲート３２０およびコントローラゲート３２２を含む。演算においては、ゲーティング信号ＧＳの第１のロジック状態は、次のシフタゲート３２０を通じて出力値を渡し、その一方でゲーティング信号ＧＳの第２のロジック状態は、コントローラゲート３２２を通じて出力値を渡す。
【００４４】
補正ゲーティング信号ＧＳは、クロスセグメントシフティングを実行するかどうかを示すために使用される。補正ゲーティング信号ＧＳは、そこに割り当てられているコンピューティングタスクに従ってコントローラ３１０によって生成される。補正ゲーティング信号ＧＳは、それぞれのシフタＥＳの接続状態を示すためにコンピューティングタスクに従ってそれぞれのユニット指数シフタＥＳへ送信されることが可能である。
【００４５】
従って、この例においては、８つの５１２ビットシフトレジスタが直列に結合され、それらの５１２ビットシフトレジスタのうちの７つがゲートされ、それによって５１２ビットシフトレジスタの出力値が、ゲーティング信号ＧＳに応答して次のレジスタの出力またはコントローラの出力へ導かれることが可能となる。次のレジスタの出力は、直列な次の５１２ビットシフトレジスタに結合され、その一方でコントローラの出力は、コントローラ３１０に接続される。
【００４６】
図５は、本出願によるオペランドｏｐＡレジスタ３１６ＡおよびオペランドｏｐＢレジスタ３１６Ｂのセグメント化の例を示す図を示す。図５において示されているように、オペランドｏｐＡおよびｏｐＢレジスタ３１６Ａおよび３１６Ｂは両方とも、ｎ個のセグメントＳ１〜Ｓｎへと分割される。この例においては、オペランドｏｐＡレジスタ３１６ＡおよびオペランドｏｐＢレジスタ３１６Ｂは、８つの５１２ビットセグメントへと分割される。加えて、マルチステージモジュラー乗算器アレイに接続されることになるセグメントは、コントローラの補正ゲーティング信号を通じて制御される。
【００４７】
図６は、本出願によるマルチステージモジュラー乗算器アレイ３１８の例を示す概略図である。図６において示されているように、マルチステージモジュラー乗算器アレイ３１８は、ｎ個のモジュラー乗算器ＭＭ１〜ＭＭｎを含む。それぞれのモジュラー乗算器ＭＭは、ｏｐＡまたはｏｐＢの対応するセグメントをそのモジュラー乗算器のオペランドとして受信し、コントローラによって送信された制御信号ＣＳ１〜ＣＳｎを受信する。
【００４８】
従って、この例においては、８つのモジュラー乗算器ＭＭ１〜ＭＭ８が、第１および第２の４０９６ビットオペランドｏｐＡレジスタ３１６ＡおよびオペランドｏｐＢレジスタ３１６Ｂにおける８つの５１２ビットオペランドセグメントＳ１〜Ｓ８に結合され、それによってそれぞれのモジュラー乗算器ＭＭは、第１のオペランドｏｐＡレジスタ３１６Ａにおける５１２ビットオペランドセグメントＳ、並びに第２のオペランドｏｐＢレジスタ３１６Ｂにおける対応する５１２ビットオペランドセグメントＳに結合される。
【００４９】
モジュラー乗算器ＭＭは、補正ゲーティング信号ＧＳ１〜ＧＳｎ−１を通じて互いに結合される。前のステージのモジュラー乗算器ＭＭと次のステージのモジュラー乗算器ＭＭとの間における補正ゲーティング信号ＧＳ１〜ＧＳｎ−１が、次のシフタゲート３２０を通じて出力値を渡すためにオンにされた場合には、前のステージのモジュラー乗算器ＭＭのキャリータームが、演算のカスケーディングを実施するために次のステージのモジュラー乗算器ＭＭの補正タームとして使用される。
【００５０】
具体的には、コントローラは、タスクの演算長さに従ってモジュラー乗算器同士の間における補正ゲーティング信号ＧＳを決定する。タスクの演算長さが、１つのモジュラー乗算器によってサポートされる最大演算長さに満たない場合には、モジュラー乗算器同士がカスケードされることなく、１つのモジュラー乗算器がモジュラー乗算のために使用されることが可能である。
【００５１】
タスクの演算長さが、１つのモジュラー乗算器によってサポートされる最大演算長さよりも大きく、かつ２つのモジュラー乗算器によってサポートされる最大演算長さに満たない場合には、２つのモジュラー乗算器がカスケードされることが可能である。すなわち、２つのモジュラー乗算器は、それらの２つのモジュラー乗算器の間における補正ゲーティング信号を通じてカスケードされ、それによって前のステージのモジュラー乗算器のキャリータームが、演算中に次のステージのモジュラー乗算器の補正タームとして使用されることが可能となる。
【００５２】
コントローラは、そこに割り当てられているコンピューティングタスクのサイズに従って、対応するセグメント化演算を実行し、セグメント化の状況に従って、対応する補正ゲーティングユニットを制御する。それぞれのセグメントに関して、コントローラは、このセグメントのモジュラー乗算ユニットの入力オペランドｏｐＡおよびｏｐＢを、対応する指数シフタのデータ状態に従って設定し、反復を用いて一連のモジュラー乗算演算を達成し、それぞれの演算の結果を更新する。
【００５３】
例えば、ＲＳＡの動的な再構築の方法（ここでは、ハードウェアが、ＲＳＡ−４０９６モードの最大ビット幅および最大数で８つのセグメントをサポートし（それぞれのセグメントの最小ビット幅は、４０９６／８＝５１２である）、１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクの並列計算を実行する）が、最小のセグメントを順にＳ１〜Ｓ８としてマークすることによって開始する。このステップにおいては、最小のセグメントは、ユニットセグメント指数に関するシフタであり、ｏｐＡおよびｏｐＢの最小のセグメントでもある。同様に、セグメント指数に関するシフタが８つのセグメントＳ１〜Ｓ８へと分割された場合には、それによってマルチステージモジュラー乗算器アレイ３１８も、８つのモジュラー乗算器を含む。
【００５４】
次にコントローラは、そこに割り当てられているコンピューティングタスクに従って動的なセグメント化を再び実行する。新たな動的なセグメントが、Ｕ１（Ｓ１〜Ｓ４）、Ｕ２（Ｓ５〜Ｓ６）、およびＵ３（Ｓ７〜Ｓ８）としてマークされ、そこでＲＳＡ−２０４８コンピューティングタスクは、Ｕ１に割り当てられ、その他の２つのＲＳＡ−１０２４コンピューティングタスクは、Ｕ２およびＵ３に割り当てられる。
【００５５】
前述のステップにおいては、１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクが並列に実行される必要があり、かつそれぞれのセグメントが、５１２ビットの長さを有するタスクを実行することが可能であるので、それぞれのセグメントは、１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクをそれぞれ実行するために使用される３つの部分へと分割されることが可能である。１つのＲＳＡ−２０４８タスクは、４つのセグメントによって実行される必要があり、その一方で２つのＲＳＡ−１０２４タスクのそれぞれは、２つのセグメントによって実行される必要があり、それは、前述のグループ化を引き起こす。
【００５６】
これに続いて、コントローラは、セグメント指数に関するシフタを、Ｕ１、Ｕ２およびＵ３に対応する分散フォーマットにおいて構成し、Ｓ１〜Ｓ４の間における、Ｓ５とＳ６との間における、およびＳ７とＳ８との間における補正ゲーティング制御がオンにされる。従ってシフトレジスタは、３つのセグメント内で連続的なシフティングを実行する。その上、３つのセグメントが互いに影響を与えないことを確実にするために、Ｓ４とＳ５との間における、およびＳ６とＳ７との間における補正ゲーティング制御がオフにされる。セグメント指数に関するシフタの概略図が、図４において示されている。
【００５７】
動的なセグメント化の結果を得た後に、コントローラは、動的なセグメント化の結果に従ってセグメント化を実行するように補正ゲーティング信号を制御する。Ｓ１からＳ４が１つのセグメントを形成し、Ｓ５からＳ６が１つのセグメントを形成し、Ｓ７からＳ８が１つのセグメントを形成するので、コントローラは、Ｓ１とＳ２との間における、Ｓ２とＳ３との間における、Ｓ３とＳ４との間における、Ｓ５とＳ６との間における、およびＳ７とＳ８との間における補正ゲーティング制御をオンにして、Ｓ４とＳ５との間における、およびＳ６とＳ７との間における補正ゲーティング制御をオフにするように制御を行うことが可能である。
【００５８】
この後に続くのは、オペランドのセグメント化である。最初のオペランドｏｐＡレジスタ３１６ＡおよびオペランドｏｐＢレジスタ３１６Ｂは、両方とも４０９６ビットであり（ＲＳＡ−４０９６に対応し）、セグメントＵ１、Ｕ２およびＵ３に従って２０４８ビット、１０２４ビットおよび１０２４ビットの３つのセグメントへと分割される。オペランド同士は、図５に関連して論じられているように１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクの並列実行を可能にするようにセグメント化される。
【００５９】
次は、マルチステージモジュラー乗算器のセグメント化である。８つのモジュラー乗算器が、４つのモジュラー乗算器、２つのモジュラー乗算器、および２つのモジュラー乗算器という３つの部分へと順に分割され、それらはそれぞれ、セグメントＵ１、Ｕ２およびＵ３に対応する。それぞれのセグメント内では、ユニットモジュラー乗算器同士の間における補正ゲーティング制御がオンにされ、低バイトのキャリー結果が、オフセット補正のために高バイトのモジュラー乗算器へ転送される。
【００６０】
すなわち、それぞれのセグメント内の様々なユニットモジュラー乗算器が組み合わされて、対応するセグメントサイズを処理することが可能な「セグメンタルモジュラー乗算器」になる。異なるセグメントの間における対応する補正ゲーティング制御がオフにされ、それによって、セグメンタルモジュラー乗算器同士は互いに影響を与えない。補正ゲーティング制御を伴うマルチステージモジュラー乗算器アレイの概略図が、図６に示されている。
【００６１】
図７は、本出願によるＲＳＡ演算モジュール３００の例をさらに示す概略図である。図７において示されているように、（図４において示されている）指数シフタ３１２は、ｎ個のユニット指数シフタＥＳ１〜ＥＳｎを含む。補正ゲーティング制御が、ｎ個のユニット指数シフタＥＳ１〜ＥＳｎの間に含まれている。ｎ個のユニット指数シフタＥＳ１〜ＥＳｎは、タスクに従ってセグメント化される。同じセグメントにおける指数シフタＥＳに関する補正ゲーティング信号ＧＳがオンにされ、その一方で異なるセグメントにおける指数シフタＥＳに関する補正ゲーティング信号ＧＳはオフにされる。補正ゲーティング信号ＧＳ１〜ＧＳｎ−１が、コントローラ３１０によって出力される。
【００６２】
（図５に関連して示されている）オペランドｏｐＡレジスタ３１６ＡおよびオペランドｏｐＢレジスタ３１６Ｂは、ｎ個のセグメントＳ１〜Ｓｎへと分割される。オペランドｏｐＡレジスタ３１６ＡおよびオペランドｏｐＢレジスタ３１６Ｂのそれぞれのセグメントは、対応するサブモジュラー乗算器ＭＭに接続されている。（図６に関連して示されている）サブモジュラー乗算器ＭＭも、タスクに従ってセグメント化される。同じセグメンタルモジュラー乗算器に属する隣接したサブモジュラー乗算器ＭＭ同士の間における補正ゲーティング信号ＧＳがオンにされ、その一方で異なるセグメンタルモジュラー乗算器ＭＭに属する隣接したサブモジュラー乗算器ＭＭ同士の間における補正ゲーティング信号ＧＳはオフにされる。補正ゲーティング信号ＧＳ１〜ＧＳｎが、コントローラ３１０によって出力される。
【００６３】
図８は、本出願によるタスク処理方法を実施するコンピュータ端末８００（またはモバイル装置）の例を示すブロック図である。図８において示されているように、コンピュータ端末８００（またはモバイル装置８００）は、（図において８１０Ａ、８１０Ｂ、．．．．．．、８１０ｎとして示されている）１つまたは複数のプロセッサ８１０を含む（プロセッサ８１０は、マイクロプロセッサ（ＭＣＵ）またはプログラマブルロジックデバイス（ＦＰＧＡ）などの処理デバイスを含むことが可能であるが、それらには限定されない）。コンピュータ端末８００はまた、データを格納するためのメモリ８１２と、通信機能を実施するためのネットワークコントローラ８１４と、プロセッサ８１０、メモリ８１２、およびネットワークコントローラ８１４をともに結合するバス８１６とを含む。
【００６４】
加えて、コンピュータ端末８００は、ディスプレイ、入力／出力インターフェース（Ｉ／Ｏインターフェース）、ユニバーサルシリアルバス（ＵＳＢ）ポート（Ｉ／Ｏインターフェースのためのポートのうちの１つとして含まれることが可能である）、ネットワークインターフェース、電源、および／またはカメラを含むことも可能である。図８において示されている構造は、例示的なものにすぎず、前述の電子デバイスの構造を限定するものではないということを当技術分野における通常の技術者なら理解することが可能である。例えば、コンピュータ端末８００は、図８において示されているコンポーネントよりも多くの若しくは少ないコンポーネントを含むこと、または図８において示されている構成とは異なる構成を有することも可能である。
【００６５】
上述されている１つまたは複数のプロセッサ８１０および／またはその他のデータ処理回路は、本明細書においては「データ処理回路」と一般的に呼ばれることが可能である。データ処理回路は、ソフトウェア、ハードウェア、ファームウェア、またはその他の任意の組合せとして全体的にまたは部分的に具体化されることが可能である。加えて、データ処理回路は、単一の独立した処理モジュールであることが可能であり、またはコンピュータ端末８００（若しくはモバイル装置８００）におけるその他の要素のうちのいずれかへと全体的に若しくは部分的に組み合わされることが可能である。本出願のこの実施形態に含まれているように、データ処理回路は、制御（例えば、インターフェースに接続される可変抵抗端子パスの選択のための制御）を行うためのプロセッサとして使用される。
【００６６】
メモリ８１２は、本出願のこの実施形態におけるタスク処理方法に対応するプログラム命令／データストレージ装置など、アプリケーションソフトウェアのソフトウェアプログラムおよびモジュールを格納するように構成されることが可能である。プロセッサ８１０は、メモリ８１２に格納されているソフトウェアプログラムおよびモジュールを実行して、様々な機能アプリケーションおよびデータ処理を実行する、すなわち、上述のタスク処理方法を実施する。
【００６７】
メモリ８１２は、高速ランダムアクセスメモリを含むことが可能であり、１つまたは複数の磁気ストレージデバイス、フラッシュメモリ、またはその他の不揮発性ソリッドステートメモリなどの不揮発性メモリを含むことも可能である。いくつかの例においては、メモリ８１２は、プロセッサ８１０に対してリモートに配置されているメモリをさらに含むことが可能である。リモートメモリは、ネットワークを介してコンピュータ端末８００に接続されることが可能である。そのようなネットワークの例は、インターネット、イントラネット、ローカルエリアネットワーク、モバイル通信ネットワーク、およびそれらの組合せを含むが、それらには限定されない。
【００６８】
ネットワークコントローラ８１４は、ネットワークを介してデータを受信または送信するように構成される。ネットワークの上述の具体例は、コンピュータ端末８００の通信プロバイダによって提供される無線ネットワークを含むことが可能である。一例においては、ネットワークコントローラ８１４は、基地局を通じてその他のネットワーク装置に接続されることが可能なネットワークインターフェースコントローラ（ＮＩＣ）を含み、それによって、それはインターネットと通信することが可能となる。一例においては、ネットワークコントローラ８１４は、インターネットとワイヤレスに通信するための無線周波数（ＲＦ）モジュールを含むことが可能である。
【００６９】
ディスプレイは、例えば、タッチスクリーン液晶ディスプレイ（ＬＣＤ）であることが可能であり、液晶ディスプレイは、ユーザがコンピュータ端末８００（またはモバイル装置８００）のユーザインターフェースと対話することを可能にすることができる。いくつかの代替実施形態においては、上述の図８において示されているコンピュータ端末８００（またはモバイル装置８００）は、ハードウェア要素（回路を含む）、ソフトウェア要素（コンピュータ可読媒体上に格納されているコンピュータコードを含む）、またはハードウェア要素とソフトウェア要素との組合せを含むことが可能である。図８は、１つの特定の具体例にすぎず、上述のコンピュータ装置（またはモバイル装置）において存在し得るコンポーネントのタイプを示すものであることが留意されるべきである。
【００７０】
演算においては、プロセッサ８１０は、ｙビット（例えば、２０４８ビット）を有する第１のタスク、およびｚビット（例えば、１０２４ビット）を有する第２のタスクを受信し、ｙビットの第１のタスクを第１の複数のｘビット（例えば、５１２ビット）セグメントへと、およびｚビットの第２のタスクを第２の複数のｘビットセグメントへと分割する。プロセッサはまた、第１の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第１のグループにおける対応するｘビットシフトレジスタへとロードされるように第１の複数のｘビットセグメントを複数のｘビットシフトレジスタのシフトレジスタの第１のグループへとロードする。プロセッサはまた、第２の複数のｘビットセグメントのそれぞれのｘビットセグメントがシフトレジスタの第２のグループにおける対応するｘビットシフトレジスタへとロードされるように第２の複数のｘビットセグメントを複数のｘビットシフトレジスタのシフトレジスタの第２のグループへとロードする。
【００７１】
加えて、プロセッサ８１０は、シフトレジスタの第１のグループが連続的に接続されてシフトレジスタの第１のグループの最後のシフトレジスタのみがコントローラへ出力されるように第１の数のゲーティング信号を、およびシフトレジスタの第２のグループが連続的に接続されてシフトレジスタの第２のグループの最後のシフトレジスタのみがコントローラへ出力されるように第２の数のゲーティング信号を設定する。
【００７２】
さらに、プロセッサ８１０は、シフトレジスタの第１のグループにおける第１の複数のｘビットセグメント、およびシフトレジスタの第２のグループにおける第２の複数のｘビットセグメントをシフトし、シフトレジスタの第１のグループからの最後のシフトレジスタの出力を第１および第２のオペランドレジスタへと、並びにシフトレジスタの第２のグループからの最後のシフトレジスタの出力を第１および第２のオペランドレジスタへとロードする。プロセッサ８１０はまた、制御信号を複数のモジュラー乗算器へ出力し、それにより、それぞれのモジュラー乗算器は、第１のオペランドレジスタからのｘビットセグメントを第２のオペランドレジスタからの対応するｘビットセグメントと掛け合わせる。
【００７３】
記述されているステップは、コンピュータ実行可能命令のセットなどのコンピュータシステムにおいて実行されることが可能である。論理的な順序が示されているが、いくつかのケースにおいて、記述されているステップは、本明細書において記述されている順序とは異なる順序で実行されることが可能である。ステップは、モバイル端末、コンピュータ端末、または類似のコンピューティングデバイスにおいて実行されることが可能である。
【００７４】
図９Ａおよび図９Ｂは、本出願によるタスク処理方法の例を示すフローチャートを示す。図９Ａは、タスク処理方法９００の例を示すフローチャートを示し、一方、図９Ｂは、方法９００のステップ９１６を実施する方法９５０の例を示すフローチャートを示す。方法９００および９５０は、コンピュータ端末８００上で実施されることが可能である。
【００７５】
図９Ａにおいて示されているように、方法９００は、複数のタスクを取得することによって９１０において開始する。具体的には、それらのタスクは、ＲＳＡ暗号化演算におけるモジュラー乗算タスクであることが可能である。非対称暗号化アルゴリズムによる使用のための固定長を有するキーが、ＲＳＡ暗号化演算におけるモジュラー乗算を通じて得られる。例えば、タスクがＲＳＡ−２０４８である場合には、ＲＳＡ演算モジュールのタスクは、２０４８ビットの長さを有するキーを生成することである。
【００７６】
これに続いて、方法９００は、９１２へ進んで、複数のタスクの演算量に従ってコンピューティングリソースをセグメント化する。コンピューティングリソースは、ＲＳＡ演算モジュールの指数シフタとすることができる。セグメント化の結果は、タスクに対して１つまたは複数の指数シフタをマッチさせることであり得る。
【００７７】
方法９００は、９１４へ進んで、セグメント化の結果に従って入力オペランドを設定する。オペランドは、モジュラー乗算のためのデータをマルチステージモジュラー乗算器アレイに入力するために使用される。セグメント化の結果に従ってオペランドを設定することは、セグメント化の結果に従ってオペランドをセグメント化することであり得る。最大数で８つのセグメントと、１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクであるタスクとをサポートするＲＳＡ−４０９６モードの最大ビット幅が、例として使用されている。
【００７８】
前述のＲＳＡ−４０９６は、オペランドｏｐＡレジスタ３１６ＡおよびオペランドｏｐＢレジスタ３１６Ｂを有しており、それらの両方は、４０９６ビットの長さを有している。コントローラによって指数シフタをセグメント化したセグメント化の結果は、ＲＳＡ−２０４８演算を実行するためにＲＳＡ−４０９６における４つのセグメントが使用され、２つのＲＳＡ−１０２４演算を実行するためにＲＳＡ−４０９６における４つのセグメントが使用されるということである。セグメント化の結果に従ってレジスタ３１６ＡにおけるオペランドｏｐＡおよびレジスタ３１６ＢにおけるｏｐＢを設定することは、ｏｐＡおよびｏｐＢを、それぞれ２０４８ビット、１０２４ビット、および１０２４ビットの長さを有する３つのセグメントへと分割することであり得る。２０４８ビットの長さを有するｏｐＡおよびｏｐＢは、ＲＳＡ−２０４８演算を実行するために使用され、その一方で、１０２４ビットの長さを有する２つのｏｐＡおよびｏｐＢは、２つのＲＳＡ−１０２４の演算を実行するためにそれぞれ使用される。それらの演算は、モジュラー乗算である。
【００７９】
ＲＳＡ−２０４８コンピューティングタスクが２つのＲＳＡ−１０２４タスクとともに実行される場合には、データパスにおいて３つのタスクが同時に実行され得ることが前述の例から理解されることが可能である。１つのＲＳＡ−２０４８コンピューティングタスクを完了するための時間がＴである場合には、Ｎ個のＲＳＡ−２０４８コンピューティングタスクのために必要とされる時間は、Ｎ／２*Ｔであり、従って効率は、従来技術におけるソリューションと比較して、ほぼ倍増される。
【００８０】
前述のソリューションにおいては、ハードウェアにおいてセグメント化演算が実行される。すなわち、コンピューティングリソースは、演算モジュールの並列再構築を達成するためのタスクの演算量を通じてセグメント化され、それによって演算モジュールは、複数のコンピューティングタスクの並列処理をサポートするためのタスクに従って、対応するコンピューティングリソースを動的に構成することが可能となる。
【００８１】
さらに、本出願は、短い語長またはハイブリッド語長などの大きな計算を必要とするコンピューティングタスクのためにコンピューティングリソースをその最大限度まで利用することができる。従って、従来技術においてはタスク処理が異なる語長に基づいて実行されてコンピューティングリソースの浪費をもたらすという技術的な問題が解決される。
【００８２】
図９Ａを再び参照すると、方法９００は、９１４から９１６へ任意選択で進んで、入力オペランドの設定結果に従って、対応するサブモジュラー乗算器を、それぞれ各タスク上でモジュラー乗算を実行するように制御することが可能であり、サブモジュラー乗算器同士がカスケードされて、マルチステージモジュラー乗算器を形成する。
【００８３】
前述のステップにおいては、ＲＳＡ演算モジュールは、複数のサブモジュラー乗算器を含む。ＲＳＡ−４０９６演算モジュールを引き続き例として使用すると、ＲＳＡ−４０９６演算モジュールは、８つのサブモジュラー乗算器を含み、それぞれのモジュラー乗算器は、５１２ビットのオペランドを用いてモジュラー乗算を実行することが可能である。１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクを並列で実行するために、４つのサブモジュラー乗算器がカスケードされて、タスクＲＳＡ−２０４８のオペランド上でモジュラー乗算を実行するための１つのマルチステージモジュラー乗算器を形成することが可能である。残りの４つのサブモジュラー乗算器がペアでカスケードされて、２つのタスクＲＳＡ−１０２４のオペランド上でモジュラー乗算をそれぞれ実行するための２つのマルチステージモジュラー乗算器を得ることが可能である。
【００８４】
代替実施形態として、図９Ａを再び参照すると、方法９００は、ハードウェアの最大ビット幅およびそれぞれのセグメントの最小ビット幅に従ってセグメント指数に関するシフタの合計数を決定することによって９２０において開始することが可能であり、次いで９１０へ進む。前述のステップにおいては、ハードウェアは、ＲＳＡ演算モジュールであることが可能であり、ＲＳＡ演算モジュールの最大ビット幅は、ＲＳＡ演算モジュールによって一度に実行されることになるタスクの長さであることが可能であり、それぞれのセグメントの最小ビット幅は、セグメント指数に関するそれぞれのシフタによって実行されることになるタスクの長さであることが可能である。
【００８５】
代替実施形態においては、ＲＳＡ−４０９６コンピューティングモジュールを例として使用すると、サポートされる最大ビット幅は４０９６ビットであり、それぞれのセグメントの最小ビット幅は５１２ビットである。従って、ＲＳＡ演算モジュールのセグメント指数に関するシフタの合計数、すなわち、ＲＳＡ演算モジュールに含まれるセグメント指数に関するユニットシフタの数は８である。
【００８６】
代替実施形態として、セグメント化は、タスクの演算量およびそれぞれのタスクのビット幅に基づいてセグメント指数に関する複数のシフタ上で実行される。セグメント化の結果は、それぞれのタスクに割り当てられたセグメントに言及し、それぞれのセグメントは、セグメント指数に関する対応する数のシフタを含む。前述のステップにおいては、それぞれのセグメントは、セグメント指数に関する対応する数のシフタを含み、その対応する数は、タスクの長さに対応する数を指す。セグメント指数に関するそれぞれのシフタのビット幅に対するタスクの長さの比率は、タスクに対応するセグメント指数に関するシフタの数である。
【００８７】
タスク処理システムが複数のタスクを並列に処理することを可能にするために、セグメント化演算がタスクの演算量に従って実行される必要がある。具体的には、異なるタイプのＲＳＡ演算モジュールは、異なる最大ビット幅をサポートする。その一方で、異なるタイプのＲＳＡ演算モジュールは、異なる数のセグメントを含み、それぞれのセグメントごとに異なるビット幅を有する。
【００８８】
ＲＳＡ−４０９６モードの最大ビット幅を有していて最大数で８つのセグメントをサポートするＲＳＡ演算モジュールを引き続き例として使用すると、セグメント指数に関するそれぞれのシフタによってサポートされるビット幅は５１２である。タスクが、１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクである場合には、ＲＳＡ−４０９６における４つのセグメントが、ＲＳＡ−２０４８演算を実行するために使用されることが可能であり、ＲＳＡ−４０９６における２つのセグメントが、ＲＳＡ−１０２４演算を実行するために使用されることが可能である。
【００８９】
具体的には、ＲＳＡ演算モジュールの８つのセグメントがそれぞれ、Ｓ１からＳ８として示される。１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクのセグメント化の結果がそれぞれ、Ｕ１、Ｕ２、およびＵ３を伴って示される。結果として、セグメント化の結果は、Ｕ１がＳ１からＳ４に対応し、Ｕ２がＳ５からＳ６に対応し、Ｕ３がＳ７からＳ８に対応するということである。すなわち、ＲＳＡ−２０４８コンピューティングタスクは、Ｕ１に割り当てられ、その他の２つのＲＳＡ−１０２４コンピューティングタスクは、Ｕ２およびＵ３に割り当てられる。
【００９０】
代替実施形態として、任意の２つの隣接したセグメントの間における補正ゲーティング制御がＯＦＦ状態にあり、それぞれのセグメント内に含まれているセグメント指数に関するシフタ同士の間における補正ゲーティング制御がＯＮ状態にあり、線形変位を有する。
【００９１】
代替実施形態においては、図４において示されているシフタ３１２を再び参照すると、（１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクを並列に実行する最大数で８つのセグメントをサポートするＲＳＡ−４０９６モードでのＲＳＡ演算モジュールを引き続き例として使用すると、）Ｕ１におけるシフタＥＳ１からＥＳ４がタスクＲＳＡ−２０４８に割り当てられ、かつＥＳ１からＥＳ４におけるセグメント指数に関するそれぞれのシフタＥＳのビット幅が５１２ビットであるので、タスクＲＳＡ−２０４８を実行するためにはＥＳ１からＥＳ４がカスケードされなければならない。
【００９２】
すなわち、シフタＥＳ１〜ＥＳ４の間における補正ゲーティング制御がＯＮ状態にあり、これは、５１２ビットのセグメント指数に関する４つのシフタが、補正ゲーティング信号同士をカスケードすることを通じて２０４８ビットのセグメント指数に関する１つのシフタを構成することに相当する。同様に、Ｕ２におけるシフタＥＳ５およびＥＳ６の間における補正ゲーティング制御もＯＮ状態にあり、Ｕ３におけるシフタＥＳ７およびＥＳ８の間における補正ゲーティング制御もＯＮ状態にあり、これらは、２つのＲＳＡ−１０２４タスクを実行するためにそれぞれ使用される。
【００９３】
しかしながら、Ｕ１、Ｕ２およびＵ３は並列に稼働するので、Ｕ１、Ｕ２およびＵ３の間における補正ゲーティング制御はＯＦＦ状態にある。すなわち、シフタＥＳ４およびＥＳ５の間における補正ゲーティング制御がＯＦＦ状態にあり、シフタＥＳ６およびＥＳ７の間における補正ゲーティング制御がＯＦＦ状態にある。
【００９４】
代替実施形態として、任意の２つの隣接したセグメントの間においてクロスセグメントシフティングを実行するかどうかは、コントローラの第１の補正ゲーティング信号を通じて制御される。具体的には、異なるセグメントに属するセグメント指数に関するシフタ同士は、異なるタスクを並列に実行するように構成されている。従って、異なるセグメントに属するセグメント指数に関する２つの隣接したシフタの間における補正ゲーティング制御はＯＦＦ状態にある。
【００９５】
しかしながら、１つのセグメントにおけるセグメント指数に関する任意の２つの隣接したシフタの間における補正ゲーティング制御がＯＮ状態にある。すなわち、１つのセグメントにおけるセグメント指数に関する複数のシフタが、同じタスクを共同で実行するように構成されている。タスクがセグメントにおけるセグメント指数に関する複数のシフタによって共同で実行される必要がある場合には、第１の補正ゲーティング信号が、セグメント指数に関する２つの隣接したシフタの間においてクロスセグメントシフティングを実行するかどうかを制御する。
【００９６】
代替実施形態として、セグメント化の結果に従って入力オペランドを設定することは、それぞれのタスクに割り当てられたセグメントに従って入力オペランドをセグメント化することを含み、セグメント化の結果に従って入力オペランドが設定された後に、入力オペランドのセグメント出力は、対応するサブモジュラー乗算器に接続される。
【００９７】
前述のステップにおいては、それぞれのタスクに割り当てられたセグメントに従って入力オペランドをセグメント化することは、セグメント化の結果に従ってオペランドをセグメント化することである。最初に、オペランドが、セグメント指数に関するシフタのビット幅に従ってセグメント化されて、図５において示されているセグメントＳ１からセグメントＳｎを得る。セグメントＳ１からセグメントＳｎのそれぞれは、セグメント指数に関するシフタと同じビット幅を有し、セグメント化されたオペランドは、対応するサブモジュラー乗算器にそれぞれ接続される。
【００９８】
オペランドは、モジュラー乗算のためのデータをマルチステージモジュラー乗算器に入力するために使用される。セグメント化の結果に従ってオペランドを設定することは、セグメント化の結果に従ってオペランドをセグメント化することであり得る。代替実施形態においては、最大数で８つのセグメントと、１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクであるタスクとをサポートするＲＳＡ−４０９６モードの最大ビット幅を引き続き例として使用すると、ＲＳＡ−４０９６は、２つのオペランドｏｐＡおよびｏｐＢを有しており、それらの両方は、４０９６ビットの長さを有している。
【００９９】
コントローラからのセグメント化の結果は、ＲＳＡ−２０４８演算を実行するためにＲＳＡ−４０９６における４つのセグメントが使用され、ＲＳＡ−１０２４演算を実行するためにＲＳＡ−４０９６における２つのセグメントが使用されるということである。セグメント化の結果に従ってオペランドｏｐＡおよびｏｐＢを設定することは、ｏｐＡおよびｏｐＢを、５１２ビットのビット幅を有する８つのセグメントへと分割することであり得る。
【０１００】
セグメントＳ１からセグメントＳ４は、タスクＲＳＡ−２０４８のオペランドを入力するために使用され、その一方でセグメントＳ５からセグメントＳ６は、タスクＲＳＡ−１０２４のオペランドを入力するために使用され、セグメントＳ７からセグメントＳ８は、その他のタスクＲＳＡ−１０２４のオペランドを入力するために使用される。８つのオペランドが次いで、対応するサブモジュラー乗算器にそれぞれ接続されて、モジュラー乗算器の入力値としての役割を果たす。
【０１０１】
図９Ｂは、本出願によるステップ９１６を実施する方法９５０の例を示すフローチャートを示す。図９Ｂにおいて示されているように、方法９５０は、それぞれのタスクに割り当てられたセグメントに従ってマルチステージモジュラー乗算器をセグメント化し、それぞれのタスクに対応するセグメント化サブモジュラー乗算器を決定することによって９５２において開始する。
【０１０２】
前述のステップにおいては、ＲＳＡ演算モジュールのマルチステージモジュラー乗算器は、複数のサブモジュラー乗算器を含む。それぞれのタスクに割り当てられたセグメントに従ってマルチステージモジュラー乗算器をセグメント化することは、それぞれのタスクに対応する１つまたは複数のサブモジュラー乗算器を決定することである。タスクに対応するセグメント化サブモジュラー乗算器が複数のサブモジュラー乗算器を含む場合には、セグメント化サブモジュラー乗算器におけるそれらの複数のサブモジュラー乗算器がカスケードされる。
【０１０３】
次に方法９５０は９５４に進み、それぞれのタスクに対応するセグメント化サブモジュラー乗算器を使用してモジュラー乗算をそれぞれ実行する。代替実施形態においては、マルチステージモジュラー乗算器のセグメント化が、最大数で８つのセグメントと、１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクであるタスクとをサポートするＲＳＡ−４０９６モードの最大ビット幅を引き続き例として使用して記述される。
【０１０４】
この実施形態においては、セグメントＳ１からセグメントＳ４は、タスクＲＳＡ−２０４８のオペランドを入力するために使用され、その一方でセグメントＳ５からセグメントＳ６は、タスクＲＳＡ−１０２４のオペランドを入力するために使用され、セグメントＳ７からセグメントＳ８は、その他のタスクＲＳＡ−１０２４のオペランドを入力するために使用される。８つのオペランドが次いで、対応するサブモジュラー乗算器にそれぞれ接続されて、モジュラー乗算器の入力値としての役割を果たす。
【０１０５】
その上、オペランドセグメントＳ１からＳ４に接続されているサブモジュラー乗算器は、タスクＲＳＡ−２０４８のオペランド上で演算を実行するように構成されている１つのセグメント化サブモジュラー乗算器を構成し、その一方で、オペランドセグメントＳ５からＳ６に接続されているサブモジュラー乗算器は、１つのタスクＲＳＡ−１０２４のオペランド上で演算を実行するように構成されている１つのセグメント化サブモジュラー乗算器を構成し、オペランドセグメントＳ７からＳ８に接続されているサブモジュラー乗算器は、その他のタスクＲＳＡ−１０２４のオペランド上で演算を実行するように構成されている１つのセグメント化サブモジュラー乗算器を構成する。
【０１０６】
代替実施形態として、任意の２つの隣接したセグメント化サブモジュラー乗算器の間における補正ゲーティング制御がＯＦＦ状態にあり、その一方で、それぞれのセグメント化サブモジュラー乗算器内に含まれているサブモジュラー乗算器同士の間における補正ゲーティング制御がＯＮ状態にある。低バイトのサブモジュラー乗算器のキャリー結果が、オフセット補正のために高バイトのサブモジュラー乗算器へ転送される。
【０１０７】
サブモジュラー乗算器同士の間における補正ゲーティング制御がオンにされた場合には、低バイトのキャリー結果が、オフセット補正のために高バイトのモジュラー乗算器へ転送される。すなわち、それぞれのセグメント内の複数のサブモジュラー乗算器が組み合わされて、対応するタスクを処理することが可能なセグメンタルモジュラー乗算器になる。異なるセグメントの間における隣接した補正ゲーティング制御がオフにされる。すなわち、セグメンタルモジュラー乗算器同士は、互いに影響を与えることなくタスクを並列に実行することが可能である。
【０１０８】
代替実施形態においては、図６を参照すると、２つの隣接したサブモジュラー乗算器ごとに補正ゲーティング制御信号が存在する。複数のサブモジュラー乗算器の間における補正ゲーティング制御信号がＯＮ状態にある場合には、低バイトのサブモジュラー乗算器が、オフセットタームを高バイトのサブモジュラー乗算器へ送信することが可能である。複数のサブモジュラー乗算器は、１つのタスクを処理するように構成されているセグメンタルモジュラー乗算器を構成する。複数のサブモジュラー乗算器の間における補正ゲーティング制御信号がＯＦＦ状態にある場合には、複数のサブモジュラー乗算器は、異なるタスクを処理するようにそれぞれ構成される。
【０１０９】
最大数で８つのセグメントと、１つのＲＳＡ−２０４８タスクおよび２つのＲＳＡ−１０２４タスクであるタスクとをサポートするＲＳＡ−４０９６モードの最大ビット幅を引き続き例として使用すると、オペランドセグメントＳ１からＳ４に接続されているサブモジュラー乗算器同士の間における補正ゲーティング制御はＯＮ状態にあり、その一方で、オペランドセグメントＳ５からＳ６に接続されているサブモジュラー乗算器同士の間における補正ゲーティング制御はＯＮ状態にあり、オペランドセグメントＳ７からＳ８に接続されているサブモジュラー乗算器同士の間における補正ゲーティング制御はＯＮ状態にある。セグメンタルモジュラー乗算器同士の間における補正ゲーティング制御はＯＦＦ状態にある。
【０１１０】
代替実施形態として、任意のセグメント化サブモジュラー乗算器が、コントローラの第２の補正ゲーティング制御信号を通じて、前のステージのモジュラー乗算のキャリータームを次のステージのモジュラー乗算のオフセットタームとして使用するように制御される。具体的には、任意のセグメンタルモジュラー乗算器において、前のステージのモジュラー乗算のキャリータームが、そのセグメンタルモジュラー乗算器における低バイトのサブモジュラー乗算器によって生成されたキャリータームである。
【０１１１】
そのキャリータームは、セグメンタルモジュラー乗算器における高バイトのサブモジュラー乗算器のオフセットタームである次のステージのモジュラー乗算のオフセットタームとしての役割を果たすことになる。言い換えれば、高バイトのサブモジュラー乗算器は、第２の補正ゲーティング制御信号を通じて、低バイトのサブモジュラー乗算器によってそのモジュラー乗算のオフセットタームとしての役割を果たすために生成されたモジュラー乗算のキャリータームを取得する。
【０１１２】
前述のステップにおいては、１つのセグメンタルモジュラー乗算器に含まれている複数のサブモジュラー乗算器は、同時に１つのモジュラー乗算タスクを実行する必要があるので、同じビット幅を有する複数のサブモジュラー乗算器は、異なるビットのモジュラー乗算を実行することを必要とされる。その上、低位ビットがモジュラー乗算において高位ビットへのキャリーを実行する必要があるので、低バイトのサブモジュラー乗算器は、高バイトのサブモジュラー乗算器についてのオフセットタームとしてのキャリータームを生成することを必要とされる。さらに、それぞれのセグメンタルモジュラー乗算器の出力結果が得られた後には、それぞれのセグメンタルモジュラー乗算器の出力結果を接合して最終結果を得ることも必要である。
【０１１３】
前述のソリューションにおいては、毎回の分散されたタスクの語長に従ったデータパスの動的な構成を可能にするために補正制御モジュールが加えられており、それにより、ストレージスペースを追加で構成することなくマルチタスク並列処理が実施される。さらに、短い語長のＲＳＡモードでのコンピューティングタスクに関しては、高位ゼロパディングなどの演算がスキップされることが可能である。このソリューションは、スペースおよび時間の両方の次元において非常に高いリソース利用度を達成するだけでなく、高いスループットも確実にする。様々な語長のモードのコンピューティングタスク同士の激しい分散のケースにおいて、ほぼ１００％のリソース利用効率が達成されることが可能である。
【０１１４】
それぞれの前述の方法実施形態を簡潔に記述するために、全ての方法実施形態は、一連のアクションの組合せとして表現されているが、本出願は、記述されているアクションのシーケンスによって限定されるものではないということを当業者ならわかるはずである。特定のステップ同士を、異なるシーケンスに適用することができ、または本出願に従って同時に実行することができる。第２に、本明細書において記述されている全ての実施形態は、好適な実施形態に属するということも当業者なら分かるはずである。関連したアクションおよびモジュールは、本出願にとって必ずしも必要とされるとは限らない。
【０１１５】
実施形態の説明を通じて、それらの実施形態による方法は、ソフトウェアに加えて、必要な一般的なハードウェアプラットフォームを用いて実施されることが可能であるということを当業者なら明確に理解することが可能である。もちろん、ハードウェアが使用されることも可能であるが、多くのケースにおいては、前者がよりよい実施態様である。そのような理解に基づいて、本出願の技術的なソリューションの本質、または従来技術に対し寄与をなす部分は、ソフトウェア製品の形態で具体化されることが可能である。コンピュータソフトウェア製品は、記憶媒体（例えば、ＲＯＭ／ＲＡＭ、磁気ディスク、または光ディスク）に格納され、本出願の実施形態において記述されている方法を実行するように端末装置（それは、モバイル電話、コンピュータ、サーバ、ネットワーク装置などであり得る）に指示するためのいくつかの命令を含む。
【０１１６】
図１０は、本出願によるタスク処理デバイス１０００の例を示すブロック図を示す。図１０に示されているように、デバイス１０００は、複数のタスクを取得する取得モジュール１０１０と、複数のタスクの演算量に従ってコンピューティングリソースをセグメント化するセグメント化モジュール１０１２と、セグメント化の結果に従って入力オペランドを設定する設定モジュール１０１４とを含む。取得モジュール１０１０、セグメント化モジュール１０１２および設定モジュール１０１４は、方法９００におけるステップ９１０からステップ９１６に対応する。
【０１１７】
代替実施形態として、前述のデバイスは、入力オペランドの設定結果に従って、対応するサブモジュラー乗算器を、それぞれ各タスク上でモジュラー乗算を実行するように制御するように構成されている制御モジュールをさらに含み、サブモジュラー乗算器同士がカスケードされて、マルチステージモジュラー乗算器を形成する。
【０１１８】
代替実施形態として、前述のデバイスは、決定モジュールをさらに含み、決定モジュールは、複数のタスクが取得される前にハードウェアの最大ビット幅およびそれぞれのセグメントの最小ビット幅に従ってセグメント指数に関するシフタの合計数を決定し、タスクの演算量に従ってセグメント化演算を実行し、セグメント化の結果が得られる。
【０１１９】
代替実施形態として、セグメント化は、タスクの演算量およびそれぞれのタスクのビット幅に基づいてセグメント指数に関する複数のシフタ上で実行される。セグメント化の結果は、それぞれのタスクに割り当てられたセグメントに言及し、それぞれのセグメントは、セグメント指数に関する対応する数のシフタを含む。
【０１２０】
代替実施形態として、任意の２つの隣接したセグメントの間における補正ゲーティング制御がＯＦＦ状態にあり、それぞれのセグメント内に含まれているセグメント指数に関するシフタ同士の間における補正ゲーティング制御がＯＮ状態にあり、線形変位を有する。代替実施形態として、任意の２つの隣接したセグメントの間においてクロスセグメントシフティングを実行するかどうかは、コントローラの第１の補正ゲーティング制御信号を通じて制御される。
【０１２１】
代替実施形態として、設定モジュールは、それぞれのタスクに割り当てられたセグメントに従って入力オペランドをセグメント化するセグメント化サブモジュールを含む。セグメント化の結果に従って入力オペランドが設定された後に、入力オペランドのセグメント出力は、対応するサブモジュラー乗算器に接続される。
【０１２２】
代替実施形態として、制御モジュールは、決定サブモジュールを含み、決定サブモジュールは、それぞれのタスクに割り当てられたセグメントに従ってマルチステージモジュラー乗算器をセグメント化し、それぞれのタスクに対応するセグメント化サブモジュラー乗算器を決定する。加えて、コンピューティングモジュールは、それぞれのタスクに対応するセグメント化サブモジュラー乗算器を使用してモジュラー乗算を実行する。
【０１２３】
代替実施形態として、任意の２つの隣接したセグメント化サブモジュラー乗算器の間における補正ゲーティング制御がＯＦＦ状態にあり、その一方で、それぞれのセグメント化サブモジュラー乗算器内に含まれているサブモジュラー乗算器同士の間における補正ゲーティング制御がＯＮ状態にある。低バイトのサブモジュラー乗算器のキャリー結果が、オフセット補正のために高バイトのサブモジュラー乗算器へ転送される。任意のセグメント化サブモジュラー乗算器が、コントローラの第２の補正ゲーティング制御信号を通じて、前のステージのモジュラー乗算のキャリータームを次のステージのモジュラー乗算のオフセットタームとして使用するように制御される。
【０１２４】
本出願のこの実施形態は、プロセッサと、プロセッサに接続されているメモリとを含む端末を提供することが可能であり、メモリは、複数のタスクを取得する処理ステップと、複数のタスクの演算量に従ってコンピューティングリソースをセグメント化する処理ステップと、セグメント化の結果に従って入力オペランドを設定する処理ステップとを処理するためのプロセッサ命令を提供するように構成されている。
【０１２５】
本出願のこの実施形態は、コンピュータ端末を提供することが可能であり、このコンピュータ端末は、コンピュータ端末群における任意のコンピュータ端末装置であってよい。あるいは、この実施形態においては、前述のコンピュータ端末は、モバイル端末などの端末装置と置き換えられてもよい。
【０１２６】
あるいは、この実施形態においては、前述のコンピュータ端末は、コンピュータネットワークの複数のネットワーク装置における少なくとも１つのネットワーク装置に配置されてもよい。この実施形態においては、前述のコンピュータ端末は、複数のタスクを取得するステップ、複数のタスクの演算量に従ってコンピューティングリソースをセグメント化するステップ、およびセグメント化の結果に従って入力オペランドを設定するステップというタスク処理方法におけるステップのプログラムコードを実行することが可能である。
【０１２７】
図１１は、本出願によるコンピュータ端末１１００の例を示すブロック図である。図１１において示されているように、コンピュータ端末１１００は、メモリ１１１０と、プロセッサ１１１２（複数のプロセッサが交互に使用されることが可能である）と、周辺インターフェース１１１４とを含む。メモリ１１１０は、本出願の実施形態におけるタスク処理方法およびデバイスに対応するプログラム命令／モジュールなどのソフトウェアプログラムおよびモジュールを格納するように構成されることが可能である。
【０１２８】
プロセッサ１１１２は、メモリに格納されているソフトウェアプログラムおよびモジュールを稼働させて、様々な機能アプリケーションおよびデータ処理を実行する、すなわち、前述のタスク処理方法を実施する。メモリ１１１０は、高速ランダムアクセスメモリを含むことが可能であり、１つまたは複数の磁気ストレージデバイス、フラッシュメモリ、またはその他の不揮発性ソリッドステートメモリなどの不揮発性メモリを含むことも可能である。いくつかの例においては、メモリ１１１０は、プロセッサに対してリモートに配置されているメモリをさらに含むことが可能である。リモートメモリは、ネットワークを介してコンピュータ端末Ａに接続されることが可能である。そのようなネットワークの例は、インターネット、イントラネット、ローカルエリアネットワーク、モバイル通信ネットワーク、およびそれらの組合せを含むが、それらには限定されない。
【０１２９】
プロセッサ１１１２は、伝送デバイスを通じてメモリに格納されている情報およびアプリケーションを呼び出して、複数のタスクを取得するステップと、複数のタスクの演算量に従ってコンピューティングリソースをセグメント化するステップと、セグメント化の結果に従って入力オペランドを設定するステップとを実行することが可能である。あるいは、プロセッサ１１１２は、入力オペランドの設定結果に従って、対応するサブモジュラー乗算器を、それぞれ各タスク上でモジュラー乗算を実行するように制御するステップのプログラムコードをさらに実行することが可能であり、サブモジュラー乗算器同士がカスケードされて、マルチステージモジュラー乗算器を形成する。
【０１３０】
あるいは、プロセッサ１１１２は、複数のタスクを取得するステップの前に、以下のステップのプログラムコードをさらに実行することができ、この方法は、ハードウェアの最大ビット幅およびそれぞれのセグメントの最小ビット幅に従ってセグメント指数に関するシフタの合計数を決定するステップをさらに含む。あるいは、プロセッサ１１１２は、タスクの演算量およびそれぞれのタスクのビット幅に基づいてセグメント指数に関する複数のシフタ上でセグメント化を実行するステップのプログラムコードをさらに実行することができる。セグメント化の結果は、それぞれのタスクに割り当てられたセグメントに言及し、それぞれのセグメントは、セグメント指数に関する対応する数のシフタを含む。
【０１３１】
あるいは、プロセッサ１１１２は、以下のステップのプログラムコード、すなわち、任意の２つの隣接したセグメントの間における補正ゲーティング制御がＯＦＦ状態にあり、それぞれのセグメント内に含まれているセグメント指数に関するシフタ同士の間における補正ゲーティング制御がＯＮ状態にあり、線形変位を有することをさらに実行することができる。あるいは、プロセッサ１１１２は、任意の２つの隣接したセグメントの間においてクロスセグメントシフティングを実行するかどうかを、コントローラの第１の補正ゲーティング制御信号を通じて制御するステップのプログラムコードをさらに実行することができる。
【０１３２】
あるいは、プロセッサ１１１２は、以下のステップのプログラムコード、すなわち、セグメント化の結果に従って入力オペランドを設定するステップは、それぞれのタスクに割り当てられたセグメントに従って入力オペランドをセグメント化するステップを含み、セグメント化の結果に従って入力オペランドが設定された後に、入力オペランドのセグメント出力は、対応するサブモジュラー乗算器に接続されることをさらに実行することが可能である。
【０１３３】
あるいは、プロセッサ１１１２は、それぞれのタスクに割り当てられたセグメントに従ってマルチステージモジュラー乗算器をセグメント化するステップと、それぞれのタスクに対応するセグメント化サブモジュラー乗算器を決定するステップと、およびそれぞれのタスクに対応するセグメント化サブモジュラー乗算器を使用してモジュラー乗算をそれぞれ実行するステップとのプログラムコードをさらに実行することが可能である。
【０１３４】
あるいは、プロセッサ１１１２は、以下のステップのプログラムコード、すなわち、任意の２つの隣接したセグメント化サブモジュラー乗算器の間における補正ゲーティング制御がＯＦＦ状態にあり、その一方で、それぞれのセグメント化サブモジュラー乗算器内に含まれているサブモジュラー乗算器同士の間における補正ゲーティング制御がＯＮ状態にあることをさらに実行することが可能である。低バイトのサブモジュラー乗算器のキャリー結果が、オフセット補正のために高バイトのサブモジュラー乗算器へ転送される。
【０１３５】
あるいは、プロセッサ１１１２は、コントローラの第２の補正ゲーティング制御信号を通じて、任意のセグメント化サブモジュラー乗算器を、前のステージのモジュラー乗算のキャリータームを次のステージのモジュラー乗算のオフセットタームとして使用するように制御するステップのプログラムコードをさらに実行することが可能である。
【０１３６】
本出願のこの実施形態においては、タスク処理ソリューションが提供される。ハードウェア上でセグメント化演算が実行される。すなわち、コンピューティングリソースは、ＲＳＡ演算モジュールの並列再構築を達成するためのタスクの演算量を通じてセグメント化され、それによってＲＳＡ演算モジュールは、複数のコンピューティングタスクの並列処理をサポートするためのタスクに従って、対応するコンピューティングリソースを動的に構成することが可能となる。さらに、本出願は、短い語長またはハイブリッド語長などの大きな計算を必要とするコンピューティングタスクのためにコンピューティングリソースをその最大限度まで利用することが可能である。従って、従来技術においてはタスク処理が異なる語長に基づいて実行されてコンピューティングリソースの浪費をもたらすという技術的な問題が解決される。
【０１３７】
図１１において示されている構造は、例示的なものにすぎないということ、およびコンピュータ端末１１００は、スマートフォン（例えば、Ａｎｄｒｏｉｄ電話若しくはｉＯＳ電話）、タブレットコンピュータ、パームコンピュータ、モバイルインターネットデバイス（ＭＩＤ）、またはＰＡＤなどの端末装置であり得ることを当技術分野における通常の技術者なら理解することが可能である。図１１は、前述の電子デバイスの構造を限定するものではない。例えば、コンピュータ端末１１００は、図１１において示されているコンポーネントよりも多くの若しくは少ないコンポーネント（例えば、ネットワークインターフェース若しくはディスプレイデバイス）を含むこと、または図１１において示されている構成とは異なる構成を有することも可能である。
【０１３８】
上述の実施形態における様々な方法におけるステップのうちの全てまたはいくつかは、端末装置に関連したハードウェアに指示するプログラムを通じて完了され得ることを当技術分野における通常の技術者なら理解することが可能である。プログラムは、コンピュータ可読記憶媒体に格納されることが可能である。記憶媒体は、フラッシュディスク、ＲＯＭ、ＲＡＭ、磁気ディスク、または光ディスクを含むことが可能である。
【０１３９】
本出願の代替実施形態においては、記憶媒体が提供される。あるいは、この実施形態においては、前述の記憶媒体は、前述の方法におけるタスク処理によって実行されるプログラムコードを格納するように構成されることが可能である。あるいは、この実施形態においては、記憶媒体は、コンピュータネットワークのコンピュータ端末群における任意のコンピュータ端末に配置されること、またはモバイル端末群における任意のモバイル端末に配置されることが可能である。
【０１４０】
あるいは、この実施形態においては、記憶媒体は、複数のタスクを取得するステップと、複数のタスクの演算量に従ってコンピューティングリソースをセグメント化するステップと、セグメント化の結果に従って入力オペランドを設定するステップとを実行するためのプログラムコードを格納するように構成されている。本出願の前述の実施形態のシーケンス番号は、説明のためのものにすぎず、それらの実施形態の利点または不利な点を示すものではない。本出願の前述の実施形態においては、それぞれの実施形態の説明は、それ自体の重点を有している。ある実施形態において詳細に記述されていない部分に関しては、その他の実施形態の関連する説明に対して参照が行われ得る
本出願によって提供されているいくつかの実施形態においては、開示されている技術的な内容は、その他の様式で実施されることも可能であるということが理解されるべきである。上述されているデバイス実施形態は、例示的なものにすぎない。例えば、ユニットの区分は、論理的な機能区分にすぎない。複数のユニット若しくはコンポーネントが組み合わされ得る、若しくは別のシステムへと統合され得る、またはいくつかの機能が無視され得る、若しくは実行され得ない、といったように実際の実施におけるその他の区分が存在することも可能である。加えて、表示されているまたは論じられている相互結合、直接的な結合、または通信接続は、いくつかのインターフェース、ユニット同士またはモジュール同士の間接的な結合または通信接続を通じた電気的なまたはその他の形態とすることが可能である。
【０１４１】
別々の部分として記述されているユニットは、物理的に別々であっても、または物理的に別々でなくてもよい。ユニットとして示されている部分は、物理的なユニットであっても、または物理的なユニットでなくてもよく、それらの物理的なユニットは、１つの場所に配置されても、または複数のネットワークユニット上に分散されてもよい。この実施形態のソリューションの目的は、実際の要件に従ってユニットのうちの一部または全部を選択することによって達成され得る。
【０１４２】
加えて、本出願のそれぞれの実施形態におけるそれぞれの機能ユニットは、１つの処理ユニットにおいて統合されてもよく、またはそれぞれのユニットが物理的に独立して存在してもよく、または２つ以上のユニットが１つのユニットにおいて統合されてもよい。統合されたユニットは、ハードウェアの形態で実装されてもよく、ソフトウェア機能ユニットの形態で実装されてもよい。
【０１４３】
統合されたユニットは、ソフトウェア機能ユニットの形態で実装されて、独立した製品として販売または使用される場合には、コンピュータ可読記憶媒体に格納されることが可能である。そのような理解に基づいて、本出願の技術的なソリューションの本質、または従来技術に対し寄与をなす部分、またはこの技術的なソリューションの全て若しくは一部は、ソフトウェア製品の形態で具体化されることが可能である。
【０１４４】
そのコンピュータソフトウェア製品は、記憶媒体に格納され、本出願の様々な実施形態において記述されている方法のステップのうちの全てまたは一部を実行するようにコンピュータ装置（これは、パーソナルコンピュータ、サーバ、ネットワーク装置などであり得る）に指示するためのいくつかの命令を含む。記憶媒体は、ＵＳＢフラッシュディスク、ＲＯＭ、ＲＡＭ、モバイルハードディスクドライブ、磁気ディスク、光ディスク、または、プログラムコードを格納することが可能であるその他の任意のメディアを含む。
【０１４５】
上述の説明は本出願の好適な実施態様にすぎない。当業者が、本出願の原理から逸脱することなく、いくつかの改良および修正を行うことも可能であることが留意されるべきである。これらの改良および修正も、本発明の保護範囲内に収まるものとみなされ得る。
【図１】
2021501406.tif 000003
【図２】
2021501406.tif 000004
【図３】
2021501406.tif 000005
【図４】
2021501406.tif 000006
【図５】
2021501406.tif 000007
【図６】
2021501406.tif 000008
【図７】
2021501406.tif 000009
【図８】
2021501406.tif 000010
【図９Ａ】
2021501406.tif 000011
【図９Ｂ】
2021501406.tif 000012
【図１０】
2021501406.tif 000013
【図１１】
2021501406.tif 000014
【国際調査報告】
2021501406.tif 000015