(57)【特許請求の範囲】
【請求項１】
複数の単一ポートのメモリデバイスと、
前記複数の単一ポートのメモリデバイスに接続され、複数のアクセスポートを有するメモリインタフェースであり、単一アドレス空間を使用して各アクセスポートを通じて前記複数の単一ポートのメモリデバイスへのアクセスを提供するように構成されたメモリインタフェースと、
前記アクセスポートのうち少なくとも２つへのデータ接続を有し、動作を実行するときに前記データ接続のそれぞれから実質的に同時に前記単一アドレス空間からの異なるメモリアドレスにアクセスするように構成されたプロセッサと
を有し、
前記メモリインタフェースに接続された単一ポートのメモリデバイスの総数は、３以上の素数であり、
前記アクセスポートのそれぞれは、優先値を割り当てられ、前記メモリインタフェースは、それぞれの優先値に基づいて、競合の場合に第２のアクセスポートよりも第１のアクセスポートで受信したアクセス要求を優先させるように構成される、
デジタル信号処理システム。
【請求項２】
前記素数は、５以上である、請求項１に記載のデジタル信号処理システム。
【請求項３】
前記素数は、１３以上である、請求項１に記載のデジタル信号処理システム。
【請求項４】
前記プロセッサにより実行される前記動作は、高速フーリエ変換演算又はマルチレートフィルタリング演算である、請求項１ないし３のうちいずれか１項に記載のデジタル信号処理システム。
【請求項５】
実質的に同時にアクセスされる前記異なるメモリアドレスは、所定の関係に従って規則的に離れている、請求項１ないし４のうちいずれか１項に記載のデジタル信号処理システム。
【請求項６】
前記所定の関係は、１の値又は２の乗数の値により前記異なるメモリアドレスを規則的に離している、請求項５に記載のデジタル信号処理システム。
【請求項７】
前記アクセスポートのうち１つ以上に接続され、前記単一アドレス空間を使用して前記複数の単一ポートのメモリデバイスのうち１つ以上に格納されたデータにアクセスするように構成された制御プロセッサ及びハードウェア周辺装置のうち少なくとも１つを更に有する、請求項１ないし６のうちいずれか１項に記載のデジタル信号処理システム。
【請求項８】
前記アクセスポートのそれぞれは、順序識別子を割り当てられ、前記メモリインタフェースは、それぞれの順序識別子に基づいて、競合の場合に第２のアクセスポートよりも第１のアクセスポートで受信したアクセス要求を優先させるように構成される、請求項１ないし７のうちいずれか１項に記載のデジタル信号処理システム。
【請求項９】
前記メモリインタフェースは、前記第１のアクセスポートがより低い順序識別子を有する場合、前記第２のアクセスポートよりも前記第１のアクセスポートで受信したアクセス要求を優先させるように構成される、請求項８に記載のデジタル信号処理システム。
【請求項１０】
前記メモリインタフェースは、アクセスポート毎に、受信した順にアクセス要求をキューに入れるように構成された先入れ先出しバッファを有する、請求項１ないし９のうちいずれか１項に記載のデジタル信号処理システム。
【請求項１１】
前記メモリインタフェースにより提供されるアクセスポートの総数は、前記メモリインタフェースに接続された単一ポートのメモリデバイスの総数未満である、請求項１ないし１０のうちいずれか１項に記載のデジタル信号処理システム。
【請求項１２】
前記単一ポートのメモリデバイスは、デジタル信号プロセッサの作業空間、前記デジタル信号処理システムの構成データ、制御プロセッサの実行コード及びデータ、１つ以上のハードウェア周辺装置の入力及び出力バッファ、並びにプロセッサの間でデータを交換するための１つ以上のバッファのうち少なくとも１つを格納するように構成される、請求項１ないし１１のうちいずれか１項に記載のデジタル信号処理システム。
【請求項１３】
請求項１ないし１２のうちいずれか１項に記載のデジタル信号処理システムを有するソフトウェア定義の無線受信機。
【請求項１４】
デジタル信号処理システムにおいてデータにアクセスする方法であって、
メモリインタフェースの２つ以上のアクセスポートでプロセッサから実質的に同時にメモリアクセス要求を受信するステップであり、それぞれの要求は、単一アドレス空間の異なるメモリアドレスを有し、前記メモリアクセス要求は、単一の命令に対応するステップと、
メモリアクセス要求毎に、前記メモリアドレスから、前記メモリアドレスからの前記メモリインタフェースに接続された複数の単一ポートのメモリデバイスのうち１つの単一ポートのメモリデバイスの識別子と、前記１つの単一ポートのメモリデバイス内の第２のメモリアドレスとを生成するステップと、
メモリアクセス要求毎に、前記１つの単一ポートのメモリ内の前記第２のメモリアドレスに位置するデータにアクセスするステップと
を有し、
前記生成するステップは、前記メモリインタフェースに接続された単一ポートのメモリデバイスの総数を使用して除算演算を実行することを有し、前記メモリインタフェースに接続された単一ポートのメモリデバイスの総数は、３以上の素数であり、
前記メモリアクセス要求は、前記メモリインタフェースにより提供された複数のポートのうち第１のポートを介して受信され、
当該方法は、更に、
第２のポートを介して前記メモリインタフェースの更なるプロセッサから更なるメモリアクセス要求を受信するステップと、
前記メモリアクセス要求と前記更なるメモリアクセス要求との双方が同時にサービス提供できないことを判定するステップと、
前記第１のポートに割り当てられた優先度と前記第２のポートに割り当てられた優先度とを比較するステップと、
前記優先度の比較に基づいて前記第１のポートを介して受信した前記メモリアクセス要求にサービス提供することを選択するステップと、
を有する、
方法。
【請求項１５】
１つの単一ポートのメモリデバイスの識別子を生成するステップは、前記単一アドレス空間の前記メモリアドレスと前記メモリインタフェースに接続された単一ポートのメモリデバイスの総数とのモジュロを判定することを有する、請求項１４に記載の方法。
【請求項１６】
前記第２のメモリアドレスを生成するステップは、前記単一アドレス空間の前記メモリアドレスと前記メモリインタフェースに接続された単一ポートのメモリデバイスの総数との商を判定することを有する、請求項１４又は１５に記載の方法。
【請求項１７】
プログラムがコンピュータ上で実行された場合に、請求項１４ないし１６のうちいずれか１項に記載の方法の全てのステップを実行するように構成されたコンピュータプログラムコード手段を有するコンピュータプログラム。
【請求項１８】
コンピュータ可読媒体に具現された請求項１７に記載のコンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
デジタル信号処理は、広範囲のアプリケーションで使用されている。これらのアプリケーションの多くは、エンドユーザにとって意味があるため又は有用であるためにデータの処理に時間の制約が存在するという意味でリアルタイムである。この一例は、デジタルテレビ及びデジタルラジオのようなデジタル放送ストリームである。デジタル信号処理システムは、データが受信されると同時くらいに早く出力される（バッファリングを禁止する）ことを可能にするほど、リアルタイムストリームを迅速に処理及び復号化できる必要がある。
【０００２】
デジタル信号処理システムは、複数の異なる種類の処理要素を利用してもよい。例えば、このようなシステムは、デジタル信号プロセッサ（DSP：digital  signal  processor）と、汎用プロセッサと、特定の信号処理タスクを実行するように設計された特化されたハードウェア周辺装置とを有してもよい。これらの異なる種類の処理要素のそれぞれは、データ及び／又はソフトウェアコードを格納するために１つ以上のメモリデバイスを利用してもよい。
【０００３】
リアルタイムデータのような要求の厳しいアプリケーションでは、メモリアクセスの速度は、全体のデジタル信号処理システムの性能における重要な要因になる。高速メモリアクセスを可能にするために、メモリデバイスは、処理されているデータの種類で効率的に動作するように調整されてもよい。例えば、特定の処理要素は、特定の種類又は構造のデータのためにその要素の高速メモリアクセスを可能にする専用メモリデバイスに接続されてもよい。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、専用の特化されたメモリデバイスの使用は、異なる種類のリアルタイムデータに対して柔軟且つ構成可能になるようにするデジタル信号処理システムの能力を制限する。例えば、世界中で使用される様々な異なるデジタルテレビ及びラジオ標準は、しばしば異なるように構成されたリアルタイムデータを有する。従って、データ種別毎に異なるデジタル信号処理システムを構築することなく、これらの異なる種類のデータのそれぞれに高速メモリアクセスを提供するデジタル信号処理システムを提供することは困難である。
【０００５】
以下に記載の実施例は、既知のデジタル信号処理システムの欠点の一部又は全部を解決する実装に限定されない。
【課題を解決するための手段】
【０００６】
この概要は、以下に発明の詳細な説明に更に記載する簡単な形式の概念の抜粋を紹介するために提供される。概要は、特許請求の範囲の対象の主な特徴又は不可欠な特徴を特定することを意図するものではなく、特許請求の範囲の対象の範囲を判定する際の支援として使用されることを意図するものでもない。
【０００７】
デジタル信号処理システムにおけるメモリアクセスが記載される。一例では、デジタル信号処理システムは、複数の単一ポートのメモリデバイスに接続されたメモリインタフェースから構成されたマルチポートのメモリを有する。メモリインタフェースは、プロセッサが単一アドレス空間を使用して単一ポートのメモリデバイスに格納されたデータにアクセスするために使用できるアクセスポートを提供する。プロセッサは、複数のアクセスポートに接続され、同時に複数の異なるメモリアドレスのデータへのアクセスを要求するためにこれらを使用してもよい。デジタル信号処理システムは、メモリインタフェースに接続された単一ポートのメモリデバイスの総数が３以上の素数になるように構成される。素数の数のメモリデバイスが使用されるため、異なるメモリアドレスのデータが同じ単一ポートのメモリデバイスにある可能性が最小化され、メモリアクセス速度を増加させる。
【０００８】
一態様によれば、複数の単一ポートのメモリデバイスと、複数の単一ポートのメモリデバイスに接続され、複数のアクセスポートを有するメモリインタフェースであり、単一アドレス空間を使用して各アクセスポートを通じて複数の単一ポートのメモリデバイスへのアクセスを提供するように構成されたメモリインタフェースと、アクセスポートのうち少なくとも２つへのデータ接続を有し、動作を実行するときにデータ接続のそれぞれから実質的に同時に単一アドレス空間からの異なるメモリアドレスにアクセスするように構成されたプロセッサとを有し、メモリインタフェースに接続された単一ポートのメモリデバイスの総数は、３以上の素数であるデジタル信号処理システムが提供される。
【０００９】
他の態様によれば、デジタル信号処理システムにおいてデータにアクセスする方法が提供され、メモリインタフェースでプロセッサからメモリアクセス要求を受信するステップであり、要求は、単一アドレス空間のメモリアドレスを有するステップと、メモリアドレスから、メモリアドレスからのメモリインタフェースに接続された複数の単一ポートのメモリデバイスのうち１つの単一ポートのメモリデバイスの識別子と、１つの単一ポートのメモリデバイス内の第２のメモリアドレスとを生成するステップと、１つの単一ポートのメモリ内の第２のメモリアドレスに位置するデータにアクセスするステップとを有し、生成するステップは、メモリインタフェースに接続された単一ポートのメモリデバイスの総数を使用して除算演算を実行することを有し、メモリインタフェースに接続された単一ポートのメモリデバイスの総数は、３より大きい素数である。
【００１０】
ここに記載の方法は、有形の記憶媒体上の機械可読形式（例えば、プログラムがコンピュータで実行され、コンピュータプログラムがコンピュータ可読媒体に具現されてもよい場合に、ここに記載のいずれかの方法の全てのステップを実行するように適合されたコンピュータプログラムコード手段を有するコンピュータプログラムの形式）のソフトウェアにより実行されてもよい。有形の（又は過渡的ではない）記憶媒体の例は、ディスク、サムドライブ、メモリカード等を含み、伝搬信号を含まない。ソフトウェアは、方法のステップがいずれかの適切な順序又は同時に実行され得るように、並列プロセッサ又はシリアルプロセッサでの実行に適してもよい。
【００１１】
このことは、ファームウェア及びソフトウェアが有用な別々に取引可能な商品になり得ることを認める。これは、所望の機能を実行するために、“ダム（dumb）”ハードウェア若しくは標準ハードウェアで実行するソフトウェア又は“ダム”若しくは標準ハードウェアを制御するソフトウェアを含むことを意図する。また、所望の機能を実行するために、シリコンチップの設計又はユニバーサルプログラマブルチップの構成に使用されるようなHDL（hardware  description  language）ソフトウェアのように、ハードウェアの構成を“記述”又は規定するソフトウェアを含むことを意図する。
【００１２】
当業者に明らかなように、前述の特徴は、必要に応じて組み合わされてもよく、例示の態様のいずれかと組み合わされてもよい。
【図面の簡単な説明】
【００１３】
【図１】複数の単一ポートのメモリデバイスから構成されたマルチポートのメモリデバイス
【図２】２の乗数である複数の単一ポートのメモリデバイスから構成されたマルチポートのメモリのアドレス指定方式
【図３】素数の数の単一ポートのメモリデバイスから構成されたマルチポートのメモリのアドレス指定方式
【図４】素数の数のメモリデバイスのアドレス計算方法のフローチャート
【図５】共有メモリ空間としてマルチポートのメモリを使用した構成可能なデジタル信号処理システム
【発明を実施するための形態】
【００１４】
実施例について、図面を参照して一例として説明する。
【００１５】
同様の特徴を示すために、図面を通じて共通の参照符号が使用される。
【００１６】
実施例について、以下に一例のみとして説明する。これらの例は、出願人に現在知られている実施例を実施する最善の方法を表しているが、これらは、実現され得る唯一の方法ではない。説明は、例示の機能を示し、例示を構成して動作するステップの順序を示している。しかし、同じ又は等価な機能及び順序が異なる例により実現されてもよい。
【００１７】
以下に説明するものは、デジタル信号プロセッサ、汎用プロセッサ、及び特化されたハードウェア周辺装置の機能が特定の信号処理タスクを実現するために必要に応じて組み合わされることを可能にする構成可能なデジタル信号処理システムである。例えば、構成可能なデジタル信号処理システムは、異なる種類のリアルタイムデータ標準で動作するように構成されてもよい。処理要素が複数の異なるメモリアドレスのデータにおいて同時に（例えば、単一の命令で）動作することは、デジタル信号処理システムにおいて一般的な動作である。このような動作のために高速メモリアクセスを可能にするために、マルチポートのメモリデバイスが使用され、処理要素は、マルチポートのメモリデバイスの複数のポートへのアクセスを有する。マルチポートのメモリデバイスは、異なるポートからのメモリへの同時アクセスを可能にすることを目的とする。しかし、実際には、マルチポートのメモリデバイスは、複数の個々の物理的な単一ポートのメモリデバイスから構成される。この場合、異なるポートの同時アクセス要求が異なる物理的な単一ポートのメモリデバイスに関係する場合にのみ、同時アクセスが可能になる。そうでない場合、競合が生じるからである。
【００１８】
マルチポートのメモリデバイスの設計は、同時のメモリアクセスの構造が事前に知られている場合に（例えば、同時に要求されるメモリアドレスの間の空間が固定されている場合に）競合を軽減することができる。しかし、構成可能なデジタル信号処理システムの場合には、異なる標準が異なるメモリアクセス構造を使用する可能性があるため、これが当てはまらない。このことを回避するため、マルチポートのメモリデバイスは、素数の数の物理的な単一ポートのメモリデバイスから構成される。以下に説明するように、これは、異なる種類の複数のデータ演算が実行された場合に競合の可能性を最小化する。
【００１９】
マルチポートのメモリはまた、システムの全ての異なる処理要素がマルチポートのメモリにアクセスすることができるほどの十分な数のポートを提供するように拡張されてもよい。このことは、構成可能なデジタル信号処理システムが異なる処理要素により共有される共通メモリ空間を利用することを可能にする。共通メモリ空間を使用しなければ、各処理要素は、自分の専用メモリを備える必要がある。複数の標準をサポートする構成可能なデジタル信号処理システムの場合、このことは、それぞれ個々の処理要素がその要素のために最大量の記憶装置を要求する標準のための十分なメモリを提供される必要があることを意味する。異なる標準は処理要素毎にメモリについて異なる要件を有するため、最大の場合のために各処理要素のメモリの大きさを決めることは、いずれかの所与の標準についてかなりの量の無駄なメモリ（従って、シリコンの領域）を生じる。処理要素のために共通の共有メモリ空間を使用することは、処理要素の異なるメモリ要件を共に融合し、このことは、共通メモリが全ての処理要素の中で最大の合計のメモリ要求を有する標準に対応するような大きさにされさえすればよいことを意味する。
【００２０】
まず図１を参照すると、図１は、マルチポートのメモリデバイス102の概略図を示している。マルチポートのメモリデバイス102は、複数の単一ポートのメモリデバイス104を有する。単一ポートのメモリデバイス104のそれぞれは、そのメモリデバイスに格納されたデータにアクセスするために１つのポートを提供する別々のメモリデバイスである。一例では、単一ポートのメモリデバイス104は、物理的に別々でもよいが、共通の半導体基板に形成されてもよい。別の例では、これらは、シリコンの別々の部分に形成されてもよい。単一ポートのメモリデバイス104のそれぞれは、スタティックRAM（SRAM：static  RAM）及びダイナミックRAM（DRAM：dynamic  RAM）、EEPROM及びフラッシュメモリのような書き込み可能ROM、又はそのいずれかの組み合わせのような（これらに限定されない）、いずれかの適切な種類のランダムアクセスメモリ（RAM：random  access  memory）でもよい。
【００２１】
マルチポートのメモリデバイス102は、複数のアクセスポート106を提供する。複数のアクセスポート106は、外部デバイスに対するマルチポートのメモリデバイスに格納されたデータへのアクセスを提供する。例えば、構成可能なデジタル信号処理システムの様々な異なる処理要素は、図５を参照して以下に詳細に説明するように、ポート106に接続されてもよい。図１の例は、４つのポート106に接続されたDSP108と、２つのポート106に接続された全体制御プロセッサ110とを示している。しかし、これは単なる例示であり、異なる数又は種類の処理要素が異なる数のポートに接続されてもよい。
【００２２】
提供されるアクセスポートの数は、単一ポートのメモリデバイスの数と異なってもよい点に留意すべきである。或る例では、提供されるアクセスポートの数は、単一ポートのメモリデバイスの数未満である。いくつかのポートが頻繁に使用されない他の例では、提供されるアクセスポートの数は、単一ポートのメモリデバイスの数より大きい。また、各クロック周期にN回のアクセスを行うDSPは、物理的なメモリデバイスの数がN以上の場合にのみ競合を回避できる点に留意すべきである。
【００２３】
マルチポートのメモリデバイス102は、複数の別々の単一ポートのメモリデバイス104から構成されるが、全ての単一ポートのメモリデバイス104上の利用可能な合計記憶空間は、単一アドレス空間としてポートにおいて外部デバイスに提示される。換言すると、ポートにアクセスする外部デバイスは、どのように合計記憶空間が単一ポートのメモリデバイスの間で分割されているかを知らず、外部デバイスが見るものの全ては、連続するアドレスを有するメモリの単一のブロックである。
【００２４】
単一アドレス空間と、個々の単一ポートのメモリデバイス内のアドレスとの間の変換は、メモリインタフェース112により実行される。メモリインタフェース112は、複数のアクセスポート106と複数の単一ポートのメモリデバイス104との間のインタフェースとして動作する。メモリインタフェース112は、アクセスポート106で受信した要求（データの読み取り又は書き込み）を管理し、要求がどの単一ポートのメモリデバイスに関係するかを判定し、その単一ポートのメモリデバイスのデータへのアクセスを提供するように構成される。メモリインタフェース112はまた、単一ポートのメモリデバイス104がいずれかのポート106からアクセスすることを可能にするため、クロスバー（crossbar）と呼ばれてもよい。
【００２５】
マルチポートのメモリデバイス102は、アクセスポート106のそれぞれを通じて独立して単一ポートのメモリデバイス104に格納されたデータへの実質的に同時のアクセスを提供するように構成される。換言すると、可能である場合には常に、同時に２つ（以上）の異なるアクセスポートで受信された要求は同時にサービス提供されてもよい。しかし、これは、異なるポートのアクセス要求が異なる単一ポートのメモリデバイスに関係する場合にのみ実現され得る。
【００２６】
例えば、図１を参照すると、アクセス要求が“メモリ2”に格納されるデータに関係する“ポート0”で受信され、これと同時に（すなわち、同じクロック周期で）アクセス要求が“メモリ3”に格納されるデータに関係する“ポート2”で受信された場合、メモリインタフェース112は、同時にこれらの要求の双方にサービス提供することができる。これは、データが別々の単一ポートのメモリデバイスから独立して読み取られ得る（又は適切な場合には書き込まれ得る）からである。しかし、前述の“ポート2”からのアクセス要求が“メモリ2”に格納されるデータに関係する場合、競合が生じる。これは、個々の単一ポートのメモリデバイスは、各クロック周期にその中の単一のメモリアドレスにのみアクセスを提供できるからである。従って、２つの要求が１つの単一ポートのメモリデバイスに関して同時に受信された場合、要求のうち一方は、サービス提供され得る前に、他方が最初に終了するのを待機しなければならない。
【００２７】
メモリインタフェース112は、各アクセスポートが関連するポートバッファを有するように、複数のポートバッファ114を有する。ポートバッファ114は、それぞれのポートにおいて要求をキューに入れる。同様に、メモリインタフェース112はまた、それぞれの単一ポートのメモリデバイスが関連するバッファを有するように、複数のメモリデバイスバッファ116を有する。メモリデバイスバッファ116は、それぞれの単一ポートのメモリデバイスについて保留中の要求をキューに入れる。或る例では、ポートバッファ114及びメモリデバイスバッファ116は、先入れ先出し（FIFO：first-in  first-out）バッファの形式でもよい。FIFOバッファの使用は、要求がアクセスポートで受信された順にサービス提供されることを確保する。FIFOバッファは、競合が生じたときに要求がキューに入れられることを可能にする。
【００２８】
図１に示すマルチポートのメモリデバイスがデジタル信号処理システムにおいて使用される場合、メモリデバイスに格納されたデータにおいて実行される多くの動作は、複数の同時のメモリアクセス要求を含む。例えば、DSPデバイス（DSP108等）は、SIMD（single-instruction  multiple-data）プロセッサでもよい。SIMDプロセッサは、同時に複数のデータアイテムにおいて同じ演算を効率的に実行するように構成される。SIMDプロセッサにより実行される動作の演算の例は、高速フーリエ変換（FFT：fast-fourier  transform）及びマルチレートフィルタリングを含む。これらの演算をできるだけ効率的に実行するために、SIMDプロセッサは、同時に異なるメモリアドレスのデータにアクセスする必要がある。マルチポートのメモリデバイス102は、複数のデータアイテムのそれぞれについてポートを提供することにより、このことを可能にする。
【００２９】
例えば、図１に示すように、DSP108（SIMDプロセッサでもよい）は、４つのアクセスポート106に接続される。これは、例えば４つのデータアイテムにおけるSIMD動作で使用するために、DSP108が同時にそれぞれ異なるポートへの４つのメモリアクセス要求を発行することを可能にする。競合が生じない場合、DSP108は、全ての４つの要求を同時にサービス提供させることができ、動作が遅延なく実行されることを可能にする。しかし、競合が生じた場合、メモリアクセスの競合が解決される間に動作が遅延する。従って、動作が実行される速度は、異なるポートで受信した異なるメモリアクセス要求が同じ単一ポートのメモリデバイスに関係するか、異なる個々の単一ポートのメモリデバイスに関係するかに依存する。
【００３０】
競合が生じる可能性は、マルチポートのメモリを構成するために使用される単一ポートのメモリデバイス104の数に関係する。１つの選択肢は、２の乗数である総数の単一ポートのメモリデバイスを有することである。これは、単一アドレス空間と個々の単一ポートのメモリデバイスのアドレスとの間の非常に簡単なアドレス変換を提供するため、行われてもよい。図２を参照してこのことを説明する。
【００３１】
図２は、メモリ0  202、メモリ1  204、メモリ2  206及びメモリ3  208で示す合計で４つの単一ポートのメモリデバイス（すなわち、２の乗数である総数）から構成されたマルチポートのメモリの例を示している。この例示の例では、それぞれの単一ポートのメモリは、８個の位置を保持する（明らかに実際のシステムは更に多くのメモリを有するが、簡単にするためにこの例がここで使用される）。これは、4×8=32の位置のマルチポートのメモリデバイスの合計記憶容量を提供する。それぞれの単一ポートのメモリデバイス内の８個の位置は、0（バイナリでは000）から7（バイナリでは111）まで連続してアドレス指定される。
【００３２】
メモリインタフェース112は、連続するアドレスがそれぞれの単一ポートのメモリに順に配置され、各行の終了時に第１のメモリに折り返すように、単一アドレス空間を提供するように構成される。換言すると、位置0はメモリ0  202に保持され、位置1はメモリ1  204に保持され、位置2はメモリ2  206に保持され、位置3はメモリ3  208に保持され、位置4はメモリ0  202に戻る等である。
【００３３】
図２の４つの単一ポートのメモリデバイスの下に、マルチポートのメモリの単一アドレス空間210が示されている。これは列に分割され、各列は、これらのアドレスがどの単一ポートのメモリに関係するかを反映している。例えば、列212のアドレス0、4、8、12、16、20、24、28はメモリ0  202に関係し、列214のアドレス1、5、9、13、17、21、25、29はメモリ1  204に関係し、列216のアドレス2、6、10、14、18、22、26、30はメモリ2  206に関係し、列218のアドレス3、7、11、15、19、23、27、31はメモリ3  208に関係する。列は、単一メモリアドレス空間の10進数のメモリアドレスと、そのバイナリの等価なものとの双方を示している。
【００３４】
従って、例えば、単一メモリアドレス空間のメモリアドレス14はメモリ2  206に関係し（列216に存在するため）、メモリ2  206内のメモリアドレス3（ゼロから始めて列216を下に数える）に存在することが分かる。２の乗数である総数の単一ポートのメモリデバイスを使用することにより、この計算は、非常に簡単にバイナリアドレスから直接的に実行される。例えば、単一メモリアドレス空間のメモリアドレス14がバイナリで01110であるものとする。これが関係する単一ポートのメモリの識別情報は、２つの最下位のアドレスビット（バイナリで10=10進数で2）を読み取ることにより判定されてもよい。この単一ポートのメモリ内のメモリアドレスは、３つの最上位のアドレスビット（バイナリで011=10進数で3）を読み取ることにより判定されてもよい。
【００３５】
従って、２の乗数である総数の単一ポートのメモリデバイスの使用は、非常に簡単なアドレス変換方式を提供する。しかし、単一ポートのメモリデバイスの数に２の乗数を使用することは、以下に説明するようにかなりの競合を生じる可能性がある。
【００３６】
複数の同時の要求がSIMDプロセッサから受信された場合、典型的には、要求におけるメモリアドレスの間に固定の関係が存在する。例えば、メモリアドレスは、しばしば何らかの所定の関係に従って規則的に離れている。例えば、SIMDプロセッサは、関係が以下の場合に、Mのメモリ位置だけ離れた異なるメモリアドレスにおいてKの同時の要求を行ってもよい。
Address(k)=base+k×M      (k=0〜K-1)
ただし、Address(k)は、要求kの単一アドレス空間におけるメモリアドレスであり、baseは単一アドレス空間の開始アドレスである。アドレスの間の間隔Mは、如何なる値になってもよく、実行される動作に依存してもよい。しかし、典型的には、これは1の値若しくは２の乗数（FFT演算で一般的に見られる）又は小さい整数値（マルチレートフィルタリング演算で一般的に見られる）になり得る。
【００３７】
メモリアドレスの間の間隔Mが1である場合、図２に示す構造は、４つ（以下）の同時のアクセス要求が行われた場合にうまく機能する。例えば、base開始アドレスが9且つM=1である場合、４つの要求（K=4）では、要求されるアドレスは9、10、11及び12である。これらのそれぞれは、異なる単一ポートのメモリデバイスに配置されているため、これらは競合なく同時に全てサービス提供され得る。
【００３８】
しかし、メモリアドレスの間の間隔Mが２の乗数である場合、図２に示す構造はかなりの競合を生じる。例えば、base開始アドレスが9且つM=2である場合、４つの要求（K=4）では、要求されるアドレスは9、11、13及び15である。アドレス9及び13の双方は同じ単一ポートのメモリデバイスに配置されており（列214に示す）、アドレス11及び15も同様である（列218に示す）。これは、メモリ1  204とメモリ3  208との双方について競合を生じ、アクセス要求にサービス提供するために１つより多くの周期が必要になることを意味する。4、8及び16のように更に高い２の乗数の場合には、状況は更に悪くなる。この理由は、これらは、同じ単一ポートのメモリデバイスが要求されたアドレスの全てを保持することを生じ、更に競合の遅延を増加させる。
【００３９】
従って、前述のように、単一ポートのメモリデバイスの数に２の乗数を使用することは、簡単なアドレス指定を提供するが、アドレスの間の特定の間隔で競合の問題を有する。アドレス間隔が事前に知られており、固定されている場合（例えば、前述の1の場合）、図２に示す構造は効率的に動作する。しかし、様々な異なる種類の動作及びデータで使用されることができる構成可能なデジタル信号処理システムの場合、アドレス間隔は固定されておらず、事前に知られていない。このことは、競合が頻繁に生じる可能性があることを意味する。この理由は、特に２の乗数の間隔Mが様々なDSP処理動作（例えば、FFT演算）に非常に一般的であるからである。
【００４０】
次に図３を参照すると、図３は、素数の数の単一ポートのメモリデバイスで構成されたマルチポートのメモリの例を示している。この特定の例では、５つの単一ポートのメモリデバイスが存在するが、３以上のいずれかの素数が使用されてもよい。
【００４１】
５つの単一ポートのメモリデバイスは、メモリ0  202、メモリ1  204、メモリ2  206、メモリ3  208及びメモリ4  302で示されている。この例示の例でも同様に、それぞれの単一ポートのメモリデバイスは、８個の位置を保持する。これは、5×8=40の位置のマルチポートのメモリデバイスの合計記憶容量を提供する。それぞれの単一ポートのメモリデバイス内の８個の位置は、同様に0（バイナリでは000）から7（バイナリでは111）まで連続してアドレス指定される。
【００４２】
図３の５つの単一ポートのメモリデバイスの下に、マルチポートのメモリの単一アドレス空間304が示されている。これは列に分割され、各列は、これらのアドレスがどの単一ポートのメモリに関係するかを反映している。例えば、列306のアドレス0、5、10、15、20、25、30、35はメモリ0  202に関係し、列308のアドレス1、6、11、16、21、26、31、36はメモリ1  204に関係し、列310のアドレス2、7、12、17、22、27、32、37はメモリ2  206に関係し、列312のアドレス3、8、13、18、23、28、33、38はメモリ3  208に関係し、列314のアドレス4、9、14、19、24、29、34、39はメモリ4  302に関係する。列は、単一メモリアドレス空間の10進数のメモリアドレスと、そのバイナリの等価なものとの双方を示している。従って、例えば、単一メモリアドレス空間のメモリアドレス14はメモリ4  302に関係し（列314に存在するため）、メモリ4  302内のメモリアドレス2（ゼロから始めて列314を下に数える）に存在することが分かる。
【００４３】
単一ポートのメモリデバイスの数に３以上の素数を使用することは、競合の可能性をかなり低減する。例えば、同時要求の数K=4であり（上記と同様）、間隔Mが1である場合、競合は生じない（例えば、baseアドレスが9である場合、アクセスされるアドレスは9、10、11及び12であり、これは異なる単一ポートのメモリデバイスに存在することが分かる）。同様に、間隔Mが2である場合、競合は生じない（例えば、baseアドレスが9である場合、アクセスされるアドレスは9、11、13及び15であり、これは異なる単一ポートのメモリデバイスに存在することが分かる）。同様に、他の２の乗数の間隔M（例えば、4、8又は16）の場合も、競合は存在しない。
【００４４】
実際に、間隔が素数（例えば、図３の例では5）に等しい場合を除いて、全て規則的な間隔のアクセスの場合に競合が完全に回避される。従って、素数に基づくメモリ構造が使用される場合、競合が生じる可能性がかなり低くなる。競合の可能性は、DSP動作（マルチレートフィルタリング等）に一般的に使用されるいずれかの小さい整数の間隔より大きい素数を選択することにより、更に低減されてもよい。一例では、13以上の素数が使用されてもよく、これは現実のDSPデータでうまく動作することが分かる。
【００４５】
単一アドレス空間と単一ポートのメモリデバイスとの間のアドレス変換を実行するために、図４に示すような処理が実行される。アドレス変換は、前述の図３の場合のように単にメモリアドレスから選択されたビットを読み取ることによっては実行できない。それにも拘らず、効率的な技術が使用されてもよい。
【００４６】
図４は、素数の数のメモリデバイスのアドレス計算方法のフローチャートを示している。これは、前述のようにメモリインタフェース112により実行されてもよい。ステップ402において、単一アドレス空間におけるメモリアドレスを有するメモリアクセス要求は、ポートで受信される。他の要求も、これと同時に他のポートで受信され、同様に変換されてもよいが、簡単にするために図４では唯一のアクセス要求が検討される。単一ポートのメモリデバイスの総数（すなわち、素数）を使用して、受信したメモリアドレスにおいて除算演算が実行される。除算演算は２つの部分を有する。１つの部分は、ステップ404において、要求されたメモリアドレスに対応する単一ポートのメモリデバイスの識別情報を生成する。他の部分は、ステップ406において、要求されたメモリアドレスに対応する単一ポートのメモリデバイス内のメモリアドレスを生成する。
【００４７】
ステップ404において要求されたメモリアドレスに対応する単一ポートのメモリデバイスの識別情報の生成は、単一アドレス空間における要求されたメモリアドレスと単一ポートのメモリの総数とのモジュロを判定することにより実行される。換言すると、要求されたメモリアドレスと素数との除算の剰余が見つかる。例えば、図３を参照すると、ポートで受信された要求されたメモリアドレスが18である場合、18÷5の剰余は3である。理解できるように、メモリアドレス18は、列312に存在するため、メモリ3  208に対応する。
【００４８】
ステップ406における識別された単一ポートのメモリ内でのメモリアドレスの生成は、単一アドレス空間における要求されたメモリアドレスと、単一ポートのメモリの総数との商を計算することにより判定される。換言すると、要求されたメモリアドレスと素数との除算の結果の整数部分が見つかる。例えば、再び図３を参照すると、ポートで受信された要求されたメモリアドレスが18である場合、18÷5=3.6であるため、商は3である。理解できるように、メモリアドレス18は、列312のメモリアドレス3に位置する（ゼロから下に数える）。
【００４９】
ステップ404において単一ポートのメモリデバイスの識別情報が見つかり、ステップ406において単一ポートのメモリデバイス内のメモリアドレスが見つかった場合、ステップ408において、メモリインタフェース112は、要求に従ってデータにアクセスすることができる。
【００５０】
前述の動作は、バイナリアドレスから単にビットを読み取ることより複雑であるが、これは、性能が変換処理で妨げられないように、依然としてハードウェアにおいて効率的に実装可能である。それにも拘らず、競合のないことによる性能の改善は、アドレス変換の複雑性の増加よりも多くを補う。
【００５１】
従って、素数の数の単一ポートのメモリデバイスを使用した前述のマルチポートのメモリ構造は、デジタル信号処理システムにおいてメモリアクセスの性能を改善する効率的な方法を提供する。これは、異なる種類及び構造のデータが同じシステムにより処理され得る構成可能なデジタル信号処理システムの場合に特に当てはまる。素数の数の単一ポートのメモリデバイスの使用は、間隔が素数に一致する場合を除いて、全てのメモリアクセスパターンについて競合するリスクを最小化する。
【００５２】
SIMD動作について高速メモリアクセスを提供することに加えて、前述のマルチポートのメモリ構造はまた、構成可能なデジタル信号処理システムにおいて拡張され、更に広範囲に使用されてもよい。マルチポートのメモリにより提供されるアクセスポート106の数は、デジタル信号処理システムにおける複数の異なる処理要素が全てメモリにアクセスすることができ、そのため、マルチポートのメモリデバイスが共通の共有メモリ空間として動作するように拡張されてもよい。
【００５３】
マルチポートのメモリデバイスを共通メモリ空間として利用するデジタル信号処理システムの例が図５に示されている。システムは、データの記憶に使用されるマルチポートのメモリデバイス102を有する。図５の例では、マルチポートのメモリデバイス102は、処理されているデータとデジタル信号処理システムを動作するための構成データ／コードとの双方を格納するために使用されてもよい。
【００５４】
マルチポートのメモリデバイス102には１つ以上のデジタル信号プロセッサ502が接続される。DSP502は、例えば高速フーリエ変換、フィルタリング及び等化のようなデータにおける信号処理計算を実行するようにプログラム可能なプロセッサである。図１のDSP108は、このようなDSPの一例である。１つ以上のDSP502は、前述のように同時に１つより多くのデータのアイテムにアクセスするSIMDプロセッサでもよい。汎用プロセッサとは考えられないが、DSP502は、以下に説明するハードウェア周辺装置よりも構成可能性が高い。DSP502は、マルチポートのメモリデバイス102からデータを読み取り、データにおいて信号処理動作を実行し、データをマルチポートのメモリデバイス102に書き戻すプログラムコード／命令を実行する。
【００５５】
また、マルチポートのメモリデバイス102にはメモリアクセスコントローラ504が接続され、メモリアクセスコントローラ504は、複数のハードウェア周辺装置506のためのマルチポートのメモリデバイス102へのアクセスを提供する。或る例では、メモリアクセスコントローラ504は、ダイレクトメモリアクセス（DMA：direct  memory  access）コントローラの形式でもよい。メモリアクセスコントローラ504は、マルチポートのメモリデバイス102からのデータの読み取り又はマルチポートのメモリデバイス102へのデータの書き込みを可能にするためにハードウェア周辺装置506により使用され得る複数のメモリアクセスチャネル（例えば、DMAチャネル）を提供する。
【００５６】
ハードウェア周辺装置506は、特定の信号処理タスクを実行するように構成された特化された専用ハードウェアブロックである。例えば、１つのハードウェア周辺装置は、特化されたViterbi復号化ブロックでもよく、他のものは、特化されたデインターリーブブロックでもよい。ハードウェア周辺装置はまた、アクセラレータとして知られてもよい。ハードウェア周辺装置のそれぞれは、互いに独立して動作する。ハードウェア周辺装置は、そのタスクに特有の動作パラメータを備えるほど十分に構成可能でもよいが、そのタスクを変更するほど十分には構成可能ではない（例えば、Viterbiブロックは、デインターリーブブロックとして再構成されることは不可能である）。従って、ハードウェア周辺装置は、DSP502より特定のタスクに特化している。しかし、ハードウェア周辺装置は、非常に迅速且つ効率的に特化されたタスクを実行するように構成される。
【００５７】
また、マルチポートのメモリデバイス102には全体制御プロセッサ110（図１にも図示する）が接続され、全体制御プロセッサ110は、デジタル信号処理システムの動作を初期化、構成及び制御するために使用されてもよい。
【００５８】
前述のデジタル信号処理システムは、信号処理動作における柔軟性を提供する。例えば、異なるDSP502及びハードウェア周辺装置506がいずれかの所望の構成又は順序でデータを処理するように、システムが動作するように構成されてもよい。各ハードウェア周辺装置又はDSPは、システムの他の部分により提供され、マルチポートのメモリデバイス102に提供された共通メモリ空間に格納された１つ以上のデータのブロック（ここではデータのバッファとも呼ばれる）で動作してもよく、システムの他の要素により使用される１つ以上のデータのバッファを生成及び格納する。このことにより、デジタル信号処理システムは、様々な異なる種類の信号（例えば、異なる放送／通信標準）に使用されることが可能になる。
【００５９】
マルチポートのメモリデバイス102は、アクセスポートがDSP502、メモリアクセスコントローラ504及び全体制御プロセッサ110のそれぞれについて提供されるように構成されてもよい。これが部分的に図１に示されており、図１は、マルチポートのメモリデバイス102のポートにそれぞれ接続された１つのDSP108及び全体制御プロセッサ110を示している（図１に図示しない更なる処理要素もマルチポートのメモリデバイス102の更なるポートに接続されてもよい）。デジタル信号処理システムの処理要素にポートを提供することは、これらがメモリのデータに独立してアクセスすることを可能にする。これはまた、単一ポートのメモリデバイスの１つについて競合が生じない場合、同時に実行されてもよい。
【００６０】
マルチポートのメモリデバイス102により提供される共通メモリ空間の使用はまた、デジタル信号処理システムにおいて用意される合計メモリ記憶量が低減されることを可能にする。共通メモリ空間を使用しなければ、各処理要素は、自分の専用メモリを備える必要がある。例えば、DSP502のそれぞれは、自分の作業用メモリを有してもよく、全体制御プロセッサ110は、実行コード及びデータを格納する他の別々のメモリを有し、ハードウェア周辺装置506は、別々の入力及び出力バッファを有し、１つ以上の更なるメモリが処理要素の間でデータを交換するために使用されてもよい。
【００６１】
デジタル信号処理システムは複数の異なる標準での使用に構成可能であるため、これらの別々のメモリのそれぞれは、いずれかの所与のメモリの最大の要求を有する特定の標準のために別々の大きさにされる必要がある。換言すると、DSPメモリは、DSPメモリの最大の要求を有する標準に対応するほど十分に大きくなる必要がある。同様に、ハードウェア周辺装置のバッファは、ハードウェア周辺装置のバッファの最高の要求の標準（これは高いDSPメモリの要求の標準とは異なってもよい）に対応するほど十分に大きくなる必要がある。この結果、一般的に、かなりの量のメモリがいくつかの処理要素により使用されない。
【００６２】
しかし、共通メモリ空間がマルチポートのメモリデバイス102により提供される場合、（システムの個々の要素の要件ではなく）全体として異なる標準のメモリ要件が考慮されることが可能になる。換言すると、マルチポートのメモリデバイス102は、標準の全体の合計のメモリ要求の最大のものに対応するほど十分に大きくなる必要がある。これは、標準の間の異なるメモリ要件を平均化する効果を有する（例えば、小さいバッファであるが、より多くのDSPメモリを必要とするものもあるが、他のものは逆でもよい）。これは、かなり少ない全体のメモリ量しか必要としないという効果を有するため、シリコンの領域を節約する。
【００６３】
従って、マルチポートのメモリデバイス102により提供される共通メモリ空間は、デジタル信号プロセッサの作業空間、全体制御プロセッサ用のデータ及び実行コード、１つ以上のハードウェア周辺装置のための入力及び出力バッファ、プロセッサの間でデータを交換するための１つ以上のバッファ、並びにデジタル信号処理システムの他の構成データのように、システムに使用される全ての異なる種類のデータを保持してもよい。
【００６４】
マルチポートのメモリデバイス102が共通メモリ空間として動作している場合、より多くの処理要素が同時にメモリにアクセスすることを試みてもよい。これがシステム性能を低下させるメモリの多数の競合を生じることを回避するために、優先機構が提供されてもよい。優先機構は、２つのアクセス要求が同時に受信されて競合を生じる場合、高い優先値のポートで受信された要求が最初にサービス提供され、これが終了するまで他のポートの要求が待機するように、マルチポートのメモリデバイス102の各アクセスポートに優先値を割り当ててもよい。
【００６５】
一例では、ポートに割り当てられる優先値は、マルチポートのメモリ構造におけるポートの位置に基づいてもよい。例えば、各ポートは、ゼロからn-1までの識別情報を与えられる。ただし、nは存在するポートの数である（図１に示す）。優先機構は、競合の場合に最低の（又は最高の）識別情報を備えたポートが優先権を与えられるように、ポート識別情報に基づいてもよい。このことは、メモリインタフェースで非常に効率的且つ簡単に実装されることが可能であり、解決のためにかなりの実行時間を必要としない優先機構を提供する。一例では、SIMDプロセッサは、最も低い番号のポートがシステムの他の要素より優先的なメモリアクセスを有するように、最も低い番号のポートに接続されてもよい。或いは、例えば、各ポートの優先度は、最も時間に厳しい動作を備えた処理要素に接続されたポートが最高の優先度を受信するように、制御レジスタへの書き込みを通じて構成されてもよい。
【００６６】
一例では、競合から生じる性能のロスは、書き込み要求より読み取り要求を優先させること、及び、要求側デバイスにその動作を中止させることなく１つのクロック周期の競合を受ける要求が次のクロック周期でサービス提供され得るように、メモリインタフェースに何らかのパイプラインバッファ処理を導入するような、様々な技術により更に軽減されてもよい。或る例では、メモリアクセス性能はまた、前の書き込みアクセスにより書き込まれたメモリ位置から読み取られたデータの高速返送を可能にすることにより拡張されてもよい。この拡張は、メモリ位置を物理的に読み取る要件を除去することにより性能を改善し、待ち時間を低減することができる。
【００６７】
ここでは“プロセッサ”及び“コンピュータ”という用語は、命令を実行できるような処理機能を備えたいずれかのデバイスを示すために使用される。当業者は、このような処理機能が多くの異なるデバイスに組み込まれることを認識しており、従って、“コンピュータ”という用語は、セットトップボックス、メディアプレイヤ、デジタルラジオ、PC、サーバ、移動電話、パーソナルデジタルアシスタント及び多くの他のデバイスを含む。
【００６８】
当業者は、プログラム命令又はデータを格納するために利用される記憶装置は、ネットワークを通じて分散されてもよいことを認識する。例えば、遠隔コンピュータは、ソフトウェアとして記述される処理の例を格納してもよい。ローカル又は端末コンピュータは、遠隔コンピュータにアクセスし、プログラムを実行するためにソフトウェアの一部又は全部をダウンロードしてもよい。或いは、ローカルコンピュータは、必要に応じてソフトウェアの部分をダウンロードしてもよく、ローカル端末の或るソフトウェア命令を実行して遠隔コンピュータ（又はコンピュータネットワーク）の或るソフトウェア命令を実行してもよい。当業者はまた、当業者に知られている通常の技術を利用することにより、ソフトウェア命令の全部又は一部が専用回路、プログラム可能論理アレイ等により実行されてもよいことを認識する。
【００６９】
当業者に明らかなように、ここに提供される如何なる範囲又はデバイスの値は、考えられる効果を失うことなく拡張又は変更されてもよい。
【００７０】
前述の恩恵及び利点は、１つの実施例に関係してもよく、複数の実施例に関係してもよいことが分かる。実施例は、前述の問題のいずれか又は全部を解決するものに限定されず、前述の恩恵及び利点のいずれか又は全部を有するものに限定されない。
【００７１】
１つのアイテムへの言及は、１つ以上のこれらのアイテムを示す。ここでは“有する”という用語は、特定された方法のブロック又は要素を含むが、このようなブロック又は要素が排他的なリストを有さず、方法又は装置が更なるブロック又は要素を含んでもよいことを意味する。
【００７２】
ここに記載の方法のステップは、如何なる適切な順序で実行されてもよく、必要に応じて同時に実行されてもよい。更に、ここに記載の対象の要旨及び範囲を逸脱することなく、個々のブロックは方法のいずれかから削除されてもよい。考えられる効果を失うことなく、前述の例のいずれかの態様は、更なる例を形成するために、記載の他の例のいずれかの態様と組み合わされてもよい。
【００７３】
好ましい実施例の前述の説明は、一例のみとして与えられており、様々な変更が当業者により行われてもよいことが分かる。様々な実施例は特定の程度の詳細で上記に記載されているが、例示の要旨及び範囲を逸脱することなく、当業者は開示の実施例に様々な変更を行ってもよい。
【符号の説明】
【００７４】
102  マルチポートのメモリデバイス
104  単一ポートのメモリデバイス
106  ポート
108  デジタル信号プロセッサ
110  全体制御プロセッサ
112  メモリインタフェース
114  ポートバッファ
116  メモリデバイスバッファ
【図１】
0005752666.tif 000002
【図２】
0005752666.tif 000003
【図３】
0005752666.tif 000004
【図４】
0005752666.tif 000005
【図５】
0005752666.tif 000006