(57)【要約】本発明は、与えられたアプリケーションの多くのアルゴリズムで一般的であり、かつ大部分がコンピュータ的に費用の掛かる演算を含む中間演算の並列計算を可能にする方法及び装置を構成する。本方法は、予め定義されたアプリケーションのために適切な中間レベルファンクションのセットを設計すること、プロセッサから中間レベル演算に対応する命令を取得すること、オペランド及び結果のアドレスを計算すること、複数の中間レベル演算に含まれる計算を実行することを含む。例示的な実施形態では、装置は、複数のオペランド及び結果のアドレスを計算するローカルアドレスジェネレータと、中間レベル演算の並列計算を実行するプログラマブルコンピュテーショナルユニットと、複数のブロックに構造化されるローカルメモリにインターフェース接続されるローカルメモリインターフェースと、からなる。ローカルアドレスジェネレータ及びプログラマブルコンピュテーショナルユニットは、大規模な計算を必要とする任意の分野をカバーするように構成可能である。【選択図】図５
2015520450.tif 000002
【特許請求の範囲】
【請求項１】
複数のアプリケーションの処理速度を上げるためのミドルストレータム演算の並列計算を可能にする方法であって、
予め定義されたアプリケーションのための数学演算及び論理演算の組み込合わせを含むミドルストレータム演算のセットを設計するステップと、
実行されるミドルストレータム演算の予め定義されたタイプに基づく演算コードと、
複数のオペランドの初期アドレス及び複数の結果のデスティネーションの初期アドレスと、
複数のコンフィグレーションパラメータと、を含む複数の命令を設計するステップと、
ホストプロセッサから複数の設計された命令を取得するステップと、
前記複数の設計された命令に組み込まれた前記オペランドの初期アドレスに基づく前記複数のオペランドのアドレスを決定するステップと、
決定されたアドレスに基づいて前記複数のオペランドを取得するステップと、
前記複数の設計された命令に組み込まれた情報に基づいて前記ミドルストレータム演算により特定される複数の演算を実行するステップと、
前記複数の設計された命令に組み込まれた結果の初期デスティネーションアドレスに基づいて複数の結果のデスティネーションアドレスを決定するステップと、
前記結果を複数のデスティネーションアドレスロケーションへ転送するステップと、を備える方法。
【請求項２】
数学演算及び論理演算の組み合わせを含む前記ミドルストレータム演算により特定される複数の演算を実行するステップをさらに備える請求項１に記載の方法。
【請求項３】
予め定義されたアプリケーションの異なるアルゴリズムで生じる数学演算及び論理演算の組み合わせを含むミドルストレータム演算を設計するステップをさらに備える請求項１に記載の方法。
【請求項４】
処理速度が上がる前記予め定義されたアプリケーションの異なるアルゴリズムで生じる演算の共通部分を識別するステップをさらに備える請求項３に記載の方法。
【請求項５】
複数のアプリケーションの処理速度を上げるために必要とされるミドルストレータム演算の複数のセットを設計するステップをさらに備える請求項３又は４に記載の方法。
【請求項６】
前記予め定義されたアプリケーションのために必要とされるミドルストレータム演算のセットを構成可能にするステップをさらに備える請求項１に記載の方法。
【請求項７】
ミドルストレータム演算の並列計算のために必要とされる複数のオペランドの任意の順序のアドレスを計算するステップをさらに備える請求項１に記載の方法。
【請求項８】
ミドルストレータム演算の並列計算により生成される複数の結果のための任意の順序のアドレスを計算するステップをさらに備える請求項１に記載の方法。
【請求項９】
前記複数の予め定義されたアプリケーションのために必要とされるアドレス生成を構成可能にするステップをさらに備える請求項１に記載の方法。
【請求項１０】
計算システムの複数のアプリケーションにおけるミドルストレータム演算の並列計算を可能にするユニバーサルマルチファンクションアクセラレータであって、
データを記憶するためのローカルメモリへのインターフェースと、
システムアドレススペースにおけるユニバーサルマルチファンクションアクセラレータとのインターフェース接続を容易にし、かつシステムメモリと前記ローカルメモリとの間でのデータの転送するためのシステムバスへのインターフェースと、
アクセラレータへ命令を転送するための、プロセッサの密接合メモリ（ｔｉｇｈｔｌｙ  ｃｏｕｐｌｅｄ  ｍｅｍｏｒｙ）及び密結合（ｃｌｏｓｅｌｙ  ｃｏｕｐｌｅｄ  ｍｅｍｏｒｙ（ＣＣＭ））ポートへのインターフェースと、
前記命令をデコードするインストラクションデコーダと、
前記命令によって特定される演算のために要求される複数のオペランドの複数のアドレスを計算するコンフィギュアブルローカルデータアドレスジェネレータと、
前記命令によって特定される複数のコンピュータ演算を実行するためのプログラマブルコンピュテーショナルユニットと、
システムアドレスをローカルメモリアドレスへ変換するためのシステムデータアドレスジェネレータと、を備えるユニバーサルマルチファンクションアクセラレータ。
【請求項１１】
前記ユニバーサルマルチファンクションアクセラレータは、前記プロセッサからの命令を受信するように構成され、
前記命令は、
演算コードフィールドと、
コンフィグレーションパラメータフィールドと、
複数のアドレスフィールドと、を備える請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項１２】
前記ユニバーサルマルチファンクションアクセラレータは、さらに、前記プロセッサから受信された前記命令におけるコンフィグレーションパラメータを使用するように構成され、予め定義されたネイチャーの演算を実行するためにそれ自体をプログラムする請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項１３】
前記ローカルメモリへのインターフェースは、さらに、複数のオペランドにアクセスし、複数のメモリブロックで構成される前記ローカルメモリにおける複数の結果を記憶するために、前記複数のメモリブロックで構成されるローカルメモリにアクセスするように構成される、請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項１４】
前記ローカルメモリへのインターフェースは、さらに、前記ユニバーサルマルチファンクションアクセラレータと、他のブロックとは独立した特定されたブロックとの間で前記データの転送を可能にする複数のローカルメモリブロックへインターフェース接続するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項１５】
前記ローカルメモリへのインターフェースは、さらに、連続的なシステムアドレスが連続的なローカルメモリブロックに対応することを可能にする複数のローカルメモリブロックへインターフェース接続するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項１６】
前記ローカルメモリへのインターフェースは、さらに、複数のローカルメモリブロックから受信された複数のオペランドを前記プログラマブルコンピュテーショナルユニットへ転送するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項１７】
前記ローカルメモリへのインターフェースは、さらに、前記プログラマブルコンピュテーショナルユニットから受信された複数の結果を、複数のローカルメモリブロックへ転送するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項１８】
前記ローカルメモリへのインターフェースは、さらに、システムメモリインターフェースからデータを受信するように構成され、かつアドレスが前記システムデータアドレスジェネレータによって計算されるローカルメモリに記憶される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項１９】
前記ローカルメモリへのインターフェースは、さらに、アドレスが前記システムデータアドレスジェネレータによって計算された前記ローカルメモリに記憶されるデータをシステムメモリインターフェースへ転送するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項２０】
前記ユニバーサルマルチファンクションアクセラレータは、さらに、前記プロセッサから受信される前記命令における演算コードフィールドに基づいて行われる演算に対応する複数の制御信号を、前記コンフィギュアブルローカルデータアドレスジェネレータ及び前記プログラマブルコンピュテーショナルユニットへ転送するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項２１】
前記ユニバーサルマルチファンクションアクセラレータは、さらに、前記命令におけるアドレスフィールドに基づいて行われる演算に対応するオペランドの初期アドレスを、前記コンフィギュアブルローカルデータアドレスジェネレータへ転送するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項２２】
前記ユニバーサルマルチファンクションアクセラレータは、さらに、前記命令におけるアドレスフィールドに基づいて行われる演算によって生成される結果の初期ディスティネーションアドレスを前記コンフィギュアブルローカルデータアドレスジェネレータへ転送するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項２３】
前記ユニバーサルマルチファンクションアクセラレータは、前記インストラクションデコーダによる前記命令におけるコンフィグレーションパラメータに基づくモード信号を、前記コンフィギュアブルローカルデータアドレスジェネレータ及び前記プログラマブルコンピュテーショナルユニットへ転送するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項２４】
前記コンフィギュアブルローカルデータアドレスジェネレータは、さらに、前記命令における演算コードフィールドに基づいて行われる演算に対応する制御信号を受信するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項２５】
前記コンフィギュアブルローカルデータアドレスジェネレータは、さらに、前記インストラクションデコーダから取得される制御信号に基づく前記命令により要求される複数のオペランドのアドレスを計算するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項２６】
前記コンフィギュアブルローカルデータアドレスジェネレータは、さらに、前記インストラクションデコーダから前記オペランドの初期アドレスを受信するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項２７】
前記コンフィギュアブルローカルデータアドレスジェネレータは、さらに、前記インストラクションデコーダから取得される前記オペランドの初期アドレスに基づく前記命令ににより要求される複数のオペランドのアドレスを計算するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項２８】
前記コンフィギュアブルローカルデータアドレスジェネレータは、さらに、前記インストラクションデコーダからの結果の初期ディスティネーションアドレスを受信するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項２９】
前記コンフィギュアブルローカルデータアドレスジェネレータは、さらに、前記インストラクションデコーダからの初期ディスティネーションアドレスに基づく前記命令により要求される複数の結果のディスティネーションアドレスを計算するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項３０】
前記コンフィギュアブルローカルデータアドレスジェネレータは、さらに、前記インストラクションデコーダからのモード信号を受信するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項３１】
前記コンフィギュアブルローカルデータアドレスジェネレータは、さらに、モード信号に基づく前記命令により要求される前記複数のオペランドのアドレス及び前記複数の結果のディスティネーションアドレスを計算するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項３２】
前記コンフィギュアブルローカルデータアドレスジェネレータは、さらに、演算コードで特定される演算を実行するために要求される任意の順序でオペランドのアドレスを計算するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項３３】
前記コンフィギュアブルローカルデータアドレスジェネレータは、さらに、コンフィグレーションパラメータに基づく前記命令により特定される演算を実行するために要求される任意の順序でオペランドのアドレスを計算するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項３４】
前記コンフィギュアブルローカルデータアドレスジェネレータは、さらに、前記システムバス上のアドレスに対応する前記ローカルメモリにおけるロケーションのアドレスを計算するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項３５】
前記コンフィギュアブルローカルデータアドレスジェネレータは、さらに、システムメモリアドレスをローカルメモリアドレスへ変換することにより、前記システムバスに対してメモリの１つのユニットとして見えるローカルメモリブロックを容易にするように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項３６】
コンフィギュアブルプロセッシングユニットは、さらに、前記命令により特定される演算を実行するために必要とされる算術演算及び論理演算の組み合わせを含む複数の計算を実行するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項３７】
コンフィギュアブルプロセッシングユニットは、さらに、予め定義されたアプリケーションの異なるアルゴリズムによって用いられるミドルストレータム演算である複数の計算を実行するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項３８】
コンフィギュアブルプロセッシングユニットは、さらに、複数のオペランドでのミドルストレータム演算である複数の並列計算を実行するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項３９】
コンフィギュアブルプロセッシングユニットは、さらに、前記命令における演算コードフィールドに基づいて行われる演算に対応する制御信号を受信するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項４０】
コンフィギュアブルプロセッシングユニットは、さらに、前記インストラクションデコーダから受信される制御信号に基づく複数の計算を実行するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項４１】
コンフィギュアブルプロセッシングユニットは、さらに、前記インストラクションデコーダからモード信号を受信するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項４２】
コンフィギュアブルプロセッシングユニットは、さらに、前記インストラクションデコーダから受信される制御信号及びモード信号に基づく複数の計算を実行するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項４３】
コンフィギュアブルプロセッシングユニットは、さらに、複数の計算を実行するために、前記ローカルメモリへのインターフェースから複数のオペランドを受信するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【請求項４４】
コンフィギュアブルプロセッシングユニットは、さらに、演算の複数の結果を前記ローカルメモリへのインターフェースへ転送するように構成される請求項１０に記載のユニバーサルマルチファンクションアクセラレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明で設計される方法及び装置は、高性能演算の分野に関するものであり、特に、ハードウェアアクセラレータを用いて異なるアプリケーションの処理速度を向上させることに関するものである。本発明は、特に、演算の並列計算を用いる、特に、異なるアプリケーションのために設計される集積回路向けのアーキテクチャを設計することに関連するものである。
【背景技術】
【０００２】
高性能な計算の需要が依然として増加している。高性能な計算の要求は、頻繁に、低消費電力の競合する需要とも結合される。例えば、マルチメディア計算は、このようなケースの一つであり、ほとんどバッテリで動作するデバイス上でハイレゾリューション及びハイディフィニションを要求する。このようなデバイス向けの厳しい電力及び性能の要求が存在する。計算能力を向上しつつ、消費電力を少なくするために用いられる多数の技術が存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
高性能プロセッサ（ＲＩＳＣ及びＤＳＰプロセッサ）、Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ（ＳＩＭＤ）、Ｍｕｌｔｉｐｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ（ＭＩＭＤ）、コプロセッサのようなプロセッサへの拡張等の設計は、プロセッサに対する既存の変更であり、より優れた計算能力を実現する。マルチイシュー（ｍｕｌｔｉ−ｉｓｓｕｅ）、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）又はより汎用的なスーパースカラーアーキテクチャのようなアーキテクチャ指向のパフォーマンスを有するプロセッサも試されているが、回路が大型になり、電力消費が大きくなるためそれほど成功していない。
【０００４】
プロセッサアーキテクチャへの拡張のＳＩＭＤ及びＭＩＭＤタイプは、より高い計算速度を実現するために、シングルプロセッササイクルで複数の演算を実行しようとする。適切に設計されたレジスタセットは、複数の演算用のオペランドを提供し、それらの演算の結果を記憶するために用いられる。
【０００５】
プロセッサへのＳＩＭＤ及び同様の拡張は、特定の態様でのデータの構成を要求し、そのため、再構成の従来のステップを必要とせずに、データのそのような構造が明らかに利用可能な状況でのみ利点を提供する。さらに、ＳＩＭＤ技術が基本的な数学演算のみを含むため、ＳＩＭＤは、基本的な数学レベルにおける計算のシーケンシャル順序が必要とされるアルゴリズムの一部では使用することができない。よって、これらのタイプの拡張は、ビデオデコーディングのような完全なアルゴリズムの計算のための要求されたサイクルにおいてほぼ４０％の低減を提供する最良の場合によって、限定的な計算の処理速度の向上を提供する。よって、これらのタイプの拡張は、追加の回路を必要とすることに起因するより少ない電力の利点を生じる。
【０００６】
ベクトル処理エンジン、コンフィギュアブルアクセラレータ等のようなハイパフォーマンスを実現するように構成される他の革新的なアプローチが存在する。浮動小数点演算のための再構成可能な（ｒｅｃｏｎｆｉｇｕｒａｂｌｅ）アレイプロセッサ［Ｎ１１］、適応可能な算術ノード［Ｎ２］及び構成可能な算術ユニット［Ｅ４］での動作（Ｗｏｒｋ）は、ベクトル処理及びコンフィギュアビリティ（（設定可能性）ｃｏｎｆｉｇｕｒａｂｉｌｉｔｙ）を用いる数学演算を効率良く実行することを実現するために行われる。
【０００７】
上述されたより高い計算能力を実現するための前記方法は、基本的な数学演算をより効率良く実行することを全て目的としている。ＤＳＰプロセッサは、基本的な数学演算を超えるステップであるマルチプライ及びアキュムレート（ｍｕｌｔｉｐｌｙ  ａｎｄ  ａｃｃｕｍｕｌａｔｅ（ＭＡＣ））のような演算を行う。これらは、異なるアプリケーションの各種のアルゴリズムで生じる一般的な基本演算であるが、基本演算のこのレベルでのスピードアップは、上述した理由のための計算において限定的な処理速度の向上を提供しうる。
【０００８】
一方、マルチコアアーキテクチャは、計算のスピードアップに広く用いられている。これらのアーキテクチャは、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ及びハイエンドモバイルフォンで用いられている。精密なパワーマネジメントスキームは、マルチプルコアによる電力消費を最小限にするために用いられる。
【０００９】
マルチコアアーキテクチャは、アルゴリズムの並列処理を通じてより高い計算能力を実現する。したがって、アルゴリズムは、効率の良いマルチコアアーキテクチャのために並列処理（マルチスレッディング）に従うべきである。よって、マルチコアプロセッサで実現可能な計算の処理速度の向上は、また、マルチコアの存在による大きな消費電力の付加に制限される。
【００１０】
計算をスピードアップするために用いられる異なるアプローチは、負荷の重い計算を要求するアルゴリズム全体又はアルゴリズムの一部を実装する回路を構築することである。ハードウェアアクセラレータは、通常、アルゴリズムの最も計算的に費用の掛かる部分（オーディオコーデックのフーリエ変換、ビデオコーデックのデブロッキングフィルタ等）の処理速度を向上するように設計される。ハードウェアアクセラレータは、ビデオデコーダのような完全なアルゴリズムのために構築されるものもある。このアプローチは、アルゴリズムの非常に良好な処理速度の向上を提供する。回路が、与えられた計算のために具体的に設計されるため、この場合、所要電力も最小限である。
【００１１】
しかし、計算のフローの変更は、既存のハードウェアアクセラレータを使用不可能にし、新たな回路の構築を必要とする。いくつかの再構成可能なハードウェアアクセラレータが存在するが、それらが構成可能な拡張は、いくつかのモード又はいくつかの非常に関連性のあるアルゴリズムに対するものである。
【００１２】
ハードウェアアクセラレータではない（汎用プロセッサで動作する）部分のフローが、変更されうるため、アルゴリズムの一部分だけの処理速度を向上するためにハードウェアアクセラレータを用いることは、上述した課題を解決する。しかし、このアプローチは、全体アルゴリズムに亘る有意義な性能の向上を実現するために、いくつかのハードウェアアクセラレータを必要とし、また、処理速度が向上しないアルゴリズムの部分も依然として残るため、全体の性能を制限する。
【００１３】
以上のように、高性能計算を実現するための現在の技術状態、すなわち、低消費電力での高速計算は、３つのタイプに分類されうる：（Ａ）ベクトル処理を用いる基本的な数学演算の並列計算、（Ｂ）並列／マルチコアプロセッサ、及び（Ｃ）アルゴリズムの全体又は一部を計算するための専用回路。タイプＡの技術は、主に、基本的な演算が、アルゴリズムにおいて並列化されうる限定的な拡張のため、限定的な処理速度の向上を生じる。タイプＢの技術もまた、主に、アルゴリズムがマルチスレッド化されうる拡張によって限定的な処理速度の向上を生じる。タイプＣの技術は、良好な処理速度の向上を生じるが、非常に限定的なフレキシビリティを有する。
【００１４】
本発明は、基本的な演算のレベルを超えるが、アルゴリズム全体を下回り、かつ計算的に負荷の高い部分のほとんどを含むが、いくつかのアルゴリズムで共通する汎用部分（ミドルストレータム演算は、中間レベルの演算である）を下回る計算の処理速度の向上の異なるレベルを提案することによって、上述した制限を取り除くことを探求する。
【課題を解決するための手段】
【００１５】
以下には、基本的な理解を提供するために、本開示の簡素化された概要を示す。この概要は、本開示の広範囲の要旨ではなく、本発明のキーとなる／クリティカルな要素を識別するものではない、又は本発明の範囲を線引するものではない。その目的は、後に示されるより詳細な説明への前置きとして簡素化された形態で、本明細書に開示されるいくつかの概念を表現するためのものである。
【００１６】
本発明のより完全な理解及びその範囲は、以下に簡潔に要約される添付の図面及び好ましい実施形態の以下の詳細な説明から取得されることができる。
【００１７】
計算システムの複数のアプリケーションにおけるミドルストレータム演算の並列計算を可能にする方法及び装置（ユニバーサルマルチファンクションアクセラレータ）を開示する。
【００１８】
本発明の例示的実施形態は、マルチメディア、通信、グラフィック、データセキュリティ、金融、他のエンジニアリング並びに科学的かつ汎用の計算のような複数のアプリケーションの処理速度を向上させるために並列計算を可能にするものである。
【００１９】
本発明の例示的実施形態は、異なるアプリケーションの処理速度を向上させるための最適に設計された命令をサポートするものである。最適に設計された命令は、基本的な数学演算以上のレベルにあり、アルゴリズム独立となるべき十分な汎用性を維持する（中間レベル（ｉｎｔｅｒｍｅｄｉａｔｅ  ｌｅｖｅｌ）又はミドルストレータム演算（ｍｉｄｄｌｅ  ｓｔｒａｔｕｍ  ｏｐｅｒａｔｉｏｎｓ））。
【００２０】
本発明の例示的実施形態は、マルチメディアアプリケーション用の複数のデジタルシグナルプロセッサをサポートするものである。
【００２１】
本発明の例示的な目的は、中間演算の処理速度を向上させることにより異なるタイプの計算における高性能計算を実現することである。
【００２２】
本発明の非限定的な例示的態様によれば、ユニバーサルマルチファンクションアクセラレータは、ｒａｄｉｘ−２、ｒａｄｉｘ−４等のようなフーリエ変換演算の各種計算の処理速度を向上させる。
【００２３】
非限定的な例示的態様によれば、ｒａｄｉｘ−２のような演算の選択は、本方法が、アルゴリズム独立となることを可能にする。
【００２４】
本発明の例示的実施形態は、ハッシング（ｈａｓｈｉｎｇ）、暗号化、復号化等のような複数のデータセキュリティアルゴリズムの処理速度を向上させるために複数の命令を提供する。
【００２５】
本発明の例示的実施形態は、異なるアプリケーションをカバーする対応する命令をサポートする。
【００２６】
非限定的な例示的態様によれば、ユニバーサルマルチファンクションアクセラレータのローカルメモリにおいてデータ表現のセット（ａ  ｓｅｔ  ｏｆ  ｄａｔａ  ｐｒｅｓｅｎｔ）での一つのプロセッササイクルにおける複数の数学演算を実行することにより、ユニバーサルマルチファンクションアクセラレータは、計算の高い処理速度の向上を提供する。
【００２７】
本発明の第１の態様によれば、方法は、命令をインストラクションデコーダへ転送することを含み、ここで、インストラクションデコーダは、命令のデコーディング演算を実行し、複数の要求された信号をローカルデータアドレスジェネレータへ転送する。前記方法は、さらに、プロセッサから前記命令を受信するステップを含む。
【００２８】
第１の態様によれば、前記方法は、実行される演算のために必要とされる複数のオペランドの初期アドレスを転送するステップと、結果の初期ディスティネーションアドレスをローカルデータアドレスジェネレータへ転送するするステップを含む。
【００２９】
第１の態様によれば、前記方法は、ローカルデータアドレスジェネレータを通じてデータのソースアドレス及びディスティネーションアドレスを求めるステップを含み、ローカルデータアドレスジェネレータは、命令のコンピュータ演算を実行するために必要とされる複数のデータポイントのロケーションに対応するアドレス、及び記憶される複数の結果のロケーションのアドレスを計算する。
【００３０】
第１の態様によれば、前記方法は、プログラマブルコンピュテーショナルユニットにおける命令により特定される複数のコンピュータ演算を実行することを含み、前記複数のコンピュータ演算は、基本的な数学演算及び基本的な論理演算の組み合わせの予め定義されたセットを含む。
【００３１】
第１の態様によれば、前記方法は、複数のメモリブロックからのローカルメモリインターフェースにより複数のデータポイントにアクセスすることを含み、複数のデータポイントのロケーションに対応するアドレスは、プログラマブルローカルデータアドレスジェネレータにより生成される。
【００３２】
第１の態様によれば、前記方法は、システムメモリインターフェースにおけるコンピュテーショナルシステムへの単一メモリユニットとして複数のメモリブロックのビジュアライゼーションを可能にすることを含み、システムメモリインターフェースは、標準データ転送演算及びダイレクトメモリアクセス転送演算の使用を可能にする。
【００３３】
第１の態様によれば、前記方法は、システムバスから受信されたシステムアドレスを、システムデータアドレスジェネレータによってローカルアドレスに変換することを含む。
【００３４】
第１の態様によれば、前記方法は、さらに、ユニバーサルマルチファンクションアクセラレータをホストプロセッサの密接合メモリ（ｔｉｇｈｔｌｙ  ｃｏｕｐｌｅｄ  ｍｅｍｏｒｙ）ポート又は密結合メモリ（ｃｌｏｓｅｌｙ  ｃｏｕｐｌｅｄ  ｍｅｍｏｒｙ）ポートとインターフェース接続するステップを含む。
【００３５】
本発明の第１の態様によれば、前記方法は、さらに、コンピュータ演算を実行するための命令における演算コードを含むステップを含む。
【００３６】
第１の態様によれば、前記方法は、さらに、複数のデータポイントにアクセスするために、複数のメモリブロックをローカルメモリインターフェースとインターフェース接続するステップを含む。
【００３７】
第１の態様によれば、前記方法は、さらに、命令に基づく複数のコンピュータ演算を実行するステップを含む。
【００３８】
第１の態様によれば、前記方法は、さらに、ユニバーサルマルチファンクションアクセラレータを構成するために、命令におけるコンフィグレーションパラメータを含むステップを含む。
【００３９】
第１の態様によれば、前記方法は、さらに、コンフィグレーションパラメータに基づく複数のオペランド及び結果のアドレスを計算するステップを含む。
【００４０】
第１の態様によれば、前記方法は、さらに、コンフィグレーションパラメータに基づく複数のコンピュータ演算を実行するステップを含む。
【００４１】
本発明の第２の態様によれば、ユニバーサルマルチファンクションアクセラレータは、命令のソースアドレス及びディスティネーションアドレスを求めるように構成されるプログラマブルローカルデータアドレスジェネレータを備える。
【００４２】
本発明の第２の態様によれば、ユニバーサルマルチファンクションアクセラレータは、命令において特定される複数のコンピュータ演算を実行するためのプログラマブルコンピュテーショナルユニットを含み、複数のコンピュータ演算は、基本的な数学演算及び基本的な論理演算の組み合わせの予め定義されたセットを含む。
【００４３】
本発明の第２の態様によれば、ユニバーサルマルチファンクションアクセラレータは、命令を計算するために必要な複数のメモリブロックから複数のデータポイントへアクセスするステップを容易にするローカルメモリインターフェースを備え、複数のデータポイントのロケーションに対応するアドレスは、プログラマブルローカルデータアドレスジェネレータによって生成される。複数のメモリブロックを含むローカルメモリユニットは、ローカルメモリインターフェースとインターフェース接続される。ローカルメモリインターフェースは、プログラマブルコンフィグレーションユニットへ複数のオペランドを供給する。
【００４４】
本発明の第２の態様によれば、ユニバーサルマルチファンクションアクセラレータは、システムメモリインターフェースを備える。システムバスは、システムメモリインターフェースとコンピュテーショナルシステムとを通信する。
【００４５】
本発明の第２の態様によれば、ユニバーサルマルチファンクションアクセラレータは、システムバスから受信されたシステムアドレスをローカルメモリアドレスへ変換するように構成されるシステムデータアドレスジェネレータを備える。システムデータアドレスジェネレータは、複数のローカルメモリブロックをコンピュテーショナルユニットに対して単一のメモリユニットとして見えるようにすることを可能にする。
【００４６】
本発明の第２の態様によれば、ユニバーサルマルチファンクションアクセラレータは、さらに、命令における複数の中間演算の処理速度を向上するように構成される。
【００４７】
本発明の第２の態様によれば、ユニバーサルマルチファンクションアクセラレータは、さらに、ホストプロセッサからの命令をデコードするためにインストラクションデコーダを備える。インストラクションデコーダは、さらに、複数の制御信号をローカルデータアドレスジェネレータへ転送するように構成される。
【００４８】
本発明の第２の態様によれば、ユニバーサルマルチファンクションアクセラレータは、さらに、ホストプロセッサの密接合メモリ（ｔｉｇｈｔｌｙ  ｃｏｕｐｌｅｄ  ｍｅｍｏｒｙ）ポートをインターフェース接続するためのプロセッサインターフェースを備える。プロセッサインターフェースは、さらに、ホストプロセッサの密結合メモリ（ｃｌｏｓｅｌｙ  ｃｏｕｐｌｅｄ  ｍｅｍｏｒｙ）ポートとインターフェース接続する。
【図面の簡単な説明】
【００４９】
【図１】図１は、プロセッサを用いる基本的な数学演算を計算するための従来のシステムを示す図である。
【図２】図２は、専用回路（ハードウェアアクセラレータ）を構築することによってアルゴリズムの計算の処理速度を上げるための従来のシステムを示す図である。
【図３】図３は、ユニバーサルマルチファンクションアクセラレータを含むシステムの概要を示す図である。
【図４】図４は、ｒａｄｉｘ−２の２つのミドルストレータム演算の並列計算を行う例示的な実施形態を示す図である。
【図５】図５は、ユニバーサルマルチファンクションアクセラレータの概要をローカルメモリと共に示す図である。
【図６】図６は、ユニバーサルマルチファンクションアクセラレータにおける命令の構造を示す図である。
【図７】図７は、ユニバーサルマルチファンクションアクセラレータとローカルメモリとの接続性の概要を示す図である。
【図８】図８は、ユニバーサルマルチファンクションアクセラレータのローカルデータアドレスジェネレータとローカルメモリインターフェースとの接続性の概要を示す図である。
【図９】図９は、ユニバーサルマルチファンクションアクセラレータのプログラマブル計算ユニットとローカルメモリインターフェースとの接続性の概要を示す図である。
【図１０】図１０は、ユニバーサルマルチファンクションアクセラレータのローカルメモリインターフェースによるシステムデータアドレスジェネレータとシステムメモリインターフェースとの接続性の概要を示す図である。
【図１１】図１１は、ユニバーサルマルチファンクションアクセラレータのインストラクションデコーダとローカルデータアドレスジェネレータとの接続性の概要を示す図である。
【図１２】図１２は、ユニバーサルマルチファンクションアクセラレータのインストラクションデコーダとプログラマブルコンピュテーションユニットとの接続性の概要を示す図である。
【発明を実施するための形態】
【００５０】
本開示は、以下の説明又は図面の図示において説明される構造の詳細及び構成要素の配置に対してその用途において限定されないことが理解される。本開示は、他の実施形態で可能であり、様々な手法で実施又は実行可能である。また、本明細書で使用される表現又は用語は、説明のためのものであり、限定的に解釈されるべきではないことが理解される。
【００５１】
「含む（ｉｎｃｌｕｄｉｎｇ）」、「備える（ｃｏｍｐｒｉｓｉｎｇ）」又は「有する（ｈａｖｉｎｇ）」及び本明細書におけるそれらのバリエーションの使用は、それ以降に挙げられるアイテム及び追加アイテムと同様にその均等物を包含することを意味する。本明細書における用語「１つ（“ａ”及び“ａｎ”）」は、数量の限定を意味するものではなく、参照されたアイテムの少なくとも１つの存在を意味するものである。さらに、「第１」、「第２」、「第３」等の用語の使用は、本明細書において、順序、数量又は重要度を意味するものではなく、１つの要素を別の要素と区別するために用いられる。
【００５２】
図１は、基本的な数学演算を計算するための従来のシステムを示す図１００である。システムは、基本的な数学演算を実行するためのデータ又は命令を送信するためのシステムバス１０６へ接続される、プロセッサコア（典型的にはマルチ−コアプロセッサ）１０２と、メモリ１０４と、を備える。プロセッサコア１０２は、加算、減算、乗算等のような計算された数学演算をメモリ１０４へ送信するためのシステムバス１０６へ接続される。プロセッサコア１０２及びメモリ１０４は、データを送受信するために、システムバス１０６と２つの経路の通信プロセスを用いる。
【００５３】
図２は、専用回路（ハードウェアアクセラレータ）を構築することによりアルゴリズムの処理速度を上げるためのシステムの従来技術を示す図２００である。システムは、特定の計算を実行するために完全なアルゴリズムの処理速度を上げるためのシステムバス２０６と接続される、プロセッサ２０２と、メモリ２０４と、ハードウェアアクセラレータ２０８と、を備える。
【００５４】
システムバス２０６に接続されるプロセッサ２０２は、ハードウェアアクセラレータ２０８を制御する。ハードウェアアクセラレータ２０８は、通常、特定のアルゴリズム又はアルゴリズムのコンピュータ処理的に費用のかかる部分を計算するように設計される。メモリ２０４は、計算されるデータ又は既に計算されたデータを記憶する。
【００５５】
図３は、ユニバーサルマルチファンクションアクセラレータを用いる計算システムの概要を示す図３００である。本発明の非限定的な例示的実施形態によれば、システムは、システムバス３０６に接続される、プロセッサ３０２、メモリ３０４と、ユニバーサルマルチファンクションアクセラレータ３０８と、ローカルメモリ３１０と、を備える。ユニバーサルマルチファンクションアクセラレータ３０８は、コネクション３１２を通じてプロセッサから、実行される中間レベル演算に対応する命令を受信する。
【００５６】
本発明の非限定的な実施によれば、システムバス３０６に接続されるプロセッサ３０２は、ローカルメモリ３１０に記憶されたデータ上の予め定義されたミドルストレータム演算を実行するためにインターコネクション３１２を用いて、命令をユニバーサルマルチファンクションアクセラレータ３０８へ送信する。ローカルメモリ３１０は、専用インターフェース３１１を通じてユニバーサルマルチファンクションアクセラレータ３０８へ接続される。
【００５７】
図４は、Ｒａｄｉｘ−２計算の非限定的な例示的中間演算を示す図４００である。図４００は、２つのＲａｄｉｘ−２演算４０２及び４０４を示す。本発明の非限定的な例示的実施形態によれば、プロセスは、２つのＲａｄｉｘ−２演算４０２及び４０４の並列計算を記述する。
【００５８】
本発明の非限定的な例示的実施によれば、ｒａｄｉｘ−２，ｒａｄｉｘ−４等のような演算の並列計算は、ユニバーサルマルチファンクションアクセラレータによりサポートされる。このような命令は、任意のサイズ及びそのバリエーションのフーリエ変換、逆フーリエ変換の処理速度を上げる際に有益である。
【００５９】
本発明の非限定的な例示的実施によれば、ＦＩＲフィルタ、ｒａｄｉｘ演算、窓関数（ｗｉｎｄｏｗｉｎｇ  ｆｕｎｃｔｉｏｎｓ）、量子化等のような複数のミドルストレータム演算は、全てのマルチメディアアプリケーションの処理速度を上げるためにユニバーサルマルチファンクションアクセラレータに設計及び実装される。
【００６０】
図５は、ユニバーサルマルチファンクションアクセラレータの概要を示す図５００である。本発明の非限定的な例示的実施形態によれば、ユニバーサルマルチファンクションアクセラレータは、プロセッサインターフェース５０２と、インストラクションデコーダ５０４と、ローカルデータアドレスジェネレータ５０６と、プログラマブルコンピュテーショナルユニット５０８と、システムデータアドレスジェネレータ５１０と、システムインターフェース５１２と、ローカルメモリ５１６に接続されるローカルメモリインターフェース５１４と、を備える。
【００６１】
本発明の非限定的な例示的実施形態によれば、命令は、予め定義されたアプリケーションの異なるアルゴリズムの処理速度を上げるために必要とされる数学演算及び論理演算の両方を組み合わせたものであるミドルストレータム演算を実行するための情報を含むように設計される。設計された命令は、オペランドの初期アドレス、結果のディスティネーションの初期アドレス、及びモード又はコンフィグレーションパラメータも含む。そのため、複数のオペランドのアドレスは、命令に組み込まれたオペランドの初期アドレスに基づいて求められ、これらのアドレスに基づいて取得される複数のオペランドは、命令に組み込まれた情報に基づくミドルストレータムファンクション（ｍｉｄｄｌｅ  ｓｔｒａｔｕｍ  ｆｕｎｃｔｉｏｎｓ）により特定される複数の演算を実行する。同様に、複数の結果のディスティネーションアドレスは、命令に組み込まれた結果の初期ディスティネーションアドレスに基づいて求められ、結果をこれらのアドレスロケーションに転送する。
【００６２】
図６は、ユニバーサルマルチファンクションアクセラレータの命令構造について示す図６００である。本発明の非限定的な例示的実施形態によれば、命令は、オペレーションコード６０２と、２つのアドレス又はコンフィグレーションパラメータ６０４ａ及び６０４ｂと、を含む。オペレーションコード６０２は、実行される中間レベル演算のタイプを特定する。命令の他の２つのフィールド６０４ａ及び６０４ｂは、一つの非限定的な例示的実施形態において２つのアドレスを含んでもよい。２つのアドレスは、２つのオペランド又は１つのオペランドと１つの結果の初期アドレスであってもよい。２つのフィールド６０４ａ及び６０４ｂの一方又は両方は、別の非限定的な例示的実施形態においてコンフィグレーションパラメータを含んでもよい。
【００６３】
本発明の非限定的な例示的実施によれば、図５を参照すると、プロセッサインターフェース５０２は、プロセッサの密接合メモリ（ｔｉｇｈｔｌｙ  ｃｏｕｐｌｅｄ  ｍｅｍｏｒｙ）又は密結合メモリ（ｃｌｏｓｅｌｙ  ｃｏｕｐｌｅｄ  ｍｅｍｏｒｙ）ポートから特定のアプリケーションの予め定義された命令を受信し、それらをインストラクションデコーダ５０４へ転送する。インストラクションデコーダ５０４は、プロセッサインターフェース５０２から受信された命令をデコードし、必要な制御信号を生成し、それらをローカルデータアドレスジェネレータ５０６及びプログラマブルコンピュテーショナルユニット５０８のようなユニバーサルマルチファンクションアクセラレータ５００の異なる部分へ転送する。ユニバーサルマルチファンクションアクセラレータ５００のローカルデータアドレスジェネレータ５０６は、所与の命令及び結果の演算を実行するために必要とされる複数のデータポイントのソース及びディスティネーションアドレスを決定する。
【００６４】
本発明の非限定的な例示的実施形態によれば、ユニバーサルマルチファンクションアクセラレータ５００のプログラマブルコンピュテーショナルユニット５０８は、ローカルメモリ５１６から取得される複数のデータで図４に示される２つのＲａｄｉｘ−２演算のような中間演算の並列計算を実行する。プログラマブルコンピュテーショナルユニット５０８は、ユニバーサルマルチファンクションアクセラレータ５００によりサポートされるインストラクションデコーダ５０４からの制御信号を受信し、制御信号によって特定されるような基本的な数学及び論理演算の組みあわせを適切に選択することによって複数の結果を生成するために、複数のデータポイントでの数学及び論理演算を実行する。
【００６５】
本発明の非限定的な例示的実施形態によれば、ユニバーサルマルチファンクションアクセラレータ５００のシステムデータアドレスジェネレータ５１０は、システムアドレスをローカルメモリ５１６におけるデータのロケーションのアドレスに変換する。ユニバーサルマルチファンクションアクセラレータ５００におけるローカルメモリインターフェース５１４は、複数の命令のそれぞれに対する複数のデータポイントにアクセスし、当該複数の命令のアドレスは、ローカルメモリ５１６で構成されるメモリブロックのセットから、ローカルデータアドレスジェネレータ５０６によって計算される。ユニバーサルマルチファンクションアクセラレータ５００は、さらに、システムインターフェース５１２で構成され、全てのローカルメモリブロックは、ロード、ストア又はパフォームダイレクトアクセストランスファ演算（ｌｏａｄ  ｏｒ  ｓｔｏｒｅ  ｏｒ  ｐｅｒｆｏｒｍ  ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ  ｔｒａｎｓｆｅｒ  ｏｐｅｒａｔｉｏｎｓ）が、データをローカルメモリ５１６内及びローカルメモリ外へ変換するために適切となるようなシステムに対する単一のメモリユニットとして見ることができる。
【００６６】
非限定的な実施形態によれば、サイズが１６ｋｂのローカルメモリ５１６は、ユニバーサルマルチファンクションアクセラレータ５００にインターフェース接続され、かつそれぞれ１ｋｂのいくつかのブロックに編成される。
【００６７】
本発明の非限定的な例示的実施形態によれば、必要な演算が行われるべき初期データは、ユニバーサルマルチファンクションアクセラレータのローカルメモリ５１６へ転送される。ローカルメモリインターフェース５１４は、プログラマブルコンピュテーショナルユニット５０８へ複数のオペランドを供給するメモリのいくつかのブロックとしてローカルメモリ５１６を設定する一方で、システムメモリインターフェースは、ローカルメモリ５１６を、コンピュテーショナルシステムに対して単一のメモリブロックとして見えるようにする。
【００６８】
図７は、ユニバーサルマルチファンクションアクセラレータとローカルメモリとの接続性の概要を示す図７００である。本発明の非限定的な例示的実施形態によれば、システムは、メモリブロック７０４ａ及び７０４ｂのそれぞれのグループへインターフェース接続されるユニバーサルマルチファンクションアクセラレータのローカルメモリインターフェース７０２を含む。
【００６９】
本発明の非限定的な例示的実施形態によれば、ユニバーサルマルチファンクションアクセラレータにおいて構成されるローカルメモリインターフェース７０２は、ローカルメモリ７０４ｂの複数のブロックのグループにおける複数の結果を記憶するために、ローカルメモリ７０４ａの複数のブロックのグループから複数のオペランドにアクセスする。
【００７０】
ローカルメモリインターフェース７０２は、データを、グループＩ  ７０４ａ及びグループＩＩ  ７０４ｂに含まれる各メモリブロックへ独立に転送し、かつグループＩ  ７０４ａ及びグループＩＩ  ７０４ｂに含まれる各メモリブロックからデータを独立して受信するために、１６ｋｂのローカルメモリのローカルメモリブロック７０４ａのグループＩ及びローカルメモリブロック７０４ｂのグループＩＩのそれぞれとインターフェース接続する。
【００７１】
図８は、ユニバーサルマルチファンクションアクセラレータのローカルデータアクセスジェネレータとローカルメモリインターフェースとの接続性の概要を示す図８００である。本発明の非限定的な例示的実施形態によれば、システムは、データバス８０６を通じてローカルメモリインターフェース８０４と通信するように構成されるローカルデータアドレスジェネレータを含む。
【００７２】
本発明の非限定的な例示的実施によれば、ローカルデータアドレスジェネレータ８０２は、命令により特定される演算を実行するために必要とされる複数のオペランドの複数のアドレスがローカルデータアドレスジェネレータにより計算されるデータバス８０６を通じてローカルメモリインターフェース８０４への複数のオペランドの複数のアドレスを計算する。
【００７３】
図９は、ユニバーサルマルチファンクションアクセラレータのプログラマブルコンピュテーショナルユニットとローカルメモリインターフェースとの接続性の概要を示す図９００である。本発明の非限定的な例示的実施形態によれば、システムは、データバス９０６を通じてローカルメモリインターフェース９０４と通信するように構成されるプログラマブルコンピュテーショナルユニット９０２を含む。
【００７４】
本発明の非限定的な例示的実施によれば、ユニバーサルマルチファンクションアクセラレータにおいて構成されるプログラマブルコンピュテーショナルユニット９０２は、複数の命令によって特定される複数の計算を実行する。ローカルメモリインターフェース９０４は、複数のローカルメモリブロックから受信される複数のオペランドを、データバス９０６を通じてプログラマブルコンピュテーショナルユニット９０２へ転送するように構成される。ローカルメモリインターフェース９０４は、データバス９０６を通じて、ユニバーサルマルチファンクションアクセラレータのプログラマブルコンピュテーショナルユニット９０２により生成された複数の結果を受信するように構成される。
【００７５】
図１０は、ローカルメモリインターフェースによるシステムデータアドレスジェネレータとシステムメモリインターフェースとの接続性を示す図１０００である。
【００７６】
本発明の非限定的な例示的実施形態によれば、システムは、アドレスデータバス１００８及びデータバス１０１０を通じてローカルメモリインターフェース１００６と通信するように構成されるシステムデータアドレスジェネレータ１００２及びシステムメモリインターフェース１００４を備える。
【００７７】
本発明の非限定的な例示的実施によれば、システムデータアドレスジェネレータ１００２は、システムバスでのアドレスに対応するローカルメモリにおけるロケーションのアドレスを計算するように構成される。システムデータアドレスジェネレータ１００２は、このローカルアドレスを、アドレスバス１００８を通じてローカルメモリインターフェース１００６へ渡す。複数のローカルメモリブロックにインターフェース接続されるローカルメモリインターフェース１００６は、データバス１０１０を通じてユニバーサルマルチファンクションアクセラレータのシステムメモリインターフェース１００４から受信されたデータを記憶するために、このアドレスを使用する。システムによりローカルメモリから読み出すための転送の場合、ローカルメモリインターフェース１００６は、ローカルメモリから受信されたデータを、データバス１０１０を通じてシステムメモリインターフェース１００４へ転送する。よって、システムデータアドレスジェネレータ１００２は、システムメモリアドレスをローカルメモリアドレスへ変換することによって、ローカルメモリインターフェース１００６とインターフェース接続する全てのローカルメモリブロックが、システムバスに対して１つのユニットとして見えるようにすることを容易にする。
【００７８】
図１１は、インストラクションデコーダとローカルアドレスジェネレータとの接続性を示す図１１００である。本発明の非限定的な例示的実施によれば、システムは、制御バス１１０６、１１１０及びアドレスバス１１０８を通じてローカルデータアドレスジェネレータ１１０４と通信するように構成されるインストラクションデコーダ１１０２を含む。
【００７９】
本発明の非限定的な例示的実施によれば、ユニバーサルマルチファンクションアクセラレータは、命令における演算コードに基づくミドルストレータム演算を実行するように構成される。インストラクションデコーダ１１０２は、制御信号を計算し、制御バス１１０６を通じてローカルデータアドレスジェネレータ１１０４と同様に転送する。ローカルデータアドレスジェネレータ１１０４は、この制御信号に基づく命令に必要とされる複数のオペランド及び結果のアドレスを計算する。ユニバーサルマルチファンクションアクセラレータは、さらに、オペランドの初期アドレス及びインストラクションデコーダ１１０２からの結果の初期アドレスを、アドレスバス１１０８を通じてローカルデータアドレスジェネレータ１１０４へ転送するように構成される。ローカルデータアドレスジェネレータ１１０４は、これらの初期アドレスに基づく命令に必要とされる複数のオペランド及び結果のアドレスを計算する。インストラクションデコーダは、さらに、インストラクションデコーダによる命令におけるコンフィグレーションパラメータに基づくモード信号を、モード信号データバス１１１０を通じてローカルデータアドレスジェネレータ１１０４及びプログラマブルコンピュテーショナルユニットへ転送するように構成される。ローカルデータアドレスジェネレータ１１０４は、このモード信号に基づく命令に必要とされる複数のオペランド及び結果のアドレスを計算する。よって、ローカルデータアドレスジェネレータ１１０４は、演算コードに対応する制御信号、オペランド及び結果の初期アドレス、並びにコンフィグレーションパラメータに対応するモード信号を使用する。
【００８０】
本発明の非限定的な例示的実施によれば、２つのｒａｄｉｘ演算の計算に対応する命令、複数のオペランドのアドレス（４つのコンプレックスインプット及び２つのコンプレックス回転因子のアドレス）は、ローカルデータアドレスジェネレータ１１０４によって計算される。これらのアドレスは、フーリエ変換のサイズ及びＦＦＴ（ｆａｓｔ  Ｆｏｕｒｉｅｒ  ｔｒａｎｓｆｏｒｍ）で計算されるｒａｄｉｘのレベルに基づいて間隔を空けて配置される。本発明の非限定的な例示的実施によれば、ＦＦＴ計算のサイズ及びレベルの値は、命令のコンフィグレーションフィールドに配置される。
【００８１】
図１２は、インストラクションデコーダとプログラマブルコンフィグレーションユニットとの接続性の概要を示す図１２００である。本発明の非限定的な例示的実施によれば、システムは、制御バス１２０６及び１２０８を通じてプログラマブルコンピュテーションユニット１２０４と通信するように構成されるインストラクションデコーダ１２０２を備える。
【００８２】
本発明の非限定的な例示的実施によれば、ユニバーサルマルチファンクションアクセラレータのプログラマブルコンフィグレーションユニット１２０２は、命令によって特定されるような算術及び論理演算の両方の組み合わせである複数のミドルストレータム演算の計算を実行する。実行されるミドルストレータム演算のタイプについての情報は、インストラクションデコーダ１２０４からの制御信号を通じてプログラマブルコンピュテーショナルユニット１２０２によって取得される。しかし、所与の演算コード（及び制御信号）のために実行されるべき計算の組み合わせは、コンフィグレーションパラメータに依存する。インストラクションデコーダ１２０４は、コンフィグレーションパラメータに基づくモード信号を生成し、プログラマブルコンピュテーショナルユニット１２０２と同様に制御バス１２０８を通じて転送する。非限定的な例示的コンフィグレーションパラメータは、プログラマブルコンピュテーショナルユニット１２０２が、乗算及び加算を要求された回数で実行するように構成されることに基づくＦＩＲフィルタにおけるタップの数である。
【００８３】
本発明の特定の実施形態は、先進的な原理を説明するために詳細に示され、かつ説明されてきたが、本発明は、このような原理から逸脱しない範囲で実施されてもよいことが理解されるであろう。
【図１】
2015520450.tif 000003
【図２】
2015520450.tif 000004
【図３】
2015520450.tif 000005
【図４】
2015520450.tif 000006
【図５】
2015520450.tif 000007
【図６】
2015520450.tif 000008
【図７】
2015520450.tif 000009
【図８】
2015520450.tif 000010
【図９】
2015520450.tif 000011
【図１０】
2015520450.tif 000012
【図１１】
2015520450.tif 000013
【図１２】
2015520450.tif 000014
【国際調査報告】
2015520450.tif 000015
2015520450.tif 000016
2015520450.tif 000017