(57)【要約】減少されたバストラフィックを有するメモリブロック初期化および複写機能を実行するためのメモリコントローラおよび方法が開示される。メモリコントローラはメモリのスタートアドレス、メモリのエンドアドレスおよび充填値を受信することによってメモリ初期化を実行することができる。充填値はその後メモリコントローラからスタートアドレスおよびエンドアドレスによって定義された任意長の充填領域内のメモリに書き込まれる。
2010541103.tif 000002
【特許請求の範囲】
【請求項１】
下記を具備するメモリコントローラ：
メモリのスタートアドレスを受信するように構成されたロジック；
該メモリのエンドアドレスまたは長さを受信するように構成されたロジック；
充填値を受信するように構成されたロジック；および
該充填値を該スタートアドレスおよびエンドアドレスまたは長さによって定義された任意長の充填領域内の該メモリに書き込むように構成されたロジック。
【請求項２】
さらに下記を具備する、請求項１記載のメモリコントローラ：
複写するために該メモリの第１の読出しアドレスを受信するように構成されたロジック；
該第１の読出しアドレスで始まる該メモリの読出し領域を読み出すように構成されたロジック、ここにおいて該読出し領域の長さは該充填領域の長さに対応する；および
該充填値を有する該充填領域の対応するアドレスを書き込むより前に該読出し領域の各アドレスから読み出された値に基づいて該充填値を更新するように構成されたロジック。
【請求項３】
ここにおいて該メモリコントローラは標準バス上で該メモリコントローラと通信する１つまたはそれ以上のマスタ装置からの読出し／書込み命令を処理するように構成される、請求項１記載のメモリコントローラ。
【請求項４】
ここにおいて該スタートアドレス、エンドアドレスまたは長さ、あるいは充填値の少なくとも１つは代替のバス上で該メモリコントローラに通信される、請求項３記載のメモリコントローラ。
【請求項５】
ここにおいて該代替のバスは構成バスである、請求項４記載のメモリコントローラ。
【請求項６】
さらに下記を具備する、請求項１記載のメモリコントローラ：
転送キュー；
充填レジスタ；および
書込みバッファ。
【請求項７】
ここにおいて該充填値を該充填領域内の該メモリに書き込むための書込みコマンドは該充填レジスタおよび該転送キューを介して該メモリに書き込まれる、請求項６記載のメモリコントローラ。
【請求項８】
ここにおいて該書込みバッファは該メモリコントローラに連結された１つまたはそれ以上のマスタから書込み命令を受信するように構成される、請求項７記載のメモリコントローラ。
【請求項９】
さらに下記を具備する、請求項６記載のメモリコントローラ：
該転送キューに応ずるために、該充填領域に該充填値を書き込むために書込みコマンドをフォーマットするように構成されたロジック。
【請求項１０】
さらに下記を具備する、請求項１記載のメモリコントローラ：
該充填領域内のメモリアドレスについての読出し要求を検出するように構成されたロジック；および
該読出し要求内に指定された該メモリアドレスに該充填値を実際に書き込むより前に該充填値を返すように構成されたロジック。
【請求項１１】
さらに下記を具備する請求項１記載のメモリコントローラ：
アクセスのために使用できる該充填値で初期化されたメモリアドレスを作るために書き込まれた該最終アドレスを表わすために該スタートアドレスを更新するように構成されたロジック。
【請求項１２】
メモリコントローラで実行された、メモリ内のデータを初期化するまたは複写するための方法、該方法は下記を具備する：
メモリのスタートアドレスを受信する；
該メモリのエンドアドレスまたは長さを受信する；
充填値を受信する；および
該スタートアドレスおよびエンドアドレスまたは長さによって定義された任意長の充填領域内の該メモリに該充填値を書き込む。
【請求項１３】
さらに下記を具備する、請求項１２記載の方法：
複写するために該メモリの第１の読出しアドレスを受信する：
該第１の読出しアドレスで始まる該メモリの読出し領域を読み出す、ここにおいて該読出し領域の長さは該充填領域の長さに対応する；および
該充填領域の対応するアドレスに該充填値を書き込むより前に該読出し領域の各アドレスから読み出された値に基づいて該充填値を更新する。
【請求項１４】
さらに下記を具備する、請求項１２記載の方法：
標準バス上で該メモリコントローラと通信する１つまたはそれ以上のマスタ装置からの読出し／書込み命令を該メモリコントローラで処理する。
【請求項１５】
さらに下記を具備する、請求項１２記載の方法：
該メモリコントローラの転送キューに従って、該充填領域に該充填値を書き込むために書込みコマンドをフォーマットする。
【請求項１６】
さらに下記を具備する、請求項１２記載の方法：
該充填領域内のメモリアドレスに関する読出し要求を検出する；および
該充填値を該読出し要求内の指定されたメモリアドレスに実際に書き込むより前に該充填値を返却する。
【請求項１７】
さらに下記を具備する、請求項１２記載の方法：
アクセスのために使用可能な該充填値で初期化されたメモリアドレスを作るために書き込まれた該最終アドレス値を表わすように該スタートアドレスを更新する。
【請求項１８】
ここにおいて初期化命令は該メモリコントローラに連結されたプロセッサから受信される、請求項１２記載の方法。
【請求項１９】
下記を具備する、コンピュータシステム：
初期化または複写するために任意の領域のメモリアドレスを含むメモリ初期化命令またはメモリ複写命令の１つを送るように構成されたプロセッサ；および
該プロセッサに連結されたメモリコントローラ、ここにおいて該メモリコントローラは該プロセッサからメモリ初期化命令またはメモリ複写命令を受信するように構成される、および該受信された命令に従って該領域のメモリアドレスを初期化または複写するように構成される。
【請求項２０】
さらに下記を具備する、請求項１９記載のコンピュータシステム：
送信チャネルおよび読出しデータチャネルを具備する２チャネルバス、ここにおいて該メモリコントローラは該２チャネルバスによって該プロセッサに連結される。
【請求項２１】
さらに下記を具備する、請求項２０記載のコンピュータシステム：
該プロセッサおよび該メモリコントローラを連結する代理バス、ここにおいて転送要求属性は対応するメモリ初期化または複写命令の該メモリコントローラを通知するために該代理バス上に送信される。
【請求項２２】
ここにおいて該転送要求属性は下記の少なくとも１つを含む、請求項２１記載のコンピュータシステム：
メモリスタートアドレスおよびメモリエンドアドレスと関連する第１のメモリ初期化属性；
メモリスタートアドレス、メモリエンドアドレスおよび初期化値と関連する第２のメモリ初期化属性；
メモリスタートアドレスおよび長さと関連する第３のメモリ初期化要求；
メモリスタートアドレス、メモリ長さおよび初期化値と関連する第４のメモリ初期化属性；
ソーススタートアドレス、ソースエンドアドレス、通報受端スタートアドレスおよび通報受端エンドアドレスと関連する第１のメモリ複写属性；または
ソーススタートアドレス、通報受端アドレスおよび複写長と関連する第２のメモリ複写属性。
【請求項２３】
ここにおいて２つのメモリアドレスは該送信チャネル上の第１の放送サイクルにおいて送信される、請求項２０記載のコンピュータシステム。
【請求項２４】
下記を具備するメモリコントローラで実行されたメモリ初期化のための方法：
スタートアドレス、エンドアドレスおよび初期化値を含むメモリ初期化コマンドを受信する；
現在のアドレスを該スタートアドレスにセットする；
該現在のアドレスで該メモリに該初期化値を書き込む；
該現在のアドレスを増す；および
もし該現在のアドレスが該エンドアドレスより大きくないならば、該書き込むことおよび増すことを繰り返す。
【請求項２５】
下記を具備するメモリコントローラで実行されたメモリ複写のための方法：
ソースアドレス、通報受端アドレスおよび複写計数値を含むメモリ複写コマンドを受信する；
該ソースアドレスから該通報受端アドレスまでのデータを複写する；
該ソースアドレスおよび該通報受端アドレスを増す；
現在の計数値を増す；および
もし該現在の計数値が該複写計数値より大きくないならば、該複写することおよび増すことを繰り返す。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明の実施形態はメモリコントローラに、そしてこのメモリコントローラを含むコンピュータシステムに関する。より詳細には、この発明の実施形態はメモリブロック初期化および複写機能を実行するように構成されたメモリコントローラに、およびメモリブロック初期化および低減されたバストラフィックを有する複写機能を実行するための方法に関する。
【背景技術】
【０００２】
従来のコンピュータシステムは典型的にソフトウェアアプリケーションおよびプログラムデータを蓄積するための１つまたはそれ以上のメモリモジュール、およびマイクロプロセッサの命令のもとでメモリモジュールへのアクセスを制御するメモリコントローラを含む。従来のメモリモジュールは（例えば、“ブート(boot)”動作の間）所定のシーケンスの命令に基づいて正確に動作するために典型的にパワーアップされて初期化される。パワーアップおよび初期化のために必要な手順に従うことの失敗はまだ定義されていない動作という結果になるかもしれない。
【０００３】
ブートまたはパワーアップ（power-up）初期化動作のほかに、メモリ初期化はこのコンピュータシステムによって実行されているかまたは実行されるように計画されている１つまたはそれ以上のソフトウェアプログラムまたはアプリケーション（例えば、実時間ストリーミングビデオアプリケーション）にメモリを指定するか割り当てるように正規のシステム動作の間実行されることができる。これらのタイプのメモリ初期化はプロセッサによって典型的にマイクロ管理(micro-managed)される。例えば、初期化プログラムはループを介してプロセッサによって実行されることができ、メモリコントローラに１つまたはそれ以上の指定されたメモリアドレスを初期化することを命令しているメモリコントローラに送られるループ発生初期化命令の各反復とともに実行されることができる。プロセッサによってメモリコントローラに送られた初期化命令は指定されたメモリブロックを与えられた初期化値またはロジックレベル（例えば、高ロジックレベルまたはロジック“１”、低ロジックレベルまたはロジック“０”、等）にセットするように命令するメモリ書込みを含む。
【０００４】
例えば、図１Ａを参照して、従来のコンピュータシステム１０内のプロセッサ１２によって実行された従来のメモリ初期化ループは次のとおりプログラミングロジックを用いて実行されることができる：
【数１】
2010541103.tif 000003
【０００５】
よって、上述のプログラミングロジック内に示されたように、ｉ０，０００メモリアドレスでデータを初期化するために、プロセッサ１２は各繰り返し(iterations)で１命令（例えば、１書込みコマンド）を発生する、１０，０００繰り返しでフォーループ(for-loop)を実行し、それはメモリ装置１８内の１つの特定のメモリロケーションまたはアドレスでデータを初期化するために、バス１４を介してメモリコントローラ１６に送られる。各々発生された命令または書込みコマンドは１つのメモリアドレスおよび１つの初期化値を含む。よって、上記の例では、プロセッサ１２は１０，０００メモリアドレスおよび１０，０００初期化値をメモリコントローラ１６に送り、それは初期化命令を実行する。さらに、上で供給されたプログラミングロジックはフォーループの各反復について１までパラメータアドレスを増加させる一方で、他の従来の実施の形態はパラメータアドレスを１と異なる値（例えば、２の冪）まで増加させることができる。
【０００６】
従来の初期化プログラミングロジックの例に関して上文に示されたように、ソフトウェアアプリケーションについてのメモリブロックのカスタマイズされた初期化は多数のプロセッサ実行の書込みコマンドを含んでもよく、それは高価なあるシステム資源（例えば、バス帯域幅、プロセッサパワー、等）を消費する可能性がある。さらに、プロセッサ１２は、コンピュータシステム１０をさらに遅延させるかもしれない、目標のメモリアドレスについてのメモリコマンド（例えば、読出しコマンド、書込みコマンド、等）を発する前に初期化動作の後まで待たねばならず、それはコンピュータシステム１０をさらに遅延させるかもしれない。例えば、プロセッサ１２はメモリ１８内の初期化されたメモリアドレスについてメモリコマンドを発する前に初期化動作が完了するまで待つために初期化動作をモニタすることができる。
【発明の概要】
【０００７】
この発明の実施形態はメモリブロック初期化および複写機能を実行するように構成されたメモリコントローラに、およびメモリブロック初期化および低減されたバストラフィックを有する複写機能を実行するための方法に関する。
【０００８】
よって、この発明の１実施形態は下記を具備するメモリコントローラを含むことができる；メモリのスタートアドレスを受信するように構成されたロジック；メモリのエンドアドレスまたは長さを受信するように構成されたロジック；充填値を受信するように構成されたロジック；およびスタートアドレスとエンドアドレスまたは長さによって定義された任意長の充填領域内のメモリに充填値を書き込むように構成されたロジック。
【０００９】
この発明のもう１つの実施形態は、メモリコントローラで実行された、メモリ内のデータを初期化または複写するための方法を含むことができ、この方法は下記を具備する：メモリのスタートアドレスを受信する；メモリのエンドアドレスまたは長さを受信する；充填値を受信する；およびスタートアドレスとエンドアドレスまたは長さによって定義された任意長の充填領域内のメモリに充填値を書き込む。
【００１０】
この発明のもう１つの実施形態は、下記を具備する、コンピュータシステムを含むことができる：初期化または複写するために任意領域のメモリアドレスを含むメモリ初期化命令またはメモリ複写命令の１つを送るように構成されたプロセッサ；プロセッサに連結されたメモリコントローラ、ここにおいてメモリコントローラはプロセッサからメモリ初期化命令またはメモリ複写命令を受信するように構成され、そしてこの受信命令に従ってこの領域のメモリアドレスを初期化または複写するように構成される。
【００１１】
この発明のもう１つの実施形態は下記を具備するメモリコントローラで実行されるメモリ初期化のための方法を含むことができる：スタートアドレス、エンドアドレスおよび初期化値を含むメモリ初期化コマンドを受信する；現アドレスをスタートアドレスに書き込む；現アドレスでメモリに初期化値を書き込む；現アドレスを増す；およびもし現アドレスがエンドアドレスより大きくなければ、書込みおよび増大を繰り返す。
【００１２】
この発明のもう１つの実施形態は下記を具備するメモリコントローラで実行されたメモリを複写するための方法を含むことができる：ソースアドレス、通報受端アドレスおよび複写計数値を含むメモリ複写コマンドを受信する；ソースアドレスから通報受端アドレスにデータを複写する；ソースアドレスおよび通報受端アドレスを増す；現計数値を増す；およびもし現計数値が複写計数値より大きくなければ、複写および増大を繰り返す。
【００１３】
添付図面はこの発明の更なる理解を提供するために含まれ、そして組み込まれてこの明細書の一部を構成する。図面はこの発明の実施形態を図示し、そしてこの説明書と共にこの発明の原理を説明するのに役立つ。
【図面の簡単な説明】
【００１４】
【図１Ａ】図１Ａは、従来の初期化手順を使用している演算システムを示すブロック図である。
【図１Ｂ】図１Ｂは、低減されたバストラフィックおよびプロセッサ利用を有する初期化手順を使用している演算システム示すブロック図である。
【図２Ａ】図２Ａは、２チャネルバスおよびそれの上で通信された関連する命令を示す図である。
【図２Ｂ】図２Ｂは、２チャネルバスおよびそれの上で通信された関連する命令を示す図である。
【図２Ｃ】図２Ｃは、２チャネルバスおよびそれの上で通信された関連する命令を示す図である。
【図２Ｄ】図２Ｄは、２チャネルバスおよびそれの上で通信された関連する命令を示す図である。
【図３】図３は、演算システムのプロセッサで実行されたメモリ初期化／複写手順を示すフローチャートである。
【図４Ａ】図４Ａは、演算システムのメモリコントローラで実行されたメモリ初期化／複写手順を示すフローチャートである。
【図４Ｂ】図４Ｂは、メモリ初期化手順の間実行されたオプションの手順を示すフローチャートである。
【図５】図５は、演算システムのプロセッサで実行された代理のメモリ初期化／複写手順を示す図である。
【図６Ａ】図６Ａは、メモリコントローラで実行されたメモリ複写手順を示すフローチャートである。
【図６Ｂ】図６Ｂは、メモリコントローラで実行されたメモリ初期化手順を示すフローチャートである。
【図７】図７は、初期化ロジックおよび関連エレメントを含むメモリコントローラを示すブロック図である。
【詳細な説明】
【００１５】
この発明の局面は以下の記述およびこの発明の特定の実施形態に向けられた関連図面の中で開示される。代理の実施形態はこの発明の範囲から逸脱すること無しに考案されることができる。そのうえ、この発明の周知のエレメントは詳細には記述されないか、あるいはこの発明の関連した詳細を不明瞭にすることがないように除外されるであろう。
【００１６】
用語「例示的な(exemplary)」および／または「一例の(example)」は「一例、事例、または実例として機能すること」を意味すべくこの中で使用されている。この中で「例示な」および／または「一例の」として記述された任意の実施形態は必ずしも他の実施形態以上に好ましいとか有利であると解釈されるべきではない。同様に、用語「この発明の実施形態」はこの発明のすべての実施形態が検討された特徴、利点または動作モードを含むことを必要としない。
【００１７】
さらに、多くの実施形態は、例えば、演算装置のエレメントによって実行されるべき一連の動作の表現で記述される。この中に記述されたいろいろな動作が特定回路（例えば、特定用途向け集積回路（ＡＳＩＣ））によって、１つまたはそれ以上のプロセッサによって、あるいは両者の組合せによって実行されているプログラム命令によって実行されうることは理解されるであろう。そのうえ、この中に記述されたこれらのシーケンスの動作は実行上で関連するプロセッサにこの中に記述された機能性を実行させるであろう対応するセットのコンピュータ命令をその中に蓄積した任意の形式のコンピュータ可読媒体内で完全に実施されると考えられることができる。このように、この発明のいろいろな局面は多数の異なる形式で実施されることができ、そのすべてはクレームされた対象物の範囲内にあることが予期される。さらに、この中に記述された実施形態のおのおのについて、任意のそのような実施形態の対応する形式は、例えば、記述された動作を実行する「ように構成されたロジック」としてこの中に記述されることができる。
【００１８】
用語第１、第２、等はいろいろなエレメントを記述するためにこの中で使用されるかもしれないが、これらのエレメントがこれらの術語によって限定されてはならないことは理解されるであろう。これらの術語は１つのエレメントをもう１つから区別するためだけに使用される。例えば、この発明の実施形態の範囲から逸脱すること無しに、第１のエレメントは第２のエレメントと名づけられることができ、そして、同様に、第２のエレメントは第１のエレメントと名づけられることができる。また、この中で使用されたように、用語「および／または」は１つまたはそれ以上の関連する記録項目の任意のおよびすべての組合せを含む。
【００１９】
この中で使用された術語は特定の実施形態だけのためであり、そしてこの発明の実施形態の限定であることを意味しない。この中で使用されたように、単数形“ａ”，“ａｎ”および“ｔｈｅ”は、もし文脈が明確にその状態を示さなければ、複数形を含むことを意味する。用語“ｃｏｍｐｒｉｓｅｓ”、“ｃｏｍｐｒｉｓｉｎｇ”、“ｉｎｃｌｕｄｅｓ”および／または“ｉｎｃｌｕｄｉｎｇ”は、この中で使用された時は、示された特徴、完全体、ステップ、演算、エレメント、および／またはコンポーネントの存在を指定するが、しかし１つまたはそれ以上の特徴、完全体、ステップ、演算、エレメント、コンポーネント、および／またはそれのグループの存在あるいは追加を排除しない。
【００２０】
この発明の実施形態をよりよく理解するために、実例の演算手順内で実行されたメモリ初期化手順の１例によってフォローされた、１例の演算システムが記述されるであろう。図１Ｂはこの発明の実施形態に従って演算システム１００を図示するブロック図である。
【００２１】
図１Ｂの実施形態では、プロセッサ１０２はバス１０４を介してメモリコントローラ１０６に連結される。メモリコントローラ１０６はメモリ１０８に連結される。１例では、プロセッサ１０２は任意の周知のプロセッサに該当してもよい。例えば、プロセッサ１０２は図表プロセッサユニット（ＧＰＵ）、中央処理装置（ＣＰＵ）、ディジタル信号プロセッサ（ＤＳＰ）、ハードウェアアクセレレータ、およびその他同種類のものとして実施されることができる。さらに、プロセッサ１０２は複数のプロセッサまたはマスタおよびバス１０４および／またはメモリコントローラ１０６を制御することができる他の関連するエレメント（例えば、相互接続／バスアービタ）を表してもよい。プロセッサ１０２とメモリコントローラ１０６との間、そして同様にメモリコントローラ１０６とメモリ１０８との間のバス接続１０４は直接接続または間接接続のどちらかであることができる。例えば、プロセッサ１０２およびメモリコントローラ１０６はバス１０４によって接続されることができ、それはマルチポイントバス、シングルポイントバス、２チャネルバスおよび／または専用の接続であってもよい。図１Ｂの実施形態では、演算システム１００は、サーバ、パソコン、ラップトップ、電池駆動、ポケットサイズＰＣ、パーソナルディジタルアシスタント（ＰＤＡ）または他の移動体演算装置（例えば、移動電話）のような、任意のタイプの演算システムを表してもよい。
【００２２】
さらに、メモリ１０８は任意の周知のタイプのメモリの代表物であってもよい。例えば、メモリ１０８は１つまたはそれ以上のシングルインラインメモリモジュール（ＳＩＭＭ）、デュアルインラインメモリモジュール（ＤＩＭＭ）、フラッシュメモリ（例えば、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ、等）、同期ＲＡＭ（ＳＲＡＭ）、磁気ＲＡＭ（ＭＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）のようなランダムアクセスメモリ（ＲＡＭ）、および電気的消去可能プログラマブル読出し専用メモリ（ＥＥＰＲＯＭ）を含んでもよい。
【００２３】
複雑な最新式のディジタルシステムの中心では、構成はバス（例えば、１０４／２０４）上に転送要求を送る相互接続である。相互接続がマスタからスレーブへのトランザクション要求および書込みデータを、そしてスレーブからマスタへの（例えば、（マスタ）送出装置２０２へ／から（スレーブ）受信装置２０６への）読出しデータおよび書込みレスポンスを送るロジックであることは認識されるであろう。例えば、（１０２／２０２の一部でありえる）相互接続は複数のマスタ（例えば、複数のプロセッサ）および／または複数のメモリコントローラを有するシステム内で使用されることができる。例えば、バス１０４はシステム１００内に固有のいろいろな処理機能の間で情報を移動させる。バス構成は独立のおよび別個のアドレス、読出し、および書込みバスを含むことができる。これらの接続は送信装置から受信装置への転送アドレスの通信、受信装置から送信装置への読出しデータの通信、および送信から受信装置への書込みデータの通信を可能とする。
【００２４】
図２Ａに図示されたように、バス２０４は送信２０２と受信装置２０６との間にあることができる。図示された一般システム２００では、装置（例えば、２０２，２０６）間でデータを移動させることができる必要性がある。この発明の実施形態はシステム・オン・ア・チップ(system-on-a-tip)構成および他のシステム構造についてメモリブロック初期化を実行するためのコンパクトバスコマンドを記述する。この中で使用され、そして図示されたように、送信チャネル２０８は送信２０２および受信２０６装置間で「情報」を送信するための一般的な媒体である。例えば、時分割多重化様式では種々のタイプの情報が送信装置２０２から受信装置２０６に放送されることができる。この発明のいくつかの実施形態はメモリ初期化および複写コマンドを促進するために図示された２チャネルバス２０４を使用することができる。２チャネルバス構成の追加の詳細は、本譲受人に譲渡され、そしてそれの全体において引用によってこの中に組み込まれた、２００４年４月２７日提出の米国特許出願番号第１０／８３３，７１６号、標題「複数アドレスの２チャネルバス構成（Ａ  Ｍｕｌｔｉｐｌｅ  Ａｄｄｒｅｓｓ  Ｔｗｏ  Ｃｈａｎｎｅｌ  Ｂｕｓ  Ｓｔｒｕｃｔｕｒｅ）」から得られることができる。
【００２５】
例えば、図示された２チャネルバス構成２０４を使用して、送信装置２０２は、アドレス保有期間の間中送信チャネル２０８上にアドレス、または複数アドレスを放送することによって、読出しまたは書込み転送、あるいはそれの任意の組合せを開始できる。読出し転送要求の場合にはこれは送信チャネル２０８上に放送される必要がある情報のみである。受信装置２０６はこの放送を認め、そしてその後読出しデータを読出しデータチャネル２１０上に放送することによって要求されたデータを供給する。書込み転送要求の場合にはマスタ（例えば、送信装置２０２）はその後送信チャネル２０８を介して書込み保有期間中の受信装置２０６に書込みデータを放送することによって送信チャネル上のアドレスの放送に従うことができる。メモリ初期化コマンドの場合にはアドレス保有期間の間中メモリ初期化のための「スタート」アドレスおよび「エンド」（例えば、エンドアドレスか長さのどちらか）の両方が受信装置２０６（例えば、メモリコントローラ）に同時に放送される。さらに、初期化値はその後この発明の実施形態に従うメモリ初期化バスコマンドのオプション部としてデータ保有期間内に送信されることができる。
【００２６】
送信チャネルは、送信チャネル２０８上に送信されたビットの部分として放送しているデータのタイプ（例えば、書込みアドレス、読出しアドレス、データ）を示すための制御／シグナリングビットを含んでもよい。あるいは、２次シグナリング／制御接続／バス（図示せず）は送信チャネルの全体の幅（例えば、６４ビット）がアドレス／データ情報を送るために使用可能であるように提供されてもよい。同様に、２次シグナリング／制御接続／バス（図示せず）は制御／シグナリング情報のために受信装置から送信装置に供給されてもよい。２チャネルバス構成２０４内の２次接続に関する詳細は前述の米国特許出願番号第１０／８３３，７１６号内に発見されることができ、それで追加の詳細はこの中ではさらに検討されないであろう。
【００２７】
送信装置２０２は送信チャネル２０８の制御を有することができ、そしてアクティブな書込みデータ保有期間より前に、間中、または後に１つまたはそれ以上の転送アドレスを放送できる。また送信チャネル２０８および読出しデータチャネル２１０は別々であってもよい。よって、送信装置２０２によるアドレスおよび書込みデータの放送は受信装置２０６による読出しデータの送信装置２０２への放送し返しと同時に起こってもよく、それは非常にコンパクトで効率的なバス構成２０４を形成する。
【００２８】
２チャネルバス２０４のもう１つの局面は送信装置２０２から受信装置２０６への単一の放送サイクル内で複数のデータ転送要求のパイプライン処理を容易とするための能力である。同時に複数アドレスについて放送することはバス２０４の性能を増加させる。例えば、単一の放送サイクル内の望ましいメモリ初期化動作のための“スタート”および“エンド”アドレスを有する単一のバス要求を表示することによって、コマンドは非常に効率のよい様式で表されることができる。
【００２９】
この発明の１つの実施形態では、送信チャネル２０８および読出しデータチャネル２１０はおのおの６４ビット幅である。受信装置２０６に表示される転送アドレスは３２ビット幅である。これは単一の放送サイクルの間送信チャネル２０８上に２つの転送アドレス、例えば、アドレスＡおよびアドレスＢを供給することを認める。この場合には放送サイクルは１つのクロックサイクルと定義されることができる。
【００３０】
例えば、図２Ｂに示されているように、送信装置２０２はアドレス保有期間２２０の間アドレスＡ１上にデータ初期化スタートメモリアドレスを、そしてアドレスＢ１上にエンドメモリアドレスを放送することができる。相互接続およびメモリコントローラ（受信装置２０６）はこの絶対的なポジショニング（例えば、アドレスＡとして第１の３２ビットそしてアドレスＢとして第２の３２ビット）に基づいてこの要求タイプを処理することができる。送信装置２０２はこれが固有の転送要求属性（例えば、ＭＩ［１］）によるメモリ初期化トランザクション要求であることを示すことができる。メモリ初期化要求属性（例えば、ＭＩ［１］）は相互接続にスタートアドレスを制御するメモリコントローラへのこのメモリ初期化トランザクションを順方向転送させることができる。この構成では、メモリは所定の値に初期化されることができる。
【００３１】
図２Ｃに示されているようなもう１つの実施形態では、バスコマンドは種々の転送属性値、（例えば、ＭＩ［２］）によって識別されることができる。このバスコマンドは、ＭＩ［１］によって発生されたそれと同じである、アドレス保有コマンド２３０を含むことができるが、しかしながら、それはまたスタートアドレスＡ１からエンドアドレスＢ１までのメモリ初期化処理の間使用されるべき“初期化値”Ｄ１を含む送信チャネル上に次のデータ保有２３２をも生成する。一度メモリコントローラがデータ初期化コマンドを送られるとそれは要求された初期化演算を実行することができる。
【００３２】
図２Ｄに示されているようなさらにもう１つの実施形態では、もう１つのバスコマンドが種々の転送属性値、（例えば、ＭＣ［１］）によって識別されることができる。このバスコマンドは、ＭＩ［１］によって発生されたそれと同じである、複数のアドレス保有コマンド２４０および２４２を含むことができる。例えば、このバスコマンドはメモリ値がスタートアドレスＡ１からエンドアドレスＢ１まで複写されてスタートアドレスＡ２からエンドアドレスＢ２に書き込まれるメモリ複写処理の間使用されることができる。一度メモリコントローラが第２のセットのアドレスを送られると、それは要求されたメモリ複写演算を実行することができる。
【００３３】
上に示されたように２チャネルバス構成のこの特別のバスコマンドはメモリ初期化機能を実施する効率のよい方法を提供する。例えば、効率は下記を含むがしかしこれに限定されない：メモリ初期化を作り出すためのシングルバスコマンド／トランザクション；相互接続は“スタート”アドレスに基づくべきコマンドを導くためにいずれかのメモリコントローラを選定する；および“初期化”値付きのおよび無しの選択可能なフォーマット。また、上記されたように、特別のバスコマンドは効率のよいメモリ複写機能を定義することができる。さらに、エンドアドレスは初期化または複写されるべき長さ（例えば、メモリのバイト）で置き換えられてもよい。
【００３４】
この発明の実施形態はメモリコントローラ内にメモリ初期化の機能性を置き、それは時間とエネルギーとの両方を節約する。時間は、プロセッサがアドレス上のルーピング（例えば、図１Ａ内で実行されたＮプロセス対図１Ｂ内の１を比較）の代わりに処理と共に続けることができるので、節約される。エネルギーは以下の理由で節約されることができる：プロセッサ１０２がより少ないコードを実行する；個々のメモリ書込みがプロセッサ１０２からメモリコントローラ１０６に送られない；およびメモリコントローラ１０６がメモリ１０８への書込みを改善し、そしてメモリデータライン上のバリュートグル(value toggles)の数を減少させることができる。例えば、メモリコントローラ１０６は、全ページの書込みの間データラインを一定に保ち、メモリの１ページを一度に初期化することができる。
【００３５】
一般的に、図３および４Ａ〜Ｂに関して以下により詳細に記述されるであろうように、プロセッサ１０２はメモリコントローラ１０６に複数のメモリアドレス（例えば、指定されたメモリアドレス領域内に配置されたメモリアドレス）を初期化することを命令するメモリコントローラ１０６に初期化命令を発することができる。
【００３６】
図３，４Ａおよび４Ｂは図１Ｂの演算システム１００内で実行された１例のメモリ初期化手順を集合的に図示する。以下の説明では、図３の手順は図１Ｂのプロセッサ１０２で実行され、図４Ａおよび４Ｂの手順は図１Ｂのメモリコントローラ１０６で実行される。しかしながら、図３，４Ａおよび４Ｂの実例の手順は代わりに任意のタイプの演算またはメモリシステム内で実行されうることは理解される。
【００３７】
図３の実施形態では、３００において、プロセッサ１０２はメモリ１０８の１つまたはそれ以上のメモリアドレスでデータを初期化するかどうかを決定する。例えば、ブロック３００の決定はプロセッサ１０２によって実行されているかあるいは図１Ｂのプロセッサ１０２によって実行されることを予定されているソフトウェアプログラムと関連するメモリ条件に基づくことができる。したがって、１例では、もしソフトウェアプログラムまたはアプリケーションルーチングが１０，０００バイトのデータまで使用するであろうならば、プロセッサ１０２は１０，０００バイトのデータに対応するメモリ１０８のメモリアドレスの番号でデータを初期化することを決定できる。
【００３８】
３０５では、プロセッサ１０２は３００からの初期化のために決定されたメモリアドレスの番号に基づいて初期化命令を発生する。初期化命令は初期化されるべきメモリアドレスの範囲（例えば、図２Ｂに関して検討されたようなスタートアドレスおよびエンドアドレス）および任意に初期化値（例えば、図２Ｃを調べられたい）を含むことができる。もう１つの代案では、初期化値要求は初期化命令内に含まれないが、しかしむしろ暗に含まれるかまたはメモリコントローラ１０６によって仮定されてもよい。例えば、もし初期化値が“０”と異なるレベルに設定される初期化命令内に含まれないならば初期化値は“０”または何か他の定数に設定されると想定されることができる。もう１つの例では、初期化値は情報に対応できる。例えば、もし実質的にブルーカラーフレーム(blue color frame)がストリーミングビデオアプリケーションのために復号されていれば、表示されるべき次フレームと関連するメモリアドレスは、次フレームの最後の非ブルー部のみがビデオ復号の間更新される必要があるように、ソリッド“ブルー”フレームの代表値に初期化されることができる。
【００３９】
１例では、１０，０００メモリアドレスは３００で初期化されることが決定される、および初期化値は“０”であると仮定されたい。これらの仮定で、１例では、初期化命令はプログラミングロジックで次の通り表されることができる：
【数２】
2010541103.tif 000004
【００４０】
上記実例のプログラミングロジック内に示されるように、初期化命令は比較的短いと同様に比較的単純でありうる。正しく認識されるであろうように、上記の例のプログラミングロジックはメモリコントローラ１０６に、上記前提で、ロジック“０”を有するメモリアドレス［００００］乃至［９９９９］を初期化することを命令する。しかしながら、プログラミングロジックの他の例は１０，０００メモリアドレスを初期化するために上に与えられた特定のアドレスを初期化する必要はないが、しかしむしろメモリ１０８内で使用できる任意のメモリアドレスレンジを選定できることは理解される。１例では、２アドレス（例えば、［００００］および［９９９９］）のみが初期化動作のサポートにおいてプロセッサ１０２からメモリコントローラ１０６に送られる必要がある。もう１つの例では、初期化動作のサポートにおいて単一のアドレス（例えば、［００００］）およびオフセット値または長さ（例えば、１００００）が別々の２メモリアドレスの代わりにプロセッサ１０２からメモリコントローラ１０６に送られることができる。
【００４１】
さらにもう１つの例では、初期化命令はメモリコントローラ１０６に他のメモリアドレス（例えば、図２Ｄを調べられたい）から複写されたデータを有する第１のセットのメモリアドレスを初期化することを命令する。したがって、この場合に与えられた初期化値は１つの定数値ではないが、しかしむしろ複写されるべき対応するメモリアドレスでのデータの値に対応するかもしれない。この例では、初期化命令はプログラミングロジックで次の通り表されることができる：
【数３】
2010541103.tif 000005
【００４２】
上記例２のプログラミングロジック内に示されたように、メモリコントローラ１０６はメモリアドレス［００００］から［９９９９］をメモリアドレス［１００００］から［１９９９９］でのデータで初期化することを命令される。再び、この例における２つのそれぞれのメモリアドレスレンジの各々は１セットの２つのメモリアドレス、あるいは代わりに単一のメモリアドレスおよび１オフセット値または長さのどちらかとして表現されることができる。メモリコントローラ１０６は読出しデータを対応する目標のメモリアドレスに書き込むと同様に複写されるべきメモリアドレスでデータを読み出すので、初期化命令の例２はメモリコントローラ１０６の観点からわずかにより複雑である。
【００４３】
図３の実施形態に戻って、３１０で、プロセッサ１０２は初期化命令を（例えば、マルチポイントバス接続、シングルポイントバス接続、専用接続、等のようなバス１０４を介して）メモリコントローラ１０６に送る。１つの実施形態では、メモリ初期化コマンド（例えば、ＭＩ［１］）はメモリコントローラ１０６をプロセッサ１０２と接続する（例えば、メモリ書込み／読出し命令のために使用したバスではない）構成バスのような代替のバスを介して送られることができる。
【００４４】
図４Ａはこの発明の１実施形態に従って方法４００を図示するフローチャートである。この方法はメモリのスタートアドレスを受信することによってブロック４０２内で始まることができる。メモリのエンドアドレスまたは長さはブロック４０４で受信される。もし命令がメモリ複写でないならば、決定ブロック４０６、その時充填または初期化値がブロック４０８で受信される。ブロック４１０では、充填値はスタートアドレスおよびエンドアドレスまたは長さ（例えば、図２Ｃを調べられたい）によって定義された任意長の充填領域内のメモリに書き込まれる。よって、充填値（またはデフォールトの初期化値）は、処理がメモリコントローラ１０６で局部的に行われるので、メモリコントローラ１０６にプロセッサ１０２を連結している書込みバス１０４上の帯域幅の少ない消費でメモリを初期化するために使用されることができる。
【００４５】
オプションとして、もし受信されたコマンドがメモリ複写に関するものであれば、メモリ複写は図示された方法４００を使用して検出されることができる。決定ブロック４０６では、メモリ複写命令が検出される。もしこの命令がメモリ複写に関するものであれば、この方法は、ブロック４１２で、複写するためにメモリの第１の読出しアドレスを受信することをさらに含むことができる。メモリの読出し領域は、ブロック４１４で、充填領域に対応する第１の読出しアドレスで読出しが始まる。例えば、読出し領域は第１の読出しアドレスおよび読出し終了アドレス（例えば、図２Ｄを調べられたい）、第１の読出しアドレスおよび長さ、およびその他同種類のものによって確立されることができる。ブロック４１６では、充填（または初期化）値は充填値をメモリに書き込むより前に読出し領域から読み出された値に基づいて更新されることができる。
【００４６】
図示されたように、もしブロック４１８でエンドアドレスに達すれば、この方法は終わる。もし達しなければ、ブロック４２０で、スタートおよび第１のアドレスは、それぞれ、読出しおよび書込みがなされるべき次のアドレスに更新されることができる。あるいは、現在の読出しおよび書込みアドレスへのポインタは更新されることができ、そして原スタートおよび第１の読出しアドレスは維持されることができる。その後手順はメモリが複写されるか指定された領域上で初期化されるまで継続することができる。
【００４７】
図４Ｂはこの発明の１実施形態に従ってメモリコントローラ１０６で実行されたメモリ初期化手順のもう１つの実施形態を示すフローチャートである。図４Ｂの実施形態では、ブロック４００で、メモリコントローラ１０６は初期化命令（例えば、図４Ａに図示されたような、初期化命令の例１、初期化命令の例２、等）を実行する。ブロック４５０で、ブロック４００の初期化手順が実行されている一方で、メモリコントローラ１０６は任意の次の読出しコマンドがプロセッサ１０２から受信されたかどうかを決定することができる。もし１つまたはそれ以上の読出しコマンドがプロセッサ１０２から受信されたことをメモリコントローラ１０６が決定すれば、手順はブロック４５２に進み；さもなければ、手順はブロック４５４に進む。ブロック４５２では、メモリコントローラ１０６は、充填／初期化メモリ領域内にある読出しコマンドによって指定された各メモリアドレスについての読出し応答データとして充填／初期化値を有する１つまたはそれ以上の受信読出しコマンドに応答する。１例では、メモリコントローラ１０６は指定されたメモリアドレスから初期化値を読み出す必要はないが、しかしむしろ単純に充填／初期化値で自動的に応答できる。よって、読出し動作は読出し応答データを供給するために実際に行われる必要は無く、それによって演算システム１００の効率を増加させている。
【００４８】
代替の１例では、図４Ｂには明確に示されていないが、ブロック４００の初期化手順は、もし読出しコマンドが（例えば、初期化手順の現在のメモリアドレスポジションを示すポインタに基づいて）まだ初期化されなかったメモリアドレス上のデータ読出し動作を要求すれば、１つまたはそれ以上の読出しコマンドの受信に応じて中断されることができる。言い換えれば、この例におけるデータ読出し動作は実際に従来の技術におけるように実行され、そして４００の初期化手順は読出し動作完了後に再開する。
【００４９】
もう１つの代替の例では、もしブロック４００の初期化が初期化命令の例２（例えば、与えられたメモリ装置で、１つの部分からもう１つの部分メモリを複写するメモリ複写タイプ動作）と同種のプログラミングロジックで実行されるならば、ブロック４５２は初期値を戻すことができないが、しかしむしろブロック４５４に直接進むことができる。例えば、メモリ複写型の動作では、初期化値は必ずしもメモリコントローラ１０６では知られないが、しかしその代わりに確かめるために１つまたはそれ以上のメモリアドレスの読出し動作を要求できる。よって、システム設計の選択に基づいて、ブロック４００の初期化はこのシナリオ内の読出しデータで応じるために中断される必要はない。例えば、メモリ複写動作の目標または通報受端部内のメモリアドレスについての読出しコマンドはそれがサービスされることができるまで無視されるか、あるいは初期化４００が完了した後にまたは読出しコマンドと関連するメモリアドレスが（例えば、初期化手順の現在のメモリアドレス位置を示すポインタに基づいて）初期化または複写された後に実行される読出しコマンドキューに付加されることができる。
【００５０】
ブロック４５４では、ブロック４００の初期化手順が実行されている一方で、メモリコントローラは任意の次の書込みコマンドがプロセッサ１０２から受信されたかどうかを決定する。もしメモリコントローラ１０６が、１つまたはそれ以上の書込みコマンドがプロセッサ１０２から受信されたことを決定すれば、手順はブロック４５６に進み；さもなければ、手順はブロック４５８に進む。ブロック４５６では、メモリコントローラ１０６は１つまたはそれ以上の書込みコマンドを書込みバッファ／キューに加える。１例では、書込みキューはメモリコントローラ１０６で局部的に蓄積されることができる。もう１つの例では、書込みコマンドキューは書込みコマンドの閾値数まで蓄積するように構成されてもよい。この例では、閾値数（例えば、書込みキューがいっぱいである後に受信された書込みコマンド）のほかに受信された任意の書込みコマンドはそれらがサービスされることができるまで無視される（即ち、メモリコントローラ１０６で蓄積されない）および／または認められないかもしれない（それはメモリコントローラにバス／プロセッサへのバックプレッシャをかけるであろう）。
【００５１】
ブロック４５８では、メモリコントローラ１０６はブロック４００の初期化動作が完了しているかどうか（例えば、初期化命令から指定されたメモリアドレスを含む全部または一部が初期化されたかどうか）を決定する。もしメモリコントローラがブロック４００の初期化動作は完了していることを決定すれば、図４Ｂの手順はブロック４６０に進み；さもなければ、手順はブロック４００に戻り、そして初期化動作を続ける。
【００５２】
この発明のもう１つの実施形態はメモリ複写およびメモリ初期化のための別個のアプリケーションルーチン５１０を有して図５内に図示される。この構成では、プロセッサ１０２上で走行しているアプリケーションルーチン５１０はメモリ複写（ｍｅｍ ｃｏｐｙ要求）５２０およびメモリ初期化（ｍｅｍ ｉｎｉｔ要求）５３０のための特定のサービスを援用することができる。ｍｅｍ ｃｏｐｙ５２０を要求する時に、ブロック５２２で、ソースおよび通報受端アドレス、および複写計数値を含む命令が発生され、そしてその後ブロック５２４で、ｍｅｍ ｃｏｐｙ命令はメモリコントローラ１０６に送られる。ｍｅｍ ｉｎｉｔ５３０を要求する時に、ブロック５３２で、スタートおよびエンドアドレス、およびオプションとして初期化値を含む命令が発生され、そしてその後ブロック５３４で、ｍｅｍ ｃｏｐｙ命令はメモリコントローラ１０６に送られる。
【００５３】
図６Ａはメモリ複写命令（例えば、図５内の５２０）の受信後にメモリコントローラでメモリ複写を実行するためのフローチャートを示す。例えば、ｍｅｍ ｃｏｐｙ命令および情報は、複写計数値が第２セットのアドレスの代わりにデータ保有期間内に供給されるであろうことを除いて、図２Ｄに関して記述されたテクニックを使用しているメモリコントローラに伝えられることができる。ブロック６２１で、ソースおよび通報受端アドレスを含む複写コマンド、および複写計数値が受信される。ブロック６２２で、複写計数値を決定するカウンタは１にセットされる。ブロック６２３で、ソースアドレスからのデータが通報受端アドレスに複写される。ブロック６２４で、複写カウンタは増加される。ブロック６２５で、ソースアドレスおよび通報受端アドレスはそれぞれから複写されおよびそれぞれに書き込まれるべき次のアドレスに増加される。決定ブロック６２６では、複写カウンタは受信された複写計数値と比較される。もし現在のカウンタが複写計数値未満であるかまたは等しいならば、手順はブロック６２３にループし、そして複写手順が完了するまで継続する。
【００５４】
図６Ｂはメモリ初期化命令（例えば、図５内の５３０）の受信後にメモリコントローラでメモリ初期化を実行するためのフローチャートを示す。例えば、ｍｅｍ ｉｎｉｔ命令および情報は、図２Ｃに関して記述されたテクニックを使用しているメモリコントローラ１０６に通信されることができる。ブロック６３１で、スタートおよびエンドアドレスを含む初期化コマンド、およびオプションとして初期化値が受信される。ブロック６３２で、現アドレスがスタートアドレスにセットされる。ブロック６３３で、現アドレスで蓄積された値は初期化値またはオプションとして暗黙値にセットされる。ブロック６３４で、現アドレスは増加される。決定ブロック６３５で、現アドレスはエンドアドレスと比較される。もし現アドレスがエンドアドレスより大きくなければ、手順はブロック６３３にループし、そして初期化が完了するまで継続する。
【００５５】
この発明の実施形態が前記のものの中に提供された例に限定されないことは認識されるであろう。例えば、ｍｅｍ ｃｏｐｙ命令は、上述されたような複写計数値の代わりに、ソーススタートおよびエンドアドレスおよび通報受端スタートおよびエンドアドレスを含んでもよい。同様に、ｍｅｍ ｉｎｉｔ命令は、スタートおよびエンドアドレスの代わりに、スタートアドレスおよび長さを含んでもよい。しかしながら、命令を通信するための特定のフォーマットにかかわらず、各実施形態は、与えられた機能（例えば、ｍｅｍ ｉｎｉｔまたはｍｅｍ ｃｏｐｙ）についてメモリコントローラに通信されるプロセッサ起動トランザクションの数を減らすことによって使用されたバス帯域幅およびプロセッサ電力を実質的に減少させる。
【００５６】
図７はこの発明の実施形態に記載のメモリコントローラ１０６のより詳細な説明図である。メモリコントローラ１０６は初期化ロジック１４０、充填レジスタ１４２、および転送キュー１５０および書込みバッファ１５２のような従来のエレメントを含むことができる。初期化はマスタ（例えば、ＣＰＵ，ＤＳＰ、等）から初期化命令を受信するように、そして初期化命令（例えば、上記、命令の例１および図２Ｂ〜Ｃを調べられたい）内に指定されたようなメモリの領域を満たすように構成されることができる。
【００５７】
例えば、１つの実施形態では、初期化ロジック１４０はメモリのスタートアドレスを受信するように構成されたロジック、メモリのエンドアドレスまたは長さを受信するように構成されたロジック、充填値を受信するように構成されたロジック、およびスタートアドレスおよびエンドアドレスまたは長さによって定義された任意長の充填領域内のメモリに充填値を書き込むように構成されたロジックを含むことができる。初期化ロジック１４０は、他のマスタ（例えば、ＤＳＰ，ＣＰＵ、等）とも共有されるメモリコントローラ１０６の転送キュー１５０を使用するように構成されることができる。充填データはメモリコントローラのために確立されたプロトコルを使用している初期化ロジック１４０によって転送キュー１５０上に配置されることができる。よって、初期化ロジック１４０はより容易に現メモリコントローラ構成に統合されることができ、そしてシステム内の他のマスタと協力的に機能することができる。
【００５８】
例えば、図７に示されたように、転送キュー１５０は初期化ロジック１４０から書き込まれた連続的な充填演算を有することができる。よって、この発明の１局面は充填領域に充填値を書き込むために書込みコマンドをフォーマットするように、転送キューに従うように構成されたロジックを含むことができる。例えば、各充填は標準サイズおよび特定の演算のための符号に従うことができる。例えば、最初の“Ｆｉｌｌ”は初期化命令内に指定されたようなスタートアドレス（例えば、０００００）で始まる３２バイト書込みコマンドであってもよい。次の“Ｆｉｌｌ”は次ブロックのアドレスのための書込みコマンド（例えば、アドレス０００３２でスタートする３２バイト書込みコマンド）であってもよい。この中で検討されたように、バイトでの書込みサイズおよび２つの連続した書込みコマンドは単に実例であり、そしてこの発明の実施形態はこれらの特定の値またはシーケンスには限定されない。転送キュー１５０内の次の２エントリは、充填命令とインターリーブされる、他のマスタ（例えば、ＤＳＰおよびＣＰＵ）からのものである。認識されうるように、複数のプロセッサ／マスタはメモリコントローラ１０６をアクセスでき、そして初期化ロジック１４０は他のマスタと協力して動作するように構成されることができる。あるいは、初期化ロジック１４０は他のマスタをブロックするように構成されることができ、そして全メモリ範囲が充填値で初期化されるまで連続的に初期化を実行する。
【００５９】
さらに、充填データ／値は同じものであるだろうから、充填レジスタ１４２はメモリ１０８への書込みのためにそれらを転送キュー１５０内に配置するより前に充填値の列を作るためにメモリコントローラ１０６内に含まれることができる。別の充填レジスタ１４２を持つことの１つの利点は、それが書込みバッファ１５２に冗長データを書き込むことを防ぎ、それは他のマスタ（例えば、ＤＳＰ，ＣＰＵ）のために使用可能な書込みバッファ１５２内のスペースを制限するであろう。
【００６０】
上述のように、メモリコントローラ１０６はバス１０４（例えば、ＡＸＩバス、２チャネルバス、等）上でメモリコントローラと通信する１つまたはそれ以上のマスタ装置からの読出し／書込み命令を処理するように構成される。しかしながら、少なくとも１つのスタートアドレス、エンドアドレスまたは長さ、あるいは充填値は代替バス１３２（例えば、構成バス）上でメモリコントローラに通信されることができる。また、図２Ａ〜Ｄに関して検討されたように、転送属性値は代替バス上で通信されることができ、そして関連アドレスおよびデータは送信バス上で通信されることができる。代替バス１３２を使用することは、メモリコントローラのアドレッシングが物理メモリに対応し、そしてまた標準バス１０４上のトラフィックを減少させることもできる構造内の初期化コマンドによる使用のためのメモリ１０８の一部をブロックすることを避けることができる。
【００６１】
この発明のもう１つの局面では、初期化ロジックは充填領域内のメモリアドレスについての読出し要求を検出するように構成されたロジックおよび読出し要求内に指定されたメモリアドレスに充填値を実際に書き込むより前に充填値を返すように構成されたロジックを含む。よって、読出しは充填値がメモリに書き込まれる前でさえサービスされることができ、それはシステムの応答性を改善するであろう。同様に、この発明のもう１つの局面はアクセスのために使用可能な充填値で初期化されたメモリアドレスを作るために書き込まれた最終アドレス値を表わすべくスタートアドレスを更新するように構成されたロジックを含むことができる。よって、スタートアドレスを書き込まれるべき次アドレスに更新することによって既に初期化された任意のメモリアドレスはシステムの残りによる使用のために利用可能となることができる。
【００６２】
この発明のもう１つの実施形態では、初期化ロジック１４０またはメモリコントローラ１０６は複写するためにメモリの第１の読出しアドレスを受信するように構成されたロジック、第１の読出しアドレスで始まるメモリの読出し領域を読み出すように構成されたロジック、ここにおいて読出し領域の長さは充填領域の長さに対応する；および充填値を有する充填領域の対応するアドレスを書き込むより前に読出し領域の各アドレスから読み出された値に基づいて充填値を更新するように構成されたロジックをさらに含むことができる。よって、メモリコントローラ１０６は初期化ロジック１４０を使用している局部的複写（例えば、命令の例２を調べられたい）を実行できる。この場合には、充填値としての固定値の代わりに、充填値は複写コマンド内で定義されたメモリ位置から読み出されたデータから更新されることができ、そして更新された値はメモリ空間を初期化するために使用されることができる。よって、初期化ロジック１４０は第１の読出しメモリアドレスについての読出し要求をトランザクションキュー１５０上に配置し、読出しデータをメモリ（例えば、１０８）から獲得し、そしてその後読出し値をスタートアドレスに書き込むために転送キュー１５０上に書込みコマンドを配置する。読出しおよび書込みアドレスはエンドアドレスが読出し領域および充填領域の両者について到達されるまでこの手順が続くように更新されることができる。読出し領域から読み出された値は、書込みバッファ１５２あるいはそれらがメモリへの書戻しのために転送キュー上に配置されるまで初期化ロジック１４０と関連するもう１つのバッファ内に蓄積されることができる。よって、この発明のこの局面はまたバス（例えば、１４０または２０４／２０８）上のトラフィックを減少させることもでき、そしてこの処理はメモリコントローラ１０６で局部的に実行されるのでメモリ複写性能を改善することができる。
【００６３】
上述されたようにこの初期化ロジックは、受信された命令のタイプに基づいて、メモリ初期化およびメモリ複写命令の両方を行うことができる。しかしながら、この発明の実施形態はまた各演算について個々に区別されたロジックをも含むことができ、それは各機能について別個のステートマシンとして実現されてもよい。同様に、この発明の実施形態は、これらがシステム設計者によって望まれるように共有または分離されてもよいので、バッファ、レジスタ、等の図示された構成には限定されない。
【００６４】
情報および信号がいろいろな異なるテクノロジーおよびテクニックのいずれかを使用して表わされ得ることは認識されるであろう。例えば、上記説明の全体を通して参照される可能性があるデータ、命令、コマンド、情報、信号、ビット、および記号は電圧、電流、電磁波、磁界または粒子、光学界または粒子、あるいはそれの任意の組合せによって表わされることができる。
【００６５】
さらに、この分野の技術者はこの中に開示された実施形態と関連して記述されたいろいろな実例となるロジックブロック、モジュール、回路、およびアルゴリズムステップは電子ハードウェア、コンピュータソフトウェア、または両者の組合せとして実施され得ることを認識するであろう。ハードウェアおよびソフトウェアのこの互換性を明確に説明するために、いろいろな実例となるコンポーネント、ブロック、モジュール、回路、およびステップは一般にそれらの機能性の表現で上述された。そのような機能性がハードウェアまたはソフトウェアとして実施されるかどうかはシステム全体に課された特定のアプリケーションと設計の制約とによる。熟練技工は各特定のアプリケーションについて異なる方法で記述された機能性を実施できるが、しかしそのような実施の決定が本発明の実施形態の範囲からの逸脱を引き起こすと理解されてはならない。
【００６６】
ここに開示された実施形態と関連して記述されたいろいろな実例となるロジックブロック、モジュール、および回路は汎用プロセッサ、ディジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のプログラマブルロジック装置、ディスクリートゲートまたはトランジスタロジック、ディスクリートハードウェアコンポーネント、あるいはこの中に記述された機能を実行するように設計されたそれの任意の組合せで実施または実行されることができる。汎用プロセッサはマイクロプロセッサであってもよいが、しかし、代案では、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた計算装置の組合せ、例えば、ＤＳＰとマイクロプロセッサ、複数のマイクロプロセッサ、ＤＳＰコアとともに１つまたはそれ以上のマイクロプロセッサの組合せ、あるいは任意の他のそのような構成として実施されることもできる。
【００６７】
この中に開示された実施形態と関連して記述された方法、シーケンスおよび／またはアルゴリズムはハードウェアで直接に、プロセッサによって実行されたソフトウェアモジュールで、あるいはこの２者の組合せで具体化されることができる。ソフトウェアモジュールはＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、着脱可能形ディスク、ＣＤ−ＲＯＭ、あるいはこの分野で知られる任意の他形式の蓄積媒体内に存在することができる。実例の蓄積媒体は、プロセッサがこの蓄積媒体から情報を読み出し、そしてそれに情報を書き込むことができるように、このプロセッサに連結される。代案では、蓄積媒体はプロセッサに統合されてもよい。プロセッサおよび蓄積媒体は１ＡＳＩＣ内に存在してもよい。ＡＳＩＣはユーザ端末（例えば、アクセス端末）内に存在してもよい。代案では、プロセッサおよび蓄積媒体はユーザ端末内のディスクリートコンポーネントとして存在してもよい。
【００６８】
この発明の実施形態はこのように記述されており、同一のことが多くの方法において変更されうることは認められるであろう。例えば、図１Ｂの演算システム１００はシングルプロセッサシステムとして図示されている一方で、この発明の実施形態は代わりにマルチプロセッサシステム構成内で実施されてもよい。
【００６９】
前述の開示がこの発明の実例となる実施形態を示す一方で、いろいろな変更および修正は添付されたクレームによって定義されたようなこの発明の範囲から逸脱すること無しにこの中でなされうることは注目されねばならない。この中に記述されたこの発明の実施形態に従う方法のクレームの機能、ステップおよび／またはアクションは任意の特定の順番で実行される必要はない。さらに、この発明のエレメントは単数で記述またはクレームされるかも知れないが、もし単数への限定が明確に述べられなければ複数が予想される。
【図１Ａ】
2010541103.tif 000006
【図１Ｂ】
2010541103.tif 000007
【図２Ａ】
2010541103.tif 000008
【図２Ｂ】
2010541103.tif 000009
【図２Ｃ】
2010541103.tif 000010
【図２Ｄ】
2010541103.tif 000011
【図３】
2010541103.tif 000012
【図４Ａ】
2010541103.tif 000013
【図４Ｂ】
2010541103.tif 000014
【図５】
2010541103.tif 000015
【図６Ａ】
2010541103.tif 000016
【図６Ｂ】
2010541103.tif 000017
【図７】
2010541103.tif 000018
【国際調査報告】
2010541103.tif 000019
2010541103.tif 000020
2010541103.tif 000021