説明

様々な書き込みコマンド・スケジューリングを含むメモリシステム

【課題】様々な書き込みコマンド・スケジューリングを含むメモリシステムを提供する。
【解決手段】システム100は、ホストデバイス50を含み、ホストデバイス50は、システム・メモリにメモリ・リクエストを始めるように構成される。システム100はメモリコントローラ25を含み、メモリコントローラ25は、メモリ・リクエストを受け取るように、そして、メモリインタフェースを介してメモリデバイス20に運ばれるメモリ・トランザクション33にメモリ・リクエストをフォーマット化するように構成される。メモリ・トランザクション33は、複数のメモリ書き込みコマンド・タイプを含む。各メモリ書き込みコマンド・タイプは、対応するデータ・ペイロードを運ぶために異なるそれぞれのスケジュールに対応する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリシステムに関し、更に詳しくは、メモリインタフェースのメモリ・コマンド・スケジューリングに関するものである。
【背景技術】
【0002】
多くのコンピュータシステムにおいては、メモリデバイスは、様々な従来のメモリインタフェースとプロトコルを使用して、読み取られたり書き込まれたりする。例えば、幾つかの従来のプロトコルにおいては、別々のチャネルが、メモリ・コマンド、そのアドレス及びその付随する書き込みデータを送信するために存在する。バンド幅は、それぞれのチャネルに必要なバンド幅に基づいて、これらのチャネルの各々に割り当てられる。この種のインタフェースは、欠点を有する。更に詳しくは、幾つかのチャネルは他のチャネルほどそんなに多くのバンド幅を必要としないので、バンド幅は幾つかのチャネルで減らすことができる。
幾つかの従来のメモリ・プロトコルは、追加的な欠点を有する。例えば、書き込みコマンドのデータは、この書き込みコマンドに対して単に特定の時間に送られるだけである。この種のコマンド及びデータ・スケジューリングは、また、いつ、そして、如何に多くの読み取りコマンド又は他のコマンドが、同時に待機中であり得るかによって、バンド幅を制限する。
【発明の概要】
【0003】
様々な書き込みコマンド・スケジューリングを含むメモリシステムの各種の実施例が、開示される。一実施例においては、メモリ・サブシステムは、メモリデバイスと制御装置を含む。前記メモリデバイスは、データを格納するための1つ以上のメモリアレイを含む。前記制御装置は、メモリ・トランザクションを受け取ることに応答して前記1つ以上のメモリアレイからデータを読み取ったり、前記1つ以上のメモリアレイにデータを書き込んだりするように構成される。前記メモリ・トランザクションは、幾つかのメモリ書き込みコマンドタイプを含む。しかしながら、各メモリ書き込みコマンドタイプは、対応するデータ・ペイロードを運ぶ(convey)ために異なるスケジュールに対応する。
【0004】
ある特定の実施においては、各メモリ・トランザクションは、第1のコマンドスロットと第2のコマンドスロットを有する少なくとも1つのフレームを含む。加えて、前記メモリ書き込みコマンドタイプの1つは、第1のフレーム、第2のフレーム及び第3のフレームを含む。前記第1のフレームは、前記第1の又は第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドを含む。前記第2のフレームは、前記対応するデータ・ペイロードの第1部分を運び、前記第3のフレームは、前記対応するデータ・ペイロードの残りの部分を運ぶ。
【0005】
他の特定の実施においては、前記メモリ書き込みコマンドタイプの1つは、第1のフレームと第2のフレームを含む。前記第1のフレームは、前記第1の又は第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドを含む。前記第2のフレームは、前記第1のコマンドスロットの対応するデータ・ペイロードの第1の部分と前記第2のコマンドスロットの対応するデータ・ペイロードの残りの部分を運ぶ。
【0006】
他の実施例では、システムは、システム・メモリにメモリ・リクエストを開始するように構成されるホストデバイスを含む。このシステムは、また、メモリコントローラを含み、このメモリコントローラは前記メモリ・リクエストを受け取り、このメモリ・リクエストをメモリインタフェースを介してメモリデバイスに運ばれるメモリ・トランザクションにフォーマット化するように構成される。これらのメモリ・トランザクションは、複数のメモリ書き込みコマンドタイプを含む。各メモリ書き込みコマンドタイプは、対応するデータ・ペイロードを運ぶための異なるそれぞれのスケジュールに対応する。
【図面の簡単な説明】
【0007】
【図1】メモリ・サブシステムを含むシステムの一実施例のブロック図である。
【図2】非特定のメモリ・トランザクションフレームの一実施例を表す線図である。
【図3】メモリ読み取りトランザクションの一実施例を表す線図である。
【図4A】メモリ書き込みトランザクションの一実施例を表す線図である。
【図4B】5つのフレームを含むバーストメモリ書き込みトランザクションの一実施例を表す図である。
【図4C】メモリ書き込みトランザクションの他の実施例を表す線図である。
【図4D】メモリ書き込みトランザクションの他の実施例を表す線図である。
【図4E】メモリ書き込みトランザクションの他の実施例を表す線図である。
【図5】メモリ読み取り−変更−書き込みトランザクションの一実施例を表す線図である。
【図6】図1に示すシステムの実施例の動作を説明するフローチャートである。
【0008】
特定の実施例が、図面に例として示され、本願明細書において詳細に記述されている。しかしながら、これらの図面と詳細な説明は、単一の実施例だけが特定の特徴に関して記述されている場合であっても、請求項を開示の特定の実施例に制限することを意図するものではないことを理解すべきである。これに反して、この意図は、この開示の利点を知った当業者にとって明らかである全ての変更、等価物及び代替例をカバーするということである。この開示で提供される特徴の例は、特に明言がない限り、限定というよりは寧ろ説明のためのものである。
【0009】
本願の全体にわたって使われている、「何々する(何々することができる又は何々でもよい)」という用語は、義務的な意味(即ち、不可欠を意味する)よりは寧ろ自由裁量を許す意味(即ち、可能性があることを意味する)において使用されている。同様に、「何々を含む」「何々を含んでいる」という用語は、何々を包含することを意味するもので、何々に限定するものではない。
【0010】
様々なユニット、回路又は他のコンポーネントは、タスクを遂行するように「構成される」として、記述されている。この種のコンテキストにおいて、「構成される」という用語は、通常、動作中にタスクを遂行する「回路構成を有する」ことを意味する構造の広い記述である。このように、前記のユニット/回路/コンポーネントが同時にオンでないときでも、このユニット/回路/コンポーネントは、そのタスクを遂行するように構成される。一般に、「構成される」に対応する構造を形成する回路構成は、ハードウエア回路を含む。同様に、様々なユニット/回路/コンポーネントは、記述の便宜上、タスクを遂行するとして記述されている。この種の記述は、「構成される」という字句を含むことと解釈すべきである。
1つ以上のタスクを遂行するように構成されるユニット/回路/コンポーネントを記述することの明白な意図は、そのユニット/回路/コンポーネントに対する米国特許法§112、パラグラフ6の解釈を招来しないことにある。
【発明を実施するための形態】
【0011】
図1を参照すると、図1には、メモリ・サブシステムを含むシステムの一実施例のブロック図が示されている。システム100は、インタフェース33を介してメモリ・サブシステム15に結合される特定用途向け集積回路(ASIC)/ホスト50を含む。図示の実施例では、ASIC/ホスト50は、メモリコントローラ25に結合するルータ27を含む。メモリ・サブシステム15は、メモリデバイス20に結合する制御装置22を含む。
【0012】
一実施例においては、ASIC/ホスト50は、内部の又は外部のソースから、メモリ・リクエストを受け取ることができる。ルータ27は、メモリコントローラ25にこのメモリ・リクエストを送り届けることができる。メモリコントローラ25は、メモリ・サブシステム15にインタフェース33で伝送するのに適したメモリ・トランザクションに、このメモリ・リクエストをフォーマット化することができる。
各種の実施例においては、このメモリ・トランザクションは、メモリ書き込みトランザクション、メモリ読み取りトランザクション及びメモリ読み取り−変更−書き込み(RMW)トランザクションを含む。図2から図5に示すように、このメモリ・トランザクションは、80−ビット・フレームにフォーマット化することができる。但し、他の数のビットも可能である。
一実施例においては、このフレームは、トランザクション層で用いることができる。
【0013】
図4Aから図4Dの記述に関連して更に後述するように、このメモリ書き込みトランザクションは、幾つかの異なるタイプの書き込みコマンドを含むことができる。更に詳しくは、メモリコントローラ25は、異なるデータ・ペイロード・スケジューリングを有する異なるタイプの書き込みコマンドを用いてインタフェース33で入手できるバンド幅を利用すべく、このメモリ書き込みトランザクションをフォーマット化するように構成することができる。
【0014】
図1において、制御装置22は、メモリコントローラ25からこのメモリ・トランザクションを受け取り、異なるコマンドオペコード(演算コード)をデコードし、このトランザクションを再フォーマット化して、メモリデバイス20にそれらを送ることができる。従って、制御装置22は、データの演算とメモリデバイス20にデータを送受信することを制御するように構成することができる。図示のように、制御装置22は、記憶装置23を含む。一実施例においては、記憶装置23は、この読み取り−変更−書き込み動作の間、用いることができる幾つかのベースアドレスを格納することができる。
図5と図6の記述に関連して後に詳述するように、このベースアドレスは、特別な書き込みフレームを使用して書き込まれる。加えて、制御装置22の処理装置24は、読み取り−変更−書き込み(RMW)メモリ・トランザクションの変更フェーズの一部として、メモリデバイス20から読み取ったデータに幾つかの論理・演算機能を施すように構成される。
【0015】
各種の実施例においては、特定の実施に応じて、インタフェース33は、直列相互接続又は並列相互接続である。直列相互接続の実施(例えば33A)においては、インタフェース33は、1つ以上の直列チャネルを含む。各チャネルは、1つ以上の一方向の又は双方向の通信レーンを含む。単一の直列レーンを有する実施においては、所与のフレームは、このレーンを通して単一のビットストリームで直列に送られる。
しかしながら、チャネルにつき複数のレーンを含む実施においては、この80−ビット・フレームは、所与のチャネルにおいてこのレーンの1つ以上を通して送信される。並列相互接続の実施(例えば33B)においては、インタフェース33は幾つかの一方向のコマンド・アドレス信号経路と、並列バスを構成する幾つかの双方向のデータ信号経路とを含み、この80−ビット・フレームはこの並列バスを通して従来の並列フォーマットで送信される。
なお、インタフェース33のためのシリアルインタフェースを使用する実施においては、メモリコントローラ25は、インタフェース33の異なるチャネルで様々な異なるメモリ・トランザクションを同時に送ることができる。
【0016】
メモリデバイス20は、データを格納するための1つ以上のメモリアレイを含むことができる。例えば、特定の一実施においては、メモリデバイス20の1つ以上のメモリアレイは、1T−SRAMセルを使用して実行することができる。他の実施例においては、任意の相互接続を使用するようにできるが、一実施例においては、メモリデバイス20と制御装置22は、並列相互接続を経て結合される。加えて、メモリデバイス20と制御装置22は、同一の集積回路(IC)ダイ上で実行することができる。
更にまた、一実施例においては、メモリ・サブシステム15とASIC/ホスト50は、同一のICダイ上で実行することもできる。
【0017】
更に後述するように、メモリコントローラ25は、バンド幅を改良するために、メモリ・トランザクションの異なるタイプを利用することができる。更に詳しくは、異なるタイプのメモリ読み取りと書き込みトランザクションとを用いることによって、様々なメモリ書き込みトランザクションとメモリ読み取りトランザクションが、組み合わされ、そして、どれくらいのデータがメモリデバイス20から読み取られ又はメモリデバイス20に書き込まれることを必要とするかによって、メモリコントローラ25は、異なる時間にメモリ読み取りコマンドと書き込みコマンドの異なるタイプを選択することができる。
【0018】
図2を参照すると、非特定のメモリ・トランザクションフレームの一実施例を表す線図が示されている。このフレーム200は、幾つかの領域(フィールド)を含む80−ビット・フレームである。この例示の実施例に示すように、このフレーム200は、ビット0から5において、巡回冗長コード(CRC)領域を含む。ビット6は、肯定応答ビット7に対応し、一方、ビット7は、トランザクション層に対応し、ビット7の符号化1は、このフレームがトランザクション層フレームであることを指し示す。ビット8から43は1つのコマンドスロットに対応し、ここでは、R(即ち右)コマンドスロットとして示される。ビット44から79は他のコマンドスロットに対応し、ここでは、L(即ち左)コマンドスロットとして示される。
更に後述するように、このLとRコマンドスロットの各々は、どんな情報がそのフレームに又は先行するフレームにあるかによって、読み取りコマンド、書き込みコマンド、RMWコマンド、又は、データに対応する情報を含むことができる。
各種の実施例においては、あるフレームの1つ又は両方のコマンドスロットが、所与のトランザクションで使われることができる。
【0019】
図3を参照すると、メモリ読み取りトランザクションの一実施例を表す線図が示されている。読み取りフレーム300は、読み取りコマンドオペコードとアドレスを含む。図示のように、この読み取りコマンドオペコードとアドレスは、読み取りフレーム300のLコマンドスロットに位置付けされる。図示のように、Rコマンドスロットは、空である。しかしながら、他の実施例では、2つの読み取りコマンドを、1つのフレームに付与することができる。このように、LとRコマンドスロットは、読み取りコマンドオペコードと関連アドレスとを含む。
加えて、更に後述するように、読み取りコマンドを、1つのコマンドスロット(例えば、Lコマンドスロット)に付与し、書き込みコマンドは、他のコマンドスロットに含まれるようにしてもよい。
【0020】
各種の実施例において、幾つかの異なる読み取りオペコードがある。そして、各々は、異なるタイプの読み取りトランザクションを特定する。例えば、一実施例において、1つのオペコードが、読み取りフレームにおいて特定されるアドレスで、データの読み取り操作を特定することができる。このように、その読み取りオペコードは、特定されたアドレスで読み取り操作を遂行するよう、制御装置22に指し示すことができる。
他の実施例では、異なる読み取りオペコードは、ある特定の長さのバースト読み取り操作を特定することができ、読み取りトランザクションにおけるアドレスは、このバーストのスターティングアドレスであることができる。
【0021】
図4Aを参照すると、2つのフレームを含むメモリ書き込みトランザクションの一実施例を表す線図が示されている。図3の読み取りトランザクションフレームと同様に、書き込みトランザクション410の上の方のフレームの第1のビット0−7は、CRCビットと、トランザクション層表示ビットのような多様な制御ビットを含む。図示の実施例では、このLコマンドスロットは、空であり、一方、Rコマンドスロットは、書き込みコマンドオペコードとアドレスを含む。
しかしながら、下の方のフレームにおいては、前記書き込みコマンドためのデータは、ビット8−79において送信され、それによって72のビットのデータ・ペイロードを提供する。前記上の方のフレームはコマンド・フレームと呼ばれ、下の方のフレームはデータフレームと呼ばれることに注意されたい。
このデータフレームにおいては、データ・ペイロードはデータ−Hiとデータ−Loに分解される。ここで、このデータ−Hiはビット44−79(例えば、Lコマンドスロット)において送信され、データ−Loはビット8−43(例えば、Rコマンドスロット)において送信される。
上記したように、コマンド・フレームのLコマンドスロットは本実施例において空なので、読み取りコマンドがLコマンドスロットに入れられることに注意されたい。
図示のように、書き込みコマンドWR_000は、図1の制御装置22に、この書き込みコマンドに対する全体の72−ビット・データ・ペイロードが次のフレームにおいて追従するということを指し示す特定のオペコード符号化に対応する。
【0022】
図4Bを参照すると、5つのフレームを含むバーストメモリ書き込みトランザクションの一実施例を表す線図が示されている。図示の実施例では、書き込みトランザクション420の一番上のフレームはコマンド・フレームである。図4Bのコマンド・フレームは、図4Aのコマンド・フレームと類似している。しかしながら、この書き込みコマンドのオペコード符号化は、異なる。更に詳しくは、図4Bにおいて、この書き込みコマンドオペコードは、WR_001としてコード化されている。
一実施例において、このWR_001オペコードは、図1の制御装置22に、4つの後続のデータ・ペイロード・フレームが、このコマンド・フレームの後ろにあり、それらの各々は72−ビット・データ・ペイロードを含むということを指し示す。
4つの後続のデータ・ペイロード・フレームが図4Bに示されているが、他の実施例では、異なる数のデータ・ペイロード・フレームがこのメモリコントローラ25によって発行できることに注意されたい。
図4Aのコマンド・フレームと同様に、かつ、上述したように、このLコマンドスロットは空である。しかしながら、このLコマンドスロットは、例えば、読み取りコマンド又は他のコマンドのような非書き込みコマンドを含むことができる。
一実施例においては、このLコマンドスロットに読み取りコマンドを有するコマンド・フレームを受信すると、即座に、制御装置22は、最初にこの読み取りコマンドを処理し、次に、書き込みコマンドを処理する。
【0023】
図4Cを参照すると、3つのフレームを含むメモリ書き込みトランザクションの一実施例を表す線図が示されている。図示の実施例では、書き込みトランザクション430のコマンド・フレームは、図4Bと図4Aに示すコマンド・フレームと類似している。しかしながら、書き込みトランザクション430においては、この書き込みコマンドオペコードは、WR_010としてコード化されている。
従って、一実施例において、この種の符号化は、制御装置22に、データ・ペイロードが、次の2つの後続のフレームで一度に1つの36−ビットの半分語(ハーフワード)として送信されることを指し示す。
しかしながら、図4Cに示すように、このデータHi半分語は次の後続のフレームにおいて送信され、一方、データ−Lo半分語は第2の後続のフレームにおいて送信される。
再びトランザクション430の全ての3つのフレームにおいて、Lコマンドスロットは、空である。しかしながら、上記の如く、非書き込みコマンドは、これらのLコマンドスロットの各々に挿入することができる。
従って、メモリコントローラ25は、例えば、読み取りコマンドのようなコマンドを、これらのフレームの各々に挿入することによって、入手可能な帯域幅を利用することができる。
【0024】
図4Dを参照すると、書き込みトランザクションの他の実施例を表す線図が示されている。図示の実施例では、トランザクション440は、1つのフレームを含み、この1つのフレームは、Lコマンドスロットに書き込みコマンドオペコードとRコマンドスロットにデータ・ペイロードを含む。図示のように、この書き込みコマンドは、WR_011としてコード化される。図示の実施例では、このデータ・ペイロードは、半分語として送られる。
更に詳しくは、このデータ−Hi半分語は、このRコマンドスロットにおいて送られる。
このように、この書き込みオペコードWR_011は、制御装置22に、72−ビット・データ・ペイロードの上の半分語だけが現行フレームにおいて送信されているということを指し示す。
【0025】
図4Eを参照すると、書き込みトランザクションの他の実施例を表す線図が示されている。図4Dのトランザクション440と同様に、図4Eのトランザクション450は、1つのフレームを含み、この1つのフレームは、Lコマンドスロットに書き込みコマンドオペコードとRコマンドスロットにデータ・ペイロードを含む。しかしながら、図4Eにおいては、この書き込みオペコードは、WR_010としてコード化されている。図4Eの実施例においては、このデータ・ペイロードも、また、半分語として送られる。
更に詳しくは、このデータ−Lo半分語は、このRコマンドスロットにおいて送られる。
このように、書き込みオペコードWR_100は、制御装置22に、72-ビット・データ・ペイロードの下の半分語だけが現行フレームにおいて送信されているということを指し示す。
【0026】
一実施例においては、要求に応じて、図4Dと図4Eに示すトランザクションは、一緒に、又は、別々に使うことができる。従って、図4A−図4Eに示す前記実施例から、メモリコントローラ25は、様々な異なるタイプの書き込みコマンドを用いて、入手できるバンド幅を最もよく使用できる。
【0027】
他の実施例では、半分語の書き込みトランザクションは、追加的な仕方で遂行することができる。更に詳しくは、メモリコントローラ25は、半分語の書き込みを遂行するために追加的な書き込みオペコードを用いることができる。ここで、書き込みオペコードは、上又は下の半分語のどちらが送られているのかを特定することができる。
一実施例において、この書き込みコマンドはこのRコマンドスロットにおいて送ることができ、そして、データの半分語は、次のフレームのRコマンドスロットかLコマンドスロットのいずれかにおいて送られる。
このような実施例では、書き込みオペコードは、データ・ペイロードがデータ−Hiの半分語なのかそれともデータ−Loの半分語なのか、及び、データが占めているは、RコマンドスロットなのかそれともLコマンドスロットなのかを特定することができる。
【0028】
図5を参照すると、1つのフレームを含む読み取り−変更−書き込みトランザクションの実施例を表す線図が示されている。図3の読み取りトランザクションフレームと図4A−図4Eの書き込みトランザクションフレームと同様に、RMWトランザクション500の上の方のフレームの最初のビット0−7は、CRCビットとトランザクション層表示ビットのような様々な制御ビットとを含む。図示の実施例では、Lコマンドスロットは空であり、一方、RコマンドスロットはRMWコマンドオペコードを含む。
しかしながら、アドレス・フィールドにおけるアドレスが、まさに読み取りコマンド・フレームと書き込みコマンド・フレームにおけるアドレスと同様であるというよりは寧ろ、このRMWアドレス指定は異なる。図5に示す実施例において、ビット8から23は、16ビットの即値オペランドを含み、ビット24−25は2−ビットのワード符号化を含み、ビット26から32は7−ビットのオフセットを含み、そして、ビット33−35は3−ビットの区画(パーティション)符号化を含む。
【0029】
図1のシステム100において、RMWトランザクションにより、メモリ・データはインタフェース33を通して送られる最小限の数のメモリ・トランザクションによって変更することができる。例えば、インタフェース33を通して送られる単一のRMWトランザクションにより、特定のアドレスのデータは変更することができる。
メモリ・アドレスは、図1の記憶装置23にプレロードされるベースアドレスに関してオフセットとして与えることができる。
【0030】
一実施例において、このRMW変更演算は、16、32及び64ビットの算術論理装置(ALU)の演算を含む。その演算は飽和加減算とモジュロー2nの加減算などの加減算を含む。
加えて、次のような論理演算も、遂行される:論理積(AND)、論理和(OR)及び排他的論理和(XOR)。更に、シフト、比較、増分、減分などのような様々な他の算術又は論理演算が、遂行される。これらの異なるタイプのRMWの演算の各々は、対応するRMWコマンドオペコード符号化を有することができる。
一実施例において、制御装置22は、他の演算の中で、これらの演算を遂行するために、処理機能24を含むことができる。
【0031】
図5を参照すると、一実施例において、このRMWコマンドの各々は、このRMWオペコードによって特定されるメモリデバイス20のアドレスに格納された16、32、又は、64ビット・オペランドとフレームのビット[23:8]の16ビットの即値のオペランド間で演算を遂行する。
一旦このメモリ・オペランドが変更されると、制御装置22はこのメモリデバイスへこの結果を書き戻す。このメモリ・アドレスは、このオフセット・フィールド(例えば、ビット[32:26])を以前に記憶装置23にロードされたベースアドレスと組み合わせる(例えば、ADD、XORなど)ことによって計算することができる。
区画フィールド(例えば、ビット[35:33])は、記憶装置23内に格納されるこのベースアドレスの1つを選択することができる。このデータのサイズと整列は、このワードフィールドと結合してこのRMWオペコードで決定することができる。
更に詳しくは、16−ビットRMWコマンドと32−ビットRMWコマンドについては、ワードフィールドのワード値は、メモリ・オペランドのどちらのビットがデータであるかを決定することができる。一方、64ビットRMWコマンドについては、このデータが全ての64のビットであると暗示されるので、このワードフィールドは無視される。
【0032】
他の実施例では、1つ以上の追加的なRMWオペコードは、演算される様々なデータのサイズを特定することができる。更に詳しくは、1つのRMWオペコードが、メモリ・オペランドの2つの異なる部分に遂行されるべき2つの異なった独立した演算を特定することができる。例えば、1つのそのようなRMWオペコードは、メモリ・オペランドの一部分が40ビットで、他の部分が24のビットであることを特定することができる。加えて、この同じRMWオペコードは、制御装置22が、例えば、24−ビット部分に対して増分又は減分などの1つの演算を、及び、例えば、この40−ビット部分に対してXORのような他の演算をフレームの16ビット即値オペランドによって、遂行するということを特定することができる。
かくして、1つのRMWオペコードについては、2つの独立した演算は、メモリ・オペランドからの(同一又は異なるサイズの)データの2つの異なる部分に遂行することができる。メモリ・オペランドに遂行できる上述した任意の演算は、両方の部分に遂行することができることに注意されたい。
【0033】
上記したように、記憶装置23は、幾つかの記憶ロケーションに幾つかの書き込みベースアドレスを保持することができる。メモリコントローラ25は、図3−図5に示すフレームと類似していてよい書き込みベース・コマンド・フレームを用いてメモリベースアドレスを記憶装置23にロードすることができる。
更に詳しくは、一実施例において、書き込みベース・コマンド・フレームは、標準フレームのいずれかのコマンドスロットに書き込みベース・コマンドを含むことができる。この書き込みベース・コマンドは、書き込みベースオペコード、ベースアドレス、及び、区画を含むことができる。書き込みベースフレームを受けると、即座に、制御ユニット22はフレームのベースアドレスを記憶ロケーションの1つに書き込む。
【0034】
図6を参照すると、図1のシステムの実施例の動作を記載するフロー図が示されている。ブロック601に始まって、メモリコントローラ25は、ルータ27からメモリ・リクエストを受け取る。メモリコントローラ25は、このメモリ・リクエストをメモリ・トランザクションにフォーマット化する(ブロック603)。上述の通り、入手できるバンド幅とその他のファクタに応じて、メモリコントローラ25は、メモリデバイス20にデータを書き込むためにメモリ書き込みコマンドのいずれかを使用することができる。
更に詳しくは、前出の図に示し、上述したように、例えば、未決の幾つかの読み取りリクエストと書き込みリクエストがあるならば、メモリコントローラ25は、同じコマンド・フレームに読み取りコマンドを含む能力のほかに、書き込みコマンドのスケジューリング可変性(variability)を利用することができる。代わりに、データのバーストがあるならば、メモリコントローラ25はこのメモリを図2Bに示すメモリ書き込みバースト・コマンドを利用することができる。
上述の通り、1つ以上の書き込み、読み取り、及び/又は、RMWフレームはトランザクション層でフォーマット化される。
【0035】
一旦このメモリ・トランザクションがフォーマット化されると、メモリコントローラ25はインタフェース33を介してメモリ・サブシステム15にこのメモリ・トランザクションを送信することができる(ブロック605)。このフォーマット化されたフレームは、インタフェース33にある物理層を介して送られる。
【0036】
このメモリ・トランザクションコマンドを受け取ると、制御装置22は、フレームの各々にあるコマンドをデコードする(ブロック607)。一旦コマンドがデコードされると、制御装置22はこのコマンドを再フォーマット化し、それをメモリデバイス20に送る(ブロック609)。更に詳しくは、書き込みコマンドの場合は、制御装置22はメモリデバイス20にあるアドレスにデータを送ることができる。
読み取りコマンドの場合は、制御装置はメモリデバイス20に読み取り動作を遂行することができ、要求されたデータがメモリデバイス20によって復帰されると、制御装置22はメモリコントローラ25にこの要求データを返すことができる。
しかしながら、RMWコマンドの場合は、制御装置22は、RMWフレームの情報から制御装置22によって算出されるような特定のメモリ・アドレスの読み取り動作を遂行することができる。制御装置22は、RMWオペコードにおいて特定される読み取りデータを変更することができて、次に、メモリデバイス20におけるアドレスにこの変更されたデータを書き戻すことができる。
【0037】
上述の実施例をかなり詳細に記述したが、一旦、上記の開示を十分に理解すると、多数の変形及び変更は、当業者にとって明らかになる。
本願請求項はこの種の変形及び変更を全て包含すると解釈されることが意図されている。
【符号の説明】
【0038】
15:メモリ・サブシステム
20:メモリデバイス
22:制御装置
23:記憶装置
24:処理装置
25:メモリコントローラ
27:ルータ
33:インタフェース
33A:直列相互接続
33B:並列相互接続
50:特定用途向け集積回路/ホスト
100:システム
200:フレーム
300:読み取りトランザクションフレーム
410:書き込みトランザクションフレーム
420:書き込みトランザクションフレーム
430:書き込みトランザクションフレーム
440:書き込みトランザクションフレーム
450:書き込みトランザクションフレーム
500:読み取り−変更−書き込みトランザクションフレーム
Memory Transactions:メモリ・トランザクション
Memory Requests:メモリ・リクエスト
L Command Slot:左コマンドスロット
R Command Slot:右コマンドスロット
Read Opecode:読み取りコマンドオペコード(演算コード)
Address:アドレス
Data-Hi:データ−Hi
Data-Lo:データ−Lo
RMW Opecode:読み取り−変更−書き込みコマンドオペコード
Partition:区画符号化
Offset:オフセット
Word:ワード符号化
Immediate:即値オペランド
601:メモリ・リクエストを受ける
603:メモリ・リクエストを複数のメモリ書き込みコマンドタイプを
含むメモリ・トランザクションにフォーマット化する
605:メモリ・トランザクションを送る
607:メモリ・トランザクションコマンドを復号化する
609:メモリデバイスにメモリ操作を送る

