複数メモリ特定用途向けデジタル信号プロセッサ
回路基板(210)と、この回路基板上に実装された1又はそれ以上のデジタル信号プロセッサ(100)とを含む集積回路装置(200)を提供する。デジタル信号プロセッサ(100)は、データユニット(120)及び制御ユニット(110)を含み、データユニットは、特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コア(124)と、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信するように構成された1又はそれ以上の命令を記憶する命令メモリ(122)とを含み、制御ユニットは、複数のメモリバンク(130、140)と関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成され、複数のメモリバンクは、1又はそれ以上のデジタル信号プロセッサの各々に結合されるとともに、回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンク(130)を含む。
【発明の詳細な説明】
【技術分野】
【0001】
〔関連出願との相互参照〕
本出願は、2009年11月25日に出願された「複数メモリ特定用途向けデジタル信号プロセッサ」という名称の米国仮特許出願第61/264,334号の利益を主張するものであり、この特許出願の内容及び開示は、その全体が引用により本明細書に組み入れられる。
【0002】
本発明は、一般にデジタル信号プロセッサに関し、より詳細には、特定用途向けデジタル信号プロセッサに関する。
【背景技術】
【0003】
この10年間で、高容量の消費者製品に組み込みアプリケーションを実装するためのデジタル信号プロセッサ(DSP)の人気がますます高まってきた。これらのDSPは、組み込みアプリケーションに必要な高性能を低価格で提供するが、既存のプロセッサにより提供される正確さ及び精密さを維持しながら性能及び速度をより高めることができるDSPが依然として必要とされている。これらの新たなプロセッサは、高性能計算用途のための、スーパーコンピュータに代わる低価格の選択肢を提供することができる。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Gloster他、「2D離散コサイン変換を高速実行するための構成可能なデジタル信号プロセッサ設計の最適化(Optimizing the Design of a Configurable Digital Signal Processor for Accelerated Execution of the 2−D Discrete Cosine Transform)」2006年、第39回システム科学に関するハワイ会議、IEEE0−7695−2507−5/06
【非特許文献2】Gay、Wanda、「構成可能なデジタル信号プロセッサ合成のための最適化ツール及び技術(Optimization Tools and Techniques for Configurable Digital Signal Processor Synthesis)」ハワード大学、UMI第3331459号、プロクエスト出版、2009年1月27日
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明のいくつかの実施形態は、特定のデジタル信号処理アルゴリズムを実行するデジタル信号プロセッサ(ASDSP)を含む集積回路装置を提供することにより、上記の及びその他の必要性に有利に対処する。
【課題を解決するための手段】
【0006】
1つの実施形態では、集積回路装置が、回路基板と、この回路基板上に実装された1又はそれ以上のデジタル信号プロセッサとを備え、各デジタル信号プロセッサは、データユニット及び制御ユニットを含み、データユニットは、特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアと、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信するように構成された1又はそれ以上の命令を記憶する命令メモリとを含み、制御ユニットは、複数のメモリバンクと関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成され、複数のメモリバンクは、1又はそれ以上のデジタル信号プロセッサの各々に結合されるとともに、回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクを含む。
【0007】
別の実施形態では、方法が、1又はそれ以上のデジタル信号プロセッサを生成するステップを含み、この1又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、データユニットを生成するステップと、制御ユニットを生成するステップとを含み、データユニットを生成するステップは、特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信するように構成された1又はそれ以上の命令を記憶する命令メモリを生成するステップとを含み、制御ユニットは、複数のメモリバンクと関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法は、1又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、1又はそれ以上のデジタル信号プロセッサの各々を、回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクに結合するステップを含む、1又はそれ以上のデジタル信号プロセッサの各々を複数のメモリバンクに結合するステップとをさらに含む。
【0008】
さらに別の実施形態では、方法を実行するためのコンピュータ可読命令を有する有形コンピュータ可読記憶媒体が、1又はそれ以上のデジタル信号プロセッサを生成するステップを含み、この1又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、データユニットを生成するステップと、制御ユニットを生成するステップとを含み、データユニットを生成するステップは、特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信するように構成された1又はそれ以上の命令を記憶する命令メモリを生成するステップとを含み、制御ユニットは、複数のメモリバンクと関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法は、1又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、1又はそれ以上のデジタル信号プロセッサの各々のデータユニットを、回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクに結合するステップを含む、1又はそれ以上のデジタル信号プロセッサの各々を複数のメモリバンクに結合するステップとをさらに含む。
【0009】
以下の図面とともに示す以下のより詳細な説明から、本発明のいくつかの実施形態の態様、特徴及び利点がより明らかになるであろう。
【図面の簡単な説明】
【0010】
【図1】本発明のいくつかの実施形態による例示的な複数メモリ特定用途向けデジタル信号プロセッサ(ASDSP)を示す図である。
【図2A】本発明のいくつかの実施形態による非対話型ASDSPの考えられる構成を示す図である。
【図2B】本発明のいくつかの実施形態による非対話型ASDSPの考えられる構成を示す図である。
【図2C】本発明のいくつかの実施形態による非対話型ASDSPの考えられる構成を示す図である。
【図3A】本発明のいくつかの実施形態による対話型ASDSPの考えられる構成を示す図である。
【図3B】本発明のいくつかの実施形態による対話型ASDSPの考えられる構成を示す図である。
【図3C】本発明のいくつかの実施形態による対話型ASDSPの考えられる構成を示す図である。
【図3D】本発明のいくつかの実施形態による対話型ASDSPの考えられる構成を示す図である。
【図4A】本発明のいくつかの実施形態による、複数のASDSPを有するフィールドプログラマブルゲートアレイ(FPGA)の例示的な実施形態を示す図である。
【図4B】本発明のいくつかの実施形態による、複数のASDSPを有するFPFAの第2の例示的な実施形態を示す図である。
【図4C】本発明のいくつかの実施形態による、複数のASDSPを有するFPGAの第3の例示的な実施形態を示す図である。
【図4D】本発明のいくつかの実施形態による、複数のASDSPを有するFPGAの第4の例示的な実施形態を示す図である。
【図5】本発明のいくつかの実施形態による例示的な関数コアを示す図である。
【図6】本発明のいくつかの実施形態による別の例示的な関数コアを示す図である。
【図7】本発明のいくつかの実施形態による、集積回路装置を作成する方法を示すフロー図である。
【発明を実施するための形態】
【0011】
図面のいくつかの図を通じて、対応する参照文字は対応する構成要素を示す。当業者であれば、図中の要素は単純さ及び明確さを目的として示されるものであり、必ずしも縮尺通りではないと理解するであろう。例えば、本発明の様々な実施形態をより良く理解できるように、図中の要素の中には、他の要素に対して寸法を誇張しているものもある。また、本発明のこれらの様々な実施形態をより分かり易く示すために、商業的に実現可能な実施形態において有用又は必要な、一般的ではあるが良く理解されている要素については示していないことが多い。
【0012】
以下の説明は、限定的な意味で捉えるべきではなく、例示的な実施形態の一般的原理を説明するためのものにすぎない。本発明の範囲は、特許請求の範囲に関連して決定すべきものである。
【0013】
本明細書を通じて、「1つの実施形態」、「ある実施形態」、又は同様の表現に言及する場合、これらは、実施形態に関連して説明する特定の特徴、構造、又は特性が本発明の少なくとも1つの実施形態に含まれることを意味する。従って、本明細書を通じて「1つの実施形態では」、「ある実施形態では」という表現、及び同様の表現が出現した場合、これらは、必ずというわけではないが、全て同じ実施形態を指すことができる。
【0014】
いくつかの実施形態では、回路基板と、この回路基板上に実装された1又はそれ以上のデジタル信号プロセッサとを含む集積回路装置を提供する。いくつかの実施形態では、このデジタル信号プロセッサが、データユニットと、データユニットに結合された複数のメモリバンクと、制御ユニットとを含み、データユニットは、特定の数式を実行するように構成された関数コアと、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信する命令を記憶するように構成された命令メモリとを含み、複数のメモリバンクは、回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクを含み、制御ユニットは、複数のメモリバンクと関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成される。
【0015】
特定用途向けデジタル信号プロセッサ(ASDSP)は、特定のデジタル信号処理アルゴリズムを実行する高性能の浮動小数点又は固定少数点ベクトルプロセッサである。ASDSPは、アプリケーションの計算的に集中した部分をカスタムハードウェアに置き換えることによってアプリケーションソフトウェアの障害を軽減するために使用される。1つの実施形態では、再構成可能コンピュータ編集(RCC)システムが、この手順を実行する遠隔及び再構成可能環境(RARE)ツールである。
【0016】
以下で説明するように、1又はそれ以上の実施形態では、デジタル信号プロセッサが、制御ユニット及びデータユニットという2つの主な構成要素に分割される。いくつかの実施形態では、DSPアルゴリズムの原始的な数学的計算を行う完全関数コア、及びプロセッサの命令を格納する命令メモリの両方がデータユニットの構成要素である。
【0017】
1又はそれ以上の実施形態では、ASDSPが中央プロセッサのライブラリに記憶される。各ASDSPは、FPGAのビットストリームとして記憶される。1又はそれ以上の実施形態では、システムがプロセッサを利用できるように、ASDSPの機能及びその他の属性を記述するモジュール定義ファイルを維持することができる。これらの実施形態では、FPGAボード上でASDSPを使用するために、ASDSP定義ファイル及びFPGA構成ファイルがいずれも必要となり得る。
【0018】
図1に、1つの実施形態による複数メモリ特定用途向けデジタル信号プロセッサ(ASDSP)100を示す。ASDSP100の複数メモリプロセッサアーキテクチャは、制御ユニット110及びデータユニット120で構成される。いくつかの実施形態では、データユニット120が、命令メモリ122及び関数コア124を含む。ASDSP100は、1又はそれ以上のローカルメモリバンク130(例えば、メモリML0〜MLl-1)及び/又は外部メモリバンク140(例えば、メモリME0〜MEe-1)を含む複数のメモリバンクに直接接続される。1つの実施形態では、ASDSP100が、回路基板210を含む集積回路装置200上に実装される。図1に示すように、いくつかの実施形態では、例えば、このアーキテクチャがフィールドプログラマブルゲートアレイ(FPGA)200上に実装される。他の実施形態では、このASDSPを、マスクプログラマブルゲートアレイ又はカスタム集積回路(図示せず)上に実装することができる。図1に示すように、1つの例示的な実施形態では、ASDSP100がFPGA200内に搭載される。
【0019】
1つの実施形態では、ASDSPが、中央プロセッサのライブラリに記憶される。各ASDSPは、FPGAビットストリームとして記憶される。いくつかの実施形態では、ASDSPをFPGAボード上で使用するために、ASDSPの機能及びその他の属性を記述するモジュール定義ファイルを維持することができる。
【0020】
1つの実施形態では、制御ユニット110が、1又はそれ以上のタスクを実行する1又はそれ以上の有限状態機械である。例えば、1つの実施形態では、制御ユニット110が、メモリの読み出し及び書き込みを管理し、命令を復号し、データが利用可能になると関数コアを開始できるようにし、ホストに完了を信号送信し、及び/又は制御をホストプロセッサに戻す。1つの実施形態では、制御ユニット110が、ASDSP100内のデータの流れを制御し、複数のメモリバンク130及び/又は140の同時読み出し及び書き込みのスケジューリングを管理する。1つの実施形態では、制御ユニット110が、一定の入力データストリームを関数コア124に提供する一方で、複数のメモリバンク130及び/又は140への出力データの待ち行列を管理する。他の実施形態では、制御ユニット110が、上記に加えて又は上記とは別に、関数コア124がいつアクティブ/アイドルであるかを管理する。1つの実施形態では、制御ユニット110が、同じ数の入力及び出力を含む関数コアを備えたASDSPに非常に類似する単純な有限状態機械である。
【0021】
いくつかの実施形態によれば、データユニット120が情報を処理し、レジスタ、プログラムカウンタ、命令レジスタ、メモリアドレスレジスタ、カウンタ及び/又は関数コアなどの標準的なプロセッサ要素を含む。1つの実施形態では、データユニット110が、1又はそれ以上の関数コア124を含む。1つの例示的な実施形態では、図1に示すように、データユニット120が命令メモリ122及び関数コア124を含む。1つの実施形態では、命令メモリ122が、命令セットからの1又はそれ以上の命令を含む。1又はそれ以上の実施形態によれば、命令メモリ122に含まれる各命令がフェッチされ、復号されて実行される。1つの実施形態では、命令セットが少なくとも2つの命令を含み、最小ビット数を使用して符号化される。このような実施形態では、一方の命令が特定のアプリケーションのためのものであり、他方の命令がプロセッサを停止させるためのものである。この停止命令は、プログラム実行の制御をオペレーティングシステム又はホストプロセッサに戻すものである。いくつかの実施形態では、命令セットが、データを内部レジスタ及びその他にロードして記憶するための命令をさらに含むことができる。
【0022】
1つの実施形態では、各アプリケーションが固有のASDSPを定義し、従って異なる命令に同じ演算コードを再使用することができる。例えば、高速フーリエ変換(FFT)を実施するためのASDSPと離散コサイン変換(DCT)を実施するためのASDSPは、いずれも演算コードが全く同じ2つの命令を含むことができる。すなわち、いくつかの実施形態では、異なる関数コア124を有する2つのASDSPが、同じ演算コードを2つの全く異なる数式に再使用することができる。1又はそれ以上の実施形態では、ASDSP上の命令セットの演算コードを、別のASDSPに対して全体的に又は部分的に再使用することができる。
【0023】
いくつかの実施形態では、小さな命令セットが、システムクロック速度の最大化に寄与する。命令数が少ないことにより、命令復号論理が最小化され、設計のクリティカルパスにおける遅延の一因となることがない。いくつかの実施形態では、特定用途向け関数コア124を使用することにより、縮小命令セットの機能が実現される。
【0024】
さらに、図1に示すように、いくつかの実施形態では、命令メモリ122がデータユニット120の一部として構成され、データメモリバンク130及び140から分離される。この例示的な構成は、命令メモリからのより高速な読み出しを可能にし、従ってASDSPの速度に寄与する。
【0025】
いくつかの実施形態では、関数コア124が、データユニット120の計算要素を含む。1つの実施形態では、関数コア124が、算術論理演算ユニット(ALU)に類似するが、所与のアプリケーションに必要な固定又は浮動小数点演算しか実行しない。いくつかの実施形態では、関数コア124が高度にパイプライン化され、複数の入力及び出力を有し、各サイクル中にパイプラインが満たされると、より低水準の原始関数を含む複雑な数式を効果的に計算する。
【0026】
いくつかの実施形態では、関数コアを使用して、固定又は浮動小数点ベクトル演算を実行する。1つの実施形態では、関数コア124の構造が、n個の入力及び単一の出力を含むことができる。図5に、いくつかの実施形態による例示的な関数コア124を示しており、ここでは関数コア124が、レジスタR0〜R7により供給される8個の入力及び単一の出力Yを含む。1つの実施形態では、関数コア124をパイプライン化して、図5に示す関数コアと同様の2又はそれ以上の関数コアで構成することができる。1つの実施形態では、関数コア124が、実行する特定の関数に応じて最大n個の入力及びm個の出力を有することができる。1つの実施形態では、n及びmが1以上の整数である。1つの実施形態では、関数コアの入力及び出力が、各々32ビットである。
【0027】
図6に、関数コア124のさらに別の例示的な実施形態を示す。図6に示す実施形態では、関数コア124が、基本関数コア(FFC)510と呼ばれる1又はそれ以上の基本構築ブロックを含み、図6にはこれらの各々を八角形で示している。1つの実施形態では、FFC510が、加算、減算、乗算又は除算などの特定の算術的原始関数を実行するパイプライン化された32ビット浮動小数点ベクトルデータ処理ユニットである。1つの実施形態によれば、FFC510が、2つの入力及び単一の出力を有する単一の基本演算を実行する。各FFC510は、そのイネーブルピン及びdoneピンを介して制御することができる。イネーブルピンは、FFC510の入力上に有効な入力データが存在するかどうかを示す。イネーブルピンは、原始的演算が開始されることも示す。doneピンは、有効な出力データが存在するかどうかを示す。FFCは、基礎関数コア(BFC)のアーキテクチャの平衡を保つための実行遅延をさらに行うことができる。1つの実施形態では、FFC510を、平衡のとれたFFCとすることにより、単一の入力から開始して単一の出力で終了するFFCを通じた全ての経路上に同じ数のパイプライン段が存在するようにすることができる。また、このような実施形態では、任意の入力から任意の出力への全ての経路が、同じ数のパイプライン段を含む。
【0028】
いくつかの実施形態による、図6に長方形のユニットとして示すBFC520は、より複雑な算術演算を実行するために互いに論理的に接続された2又はそれ以上のFFCを含む。いくつかの実施形態では、BFC520の構造が、オリジナルアルゴリズムの主計算ループ内の計算に基づくことができる。従って、いくつかの実施形態では、FFC520が、ドット積、さらには信号処理変換などのより複雑な関数を計算するためにツリー状に接続される。
【0029】
関数コア階層の最上位の又は最も複雑なレベルが完全関数コア(CFC)530である。完全関数コアは、指定されたASDSPのためのオリジナルDSPアルゴリズムの計算全体を実行する。1つの実施形態では、図6に示すように、CFC530が、図1に示す関数コア124である。図示のように、CFC530は、レジスタR0〜R7により供給される8つの入力と、2つの出力X及びYを含む。1つの実施形態では、各完全関数コアがn個の入力及びm個の出力を含むことができ、n及びmは1以上の整数である。いくつかの実施形態では、CFC530が、1又はそれ以上のBSC520で構成される。1つの実施形態では、CFC内のBFCの数をFPGA領域とデータメモリサイズの関数として、データの幅に焦点を合わせることができる。すなわち、FPGAが単一のBFCしかサポートできない1つの実施形態では、CFCをBFCと同等にすることができる。一方、FPGAが複数のBFCをサポートできる実施形態では、CFCをBFCの集まりとすることができる。
【0030】
1つの実施形態では、関数コア124が、浮動小数点処理ユニットである。いくつかの実施形態では、浮動小数点演算を使用することにより、デジタル信号処理アルゴリズムにおける処理の結果として得られる精度が増すとともに、ハードウェアシステムのデバッグがさらに可能になる。例えば、1つの実施形態では、デバッグを目的として、ハードウェアシステム内のノードを、同じアルゴリズムの浮動小数点ソフトウェアの実施構成におけるこれらのノードの対応する行に照らしてチェックすることができる。ソフトウェアにより生成された浮動小数点値を、ハードウェア版のアルゴリズムにより生成された浮動小数点値に照らしてチェックすることにより、ハードウェアの機能を容易に検証することができる。2つの値が等しければ、ハードウェアの実施構成にエラーはない。別の実施形態では、関数コア124を固定小数点関数コアとすることができる。上述したように、いくつかの実施形態では、各ASDSP内に複数の関数コアが存在することができる。従って、パイプラインが満たされると、ハードウェアがクロックサイクルごとに結果を生じるので、複雑な演算計算を完了するために必要な総サイクル数を大幅に減少させることができる。
【0031】
1つの実施形態では、ASDSPに接続されるメモリバンク130及び140の数を、2個〜数百個のメモリバンクとすることができる。1つの実施形態では、メモリバンクの数が少なくとも2個より多い。別の実施形態では、メモリバンクの数を少なくとも10個より多くすることができ、さらに別の実施形態では、メモリバンクの数を少なくとも100個より多くすることができる。1つの実施形態では、提案するASDSP100が、通常、数十個〜数百個のメモリバンク130及び140に対応する。複数メモリのアーキテクチャは、この提案するアーキテクチャを、通常はたったの1個又は2個しか付属メモリバンクを有していない従来のDSPと区別する。すなわち、従来のプロセッサは、基板上のピンの数に限界があり、従って各ASDSPに接続できるメモリバンクの数に限界がある。ローカルなオンボードメモリを利用することにより、現在の例示的な実施形態では、1サイクル当たりの読み出しが多くなり、従って従来のプロセッサに比べてASDSPの性能を高めることができる。図1に示すように、ASDSPをオンボードの又はローカルなメモリバンク130に接続することができる。1つの実施形態では、図1に示すように、ASDSPが外部メモリバンク140にさらに接続される。別の実施形態では、ASDSPをローカルメモリバンク130又は外部メモリバンク140のみに接続することができる。
【0032】
いくつかの実施形態では、外部メモリバンク140の数を、例えばFPGAボード上のピンの数及び/又はその他の構造的制限によって制限することができる。しかしながら、ローカルメモリバンク130を使用することで、大量のメモリバンクを収容することができる。いくつかの実施形態では、大量のメモリバンクを収容することで、各メモリバンク130及び/又は140からの/への同時読み出し/同時書き込みが可能になる。従って、1又はそれ以上の実施形態では、メモリアクセスを含む、計算に必要な総サイクル数を大幅に減少させることができる。
【0033】
1つの実施形態では、例えば、外部メモリバンク140とローカルメモリバンク130をいずれも使用する場合、外部メモリバンクを、初期化用及びローカルメモリバンク130へのデータ提供用に使用することができる。1つの実施形態では、ASDSPに接続されるローカルメモリバンクの数を、関数コアの入力及び出力の数と同じにすることができる。いくつかの実施形態では、l個のローカルメモリバンク130を利用して、同時に実行できる全ての読み出し及び/又は書き込みのために、ASDSP100にデータを提供するためのメモリバンク130が存在するようにすることができる。このような実施形態では、外部メモリバンク140からローカルメモリバンク130にデータを供給し、このローカルメモリバンク130が、ASDSPの特定のアプリケーションを実行するために必要なデータをさらにプロセッサに供給することができる。
【0034】
1つの実施形態では、提案する複数メモリASDSP100を実現するためにFPGA200を使用する。1つの実施形態では、FPGA200が、ブロックRAMと呼ばれる何百もの小さなメモリバンクを含む。従来のプロセッサのように単一のメインメモリに接続されるのではなく、ASDSP100は、外部メモリバンク140の他にも多くのローカルメモリバンク130に接続して、その入力/出力データ帯域幅を大幅に増加させる。1つの実施形態では、n個のメモリバンクを有するASDSPが、単一のクロックサイクルでn回の同時読み出し/書き込みを行うことができる。1又はそれ以上の実施形態では、メモリバンクの各々が、単一のクロックサイクルで32又は64ビットのデータを転送することができる。FPGAの最大クロック速度は、通常のマイクロプロセッサのそれよりも桁違いに遅いので、いくつかの実施形態においてFPGAを使用することにより、ASDSPが必要とする電力が通常のプロセッサよりも少なくて済むようになる。
【0035】
1又はそれ以上の実施形態では、図示のように、FPGA上で実現される制御ユニット110とデータユニット120の組み合わせがデジタル信号プロセッサを構成する。計算は、データユニット120が制御ユニット110と連動することによって行われる。
【0036】
従って、いくつかの実施形態に関しては、各ASDSP100が、複数のメモリバンク130及び140と通信するのに必要なハードウェア、及び各特定のアプリケーションの特徴である数式を計算する関数コアハードウェアを含む。いくつかの実施形態では、ASDSP100が、小さな命令セットを有し、特定用途向け関数コアを含み、複数のメモリバンクへの同時読み出し/書き込み動作を行うことができる。
【0037】
図1のASDSP100は、ローカルメモリバンク及び外部メモリバンクのいずれとも通信する非対話型ASDSPとして示しているが、いくつかの異なる実施形態では、各ASDSP100を、ローカルメモリバンク及び/又は外部メモリバンクに接続された非対話型又は対話型ASDSPのいずれの形で構成してもよいと理解されたい。図2A〜図2Cに、非対話型ASDSP100の3つの考えられる構成を示す。1つの実施形態では、非対話型ASDSP100、すなわち他のASDSPとメモリバンクを共有しないASDSPを、複数のローカルメモリバンクML0〜MLl-1に接続された図2Aに示すASDSP−Lのようにローカルメモリのみに接続される(ASDSP−L)ように、複数のローカルメモリML0〜MLl-1及び外部メモリME0〜MEe-1に接続された図2Bに示すASDSP−LEのようにローカルメモリと外部メモリの両方に接続される(ASDSP−LE)ように、或いは複数の外部メモリME0〜MEe-1に接続された図2Cに示すASDSP−Eのように外部メモリのみに接続される(ASDSP−E)ように構成することができる。
【0038】
別の実施形態では、ASDSPを対話型DSPとして構成して、メモリバンクの1又はそれ以上を別のASDSPと共有するようにすることができる。図3A〜図3Dに、1又はそれ以上の実施形態による対話型ASDSP100の考えられる構成を示す。これらの対話型ASDSP100は、各ASDSP100が、複数の共有ローカルメモリMS0〜MSs-1に接続された図3Aに示すASDSP−Sのように共有ローカルメモリのみに接続される(ASDSP−S)ように、複数の共有ローカルメモリMS0〜MSs-1及び非共有ローカルメモリML0〜MLl-1に接続された図3Bに示すASDSP−LSのように共有ローカルメモリ及び共有されていないローカルメモリに接続される(ASDSP−LS)ように、複数の共有ローカルメモリMS0〜MSs-1及び外部メモリME0〜MEe-1に接続された図3CのASDSP−SEのように共有ローカルメモリ及び外部メモリに接続される(ASDSP−SE)ように、或いは複数の共有ローカルメモリMS0〜MSs-1と、非共有ローカルメモリML0〜MLl-1と、外部メモリME0〜MEe-1とに接続された図3Dに示すASDSP−LSEのようにローカルメモリ、共有ローカルメモリ、及び外部メモリに接続される(ASDSP−LSE)ように構成することができる。
【0039】
1つの実施形態では、同じFPGA200内に複数の対話型ASDSP100を統合することができる。図4A、図4B、図4C及び図4Dに、2又はそれ以上のASDSP100が配置されたFPGA200の例示的な実施形態を示す。図4Aは、第1のASDSP100a及び第2のASDSP100bが配置されたFPGA200を示す図である。この例示的な実施形態では、ASDSP100aを、非共有ローカルメモリバンク130a及び共有ローカルメモリバンク130bの両方を有するASDSP−LSとして示している。さらに、ASDSP100bを、共有ローカルメモリバンク130b及び外部メモリバンク140と通信するASDSP−SEとして示している。従って、図4Aの例示的な実施形態では、ASDSP100a及び100bは、ローカルメモリバンク130bを共有する対話型ASDSPである。
【0040】
図4Bには、3つのASDSP100c、100d及び100eが配置されるように構成された、別の例示的な実施形態によるFPGA200を示している。図示のように、ASDSP100cは、共有ローカルメモリ130a及び外部メモリ140aに接続される。さらに、ASDSP100dは、共有ローカルメモリバンク130aに接続されるとともに、共有ローカルメモリバンク130bにさらに接続される。さらに図4Bに示すように、ASDSP100eは、共有ローカルメモリバンク130b、ローカルメモリバンク130c、及び外部メモリバンク140bと通信する。
【0041】
図4Cは、2つのASDSP100を有するFPGA200の別の実施形態を示す図である。ASDSP100fを、共有ローカルメモリバンク130に接続された形で示しており、ASDSP100gも、同じ共有ローカルメモリバンク130、及び外部メモリバンク140に接続される。さらに、図4Dは、2つのASDSP100h及び100iが配置されたFPGA200のさらに別の例示的な実施形態を示す図である。図示のように、ASDSP100hは、共有ローカルメモリバンク130及び外部メモリバンク140aと通信し、ASDSP100iも、共有ローカルメモリバンク130に接続されるとともに、外部メモリバンク140bにさらに接続される。なお、上記の図は、FPGAの例示的な実施形態を示すものであり、いくつかの実施形態では、1又はそれ以上のASDSPを有するFPGA200の異なる変形例を使用することができる。
【0042】
1つの実施形態では、各々が特定のDSPアルゴリズムを実行する高性能デジタル信号プロセッサのライブラリが提供される。各プロセッサは、小さな命令セットを含んで特定のアルゴリズムを実施する。1又はそれ以上の実施形態では、これらの特定アルゴリズム向けデジタル信号プロセッサ(ASDSP)を使用して、高水準DSPアプリケーションの計算的に集中した部分をカスタムハードウェアに置き換えることにより、ソフトウェアの障害を軽減する。
【0043】
1つの実施形態では、各ASDSPが、実行のために市販の構成可能な演算器に個別に搭載される。このシステムの魅力的な特徴は、FPGAなどの演算器を、理論的に無限数のDSPアルゴリズムに合わせて再プログラムできる点である。
【0044】
合成されたプロセッサの各々は、サイズを減少させて命令復号論理の速度を高める小さな命令セットを有する。1つの実施形態では、バックエンド編集システムを使用して、ビットストリーム合成の過程を自動化する。ライブラリ内の各ビットストリームを使用して、FPGAを、特定アルゴリズム向けのデジタル信号プロセッサとして機能するようにプログラムする。
【0045】
1つの実施形態では、C/C++などの高水準プログラミング言語で記述されたDSPアルゴリズムがシステムに入力される。1又はそれ以上の実施形態では、システムが、この高水準の記述を、生成/合成できる個別化された高性能プロセッサのVHDLモデルに変換する。この生成され個別化されたプロセッサは、オリジナルアルゴリズムを、典型的な市販の合成ツールを使用するマイクロプロセッサよりも大幅に速く実行する。
【0046】
1つの実施形態では、システムが、まずDSPアルゴリズムの高水準動作記述をプロセッサレベルの記述に変換する。1つの実施形態では、システムが、DSPアルゴリズムを、アルゴリズムに合わせた命令を含むプロセッサ記述に変換する。1又はそれ以上の実施形態では、このプロセッサ記述が、同じプロセッサの構造的な/レジスタ転送レベル(RTL)の記述に変換される。1つの実施形態では、プロセッサの構造的な/RTLモデルが生成されると、市販のツールを使用して、論理合成、及び配置及びルーティングを行うことができる。1又はそれ以上の実施形態では、この処理の結果が、FPGA内にロードされる準備ができたFPGAビットストリームとなる。
【0047】
1又はそれ以上の実施形態では、システムにDSPアルゴリズムが入力され、このアルゴリズムを使用してデジタル信号プロセッサのプロセッサレベルの記述を生成又は作成する。この中間疑似VHDL記述が、VHDL内でも指定される同じデジタル信号プロセッサの合成可能な構造的な/レジスタ転送レベルの記述に変換される。システムの最終段階は、論理合成及び配置及びルーティングに関与する。この段階で、FPGAをプログラムするためのハードウェア構成ファイル又はFPGAビットストリームが生成される。
【0048】
このシステムの目標は、利用可能なFPGAリソース及びメモリを最大に利用する特定アルゴリズム向けのDSPを作り出すことである。これは、アルゴリズムを実行するのに必要な総クロックサイクル数を最小化するために実施される効果的なリソース割り当て(RA)及びスケジューリングを通じて達成される。利用可能なFPGAリソースを効率的かつ高度に利用することにより、プロセッサのスループットが増し、システムの性能が向上する。RAは、利用可能なFPGA領域及び利用可能なメモリ数を所与として、FPGA領域の利用度を最大化する完全な関数コアを定義するという課題を解決する。最後に、DSPアルゴリズムの計算部分を、各関数コアを使用できる利用可能なタイムスロットにマッピングすることにより、スケジューリングが実行される。
【0049】
図7は、1又はそれ以上の実施形態による、複数メモリ特定用途向けデジタル信号プロセッサ(ASDSP)を含む集積回路装置を実現する方法のフロー図である。
【0050】
まず、ステップ710においてデータユニットを生成する。いくつかの実施形態によれば、このデータユニットは情報を処理し、レジスタ、プログラムカウンタ、命令レジスタ、メモリアドレスレジスタ、カウンタ及び/又は関数コアなどの標準的なプロセッサ構成要素を含む。いくつかの実施形態では、データユニットが、命令メモリ及び関数コアを含む。
【0051】
1つの実施形態では、ステップ710において、ASDSPにより実行されるアプリケーションを定義する1又はそれ以上の関数コアを生成する。1つの実施形態では、上述したように、関数コアがデータユニットの計算要素を含む。1つの実施形態では、関数コアを実現するステップが、特定のDSPアルゴリズムを受け取るステップと、このアルゴリズムを実行するための演算の組を生成するステップとを含む。1つの実施形態では、この演算の組が、利用可能なFPGAリソース及びメモリを最大に利用するように生成される。1つの実施形態では、次にこれらの演算の1又はそれ以上が、データユニットの関数コアとして実施される。1つの実施形態では、関数コアが演算論理ユニット(ALU)に類似するが、所与のアプリケーションに必要な固定又は浮動小数点演算しか実行しない。いくつかの実施形態では、関数コア124が高度にパイプライン化され、複数の入力及び出力を有し、各サイクル中にパイプラインが満たされると、より低水準の原始関数を含む複雑な数式を効果的に計算する。
【0052】
1つの実施形態では、上述したように、この関数コアを、1又はそれ以上の基本関数コア、基礎関数コア及び/又は完全関数コアの組み合わせとすることができる。1つの実施形態では、関数コアの階層構造が、回路装置のリソース及び材料を最大に利用するようにされる。上述したように、図5には、いくつかの実施形態による、ステップ710で生成された例示的な関数コアを示しており、ここでは関数コア124が、レジスタR0〜R7により供給される8個の入力及び単一の出力Yを含む。1つの実施形態では、関数コア124をパイプライン化して、図5に示す関数コアと同様の2又はそれ以上の関数コアで構成することができる。1つの実施形態では、関数コア124が、実行する特定の関数に応じて最大n個の入力及びm個の出力を有することができる。1つの実施形態では、関数コアの入力及び出力が、各々32ビットである。
【0053】
さらに、ステップ710において、データユニットの一部として命令メモリを生成する。1つの実施形態では、この命令メモリが、命令セットからの1又はそれ以上の命令を含む。1又はそれ以上の実施形態によれば、命令メモリ122に含まれる各命令がフェッチされ、復号されて実行される。1つの実施形態では、命令セットが少なくとも2つの命令を含み、最小ビット数を使用して符号化される。このような実施形態では、一方の命令が特定のアプリケーションのためのものであり、他方の命令がプロセッサを停止させるためのものである。この停止命令は、プログラム実行の制御をオペレーティングシステム又はホストプロセッサに戻すものである。いくつかの実施形態では、命令セットが、ロード及び記憶のための命令、並びに様々な他のコマンド及び/又は関数を実行するためのその他の命令を含むことができる。
【0054】
1つの実施形態では、各アプリケーションが固有のASDSPを定義し、従って異なる命令に同じ演算コードを再使用することができる。例えば、高速フーリエ変換(FFT)を実施するためのASDSPと離散コサイン変換(DCT)を実施するためのASDSPは、いずれも演算コードが全く同じ2つの命令を含むことができる。すなわち、いくつかの実施形態では、異なる関数コアを有する2つのASDSPが、同じ演算コードを2つの全く異なる数式に再使用することができる。1又はそれ以上の実施形態では、ASDSP上の命令セットの演算コードを、別のASDSPに対して全体的に又は部分的に再使用することができる。
【0055】
いくつかの実施形態では、小さな命令セットが、システムクロック速度の最大化に寄与する。命令数が少ないことにより、命令復号論理が最小化され、設計のクリティカルパスにおける遅延の一因となることがない。いくつかの実施形態では、特定用途向け関数コアを使用することにより、縮小命令セットの機能が実現される。
【0056】
いくつかの実施形態では、命令メモリがデータユニットの一部として構成され、データメモリバンクから分離される。この例示的な構成は、命令メモリからのより高速な読み出しを可能にし、従ってASDSPの速度に寄与する。
【0057】
次に、ステップ720において、制御ユニットを生成する。1つの実施形態では、制御ユニットが、1又はそれ以上のタスクを実行する1又はそれ以上の有限状態機械である。例えば、1つの実施形態では、制御ユニットが、メモリの読み出し及び書き込みを管理し、命令を復号し、データが利用可能になると関数コアを開始できるようにし、ホストに完了を信号送信し、及び/又は制御をホストプロセッサ及び/又はオペレーティングシステムに戻す。1つの実施形態では、制御ユニットが、ASDSP100内のデータの流れを制御し、複数のメモリバンクの同時読み出し及び書き込みのスケジューリングを管理する。1つの実施形態では、制御ユニットが、一定の入力データストリームを関数コアに提供する一方で、複数のメモリバンクへの出力データの待ち行列を管理する。他の実施形態では、制御ユニットが、上記に加えて又は上記とは別に、関数コアがいつアクティブ/アイドルであるかを管理する。1つの実施形態では、制御ユニットが、同じ数の入力及び出力を含む関数コアを備えたASDSPに非常に類似する1又はそれ以上の単純な有限状態機械である。
【0058】
1つの実施形態では、ステップ710及び720が完了すると、ASDSPが中央プロセッサのライブラリに記憶される。各ASDSPは、FPGAビットストリームとして記憶される。いくつかの実施形態では、ASDSPをFPGAボード上で使用するために、ASDSPの機能及びその他の属性を記述するモジュール定義ファイルを維持することができる。
【0059】
ステップ730において、例えばFPGAなどの集積回路装置の回路基板上にデータユニット及び制御ユニットを搭載する。1つの実施形態では、データユニット及び制御ユニットの一方又は両方が、FPGA上にロードされるように構成されたビットストリームを含む。なお、上述した例示的な実施形態では、このアーキテクチャがフィールドプログラマブルゲートアレイ(FPGA)上に実装される。他の実施形態では、マスクプログラマブルゲートアレイ又はカスタム集積回路(図示せず)上にASDSPを実装することができる。
【0060】
1又はそれ以上の実施形態では、FPGAなどの回路装置が複数のローカルメモリブロックを含むとともに、外部メモリバンクに結合されたピンをさらに含むことができる。ステップ740において、制御ユニット及びデータユニットを、1又はそれ以上のローカルメモリバンク(例えば、図1のメモリML0〜MLl-1)及び/又は外部メモリバンク(例えば、図1のメモリME0〜MEe-1)を含むいくつかのメモリバンクに直接結合する。1つの実施形態では、ASDSPが、回路基板を含む集積回路装置上に実装される。
【0061】
このようにして、上記の方法は、利用可能なFPGAリソース及びメモリを最大に利用する特定アルゴリズム/用途向けDSPを生成する。これは、アルゴリズムを実行するのに必要な総クロックサイクル数を最小化するために実施される効果的なリソース割り当て(RA)及びスケジューリングを通じて達成される。利用可能なFPGAリソースを効率的かつ高度に利用することにより、プロセッサのスループットが増し、システムの性能が向上する。RAは、利用可能なFPGA領域及び利用可能なメモリ数を所与として、FPGA領域の利用度を最大化する完全な関数コアを定義するという課題を解決する。最後に、DSPアルゴリズムの計算部分を、各関数コアを使用できる利用可能なタイムスロットにマッピングすることにより、スケジューリングが実行される。
【0062】
1つの実施形態では、上記の方法を、コンピュータ可読命令を記憶する有形コンピュータ可読記憶媒体を通じて実施することができる。いくつかの実施形態では、このコンピュータ可読記憶媒体が、1又はそれ以上のプロセッサによって実行されたときに上述した方法のステップ710〜740の1又はそれ以上を実行するように構成された命令を記憶する。
【0063】
本明細書で説明した機能ユニットの1又はそれ以上は、様々な種類のプロセッサが実行できるように、少なくとも部分的にソフトウェアの形で実現することができる。実行可能コードの識別されたモジュールは、例えばオブジェクト、手順、又は機能として体系化できる、例えばコンピュータ命令の1又はそれ以上の物理的又は論理的ブロックを含むことができる。これにも関わらず、識別されたモジュールの実行ファイルを物理的にともに位置付ける必要はないが、これらは、論理的に結合された場合、モジュールを含むとともにモジュールのための定められた目的を達成する、様々な場所に記憶された異なる命令を含むことができる。
【0064】
1又はそれ以上の実施形態に含めることができる1又はそれ以上の構成要素の様々な追加の詳細は、(1)Gloster他、「2D離散コサイン変換を高速実行するための構成可能なデジタル信号プロセッサ設計の最適化(Optimizing the Design of a Configurable Digital Signal Processor for Accelerated Execution of the 2−D Discrete Cosine Transform)」2006年、第39回システム科学に関するハワイ会議、IEEE0−7695−2507−5/06、及び(2)Gay、Wanda、「構成可能なデジタル信号プロセッサ合成のための最適化ツール及び技術(Optimization Tools and Techniques for Configurable Digital Signal Processor Synthesis)」ハワード大学、UMI第3331459号、プロクエスト出版、2009年1月27日に記載されており、これらの文献は全て引用により本明細書に組み入れられる。
【0065】
本明細書で開示した発明については、特定の実施形態、実施例及びその用途を用いて説明したが、当業者であれば、特許請求の範囲に示す本発明の範囲から逸脱することなく、本発明に数多くの修正及び変更を行うことができる。
【符号の説明】
【0066】
100 ASDSP
110 制御ユニット
120 データユニット
122 命令メモリ
124 関数コア
130 ローカルメモリバンク
140 外部メモリバンク
200 FPGA/ASIC
210 回路基板
【技術分野】
【0001】
〔関連出願との相互参照〕
本出願は、2009年11月25日に出願された「複数メモリ特定用途向けデジタル信号プロセッサ」という名称の米国仮特許出願第61/264,334号の利益を主張するものであり、この特許出願の内容及び開示は、その全体が引用により本明細書に組み入れられる。
【0002】
本発明は、一般にデジタル信号プロセッサに関し、より詳細には、特定用途向けデジタル信号プロセッサに関する。
【背景技術】
【0003】
この10年間で、高容量の消費者製品に組み込みアプリケーションを実装するためのデジタル信号プロセッサ(DSP)の人気がますます高まってきた。これらのDSPは、組み込みアプリケーションに必要な高性能を低価格で提供するが、既存のプロセッサにより提供される正確さ及び精密さを維持しながら性能及び速度をより高めることができるDSPが依然として必要とされている。これらの新たなプロセッサは、高性能計算用途のための、スーパーコンピュータに代わる低価格の選択肢を提供することができる。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Gloster他、「2D離散コサイン変換を高速実行するための構成可能なデジタル信号プロセッサ設計の最適化(Optimizing the Design of a Configurable Digital Signal Processor for Accelerated Execution of the 2−D Discrete Cosine Transform)」2006年、第39回システム科学に関するハワイ会議、IEEE0−7695−2507−5/06
【非特許文献2】Gay、Wanda、「構成可能なデジタル信号プロセッサ合成のための最適化ツール及び技術(Optimization Tools and Techniques for Configurable Digital Signal Processor Synthesis)」ハワード大学、UMI第3331459号、プロクエスト出版、2009年1月27日
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明のいくつかの実施形態は、特定のデジタル信号処理アルゴリズムを実行するデジタル信号プロセッサ(ASDSP)を含む集積回路装置を提供することにより、上記の及びその他の必要性に有利に対処する。
【課題を解決するための手段】
【0006】
1つの実施形態では、集積回路装置が、回路基板と、この回路基板上に実装された1又はそれ以上のデジタル信号プロセッサとを備え、各デジタル信号プロセッサは、データユニット及び制御ユニットを含み、データユニットは、特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアと、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信するように構成された1又はそれ以上の命令を記憶する命令メモリとを含み、制御ユニットは、複数のメモリバンクと関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成され、複数のメモリバンクは、1又はそれ以上のデジタル信号プロセッサの各々に結合されるとともに、回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクを含む。
【0007】
別の実施形態では、方法が、1又はそれ以上のデジタル信号プロセッサを生成するステップを含み、この1又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、データユニットを生成するステップと、制御ユニットを生成するステップとを含み、データユニットを生成するステップは、特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信するように構成された1又はそれ以上の命令を記憶する命令メモリを生成するステップとを含み、制御ユニットは、複数のメモリバンクと関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法は、1又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、1又はそれ以上のデジタル信号プロセッサの各々を、回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクに結合するステップを含む、1又はそれ以上のデジタル信号プロセッサの各々を複数のメモリバンクに結合するステップとをさらに含む。
【0008】
さらに別の実施形態では、方法を実行するためのコンピュータ可読命令を有する有形コンピュータ可読記憶媒体が、1又はそれ以上のデジタル信号プロセッサを生成するステップを含み、この1又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、データユニットを生成するステップと、制御ユニットを生成するステップとを含み、データユニットを生成するステップは、特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信するように構成された1又はそれ以上の命令を記憶する命令メモリを生成するステップとを含み、制御ユニットは、複数のメモリバンクと関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法は、1又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、1又はそれ以上のデジタル信号プロセッサの各々のデータユニットを、回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクに結合するステップを含む、1又はそれ以上のデジタル信号プロセッサの各々を複数のメモリバンクに結合するステップとをさらに含む。
【0009】
以下の図面とともに示す以下のより詳細な説明から、本発明のいくつかの実施形態の態様、特徴及び利点がより明らかになるであろう。
【図面の簡単な説明】
【0010】
【図1】本発明のいくつかの実施形態による例示的な複数メモリ特定用途向けデジタル信号プロセッサ(ASDSP)を示す図である。
【図2A】本発明のいくつかの実施形態による非対話型ASDSPの考えられる構成を示す図である。
【図2B】本発明のいくつかの実施形態による非対話型ASDSPの考えられる構成を示す図である。
【図2C】本発明のいくつかの実施形態による非対話型ASDSPの考えられる構成を示す図である。
【図3A】本発明のいくつかの実施形態による対話型ASDSPの考えられる構成を示す図である。
【図3B】本発明のいくつかの実施形態による対話型ASDSPの考えられる構成を示す図である。
【図3C】本発明のいくつかの実施形態による対話型ASDSPの考えられる構成を示す図である。
【図3D】本発明のいくつかの実施形態による対話型ASDSPの考えられる構成を示す図である。
【図4A】本発明のいくつかの実施形態による、複数のASDSPを有するフィールドプログラマブルゲートアレイ(FPGA)の例示的な実施形態を示す図である。
【図4B】本発明のいくつかの実施形態による、複数のASDSPを有するFPFAの第2の例示的な実施形態を示す図である。
【図4C】本発明のいくつかの実施形態による、複数のASDSPを有するFPGAの第3の例示的な実施形態を示す図である。
【図4D】本発明のいくつかの実施形態による、複数のASDSPを有するFPGAの第4の例示的な実施形態を示す図である。
【図5】本発明のいくつかの実施形態による例示的な関数コアを示す図である。
【図6】本発明のいくつかの実施形態による別の例示的な関数コアを示す図である。
【図7】本発明のいくつかの実施形態による、集積回路装置を作成する方法を示すフロー図である。
【発明を実施するための形態】
【0011】
図面のいくつかの図を通じて、対応する参照文字は対応する構成要素を示す。当業者であれば、図中の要素は単純さ及び明確さを目的として示されるものであり、必ずしも縮尺通りではないと理解するであろう。例えば、本発明の様々な実施形態をより良く理解できるように、図中の要素の中には、他の要素に対して寸法を誇張しているものもある。また、本発明のこれらの様々な実施形態をより分かり易く示すために、商業的に実現可能な実施形態において有用又は必要な、一般的ではあるが良く理解されている要素については示していないことが多い。
【0012】
以下の説明は、限定的な意味で捉えるべきではなく、例示的な実施形態の一般的原理を説明するためのものにすぎない。本発明の範囲は、特許請求の範囲に関連して決定すべきものである。
【0013】
本明細書を通じて、「1つの実施形態」、「ある実施形態」、又は同様の表現に言及する場合、これらは、実施形態に関連して説明する特定の特徴、構造、又は特性が本発明の少なくとも1つの実施形態に含まれることを意味する。従って、本明細書を通じて「1つの実施形態では」、「ある実施形態では」という表現、及び同様の表現が出現した場合、これらは、必ずというわけではないが、全て同じ実施形態を指すことができる。
【0014】
いくつかの実施形態では、回路基板と、この回路基板上に実装された1又はそれ以上のデジタル信号プロセッサとを含む集積回路装置を提供する。いくつかの実施形態では、このデジタル信号プロセッサが、データユニットと、データユニットに結合された複数のメモリバンクと、制御ユニットとを含み、データユニットは、特定の数式を実行するように構成された関数コアと、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信する命令を記憶するように構成された命令メモリとを含み、複数のメモリバンクは、回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクを含み、制御ユニットは、複数のメモリバンクと関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成される。
【0015】
特定用途向けデジタル信号プロセッサ(ASDSP)は、特定のデジタル信号処理アルゴリズムを実行する高性能の浮動小数点又は固定少数点ベクトルプロセッサである。ASDSPは、アプリケーションの計算的に集中した部分をカスタムハードウェアに置き換えることによってアプリケーションソフトウェアの障害を軽減するために使用される。1つの実施形態では、再構成可能コンピュータ編集(RCC)システムが、この手順を実行する遠隔及び再構成可能環境(RARE)ツールである。
【0016】
以下で説明するように、1又はそれ以上の実施形態では、デジタル信号プロセッサが、制御ユニット及びデータユニットという2つの主な構成要素に分割される。いくつかの実施形態では、DSPアルゴリズムの原始的な数学的計算を行う完全関数コア、及びプロセッサの命令を格納する命令メモリの両方がデータユニットの構成要素である。
【0017】
1又はそれ以上の実施形態では、ASDSPが中央プロセッサのライブラリに記憶される。各ASDSPは、FPGAのビットストリームとして記憶される。1又はそれ以上の実施形態では、システムがプロセッサを利用できるように、ASDSPの機能及びその他の属性を記述するモジュール定義ファイルを維持することができる。これらの実施形態では、FPGAボード上でASDSPを使用するために、ASDSP定義ファイル及びFPGA構成ファイルがいずれも必要となり得る。
【0018】
図1に、1つの実施形態による複数メモリ特定用途向けデジタル信号プロセッサ(ASDSP)100を示す。ASDSP100の複数メモリプロセッサアーキテクチャは、制御ユニット110及びデータユニット120で構成される。いくつかの実施形態では、データユニット120が、命令メモリ122及び関数コア124を含む。ASDSP100は、1又はそれ以上のローカルメモリバンク130(例えば、メモリML0〜MLl-1)及び/又は外部メモリバンク140(例えば、メモリME0〜MEe-1)を含む複数のメモリバンクに直接接続される。1つの実施形態では、ASDSP100が、回路基板210を含む集積回路装置200上に実装される。図1に示すように、いくつかの実施形態では、例えば、このアーキテクチャがフィールドプログラマブルゲートアレイ(FPGA)200上に実装される。他の実施形態では、このASDSPを、マスクプログラマブルゲートアレイ又はカスタム集積回路(図示せず)上に実装することができる。図1に示すように、1つの例示的な実施形態では、ASDSP100がFPGA200内に搭載される。
【0019】
1つの実施形態では、ASDSPが、中央プロセッサのライブラリに記憶される。各ASDSPは、FPGAビットストリームとして記憶される。いくつかの実施形態では、ASDSPをFPGAボード上で使用するために、ASDSPの機能及びその他の属性を記述するモジュール定義ファイルを維持することができる。
【0020】
1つの実施形態では、制御ユニット110が、1又はそれ以上のタスクを実行する1又はそれ以上の有限状態機械である。例えば、1つの実施形態では、制御ユニット110が、メモリの読み出し及び書き込みを管理し、命令を復号し、データが利用可能になると関数コアを開始できるようにし、ホストに完了を信号送信し、及び/又は制御をホストプロセッサに戻す。1つの実施形態では、制御ユニット110が、ASDSP100内のデータの流れを制御し、複数のメモリバンク130及び/又は140の同時読み出し及び書き込みのスケジューリングを管理する。1つの実施形態では、制御ユニット110が、一定の入力データストリームを関数コア124に提供する一方で、複数のメモリバンク130及び/又は140への出力データの待ち行列を管理する。他の実施形態では、制御ユニット110が、上記に加えて又は上記とは別に、関数コア124がいつアクティブ/アイドルであるかを管理する。1つの実施形態では、制御ユニット110が、同じ数の入力及び出力を含む関数コアを備えたASDSPに非常に類似する単純な有限状態機械である。
【0021】
いくつかの実施形態によれば、データユニット120が情報を処理し、レジスタ、プログラムカウンタ、命令レジスタ、メモリアドレスレジスタ、カウンタ及び/又は関数コアなどの標準的なプロセッサ要素を含む。1つの実施形態では、データユニット110が、1又はそれ以上の関数コア124を含む。1つの例示的な実施形態では、図1に示すように、データユニット120が命令メモリ122及び関数コア124を含む。1つの実施形態では、命令メモリ122が、命令セットからの1又はそれ以上の命令を含む。1又はそれ以上の実施形態によれば、命令メモリ122に含まれる各命令がフェッチされ、復号されて実行される。1つの実施形態では、命令セットが少なくとも2つの命令を含み、最小ビット数を使用して符号化される。このような実施形態では、一方の命令が特定のアプリケーションのためのものであり、他方の命令がプロセッサを停止させるためのものである。この停止命令は、プログラム実行の制御をオペレーティングシステム又はホストプロセッサに戻すものである。いくつかの実施形態では、命令セットが、データを内部レジスタ及びその他にロードして記憶するための命令をさらに含むことができる。
【0022】
1つの実施形態では、各アプリケーションが固有のASDSPを定義し、従って異なる命令に同じ演算コードを再使用することができる。例えば、高速フーリエ変換(FFT)を実施するためのASDSPと離散コサイン変換(DCT)を実施するためのASDSPは、いずれも演算コードが全く同じ2つの命令を含むことができる。すなわち、いくつかの実施形態では、異なる関数コア124を有する2つのASDSPが、同じ演算コードを2つの全く異なる数式に再使用することができる。1又はそれ以上の実施形態では、ASDSP上の命令セットの演算コードを、別のASDSPに対して全体的に又は部分的に再使用することができる。
【0023】
いくつかの実施形態では、小さな命令セットが、システムクロック速度の最大化に寄与する。命令数が少ないことにより、命令復号論理が最小化され、設計のクリティカルパスにおける遅延の一因となることがない。いくつかの実施形態では、特定用途向け関数コア124を使用することにより、縮小命令セットの機能が実現される。
【0024】
さらに、図1に示すように、いくつかの実施形態では、命令メモリ122がデータユニット120の一部として構成され、データメモリバンク130及び140から分離される。この例示的な構成は、命令メモリからのより高速な読み出しを可能にし、従ってASDSPの速度に寄与する。
【0025】
いくつかの実施形態では、関数コア124が、データユニット120の計算要素を含む。1つの実施形態では、関数コア124が、算術論理演算ユニット(ALU)に類似するが、所与のアプリケーションに必要な固定又は浮動小数点演算しか実行しない。いくつかの実施形態では、関数コア124が高度にパイプライン化され、複数の入力及び出力を有し、各サイクル中にパイプラインが満たされると、より低水準の原始関数を含む複雑な数式を効果的に計算する。
【0026】
いくつかの実施形態では、関数コアを使用して、固定又は浮動小数点ベクトル演算を実行する。1つの実施形態では、関数コア124の構造が、n個の入力及び単一の出力を含むことができる。図5に、いくつかの実施形態による例示的な関数コア124を示しており、ここでは関数コア124が、レジスタR0〜R7により供給される8個の入力及び単一の出力Yを含む。1つの実施形態では、関数コア124をパイプライン化して、図5に示す関数コアと同様の2又はそれ以上の関数コアで構成することができる。1つの実施形態では、関数コア124が、実行する特定の関数に応じて最大n個の入力及びm個の出力を有することができる。1つの実施形態では、n及びmが1以上の整数である。1つの実施形態では、関数コアの入力及び出力が、各々32ビットである。
【0027】
図6に、関数コア124のさらに別の例示的な実施形態を示す。図6に示す実施形態では、関数コア124が、基本関数コア(FFC)510と呼ばれる1又はそれ以上の基本構築ブロックを含み、図6にはこれらの各々を八角形で示している。1つの実施形態では、FFC510が、加算、減算、乗算又は除算などの特定の算術的原始関数を実行するパイプライン化された32ビット浮動小数点ベクトルデータ処理ユニットである。1つの実施形態によれば、FFC510が、2つの入力及び単一の出力を有する単一の基本演算を実行する。各FFC510は、そのイネーブルピン及びdoneピンを介して制御することができる。イネーブルピンは、FFC510の入力上に有効な入力データが存在するかどうかを示す。イネーブルピンは、原始的演算が開始されることも示す。doneピンは、有効な出力データが存在するかどうかを示す。FFCは、基礎関数コア(BFC)のアーキテクチャの平衡を保つための実行遅延をさらに行うことができる。1つの実施形態では、FFC510を、平衡のとれたFFCとすることにより、単一の入力から開始して単一の出力で終了するFFCを通じた全ての経路上に同じ数のパイプライン段が存在するようにすることができる。また、このような実施形態では、任意の入力から任意の出力への全ての経路が、同じ数のパイプライン段を含む。
【0028】
いくつかの実施形態による、図6に長方形のユニットとして示すBFC520は、より複雑な算術演算を実行するために互いに論理的に接続された2又はそれ以上のFFCを含む。いくつかの実施形態では、BFC520の構造が、オリジナルアルゴリズムの主計算ループ内の計算に基づくことができる。従って、いくつかの実施形態では、FFC520が、ドット積、さらには信号処理変換などのより複雑な関数を計算するためにツリー状に接続される。
【0029】
関数コア階層の最上位の又は最も複雑なレベルが完全関数コア(CFC)530である。完全関数コアは、指定されたASDSPのためのオリジナルDSPアルゴリズムの計算全体を実行する。1つの実施形態では、図6に示すように、CFC530が、図1に示す関数コア124である。図示のように、CFC530は、レジスタR0〜R7により供給される8つの入力と、2つの出力X及びYを含む。1つの実施形態では、各完全関数コアがn個の入力及びm個の出力を含むことができ、n及びmは1以上の整数である。いくつかの実施形態では、CFC530が、1又はそれ以上のBSC520で構成される。1つの実施形態では、CFC内のBFCの数をFPGA領域とデータメモリサイズの関数として、データの幅に焦点を合わせることができる。すなわち、FPGAが単一のBFCしかサポートできない1つの実施形態では、CFCをBFCと同等にすることができる。一方、FPGAが複数のBFCをサポートできる実施形態では、CFCをBFCの集まりとすることができる。
【0030】
1つの実施形態では、関数コア124が、浮動小数点処理ユニットである。いくつかの実施形態では、浮動小数点演算を使用することにより、デジタル信号処理アルゴリズムにおける処理の結果として得られる精度が増すとともに、ハードウェアシステムのデバッグがさらに可能になる。例えば、1つの実施形態では、デバッグを目的として、ハードウェアシステム内のノードを、同じアルゴリズムの浮動小数点ソフトウェアの実施構成におけるこれらのノードの対応する行に照らしてチェックすることができる。ソフトウェアにより生成された浮動小数点値を、ハードウェア版のアルゴリズムにより生成された浮動小数点値に照らしてチェックすることにより、ハードウェアの機能を容易に検証することができる。2つの値が等しければ、ハードウェアの実施構成にエラーはない。別の実施形態では、関数コア124を固定小数点関数コアとすることができる。上述したように、いくつかの実施形態では、各ASDSP内に複数の関数コアが存在することができる。従って、パイプラインが満たされると、ハードウェアがクロックサイクルごとに結果を生じるので、複雑な演算計算を完了するために必要な総サイクル数を大幅に減少させることができる。
【0031】
1つの実施形態では、ASDSPに接続されるメモリバンク130及び140の数を、2個〜数百個のメモリバンクとすることができる。1つの実施形態では、メモリバンクの数が少なくとも2個より多い。別の実施形態では、メモリバンクの数を少なくとも10個より多くすることができ、さらに別の実施形態では、メモリバンクの数を少なくとも100個より多くすることができる。1つの実施形態では、提案するASDSP100が、通常、数十個〜数百個のメモリバンク130及び140に対応する。複数メモリのアーキテクチャは、この提案するアーキテクチャを、通常はたったの1個又は2個しか付属メモリバンクを有していない従来のDSPと区別する。すなわち、従来のプロセッサは、基板上のピンの数に限界があり、従って各ASDSPに接続できるメモリバンクの数に限界がある。ローカルなオンボードメモリを利用することにより、現在の例示的な実施形態では、1サイクル当たりの読み出しが多くなり、従って従来のプロセッサに比べてASDSPの性能を高めることができる。図1に示すように、ASDSPをオンボードの又はローカルなメモリバンク130に接続することができる。1つの実施形態では、図1に示すように、ASDSPが外部メモリバンク140にさらに接続される。別の実施形態では、ASDSPをローカルメモリバンク130又は外部メモリバンク140のみに接続することができる。
【0032】
いくつかの実施形態では、外部メモリバンク140の数を、例えばFPGAボード上のピンの数及び/又はその他の構造的制限によって制限することができる。しかしながら、ローカルメモリバンク130を使用することで、大量のメモリバンクを収容することができる。いくつかの実施形態では、大量のメモリバンクを収容することで、各メモリバンク130及び/又は140からの/への同時読み出し/同時書き込みが可能になる。従って、1又はそれ以上の実施形態では、メモリアクセスを含む、計算に必要な総サイクル数を大幅に減少させることができる。
【0033】
1つの実施形態では、例えば、外部メモリバンク140とローカルメモリバンク130をいずれも使用する場合、外部メモリバンクを、初期化用及びローカルメモリバンク130へのデータ提供用に使用することができる。1つの実施形態では、ASDSPに接続されるローカルメモリバンクの数を、関数コアの入力及び出力の数と同じにすることができる。いくつかの実施形態では、l個のローカルメモリバンク130を利用して、同時に実行できる全ての読み出し及び/又は書き込みのために、ASDSP100にデータを提供するためのメモリバンク130が存在するようにすることができる。このような実施形態では、外部メモリバンク140からローカルメモリバンク130にデータを供給し、このローカルメモリバンク130が、ASDSPの特定のアプリケーションを実行するために必要なデータをさらにプロセッサに供給することができる。
【0034】
1つの実施形態では、提案する複数メモリASDSP100を実現するためにFPGA200を使用する。1つの実施形態では、FPGA200が、ブロックRAMと呼ばれる何百もの小さなメモリバンクを含む。従来のプロセッサのように単一のメインメモリに接続されるのではなく、ASDSP100は、外部メモリバンク140の他にも多くのローカルメモリバンク130に接続して、その入力/出力データ帯域幅を大幅に増加させる。1つの実施形態では、n個のメモリバンクを有するASDSPが、単一のクロックサイクルでn回の同時読み出し/書き込みを行うことができる。1又はそれ以上の実施形態では、メモリバンクの各々が、単一のクロックサイクルで32又は64ビットのデータを転送することができる。FPGAの最大クロック速度は、通常のマイクロプロセッサのそれよりも桁違いに遅いので、いくつかの実施形態においてFPGAを使用することにより、ASDSPが必要とする電力が通常のプロセッサよりも少なくて済むようになる。
【0035】
1又はそれ以上の実施形態では、図示のように、FPGA上で実現される制御ユニット110とデータユニット120の組み合わせがデジタル信号プロセッサを構成する。計算は、データユニット120が制御ユニット110と連動することによって行われる。
【0036】
従って、いくつかの実施形態に関しては、各ASDSP100が、複数のメモリバンク130及び140と通信するのに必要なハードウェア、及び各特定のアプリケーションの特徴である数式を計算する関数コアハードウェアを含む。いくつかの実施形態では、ASDSP100が、小さな命令セットを有し、特定用途向け関数コアを含み、複数のメモリバンクへの同時読み出し/書き込み動作を行うことができる。
【0037】
図1のASDSP100は、ローカルメモリバンク及び外部メモリバンクのいずれとも通信する非対話型ASDSPとして示しているが、いくつかの異なる実施形態では、各ASDSP100を、ローカルメモリバンク及び/又は外部メモリバンクに接続された非対話型又は対話型ASDSPのいずれの形で構成してもよいと理解されたい。図2A〜図2Cに、非対話型ASDSP100の3つの考えられる構成を示す。1つの実施形態では、非対話型ASDSP100、すなわち他のASDSPとメモリバンクを共有しないASDSPを、複数のローカルメモリバンクML0〜MLl-1に接続された図2Aに示すASDSP−Lのようにローカルメモリのみに接続される(ASDSP−L)ように、複数のローカルメモリML0〜MLl-1及び外部メモリME0〜MEe-1に接続された図2Bに示すASDSP−LEのようにローカルメモリと外部メモリの両方に接続される(ASDSP−LE)ように、或いは複数の外部メモリME0〜MEe-1に接続された図2Cに示すASDSP−Eのように外部メモリのみに接続される(ASDSP−E)ように構成することができる。
【0038】
別の実施形態では、ASDSPを対話型DSPとして構成して、メモリバンクの1又はそれ以上を別のASDSPと共有するようにすることができる。図3A〜図3Dに、1又はそれ以上の実施形態による対話型ASDSP100の考えられる構成を示す。これらの対話型ASDSP100は、各ASDSP100が、複数の共有ローカルメモリMS0〜MSs-1に接続された図3Aに示すASDSP−Sのように共有ローカルメモリのみに接続される(ASDSP−S)ように、複数の共有ローカルメモリMS0〜MSs-1及び非共有ローカルメモリML0〜MLl-1に接続された図3Bに示すASDSP−LSのように共有ローカルメモリ及び共有されていないローカルメモリに接続される(ASDSP−LS)ように、複数の共有ローカルメモリMS0〜MSs-1及び外部メモリME0〜MEe-1に接続された図3CのASDSP−SEのように共有ローカルメモリ及び外部メモリに接続される(ASDSP−SE)ように、或いは複数の共有ローカルメモリMS0〜MSs-1と、非共有ローカルメモリML0〜MLl-1と、外部メモリME0〜MEe-1とに接続された図3Dに示すASDSP−LSEのようにローカルメモリ、共有ローカルメモリ、及び外部メモリに接続される(ASDSP−LSE)ように構成することができる。
【0039】
1つの実施形態では、同じFPGA200内に複数の対話型ASDSP100を統合することができる。図4A、図4B、図4C及び図4Dに、2又はそれ以上のASDSP100が配置されたFPGA200の例示的な実施形態を示す。図4Aは、第1のASDSP100a及び第2のASDSP100bが配置されたFPGA200を示す図である。この例示的な実施形態では、ASDSP100aを、非共有ローカルメモリバンク130a及び共有ローカルメモリバンク130bの両方を有するASDSP−LSとして示している。さらに、ASDSP100bを、共有ローカルメモリバンク130b及び外部メモリバンク140と通信するASDSP−SEとして示している。従って、図4Aの例示的な実施形態では、ASDSP100a及び100bは、ローカルメモリバンク130bを共有する対話型ASDSPである。
【0040】
図4Bには、3つのASDSP100c、100d及び100eが配置されるように構成された、別の例示的な実施形態によるFPGA200を示している。図示のように、ASDSP100cは、共有ローカルメモリ130a及び外部メモリ140aに接続される。さらに、ASDSP100dは、共有ローカルメモリバンク130aに接続されるとともに、共有ローカルメモリバンク130bにさらに接続される。さらに図4Bに示すように、ASDSP100eは、共有ローカルメモリバンク130b、ローカルメモリバンク130c、及び外部メモリバンク140bと通信する。
【0041】
図4Cは、2つのASDSP100を有するFPGA200の別の実施形態を示す図である。ASDSP100fを、共有ローカルメモリバンク130に接続された形で示しており、ASDSP100gも、同じ共有ローカルメモリバンク130、及び外部メモリバンク140に接続される。さらに、図4Dは、2つのASDSP100h及び100iが配置されたFPGA200のさらに別の例示的な実施形態を示す図である。図示のように、ASDSP100hは、共有ローカルメモリバンク130及び外部メモリバンク140aと通信し、ASDSP100iも、共有ローカルメモリバンク130に接続されるとともに、外部メモリバンク140bにさらに接続される。なお、上記の図は、FPGAの例示的な実施形態を示すものであり、いくつかの実施形態では、1又はそれ以上のASDSPを有するFPGA200の異なる変形例を使用することができる。
【0042】
1つの実施形態では、各々が特定のDSPアルゴリズムを実行する高性能デジタル信号プロセッサのライブラリが提供される。各プロセッサは、小さな命令セットを含んで特定のアルゴリズムを実施する。1又はそれ以上の実施形態では、これらの特定アルゴリズム向けデジタル信号プロセッサ(ASDSP)を使用して、高水準DSPアプリケーションの計算的に集中した部分をカスタムハードウェアに置き換えることにより、ソフトウェアの障害を軽減する。
【0043】
1つの実施形態では、各ASDSPが、実行のために市販の構成可能な演算器に個別に搭載される。このシステムの魅力的な特徴は、FPGAなどの演算器を、理論的に無限数のDSPアルゴリズムに合わせて再プログラムできる点である。
【0044】
合成されたプロセッサの各々は、サイズを減少させて命令復号論理の速度を高める小さな命令セットを有する。1つの実施形態では、バックエンド編集システムを使用して、ビットストリーム合成の過程を自動化する。ライブラリ内の各ビットストリームを使用して、FPGAを、特定アルゴリズム向けのデジタル信号プロセッサとして機能するようにプログラムする。
【0045】
1つの実施形態では、C/C++などの高水準プログラミング言語で記述されたDSPアルゴリズムがシステムに入力される。1又はそれ以上の実施形態では、システムが、この高水準の記述を、生成/合成できる個別化された高性能プロセッサのVHDLモデルに変換する。この生成され個別化されたプロセッサは、オリジナルアルゴリズムを、典型的な市販の合成ツールを使用するマイクロプロセッサよりも大幅に速く実行する。
【0046】
1つの実施形態では、システムが、まずDSPアルゴリズムの高水準動作記述をプロセッサレベルの記述に変換する。1つの実施形態では、システムが、DSPアルゴリズムを、アルゴリズムに合わせた命令を含むプロセッサ記述に変換する。1又はそれ以上の実施形態では、このプロセッサ記述が、同じプロセッサの構造的な/レジスタ転送レベル(RTL)の記述に変換される。1つの実施形態では、プロセッサの構造的な/RTLモデルが生成されると、市販のツールを使用して、論理合成、及び配置及びルーティングを行うことができる。1又はそれ以上の実施形態では、この処理の結果が、FPGA内にロードされる準備ができたFPGAビットストリームとなる。
【0047】
1又はそれ以上の実施形態では、システムにDSPアルゴリズムが入力され、このアルゴリズムを使用してデジタル信号プロセッサのプロセッサレベルの記述を生成又は作成する。この中間疑似VHDL記述が、VHDL内でも指定される同じデジタル信号プロセッサの合成可能な構造的な/レジスタ転送レベルの記述に変換される。システムの最終段階は、論理合成及び配置及びルーティングに関与する。この段階で、FPGAをプログラムするためのハードウェア構成ファイル又はFPGAビットストリームが生成される。
【0048】
このシステムの目標は、利用可能なFPGAリソース及びメモリを最大に利用する特定アルゴリズム向けのDSPを作り出すことである。これは、アルゴリズムを実行するのに必要な総クロックサイクル数を最小化するために実施される効果的なリソース割り当て(RA)及びスケジューリングを通じて達成される。利用可能なFPGAリソースを効率的かつ高度に利用することにより、プロセッサのスループットが増し、システムの性能が向上する。RAは、利用可能なFPGA領域及び利用可能なメモリ数を所与として、FPGA領域の利用度を最大化する完全な関数コアを定義するという課題を解決する。最後に、DSPアルゴリズムの計算部分を、各関数コアを使用できる利用可能なタイムスロットにマッピングすることにより、スケジューリングが実行される。
【0049】
図7は、1又はそれ以上の実施形態による、複数メモリ特定用途向けデジタル信号プロセッサ(ASDSP)を含む集積回路装置を実現する方法のフロー図である。
【0050】
まず、ステップ710においてデータユニットを生成する。いくつかの実施形態によれば、このデータユニットは情報を処理し、レジスタ、プログラムカウンタ、命令レジスタ、メモリアドレスレジスタ、カウンタ及び/又は関数コアなどの標準的なプロセッサ構成要素を含む。いくつかの実施形態では、データユニットが、命令メモリ及び関数コアを含む。
【0051】
1つの実施形態では、ステップ710において、ASDSPにより実行されるアプリケーションを定義する1又はそれ以上の関数コアを生成する。1つの実施形態では、上述したように、関数コアがデータユニットの計算要素を含む。1つの実施形態では、関数コアを実現するステップが、特定のDSPアルゴリズムを受け取るステップと、このアルゴリズムを実行するための演算の組を生成するステップとを含む。1つの実施形態では、この演算の組が、利用可能なFPGAリソース及びメモリを最大に利用するように生成される。1つの実施形態では、次にこれらの演算の1又はそれ以上が、データユニットの関数コアとして実施される。1つの実施形態では、関数コアが演算論理ユニット(ALU)に類似するが、所与のアプリケーションに必要な固定又は浮動小数点演算しか実行しない。いくつかの実施形態では、関数コア124が高度にパイプライン化され、複数の入力及び出力を有し、各サイクル中にパイプラインが満たされると、より低水準の原始関数を含む複雑な数式を効果的に計算する。
【0052】
1つの実施形態では、上述したように、この関数コアを、1又はそれ以上の基本関数コア、基礎関数コア及び/又は完全関数コアの組み合わせとすることができる。1つの実施形態では、関数コアの階層構造が、回路装置のリソース及び材料を最大に利用するようにされる。上述したように、図5には、いくつかの実施形態による、ステップ710で生成された例示的な関数コアを示しており、ここでは関数コア124が、レジスタR0〜R7により供給される8個の入力及び単一の出力Yを含む。1つの実施形態では、関数コア124をパイプライン化して、図5に示す関数コアと同様の2又はそれ以上の関数コアで構成することができる。1つの実施形態では、関数コア124が、実行する特定の関数に応じて最大n個の入力及びm個の出力を有することができる。1つの実施形態では、関数コアの入力及び出力が、各々32ビットである。
【0053】
さらに、ステップ710において、データユニットの一部として命令メモリを生成する。1つの実施形態では、この命令メモリが、命令セットからの1又はそれ以上の命令を含む。1又はそれ以上の実施形態によれば、命令メモリ122に含まれる各命令がフェッチされ、復号されて実行される。1つの実施形態では、命令セットが少なくとも2つの命令を含み、最小ビット数を使用して符号化される。このような実施形態では、一方の命令が特定のアプリケーションのためのものであり、他方の命令がプロセッサを停止させるためのものである。この停止命令は、プログラム実行の制御をオペレーティングシステム又はホストプロセッサに戻すものである。いくつかの実施形態では、命令セットが、ロード及び記憶のための命令、並びに様々な他のコマンド及び/又は関数を実行するためのその他の命令を含むことができる。
【0054】
1つの実施形態では、各アプリケーションが固有のASDSPを定義し、従って異なる命令に同じ演算コードを再使用することができる。例えば、高速フーリエ変換(FFT)を実施するためのASDSPと離散コサイン変換(DCT)を実施するためのASDSPは、いずれも演算コードが全く同じ2つの命令を含むことができる。すなわち、いくつかの実施形態では、異なる関数コアを有する2つのASDSPが、同じ演算コードを2つの全く異なる数式に再使用することができる。1又はそれ以上の実施形態では、ASDSP上の命令セットの演算コードを、別のASDSPに対して全体的に又は部分的に再使用することができる。
【0055】
いくつかの実施形態では、小さな命令セットが、システムクロック速度の最大化に寄与する。命令数が少ないことにより、命令復号論理が最小化され、設計のクリティカルパスにおける遅延の一因となることがない。いくつかの実施形態では、特定用途向け関数コアを使用することにより、縮小命令セットの機能が実現される。
【0056】
いくつかの実施形態では、命令メモリがデータユニットの一部として構成され、データメモリバンクから分離される。この例示的な構成は、命令メモリからのより高速な読み出しを可能にし、従ってASDSPの速度に寄与する。
【0057】
次に、ステップ720において、制御ユニットを生成する。1つの実施形態では、制御ユニットが、1又はそれ以上のタスクを実行する1又はそれ以上の有限状態機械である。例えば、1つの実施形態では、制御ユニットが、メモリの読み出し及び書き込みを管理し、命令を復号し、データが利用可能になると関数コアを開始できるようにし、ホストに完了を信号送信し、及び/又は制御をホストプロセッサ及び/又はオペレーティングシステムに戻す。1つの実施形態では、制御ユニットが、ASDSP100内のデータの流れを制御し、複数のメモリバンクの同時読み出し及び書き込みのスケジューリングを管理する。1つの実施形態では、制御ユニットが、一定の入力データストリームを関数コアに提供する一方で、複数のメモリバンクへの出力データの待ち行列を管理する。他の実施形態では、制御ユニットが、上記に加えて又は上記とは別に、関数コアがいつアクティブ/アイドルであるかを管理する。1つの実施形態では、制御ユニットが、同じ数の入力及び出力を含む関数コアを備えたASDSPに非常に類似する1又はそれ以上の単純な有限状態機械である。
【0058】
1つの実施形態では、ステップ710及び720が完了すると、ASDSPが中央プロセッサのライブラリに記憶される。各ASDSPは、FPGAビットストリームとして記憶される。いくつかの実施形態では、ASDSPをFPGAボード上で使用するために、ASDSPの機能及びその他の属性を記述するモジュール定義ファイルを維持することができる。
【0059】
ステップ730において、例えばFPGAなどの集積回路装置の回路基板上にデータユニット及び制御ユニットを搭載する。1つの実施形態では、データユニット及び制御ユニットの一方又は両方が、FPGA上にロードされるように構成されたビットストリームを含む。なお、上述した例示的な実施形態では、このアーキテクチャがフィールドプログラマブルゲートアレイ(FPGA)上に実装される。他の実施形態では、マスクプログラマブルゲートアレイ又はカスタム集積回路(図示せず)上にASDSPを実装することができる。
【0060】
1又はそれ以上の実施形態では、FPGAなどの回路装置が複数のローカルメモリブロックを含むとともに、外部メモリバンクに結合されたピンをさらに含むことができる。ステップ740において、制御ユニット及びデータユニットを、1又はそれ以上のローカルメモリバンク(例えば、図1のメモリML0〜MLl-1)及び/又は外部メモリバンク(例えば、図1のメモリME0〜MEe-1)を含むいくつかのメモリバンクに直接結合する。1つの実施形態では、ASDSPが、回路基板を含む集積回路装置上に実装される。
【0061】
このようにして、上記の方法は、利用可能なFPGAリソース及びメモリを最大に利用する特定アルゴリズム/用途向けDSPを生成する。これは、アルゴリズムを実行するのに必要な総クロックサイクル数を最小化するために実施される効果的なリソース割り当て(RA)及びスケジューリングを通じて達成される。利用可能なFPGAリソースを効率的かつ高度に利用することにより、プロセッサのスループットが増し、システムの性能が向上する。RAは、利用可能なFPGA領域及び利用可能なメモリ数を所与として、FPGA領域の利用度を最大化する完全な関数コアを定義するという課題を解決する。最後に、DSPアルゴリズムの計算部分を、各関数コアを使用できる利用可能なタイムスロットにマッピングすることにより、スケジューリングが実行される。
【0062】
1つの実施形態では、上記の方法を、コンピュータ可読命令を記憶する有形コンピュータ可読記憶媒体を通じて実施することができる。いくつかの実施形態では、このコンピュータ可読記憶媒体が、1又はそれ以上のプロセッサによって実行されたときに上述した方法のステップ710〜740の1又はそれ以上を実行するように構成された命令を記憶する。
【0063】
本明細書で説明した機能ユニットの1又はそれ以上は、様々な種類のプロセッサが実行できるように、少なくとも部分的にソフトウェアの形で実現することができる。実行可能コードの識別されたモジュールは、例えばオブジェクト、手順、又は機能として体系化できる、例えばコンピュータ命令の1又はそれ以上の物理的又は論理的ブロックを含むことができる。これにも関わらず、識別されたモジュールの実行ファイルを物理的にともに位置付ける必要はないが、これらは、論理的に結合された場合、モジュールを含むとともにモジュールのための定められた目的を達成する、様々な場所に記憶された異なる命令を含むことができる。
【0064】
1又はそれ以上の実施形態に含めることができる1又はそれ以上の構成要素の様々な追加の詳細は、(1)Gloster他、「2D離散コサイン変換を高速実行するための構成可能なデジタル信号プロセッサ設計の最適化(Optimizing the Design of a Configurable Digital Signal Processor for Accelerated Execution of the 2−D Discrete Cosine Transform)」2006年、第39回システム科学に関するハワイ会議、IEEE0−7695−2507−5/06、及び(2)Gay、Wanda、「構成可能なデジタル信号プロセッサ合成のための最適化ツール及び技術(Optimization Tools and Techniques for Configurable Digital Signal Processor Synthesis)」ハワード大学、UMI第3331459号、プロクエスト出版、2009年1月27日に記載されており、これらの文献は全て引用により本明細書に組み入れられる。
【0065】
本明細書で開示した発明については、特定の実施形態、実施例及びその用途を用いて説明したが、当業者であれば、特許請求の範囲に示す本発明の範囲から逸脱することなく、本発明に数多くの修正及び変更を行うことができる。
【符号の説明】
【0066】
100 ASDSP
110 制御ユニット
120 データユニット
122 命令メモリ
124 関数コア
130 ローカルメモリバンク
140 外部メモリバンク
200 FPGA/ASIC
210 回路基板
【特許請求の範囲】
【請求項1】
回路基板と、
前記回路基板上に実装された1又はそれ以上のデジタル信号プロセッサと、
を備えた集積回路装置であって、各デジタル信号プロセッサが、
データユニットと、
制御ユニットと、
を含み、前記データユニットが、
特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアと、
前記特定のアプリケーションを実行するためのコマンドを前記制御ユニット及び前記データユニットに送信するように構成された1又はそれ以上の命令を記憶する命令メモリと、
を含み、前記制御ユニットが、複数のメモリバンクと前記関数コアの間の、前記特定のアプリケーションを実行するためのデータの流れを制御するように構成され、
前記複数のメモリバンクが、前記1又はそれ以上のデジタル信号プロセッサの各々に結合されるとともに、前記回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクを含む、
ことを特徴とする集積回路装置。
【請求項2】
前記複数のメモリバンクが、前記1又はそれ以上のデジタル信号プロセッサの少なくとも1つに結合された1又はそれ以上の外部メモリバンクをさらに含む、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項3】
前記データユニットが、命令レジスタ及びメモリアドレスレジスタなどの1又はそれ以上のレジスタ、及びプログラムカウンタなどの1又はそれ以上のカウンタのうちの少なくとも1つをさらに含む、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項4】
前記命令メモリが、少なくとも2つの命令を含む、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項5】
前記少なくとも2つの命令が、前記特定のアプリケーションのための第1の命令、及び前記デジタル信号プロセッサを停止するための第2の命令を含む、
ことを特徴とする請求項4に記載の集積回路装置。
【請求項6】
前記命令メモリが、前記特定の数式を実行するための入力データをロードするための命令、及び前記関数コアの出力データを記憶するための命令をさらに含む、
ことを特徴とする請求項5に記載の集積回路装置。
【請求項7】
前記命令メモリが前記データユニットの一部であり、前記データユニットに結合された前記複数のメモリバンクから分離される、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項8】
前記関数コアが、固定小数点演算及び浮動小数点演算の一方又は両方を実行する、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項9】
前記関数コアが、前記特定の数式を実行するための入力データを受け取るための1又はそれ以上の入力を含み、前記実行された特定の数式の結果を含む1又はそれ以上の出力をさらに含む、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項10】
前記関数コアが、前記特定の数式の一部を各々が実行する複数の関数コアを含む、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項11】
前記関数コアが、前記特定の数式に対してクロックサイクルごとに出力が提供されるように構成される、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項12】
少なくとも2つのデジタル信号プロセッサを含み、該少なくとも2つのデジタル信号プロセッサが少なくとも1つの共有メモリバンクを含み、前記少なくとも2つのデジタル信号プロセッサが前記少なくとも1つの共有メモリバンクを共有する、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項13】
前記少なくとも1つの共有メモリバンクが、前記回路基板上に統合されたローカルメモリバンクを含む、
ことを特徴とする請求項12に記載の集積回路装置。
【請求項14】
前記少なくとも1つの共有メモリバンクが、前記回路基板に結合された外部メモリを含む、
ことを特徴とする請求項12に記載の集積回路装置。
【請求項15】
1又はそれ以上のデジタル信号プロセッサを生成するステップを含む方法であって、前記1又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、
データユニットを生成するステップと、
制御ユニットを生成するステップと、
を含み、前記データユニットを生成するステップが、
特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、
前記特定のアプリケーションを実行するためのコマンドを前記制御ユニット及び前記データユニットに送信するように構成された1又はそれ以上の命令を記憶する命令メモリを生成するステップと、
を含み、前記制御ユニットが、複数のメモリバンクと前記関数コアの間の、前記特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法が、
前記1又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、
前記1又はそれ以上のデジタル信号プロセッサの各々を前記回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクに結合するステップを含む、前記1又はそれ以上のデジタル信号プロセッサの各々を前記複数のメモリバンクに結合するステップと、
をさらに含むことを特徴とする方法。
【請求項16】
前記データユニットを前記複数のメモリバンクに結合するステップが、前記1又はそれ以上のデジタル信号プロセッサの各々を少なくとも1又はそれ以上の外部メモリバンクに結合するステップをさらに含む、
ことを特徴とする請求項15に記載の方法。
【請求項17】
前記命令メモリが前記データユニットの一部であり、前記データユニットに結合された前記複数のメモリバンクから分離される、
ことを特徴とする請求項15に記載の方法。
【請求項18】
前記関数コアが、前記特定の数式の一部を各々が実行する1又はそれ以上の関数コアを含む、
ことを特徴とする請求項15に記載の方法。
【請求項19】
前記1又はそれ以上のデジタル信号プロセッサの各々が、前記回路基板上にロードされるように構成されたビットストリームを含む、
ことを特徴とする請求項15に記載の方法。
【請求項20】
プロセッサにより実行されたときに方法を実行するように構成されたコンピュータ可読命令を有する有形コンピュータ可読記憶媒体であって、前記方法が、
1又はそれ以上のデジタル信号プロセッサを生成するステップを含み、前記1又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、
データユニットを生成するステップと、
制御ユニットを生成するステップと、
を含み、前記データユニットを生成するステップが、
特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、
前記特定のアプリケーションを実行するためのコマンドを前記制御ユニット及び前記データユニットに送信するように構成された1又はそれ以上の命令を記憶する命令メモリを生成するステップと、
を含み、前記制御ユニットが、複数のメモリバンクと前記関数コアの間の、前記特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法が、
前記1又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、
前記1又はそれ以上のデジタル信号プロセッサの各々の前記データユニットを前記回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクに結合するステップを含む、前記1又はそれ以上のデジタル信号プロセッサの各々を前記複数のメモリバンクに結合するステップと、
をさらに含むことを特徴とする有形コンピュータ可読記憶媒体。
【請求項1】
回路基板と、
前記回路基板上に実装された1又はそれ以上のデジタル信号プロセッサと、
を備えた集積回路装置であって、各デジタル信号プロセッサが、
データユニットと、
制御ユニットと、
を含み、前記データユニットが、
特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアと、
前記特定のアプリケーションを実行するためのコマンドを前記制御ユニット及び前記データユニットに送信するように構成された1又はそれ以上の命令を記憶する命令メモリと、
を含み、前記制御ユニットが、複数のメモリバンクと前記関数コアの間の、前記特定のアプリケーションを実行するためのデータの流れを制御するように構成され、
前記複数のメモリバンクが、前記1又はそれ以上のデジタル信号プロセッサの各々に結合されるとともに、前記回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクを含む、
ことを特徴とする集積回路装置。
【請求項2】
前記複数のメモリバンクが、前記1又はそれ以上のデジタル信号プロセッサの少なくとも1つに結合された1又はそれ以上の外部メモリバンクをさらに含む、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項3】
前記データユニットが、命令レジスタ及びメモリアドレスレジスタなどの1又はそれ以上のレジスタ、及びプログラムカウンタなどの1又はそれ以上のカウンタのうちの少なくとも1つをさらに含む、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項4】
前記命令メモリが、少なくとも2つの命令を含む、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項5】
前記少なくとも2つの命令が、前記特定のアプリケーションのための第1の命令、及び前記デジタル信号プロセッサを停止するための第2の命令を含む、
ことを特徴とする請求項4に記載の集積回路装置。
【請求項6】
前記命令メモリが、前記特定の数式を実行するための入力データをロードするための命令、及び前記関数コアの出力データを記憶するための命令をさらに含む、
ことを特徴とする請求項5に記載の集積回路装置。
【請求項7】
前記命令メモリが前記データユニットの一部であり、前記データユニットに結合された前記複数のメモリバンクから分離される、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項8】
前記関数コアが、固定小数点演算及び浮動小数点演算の一方又は両方を実行する、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項9】
前記関数コアが、前記特定の数式を実行するための入力データを受け取るための1又はそれ以上の入力を含み、前記実行された特定の数式の結果を含む1又はそれ以上の出力をさらに含む、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項10】
前記関数コアが、前記特定の数式の一部を各々が実行する複数の関数コアを含む、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項11】
前記関数コアが、前記特定の数式に対してクロックサイクルごとに出力が提供されるように構成される、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項12】
少なくとも2つのデジタル信号プロセッサを含み、該少なくとも2つのデジタル信号プロセッサが少なくとも1つの共有メモリバンクを含み、前記少なくとも2つのデジタル信号プロセッサが前記少なくとも1つの共有メモリバンクを共有する、
ことを特徴とする請求項1に記載の集積回路装置。
【請求項13】
前記少なくとも1つの共有メモリバンクが、前記回路基板上に統合されたローカルメモリバンクを含む、
ことを特徴とする請求項12に記載の集積回路装置。
【請求項14】
前記少なくとも1つの共有メモリバンクが、前記回路基板に結合された外部メモリを含む、
ことを特徴とする請求項12に記載の集積回路装置。
【請求項15】
1又はそれ以上のデジタル信号プロセッサを生成するステップを含む方法であって、前記1又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、
データユニットを生成するステップと、
制御ユニットを生成するステップと、
を含み、前記データユニットを生成するステップが、
特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、
前記特定のアプリケーションを実行するためのコマンドを前記制御ユニット及び前記データユニットに送信するように構成された1又はそれ以上の命令を記憶する命令メモリを生成するステップと、
を含み、前記制御ユニットが、複数のメモリバンクと前記関数コアの間の、前記特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法が、
前記1又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、
前記1又はそれ以上のデジタル信号プロセッサの各々を前記回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクに結合するステップを含む、前記1又はそれ以上のデジタル信号プロセッサの各々を前記複数のメモリバンクに結合するステップと、
をさらに含むことを特徴とする方法。
【請求項16】
前記データユニットを前記複数のメモリバンクに結合するステップが、前記1又はそれ以上のデジタル信号プロセッサの各々を少なくとも1又はそれ以上の外部メモリバンクに結合するステップをさらに含む、
ことを特徴とする請求項15に記載の方法。
【請求項17】
前記命令メモリが前記データユニットの一部であり、前記データユニットに結合された前記複数のメモリバンクから分離される、
ことを特徴とする請求項15に記載の方法。
【請求項18】
前記関数コアが、前記特定の数式の一部を各々が実行する1又はそれ以上の関数コアを含む、
ことを特徴とする請求項15に記載の方法。
【請求項19】
前記1又はそれ以上のデジタル信号プロセッサの各々が、前記回路基板上にロードされるように構成されたビットストリームを含む、
ことを特徴とする請求項15に記載の方法。
【請求項20】
プロセッサにより実行されたときに方法を実行するように構成されたコンピュータ可読命令を有する有形コンピュータ可読記憶媒体であって、前記方法が、
1又はそれ以上のデジタル信号プロセッサを生成するステップを含み、前記1又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、
データユニットを生成するステップと、
制御ユニットを生成するステップと、
を含み、前記データユニットを生成するステップが、
特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、
前記特定のアプリケーションを実行するためのコマンドを前記制御ユニット及び前記データユニットに送信するように構成された1又はそれ以上の命令を記憶する命令メモリを生成するステップと、
を含み、前記制御ユニットが、複数のメモリバンクと前記関数コアの間の、前記特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法が、
前記1又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、
前記1又はそれ以上のデジタル信号プロセッサの各々の前記データユニットを前記回路基板上に統合された少なくとも2又はそれ以上のローカルメモリバンクに結合するステップを含む、前記1又はそれ以上のデジタル信号プロセッサの各々を前記複数のメモリバンクに結合するステップと、
をさらに含むことを特徴とする有形コンピュータ可読記憶媒体。
【図1】
【図2A】
【図2B】
【図2C】
【図3A】
【図3B】
【図3C】
【図3D】
【図4A】
【図4B】
【図4C】
【図4D】
【図5】
【図6】
【図7】
【図2A】
【図2B】
【図2C】
【図3A】
【図3B】
【図3C】
【図3D】
【図4A】
【図4B】
【図4C】
【図4D】
【図5】
【図6】
【図7】
【公表番号】特表2013−512511(P2013−512511A)
【公表日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願番号】特願2012−541208(P2012−541208)
【出願日】平成22年11月24日(2010.11.24)
【国際出願番号】PCT/US2010/058100
【国際公開番号】WO2011/066459
【国際公開日】平成23年6月3日(2011.6.3)
【出願人】(511105953)ハワード ユニバーシティ (5)
【Fターム(参考)】
【公表日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願日】平成22年11月24日(2010.11.24)
【国際出願番号】PCT/US2010/058100
【国際公開番号】WO2011/066459
【国際公開日】平成23年6月3日(2011.6.3)
【出願人】(511105953)ハワード ユニバーシティ (5)
【Fターム(参考)】
[ Back to top ]