特許第6626105号(P6626105)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ルネサス・エレクトロニクス・ヨーロッパ・ゲゼルシャフト・ミット・ベシュレンクテル・ハフツングの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6626105
(24)【登録日】2019年12月6日
(45)【発行日】2019年12月25日
(54)【発明の名称】メモリアクセスユニット
(51)【国際特許分類】
   G06F 13/16 20060101AFI20191216BHJP
   G06F 12/00 20060101ALI20191216BHJP
   G06F 12/06 20060101ALI20191216BHJP
【FI】
   G06F13/16 510G
   G06F12/00 550K
   G06F12/00 592
   G06F13/16 510C
   G06F12/06 515A
【請求項の数】15
【全頁数】26
(21)【出願番号】特願2017-524011(P2017-524011)
(86)(22)【出願日】2015年10月15日
(65)【公表番号】特表2017-539003(P2017-539003A)
(43)【公表日】2017年12月28日
(86)【国際出願番号】EP2015073870
(87)【国際公開番号】WO2016071091
(87)【国際公開日】20160512
【審査請求日】2018年10月2日
(31)【優先権主張番号】14191961.3
(32)【優先日】2014年11月5日
(33)【優先権主張国】EP
(73)【特許権者】
【識別番号】515280492
【氏名又は名称】ルネサス・エレクトロニクス・ヨーロッパ・ゲゼルシャフト・ミット・ベシュレンクテル・ハフツング
【氏名又は名称原語表記】RENESAS ELECTRONICS EUROPE GMBH
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】グリューネバルト,マティアス
【審査官】 津幡 貴生
(56)【参考文献】
【文献】 特開昭62−205452(JP,A)
【文献】 特開平01−154285(JP,A)
【文献】 米国特許出願公開第2011/0296078(US,A1)
【文献】 特開2006−302161(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/16
G06F 12/00
G06F 12/06
(57)【特許請求の範囲】
【請求項1】
m≧1であるm個のデータバス(27;77)のうちの1つと、k≧2であるk*m個のメモリ(221,…,22k;721,…,72k*m)との間のd次元アレイのサンプルの転送を取扱うためのメモリアクセスユニット(24;741,…,74m)であって、dは1よりも大きい正の整数であり、前記メモリアクセスユニットは、
k個のアドレス計算機(281,…,28k;791,…,79k)を備え、各アドレス計算機は、バスアドレス(A_B)を受信し、それぞれのオフセットを追加してサンプルバスアドレス(A_B’)を生成し、アドレス復号化方式に従って前記サンプルバスアドレスから、サンプルにアクセスするためのd個の前記次元の各々におけるそれぞれのアドレス(A_1,…,A_d)を生成するように構成され、前記メモリアクセスユニットはさらに、
k個のサンプルコレクタ(291,…,29k;801,…,80k)を備え、各サンプルコレクタは、バスデータワード内の予め定められた位置と前記k*m個のメモリのうちの1つとの間で前記サンプルを転送するために、前記k*m個のメモリのうちのそれぞれの前記1つについてメモリ選択(CS)を生成するように動作可能であり、
各サンプルコレクタ(291,…,29k;801,…,80k)は、各サンプルコレクタが前記k*m個のメモリのうちの異なる1つを選択することによって前記サンプルコレクタが前記k*m個のメモリのうちのk個に同時にアクセスすることができるように、d個の前記次元の各々における前記アドレス(A_1,…,A_d)に依存してそれぞれのメモリ選択(CS)を計算するように構成される、メモリアクセスユニット。
【請求項2】
d個の前記次元の各々におけるサンプルの数および/またはサンプル幅を変更可能に設定するためのレジスタ(311,312,…,31d;821,822,…,82d)のセットをさらに備える、請求項1に記載のメモリアクセスユニット。
【請求項3】
次元の数dは、2もしくは3に設定されるかまたは設定可能である、請求項1または2に記載のメモリアクセスユニット。
【請求項4】
各サンプルコレクタ(291,…,29k;801,…,80k)は、d個の前記次元の各々における前記アドレス(A_1,…,A_d)の合計に依存して前記メモリ選択を計算するように構成される、請求項1から請求項3のいずれか1項に記載のメモリアクセスユニット。
【請求項5】
各アドレス計算機(281,…,28k;791,…,79k)はインデックス(I_S)を生成するように構成される、請求項1から請求項4のいずれか1項に記載のメモリアクセスユニット。
【請求項6】
各アドレス計算機(281,…,28k;791,…,79k)は、各次元における直線的に増加するワードアドレス、サンプルサイズおよびサンプルの数に依存して前記それぞれのアドレスを計算するように構成される、請求項1から請求項5のいずれか1項に記載のメモリアクセスユニット。
【請求項7】
前記アドレス計算機(281,…,28k;791,…,79k)および前記サンプルコレクタ(291,…,29k;801,…,80k)に結合されたバスインターフェイス(30;81)をさらに備える、請求項1から請求項6のいずれか1項に記載のメモリアクセスユニット。
【請求項8】
ハードウェアロジックで実現される、請求項1から請求項7のいずれか1項に記載のメモリアクセスユニット。
【請求項9】
求項1から請求項8のいずれか1項に記載のメモリアクセスユニットを備える、メモリコントローラ。
【請求項10】
m個のデータバスとk*m個のメモリとの間のd次元アレイのサンプルの転送を取扱うためのm個のメモリアクセスユニットを備える、請求項9に記載のメモリコントローラ。
【請求項11】
請求項9または10に記載のメモリコントローラと、
*m個のメモリとを備え、k*m個のメモリの各セットは、前記m個のメモリアクセスユニットに動作可能に接続される、メモリシステム。
【請求項12】
請求項1から8のいずれか1項に記載のメモリアクセスユニット、または請求項9もしくは10に記載のメモリコントローラを備える、集積回路。
【請求項13】
マイクロコントローラである、請求項12に記載の集積回路。
【請求項14】
請求項1から8のいずれか1項に記載のメモリアクセスユニット、または請求項9もしくは10に記載のメモリコントローラを含むコンピューティングデバイスを備える、電動車両。
【請求項15】
m≧1であるm個のデータバス(27;77)のうちの1つと、k≧2であるk*m個のメモリ(221,…,22k;721,…,72k*m)との間でd次元アレイのサンプルを転送する方法であって、dは1よりも大きい正の整数であり、前記方法は、
k個のサンプルの各々について、
バスアドレス(A_B)を受信し、それぞれのオフセットを追加してサンプルバスアドレス(A_B’)を生成することと、
アドレス復号化方式に従ってサンプルバスアドレス(A_B’)から、前記次元のうちの1つに沿ってサンプルにアクセスするためのd個の前記次元の各々におけるそれぞれのアドレス(A_1,…,A_d)を生成することと、
バスデータワード内の予め定められた位置と前記k*m個のメモリのうちの1つとの間でサンプルを転送するために、前記k*m個のメモリのうちのそれぞれの前記1つについてメモリ選択(CS)を生成することとを備え、前記メモリ選択を生成することは、前記k個のサンプルが前記k*m個のメモリのうちのk個に同時に書込むかまたはk個から同時に読出すことができるように、前記アドレス(A_1,…,A_d)に依存してメモリ選択を計算することを含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
発明の分野
本発明は、メモリアクセスユニットに、および1つ以上のメモリアクセスユニットを含むメモリコントローラに関する。
【背景技術】
【0002】
背景
電動車両には、危険な状況を検出するためのさまざまな形態のセンサが装備されつつある。これらのセンサは、多次元の大量のデータを生成する。理想的には、サンプルがメモリに連続して記憶されて、ハードウェアアクセラレータがそれらを効率的に処理するのを可能にすべきである。しかし、1つより多くの次元でサンプルを処理することが必要である場合が多い。
【0003】
1つの解決策は、処理ステップ同士の間でサンプルを再順序付けすることである。しかし、これによって計算オーバーヘッドおよびメモリ要件が増大する。
【0004】
別の解決策は、データを直交次元で読出すことを可能にするメモリを使用することである。そのようなメモリの例はWO 2009/003115 A1に記載されている。
【発明の概要】
【課題を解決するための手段】
【0005】
概要
本発明は、固定サイズのデータワード(本明細書では「サンプル」と称する)の転送を取扱うためのメモリアクセスユニットを提供することに努める。
【0006】
本発明の第1の局面によると、m≧1であるm個のデータバスのうちの1つと、k≧2であるk*m個のメモリとの間のd次元アレイのサンプルの転送を取扱うためのメモリアクセスユニットが提供される。メモリアクセスユニットは、k個のアドレス計算機およびk個のサンプルコレクタを含む。各アドレス計算機は、バスアドレスを受信し、それぞれのオフセットを追加してサンプルについてのバスアドレスを生成し、アドレス指定方式に従ってサンプルのバスアドレスから、それぞれのサンプルにアクセスするためのd個の次元の各々におけるそれぞれのアドレスを生成するように構成される。各サンプルコレクタは、バスデータワード内の予め定められた位置とk*m個のメモリのうちの1つとの間でサンプルを転送するために、k*m個のメモリのうちの1つについてメモリ選択を生成するように動作可能である。各サンプルコレクタは、各サンプルコレクタがk個のメモリのうちの異なる1つを選択することによってサンプルコレクタがk*m個のメモリのうちのk個に同時にアクセスすることができるように、d個の次元の各々におけるアドレスに依存してそれぞれのメモリ選択を計算するように構成される。単一のバスについて、m=1かつk*m=kである。各サンプルコレクタは、k*m個のメモリのうちのそれぞれ1つにまたはそれぞれ1つからそれぞれのサンプルを転送するように動作可能であってもよい。
【0007】
ゆえに、次元の順にサンプルを再順序付けすることなく、いずれの次元に沿ってもサンプルにアクセス(読出または書込)可能である。
【0008】
サンプルデータ幅とサンプルストレージデータ幅は同一であってもよい。サンプルデータ幅は、サンプルストレージデータ幅の整数倍数(たとえば2倍)であってもよい。サンプルデータ幅は、たとえば、32ビットで構成される4バイト、もしくは64ビットで構成される8バイトであってもよく、またはこれらに設定可能であってもよい。ストレージデータ幅は、たとえば、32ビットで構成される4バイトであってもよい。しかし、他のストレージデータ幅を用いてもよい。データバス幅は、128ビットで構成される16バイト、または256ビットで構成される32バイトであってもよい。
【0009】
メモリアクセスユニットは、d個の次元の各々におけるサンプルの数および/またはサンプルデータ幅を変更可能に設定するためのレジスタのセットをさらに含んでいてもよい。
【0010】
次元の数dは、2もしくは3であってもよく、またはこれらに設定可能であってもよい。
【0011】
各サンプルコレクタは、d個の次元の各々におけるアドレスの合計に依存してメモリ選択を計算するように構成されてもよい。
【0012】
各サンプルコレクタは、以下を用いてメモリ選択CSを計算するように構成されてもよい:
【0013】
【数1】
【0014】
各アドレス計算機はインデックスを生成するように構成されてもよい。これは、サンプルデータ幅がサンプルストレージデータ幅より大きい場合に用いられ得る。
【0015】
各サンプルコレクタは、以下を用いてメモリ選択CSを計算するように構成されてもよい:
【0016】
【数2】
【0017】
ここでw_sはサンプルデータ幅であり、w_mはメモリデータ幅である。
各アドレス計算機は、各次元における直線的に増加するワードアドレス、サンプルデータ幅およびサンプルの数に依存してそれぞれのアドレスを計算するように構成されてもよい。
【0018】
各アドレス計算機は、バスアドレスを受信し、それぞれのオフセットに基づいてバスアドレスを調整するように構成されてもよい。ゆえに、アドレス計算機は、アドレスのそれぞれのセットを生成することができ、ゆえにさまざまなメモリ選択を生成することができる。
【0019】
メモリアクセスユニットは、アドレス計算機およびサンプルコレクタに結合されたバスインターフェイスをさらに含んでいてもよい。バスインターフェイスは、バスアドレスをアドレス計算機の各々に渡すように構成されてもよい。
【0020】
メモリアクセスユニットは好ましくはハードウェアロジックで実現される。
メモリアクセスユニットは、データバスとk*m個のメモリとの間のd次元アレイのサンプルの転送を取扱うのに好適であり得、k*m個のメモリはm個のデータバスによって共有される。
【0021】
本発明の第2の局面によると、少なくとも1つのメモリアクセスユニットを含むメモリコントローラが提供される。
【0022】
メモリコントローラは、少なくとも2つのメモリアクセスユニットを含んでいてもよい。少なくとも2つのメモリアクセスユニットは、レジスタの共通(または「グローバル」)セットにアクセスしてもよい。
【0023】
メモリコントローラは、m個のデータバスとk*m個のメモリとの間のd次元アレイのサンプルの転送を取扱うためのm個のメモリアクセスユニットを含んでいてもよい。
【0024】
本発明の第3の局面によると、メモリコントローラとk*m個のメモリとを含むメモリシステムが提供され、k*m個のメモリの各セットは、m個のメモリアクセスユニットに動作可能に接続される。
【0025】
1つのデータバスが存在してもよく、すなわちm=1であってもよい。1つより多くのデータバスが存在してもよく、すなわちm≧2であってもよい。2個から10個、またはそれ以上のデータバスが存在してもよく、すなわち10≧m≧2またはm>10であってもよい。
【0026】
本発明の第4の局面によると、メモリアクセスユニットまたはメモリコントローラを含む集積回路が提供される。
【0027】
集積回路はマイクロコントローラであってもよい。集積回路は特定用途向け集積回路(ASIC)であってもよい。集積回路はシステムオンチップ(SoC)であってもよい。集積回路はハードウェアアクセラレータであってもよい。集積回路はグラフィック処理ユニット(GPU)であってもよい。集積回路はデジタル信号プロセッサ(DSP)であってもよい。
【0028】
本発明の第5の局面によると、メモリアクセスユニットまたはメモリコントローラを含むコンピューティングデバイスを含む電動車両が提供される。
【0029】
電動車両は、オートバイ、自動車(「車」とも称する)、マイクロバス、バス、トラックまたはローリーであってもよい。電動車両は内燃機関および/または1つ以上の電気モータによって駆動されてもよい。
【0030】
本発明の第6の局面によると、m個のデータバスのうちの1つと、k*m個のメモリとの間でd次元アレイのサンプルを転送する方法が提供される。当該方法は、k個のサンプルの各々について、バスアドレスを受信し、それぞれのオフセットを追加してサンプルのバスアドレスを生成することと、アドレス指定方式に従ってサンプルバスアドレスから、次元のうちの1つに沿ってサンプルにアクセスするためのd個の次元の各々におけるそれぞれのアドレスを生成することと、バスデータワード内の予め定められた位置とk*m個のメモリのうちの1つとの間でサンプルを転送するために、k*m個のメモリのうちのそれぞれ1つについてメモリ選択を生成することとを含み、メモリ選択を生成することは、k個のサンプルがk*m個のメモリのうちのk個に同時に書込むかまたはk個から同時に読出すことができるように、d個の次元の各々におけるアドレスに依存してメモリ選択を計算することを含む。
【0031】
当該方法は、当該方法によって1つのユニット(またはモジュール)および他のユニットがk*m個のメモリに同時にアクセスできるように、当該1つのユニットによって実行可能である。
【0032】
当該方法は好ましくはハードウェアで実現される方法である。ユニット(またはモジュール)は論理ユニット(または「論理モジュール」)であってもよい。
【0033】
本発明の第7の局面によると、1つ以上のプロセッサによって実行されると、当該1つ以上のプロセッサに当該方法を実行させる命令を含むコンピュータプログラムが提供される。
【0034】
本発明の第8の局面によると、当該コンピュータプログラムを保持または記憶するコンピュータ読取可能媒体(非一時的であってもよい)が提供される。
【0035】
例として添付の図面を参照して、本発明の特定の実施形態を以下に説明する。
【図面の簡単な説明】
【0036】
図1】本発明を理解するのに有用なメモリを含むメモリシステムの概略ブロック図である。
図2図1に示されるメモリに記憶され得るサンプルの単純な二次元アレイを示す図である。
図3図2に示されるサンプルが直線的に増加するアドレスにどのように記憶されるかを示す図である。
図4】データバスの全幅を用いる第1の次元に沿ってサンプルがどのようにアクセスされ得るかを示す図である。
図5】データバスの全幅を用いない第2の次元に沿ってサンプルがどのようにアクセスされ得るかを示す図である。
図6】本発明に従うメモリおよびメモリアクセスユニットを含むメモリシステムの概略ブロック図である。
図6a】構成レジスタを示す図である。
図7図6に示されるメモリに記憶され得るサンプルの単純な二次元アレイを示す図である。
図8図6に示されるメモリアクセスユニットを用いて、データバスの全幅を用いる第1の次元に沿ってサンプルがどのようにアクセスされ得るかを示す図である。
図9図6に示されるメモリアクセスユニットを用いて、データバスの全幅を用いる第2の次元に沿ってサンプルがどのようにアクセスされ得るかを示す図である。
図10図6に示されるメモリアクセスユニットによって実行される方法の処理フロー図である。
図11】サンプルの三次元アレイを示す図である。
図12】レーダサンプル処理パイプラインの概略ブロック図である。
図13a】構成レジスタのためのパラメータの第1のセットと、サンプルデータ幅がメモリデータ幅と同一であるメモリシステムにおけるアドレスおよびチップ選択の第1のセットとを示す図である。
図13b】第1、第2、第3および第4のサンプルストレージの内容を示す図である。
図13c図13bに示される第1、第2、第3および第4のサンプルストレージにアクセスする際の第1、第2、第3および第4のサンプルコレクタの動作を示す図である。
図13d図13bに示される第1、第2、第3および第4のサンプルストレージにアクセスする際の第1、第2、第3および第4のサンプルコレクタの動作を示す図である。
図13e図13bに示される第1、第2、第3および第4のサンプルストレージにアクセスする際の第1、第2、第3および第4のサンプルコレクタの動作を示す図である。
図14a】構成レジスタのためのパラメータの第2のセットと、サンプルデータ幅がメモリデータ幅の2倍であるメモリシステムにおけるアドレスおよびチップ選択の第2のセットとを示す図である。
図14b】第1、第2、第3および第4のサンプルストレージの内容を示す図である。
図14c図14bに示される第1、第2、第3および第4のサンプルストレージにアクセスする際の第1、第2、第3および第4のサンプルコレクタの動作を示す図である。
図14d図14bに示される第1、第2、第3および第4のサンプルストレージにアクセスする際の第1、第2、第3および第4のサンプルコレクタの動作を示す図である。
図14e図14bに示される第1、第2、第3および第4のサンプルストレージにアクセスする際の第1、第2、第3および第4のサンプルコレクタの動作を示す図である。
図15】バスアドレスを示す図である。
図16】サンプル幅がメモリデータ幅と同一である場合の範囲アドレスマップについての次元アドレスを示す図である。
図17】サンプルデータ幅がメモリデータ幅の2倍である場合の範囲アドレスマップについての次元アドレスを示す図である。
図18】サンプルデータ幅がメモリデータ幅と同一である場合のパルスアドレスマップについての次元アドレスを示す図である。
図19】サンプルデータ幅がメモリデータ幅の2倍である場合のパルスアドレスマップについての次元アドレスを示す図である。
図20】サンプルデータ幅がメモリデータ幅と同一である場合のチャネルアドレスマップについての次元アドレスを示す図である。
図21】サンプルデータ幅がメモリデータ幅の2倍である場合のチャネルアドレスマップについての次元アドレスを示す図である。
図22】本発明に従うメモリとメモリアクセスユニットのアレイとを含むメモリシステムの概略ブロック図である。
図22a】構成レジスタを示す図である。
図23】アドレス計算機の概略ブロック図である。
図24】サンプルコレクタの概略ブロック図である。
図25】サンプルストレージモジュールの概略ブロック図である。
図26】バスインターフェイスの概略ブロック図である。
図27】バスタイミング図である。
図28】メモリシステムを含む電動車両を示す図である。
【発明を実施するための形態】
【0037】
特定の実施形態の詳細な説明
以下の説明では、特に規定のない限り、すべての定数、変数およびレジスタは整数型である。
【0038】
メモリシステム1
図1は、本発明を理解するのに有用なメモリシステム1の概略ブロック図である。
【0039】
図1を参照して、メモリシステム1は、n個のランダムアクセスメモリ(RAM)モジュール21,…,2n(ここでnは1より大きい整数である)のアレイの形態のメモリ2を含む。メモリモジュール21,…,2nはメモリマクロの形態を取っていてもよい。メモリシステム1はさらに、メモリ2と、アドレスバス6およびデータバス7で構成されるバス5とを相互に接続する、バス配線3およびメモリアクセス回路4を含む。
【0040】
メモリアクセス回路4は、アドレス計算機8(「アドレスデコーダ」とも称され得る)と、データマルチプレクサ9と、バスインターフェイス10とを含む。
【0041】
各メモリモジュール21,…,2nはメモリデータ幅w_mを有する。この例では、メモリデータ幅w_mは128ビットである。この例では、データバス7は128ビット幅である。
【0042】
アドレス計算機8は、チップ選択信号CSを用いてn個のRAMモジュール21,…,2nから1つのRAMモジュール21,…,2nを選択し、チップ選択およびメモリアドレスバス11を介してメモリアドレスA_Mを用いてアクセスすべきメモリ2の部分を指定する。アドレス計算機8は、バスインターフェイス10を介してアドレスバス6上で受信したバスアドレスA_Bを用いて、チップ選択CSおよびメモリアドレスA_Mを計算する。
【0043】
書込み転送では、バスデータD_Bがメモリデータバス121,…,12k上に配置される。当該データは、それぞれのアドレスA_Mにおいてチップ選択CSを用いて選択されるとRAMモジュール21,…,2nのうちの1つに記憶される。バスインターフェイスは、バスデータD_Bの一部のみを記憶することを要求することができる。
【0044】
読出し転送では、選択されたRAMモジュール21,…,2nがメモリデータD_Mをバスインターフェイス10に転送することができる。バスインターフェイス10は、メモリデータD_Mの一部のみを転送することを要求することができる。
【0045】
さらに図2から図5を参照して、データは固定サイズの単位13(本明細書では「ワード」または「サンプル」と称する)で転送される。各メモリ21,…,2nは、サンプルサイズの整数倍数である幅w_mを有する。この場合、幅w_mは128ビットであり、各サンプル13は4バイト長であり32ビットを含む。ゆえに、全バス幅を用いる場合は、サンプル13をメモリにわたって隣接位置に記憶する(または書込む)べきである。
【0046】
図2は、x次元およびy次元を有する二次元アレイに配列された4×4個のサンプル13を含む単純な二次元ピクチャ(または「画像」)14を概略的に示す。
【0047】
図3は、ピクチャ14(図2)が、メモリ2に、すなわち、それぞれ0および1に等しいチップ選択CSを用いてアドレス指定可能な第1および第2のメモリモジュール21,22図2)内の直線的に増加するアドレスA_Mに、どのように記憶され得るかを示す。
【0048】
ピクチャ14(図2)はいずれかの次元において、すなわちx次元に沿ってまたはy次元に沿って処理され得る。この例では、サンプル13は、サイクル毎に最大で4個のサンプル13を搬送可能なデータバス7(図1)上で転送され得る。
【0049】
図4および図5は、それぞれx次元およびy次元に沿ってサンプル13にアクセスすることによってデータが転送される際のバス転送パフォーマンスを示す。
【0050】
図4に示されるように、x次元に沿ってピクチャ14にアクセスすることによってサンプル13が読出される場合は、データバス7の全幅を利用することができる。しかし、図5に示されるように、y次元に沿ってピクチャ14にアクセスすることによってサンプル13が読出される場合は、一度に、すなわちサイクル毎に、1つのサンプル13しか転送できない。
【0051】
ゆえに、サンプル13がy次元に沿って読出される場合、パフォーマンスは4倍劣化する。
【0052】
データ転送がバーストで起こる場合はパフォーマンスがさらに劣化し得る。バスシステムは長い待ち時間を有し得る。アクセス要求がなされた場合は、データを転送する前にいくつかのサイクルを待機することが必要であり得る。したがって、現代のバスシステムは、要求毎に複数のデータワードを連続して(「バースト」と称する)転送する。しかし、バーストでは、データワード毎のアドレスがジャンプせずに直線的に増加することが必要である。したがって、それらを用いてサンプルをy方向に転送することができず、パフォーマンスがさらに低下する。
【0053】
1つより多くのサンプルがバスワード内で転送される場合は、サンプル順序が記憶順序と一致していない限り、バスの全幅を用いることはできない。しかし、たとえば、画像処理およびレーダアプリケーション、ならびに多次元高速フーリエ変換(FET)処理における場合など、多次元データアクセスまたは転置を伴う他のアプリケーションでは、1つより多くの次元に沿ってサンプルを読出すことが必要である場合が多い。レーダなどのいくつかのアプリケーションは、自動車用アプリケーションである。本発明に従うと、メモリアクセスユニットおよびメモリアクセス方法によって、サンプルの再順序付けを必要とせずに、および/またはバス利用の向上を手助けすることができ、さまざまな次元に沿ってサンプルを読出すことができる。
【0054】
メモリシステム21
図6は、本発明に従う再構成可能な多次元アクセス可能なメモリシステム21の概略ブロック図である。
【0055】
図6を参照して、メモリシステム21は、k個のサンプルストレージモジュール221,…,22k(ここでkは1より大きい整数である)のアレイの形態のメモリ22を含む。各サンプルストレージモジュール221,…,22kは、RAMマクロまたは他のRAMモジュールの形態を取る。メモリシステム21は、メモリ22と、アドレスバス26およびデータバス27で構成されるバス25とを相互に接続する、バス配線23およびメモリアクセスユニット24を含む。
【0056】
メモリアクセスユニット24は、k個のアドレス計算機モジュール281,…,28kのアレイと、k個のサンプルコネクタモジュール291,…,29kのアレイと、共通バスインターフェイス30と、構成レジスタ31のセットとを含む。
【0057】
各メモリモジュール221,…,22nはメモリデータ幅w_mを有する。メモリデータ幅w_mと最小サンプル幅は同一である。この例では、データバス27は128ビット幅である。しかし、データバス27は、たとえば256ビット幅であるなど、より狭くても広くてもよい。
【0058】
さらに図6aを参照して、構成レジスタ31は、各次元iに記憶され得るサンプルの数S_iを指定するレジスタ311,312,…,31d(ここでdは1より大きい正の整数である)のセットを含み、ここでi={1,2,…,d}であり、構成レジスタ31はさらに、サンプルデータ幅w_sを指定するレジスタ31Sを含む。メモリデータ幅w_mは、サンプルデータ幅w_sと等しいか、またはその整数倍数である。構成レジスタ31は、メモリシステム21が用いられる前にユーザによって設定される。
【0059】
再び図6を参照して、アドレス計算機モジュール281,…,28kはバスアドレスA_Bを受信し、バスデータワード内のサンプルの位置Nrに対応するそれぞれのオフセットを追加してそれぞれのサンプルについてのバスアドレスA_B’を得て、アドレス復号化方式に従ってサンプルバスアドレスA_B’をサンプルアドレスA_1,…,A_dのセットおよびサンプルインデックスI_Sに変換する。サンプルについてのバスアドレスA_B’は以下を用いて計算される:
【0060】
【数3】
【0061】
ここでNr=1,2,…,kであり、メモリデータ幅はw_mである。
レーダ信号処理における三次元アクセスのためのアドレス復号化方式の例を以下に説明する。しかし、任意の好適なアドレス復号化方式を用いてもよい。次元アドレスA_Lはアクセス次元に沿った線形アドレスである。
【0062】
図7は、x次元およびy次元を有する二次元アレイに配列された4×4個のサンプル34を含む単純な二次元ピクチャ(または「画像」)33を概略的に示す。
【0063】
図7および図8を参照して、i番目のサンプルコレクタ29i(ここでi={1,2,…,k}である)は、バスデータワード内の固定ビット位置[w_m**i−1:w_m**(i−1)]でサンプル34を収集する役割を果たす。
【0064】
サンプルコレクタ291,…,29kは、要求されたサンプル33が記憶されるまたは記憶されるべきサンプルストレージ221,…,22kを特定し、特定したサンプルストレージ221,…,22kを選択信号CSを用いて選択し、アドレスA_Mにおけるサンプル34の転送(読出または書込)を要求し、バスデータワードD_B内の割当てられた位置でサンプル34を充填するかまたは取出す。
【0065】
バスデータワードD_B内のサンプル34毎に専用のサンプルコレクタ291,…,29kが存在する。以下により詳細に説明するように、サンプルコレクタ291,…,29kは、チップ選択配列を用いて並列にメモリアクセスを実行するので、サンプルストレージ221,…,22kにおけるアクセス競合が確実になくなる。ゆえに、待機状態を発生させることなく全バスデータ幅を利用することができる。
【0066】
図8および図9は、それぞれx次元およびy次元に沿ってサンプル34にアクセスすることによってデータが転送される際のバス転送パフォーマンスを示す。
【0067】
図8に示されるように、x次元に沿ってピクチャ33にアクセスすることによってサンプル34が読出される場合は、データバス27の全幅(この場合は128ビット)を利用することができる。
【0068】
そして、図9に示されるように、y次元に沿ってピクチャ33にアクセスすることによってサンプル34が読出される場合は、データバス27の全幅を使用することができる。
【0069】
x次元およびy次元に沿ったアクセスは、全バス幅を、この場合はバスデータワード毎に4つのサンプルを利用することができる。さらに、A_Lはジャンプなしで直線的に増加するため、バーストが可能である。これによってパフォーマンスがさらに向上し得る。たとえば、バス25が10個のパイプラインステージを有する高度拡張インターフェイス(Advanced eXtensible Interface:AXI)バスである場合、単一アクセスに10サイクル/ワードが必要である。16ビートのバーストでは、最初のワードに10サイクル、残りのワードに15サイクルが必要である。平均して、1ワードに25/16=1.6サイクル/ワードが必要である。これは、さらに6倍の高速化である。
【0070】
ゆえに、サンプルがメモリアドレスに沿って順序付けされている図1に示されるメモリシステム1と比較して、メモリシステム21は24倍速い速度でy次元に沿ってデータを転送することができる。
【0071】
再び図6および図10を参照して、アクセス要求を受信する(ステップS1)と、アドレス計算機モジュール281,…,28kはバスアドレスA_Bを多次元データアレイの表現に変換する(ステップS2)。
【0072】
各サンプル34は、その次元アドレスA_1,A_2,…,A_dおよびサンプルインデックスI_Sによってアレイ内でアドレス指定される。サンプル幅w_sがサンプルストレージ幅w_mより大きい場合は、サンプルインデックスI_Sが用いられる。
【0073】
バスデータワードD_Bは1つより多くのサンプルを含むため、バスアクセスフィールドはどの次元に沿ってアクセスが要求されているかを示す。符号化アクセス方向、線形アドレスA_Lおよびインデックスを特定するいくつかのバスアドレス計算方式が可能である。
【0074】
各サンプルコレクタ291,…,29kは、以下の式2から5を用いて算出を行う(ステップS3からS6):
−以下を用いてサンプルアドレスA_Sを算出:
【0075】
【数4】
【0076】
−以下を用いて物理ワードアドレスA_Pを算出:
【0077】
【数5】
【0078】
−以下を用いて選択メモリCSを算出:
【0079】
【数6】
【0080】
−以下を用いてメモリ内アドレスA_Mを算出:
【0081】
【数7】
【0082】
ここで、+は加算、−は除算、/は整数除算(端数は切捨て)、%は整数除算の剰余(すなわちモジュロ)、*は整数乗算である。
【0083】
各サンプルコレクタ291,…,29kはそれぞれのサンプルストレージ221,…,22kにアクセスする(ステップS7)。バスインターフェイスは転送要求に応える(ステップS8)。
【0084】
選択メモリCSは各次元における隣接サンプルによって異なる。アクセスが次元j(j={1,…,k})に沿って起こる場合は、サンプルアドレスA_jのみが式4において変化する。他のサンプルアドレスA_i(i={1,…,k},i<>j)は一定のままである。しかし、変化する項について、項はアクセスされる次元における隣接アドレスによって異なる。ゆえに、サンプルストレージへの並列アクセスが可能である。
【0085】
しかし、この配列に例外が存在し、すなわち、トランザクションがアクセス次元境界をまたぐ場合がある。その場合、選択メモリCS内で1つより多くの項が変化する。選択されたサイズに依存して、待機状態が必要となり得る。各次元サイズS_1,S_2,…,S_dがw_m*k/w_sの倍数である場合は、待機状態は起こらない。複数のバスインターフェイスを有し、かつ待機状態を用いるメモリアクセスシステムを以下に説明する。
【0086】
レーダアプリケーションにおけるメモリシステム21のアプリケーション
図11を参照して、レーダアプリケーションでは、アンテナベクトル(図示せず)からの複数の時間応答がメモリに記憶されて、サンプル36の三次元アレイ35(本明細書では「データキューブ」または単に「キューブ」とも称する)が得られる。アレイ35は、たとえば、範囲次元に沿って512個のサンプル、ドップラー次元に沿って64個のサンプル、およびチャネル次元に沿って8個のサンプルを有し得る。
【0087】
レーダおよび他のアプリケーションでは、次元の変更にはメモリにおけるサンプルの再順序付け(「コーナーターン」の実行と称する)が必要である。コーナーターンには大量の処理時間が費やされ得る。
【0088】
図12を参照して、サンプル36がデータキューブ35(図11)としてメモリ22に記憶されるパイプラインを用いて、レーダパルス処理システム41が実現され得る。サンプル36はパルス圧縮ブロック50内に供給され、その出力がメモリ22に記憶される。次いで、サンプル36が読出されてドップラーフィルタリングブロック51内に供給され、その出力がメモリ22に記憶される。サンプルは読出され、前のデータキューブからの重みとともに、ビームフォームブロック53と、次のキューブのために保存される重みを生成する適応重み算出ブロック54とを含む空間−時間適応処理部52内に供給されて記憶される。変換されたサンプル36は読出され、一定誤警報確率(constant false alarm rate:CFAR)検出ブロック55に供給され、当該ブロック55は検出報告56を出力する。
【0089】
多次元メモリシステム21を用いて、所与の次元についてのバス応答においてサンプル35の正しい連結を記憶し、次いで読出すことができる。したがって、データ再編成を回避することができる。
【0090】
アドレス計算およびサンプルストレージ選択を示す単純な例
図13aを参照して、単純な例についての構成レジスタのためのパラメータのセット61ならびにアドレスおよびチップ選択のグローバル割当て62が示されており、サンプルデータ幅w_sはメモリデータ幅w_mと同一である。
【0091】
バスワード毎の最大サンプル数kは4であり、次元の総数dは3であり、メモリデータ幅w_mは4バイトであり、サンプルデータ幅w_sは4バイトである。それぞれS_1,S_2,S_3である第1、第2および第3の次元には4個、5個および2個のサンプルが存在する。
【0092】
図13aに示されるように、次元アドレスA_1,A_2,A_3、サンプルアドレスA_S、サンプルインデックスI_S、物理ワードアドレスA_P、サンプルストレージ選択CS、およびメモリ内アドレスA_Mの値が表にされている。
【0093】
図13bを参照して、第1、第2、第3および第4のサンプルストレージ221,222,223,224の内容が示されている。アレイ35内のサンプルアドレスは丸括弧内に示されており、サンプルインデックスは角括弧内に示されている。
【0094】
図13c、図13dおよび図13eは、3つの次元の各々に沿ってサンプルストレージ221,222,223,224にアクセスする際のサンプルコレクタ291,292,293,294の動作を示す。図13c、図13dおよび図13eは、サンプルコレクタ291,292,293,294毎の線形アクセスアドレスA_L、次元アドレスA_1,A_2,A_3、サンプルインデックスI_S、物理アドレスA_P、サンプルストレージ選択CSおよびメモリアドレスA_Mのアクセスを示す。
【0095】
図13cは、第1の次元に沿ったサンプルストレージ221,222,223,224へのアクセス、すなわち範囲サンプルを示す。この場合、一度に1つの次元アドレスしか変更されないため、待機状態は不要である。
【0096】
図13dは、第2の次元に沿ったサンプルストレージ221,222,223,224へのアクセス、すなわちパルスサンプルを示す。この場合、一度に1つより多くの次元アドレスが変更されたとしても、CS競合がないため、待機状態は不要である。
【0097】
図13eは、第3の次元に沿ったサンプルストレージ221,222,223,224へのアクセス、すなわちチャネルサンプルを示す。この場合、待機状態が必要である。
【0098】
図14aを参照して、単純な例についての構成レジスタのためのパラメータのセット61ならびにアドレスおよびチップ選択のグローバル割当て62が示されており、サンプルデータ幅w_sはメモリデータ幅w_mの2倍である。
【0099】
図14bは第1、第2、第3および第4のサンプルストレージ221,222,223,224の内容を示し、図14c、図14dおよび図14eは、3つの次元の各々に沿ってサンプルストレージ221,222,223,224にアクセスする際のサンプルコレクタ291,292,293,294の動作を示す。
【0100】
レーダデバイスのためのバスアドレス復号化方式
再び図6を参照して、アドレス計算機291,…28kはアドレス復号化方式を使用して、バスアドレスA_Bから次元アドレスA_1,…,A_dを生成する。
【0101】
次に、図15を参照してアドレス復号化方式を説明する。
図15は、ベースフィールド64、次元アクセスモード(DIM)フィールド65および線形アドレスA_L66を含むバスアドレスA_B’63(すなわち所与のサンプルについての位置調整後のバスアドレスA_B)を示す。固定パラメータとして、メモリデータ幅w_mは4バイトであり、次元の数は3である。
【0102】
範囲アドレス指定モード
範囲アドレス指定モードは、DIMを0に、すなわち2b00に設定することによって選択され得る。第1、第2および第3の次元アドレスA_1,A_2およびA3は以下のように計算される:
【0103】
【数8】
【0104】
また、サンプル幅をメモリ幅と同一であるように、すなわちw_s=w_mであるように設定し、次元サイズS_1,…,S_dを最大物理メモリサイズであるように設定することによって、範囲アドレス指定モードを用いて従来の方法でメモリにアクセスすることができる。
【0105】
パルスアドレス指定モード
パルスアドレス指定モードは、DIMを1に、すなわち2b01に設定することによって選択され得る。第1、第2および第3の次元アドレスA_1,A_2およびA3は以下のように計算される:
【0106】
【数9】
【0107】
チャネルアドレス指定モード
チャネルアドレス指定モードは、DIMを2に、すなわち2b10に設定することによって選択され得る。第1、第2および第3の次元アドレスA_1,A_2およびA3は以下のように計算される:
【0108】
【数10】
【0109】
サンプルインデックス
サンプルインデックスI_Sは以下を用いて計算される:
【0110】
【数11】
【0111】
図16から図21は、式2,3,6−R−1,6−R−2,6−R−3,6−P−1,6−P−2,6−P−3,6−C−1,6−C−2,6−C−3および7を用いて計算される次元アドレスA_1,A_2およびA_3ならびに物理アドレスA_Pの例を示す。
【0112】
図16および図17を参照して、S_1=4,S_2=2,S_3=3である場合に式6−R−1,6−R−2,6−R−3を用いて計算される範囲アドレスマップについての次元アドレスA_1,A_2およびA_3が示されている。
【0113】
図18および図19を参照して、S_1=4,S_2=2,S_3=3である場合に式6−P−1,6−P−2,6−P−3を用いて計算されるパルスアドレスマップについての次元アドレスA_1,A_2およびA_3の値が示されている。
【0114】
図20および図21を参照して、S_1=4,S_2=2,S_3=3である場合に式6−C−1,6−C−2,6−C−3を用いて計算されるチャネルアドレスマップについての次元アドレスA_1,A_2およびA_3の値が示されている。
【0115】
メモリシステム71
図6を参照して、メモリシステム21は1つのバスのみを有するインターフェイスを含む。しかし、メモリは、サンプルストレージからサンプルコレクタにレディ(RDY)フィードバックを提供することによって、m個のバス(ここでmは1より大きい正の整数である)によってアクセス可能である。たとえば、サンプルを処理するために複数のデジタル信号プロセッサ(DSP)を必要とするのに十分なサンプルがメモリ内に存在し得る。メモリは複数の部分に分割されてもよく、各DSPがメモリのそれぞれの部分を処理する。各DSPはそれぞれのバスを用いてメモリにアクセスする。これによってDSPはデータを並列に処理することができる。たとえば、8個のDSPを用いることができ、これによって8個のバス(すなわちm=8)が必要となる。各バスにはバスマスタ(図示せず)が設けられている。
【0116】
また、RDYフィードバックを用いて、CS選択における競合に対処することもできる。1つより多くのサンプルコレクタが同一のサンプルストレージにアクセスする場合は、競合はアービタによって解決することができる。
【0117】
m個のバスインターフェイスをサポートするために、同数のメモリセグメントが存在する。最良の場合、m個のマスタが競合なしで各セグメントにアクセス可能である。
【0118】
図22を参照して、メモリシステム71は、(k*m)個のサンプルストレージモジュール721,…,72k*m(ここでkは2より大きい整数である)のアレイの形態のメモリ72を含む。メモリシステム71は、メモリ72と、各々がアドレスバス76、データバス77およびRDY信号78で構成されるm個のバス751,…,75mとを相互に接続する、バス配線73およびm個のメモリアクセスユニット741,…,74mを含む。
【0119】
各メモリアクセスユニット741,…,74mは、k個のアドレス計算機モジュール791,…,79kのアレイと、k個のサンプルコレクタモジュール801,…,80kのアレイと、共通バスインターフェイス81とを含む。メモリシステム71には構成レジスタ82のセットが設けられている。
【0120】
各メモリモジュール721,…,72nはメモリデータ幅w_mを有する。この例では、メモリデータ幅w_mは32ビットであり、各データバス77は128ビット幅である。
【0121】
さらに図22aを参照して、構成レジスタ82は、サンプルの数S_iを指定するレジスタ821,822,…81d(ここでdは1より大きい正の整数である)のセットを含み、ここでi={1,2,…,d}であり、構成レジスタ82はさらに、サンプルデータ幅w_sを指定するレジスタ82Sを含む。サンプルデータ幅w_sは、メモリデータ幅w_mと等しいか、またはその整数倍数である。構成レジスタ82は、メモリシステム71が用いられる前にユーザによって設定される。
【0122】
図23を参照して、アドレス計算機281,…28k,791,…,79kがより詳細に示されている。
【0123】
アドレス計算機281,…28k,791,…,79kは、加算器ユニット28a,79aおよびアドレス計算機演算論理ユニット28b,79bを含む。
【0124】
加算器ユニット28a,79aは、上記の式(1)を用いて、バスアドレスA_Bを調整してバスデータワード内のサンプルの位置Nr=1,2,…,kと一致させる。
【0125】
アドレス計算機演算論理ユニット28b,79bは、サンプルバスアドレスA_B’を次元アドレスA_1,…,A_dおよびサンプルインデックスI_Sに変換する。異なるアドレス復号化方式も可能である。
【0126】
図24を参照して、サンプルコレクタ291,…,29k,801,…,80kがより詳細に示されている。
【0127】
サンプルコレクタ291,…,29k,801,…,80kは、サンプル計算機演算論理ユニット80aおよびマルチプレクサ80bを含む。
【0128】
m個のバスインターフェイスからの競合なしで並列アクセスをサポートするために、サンプルストレージ選択信号CSはメモリをm個のセグメントに分割し、ここでmは1より大きい正の整数である。各セグメントはS_M個のワードを含む。
【0129】
セグメント内で、サンプルコレクタ801,…,80kは以下を用いてサンプルストレージ選択信号CS(MULTIPLE BUS)(以下単にCSとも称する)を計算する:
【0130】
【数12】
【0131】
ここで、CS(SINGLE)は上記の式4を用いて計算され得る。
サンプルコレクタ801,…,80kは、以下の式4’を用いてメモリ内アドレスA_Mを計算する:
【0132】
【数13】
【0133】
D_Bは、転送方向(読出/書込)に依存して双方向性である。
RDYは、複数のマスタがある場合におよび/または複数のサンプルコレクタが同一のRAMモジュールにアクセスする場合にバスが待機する必要があることを示す。
【0134】
図25を参照して、サンプルストレージモジュール221,…,22k*m,721,…,72k*mがより詳細に示されている。
【0135】
サンプルストレージモジュール221,…,22k*m,721,…,72k*mは、RAMマクロ22a,72aと、マルチプレクサ22b,72bと、アービタ22c,72cと、比較器22d(1),…,22d(k*m),72d(1),…,72d(k*m)とを含む。
【0136】
各サンプルストレージ721,…,72k*mは、その数Nrと一致するCS要求にのみ反応し、ここでNr={1,…,k*m}である。アービタ72cは、たとえばラウンドロビンなどの好適なポリシーによってすべてのアクティブなCS要求から1つの要求を選択する。すべての他のサンプルコレクタ801,…,80kはRDY信号を用いて一時停止される。
【0137】
RAM72aは、方向(読出または書込)に依存してデータワード転送を取扱う。
図26を参照して、バスインターフェイス81がより詳細に示されている。
【0138】
バスインターフェイス81は、連結ブロック81aおよびk入力ANDゲート81bを含む。
【0139】
各サンプルコレクタ801,…,80kはバスワード内の固定サンプル位置を取扱う。バスインターフェイス81は、各サンプルコレクタ801,…,80kからのデータD_Mをバスデータとして出力するために連結する。すなわち、
【0140】
【数14】
【0141】
である。
k入力ANDゲート81bは、サンプルコレクタ801,…,80kからRDY(1),…,RDY(k)を受信してRDY信号を出力する。
【0142】
図27を参照して、アドレス計算がタイミングクリティカルである場合、当該計算はバースト特性が維持されるという条件でパイプライン化され得る。
【0143】
図27は、バーストの開始時に1サイクルだけAHBバスを停止してC_SおよびA_Mを算出することを示す。
【0144】
図28を参照して、電動車両91が示されている。
電動車両91は、センサ(図示せず)および1つ以上のメモリシステム21,71を含む先進運転支援システム(advanced driver assistance system:ADAS)92を含む。
【0145】
上に記載された実施形態に対して多くの変更がなされ得ることが認識されるであろう。
図1
図2
図3
図4
図5
図6
図6a
図7
図8
図9
図10
図11
図12
図13a
図13b
図13c
図13d
図13e
図14a
図14b
図14c
図14d
図14e
図15
図16
図17
図18
図19
図20
図21
図22
図22a
図23
図24
図25
図26
図27
図28