【特許請求の範囲】
【請求項1】
メモリ・サブシステムであって、このサブシステムは、
データを格納するための1つ以上のメモリアレイを含むメモリデバイスと、前記メモリデバイスに結合し、メモリインタフェースを介してメモリ・トランザクションを受け取ることに応答して前記1つ以上のメモリアレイからデータを読み取ったり、前記1つ以上のメモリアレイにデータを書き込むように構成される制御装置とを含み、
前記メモリ・トランザクションは、複数のメモリ書き込みコマンドタイプを含み、各メモリ書き込みコマンドタイプは、対応するデータ・ペイロードを運ぶためのそれぞれのスケジュールに対応することを特徴とする、メモリ・サブシステム。
【請求項2】
各メモリ・トランザクションは、第1のコマンドスロットと第2のコマンドスロットを有する少なくとも1つのフレームを含むことを特徴とする、請求項1に記載のメモリ・サブシステム。
【請求項3】
前記複数のメモリ書き込みコマンドタイプの1つは、
前記第1または第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドを含む第1のフレームと、
前記対応するデータ・ペイロードの第1の部分を運ぶ第2のフレームと、
前記対応するデータ・ペイロードの残りの部分を運ぶ第3のフレームと、
を含むことを特徴とする、請求項2に記載のメモリ・サブシステム。
【請求項4】
前記複数のメモリ書き込みコマンドタイプの1つは、
前記第1または第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドを含む第1のフレームと、第2のフレームとを含み、
この第2のフレームは、
前記第1のコマンドスロットの前記対応するデータ・ペイロードの第1の部分と、
前記第2のコマンドスロットの前記対応するデータ・ペイロードの残りの部分とを運ぶことを特徴とする、請求項2に記載のメモリ・サブシステム。
【請求項5】
前記複数のメモリ書き込みコマンドタイプの1つは、
前記第1または第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドを含む第1のフレームと、複数の後続のフレームとを含み、
この複数の後続のフレームの各々は、
前記第1のコマンドスロットの前記対応するデータ・ペイロードの第1の部分と、
前記第2のコマンドスロットの前記対応するデータ・ペイロードの残りの部分とを運ぶように構成されることを特徴とする、請求項2に記載のメモリ・サブシステム。
【請求項6】
前記複数のメモリ書き込みコマンドタイプの1つは、単一のフレームを含み、この単一のフレームは、
前記第1または第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドと、前記残りのコマンドスロットの前記データ・ペイロードの部分とを含むことを特徴とする、請求項2に記載のメモリ・サブシステム。
【請求項7】
前記複数のメモリ書き込みコマンドタイプの1つは、それぞれの符号化を有するそれぞれのメモリ書き込みコマンドを含むことを特徴とする、請求項1に記載のメモリ・サブシステム。
【請求項8】
前記メモリ・トランザクションは、メモリ読み取りコマンドを更に含み、
前記メモリ書き込みコマンドタイプの少なくとも幾つかは、前記残りのコマンドスロットに位置するメモリ読み取りコマンドを含むように構成されることを特徴とする、請求項1に記載のメモリ・サブシステム。
【請求項9】
前記メモリ・トランザクションは、複数のメモリ読み取り−変更−書き込みコマンドタイプを更に含み、各メモリ読み取り−変更−書き込みコマンドタイプは、
前記メモリデバイス内の特定のアドレスから読み取られるデータに遂行され、続いて、前記メモリデバイスの前記特定のアドレスに書き戻されるそれぞれの動作に対応し、かつ、 各メモリ読み取り−変更−書き込みコマンドタイプは、前記メモリインタフェースを通して送られる1つの読み取り−変更−書き込みトランザクションに対応することを特徴とする、請求項1に記載のメモリ・サブシステム。
【請求項10】
前記メモリデバイス内の前記特定のアドレスは、前記制御装置内の記憶装置に格納されるベースアドレスに対するオフセットを使用してアクセスされることを特徴とする、請求項9に記載のメモリ・サブシステム。
【請求項11】
システム・メモリにメモリ・リクエストを始めるように構成されるホストデバイスと、前記ホストデバイスに結合し、メモリ・リクエストを受け取るように、かつ、メモリインタフェースを介して前記メモリデバイスに運ばれるメモリ・トランザクションに前記メモリ・リクエストをフォーマット化するように構成されるメモリコントローラとを含むシステムであって、
前記メモリ・トランザクションは、複数のメモリ書き込みコマンドタイプを含み、
各メモリ書き込みコマンドタイプは、対応するデータ・ペイロードを運ぶためにそれぞれのスケジュールに対応することを特徴とするシステム。
【請求項12】
前記複数のメモリ書き込みコマンドタイプの1つは、
第1のコマンドスロットまたは第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドを含む第1のフレームと、
前記対応するデータ・ペイロードの第1の部分を運ぶ第2のフレームと、
前記対応するデータ・ペイロードの残りの部分を運ぶ第3のフレームと、
を含むことを特徴とする、請求項11に記載のシステム。
【請求項13】
前記複数のメモリ書き込みコマンドタイプの1つは、
第1のコマンドスロットまたは第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドを含む第1のフレームと、第2のフレームとを含み、この第2のフレームは、
前記第1のコマンドスロットの前記対応するデータ・ペイロードの第1の部分と、
前記第2のコマンドスロットの前記対応するデータ・ペイロードの残りの部分とを運ぶことを特徴とする、請求項11に記載のシステム。
【請求項14】
前記複数のメモリ書き込みコマンドタイプの1つは、
第1のコマンドスロットまたは第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドを含む第1のフレームと、複数の後続のフレームとを含み、この複数の後続のフレームの各々は、
前記第1のコマンドスロットの前記対応するデータ・ペイロードの第1の部分と、
前記第2のコマンドスロットの前記対応するデータ・ペイロードの残りの部分とを運ぶように構成されることを特徴とする、請求項11に記載のシステム。
【請求項15】
前記複数のメモリ書き込みコマンドタイプの1つは、単一のフレームを含み、この単一のフレームは、
前記第1のコマンドスロットまたは第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドと、前記残りのコマンドスロットの前記データ・ペイロードの部分とを含むことを特徴とする、請求項11に記載のシステム。
【請求項16】
前記メモリ・トランザクションは、複数のメモリ読み取り−変更−書き込みコマンドタイプを更に含み、各メモリ読み取り−変更−書き込みコマンドタイプは、
前記メモリデバイス内の特定のアドレスから読み取られるデータに遂行され、続いて、前記メモリデバイスの前記特定のアドレスに書き戻されるそれぞれの動作に対応し、かつ、 各メモリ読み取り−変更−書き込みコマンドタイプは、前記メモリインタフェースを通して送られる1つの読み取り−変更−書き込みトランザクションに対応することを特徴とする、請求項11に記載のシステム。
【請求項17】
システムメモリアレイからデータを読み取ったり、システムメモリにデータの書き込むためのメモリ・リクエストを受け取るステップと、
前記システム・メモリに運ばれるメモリ・トランザクションに前記メモリ・リクエストをフォーマット化するステップと、
を含む方法であって、
前記メモリ・トランザクションは、複数のメモリ書き込みコマンドタイプを含み、
各メモリ書き込みコマンドタイプは、対応するデータ・ペイロードを運ぶためのそれぞれのスケジュールに対応することを特徴とする方法。
【請求項18】
データを格納するための1つ以上のメモリアレイを有するメモリデバイスを含むシステム・メモリと、
前記システム・メモリにメモリ・リクエストを始めるように構成されるホストデバイスと、
前記ホストデバイスに結合し、前記メモリ・リクエストを受け取り、メモリ・トランザクションにこのメモリ・リクエストをフォーマット化し、メモリインタフェースを介して前記メモリ・トランザクションを送るように構成されるメモリコントローラと、
前記メモリデバイスに結合し、前記メモリ・トランザクションを受け取ることに応答して前記1つ以上のメモリアレイからデータを読み取ったり、前記1つ以上のメモリアレイに書き込むように構成される制御装置と、
を含み、
前記メモリ・トランザクションは、複数のメモリ書き込みコマンドタイプを含み、
各メモリ書き込みコマンドタイプは、対応するデータ・ペイロードを運ぶためのそれぞれのスケジュールに対応することを特徴とするシステム。
【請求項19】
前記複数のメモリ書き込みコマンドタイプの1つは、
第1のコマンドスロットまたは第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドを含む第1のフレームと、
前記対応するデータ・ペイロードの第1の部分を運ぶ第2のフレームと、
前記対応するデータ・ペイロードの残りの部分を運ぶ第3のフレームと、
を含むことを特徴とする、請求項18に記載のシステム。
【請求項20】
前記複数のメモリ書き込みコマンドタイプの1つは、
第1のコマンドスロットまたは第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドを含む第1のフレームと、第2のフレームとを含み、
この第2のフレームは、
前記第1のコマンドスロットの前記対応するデータ・ペイロードの第1の部分と、
前記第2のコマンドスロットの前記対応するデータ・ペイロードの残りの部分とを運ぶことを特徴とする、請求項18に記載のシステム。
【請求項21】
前記複数のメモリ書き込みコマンドタイプの1つは、
第1のコマンドスロットまたは第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドを含む第1のフレームと、複数の後続のフレームとを含み、
この複数の後続のフレームの各々は、
前記第1のコマンドスロットの前記対応するデータ・ペイロードの第1の部分と、
前記第2のコマンドスロットの前記対応するデータ・ペイロードの残りの部分とを運ぶように構成されることを特徴とする、請求項18に記載のシステム。
【請求項22】
前記複数のメモリ書き込みコマンドタイプの1つは、単一のフレームを含み、
この単一のフレームは、
前記第1のコマンドスロットまたは第2のコマンドスロットの1つに位置する対応するメモリ書き込みコマンドと、
前記残りのコマンドスロットの前記データ・ペイロードの部分とを含むことを特徴とする、請求項18に記載のシステム。
【請求項23】
前記メモリ・トランザクションは、複数のメモリ読み取り−変更−書き込みコマンドタイプを更に含み、各メモリ読み取り−変更−書き込みコマンドタイプは、
前記メモリデバイス内の特定のアドレスから読み取られるデータに遂行され、続いて、前記メモリデバイスの前記特定のアドレスに書き戻されるそれぞれの動作に対応し、かつ、 各メモリ読み取り−変更−書き込みコマンドタイプは、前記メモリインタフェースを通して送られる1つの読み取り−変更−書き込みトランザクションに対応することを特徴とする、請求項18に記載のシステム。
【請求項24】
前記メモリ・トランザクションは、メモリ読み取りコマンドを更に含み、
前記メモリ書き込みコマンドタイプの少なくとも幾つかは、前記残りのコマンドスロットに位置するメモリ読み取りコマンドを含むように構成されることを特徴とする、請求項18に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図4C】
image rotate

【図4D】
image rotate

【図4E】
image rotate

【図5】
image rotate

【図6】
image rotate