(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-19
(54)【発明の名称】シングルポートからの共有マルチポートメモリ
(51)【国際特許分類】
G11C 7/10 20060101AFI20240312BHJP
G06F 12/00 20060101ALI20240312BHJP
【FI】
G11C7/10 480
G06F12/00 560F
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023558217
(86)(22)【出願日】2022-03-18
(85)【翻訳文提出日】2023-09-21
(86)【国際出願番号】 US2022021019
(87)【国際公開番号】W WO2022203970
(87)【国際公開日】2022-09-29
(32)【優先日】2021-03-23
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】バルケ,リチャード・ルイス
(72)【発明者】
【氏名】マクグラス,ジョン・エドワード
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160MM20
(57)【要約】
本明細書の実施形態は、1つ以上のシングルポートメモリ(例えば、1W又は1Rメモリと称される、任意の所与の時間に1つの読み取り又は1つの書き込みのみを実行することができるメモリ)を含むマルチポートメモリシステムについて記載する。すなわち、マルチポートメモリシステムは、システム内のメモリが任意の所与の時間に1つの読み取り又は1つの書き込みしか実行できない場合であっても、複数の読み取り及び書き込み(例えば、1R/1W、1R/3W、2R/2W、3R/1Wなど)を並行して実行することができる。そうすることの利点には、面積及び電力の低減がある。
【特許請求の範囲】
【請求項1】
マルチポートメモリシステムであって、
一度に1つの読み取り又は1つの書き込みのみを実行することが可能なシングルポートメモリであって、前記シングルポートメモリのアドレス空間が前記マルチポートメモリシステムのアドレス空間の半分以下である、シングルポートメモリと、
受信された読み取りアドレス及び書き込みアドレスを除算するように構成された除算器と、
前記シングルポートメモリの書き込みデータポートに結合され、前記シングルポートメモリが読み取り動作を実行しているときに、受信された書き込みデータワードを記憶するように構成された、第1のレジスタと、
前記シングルポートメモリの読み取りデータポートに結合され、前記読み取り動作の間に前記シングルポートメモリから読み取られた複数のデータワードのうちの第1のデータワードを記憶するように構成された、第2のレジスタと、を備え、
外部エンティティの観点からは、前記マルチポートメモリシステムが、(i)少なくとも1つの読み取り及び少なくとも1つの書き込み動作を並行して行うこと、又は(ii)前記シングルポートメモリを使用して複数の読み取り若しくは複数の書き込みを並行して行うこと、のうちの少なくとも1つを実行する、マルチポートメモリシステム。
【請求項2】
書き込み動作の間に、複数のデータワードが前記書き込みデータポートで受信され、前記複数のデータワードのうちの1つが、前記読み取り動作の間に前記第1のレジスタに記憶された前記書き込みデータワードを含む、請求項1に記載のマルチポートメモリシステム。
【請求項3】
前記シングルポートメモリが、各メモリロケーションに複数のデータワードを記憶し、前記複数のデータワードの各々は前記マルチポートメモリシステムの前記アドレス空間内の異なるアドレスに対応するが、前記複数のデータワードは前記シングルポートメモリの前記アドレス空間内の同じアドレスに対応する、請求項1に記載のマルチポートメモリシステム。
【請求項4】
第1の入力において前記読み取りデータポートに接続され、第2の入力において前記第2のレジスタの出力に接続されるマルチプレクサであって、読み取りデータとして、前記読み取り動作の間に前記シングルポートメモリから読み取られた第2のデータワードを送信するか、又は前記第2のレジスタに以前に記憶された前記第1のデータワードを送信するかを選択するように構成されている、マルチプレクサを更に備える、請求項1に記載のマルチポートメモリシステム。
【請求項5】
前記マルチポートメモリシステムは、書き込み制御及び読み取り制御を使用して、任意のサイクルでデータ書き込みを開始及び停止するように構成されており、前記マルチポートメモリシステムが、
前記シングルポートメモリと受信された読み取りアドレス信号との間に接続された第1のマルチプレクサであって、前記第1のマルチプレクサの選択信号が前記読み取り制御によって制御される、第1のマルチプレクサと、
前記第1のマルチプレクサの入力に結合され、前記受信された読み取りアドレス信号を記憶するように構成された、第3のレジスタと、
前記書き込みデータポートと受信された書き込みデータとの間に接続された第2のマルチプレクサであって、前記第2のマルチプレクサの選択信号が前記書き込み制御によって制御される、第2のマルチプレクサと、
前記第2のマルチプレクサの入力に結合され、前記受信された書き込みデータの少なくとも一部分を記憶するように構成された、第4のレジスタと、
前記マルチポートメモリシステムの読み取り出力と前記読み取りデータポートとの間に接続された第3のマルチプレクサであって、前記第3のマルチプレクサの選択信号が前記読み取り制御によって制御される、第3のマルチプレクサと、
前記第3のマルチプレクサの入力に結合され、前記読み取りデータポートによって提供された読み取りデータの少なくとも一部分を記憶するように構成された、第5のレジスタと、を備える、請求項1に記載のマルチポートメモリシステム。
【請求項6】
前記読み取りデータポートに結合された複数の読み取りバッファを更に備え、前記複数の読み取りバッファの各々が、それぞれの読み取り動作の間に前記シングルポートメモリから受信された複数のデータワードを記憶するように構成されており、前記複数の読み取りバッファが各々、前記シングルポートメモリによって実行される各読み取り及び書き込み動作の間にそれぞれのデータワードを出力し、
前記外部エンティティの前記観点からは、前記マルチポートメモリシステムが、複数の読み取り動作を並行して実行する、請求項1に記載のマルチポートメモリシステム。
【請求項7】
前記書き込みデータポートに結合された複数の書き込みバッファを更に備え、前記複数の書き込みバッファの各々が、前記シングルポートメモリが読み取り動作を実行するときに複数の書き込みデータワードをバッファリングするように構成されており、前記複数の書き込みバッファのうちの少なくとも1つが、書き込み動作を実行するときに、バッファリングされた前記複数の書き込みデータワードのうちの1つを前記シングルポートメモリに出力し、
前記外部エンティティの前記観点からは、前記マルチポートメモリシステムが、複数の書き込み動作を並行して実行する、請求項1に記載のマルチポートメモリシステム。
【請求項8】
前記読み取りデータポートに結合された複数の読み取りバッファと、
前記書き込みデータポートに結合された複数の書き込みバッファと、を更に備え、前記マルチポートメモリシステムが、前記複数の読み取り及び書き込みバッファのサブセットを選択的に使用することによって、1R/xW、yR/xW、yR/1W、xW、又はyRメモリのうちの1つとして機能するように構成可能であり、x及びyが、2以上の整数値である、請求項1に記載のマルチポートメモリシステム。
【請求項9】
前記複数の読み取りバッファ及び前記複数の書き込みバッファが動的に選択可能であり、その結果、前記マルチポートメモリシステムが、1R/xW、yR/xW、yR/1W、xW、又はyRメモリのうちの1つから、異なる数の読み取り又は書き込みを並行して実行するように切り替えることができる、請求項8に記載のマルチポートメモリシステム。
【請求項10】
前記シングルポートメモリが、ピークキャンセル-クレストファクタ低減(PC-CFR)のためのパルスデータを記憶し、前記マルチポートメモリシステムが、
ポートを使用して前記シングルポートメモリに結合された複数のパルスキャンセルユニットを備える、請求項1に記載のマルチポートメモリシステム。
【請求項11】
シングルポートメモリを使用して、読み取り及び書き込みを並行して実行するための方法であって、
第1のサイクルの間に、書き込みデータポートを使用して前記シングルポートメモリに第1の複数のデータワードを書き込むことと、
第2のサイクルの間に、読み取りデータポートを使用して、前記シングルポートメモリの第1のメモリアドレスから第2の複数のデータワードを読み取ることと、
前記第2のサイクルの間に、前記読み取りデータポートに結合された第1のレジスタに、前記第2の複数のデータワードのうちの第1のデータワードを記憶することと、
前記第2のサイクルの間に、前記第2の複数のデータワードのうちの第2のデータワードを、読み取りデータとして出力することと、
前記第2のサイクルの間に、前記シングルポートメモリの書き込みデータポートに結合された第2のレジスタに、第1の受信されたワードを記憶することと、
第3のサイクルの間に、前記書き込みデータポートを使用して、前記第1の受信されたワード及び第2の受信されたワードを、前記シングルポートメモリの第2のメモリアドレスに書き込むことと、
前記第3のサイクルの間に、前記第2の複数のデータワードのうちの前記第2のデータワードを、読み取りデータとして出力することと、を含む、方法。
【請求項12】
外部エンティティの観点からは、前記シングルポートメモリが、(i)少なくとも1つの読み取りと少なくとも1つの書き込み動作とを並行して行うこと、又は(ii)複数の読み取り若しくは複数の書き込みを並行して行うこと、のうちの少なくとも1つを実行するマルチポートメモリシステムの一部である、請求項11に記載の方法。
【請求項13】
前記シングルポートメモリのアドレス空間が、前記マルチポートメモリシステムのアドレス空間の半分以下である、請求項12に記載の方法。
【請求項14】
前記シングルポートメモリにおいて読み取り及び書き込み動作を実行するために使用される書き込み及び読み取りアドレスを、2以上かつ2の累乗である整数値によって除算することを更に含む、請求項13に記載の方法。
【請求項15】
前記第1、第2、及び第3のサイクルが、連続したサイクルである、請求項11に記載の方法。
【請求項16】
前記シングルポートメモリの、前記書き込みデータポート及び前記読み取りデータポートに遅延を加えることによって、前記シングルポートメモリにおいて任意のサイクルで書き込み動作を開始及び停止することを更に含む、請求項11に記載の方法。
【請求項17】
受信された読み取りアドレスをレジスタに記憶することと、
任意のサイクルにおける書き込み動作の開始又は停止に応答して、前記シングルポートメモリにおいて読み取り動作を実行するために、前記レジスタに記憶された前記受信された読み取りアドレス又は現在受信されている読み取りアドレスのうちの少なくとも1つを選択することと、を更に含む、請求項16に記載の方法。
【請求項18】
第1の時間に、複数の読み取りバッファ及び複数の書き込みバッファのサブセットを選択的に使用することによって、1R/xW、yR/xW、yR/1W、xW、又はyRマルチポートメモリ、のうちの1つとして機能するように前記シングルポートメモリを構成することを更に含み、x及びyが2以上の整数値である、請求項11に記載の方法。
【請求項19】
前記第1の時間の後の第2の時間に、前記複数の読み取り及び書き込みバッファの異なるサブセットを選択的に使用することによって、異なるマルチポートメモリとして機能するように前記シングルポートメモリを再構成することを更に含む、請求項18に記載の方法。
【請求項20】
マルチポートメモリシステムであって、
一度に1つの読み取り又は1つの書き込みのみを実行することが可能なシングルポートメモリであって、前記マルチポートメモリシステムの深さが、前記シングルポートメモリの深さよりも大きく、前記マルチポートメモリシステムの幅が、前記シングルポートメモリの幅よりも小さい、シングルポートメモリと、
前記シングルポートメモリの書き込みデータポートに結合され、前記シングルポートメモリが読み取り動作を実行しているときに受信された書き込みデータワードを記憶するように構成された、第1のレジスタと、
前記シングルポートメモリの読み取りデータポートに結合され、前記読み取り動作の間に前記シングルポートメモリから読み取られた複数のデータワードのうちの第1のデータワードを記憶するように構成された、第2のレジスタと、を備え、
前記マルチポートシステムに対応するアクセスパターンが、読み取り及び書き込み動作を実行するために使用されるメモリアドレスが固定量に従って増分するように順次的である、マルチポートメモリシステム。
【請求項21】
前記シングルポートメモリが、各メモリロケーションに複数のデータワードを記憶し、前記複数のデータワードの各々が、前記マルチポートメモリシステムのアドレス空間内の異なるアドレスに対応するが、前記複数のデータワードが、前記シングルポートメモリのアドレス空間内の同じアドレスに対応する、請求項20に記載のマルチポートメモリシステム。
【請求項22】
第1の入力において前記読み取りデータポートに接続され、第2の入力において前記第2のレジスタの出力に接続されるマルチプレクサであって、読み取りデータとして、前記読み取り動作の間に前記シングルポートメモリから読み取られた第2のデータワードを送信するか、又は前記第2のレジスタに以前に記憶された前記第1のデータワードを送信するかを選択するように構成されている、マルチプレクサを更に備える、請求項20に記載のマルチポートメモリシステム。
【請求項23】
前記読み取りデータポートに結合された複数の読み取りバッファを更に備え、前記複数の読み取りバッファの各々が、それぞれの読み取り動作の間に前記シングルポートメモリから受信された複数のデータワードを記憶するように構成されており、前記複数の読み取りバッファが各々、前記シングルポートメモリによって実行される各読み取り及び書き込み動作の間にそれぞれのデータワードを出力し、
外部エンティティの観点からは、前記マルチポートメモリシステムが、複数の読み取り動作を並行して実行する、請求項20に記載のマルチポートメモリシステム。
【請求項24】
前記書き込みデータポートに結合された複数の書き込みバッファを更に備え、前記複数の書き込みバッファの各々が、前記シングルポートメモリが読み取り動作を実行するときに複数の書き込みデータワードをバッファリングするように構成されており、前記複数の書き込みバッファのうちの少なくとも1つが、書き込み動作を実行するときに、バッファリングされた前記複数の書き込みデータワードのうちの1つを前記シングルポートメモリに出力し、
外部エンティティの観点からは、前記マルチポートメモリシステムが、複数の書き込み動作を並行して実行する、請求項20に記載のマルチポートメモリシステム。
【請求項25】
前記読み取りデータポートに結合された複数の読み取りバッファと、
前記書き込みデータポートに結合された複数の書き込みバッファと、を更に備え、前記マルチポートメモリシステムが、前記複数の読み取り及び書き込みバッファのサブセットを選択的に使用することによって、1R/xW、yR/xW、yR/1W、xW、又はyRメモリのうちの1つとして機能するように構成可能であり、x及びyが、2以上の整数値である、請求項20に記載のマルチポートメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の例は、概して、シングルポートメモリ(例えば、任意の所与の時間に読み取りのみ又は書き込みのみを実行することができるメモリ要素)を使用するマルチポートメモリシステム(例えば、複数の読み取り及び書き込みを並行して実行することができるシステム)に関する。
【背景技術】
【0002】
多くのアプリケーションは、読み取り及び書き込みを並行して実行するメモリ(例えば、マルチポートメモリシステム)を必要とする。これらのシステムは、通常、大きな遅延バッファ及び動的係数記憶装置を実装するために、デュアルポートメモリ(すなわち、少なくとも1つの読み取り及び書き込みを並行して実行するメモリ)を含む。特定用途向け集積回路(application specific integrated circuit、ASIC)では、デュアルポートメモリは、ビット当たりの消費する面積及び電力が、シングルポートメモリ(すなわち、任意の所与の時間に単一の読み取り又は単一の書き込みのみを実行することができるメモリ)よりも多い。また、複数の独立した小さなメモリは、単一の大きなメモリと比較した場合、面積において非効率的である。したがって、マルチポートメモリ(例えば、読み取り及び書き込みを並行して実行することができる2ポートメモリ)をシングルポートメモリで置き換えることには、面積及び電力の大きな利点がある。そうすることで、メモリマクロの面積を40%低減することができる。
【発明の概要】
【0003】
一実施形態は、マルチポートメモリシステムであって、一度に1つの読み取り又は1つの書き込みのみを実行することが可能なシングルポートメモリであって、シングルポートメモリのアドレス空間がマルチポートメモリシステムのアドレス空間の半分以下である、シングルポートメモリと、受信された読み取りアドレス及び書き込みアドレスを除算するように構成された除算器と、シングルポートメモリの書き込みデータポートに結合され、シングルポートメモリが読み取り動作を実行しているときに受信された書き込みデータワードを記憶するように構成された、第1のレジスタと、シングルポートメモリの読み取りデータポートに結合され、読み取り動作の間にシングルポートメモリから読み取られた複数のデータワードのうちの第1のデータワードを記憶するように構成された、第2のレジスタと、を含む、マルチポートメモリシステムについて記載する。更に、外部エンティティの観点からは、マルチポートメモリシステムは、(i)少なくとも1つの読み取り及び少なくとも1つの書き込み動作を並行して行うこと、又は(ii)シングルポートメモリを使用して複数の読み取り若しくは複数の書き込みを並行して行うこと、のうちの少なくとも1つを実行する。
【0004】
本明細書に記載される別の実施形態は、方法であって、第1のサイクルの間に、書き込みデータポートを使用してシングルポートメモリに第1の複数のデータワードを書き込むことと、第2のサイクルの間に、読み取りデータポートを使用して、シングルポートメモリの第1のメモリアドレスから第2の複数のデータワードを読み取ることと、第2のサイクルの間に、読み取りデータポートに結合された第1のレジスタに、第2の複数のデータワードのうちの第1のデータワードを記憶することと、第2のサイクルの間に、第2の複数のデータワードのうちの第2のデータワードを、読み取りデータとして出力することと、第2のサイクルの間に、シングルポートメモリの書き込みデータポートに結合された第2のレジスタに、第1の受信されたワードを記憶することと、第3のサイクルの間に、書き込みデータポートを使用して、第1の受信されたワード及び第2の受信されたワードを、シングルポートメモリの第2のメモリアドレスに書き込むことと、第3のサイクルの間に、第2の複数のデータワードのうちの第2のデータワードを、読み取りデータとして出力することと、を含む、方法である。
【0005】
本明細書に記載される別の実施形態は、マルチポートメモリシステムであって、一度に1つの読み取り又は1つの書き込みのみを実行することが可能なシングルポートメモリであって、マルチポートメモリシステムの深さが、シングルポートメモリの深さよりも大きく、マルチポートメモリシステムの幅が、シングルポートメモリの幅よりも小さい、シングルポートメモリと、シングルポートメモリの書き込みデータポートに結合され、シングルポートメモリが読み取り動作を実行しているときに受信された書き込みデータワードを記憶するように構成された、第1のレジスタと、シングルポートメモリの読み取りデータポートに結合され、読み取り動作の間にシングルポートメモリから読み取られた複数のデータワードのうちの第1のデータワードを記憶するように構成された、第2のレジスタと、を含む、マルチポートメモリシステムである。更に、マルチポートシステムに対応するアクセスパターンは、読み取り及び書き込み動作を実行するために使用されるメモリアドレスが固定量に従って増分するように順次的である。
【0006】
上記の特徴が詳細に理解され得るように、上記で簡潔に要約されたより具体的な説明が、例示的な実装形態を参照することによって行われ得、それらの実装形態のうちのいくつかが添付の図面に示される。しかしながら、添付の図面は、典型的な例示の実装形態のみを示しており、したがって、その範囲を限定するものと見なされるべきではないことに留意されたい。
【図面の簡単な説明】
【0007】
【
図1】一例による、シングルポートメモリを使用して実装されたマルチポートメモリシステムの図である。
【
図2】一例による、シングルポートメモリを使用して読み取り及び書き込みを並行して実行するためのタイミング図である。
【
図3】一例による、シングルポートメモリを使用して実装されたマルチポートメモリシステムの図である。
【
図4】一例による、シングルポートメモリを使用して実装された1W3Rメモリシステムの図である。
【
図5】一例による、シングルポートメモリを使用して実装された構成可能なマルチポートメモリシステムの図である。
【
図6A】一例による、マルチポートメモリシステムを使用してピークキャンセル-クレストファクタ低減を実行することを示す。
【
図6B】一例による、マルチポートメモリシステムを使用してピークキャンセル-クレストファクタ低減を実行することを示す。
【発明を実施するための形態】
【0008】
様々な特徴が、図面を参照して以下に記載される。図面は縮尺どおりに描かれている場合もあるし、描かれていない場合もあり、同様の構造又は機能の要素は図面全体を通して同様の参照番号によって表されていることに留意されたい。図面は、特徴の説明を容易にすることのみを意図していることに留意されたい。それらは、明細書の網羅的な説明として、又は特許請求の範囲に対する限定として特徴付けられていない。加えて、図示された例は、示された全ての態様又は利点を有する必要はない。特定の実施例に関連して説明される態様又は利点は、必ずしもその実施例に限定されず、そのように例解されていない場合、又はそのように明示的に説明されていない場合であっても、任意の他の実施例において実施することができる。
【0009】
本明細書の実施形態は、1つ以上のシングルポートメモリ(例えば、1W又は1Rメモリと称される、任意の所与の時間に1つの読み取り又は1つの書き込みのみを実行することができるメモリ)を含むマルチポートメモリシステムについて記載する。すなわち、マルチポートメモリシステムは、システム内のメモリが任意の所与の時間に1つの読み取り又は1つの書き込みしか実行できない場合であっても、複数の読み取り及び書き込み(例えば、1R/1W、1R/3W、2R/2W、3R/1Wなど)を並行して実行することができる。マルチポートシステムは、任意のデュアルポートメモリを含まず、シングルポートメモリのみに依存する。そうすることの利点には、面積及び電力の低減がある。
【0010】
一実施形態では、シングルポートメモリは、低減された深さ(例えば、メモリ空間の半分)を含むが、マルチポートメモリとして各アドレスに複数のワード(例えば、幅が2倍)を記憶する。したがって、書き込みを実行するとき、マルチポートメモリは、シングルポートメモリ内の同じアドレスに2つのデータワードを記憶する。更に、読み取りを実行するとき、システムは、同じアドレスから2つ(以上)のワードを取り出す。しかし、システムは、取り出されたワードのうちの一方のみが現在のサイクルで出力され、他方の取り出されたワードが後続のサイクルで出力されるように、ワードのうちの一方を記憶(又はバッファリング)するためのレジスタも含む。並行して、マルチポートメモリシステムは、シングルポートメモリに書き込まれる第1のワードを受信し、バッファリングすることができる。次のサイクルにおいて、システムは、バッファリングされたワード及び現在受信されているワードをシングルポートメモリに書き込む別の書き込み動作を実行することができる。その結果、各クロックサイクルにおいて、マルチポートシステムは、1つのワード読み取り及び1つのワード書き込みを並行して実行することができる。これは、所与のポートのアクセスパターンが順次的であるか又は一貫している(例えば、メモリアドレスがランダムに変化するのではなく1だけ増分する)任意のアプリケーションとともに使用され得る。
【0011】
図1は、一例による、シングルポートメモリ150を使用して実装されたマルチポートメモリシステム100の図である。外部回路(例えば、外部エンティティ)の観点からは、マルチポートメモリシステム100は、デュアルポートメモリ、例えば、読み取り及び書き込みを並行して実行することができるメモリである。しかしながら、メモリシステム100は、任意の所与のクロックサイクルの間に1つの読み取り又は1つの書き込みしか実行できないシングルポートメモリ150(すなわち、1R又は1Wメモリ)を含む。一実施形態では、メモリシステム100は、IC(例えば、プロセッサ、ASIC、フィールドプログラマブルゲートアレイ、グラフィックス処理ユニットなど)において実装される。
【0012】
示されるように、メモリシステム100は、外部回路(例えば、メモリコントローラ又はプロセッサ)から、書き込みアドレス105、読み取りアドレス110、及び書き込みデータ160を受信する。メモリシステム100は、カウント125を使用して、シングルポートメモリ150に対する書き込み又は読み取りの実行を切り替える。カウント125は、クロックサイクル(例えば、ハイ期間及びロー期間)ごとに値を切り替えることができ、第1のクロックサイクルの間に、カウント125は、メモリシステム100にシングルポートメモリ150にデータを書き込ませ、次のクロックサイクルの間に、カウントは、メモリシステム100にシングルポートメモリ150からデータを読み取らせる。
【0013】
書き込み動作を実行するために、カウント125は、「1」がシングルポートメモリ150に供給されるようにマルチプレクサ(mux)120を制御し、メモリ150に、その書き込みデータポート(すなわち、WDATA)で受信されたデータを書き込むように命令する。示されるように、WDATA入力ポートにおける書き込みデータは、単一のみのデータワードではなく、2ワード(2W)を有する。例えば、デュアルポートメモリは、単一のデータワードを受信し、そのワードを対応するメモリアドレスに書き込むことができる。しかしながら、シングルポートメモリ150は、代わりに、各メモリアドレスに2ワードを書き込む。したがって、シングルポートメモリ150は、デュアルポートメモリとして半分の深さ(例えば、半分のメモリアドレス)を使用するが、各アドレスに2つのワードを記憶するために2倍の幅を有する。
【0014】
外部回路は、マルチポートメモリシステム100がデュアルポートメモリの代わりにシングルポートメモリ150を使用することを知らないので、クロックサイクルごとに書き込まれるべき1つのワードを提供する。一方、カウント125は、メモリシステム100が1サイクルおきに書き込みを実行することを可能にする。したがって、メモリシステム100は、シングルポートメモリ150が読み取りを実行しているサイクルの間に受信されるデータワードを記憶又はバッファリングするためのレジスタ135を含む。次いで、次のサイクルで、シングルポートメモリ150は、現在受信されているワード及びレジスタ135に記憶されているバッファリングされたワードの両方を記憶するための書き込みを実行する。カウント125はまた、mux115を制御して、書き込みを実行するときには書き込みアドレス105がシングルポートメモリ150に入力されるが、読み取りを実行するときには読み取りアドレス110が入力されることを確実にする。更に、これらのアドレス105、110は、シングルポートメモリ150がマルチポートシステム100のアドレス空間の半分のメモリ空間を有し、各メモリロケーションに2つのワードを記憶するので、除算器130を使用して(例えば、ビットシフト演算を実行することによって)2で除算される。
【0015】
読み取りを実行するとき、カウント125は、シングルポートメモリ150に「0」が提供されるようにmux120を制御し、mux120に、読み取りデータポート(RDATA)を使用して、(2で除算された)読み取りアドレス110のメモリ位置に記憶されたデータを出力するように命令する。これに応答して、シングルポートメモリ150は、このメモリアドレスに記憶された両方のワードを出力する。しかしながら、これらのワードの両方を要求側エンティティに提供するのではなく、メモリシステム100は、mux145を使用して一方のワードのみを出力し、他方のワードはレジスタ140に記憶される。したがって、カウント125が次のクロックサイクルにおいてシングルポートメモリ150に書き込みを実行させるとき、カウント125はまた、レジスタ140に記憶されたデータを出力するようにmux145に命令し、それによって、前の読み取りサイクルの間に取り出された第2のワードを出力する。したがって、レジスタ140は、要求側エンティティが次のクロックサイクルにおいて望むと予想されるデータを事前バッファリングする。したがって、メモリシステム100は、所与のポート(例えば、シングルポートメモリ150の読み取りポート及び書き込みポート)のためのアクセスパターンが順次的である任意のアプリケーションのためのデュアルポートメモリの機能を実行することができる。例示的な関数は、ストリーミング高速フーリエ変換(Fourier transforms、FFT)及びピークキャンセル-クレストファクタ低減(Peak Cancellation-Crest Factor Reduction、PC-CFR)を含む。
【0016】
図示されていないが、メモリシステム100の周辺にバッファ制御ロジックを配設して、アドレス及びインターフェース制御ロジックを提供してもよい。外部エンティティの観点からは、メモリシステム100は、メモリシステム100に書き込まれている、又はメモリシステム100から読み取られている2つのワードのアドレスが連続しているという唯一の基準を有する通常のデュアルポートメモリと同じように機能する。データが読み取られる前にメモリにコミットされることを保証するために、特定のアドレスへのデータの書き込みとそのアドレスからのデータの読み取りとの間に、十分なクロックサイクルが存在することを保証することも重要である。
【0017】
図2は、一例による、シングルポートメモリを使用して読み取り及び書き込みを並行して実行するための、
図1のカウント125のタイミング図である。明確にするために、
図2は、
図1に示されるメモリシステム100と連動して考察される。一実施形態では、カウント125は、起動時に、
図1のメモリシステム100に読み取りモードになるように命令する。この読み取り動作の間に、書き込みデータのワードがレジスタ135に転送される。次に、
図2はサイクル205で始まり、ここでカウント125はメモリシステム100に書き込みを実行するように命令し、その間に2つのワードがシングルポートメモリ150に書き込まれる。すなわち、メモリシステム100は、前の読み取り動作の間に受信された書き込みデータワード及び現在受信されているワードの両方を、メモリ150の同じアドレス位置に書き込む。
【0018】
サイクル210において、カウント125は、シングルポートメモリ150への読み取りを実行するようにメモリシステム100に命令し、ここで2つのワードがメモリ150から読み取られるが、メモリシステム100は、サイクル210の間にそれらのワードのうちの一方のみを読み取りデータ155として出力し、もう一方の取り出されたワードは、レジスタに記憶(又はバッファリング)される)。
【0019】
これらの動きと並行して、サイクル210の間に、メモリシステムはまた、書き込みデータの第1のワードをレジスタ135に記憶する。したがって、外部回路の観点からは、メモリシステム100が、サイクル210の間に、メモリから1つのワードを読み取り、書き込みデータの別のワードをメモリに記憶したように見える。しかしながら、実際には、メモリシステム100は、シングルポートメモリ150から2つのワードを読み取り、それらのワードのうちの一方を要求側エンティティに出力し、メモリ150から読み取られた他方のワードをバッファリングし、書き込みデータのワードもバッファリングしている。
【0020】
サイクル215において、カウントは、サイクル210の間にバッファリングされた書き込みデータの第1のワードと、メモリシステム100において現在受信されている書き込みデータの第2のワードとをシングルポートメモリ150に書き込むように、メモリシステム100に命令する。サイクル205と同様に、書き込みデータのこれらの2つのワードは同じメモリアドレスに記憶される。
【0021】
シングルポートメモリ150への書き込み動作の実行と並行して、メモリシステムはまた、前のサイクル210の間にメモリ150から取り出された第2のワードを出力する。すなわち、カウント125は、レジスタ140にバッファリングされた読み取りデータのワードが、今度は読み取りデータ155として出力されるように、mux145を制御する。したがって、外部回路の観点からは、メモリシステム100は、実際にはシステム100がシングルポートメモリ150に2つのワードを書き込み、前のサイクル210において取り出された読み取りデータのバッファリングされたワードを出力しているとき、別の読み取り及び書き込みを並行して実行している。
【0022】
サイクル220において、カウント125は再び、メモリシステム100に、シングルポートメモリ150への読み取りを実行するように命令し、ここで2つのワードがメモリ150から読み取られるが、メモリシステム100は、サイクル210の間にそれらのワードのうちの一方のみを読み取りデータ155として出力し、他方の取り出されたワードは、レジスタ140に記憶(又はバッファリング)される。
【0023】
これらの動きと並行して、メモリシステム100は、書き込みデータの第1のワードをレジスタ135に記憶する。したがって、外部回路の観点からは、メモリシステム100が、サイクル220の間に、メモリから1つのワードを読み取り、書き込みデータの別のワードをメモリに記憶したように見える。しかしながら、メモリシステム100は、実際には、シングルポートメモリ150から2つのワードを読み取り、それらのワードのうちの一方を要求側エンティティに出力し、メモリ150から読み取られた他方のワードをバッファリングし、また書き込みデータのワードもバッファリングしている。
【0024】
サイクル225において、カウント125は再び、サイクル220の間にバッファリングされた書き込みデータの第1のワードと、メモリシステム100において現在受信されている書き込みデータの第2のワードとをシングルポートメモリ150に書き込むように、メモリシステム100に命令する。書き込みデータのこれらの2つのワードは同じメモリアドレスに記憶される。
【0025】
シングルポートメモリ150への書き込み動作の実行と並行して、メモリシステム100はまた、前のサイクル220の間にメモリ150から取り出された第2のワードを出力する。したがって、外部回路の観点からは、メモリシステム100は、実際にはシステム100がシングルポートメモリ150に2つのワードを書き込み、前のサイクル220において取り出された読み取りデータのバッファリングされたワードを出力したとき、別の読み取り及び書き込みを並行して実行している。
【0026】
このようにして、カウント125は、各サイクルの間にシングルポートメモリ150を使用して2ワード読み取り又は2ワード書き込みのいずれかを実行するために、読み取りサイクルと書き込みサイクルとの間で増分し続けることができる。しかしながら、IC内の他の回路に対しては、メモリシステム100は、デュアルポートメモリのように、1R及び1Wを並行して実行するように見える。
【0027】
図3は、一例による、シングルポートメモリ150を使用して実装されたマルチポートメモリシステム300の図である。いくつかのFFTアプリケーションは、メモリシステム300が任意のサイクルで書き込み動作を開始及び停止できることを必要とする。
図1のメモリシステム100は、各書き込みが2つのデータワードを記憶すると仮定するので、これを行うことができない。しかしながら、
図3のメモリシステム300は、書き込み制御320及び読み取り制御315を使用して、書き込みの任意の開始及び停止を可能にする。とりわけ、
図3は、読み取り動作を任意に停止する能力を示しているのではなく、読み取りデータを保持するためにメモリシステム100の出力にFIFOを追加することによって実行され得る。
【0028】
図3は、
図1と同じ構成要素の多くを含み、同じ参照番号が使用されている。これらの構成要素は、上述したのと同様に機能するので、ここでは詳細に考察しない。
【0029】
読み取りの任意の開始に対して、メモリシステム300は、シングルポートメモリ150のアクセスが、カウント125によって実行される読み取り/書き込みアクセス制御と整列されないことを可能にする。すなわち、メモリシステム300がシングルポートメモリ150への書き込みを行っているときに読み取りイネーブル(en1)がハイになる場合、システム300は読み取りアクセスを1サイクルだけ遅延させる。これは、読み取りアドレスを入力のレジスタ305にバッファリングし、次に読み取り制御315によって生成された信号を使用して次のサイクルでメモリを読み取ることによって行われる(カウント125がシステム300にシングルポートメモリ150の読み取りを実行するように命令するとき)。しかしながら、これは、出力の読み取りデータ(すなわち、読み取りデータ155)を遅延させる。
【0030】
FFTアプリケーションが固定待ち時間を必要とする場合、この遅延は、第2のレジスタ335を読み取りデータ出力に追加することによって調整される。ここで、メモリ出力データの両方のワードが捕捉され、次の2サイクルで出力される。読み取りアクセスが整列されている(例えば、任意の開始が実行されない)場合、読み取りアドレスは遅延せず、第2のレジスタ335は、一貫した追加サイクル遅延を与えるように出力を遅延させるために使用される。このようにして、メモリシステム300は、レジスタ305に記憶されているアドレス又はレジスタ335に記憶されているデータ出力のいずれかからの遅延を提供する。別の言い方をすれば、入力又は出力のいずれかにおいて追加の遅延が常に存在し、その結果、入力アドレスから出力データへの固定遅延が生じる。一例として、カウントが1であるときにメモリが読み取る場合、読み取り制御315は、カウント=0のときにen1が1に遷移するときに、1を生成する。これはen1=0まで持続する。これは、mux310にレジスタ305を選択させ、読み取り出力上で、mux340を使用して読み取りデータ出力レジスタ335なしでメモリ出力経路を選択させる。
【0031】
書き込みの任意の開始の場合、システム300の書き込み側は、カウント=1である場合にデータがバッファリングされることを可能にする追加のバッファ(例えば、レジスタ325)を入力に提供する。書き込みの任意の停止の場合、第1の項目のデータがメモリにコミットされることを保証するために第2の項目のデータが入力されたかどうかにかかわらず、両方のワードを書き込むことができる。書き込みの再開時に、第2のワードは、レジスタ135に記憶された前のワードとともに書き込むことができる。これにより、別個の書き込みイネーブルの使用が代替手法であるが、メモリ上に別個の書き込みイネーブルを有する必要性を回避する。
【0032】
図4は、一例による、シングルポートメモリ450を使用して実装された1W3Rメモリシステム440の図である。すなわち、外部エンティティの観点からは、メモリシステム440は、1つの書き込み及び3つの読み取りを並行して実行するが、任意の所与の時間に読み取り又は書き込みのいずれかを実行することができるシングルポートメモリ450のみを含む。この例では、シングルポートメモリ450は、データワードサイズを4で除算したもの(W/4)である深さと、データワードサイズの4倍(W×4)である幅とを有する。したがって、メモリシステム400は、シングルポートメモリ450に書き込むたびに、同じメモリアドレスに4つのデータワードを記憶し、メモリ450から読み取るたびに、4つのデータワードを取り出す。
【0033】
メモリシステム400は、1つの書き込み及び3つの読み取りを循環するカウント410(この場合、2ビットカウントであり得る)によって制御されるmux405を含む。すなわち、第1のサイクルの間、mux405は書き込みコマンドを出力するが、次の3つの後続サイクルについては、mux405は読み取りコマンドを出力する。したがって、外界からはメモリシステム400がサイクルごとに1つの書き込み及び3つの読み取りを実行するように見えたとしても、シングルポートメモリ450は、4サイクルにわたって1つの書き込み及び3つの読み取りを実行する。
【0034】
カウント410はまた、適切な書き込みアドレス(すなわちaddr0)及び読み取りアドレス(すなわちaddr1~3)をシングルポートメモリ450に渡すmux415を制御する。これらのアドレスは、メモリ450のアドレス空間が4で除算されているので、除算器420によって4で除算される。
【0035】
書き込みバッファ425は、各書き込みサイクル(4番目のクロックサイクルごとに発生する)の間に4つのデータワードをシングルポートメモリ450に書き込む準備をする。ここでも、外部回路は、メモリシステム400がサイクルごとに書き込みを実行すると仮定するので、要求側エンティティは、サイクルごとにデータワードを書き込みバッファ425に送信する。しかしながら、各サイクルでメモリ450への書き込みを実行する代わりに、書き込みバッファ425は、メモリ450が読み取りを実行するサイクルの間に受信された3つのデータワードを、3つのレジスタに記憶する。マルチプレクサ405が書き込みコマンドを出力すると、シングルポートメモリ450は、現在受信されている書き込みデータワードとともに、前の3つの読み取りサイクルの間にレジスタに記憶されたデータを受信し、4つのデータワードを同じメモリアドレスに書き込む。したがって、外界には、メモリシステム400がサイクルごとにデータワードをメモリに書き込むように見えるが、実際にはメモリシステム400は、4サイクルごとに1回メモリ450に書き込む。更に、4ワードのシーケンスにおける第1のアドレスが整列されている(すなわち、最初の2つのLSBが0に設定される)と仮定される。
【0036】
メモリシステム400は、3つの順次読み取り動作の各々の間にシングルポートメモリ450から読み取られる4つのデータワードを記憶するための、3つの読み取りバッファ430を含む。例えば、第1の読み取り動作の間に、4つのデータワードがaddr1/4から読み取られ、読み取りバッファ430Aに送信され、第2の読み取り動作の間に、4つのデータワードがaddr2/4から読み取られ、読み取りバッファ430Bに送信され、第3の読み取り動作の間に、4つのデータワードがaddr3/4から読み取られ、読み取りバッファ430Cに送信される。
【0037】
各サイクルの間に、データワードがバッファ430の各々から読み取られる。すなわち、カウント410は、各muxがバッファ430に記憶されたデータワードのうちの1つを出力するように、読み取りバッファ430A~C内の各muxに対する制御信号として機能する。すなわち、特定のアドレスに対するベクトル(すなわち、シングルポートメモリ150内の各アドレスに記憶された4つのワード)は、読み取りバッファ430内のレジスタにバッファリングされ、次いで、要求側エンティティに対して4サイクルにわたって一度に1つのワードを提示される。
【0038】
サイクル当たり1ワードのメモリへの全帯域幅アクセスのために、アクセスは、整列させられ、連続アドレスを有するべきである。一実施形態では、アクセスは、最下位ビットとして00を有し、メモリアクセスパターンと同期して開始する第1のアドレスによって整列させられる。しかしながら、任意の整列されていない読み取りアクセスは、関連付けられたベクトルを読み取り、与えられたワード読み取りアドレスに関連付けられたベクトルからワードを出力するだけでサポートされ得る。アクセスがシングルポートメモリ150からの新たなベクトルを要求する場合、メモリシステム400は、要求されたベクトルがメモリから読み取られるまでストールしてもよい。現在の読み取り動作がストールされていることを示すために、信号を要求側エンティティに提供することができる。
【0039】
メモリ450から読み取られた特定のベクトルから1ワードのみが要求された場合、最大データレートは、4サイクル(又はより一般的には、Mポートメモリの場合はMサイクル)ごとに1ワードである。読み取りが連続しているが整列されていない場合、第1のベクトル読み取りと後続のベクトル読み取りとの間に小さなストールが存在する可能性があるが、第1の整列されていない読み取りの後、ストールにより読み取りアドレスはカウント410と整列され、読み取りは連続する。しかし、読み取りデータ出力におけるこの中断は、出力に小さなバッファを追加し、データバッファ出力の開始を遅延させ、事実上、中断を固定待ち時間遅延として出力シーケンスの開始に移動させることによって、後続のプロセスにおいて回避することができる。
【0040】
書き込み動作の間にワードイネーブルを用いることによって、任意の整列されていない書き込みをサポートすることもでき、ワードイネーブルは、ポートがメモリ450にコミットされる時点まで書き込みインターフェースを介して書き込まれたワードに対してのみアクティブである。実際、そのコミットメントの前に、データをワードバッファ(すなわち同じワードアドレス)に再書き込みすることができる。
【0041】
シングルポートメモリ450に記憶されたベクトルの誤り検査及び/又は訂正が必要とされる場合、ベクトル全体に関連付けられた検査ビットを更新する必要もあるので、ワード書き込みイネーブルだけでメモリを更新するだけでは十分でない場合がある。しかしながら、ポート書き込みがカウント410によってスケジュールされる時間までに、データベクトルが完了しない場合、そのポートによる書き込みアクセスをメモリ読み取りに変換することによって、誤り検査及び訂正を調整することができる。読み取りデータは、書き込みベクトルを拡張するために直接使用することができ、失われたワードを埋める。連続するストリームを書き込む場合、この不完全な書き込みは、書き込みプロセスが4ポートシーケンスの途中から開始された第1のベクトル上でのみ生じる。後続の書き込みが完全なベクトルの書き込みになるように入力を十分にストールして、読み取り修正書き込みを開始することができる。読み取り動作と同様に、メモリシステム400の入力におけるストールは、必要であれば、
図3において上述したようなストールを吸収するためのデータバッファを含むことによって回避することができる。
【0042】
図5は、一例による、シングルポートメモリを使用して実装された構成可能なマルチポートメモリシステム500の図である。概して、
図5は、
図4に示されるようなシングルポートメモリ450を使用して、読み取り及び書き込みの異なる変形形態を同時に実行するように構成可能なマルチポートシステム500を示す。
図5は、所望のマルチポートメモリを提供するために選択的に使用することのできる又は使用しないことのできる回路のブロックを示すために、
図4に対して抽象化されている。すなわち、システム500は、ユーザ又はアプリケーションがマルチポートシステム500を1R/3Wメモリ、2R/2Wメモリ、3R/1Wメモリとして機能するように構成できるように柔軟性を提供する、3つの書き込みレジスタ520A~C及び3つの読み取りバッファ530A~Cを含む。いくつかのFPGAアプリケーションが、ビットストリームによって初期化される(すなわち、書き込みポートが必要とされない)RAMからの読み取り専用メモリ(read only memory、ROM)を使用することも注目に値する。これらのアプリケーションでは、ROMを有するASICと同様に、本明細書に記載される技術を使用して、読み取りのみを実行するROM(例えば、4R)を共有することができる。
【0043】
メモリシステム500は、R/W信号510及びアドレス信号515を出力するコントローラ505を含む。
図4におけるのと同様、シングルポートメモリ450は、各アドレスに4つのデータワードを記憶する(すなわち、メモリ450は、マルチポートシステム500全体のアドレス空間の深さの4分の1であるアドレス空間を有する)。1R/3Wメモリとして構成されるときは、読み取りバッファ530のうちの1つのみが使用され、書き込みバッファ525のうちの3つ全てが使用される。他の2つの読み取りバッファ530は非アクティブになるため電源オフにすることができる。その場合、コントローラ505は、シングルポートメモリが4クロックサイクルごとに1つの読み取り動作及び3つの書き込み動作を実行することを保証する。読み取りサイクルの間に、4つのデータワードがシングルポートメモリ450から読み取られ、読み取りバッファ530のうちの1つに記憶されることになる。このようにして、3つの後続の書き込み動作の各々の間に、メモリ450、読み取りバッファ530は、バッファリングされたワードのうちの1つを出力する。
【0044】
データをメモリ450に書き込むために、各サイクルの間、外部エンティティは、3つのデータワードをマルチポートシステム500に提供する。シングルポートメモリ450が読み取り動作を実行するとき、そのクロックサイクルの間に受信された3つの書き込みワードは、書き込みバッファ525に(例えば、各バッファ525に1つのワードが)記憶(すなわち、バッファリング)される。シングルポートメモリ450が書き込み動作を実行する次の3サイクルの間に、3つの現在受信されているデータワード、並びに読み取り動作の間に書き込みバッファ525に記憶されたデータワードのうちの1つが、シングルポートメモリ450に書き込まれる。このようにして、3つの書き込みサイクルの各々の間に、4つのデータワードが同じアドレスに書き込まれる。
【0045】
2R/2Wメモリとして構成されるときは、読み取りバッファ530のうちの2つ及び書き込みバッファ525のうちの2つが使用される。他の読み取りバッファ及び書き込みバッファは未使用となるため電源オフにすることができる。その場合、コントローラ505は、シングルポートメモリ450が4クロックサイクルごとに2回の読み取り動作及び2回の書き込み動作を実行することを保証する。2つの読み取りサイクルの間に、4つのデータワードがシングルポートメモリ450から読み取られ、使用された2つの読み取りバッファ530のうちの1つに記憶されることになる。このようにして、2つの書き込み動作の各々の間に、メモリ450、2つの読み取りバッファ530は、バッファリングされたワードのうちの1つを出力する。
【0046】
2R/2Wメモリの場合、各サイクルの間に、外部エンティティが2つのデータワードをマルチポートシステム500に提供する。シングルポートメモリ450が読み取り動作を実行するとき、そのクロックサイクルの間に受信された2つの書き込みワードは、2つの書き込みバッファ525に(例えば、各バッファ525に1つのワードが)記憶される。シングルポートメモリ450が書き込み動作を実行する次の2サイクルの間に、2つの現在受信されているデータワード、並びに読み取り動作の間に2つの書き込みバッファ525に記憶されたデータワードのうちの2つが、シングルポートメモリ450に書き込まれる。このようにして、2つの書き込みサイクルの各々の間に、4つのデータワードが同じアドレスに書き込まれる。ただし、これは、メモリが常にワードを読み取り及び書き込みしていることを前提としている。一実施形態では、メモリは、特定のクロックサイクルで読み取り又は書き込みを逃す柔軟性を有することができ、その場合、メモリは、関連付けられたポートのメモリ書き込みスロットの前に入力されたワードに対する書き込みを実行する(ワードイネーブルを使用してそれらをメモリにゲートする)ことができる。読み取りの場合、メモリは、関連するスロットが発生したときにメモリから全てのワードを読み取るが、要求されたそれらのワードのみを出力する(すなわち、メモリシステムは、入力読み取りイネーブルを追跡するが、それに応じて遅延される、各ワード読み取りのためのデータ出力有効信号を生成する)。
【0047】
3R/1Wメモリとして構成されるときは、読み取りバッファ530のうちの3つ及び書き込みバッファ525のうちの1つのみが使用される。未使用の2つの書き込みバッファは電源オフにすることができる。この例では、マルチポートシステム500は、
図4のマルチポートシステム400と同じように動作することになる。
【0048】
このようにして、マルチポートシステム500は、シングルポートメモリ450を使用して様々な異なるマルチポート構成をサポートする回路を含む。ある時点において、ユーザ又はアプリケーションは、マルチポートシステム500を1R/3Wメモリとなるように構成することができるが、後の第2の時点において、システム500を3R/1Wメモリとなるように再構成することができる。更に、システム500は、1R/W及び3Rメモリをサポートすることができ、この場合、例えば、メモリは、1つのポートを使用してランダムな読み取り又は書き込みを実行することが可能なプロセッサインターフェースに接続され、連続する高帯域幅読み取りのために3つの読み取りポートを依然として保持する。
【0049】
図6A及び
図6Bは、一例による、異なるマルチポートメモリシステムを使用してPC-CFRを実行することを示す。具体的には、
図6Aは、複数のマルチポートメモリ605を使用してPC-CFRを実行することを示し、
図6Bは、シングルポートメモリ650を使用してPC-CFRを実行することを示す。
【0050】
図6Aに示されるシステム600は、上記の実施形態とは異なり、少なくとも1つの読み取り及び書き込みを並行して実行することができる4つのマルチポートメモリ605を含む。すなわち、マルチポートメモリ605は、独立した読み取りアドレスポート及び書き込みアドレスポートを有するので、マルチポートシステムがシングルポートメモリを使用して実装されることのできる上記の実施形態とは異なり、少なくとも1つの読み取り及び1つの書き込みを並行して実行することができる。しかしながら、
図6Bのシステム640は、スペースを節約しコストを低減することができるシングルポートメモリ660を使用してPC-CFRを実行することを示す。
【0051】
PC-CFRアプリケーションでは、信号のピーク対平均電力は、適切にスケーリングされた所定のパルスを信号から減算することによってピークを除去することによって低減される。これらの所定のパルスは、メモリ605に記憶され、乗算器610の出力を合計することによってピークをキャンセルするためにルックアップすることができる。システム600は、関連付けられたメモリ605を有する4つのパルスキャンセルユニットを含む。パルスデータ読み出しは、データをパルス長の半分だけ遅延させることによって、(図示されていないロジックによって)以前に検出されたピークと整列される。パルスはメモリ605から読み取られ、ピークスケール値を使用して乗算器610によってスケーリングされ、加算器620によって合計され、減算器625によって遅延されたデータから減算される。この場合、4つのパルスキャンセルユニットが存在するが、概して、複数の反復において適用される、より多くの又はより少ないパルスキャンセルユニットが存在してもよく、後者は、他の場所でのピークの再成長に起因して必要とされ得る。
【0052】
各メモリ605は、パルスが更新されることを可能にするためにデュアルポートであり、2つのバンクが、好適に都合のよい瞬間にバンクの切り替えを用いて、パルスキャンセル動作と並行して更新を可能にするように実装され得る。
【0053】
一方、
図6Bは、
図6Aのデュアルポートメモリ605をシングルポートのメモリ660に置き換えるために、先行する実施形態で説明した2ポート共有メモリを用いることが可能であることを示す。これにより、デュアルポートメモリをシングルポートメモリに置き換えることによって面積及び電力を低減する。
【0054】
また、パルスが
図6Aの各メモリ605において同じであることに留意することによって、同じメモリ内容を全てのパルスキャンセルユニット670に利用可能にするためにシングルポートメモリ660を再利用することも可能である。これにより、メモリビットの総量をQ分の1に低減し、ここで、Qは、共有Mポートメモリによってサービスされるパルスキャンセルユニット670の数である。これは、面積をQ分の1に低減に変換すると解釈できるが、これは、各ポートをバッファリングするための余分なロジック、及び低減された深さを有するメモリマクロのためのビット当たりの面積の増加によってわずかに程度が弱まり得る。
【0055】
具体的には、システム640は、別個のデュアルポートメモリ605を単一の共有8ポートメモリ660に置き換えることを示しており、その場合、2つのポートがAXl-lite読み取り及び書き込みを提供するために使用され、6つのポートがパルスキャンセルユニットによる読み取りアクセスのためのものである。更に、ポートのうちの2つは、別の反復(図示せず)に存在することができる。AXl-lite読み取り及び書き込みポートは、別のパルスキャンセルユニットが追加されることを可能にするために、単一の読み取り書き込みポートによって置き換えられ得ることに留意されたい。メモリアスペクト比は、8k×32ビットから1k×256ビットに変更されており、これは、1つ以上の物理メモリマクロ(例えば、2つの128ビット幅メモリ)を使用して実現することができる。
【0056】
非限定的な例として、3つの8ポート共有マルチポートメモリ650は、18個のデュアルポートメモリ605を置換することができ、これによりメモリマクロの面積において約7倍の低減をもたらすことができる。メモリは総面積の大部分を占めるので、メモリ605を使用する場合と相対して総面積を50%未満に低減することができる。
【0057】
本開示は、上記で概説した使用事例に限定されず、所与のポートのアクセスパターンが順次的又は一貫している任意のアプリケーションに適用することができる。この条件が満たされる場合、提供されたマルチポートの全ては、互いに独立しており、随意に読み取り又は書き込みに使用され得る。
【0058】
前述では、本開示において提示される実施形態が参照される。しかしながら、本開示の範囲は、特定の記載された実施形態に限定されない。代わりに、説明される特徴及び要素の任意の組み合わせは、異なる実施形態に関連するか否かにかかわらず、企図される実施形態を実装及び実践するために企図される。更に、本明細書に開示される実施形態は、他の可能な解決策又は従来技術に勝る利点を達成し得るが、特定の利点が所与の実施形態によって達成されるか否かは、本開示の範囲を限定するものではない。したがって、前述の態様、特徴、実施形態、及び利点は、単に例示的なものであり、特許請求の範囲に明示的に記載されている場合を除き、添付の特許請求の範囲の要素又は限定とは見なされない。
【0059】
当業者によって理解されるように、本明細書に開示される実施形態は、システム、方法、又はコンピュータプログラム製品として具現化され得る。したがって、態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、又は本明細書では全て一般に「回路」、「モジュール」、若しくは「システム」と呼ばれ得るソフトウェア態様とハードウェア態様とを組み合わせた実施形態の形態をとり得る。更に、態様は、コンピュータ可読プログラムコードが具現化された1つ以上のコンピュータ可読媒体において具現化されたコンピュータプログラム製品の形態をとり得る。
【0060】
1つ以上のコンピュータ可読媒体の任意の組み合わせを利用し得る。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線、若しくは半導体のシステム、装置、若しくはデバイス、又は前述の任意の好適な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、1つ以上のワイヤを有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(random access memory、RAM)、読み取り専用メモリ(read-only memory、ROM)、消去可能プログラマブル読み取り専用メモリ(erasable programmable read-only memory、EPROM又はフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリ(portable compact disc read-only memory、CD-ROM)、光記憶デバイス、磁気記憶デバイス、又は前述の任意の好適な組み合わせを含む。本明細書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、又はデバイスによって、又はそれに関連して使用するためのプログラムを含むか、又は記憶することができる任意の有形媒体である。
【0061】
コンピュータ可読信号媒体は、例えば、ベースバンドにおいて、又は搬送波の一部として、コンピュータ可読プログラムコードが具現化された伝搬データ信号を含み得る。そのような伝搬信号は、電磁気、光学、又はそれらの任意の好適な組み合わせを含むが、それらに限定されない、種々の形態のうちのいずれかをとり得る。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、又はデバイスによって、又はそれに関連して使用するためのプログラムを通信、伝搬、又は移送することができる任意のコンピュータ可読媒体であり得る。
【0062】
コンピュータ可読媒体上に具現化されたプログラムコードは、ワイヤレス、ワイヤライン、光ファイバケーブル、RFなど、又は前述の任意の好適な組み合わせを含むが、それらに限定されない、任意の適切な媒体を使用して伝送され得る。
【0063】
本開示の態様の動作を実行するためのコンピュータプログラムコードは、例えば、Java(登録商標)、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書き込まれ得る。プログラムコードは、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的に、リモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で完全に実行し得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(local area network、LAN)若しくは広域ネットワーク(wide area network、WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得るか、又は外部コンピュータ(例えば、インターネットサービスプロバイダを使用するインターネットを介して)に接続され得る。
【0064】
本開示の態様は、本開示に提示された実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフロー図説明及び/又はブロック図を参照して以下に記載されている。フロー図説明及び/又はブロック図の各ブロック、並びにフロー図説明及び/又はブロック図におけるブロックの組み合わせは、コンピュータプログラム命令によって実装することができることが理解されよう。これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フロー図及び/又はブロック図のブロックで指定された機能/行為を実装するための手段を作成するような機械をもたらすように、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能なデータ処理装置のプロセッサに提供され得る。
【0065】
これらのコンピュータプログラム命令はまた、コンピュータ可読記憶媒体に記憶された命令が、フロー図及び/又はブロック図のブロックで指定された機能/行為の態様を実装する命令を含む製造物品を生成するように、コンピュータ、プログラマブルデータ処理装置、及び/又は他のデバイスに、特定の方法で機能するように指示することができる、コンピュータ可読記憶媒体に記憶され得る。
【0066】
コンピュータプログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードされて、一連の動作ステップを、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行させて、コンピュータ実装プロセスを生成し得、そのため、コンピュータ、又は他のプログラマブル装置上で実行される命令は、フロー図及び/又はブロック図のブロックに指定される機能/行為を実装するためのプロセスを提供する。
【0067】
図中のフロー図及びブロック図は、本発明の様々な実施例によるシステム、方法、及びコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能、及び動作を例解する。これに関して、フロー図又はブロック図の各ブロックは、指定された論理機能を実装するための1つ以上の実行可能命令を含む、命令のモジュール、セグメント、又は部分を表し得る。いくつかの代替的な実装形態では、ブロックに記載されている機能は、図に記載された順序から外れて発生する場合がある。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行され得るか、又はブロックは、関与する機能に応じて、逆の順序で実行され得る。ブロック図及び/又はフロー図例解図の各ブロック、並びにブロック図及び/又はフロー図例解図におけるブロックの組み合わせは、指定された機能若しくは行為を実行するか、又は専用ハードウェアとコンピュータ命令との組み合わせを行う、専用ハードウェアベースのシステムによって実装することができることにも留意されたい。
【0068】
上記は特定の例を対象とするが、他の例及び更なる例が、その基本的な範囲から逸脱することなく考案され得、その範囲は、以下の「特許請求の範囲」によって決定される。
【国際調査報告】