(57)【要約】  回路基板（２１０）と、この回路基板上に実装された１又はそれ以上のデジタル信号プロセッサ（１００）とを含む集積回路装置（２００）を提供する。デジタル信号プロセッサ（１００）は、データユニット（１２０）及び制御ユニット（１１０）を含み、データユニットは、特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コア（１２４）と、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信するように構成された１又はそれ以上の命令を記憶する命令メモリ（１２２）とを含み、制御ユニットは、複数のメモリバンク（１３０、１４０）と関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成され、複数のメモリバンクは、１又はそれ以上のデジタル信号プロセッサの各々に結合されるとともに、回路基板上に統合された少なくとも２又はそれ以上のローカルメモリバンク（１３０）を含む。【選択図】図１
2013512511.tif 000002
【特許請求の範囲】
【請求項１】
回路基板と、
前記回路基板上に実装された１又はそれ以上のデジタル信号プロセッサと、
を備えた集積回路装置であって、各デジタル信号プロセッサが、
データユニットと、
制御ユニットと、
を含み、前記データユニットが、
特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアと、
前記特定のアプリケーションを実行するためのコマンドを前記制御ユニット及び前記データユニットに送信するように構成された１又はそれ以上の命令を記憶する命令メモリと、
を含み、前記制御ユニットが、複数のメモリバンクと前記関数コアの間の、前記特定のアプリケーションを実行するためのデータの流れを制御するように構成され、
前記複数のメモリバンクが、前記１又はそれ以上のデジタル信号プロセッサの各々に結合されるとともに、前記回路基板上に統合された少なくとも２又はそれ以上のローカルメモリバンクを含む、
ことを特徴とする集積回路装置。
【請求項２】
前記複数のメモリバンクが、前記１又はそれ以上のデジタル信号プロセッサの少なくとも１つに結合された１又はそれ以上の外部メモリバンクをさらに含む、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項３】
前記データユニットが、命令レジスタ及びメモリアドレスレジスタなどの１又はそれ以上のレジスタ、及びプログラムカウンタなどの１又はそれ以上のカウンタのうちの少なくとも１つをさらに含む、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項４】
前記命令メモリが、少なくとも２つの命令を含む、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項５】
前記少なくとも２つの命令が、前記特定のアプリケーションのための第１の命令、及び前記デジタル信号プロセッサを停止するための第２の命令を含む、
ことを特徴とする請求項４に記載の集積回路装置。
【請求項６】
前記命令メモリが、前記特定の数式を実行するための入力データをロードするための命令、及び前記関数コアの出力データを記憶するための命令をさらに含む、
ことを特徴とする請求項５に記載の集積回路装置。
【請求項７】
前記命令メモリが前記データユニットの一部であり、前記データユニットに結合された前記複数のメモリバンクから分離される、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項８】
前記関数コアが、固定小数点演算及び浮動小数点演算の一方又は両方を実行する、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項９】
前記関数コアが、前記特定の数式を実行するための入力データを受け取るための１又はそれ以上の入力を含み、前記実行された特定の数式の結果を含む１又はそれ以上の出力をさらに含む、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項１０】
前記関数コアが、前記特定の数式の一部を各々が実行する複数の関数コアを含む、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項１１】
前記関数コアが、前記特定の数式に対してクロックサイクルごとに出力が提供されるように構成される、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項１２】
少なくとも２つのデジタル信号プロセッサを含み、該少なくとも２つのデジタル信号プロセッサが少なくとも１つの共有メモリバンクを含み、前記少なくとも２つのデジタル信号プロセッサが前記少なくとも１つの共有メモリバンクを共有する、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項１３】
前記少なくとも１つの共有メモリバンクが、前記回路基板上に統合されたローカルメモリバンクを含む、
ことを特徴とする請求項１２に記載の集積回路装置。
【請求項１４】
前記少なくとも１つの共有メモリバンクが、前記回路基板に結合された外部メモリを含む、
ことを特徴とする請求項１２に記載の集積回路装置。
【請求項１５】
１又はそれ以上のデジタル信号プロセッサを生成するステップを含む方法であって、前記１又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、
データユニットを生成するステップと、
制御ユニットを生成するステップと、
を含み、前記データユニットを生成するステップが、
特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、
前記特定のアプリケーションを実行するためのコマンドを前記制御ユニット及び前記データユニットに送信するように構成された１又はそれ以上の命令を記憶する命令メモリを生成するステップと、
を含み、前記制御ユニットが、複数のメモリバンクと前記関数コアの間の、前記特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法が、
前記１又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、
前記１又はそれ以上のデジタル信号プロセッサの各々を前記回路基板上に統合された少なくとも２又はそれ以上のローカルメモリバンクに結合するステップを含む、前記１又はそれ以上のデジタル信号プロセッサの各々を前記複数のメモリバンクに結合するステップと、
をさらに含むことを特徴とする方法。
【請求項１６】
前記データユニットを前記複数のメモリバンクに結合するステップが、前記１又はそれ以上のデジタル信号プロセッサの各々を少なくとも１又はそれ以上の外部メモリバンクに結合するステップをさらに含む、
ことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記命令メモリが前記データユニットの一部であり、前記データユニットに結合された前記複数のメモリバンクから分離される、
ことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記関数コアが、前記特定の数式の一部を各々が実行する１又はそれ以上の関数コアを含む、
ことを特徴とする請求項１５に記載の方法。
【請求項１９】
前記１又はそれ以上のデジタル信号プロセッサの各々が、前記回路基板上にロードされるように構成されたビットストリームを含む、
ことを特徴とする請求項１５に記載の方法。
【請求項２０】
プロセッサにより実行されたときに方法を実行するように構成されたコンピュータ可読命令を有する有形コンピュータ可読記憶媒体であって、前記方法が、
１又はそれ以上のデジタル信号プロセッサを生成するステップを含み、前記１又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、
データユニットを生成するステップと、
制御ユニットを生成するステップと、
を含み、前記データユニットを生成するステップが、
特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、
前記特定のアプリケーションを実行するためのコマンドを前記制御ユニット及び前記データユニットに送信するように構成された１又はそれ以上の命令を記憶する命令メモリを生成するステップと、
を含み、前記制御ユニットが、複数のメモリバンクと前記関数コアの間の、前記特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法が、
前記１又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、
前記１又はそれ以上のデジタル信号プロセッサの各々の前記データユニットを前記回路基板上に統合された少なくとも２又はそれ以上のローカルメモリバンクに結合するステップを含む、前記１又はそれ以上のデジタル信号プロセッサの各々を前記複数のメモリバンクに結合するステップと、
をさらに含むことを特徴とする有形コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
〔関連出願との相互参照〕
本出願は、２００９年１１月２５日に出願された「複数メモリ特定用途向けデジタル信号プロセッサ」という名称の米国仮特許出願第６１／２６４，３３４号の利益を主張するものであり、この特許出願の内容及び開示は、その全体が引用により本明細書に組み入れられる。
【０００２】
本発明は、一般にデジタル信号プロセッサに関し、より詳細には、特定用途向けデジタル信号プロセッサに関する。
【背景技術】
【０００３】
この１０年間で、高容量の消費者製品に組み込みアプリケーションを実装するためのデジタル信号プロセッサ（ＤＳＰ）の人気がますます高まってきた。これらのＤＳＰは、組み込みアプリケーションに必要な高性能を低価格で提供するが、既存のプロセッサにより提供される正確さ及び精密さを維持しながら性能及び速度をより高めることができるＤＳＰが依然として必要とされている。これらの新たなプロセッサは、高性能計算用途のための、スーパーコンピュータに代わる低価格の選択肢を提供することができる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｇｌｏｓｔｅｒ他、「２Ｄ離散コサイン変換を高速実行するための構成可能なデジタル信号プロセッサ設計の最適化（Ｏｐｔｉｍｉｚｉｎｇ  ｔｈｅ  Ｄｅｓｉｇｎ  ｏｆ  ａ  Ｃｏｎｆｉｇｕｒａｂｌｅ  Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ  ｆｏｒ  Ａｃｃｅｌｅｒａｔｅｄ  Ｅｘｅｃｕｔｉｏｎ  ｏｆ  ｔｈｅ  ２−Ｄ  Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）」２００６年、第３９回システム科学に関するハワイ会議、ＩＥＥＥ０−７６９５−２５０７−５／０６
【非特許文献２】Ｇａｙ、Ｗａｎｄａ、「構成可能なデジタル信号プロセッサ合成のための最適化ツール及び技術（Ｏｐｔｉｍｉｚａｔｉｏｎ  Ｔｏｏｌｓ  ａｎｄ  Ｔｅｃｈｎｉｑｕｅｓ  ｆｏｒ  Ｃｏｎｆｉｇｕｒａｂｌｅ  Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ  Ｓｙｎｔｈｅｓｉｓ）」ハワード大学、ＵＭＩ第３３３１４５９号、プロクエスト出版、２００９年１月２７日
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明のいくつかの実施形態は、特定のデジタル信号処理アルゴリズムを実行するデジタル信号プロセッサ（ＡＳＤＳＰ）を含む集積回路装置を提供することにより、上記の及びその他の必要性に有利に対処する。
【課題を解決するための手段】
【０００６】
１つの実施形態では、集積回路装置が、回路基板と、この回路基板上に実装された１又はそれ以上のデジタル信号プロセッサとを備え、各デジタル信号プロセッサは、データユニット及び制御ユニットを含み、データユニットは、特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアと、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信するように構成された１又はそれ以上の命令を記憶する命令メモリとを含み、制御ユニットは、複数のメモリバンクと関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成され、複数のメモリバンクは、１又はそれ以上のデジタル信号プロセッサの各々に結合されるとともに、回路基板上に統合された少なくとも２又はそれ以上のローカルメモリバンクを含む。
【０００７】
別の実施形態では、方法が、１又はそれ以上のデジタル信号プロセッサを生成するステップを含み、この１又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、データユニットを生成するステップと、制御ユニットを生成するステップとを含み、データユニットを生成するステップは、特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信するように構成された１又はそれ以上の命令を記憶する命令メモリを生成するステップとを含み、制御ユニットは、複数のメモリバンクと関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法は、１又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、１又はそれ以上のデジタル信号プロセッサの各々を、回路基板上に統合された少なくとも２又はそれ以上のローカルメモリバンクに結合するステップを含む、１又はそれ以上のデジタル信号プロセッサの各々を複数のメモリバンクに結合するステップとをさらに含む。
【０００８】
さらに別の実施形態では、方法を実行するためのコンピュータ可読命令を有する有形コンピュータ可読記憶媒体が、１又はそれ以上のデジタル信号プロセッサを生成するステップを含み、この１又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、データユニットを生成するステップと、制御ユニットを生成するステップとを含み、データユニットを生成するステップは、特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信するように構成された１又はそれ以上の命令を記憶する命令メモリを生成するステップとを含み、制御ユニットは、複数のメモリバンクと関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法は、１又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、１又はそれ以上のデジタル信号プロセッサの各々のデータユニットを、回路基板上に統合された少なくとも２又はそれ以上のローカルメモリバンクに結合するステップを含む、１又はそれ以上のデジタル信号プロセッサの各々を複数のメモリバンクに結合するステップとをさらに含む。
【０００９】
以下の図面とともに示す以下のより詳細な説明から、本発明のいくつかの実施形態の態様、特徴及び利点がより明らかになるであろう。
【図面の簡単な説明】
【００１０】
【図１】本発明のいくつかの実施形態による例示的な複数メモリ特定用途向けデジタル信号プロセッサ（ＡＳＤＳＰ）を示す図である。
【図２Ａ】本発明のいくつかの実施形態による非対話型ＡＳＤＳＰの考えられる構成を示す図である。
【図２Ｂ】本発明のいくつかの実施形態による非対話型ＡＳＤＳＰの考えられる構成を示す図である。
【図２Ｃ】本発明のいくつかの実施形態による非対話型ＡＳＤＳＰの考えられる構成を示す図である。
【図３Ａ】本発明のいくつかの実施形態による対話型ＡＳＤＳＰの考えられる構成を示す図である。
【図３Ｂ】本発明のいくつかの実施形態による対話型ＡＳＤＳＰの考えられる構成を示す図である。
【図３Ｃ】本発明のいくつかの実施形態による対話型ＡＳＤＳＰの考えられる構成を示す図である。
【図３Ｄ】本発明のいくつかの実施形態による対話型ＡＳＤＳＰの考えられる構成を示す図である。
【図４Ａ】本発明のいくつかの実施形態による、複数のＡＳＤＳＰを有するフィールドプログラマブルゲートアレイ（ＦＰＧＡ）の例示的な実施形態を示す図である。
【図４Ｂ】本発明のいくつかの実施形態による、複数のＡＳＤＳＰを有するＦＰＦＡの第２の例示的な実施形態を示す図である。
【図４Ｃ】本発明のいくつかの実施形態による、複数のＡＳＤＳＰを有するＦＰＧＡの第３の例示的な実施形態を示す図である。
【図４Ｄ】本発明のいくつかの実施形態による、複数のＡＳＤＳＰを有するＦＰＧＡの第４の例示的な実施形態を示す図である。
【図５】本発明のいくつかの実施形態による例示的な関数コアを示す図である。
【図６】本発明のいくつかの実施形態による別の例示的な関数コアを示す図である。
【図７】本発明のいくつかの実施形態による、集積回路装置を作成する方法を示すフロー図である。
【発明を実施するための形態】
【００１１】
図面のいくつかの図を通じて、対応する参照文字は対応する構成要素を示す。当業者であれば、図中の要素は単純さ及び明確さを目的として示されるものであり、必ずしも縮尺通りではないと理解するであろう。例えば、本発明の様々な実施形態をより良く理解できるように、図中の要素の中には、他の要素に対して寸法を誇張しているものもある。また、本発明のこれらの様々な実施形態をより分かり易く示すために、商業的に実現可能な実施形態において有用又は必要な、一般的ではあるが良く理解されている要素については示していないことが多い。
【００１２】
以下の説明は、限定的な意味で捉えるべきではなく、例示的な実施形態の一般的原理を説明するためのものにすぎない。本発明の範囲は、特許請求の範囲に関連して決定すべきものである。
【００１３】
本明細書を通じて、「１つの実施形態」、「ある実施形態」、又は同様の表現に言及する場合、これらは、実施形態に関連して説明する特定の特徴、構造、又は特性が本発明の少なくとも１つの実施形態に含まれることを意味する。従って、本明細書を通じて「１つの実施形態では」、「ある実施形態では」という表現、及び同様の表現が出現した場合、これらは、必ずというわけではないが、全て同じ実施形態を指すことができる。
【００１４】
いくつかの実施形態では、回路基板と、この回路基板上に実装された１又はそれ以上のデジタル信号プロセッサとを含む集積回路装置を提供する。いくつかの実施形態では、このデジタル信号プロセッサが、データユニットと、データユニットに結合された複数のメモリバンクと、制御ユニットとを含み、データユニットは、特定の数式を実行するように構成された関数コアと、特定のアプリケーションを実行するためのコマンドを制御ユニット及びデータユニットに送信する命令を記憶するように構成された命令メモリとを含み、複数のメモリバンクは、回路基板上に統合された少なくとも２又はそれ以上のローカルメモリバンクを含み、制御ユニットは、複数のメモリバンクと関数コアの間の、特定のアプリケーションを実行するためのデータの流れを制御するように構成される。
【００１５】
特定用途向けデジタル信号プロセッサ（ＡＳＤＳＰ）は、特定のデジタル信号処理アルゴリズムを実行する高性能の浮動小数点又は固定少数点ベクトルプロセッサである。ＡＳＤＳＰは、アプリケーションの計算的に集中した部分をカスタムハードウェアに置き換えることによってアプリケーションソフトウェアの障害を軽減するために使用される。１つの実施形態では、再構成可能コンピュータ編集（ＲＣＣ）システムが、この手順を実行する遠隔及び再構成可能環境（ＲＡＲＥ）ツールである。
【００１６】
以下で説明するように、１又はそれ以上の実施形態では、デジタル信号プロセッサが、制御ユニット及びデータユニットという２つの主な構成要素に分割される。いくつかの実施形態では、ＤＳＰアルゴリズムの原始的な数学的計算を行う完全関数コア、及びプロセッサの命令を格納する命令メモリの両方がデータユニットの構成要素である。
【００１７】
１又はそれ以上の実施形態では、ＡＳＤＳＰが中央プロセッサのライブラリに記憶される。各ＡＳＤＳＰは、ＦＰＧＡのビットストリームとして記憶される。１又はそれ以上の実施形態では、システムがプロセッサを利用できるように、ＡＳＤＳＰの機能及びその他の属性を記述するモジュール定義ファイルを維持することができる。これらの実施形態では、ＦＰＧＡボード上でＡＳＤＳＰを使用するために、ＡＳＤＳＰ定義ファイル及びＦＰＧＡ構成ファイルがいずれも必要となり得る。
【００１８】
図１に、１つの実施形態による複数メモリ特定用途向けデジタル信号プロセッサ（ＡＳＤＳＰ）１００を示す。ＡＳＤＳＰ１００の複数メモリプロセッサアーキテクチャは、制御ユニット１１０及びデータユニット１２０で構成される。いくつかの実施形態では、データユニット１２０が、命令メモリ１２２及び関数コア１２４を含む。ＡＳＤＳＰ１００は、１又はそれ以上のローカルメモリバンク１３０（例えば、メモリＭL0〜ＭLl-1）及び／又は外部メモリバンク１４０（例えば、メモリＭE0〜ＭEe-1）を含む複数のメモリバンクに直接接続される。１つの実施形態では、ＡＳＤＳＰ１００が、回路基板２１０を含む集積回路装置２００上に実装される。図１に示すように、いくつかの実施形態では、例えば、このアーキテクチャがフィールドプログラマブルゲートアレイ（ＦＰＧＡ）２００上に実装される。他の実施形態では、このＡＳＤＳＰを、マスクプログラマブルゲートアレイ又はカスタム集積回路（図示せず）上に実装することができる。図１に示すように、１つの例示的な実施形態では、ＡＳＤＳＰ１００がＦＰＧＡ２００内に搭載される。
【００１９】
１つの実施形態では、ＡＳＤＳＰが、中央プロセッサのライブラリに記憶される。各ＡＳＤＳＰは、ＦＰＧＡビットストリームとして記憶される。いくつかの実施形態では、ＡＳＤＳＰをＦＰＧＡボード上で使用するために、ＡＳＤＳＰの機能及びその他の属性を記述するモジュール定義ファイルを維持することができる。
【００２０】
１つの実施形態では、制御ユニット１１０が、１又はそれ以上のタスクを実行する１又はそれ以上の有限状態機械である。例えば、１つの実施形態では、制御ユニット１１０が、メモリの読み出し及び書き込みを管理し、命令を復号し、データが利用可能になると関数コアを開始できるようにし、ホストに完了を信号送信し、及び／又は制御をホストプロセッサに戻す。１つの実施形態では、制御ユニット１１０が、ＡＳＤＳＰ１００内のデータの流れを制御し、複数のメモリバンク１３０及び／又は１４０の同時読み出し及び書き込みのスケジューリングを管理する。１つの実施形態では、制御ユニット１１０が、一定の入力データストリームを関数コア１２４に提供する一方で、複数のメモリバンク１３０及び／又は１４０への出力データの待ち行列を管理する。他の実施形態では、制御ユニット１１０が、上記に加えて又は上記とは別に、関数コア１２４がいつアクティブ／アイドルであるかを管理する。１つの実施形態では、制御ユニット１１０が、同じ数の入力及び出力を含む関数コアを備えたＡＳＤＳＰに非常に類似する単純な有限状態機械である。
【００２１】
いくつかの実施形態によれば、データユニット１２０が情報を処理し、レジスタ、プログラムカウンタ、命令レジスタ、メモリアドレスレジスタ、カウンタ及び／又は関数コアなどの標準的なプロセッサ要素を含む。１つの実施形態では、データユニット１１０が、１又はそれ以上の関数コア１２４を含む。１つの例示的な実施形態では、図１に示すように、データユニット１２０が命令メモリ１２２及び関数コア１２４を含む。１つの実施形態では、命令メモリ１２２が、命令セットからの１又はそれ以上の命令を含む。１又はそれ以上の実施形態によれば、命令メモリ１２２に含まれる各命令がフェッチされ、復号されて実行される。１つの実施形態では、命令セットが少なくとも２つの命令を含み、最小ビット数を使用して符号化される。このような実施形態では、一方の命令が特定のアプリケーションのためのものであり、他方の命令がプロセッサを停止させるためのものである。この停止命令は、プログラム実行の制御をオペレーティングシステム又はホストプロセッサに戻すものである。いくつかの実施形態では、命令セットが、データを内部レジスタ及びその他にロードして記憶するための命令をさらに含むことができる。
【００２２】
１つの実施形態では、各アプリケーションが固有のＡＳＤＳＰを定義し、従って異なる命令に同じ演算コードを再使用することができる。例えば、高速フーリエ変換（ＦＦＴ）を実施するためのＡＳＤＳＰと離散コサイン変換（ＤＣＴ）を実施するためのＡＳＤＳＰは、いずれも演算コードが全く同じ２つの命令を含むことができる。すなわち、いくつかの実施形態では、異なる関数コア１２４を有する２つのＡＳＤＳＰが、同じ演算コードを２つの全く異なる数式に再使用することができる。１又はそれ以上の実施形態では、ＡＳＤＳＰ上の命令セットの演算コードを、別のＡＳＤＳＰに対して全体的に又は部分的に再使用することができる。
【００２３】
いくつかの実施形態では、小さな命令セットが、システムクロック速度の最大化に寄与する。命令数が少ないことにより、命令復号論理が最小化され、設計のクリティカルパスにおける遅延の一因となることがない。いくつかの実施形態では、特定用途向け関数コア１２４を使用することにより、縮小命令セットの機能が実現される。
【００２４】
さらに、図１に示すように、いくつかの実施形態では、命令メモリ１２２がデータユニット１２０の一部として構成され、データメモリバンク１３０及び１４０から分離される。この例示的な構成は、命令メモリからのより高速な読み出しを可能にし、従ってＡＳＤＳＰの速度に寄与する。
【００２５】
いくつかの実施形態では、関数コア１２４が、データユニット１２０の計算要素を含む。１つの実施形態では、関数コア１２４が、算術論理演算ユニット（ＡＬＵ）に類似するが、所与のアプリケーションに必要な固定又は浮動小数点演算しか実行しない。いくつかの実施形態では、関数コア１２４が高度にパイプライン化され、複数の入力及び出力を有し、各サイクル中にパイプラインが満たされると、より低水準の原始関数を含む複雑な数式を効果的に計算する。
【００２６】
いくつかの実施形態では、関数コアを使用して、固定又は浮動小数点ベクトル演算を実行する。１つの実施形態では、関数コア１２４の構造が、ｎ個の入力及び単一の出力を含むことができる。図５に、いくつかの実施形態による例示的な関数コア１２４を示しており、ここでは関数コア１２４が、レジスタＲ０〜Ｒ７により供給される８個の入力及び単一の出力Ｙを含む。１つの実施形態では、関数コア１２４をパイプライン化して、図５に示す関数コアと同様の２又はそれ以上の関数コアで構成することができる。１つの実施形態では、関数コア１２４が、実行する特定の関数に応じて最大ｎ個の入力及びｍ個の出力を有することができる。１つの実施形態では、ｎ及びｍが１以上の整数である。１つの実施形態では、関数コアの入力及び出力が、各々３２ビットである。
【００２７】
図６に、関数コア１２４のさらに別の例示的な実施形態を示す。図６に示す実施形態では、関数コア１２４が、基本関数コア（ＦＦＣ）５１０と呼ばれる１又はそれ以上の基本構築ブロックを含み、図６にはこれらの各々を八角形で示している。１つの実施形態では、ＦＦＣ５１０が、加算、減算、乗算又は除算などの特定の算術的原始関数を実行するパイプライン化された３２ビット浮動小数点ベクトルデータ処理ユニットである。１つの実施形態によれば、ＦＦＣ５１０が、２つの入力及び単一の出力を有する単一の基本演算を実行する。各ＦＦＣ５１０は、そのイネーブルピン及びｄｏｎｅピンを介して制御することができる。イネーブルピンは、ＦＦＣ５１０の入力上に有効な入力データが存在するかどうかを示す。イネーブルピンは、原始的演算が開始されることも示す。ｄｏｎｅピンは、有効な出力データが存在するかどうかを示す。ＦＦＣは、基礎関数コア（ＢＦＣ）のアーキテクチャの平衡を保つための実行遅延をさらに行うことができる。１つの実施形態では、ＦＦＣ５１０を、平衡のとれたＦＦＣとすることにより、単一の入力から開始して単一の出力で終了するＦＦＣを通じた全ての経路上に同じ数のパイプライン段が存在するようにすることができる。また、このような実施形態では、任意の入力から任意の出力への全ての経路が、同じ数のパイプライン段を含む。
【００２８】
いくつかの実施形態による、図６に長方形のユニットとして示すＢＦＣ５２０は、より複雑な算術演算を実行するために互いに論理的に接続された２又はそれ以上のＦＦＣを含む。いくつかの実施形態では、ＢＦＣ５２０の構造が、オリジナルアルゴリズムの主計算ループ内の計算に基づくことができる。従って、いくつかの実施形態では、ＦＦＣ５２０が、ドット積、さらには信号処理変換などのより複雑な関数を計算するためにツリー状に接続される。
【００２９】
関数コア階層の最上位の又は最も複雑なレベルが完全関数コア（ＣＦＣ）５３０である。完全関数コアは、指定されたＡＳＤＳＰのためのオリジナルＤＳＰアルゴリズムの計算全体を実行する。１つの実施形態では、図６に示すように、ＣＦＣ５３０が、図１に示す関数コア１２４である。図示のように、ＣＦＣ５３０は、レジスタＲ０〜Ｒ７により供給される８つの入力と、２つの出力Ｘ及びＹを含む。１つの実施形態では、各完全関数コアがｎ個の入力及びｍ個の出力を含むことができ、ｎ及びｍは１以上の整数である。いくつかの実施形態では、ＣＦＣ５３０が、１又はそれ以上のＢＳＣ５２０で構成される。１つの実施形態では、ＣＦＣ内のＢＦＣの数をＦＰＧＡ領域とデータメモリサイズの関数として、データの幅に焦点を合わせることができる。すなわち、ＦＰＧＡが単一のＢＦＣしかサポートできない１つの実施形態では、ＣＦＣをＢＦＣと同等にすることができる。一方、ＦＰＧＡが複数のＢＦＣをサポートできる実施形態では、ＣＦＣをＢＦＣの集まりとすることができる。
【００３０】
１つの実施形態では、関数コア１２４が、浮動小数点処理ユニットである。いくつかの実施形態では、浮動小数点演算を使用することにより、デジタル信号処理アルゴリズムにおける処理の結果として得られる精度が増すとともに、ハードウェアシステムのデバッグがさらに可能になる。例えば、１つの実施形態では、デバッグを目的として、ハードウェアシステム内のノードを、同じアルゴリズムの浮動小数点ソフトウェアの実施構成におけるこれらのノードの対応する行に照らしてチェックすることができる。ソフトウェアにより生成された浮動小数点値を、ハードウェア版のアルゴリズムにより生成された浮動小数点値に照らしてチェックすることにより、ハードウェアの機能を容易に検証することができる。２つの値が等しければ、ハードウェアの実施構成にエラーはない。別の実施形態では、関数コア１２４を固定小数点関数コアとすることができる。上述したように、いくつかの実施形態では、各ＡＳＤＳＰ内に複数の関数コアが存在することができる。従って、パイプラインが満たされると、ハードウェアがクロックサイクルごとに結果を生じるので、複雑な演算計算を完了するために必要な総サイクル数を大幅に減少させることができる。
【００３１】
１つの実施形態では、ＡＳＤＳＰに接続されるメモリバンク１３０及び１４０の数を、２個〜数百個のメモリバンクとすることができる。１つの実施形態では、メモリバンクの数が少なくとも２個より多い。別の実施形態では、メモリバンクの数を少なくとも１０個より多くすることができ、さらに別の実施形態では、メモリバンクの数を少なくとも１００個より多くすることができる。１つの実施形態では、提案するＡＳＤＳＰ１００が、通常、数十個〜数百個のメモリバンク１３０及び１４０に対応する。複数メモリのアーキテクチャは、この提案するアーキテクチャを、通常はたったの１個又は２個しか付属メモリバンクを有していない従来のＤＳＰと区別する。すなわち、従来のプロセッサは、基板上のピンの数に限界があり、従って各ＡＳＤＳＰに接続できるメモリバンクの数に限界がある。ローカルなオンボードメモリを利用することにより、現在の例示的な実施形態では、１サイクル当たりの読み出しが多くなり、従って従来のプロセッサに比べてＡＳＤＳＰの性能を高めることができる。図１に示すように、ＡＳＤＳＰをオンボードの又はローカルなメモリバンク１３０に接続することができる。１つの実施形態では、図１に示すように、ＡＳＤＳＰが外部メモリバンク１４０にさらに接続される。別の実施形態では、ＡＳＤＳＰをローカルメモリバンク１３０又は外部メモリバンク１４０のみに接続することができる。
【００３２】
いくつかの実施形態では、外部メモリバンク１４０の数を、例えばＦＰＧＡボード上のピンの数及び／又はその他の構造的制限によって制限することができる。しかしながら、ローカルメモリバンク１３０を使用することで、大量のメモリバンクを収容することができる。いくつかの実施形態では、大量のメモリバンクを収容することで、各メモリバンク１３０及び／又は１４０からの／への同時読み出し／同時書き込みが可能になる。従って、１又はそれ以上の実施形態では、メモリアクセスを含む、計算に必要な総サイクル数を大幅に減少させることができる。
【００３３】
１つの実施形態では、例えば、外部メモリバンク１４０とローカルメモリバンク１３０をいずれも使用する場合、外部メモリバンクを、初期化用及びローカルメモリバンク１３０へのデータ提供用に使用することができる。１つの実施形態では、ＡＳＤＳＰに接続されるローカルメモリバンクの数を、関数コアの入力及び出力の数と同じにすることができる。いくつかの実施形態では、ｌ個のローカルメモリバンク１３０を利用して、同時に実行できる全ての読み出し及び／又は書き込みのために、ＡＳＤＳＰ１００にデータを提供するためのメモリバンク１３０が存在するようにすることができる。このような実施形態では、外部メモリバンク１４０からローカルメモリバンク１３０にデータを供給し、このローカルメモリバンク１３０が、ＡＳＤＳＰの特定のアプリケーションを実行するために必要なデータをさらにプロセッサに供給することができる。
【００３４】
１つの実施形態では、提案する複数メモリＡＳＤＳＰ１００を実現するためにＦＰＧＡ２００を使用する。１つの実施形態では、ＦＰＧＡ２００が、ブロックＲＡＭと呼ばれる何百もの小さなメモリバンクを含む。従来のプロセッサのように単一のメインメモリに接続されるのではなく、ＡＳＤＳＰ１００は、外部メモリバンク１４０の他にも多くのローカルメモリバンク１３０に接続して、その入力／出力データ帯域幅を大幅に増加させる。１つの実施形態では、ｎ個のメモリバンクを有するＡＳＤＳＰが、単一のクロックサイクルでｎ回の同時読み出し／書き込みを行うことができる。１又はそれ以上の実施形態では、メモリバンクの各々が、単一のクロックサイクルで３２又は６４ビットのデータを転送することができる。ＦＰＧＡの最大クロック速度は、通常のマイクロプロセッサのそれよりも桁違いに遅いので、いくつかの実施形態においてＦＰＧＡを使用することにより、ＡＳＤＳＰが必要とする電力が通常のプロセッサよりも少なくて済むようになる。
【００３５】
１又はそれ以上の実施形態では、図示のように、ＦＰＧＡ上で実現される制御ユニット１１０とデータユニット１２０の組み合わせがデジタル信号プロセッサを構成する。計算は、データユニット１２０が制御ユニット１１０と連動することによって行われる。
【００３６】
従って、いくつかの実施形態に関しては、各ＡＳＤＳＰ１００が、複数のメモリバンク１３０及び１４０と通信するのに必要なハードウェア、及び各特定のアプリケーションの特徴である数式を計算する関数コアハードウェアを含む。いくつかの実施形態では、ＡＳＤＳＰ１００が、小さな命令セットを有し、特定用途向け関数コアを含み、複数のメモリバンクへの同時読み出し／書き込み動作を行うことができる。
【００３７】
図１のＡＳＤＳＰ１００は、ローカルメモリバンク及び外部メモリバンクのいずれとも通信する非対話型ＡＳＤＳＰとして示しているが、いくつかの異なる実施形態では、各ＡＳＤＳＰ１００を、ローカルメモリバンク及び／又は外部メモリバンクに接続された非対話型又は対話型ＡＳＤＳＰのいずれの形で構成してもよいと理解されたい。図２Ａ〜図２Ｃに、非対話型ＡＳＤＳＰ１００の３つの考えられる構成を示す。１つの実施形態では、非対話型ＡＳＤＳＰ１００、すなわち他のＡＳＤＳＰとメモリバンクを共有しないＡＳＤＳＰを、複数のローカルメモリバンクＭL0〜ＭLl-1に接続された図２Ａに示すＡＳＤＳＰ−Ｌのようにローカルメモリのみに接続される（ＡＳＤＳＰ−Ｌ）ように、複数のローカルメモリＭL0〜ＭLl-1及び外部メモリＭE0〜ＭEe-1に接続された図２Ｂに示すＡＳＤＳＰ−ＬＥのようにローカルメモリと外部メモリの両方に接続される（ＡＳＤＳＰ−ＬＥ）ように、或いは複数の外部メモリＭE0〜ＭEe-1に接続された図２Ｃに示すＡＳＤＳＰ−Ｅのように外部メモリのみに接続される（ＡＳＤＳＰ−Ｅ）ように構成することができる。
【００３８】
別の実施形態では、ＡＳＤＳＰを対話型ＤＳＰとして構成して、メモリバンクの１又はそれ以上を別のＡＳＤＳＰと共有するようにすることができる。図３Ａ〜図３Ｄに、１又はそれ以上の実施形態による対話型ＡＳＤＳＰ１００の考えられる構成を示す。これらの対話型ＡＳＤＳＰ１００は、各ＡＳＤＳＰ１００が、複数の共有ローカルメモリＭS０〜ＭSs-1に接続された図３Ａに示すＡＳＤＳＰ−Ｓのように共有ローカルメモリのみに接続される（ＡＳＤＳＰ−Ｓ）ように、複数の共有ローカルメモリＭS0〜ＭSs-1及び非共有ローカルメモリＭL0〜ＭLl-1に接続された図３Ｂに示すＡＳＤＳＰ−ＬＳのように共有ローカルメモリ及び共有されていないローカルメモリに接続される（ＡＳＤＳＰ−ＬＳ）ように、複数の共有ローカルメモリＭS0〜ＭSs-1及び外部メモリＭE0〜ＭEe-1に接続された図３ＣのＡＳＤＳＰ−ＳＥのように共有ローカルメモリ及び外部メモリに接続される（ＡＳＤＳＰ−ＳＥ）ように、或いは複数の共有ローカルメモリＭS0〜ＭSs-1と、非共有ローカルメモリＭL0〜ＭLl-1と、外部メモリＭE0〜ＭEe-1とに接続された図３Ｄに示すＡＳＤＳＰ−ＬＳＥのようにローカルメモリ、共有ローカルメモリ、及び外部メモリに接続される（ＡＳＤＳＰ−ＬＳＥ）ように構成することができる。
【００３９】
１つの実施形態では、同じＦＰＧＡ２００内に複数の対話型ＡＳＤＳＰ１００を統合することができる。図４Ａ、図４Ｂ、図４Ｃ及び図４Ｄに、２又はそれ以上のＡＳＤＳＰ１００が配置されたＦＰＧＡ２００の例示的な実施形態を示す。図４Ａは、第１のＡＳＤＳＰ１００ａ及び第２のＡＳＤＳＰ１００ｂが配置されたＦＰＧＡ２００を示す図である。この例示的な実施形態では、ＡＳＤＳＰ１００ａを、非共有ローカルメモリバンク１３０ａ及び共有ローカルメモリバンク１３０ｂの両方を有するＡＳＤＳＰ−ＬＳとして示している。さらに、ＡＳＤＳＰ１００ｂを、共有ローカルメモリバンク１３０ｂ及び外部メモリバンク１４０と通信するＡＳＤＳＰ−ＳＥとして示している。従って、図４Ａの例示的な実施形態では、ＡＳＤＳＰ１００ａ及び１００ｂは、ローカルメモリバンク１３０ｂを共有する対話型ＡＳＤＳＰである。
【００４０】
図４Ｂには、３つのＡＳＤＳＰ１００ｃ、１００ｄ及び１００ｅが配置されるように構成された、別の例示的な実施形態によるＦＰＧＡ２００を示している。図示のように、ＡＳＤＳＰ１００ｃは、共有ローカルメモリ１３０ａ及び外部メモリ１４０ａに接続される。さらに、ＡＳＤＳＰ１００ｄは、共有ローカルメモリバンク１３０ａに接続されるとともに、共有ローカルメモリバンク１３０ｂにさらに接続される。さらに図４Ｂに示すように、ＡＳＤＳＰ１００ｅは、共有ローカルメモリバンク１３０ｂ、ローカルメモリバンク１３０ｃ、及び外部メモリバンク１４０ｂと通信する。
【００４１】
図４Ｃは、２つのＡＳＤＳＰ１００を有するＦＰＧＡ２００の別の実施形態を示す図である。ＡＳＤＳＰ１００ｆを、共有ローカルメモリバンク１３０に接続された形で示しており、ＡＳＤＳＰ１００ｇも、同じ共有ローカルメモリバンク１３０、及び外部メモリバンク１４０に接続される。さらに、図４Ｄは、２つのＡＳＤＳＰ１００ｈ及び１００ｉが配置されたＦＰＧＡ２００のさらに別の例示的な実施形態を示す図である。図示のように、ＡＳＤＳＰ１００ｈは、共有ローカルメモリバンク１３０及び外部メモリバンク１４０ａと通信し、ＡＳＤＳＰ１００ｉも、共有ローカルメモリバンク１３０に接続されるとともに、外部メモリバンク１４０ｂにさらに接続される。なお、上記の図は、ＦＰＧＡの例示的な実施形態を示すものであり、いくつかの実施形態では、１又はそれ以上のＡＳＤＳＰを有するＦＰＧＡ２００の異なる変形例を使用することができる。
【００４２】
１つの実施形態では、各々が特定のＤＳＰアルゴリズムを実行する高性能デジタル信号プロセッサのライブラリが提供される。各プロセッサは、小さな命令セットを含んで特定のアルゴリズムを実施する。１又はそれ以上の実施形態では、これらの特定アルゴリズム向けデジタル信号プロセッサ（ＡＳＤＳＰ）を使用して、高水準ＤＳＰアプリケーションの計算的に集中した部分をカスタムハードウェアに置き換えることにより、ソフトウェアの障害を軽減する。
【００４３】
１つの実施形態では、各ＡＳＤＳＰが、実行のために市販の構成可能な演算器に個別に搭載される。このシステムの魅力的な特徴は、ＦＰＧＡなどの演算器を、理論的に無限数のＤＳＰアルゴリズムに合わせて再プログラムできる点である。
【００４４】
合成されたプロセッサの各々は、サイズを減少させて命令復号論理の速度を高める小さな命令セットを有する。１つの実施形態では、バックエンド編集システムを使用して、ビットストリーム合成の過程を自動化する。ライブラリ内の各ビットストリームを使用して、ＦＰＧＡを、特定アルゴリズム向けのデジタル信号プロセッサとして機能するようにプログラムする。
【００４５】
１つの実施形態では、Ｃ／Ｃ＋＋などの高水準プログラミング言語で記述されたＤＳＰアルゴリズムがシステムに入力される。１又はそれ以上の実施形態では、システムが、この高水準の記述を、生成／合成できる個別化された高性能プロセッサのＶＨＤＬモデルに変換する。この生成され個別化されたプロセッサは、オリジナルアルゴリズムを、典型的な市販の合成ツールを使用するマイクロプロセッサよりも大幅に速く実行する。
【００４６】
１つの実施形態では、システムが、まずＤＳＰアルゴリズムの高水準動作記述をプロセッサレベルの記述に変換する。１つの実施形態では、システムが、ＤＳＰアルゴリズムを、アルゴリズムに合わせた命令を含むプロセッサ記述に変換する。１又はそれ以上の実施形態では、このプロセッサ記述が、同じプロセッサの構造的な／レジスタ転送レベル（ＲＴＬ）の記述に変換される。１つの実施形態では、プロセッサの構造的な／ＲＴＬモデルが生成されると、市販のツールを使用して、論理合成、及び配置及びルーティングを行うことができる。１又はそれ以上の実施形態では、この処理の結果が、ＦＰＧＡ内にロードされる準備ができたＦＰＧＡビットストリームとなる。
【００４７】
１又はそれ以上の実施形態では、システムにＤＳＰアルゴリズムが入力され、このアルゴリズムを使用してデジタル信号プロセッサのプロセッサレベルの記述を生成又は作成する。この中間疑似ＶＨＤＬ記述が、ＶＨＤＬ内でも指定される同じデジタル信号プロセッサの合成可能な構造的な／レジスタ転送レベルの記述に変換される。システムの最終段階は、論理合成及び配置及びルーティングに関与する。この段階で、ＦＰＧＡをプログラムするためのハードウェア構成ファイル又はＦＰＧＡビットストリームが生成される。
【００４８】
このシステムの目標は、利用可能なＦＰＧＡリソース及びメモリを最大に利用する特定アルゴリズム向けのＤＳＰを作り出すことである。これは、アルゴリズムを実行するのに必要な総クロックサイクル数を最小化するために実施される効果的なリソース割り当て（ＲＡ）及びスケジューリングを通じて達成される。利用可能なＦＰＧＡリソースを効率的かつ高度に利用することにより、プロセッサのスループットが増し、システムの性能が向上する。ＲＡは、利用可能なＦＰＧＡ領域及び利用可能なメモリ数を所与として、ＦＰＧＡ領域の利用度を最大化する完全な関数コアを定義するという課題を解決する。最後に、ＤＳＰアルゴリズムの計算部分を、各関数コアを使用できる利用可能なタイムスロットにマッピングすることにより、スケジューリングが実行される。
【００４９】
図７は、１又はそれ以上の実施形態による、複数メモリ特定用途向けデジタル信号プロセッサ（ＡＳＤＳＰ）を含む集積回路装置を実現する方法のフロー図である。
【００５０】
まず、ステップ７１０においてデータユニットを生成する。いくつかの実施形態によれば、このデータユニットは情報を処理し、レジスタ、プログラムカウンタ、命令レジスタ、メモリアドレスレジスタ、カウンタ及び／又は関数コアなどの標準的なプロセッサ構成要素を含む。いくつかの実施形態では、データユニットが、命令メモリ及び関数コアを含む。
【００５１】
１つの実施形態では、ステップ７１０において、ＡＳＤＳＰにより実行されるアプリケーションを定義する１又はそれ以上の関数コアを生成する。１つの実施形態では、上述したように、関数コアがデータユニットの計算要素を含む。１つの実施形態では、関数コアを実現するステップが、特定のＤＳＰアルゴリズムを受け取るステップと、このアルゴリズムを実行するための演算の組を生成するステップとを含む。１つの実施形態では、この演算の組が、利用可能なＦＰＧＡリソース及びメモリを最大に利用するように生成される。１つの実施形態では、次にこれらの演算の１又はそれ以上が、データユニットの関数コアとして実施される。１つの実施形態では、関数コアが演算論理ユニット（ＡＬＵ）に類似するが、所与のアプリケーションに必要な固定又は浮動小数点演算しか実行しない。いくつかの実施形態では、関数コア１２４が高度にパイプライン化され、複数の入力及び出力を有し、各サイクル中にパイプラインが満たされると、より低水準の原始関数を含む複雑な数式を効果的に計算する。
【００５２】
１つの実施形態では、上述したように、この関数コアを、１又はそれ以上の基本関数コア、基礎関数コア及び／又は完全関数コアの組み合わせとすることができる。１つの実施形態では、関数コアの階層構造が、回路装置のリソース及び材料を最大に利用するようにされる。上述したように、図５には、いくつかの実施形態による、ステップ７１０で生成された例示的な関数コアを示しており、ここでは関数コア１２４が、レジスタＲ０〜Ｒ７により供給される８個の入力及び単一の出力Ｙを含む。１つの実施形態では、関数コア１２４をパイプライン化して、図５に示す関数コアと同様の２又はそれ以上の関数コアで構成することができる。１つの実施形態では、関数コア１２４が、実行する特定の関数に応じて最大ｎ個の入力及びｍ個の出力を有することができる。１つの実施形態では、関数コアの入力及び出力が、各々３２ビットである。
【００５３】
さらに、ステップ７１０において、データユニットの一部として命令メモリを生成する。１つの実施形態では、この命令メモリが、命令セットからの１又はそれ以上の命令を含む。１又はそれ以上の実施形態によれば、命令メモリ１２２に含まれる各命令がフェッチされ、復号されて実行される。１つの実施形態では、命令セットが少なくとも２つの命令を含み、最小ビット数を使用して符号化される。このような実施形態では、一方の命令が特定のアプリケーションのためのものであり、他方の命令がプロセッサを停止させるためのものである。この停止命令は、プログラム実行の制御をオペレーティングシステム又はホストプロセッサに戻すものである。いくつかの実施形態では、命令セットが、ロード及び記憶のための命令、並びに様々な他のコマンド及び／又は関数を実行するためのその他の命令を含むことができる。
【００５４】
１つの実施形態では、各アプリケーションが固有のＡＳＤＳＰを定義し、従って異なる命令に同じ演算コードを再使用することができる。例えば、高速フーリエ変換（ＦＦＴ）を実施するためのＡＳＤＳＰと離散コサイン変換（ＤＣＴ）を実施するためのＡＳＤＳＰは、いずれも演算コードが全く同じ２つの命令を含むことができる。すなわち、いくつかの実施形態では、異なる関数コアを有する２つのＡＳＤＳＰが、同じ演算コードを２つの全く異なる数式に再使用することができる。１又はそれ以上の実施形態では、ＡＳＤＳＰ上の命令セットの演算コードを、別のＡＳＤＳＰに対して全体的に又は部分的に再使用することができる。
【００５５】
いくつかの実施形態では、小さな命令セットが、システムクロック速度の最大化に寄与する。命令数が少ないことにより、命令復号論理が最小化され、設計のクリティカルパスにおける遅延の一因となることがない。いくつかの実施形態では、特定用途向け関数コアを使用することにより、縮小命令セットの機能が実現される。
【００５６】
いくつかの実施形態では、命令メモリがデータユニットの一部として構成され、データメモリバンクから分離される。この例示的な構成は、命令メモリからのより高速な読み出しを可能にし、従ってＡＳＤＳＰの速度に寄与する。
【００５７】
次に、ステップ７２０において、制御ユニットを生成する。１つの実施形態では、制御ユニットが、１又はそれ以上のタスクを実行する１又はそれ以上の有限状態機械である。例えば、１つの実施形態では、制御ユニットが、メモリの読み出し及び書き込みを管理し、命令を復号し、データが利用可能になると関数コアを開始できるようにし、ホストに完了を信号送信し、及び／又は制御をホストプロセッサ及び／又はオペレーティングシステムに戻す。１つの実施形態では、制御ユニットが、ＡＳＤＳＰ１００内のデータの流れを制御し、複数のメモリバンクの同時読み出し及び書き込みのスケジューリングを管理する。１つの実施形態では、制御ユニットが、一定の入力データストリームを関数コアに提供する一方で、複数のメモリバンクへの出力データの待ち行列を管理する。他の実施形態では、制御ユニットが、上記に加えて又は上記とは別に、関数コアがいつアクティブ／アイドルであるかを管理する。１つの実施形態では、制御ユニットが、同じ数の入力及び出力を含む関数コアを備えたＡＳＤＳＰに非常に類似する１又はそれ以上の単純な有限状態機械である。
【００５８】
１つの実施形態では、ステップ７１０及び７２０が完了すると、ＡＳＤＳＰが中央プロセッサのライブラリに記憶される。各ＡＳＤＳＰは、ＦＰＧＡビットストリームとして記憶される。いくつかの実施形態では、ＡＳＤＳＰをＦＰＧＡボード上で使用するために、ＡＳＤＳＰの機能及びその他の属性を記述するモジュール定義ファイルを維持することができる。
【００５９】
ステップ７３０において、例えばＦＰＧＡなどの集積回路装置の回路基板上にデータユニット及び制御ユニットを搭載する。１つの実施形態では、データユニット及び制御ユニットの一方又は両方が、ＦＰＧＡ上にロードされるように構成されたビットストリームを含む。なお、上述した例示的な実施形態では、このアーキテクチャがフィールドプログラマブルゲートアレイ（ＦＰＧＡ）上に実装される。他の実施形態では、マスクプログラマブルゲートアレイ又はカスタム集積回路（図示せず）上にＡＳＤＳＰを実装することができる。
【００６０】
１又はそれ以上の実施形態では、ＦＰＧＡなどの回路装置が複数のローカルメモリブロックを含むとともに、外部メモリバンクに結合されたピンをさらに含むことができる。ステップ７４０において、制御ユニット及びデータユニットを、１又はそれ以上のローカルメモリバンク（例えば、図１のメモリＭL0〜ＭLl-1）及び／又は外部メモリバンク（例えば、図１のメモリＭE0〜ＭEe-1）を含むいくつかのメモリバンクに直接結合する。１つの実施形態では、ＡＳＤＳＰが、回路基板を含む集積回路装置上に実装される。
【００６１】
このようにして、上記の方法は、利用可能なＦＰＧＡリソース及びメモリを最大に利用する特定アルゴリズム／用途向けＤＳＰを生成する。これは、アルゴリズムを実行するのに必要な総クロックサイクル数を最小化するために実施される効果的なリソース割り当て（ＲＡ）及びスケジューリングを通じて達成される。利用可能なＦＰＧＡリソースを効率的かつ高度に利用することにより、プロセッサのスループットが増し、システムの性能が向上する。ＲＡは、利用可能なＦＰＧＡ領域及び利用可能なメモリ数を所与として、ＦＰＧＡ領域の利用度を最大化する完全な関数コアを定義するという課題を解決する。最後に、ＤＳＰアルゴリズムの計算部分を、各関数コアを使用できる利用可能なタイムスロットにマッピングすることにより、スケジューリングが実行される。
【００６２】
１つの実施形態では、上記の方法を、コンピュータ可読命令を記憶する有形コンピュータ可読記憶媒体を通じて実施することができる。いくつかの実施形態では、このコンピュータ可読記憶媒体が、１又はそれ以上のプロセッサによって実行されたときに上述した方法のステップ７１０〜７４０の１又はそれ以上を実行するように構成された命令を記憶する。
【００６３】
本明細書で説明した機能ユニットの１又はそれ以上は、様々な種類のプロセッサが実行できるように、少なくとも部分的にソフトウェアの形で実現することができる。実行可能コードの識別されたモジュールは、例えばオブジェクト、手順、又は機能として体系化できる、例えばコンピュータ命令の１又はそれ以上の物理的又は論理的ブロックを含むことができる。これにも関わらず、識別されたモジュールの実行ファイルを物理的にともに位置付ける必要はないが、これらは、論理的に結合された場合、モジュールを含むとともにモジュールのための定められた目的を達成する、様々な場所に記憶された異なる命令を含むことができる。
【００６４】
１又はそれ以上の実施形態に含めることができる１又はそれ以上の構成要素の様々な追加の詳細は、（１）Ｇｌｏｓｔｅｒ他、「２Ｄ離散コサイン変換を高速実行するための構成可能なデジタル信号プロセッサ設計の最適化（Ｏｐｔｉｍｉｚｉｎｇ  ｔｈｅ  Ｄｅｓｉｇｎ  ｏｆ  ａ  Ｃｏｎｆｉｇｕｒａｂｌｅ  Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ  ｆｏｒ  Ａｃｃｅｌｅｒａｔｅｄ  Ｅｘｅｃｕｔｉｏｎ  ｏｆ  ｔｈｅ  ２−Ｄ  Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）」２００６年、第３９回システム科学に関するハワイ会議、ＩＥＥＥ０−７６９５−２５０７−５／０６、及び（２）Ｇａｙ、Ｗａｎｄａ、「構成可能なデジタル信号プロセッサ合成のための最適化ツール及び技術（Ｏｐｔｉｍｉｚａｔｉｏｎ  Ｔｏｏｌｓ  ａｎｄ  Ｔｅｃｈｎｉｑｕｅｓ  ｆｏｒ  Ｃｏｎｆｉｇｕｒａｂｌｅ  Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ  Ｓｙｎｔｈｅｓｉｓ）」ハワード大学、ＵＭＩ第３３３１４５９号、プロクエスト出版、２００９年１月２７日に記載されており、これらの文献は全て引用により本明細書に組み入れられる。
【００６５】
本明細書で開示した発明については、特定の実施形態、実施例及びその用途を用いて説明したが、当業者であれば、特許請求の範囲に示す本発明の範囲から逸脱することなく、本発明に数多くの修正及び変更を行うことができる。
【符号の説明】
【００６６】
１００  ＡＳＤＳＰ
１１０  制御ユニット
１２０  データユニット
１２２  命令メモリ
１２４  関数コア
１３０  ローカルメモリバンク
１４０  外部メモリバンク
２００  ＦＰＧＡ／ＡＳＩＣ
２１０  回路基板
【図１】
2013512511.tif 000003
【図２Ａ】
2013512511.tif 000004
【図２Ｂ】
2013512511.tif 000005
【図２Ｃ】
2013512511.tif 000006
【図３Ａ】
2013512511.tif 000007
【図３Ｂ】
2013512511.tif 000008
【図３Ｃ】
2013512511.tif 000009
【図３Ｄ】
2013512511.tif 000010
【図４Ａ】
2013512511.tif 000011
【図４Ｂ】
2013512511.tif 000012
【図４Ｃ】
2013512511.tif 000013
【図４Ｄ】
2013512511.tif 000014
【図５】
2013512511.tif 000015
【図６】
2013512511.tif 000016
【図７】
2013512511.tif 000017
【手続補正書】
【提出日】平成24年7月26日(2012.7.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
回路基板と、
前記回路基板上に実装された１又はそれ以上のデジタル信号プロセッサと、
を備えた集積回路装置であって、各デジタル信号プロセッサが、
データユニットと、
制御ユニットと、
を含み、前記データユニットが、
特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアと、
前記特定のアプリケーションを実行するためのコマンドを前記制御ユニット及び前記データユニットに送信するように構成された１又はそれ以上の命令を記憶する命令メモリと、
を含み、前記制御ユニットが、複数のメモリバンクと前記関数コアの間の、前記特定のアプリケーションを実行するためのデータの流れを制御するように構成され、
前記複数のメモリバンクが、前記１又はそれ以上のデジタル信号プロセッサの各々に結合されるとともに、前記回路基板上に統合された少なくとも２又はそれ以上のローカルメモリバンクを含む、
ことを特徴とする集積回路装置。
【請求項２】
前記複数のメモリバンクが、前記１又はそれ以上のデジタル信号プロセッサの少なくとも１つに結合された１又はそれ以上の外部メモリバンクをさらに含む、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項３】
前記データユニットが、命令レジスタ及びメモリアドレスレジスタなどの１又はそれ以上のレジスタ、及びプログラムカウンタなどの１又はそれ以上のカウンタのうちの少なくとも１つをさらに含む、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項４】
前記命令メモリが、少なくとも２つの命令を含む、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項５】
前記少なくとも２つの命令が、前記特定のアプリケーションのための第１の命令、及び前記デジタル信号プロセッサを停止するための第２の命令を含む、
ことを特徴とする請求項４に記載の集積回路装置。
【請求項６】
前記命令メモリが、前記特定の数式を実行するための入力データをロードするための命令、及び前記関数コアの出力データを記憶するための命令をさらに含む、
ことを特徴とする請求項５に記載の集積回路装置。
【請求項７】
前記命令メモリが前記データユニットの一部であり、前記データユニットに結合された前記複数のメモリバンクから分離される、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項８】
前記関数コアが、固定小数点演算及び浮動小数点演算の一方又は両方を実行する、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項９】
前記関数コアが、前記特定の数式を実行するための入力データを受け取るための１又はそれ以上の入力を含み、前記実行された特定の数式の結果を含む１又はそれ以上の出力をさらに含む、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項１０】
前記関数コアが、前記特定の数式の一部を各々が実行する複数の関数コアを含む、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項１１】
前記関数コアが、前記特定の数式に対してクロックサイクルごとに出力が提供されるように構成される、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項１２】
少なくとも２つのデジタル信号プロセッサを含み、該少なくとも２つのデジタル信号プロセッサが少なくとも１つの共有メモリバンクを含み、前記少なくとも２つのデジタル信号プロセッサが前記少なくとも１つの共有メモリバンクを共有する、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項１３】
前記少なくとも１つの共有メモリバンクが、前記回路基板上に統合されたローカルメモリバンクを含む、
ことを特徴とする請求項１２に記載の集積回路装置。
【請求項１４】
前記少なくとも１つの共有メモリバンクが、前記回路基板に結合された外部メモリを含む、
ことを特徴とする請求項１２に記載の集積回路装置。
【請求項１５】
前記回路基板上にフィールドプログラマブルゲートアレイをさらに備え、該フィールドプログラマブルゲートアレイが、前記１又はそれ以上のデジタル信号プロセッサと、記少なくとも２つのローカルメモリバンクを含む、
ことを特徴とする請求項１に記載の集積回路装置。
【請求項１６】
１又はそれ以上のデジタル信号プロセッサを生成するステップを含む方法であって、前記１又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、
データユニットを生成するステップと、
制御ユニットを生成するステップと、
を含み、前記データユニットを生成するステップが、
特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、
前記特定のアプリケーションを実行するためのコマンドを前記制御ユニット及び前記データユニットに送信するように構成された１又はそれ以上の命令を記憶する命令メモリを生成するステップと、
を含み、前記制御ユニットが、複数のメモリバンクと前記関数コアの間の、前記特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法が、
前記１又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、
前記１又はそれ以上のデジタル信号プロセッサの各々を前記回路基板上に統合された少なくとも２又はそれ以上のローカルメモリバンクに結合するステップを含む、前記１又はそれ以上のデジタル信号プロセッサの各々を前記複数のメモリバンクに結合するステップと、
をさらに含むことを特徴とする方法。
【請求項１７】
前記データユニットを前記複数のメモリバンクに結合するステップが、前記１又はそれ以上のデジタル信号プロセッサの各々を少なくとも１又はそれ以上の外部メモリバンクに結合するステップをさらに含む、
ことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記命令メモリが前記データユニットの一部であり、前記データユニットに結合された前記複数のメモリバンクから分離される、
ことを特徴とする請求項１６に記載の方法。
【請求項１９】
前記関数コアが、前記特定の数式の一部を各々が実行する１又はそれ以上の関数コアを含む、
ことを特徴とする請求項１６に記載の方法。
【請求項２０】
前記１又はそれ以上のデジタル信号プロセッサの各々が、前記回路基板上にロードされるように構成されたビットストリームを含む、
ことを特徴とする請求項１６に記載の方法。
【請求項２１】
プロセッサにより実行されたときに方法を実行するように構成されたコンピュータ可読命令を有する有形コンピュータ可読記憶媒体であって、前記方法が、
１又はそれ以上のデジタル信号プロセッサを生成するステップを含み、前記１又はそれ以上のデジタル信号プロセッサの各々を生成するステップが、
データユニットを生成するステップと、
制御ユニットを生成するステップと、
を含み、前記データユニットを生成するステップが、
特定のアプリケーションの少なくとも一部を実行するために特定の数式を実行するように構成された関数コアを生成するステップと、
前記特定のアプリケーションを実行するためのコマンドを前記制御ユニット及び前記データユニットに送信するように構成された１又はそれ以上の命令を記憶する命令メモリを生成するステップと、
を含み、前記制御ユニットが、複数のメモリバンクと前記関数コアの間の、前記特定のアプリケーションを実行するためのデータの流れを制御するように構成され、前記方法が、
前記１又はそれ以上のデジタル信号プロセッサを回路基板上に搭載するステップと、
前記１又はそれ以上のデジタル信号プロセッサの各々の前記データユニットを前記回路基板上に統合された少なくとも２又はそれ以上のローカルメモリバンクに結合するステップを含む、前記１又はそれ以上のデジタル信号プロセッサの各々を前記複数のメモリバンクに結合するステップと、
をさらに含むことを特徴とする有形コンピュータ可読記憶媒体。
【国際調査報告】
2013512511.tif 000018
2013512511.tif 000019