(57)【特許請求の範囲】
【請求項１】
メモリ・サブシステムであって、このサブシステムは、
データを格納するための１つ以上のメモリアレイを含むメモリデバイスと、前記メモリデバイスに結合し、メモリインタフェースを介してメモリ・トランザクションを受け取ることに応答して前記１つ以上のメモリアレイからデータを読み取ったり、前記１つ以上のメモリアレイにデータを書き込むように構成される制御装置とを含み、
前記メモリ・トランザクションは、複数のメモリ書き込みコマンドタイプを含み、各メモリ書き込みコマンドタイプは、対応するデータ・ペイロードを運ぶための異なるスケジュールに対応し、そして
前記メモリ・トランザクションは、複数のメモリ読み取り−変更−書き込みコマンドタイプを更に含み、各メモリ読み取り−変更−書き込みコマンドタイプは、
前記メモリデバイス内の特定のアドレスから読み取られるデータに遂行され、続いて、前記メモリデバイスの前記特定のアドレスに書き戻されるそれぞれの動作に対応し、かつ、  各メモリ読み取り−変更−書き込みコマンドタイプは、前記メモリインタフェースを通して送られる１つの読み取り−変更−書き込みトランザクションに対応することを特徴とする、メモリ・サブシステム。
【請求項２】
各メモリ・トランザクションは、第１のコマンドスロットと第２のコマンドスロットを有する少なくとも１つのフレームを含むことを特徴とする、請求項１に記載のメモリ・サブシステム。
【請求項３】
前記複数のメモリ書き込みコマンドタイプの１つは、
前記第１または第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドを含む第１のフレームと、
前記対応するデータ・ペイロードの第１の部分を運ぶ第２のフレームと、
前記対応するデータ・ペイロードの残りの部分を運ぶ第３のフレームと、を含むことを特徴とする、請求項２に記載のメモリ・サブシステム。
【請求項４】
前記複数のメモリ書き込みコマンドタイプの１つは、
前記第１または第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドを含む第１のフレームと、第２のフレームとを含み、
この第２のフレームは、
前記第１のコマンドスロットの前記対応するデータ・ペイロードの第１の部分と、
前記第２のコマンドスロットの前記対応するデータ・ペイロードの残りの部分とを運ぶことを特徴とする、請求項２に記載のメモリ・サブシステム。
【請求項５】
前記複数のメモリ書き込みコマンドタイプの１つは、
前記第１または第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドを含む第１のフレームと、複数の後続のフレームとを含み、
この複数の後続のフレームの各々は、
前記第１のコマンドスロットの前記対応するデータ・ペイロードの第１の部分と、
前記第２のコマンドスロットの前記対応するデータ・ペイロードの残りの部分とを運ぶように構成されることを特徴とする、請求項２に記載のメモリ・サブシステム。
【請求項６】
前記複数のメモリ書き込みコマンドタイプの１つは、単一のフレームを含み、この単一のフレームは、
前記第１または第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドと、残りのコマンドスロットの前記データ・ペイロードの部分とを含むことを特徴とする、請求項２に記載のメモリ・サブシステム。
【請求項７】
前記複数のメモリ書き込みコマンドタイプの１つは、それぞれの符号化を有するそれぞれのメモリ書き込みコマンドを含むことを特徴とする、請求項１に記載のメモリ・サブシステム。
【請求項８】
前記メモリ・トランザクションは、メモリ読み取りコマンドを更に含み、
前記メモリ書き込みコマンドタイプの少なくとも幾つかは、前記メモリ読み取りコマンドを含むコマンドスロットを有するように構成されることを特徴とする、請求項１に記載のメモリ・サブシステム。
【請求項９】
前記メモリデバイス内の前記特定のアドレスは、前記制御装置内の記憶装置に格納されるベースアドレスに対するオフセットを使用してアクセスされることを特徴とする、請求項１に記載のメモリ・サブシステム。
【請求項１０】
システム・メモリにメモリ・リクエストを始めるように構成されるホストデバイスと、前記ホストデバイスに結合し、メモリ・リクエストを受け取るように、かつ、メモリインタフェースを介して前記システム・メモリに運ばれるメモリ・トランザクションに前記メモリ・リクエストをフォーマット化するように構成されるメモリコントローラとを含むシステムであって、
前記メモリ・トランザクションは、複数のメモリ書き込みコマンドタイプを含み、
各メモリ書き込みコマンドタイプは、対応するデータ・ペイロードを運ぶために異なるスケジュールに対応し、そして、
前記メモリ・トランザクションは、複数のメモリ読み取り−変更−書き込みコマンドタイプを更に含み、各メモリ読み取り−変更−書き込みコマンドタイプは、
前記システム・メモリ内の特定のアドレスから読み取られるデータに遂行され、続いて、前記システム・メモリの前記特定のアドレスに書き戻されるそれぞれの動作に対応し、かつ、
各メモリ読み取り−変更−書き込みコマンドタイプは、前記メモリインタフェースを通して前記システム・メモリに送られる１つの読み取り−変更−書き込みトランザクションに対応することを特徴とする、システム。
【請求項１１】
前記複数のメモリ書き込みコマンドタイプの１つは、
第１のコマンドスロットまたは第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドを含む第１のフレームと、
前記対応するデータ・ペイロードの第１の部分を運ぶ第２のフレームと、
前記対応するデータ・ペイロードの残りの部分を運ぶ第３のフレームと、を含むことを特徴とする、請求項１０に記載のシステム。
【請求項１２】
前記複数のメモリ書き込みコマンドタイプの１つは、
第１のコマンドスロットまたは第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドを含む第１のフレームと、第２のフレームとを含み、この第２のフレームは、
前記第１のコマンドスロットの前記対応するデータ・ペイロードの第１の部分と、
前記第２のコマンドスロットの前記対応するデータ・ペイロードの残りの部分とを運ぶことを特徴とする、請求項１０に記載のシステム。
【請求項１３】
前記複数のメモリ書き込みコマンドタイプの１つは、
第１のコマンドスロットまたは第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドを含む第１のフレームと、複数の後続のフレームとを含み、この複数の後続のフレームの各々は、
前記第１のコマンドスロットの前記対応するデータ・ペイロードの第１の部分と、
前記第２のコマンドスロットの前記対応するデータ・ペイロードの残りの部分とを運ぶように構成されることを特徴とする、請求項１０に記載のシステム。
【請求項１４】
前記複数のメモリ書き込みコマンドタイプの１つは、単一のフレームを含み、この単一のフレームは、
前記第１のコマンドスロットまたは第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドと、残りのコマンドスロットの前記データ・ペイロードの部分とを含むことを特徴とする、請求項１０に記載のシステム。
【請求項１５】
システム・メモリからデータを読み取ったり、システム・メモリにデータを書き込むためのメモリ・リクエストを受け取るステップと、
前記システム・メモリに運ばれるメモリ・トランザクションに前記メモリ・リクエストをフォーマット化するステップと、を含む方法であって、
前記メモリ・トランザクションは、複数のメモリ書き込みコマンドタイプを含み、
各メモリ書き込みコマンドタイプは、対応するデータ・ペイロードを運ぶため異なるスケジュールに対応し、そして、
前記メモリ・トランザクションは、複数のメモリ読み取り−変更−書き込みコマンドタイプを更に含み、各メモリ読み取り−変更−書き込みコマンドタイプは、
前記システム・メモリ内の特定のアドレスから読み取られるデータに遂行され、続いて、前記システム・メモリの前記特定のアドレスに書き戻されるそれぞれの動作に対応し、かつ、
各メモリ読み取り−変更−書き込みコマンドタイプは、前記メモリインタフェースを通して送られる１つの読み取り−変更−書き込みトランザクションに対応することを特徴とする、方法。
【請求項１６】
前記複数のメモリ書き込みコマンドタイプの１つは、
第１のコマンドスロットまたは第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドを含む第１のフレームと、
前記対応するデータ・ペイロードの第１の部分を運ぶ第２のフレームと、
前記対応するデータ・ペイロードの残りの部分を運ぶ第３のフレームと、
を含むことを特徴とする、請求項１５に記載の方法。
【請求項１７】
前記複数のメモリ書き込みコマンドタイプの１つは、
第１のコマンドスロットまたは第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドを含む第１のフレームと、第２のフレームとを含み、
この第２のフレームは、
前記第１のコマンドスロットの前記対応するデータ・ペイロードの第１の部分と、
前記第２のコマンドスロットの前記対応するデータ・ペイロードの残りの部分とを運ぶことを特徴とする、請求項１５に記載の方法。
【請求項１８】
前記複数のメモリ書き込みコマンドタイプの１つは、
第１のコマンドスロットまたは第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドを含む第１のフレームと、複数の後続のフレームとを含み、
この複数の後続のフレームの各々は、
前記第１のコマンドスロットの前記対応するデータ・ペイロードの第１の部分と、
前記第２のコマンドスロットの前記対応するデータ・ペイロードの残りの部分とを運ぶように構成されることを特徴とする、請求項１５に記載の方法。
【請求項１９】
前記複数のメモリ書き込みコマンドタイプの１つは、単一のフレームを含み、
この単一のフレームは、
前記第１のコマンドスロットまたは第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドと、
残りのコマンドスロットの前記データ・ペイロードの部分とを含むことを特徴とする、請求項１５に記載の方法。
【請求項２０】
前記メモリ・トランザクションは、メモリ読み取りコマンドを更に含み、
前記メモリ書き込みコマンドタイプの少なくとも幾つかは、前記メモリ読み取りコマンドを含むコマンドスロットを有するように構成されることを特徴とする、請求項１５に記載の方法。
【請求項２１】
前記制御装置は、前記特定のアドレスから前記データを独立して読み取り、前記データにそれぞれの操作を遂行し、そして、前記１つの読み取り−変更−書き込みトランザクションに応える前記メモリデバイスに前記変更されたデータを前記操作によって書き戻すよう構成されることを特徴とする請求項１に記載のメモリ・サブシステム。
【請求項２２】
前記メモリ・トランザクションは、メモリ読み取りコマンドを更に含み、少なくともいくつかの前記メモリ読み取り−変更−書き込みコマンドタイプは、前記メモリ読み取りコマンドを含むコマンドスロットを有するよう構成されることを特徴とする請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムに関し、更に詳しくは、メモリインタフェースのメモリ・コマンド・スケジューリングに関するものである。
【背景技術】
【０００２】
多くのコンピュータシステムにおいては、メモリデバイスは、様々な従来のメモリインタフェースとプロトコルを使用して、読み取られたり書き込まれたりする。例えば、幾つかの従来のプロトコルにおいては、別々のチャネルが、メモリ・コマンド、そのアドレス及びその付随する書き込みデータを送信するために存在する。バンド幅は、それぞれのチャネルに必要なバンド幅に基づいて、これらのチャネルの各々に割り当てられる。この種のインタフェースは、欠点を有する。更に詳しくは、幾つかのチャネルは他のチャネルほどそんなに多くのバンド幅を必要としないので、バンド幅は幾つかのチャネルで減らすことができる。
幾つかの従来のメモリ・プロトコルは、追加的な欠点を有する。例えば、書き込みコマンドのデータは、この書き込みコマンドに対して単に特定の時間に送られるだけである。この種のコマンド及びデータ・スケジューリングは、また、いつ、そして、如何に多くの読み取りコマンド又は他のコマンドが、同時に待機中であり得るかによって、バンド幅を制限する。
【発明の概要】
【０００３】
様々な書き込みコマンド・スケジューリングを含むメモリシステムの各種の実施例が、開示される。一実施例においては、メモリ・サブシステムは、メモリデバイスと制御装置を含む。前記メモリデバイスは、データを格納するための１つ以上のメモリアレイを含む。前記制御装置は、メモリ・トランザクションを受け取ることに応答して前記１つ以上のメモリアレイからデータを読み取ったり、前記１つ以上のメモリアレイにデータを書き込んだりするように構成される。前記メモリ・トランザクションは、幾つかのメモリ書き込みコマンドタイプを含む。しかしながら、各メモリ書き込みコマンドタイプは、対応するデータ・ペイロードを運ぶ（convey）ために異なるスケジュールに対応する。
【０００４】
ある特定の実施においては、各メモリ・トランザクションは、第１のコマンドスロットと第２のコマンドスロットを有する少なくとも１つのフレームを含む。加えて、前記メモリ書き込みコマンドタイプの１つは、第１のフレーム、第２のフレーム及び第３のフレームを含む。前記第１のフレームは、前記第１の又は第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドを含む。前記第２のフレームは、前記対応するデータ・ペイロードの第１部分を運び、前記第３のフレームは、前記対応するデータ・ペイロードの残りの部分を運ぶ。
【０００５】
他の特定の実施においては、前記メモリ書き込みコマンドタイプの１つは、第１のフレームと第２のフレームを含む。前記第１のフレームは、前記第１の又は第２のコマンドスロットの１つに位置する対応するメモリ書き込みコマンドを含む。前記第２のフレームは、前記第１のコマンドスロットの対応するデータ・ペイロードの第１の部分と前記第２のコマンドスロットの対応するデータ・ペイロードの残りの部分を運ぶ。
【０００６】
他の実施例では、システムは、システム・メモリにメモリ・リクエストを開始するように構成されるホストデバイスを含む。このシステムは、また、メモリコントローラを含み、このメモリコントローラは前記メモリ・リクエストを受け取り、このメモリ・リクエストをメモリインタフェースを介してメモリデバイスに運ばれるメモリ・トランザクションにフォーマット化するように構成される。これらのメモリ・トランザクションは、複数のメモリ書き込みコマンドタイプを含む。各メモリ書き込みコマンドタイプは、対応するデータ・ペイロードを運ぶための異なるそれぞれのスケジュールに対応する。
【図面の簡単な説明】
【０００７】
【図１】メモリ・サブシステムを含むシステムの一実施例のブロック図である。
【図２】非特定のメモリ・トランザクションフレームの一実施例を表す線図である。
【図３】メモリ読み取りトランザクションの一実施例を表す線図である。
【図４Ａ】メモリ書き込みトランザクションの一実施例を表す線図である。
【図４Ｂ】５つのフレームを含むバーストメモリ書き込みトランザクションの一実施例を表す図である。
【図４Ｃ】メモリ書き込みトランザクションの他の実施例を表す線図である。
【図４Ｄ】メモリ書き込みトランザクションの他の実施例を表す線図である。
【図４Ｅ】メモリ書き込みトランザクションの他の実施例を表す線図である。
【図５】メモリ読み取り−変更−書き込みトランザクションの一実施例を表す線図である。
【図６】図１に示すシステムの実施例の動作を説明するフローチャートである。
【０００８】
特定の実施例が、図面に例として示され、本願明細書において詳細に記述されている。しかしながら、これらの図面と詳細な説明は、単一の実施例だけが特定の特徴に関して記述されている場合であっても、請求項を開示の特定の実施例に制限することを意図するものではないことを理解すべきである。これに反して、この意図は、この開示の利点を知った当業者にとって明らかである全ての変更、等価物及び代替例をカバーするということである。この開示で提供される特徴の例は、特に明言がない限り、限定というよりは寧ろ説明のためのものである。
【０００９】
本願の全体にわたって使われている、「何々する（何々することができる又は何々でもよい）」という用語は、義務的な意味（即ち、不可欠を意味する）よりは寧ろ自由裁量を許す意味（即ち、可能性があることを意味する）において使用されている。同様に、「何々を含む」「何々を含んでいる」という用語は、何々を包含することを意味するもので、何々に限定するものではない。
【００１０】
様々なユニット、回路又は他のコンポーネントは、タスクを遂行するように「構成される」として、記述されている。この種のコンテキストにおいて、「構成される」という用語は、通常、動作中にタスクを遂行する「回路構成を有する」ことを意味する構造の広い記述である。このように、前記のユニット／回路／コンポーネントが同時にオンでないときでも、このユニット／回路／コンポーネントは、そのタスクを遂行するように構成される。一般に、「構成される」に対応する構造を形成する回路構成は、ハードウエア回路を含む。同様に、様々なユニット／回路／コンポーネントは、記述の便宜上、タスクを遂行するとして記述されている。この種の記述は、「構成される」という字句を含むことと解釈すべきである。
１つ以上のタスクを遂行するように構成されるユニット／回路／コンポーネントを記述することの明白な意図は、そのユニット／回路／コンポーネントに対する米国特許法§１１２、パラグラフ６の解釈を招来しないことにある。
【発明を実施するための形態】
【００１１】
図１を参照すると、図１には、メモリ・サブシステムを含むシステムの一実施例のブロック図が示されている。システム１００は、インタフェース３３を介してメモリ・サブシステム１５に結合される特定用途向け集積回路（ＡＳＩＣ）／ホスト５０を含む。図示の実施例では、ＡＳＩＣ／ホスト５０は、メモリコントローラ２５に結合するルータ２７を含む。メモリ・サブシステム１５は、メモリデバイス２０に結合する制御装置２２を含む。
【００１２】
一実施例においては、ＡＳＩＣ／ホスト５０は、内部の又は外部のソースから、メモリ・リクエストを受け取ることができる。ルータ２７は、メモリコントローラ２５にこのメモリ・リクエストを送り届けることができる。メモリコントローラ２５は、メモリ・サブシステム１５にインタフェース３３で伝送するのに適したメモリ・トランザクションに、このメモリ・リクエストをフォーマット化することができる。
各種の実施例においては、このメモリ・トランザクションは、メモリ書き込みトランザクション、メモリ読み取りトランザクション及びメモリ読み取り−変更−書き込み（ＲＭＷ）トランザクションを含む。図２から図５に示すように、このメモリ・トランザクションは、８０−ビット・フレームにフォーマット化することができる。但し、他の数のビットも可能である。
一実施例においては、このフレームは、トランザクション層で用いることができる。
【００１３】
図４Ａから図４Ｄの記述に関連して更に後述するように、このメモリ書き込みトランザクションは、幾つかの異なるタイプの書き込みコマンドを含むことができる。更に詳しくは、メモリコントローラ２５は、異なるデータ・ペイロード・スケジューリングを有する異なるタイプの書き込みコマンドを用いてインタフェース３３で入手できるバンド幅を利用すべく、このメモリ書き込みトランザクションをフォーマット化するように構成することができる。
【００１４】
図１において、制御装置２２は、メモリコントローラ２５からこのメモリ・トランザクションを受け取り、異なるコマンドオペコード（演算コード）をデコードし、このトランザクションを再フォーマット化して、メモリデバイス２０にそれらを送ることができる。従って、制御装置２２は、データの演算とメモリデバイス２０にデータを送受信することを制御するように構成することができる。図示のように、制御装置２２は、記憶装置２３を含む。一実施例においては、記憶装置２３は、この読み取り−変更−書き込み動作の間、用いることができる幾つかのベースアドレスを格納することができる。
図５と図６の記述に関連して後に詳述するように、このベースアドレスは、特別な書き込みフレームを使用して書き込まれる。加えて、制御装置２２の処理装置２４は、読み取り−変更−書き込み（ＲＭＷ）メモリ・トランザクションの変更フェーズの一部として、メモリデバイス２０から読み取ったデータに幾つかの論理・演算機能を施すように構成される。
【００１５】
各種の実施例においては、特定の実施に応じて、インタフェース３３は、直列相互接続又は並列相互接続である。直列相互接続の実施（例えば３３Ａ）においては、インタフェース３３は、１つ以上の直列チャネルを含む。各チャネルは、１つ以上の一方向の又は双方向の通信レーンを含む。単一の直列レーンを有する実施においては、所与のフレームは、このレーンを通して単一のビットストリームで直列に送られる。
しかしながら、チャネルにつき複数のレーンを含む実施においては、この８０−ビット・フレームは、所与のチャネルにおいてこのレーンの１つ以上を通して送信される。並列相互接続の実施（例えば３３Ｂ）においては、インタフェース３３は幾つかの一方向のコマンド・アドレス信号経路と、並列バスを構成する幾つかの双方向のデータ信号経路とを含み、この８０−ビット・フレームはこの並列バスを通して従来の並列フォーマットで送信される。
なお、インタフェース３３のためのシリアルインタフェースを使用する実施においては、メモリコントローラ２５は、インタフェース３３の異なるチャネルで様々な異なるメモリ・トランザクションを同時に送ることができる。
【００１６】
メモリデバイス２０は、データを格納するための１つ以上のメモリアレイを含むことができる。例えば、特定の一実施においては、メモリデバイス２０の１つ以上のメモリアレイは、１Ｔ−ＳＲＡＭセルを使用して実行することができる。他の実施例においては、任意の相互接続を使用するようにできるが、一実施例においては、メモリデバイス２０と制御装置２２は、並列相互接続を経て結合される。加えて、メモリデバイス２０と制御装置２２は、同一の集積回路（ＩＣ）ダイ上で実行することができる。
更にまた、一実施例においては、メモリ・サブシステム１５とＡＳＩＣ／ホスト５０は、同一のＩＣダイ上で実行することもできる。
【００１７】
更に後述するように、メモリコントローラ２５は、バンド幅を改良するために、メモリ・トランザクションの異なるタイプを利用することができる。更に詳しくは、異なるタイプのメモリ読み取りと書き込みトランザクションとを用いることによって、様々なメモリ書き込みトランザクションとメモリ読み取りトランザクションが、組み合わされ、そして、どれくらいのデータがメモリデバイス２０から読み取られ又はメモリデバイス２０に書き込まれることを必要とするかによって、メモリコントローラ２５は、異なる時間にメモリ読み取りコマンドと書き込みコマンドの異なるタイプを選択することができる。
【００１８】
図２を参照すると、非特定のメモリ・トランザクションフレームの一実施例を表す線図が示されている。このフレーム２００は、幾つかの領域（フィールド）を含む８０−ビット・フレームである。この例示の実施例に示すように、このフレーム２００は、ビット０から５において、巡回冗長コード（ＣＲＣ）領域を含む。ビット６は、肯定応答ビット７に対応し、一方、ビット７は、トランザクション層に対応し、ビット７の符号化１は、このフレームがトランザクション層フレームであることを指し示す。ビット８から４３は１つのコマンドスロットに対応し、ここでは、Ｒ（即ち右）コマンドスロットとして示される。ビット４４から７９は他のコマンドスロットに対応し、ここでは、Ｌ（即ち左）コマンドスロットとして示される。
更に後述するように、このＬとＲコマンドスロットの各々は、どんな情報がそのフレームに又は先行するフレームにあるかによって、読み取りコマンド、書き込みコマンド、ＲＭＷコマンド、又は、データに対応する情報を含むことができる。
各種の実施例においては、あるフレームの１つ又は両方のコマンドスロットが、所与のトランザクションで使われることができる。
【００１９】
図３を参照すると、メモリ読み取りトランザクションの一実施例を表す線図が示されている。読み取りフレーム３００は、読み取りコマンドオペコードとアドレスを含む。図示のように、この読み取りコマンドオペコードとアドレスは、読み取りフレーム３００のＬコマンドスロットに位置付けされる。図示のように、Ｒコマンドスロットは、空である。しかしながら、他の実施例では、２つの読み取りコマンドを、１つのフレームに付与することができる。このように、ＬとＲコマンドスロットは、読み取りコマンドオペコードと関連アドレスとを含む。
加えて、更に後述するように、読み取りコマンドを、１つのコマンドスロット（例えば、Ｌコマンドスロット）に付与し、書き込みコマンドは、他のコマンドスロットに含まれるようにしてもよい。
【００２０】
各種の実施例において、幾つかの異なる読み取りオペコードがある。そして、各々は、異なるタイプの読み取りトランザクションを特定する。例えば、一実施例において、１つのオペコードが、読み取りフレームにおいて特定されるアドレスで、データの読み取り操作を特定することができる。このように、その読み取りオペコードは、特定されたアドレスで読み取り操作を遂行するよう、制御装置２２に指し示すことができる。
他の実施例では、異なる読み取りオペコードは、ある特定の長さのバースト読み取り操作を特定することができ、読み取りトランザクションにおけるアドレスは、このバーストのスターティングアドレスであることができる。
【００２１】
図４Ａを参照すると、２つのフレームを含むメモリ書き込みトランザクションの一実施例を表す線図が示されている。図３の読み取りトランザクションフレームと同様に、書き込みトランザクション４１０の上の方のフレームの第１のビット０−７は、ＣＲＣビットと、トランザクション層表示ビットのような多様な制御ビットを含む。図示の実施例では、このＬコマンドスロットは、空であり、一方、Ｒコマンドスロットは、書き込みコマンドオペコードとアドレスを含む。
しかしながら、下の方のフレームにおいては、前記書き込みコマンドためのデータは、ビット８−７９において送信され、それによって７２のビットのデータ・ペイロードを提供する。前記上の方のフレームはコマンド・フレームと呼ばれ、下の方のフレームはデータフレームと呼ばれることに注意されたい。
このデータフレームにおいては、データ・ペイロードはデータ−Ｈｉとデータ−Ｌｏに分解される。ここで、このデータ−Ｈｉはビット４４−７９（例えば、Ｌコマンドスロット）において送信され、データ−Ｌｏはビット８−４３（例えば、Ｒコマンドスロット）において送信される。
上記したように、コマンド・フレームのＬコマンドスロットは本実施例において空なので、読み取りコマンドがＬコマンドスロットに入れられることに注意されたい。
図示のように、書き込みコマンドＷＲ_０００は、図１の制御装置２２に、この書き込みコマンドに対する全体の７２−ビット・データ・ペイロードが次のフレームにおいて追従するということを指し示す特定のオペコード符号化に対応する。
【００２２】
図４Ｂを参照すると、５つのフレームを含むバーストメモリ書き込みトランザクションの一実施例を表す線図が示されている。図示の実施例では、書き込みトランザクション４２０の一番上のフレームはコマンド・フレームである。図４Ｂのコマンド・フレームは、図４Ａのコマンド・フレームと類似している。しかしながら、この書き込みコマンドのオペコード符号化は、異なる。更に詳しくは、図４Ｂにおいて、この書き込みコマンドオペコードは、ＷＲ_００１としてコード化されている。
一実施例において、このＷＲ_００１オペコードは、図１の制御装置２２に、４つの後続のデータ・ペイロード・フレームが、このコマンド・フレームの後ろにあり、それらの各々は７２−ビット・データ・ペイロードを含むということを指し示す。
４つの後続のデータ・ペイロード・フレームが図４Ｂに示されているが、他の実施例では、異なる数のデータ・ペイロード・フレームがこのメモリコントローラ２５によって発行できることに注意されたい。
図４Ａのコマンド・フレームと同様に、かつ、上述したように、このＬコマンドスロットは空である。しかしながら、このＬコマンドスロットは、例えば、読み取りコマンド又は他のコマンドのような非書き込みコマンドを含むことができる。
一実施例においては、このＬコマンドスロットに読み取りコマンドを有するコマンド・フレームを受信すると、即座に、制御装置２２は、最初にこの読み取りコマンドを処理し、次に、書き込みコマンドを処理する。
【００２３】
図４Ｃを参照すると、３つのフレームを含むメモリ書き込みトランザクションの一実施例を表す線図が示されている。図示の実施例では、書き込みトランザクション４３０のコマンド・フレームは、図４Ｂと図４Ａに示すコマンド・フレームと類似している。しかしながら、書き込みトランザクション４３０においては、この書き込みコマンドオペコードは、ＷＲ_０１０としてコード化されている。
従って、一実施例において、この種の符号化は、制御装置２２に、データ・ペイロードが、次の２つの後続のフレームで一度に１つの３６−ビットの半分語（ハーフワード）として送信されることを指し示す。
しかしながら、図４Ｃに示すように、このデータＨｉ半分語は次の後続のフレームにおいて送信され、一方、データ−Ｌｏ半分語は第２の後続のフレームにおいて送信される。
再びトランザクション４３０の全ての３つのフレームにおいて、Ｌコマンドスロットは、空である。しかしながら、上記の如く、非書き込みコマンドは、これらのＬコマンドスロットの各々に挿入することができる。
従って、メモリコントローラ２５は、例えば、読み取りコマンドのようなコマンドを、これらのフレームの各々に挿入することによって、入手可能な帯域幅を利用することができる。
【００２４】
図４Ｄを参照すると、書き込みトランザクションの他の実施例を表す線図が示されている。図示の実施例では、トランザクション４４０は、１つのフレームを含み、この１つのフレームは、Ｌコマンドスロットに書き込みコマンドオペコードとＲコマンドスロットにデータ・ペイロードを含む。図示のように、この書き込みコマンドは、ＷＲ_０１１としてコード化される。図示の実施例では、このデータ・ペイロードは、半分語として送られる。
更に詳しくは、このデータ−Ｈｉ半分語は、このＲコマンドスロットにおいて送られる。
このように、この書き込みオペコードＷＲ_０１１は、制御装置２２に、７２−ビット・データ・ペイロードの上の半分語だけが現行フレームにおいて送信されているということを指し示す。
【００２５】
図４Ｅを参照すると、書き込みトランザクションの他の実施例を表す線図が示されている。図４Ｄのトランザクション４４０と同様に、図４Ｅのトランザクション４５０は、１つのフレームを含み、この１つのフレームは、Ｌコマンドスロットに書き込みコマンドオペコードとＲコマンドスロットにデータ・ペイロードを含む。しかしながら、図４Ｅにおいては、この書き込みオペコードは、ＷＲ_０１０としてコード化されている。図４Ｅの実施例においては、このデータ・ペイロードも、また、半分語として送られる。
更に詳しくは、このデータ−Ｌｏ半分語は、このＲコマンドスロットにおいて送られる。
このように、書き込みオペコードＷＲ_１００は、制御装置２２に、７２-ビット・データ・ペイロードの下の半分語だけが現行フレームにおいて送信されているということを指し示す。
【００２６】
一実施例においては、要求に応じて、図４Ｄと図４Ｅに示すトランザクションは、一緒に、又は、別々に使うことができる。従って、図４Ａ−図４Ｅに示す前記実施例から、メモリコントローラ２５は、様々な異なるタイプの書き込みコマンドを用いて、入手できるバンド幅を最もよく使用できる。
【００２７】
他の実施例では、半分語の書き込みトランザクションは、追加的な仕方で遂行することができる。更に詳しくは、メモリコントローラ２５は、半分語の書き込みを遂行するために追加的な書き込みオペコードを用いることができる。ここで、書き込みオペコードは、上又は下の半分語のどちらが送られているのかを特定することができる。
一実施例において、この書き込みコマンドはこのＲコマンドスロットにおいて送ることができ、そして、データの半分語は、次のフレームのＲコマンドスロットかＬコマンドスロットのいずれかにおいて送られる。
このような実施例では、書き込みオペコードは、データ・ペイロードがデータ−Ｈｉの半分語なのかそれともデータ−Ｌｏの半分語なのか、及び、データが占めているは、ＲコマンドスロットなのかそれともＬコマンドスロットなのかを特定することができる。
【００２８】
図５を参照すると、１つのフレームを含む読み取り−変更−書き込みトランザクションの実施例を表す線図が示されている。図３の読み取りトランザクションフレームと図４Ａ−図４Ｅの書き込みトランザクションフレームと同様に、ＲＭＷトランザクション５００の上の方のフレームの最初のビット０−７は、ＣＲＣビットとトランザクション層表示ビットのような様々な制御ビットとを含む。図示の実施例では、Ｌコマンドスロットは空であり、一方、ＲコマンドスロットはＲＭＷコマンドオペコードを含む。
しかしながら、アドレス・フィールドにおけるアドレスが、まさに読み取りコマンド・フレームと書き込みコマンド・フレームにおけるアドレスと同様であるというよりは寧ろ、このＲＭＷアドレス指定は異なる。図５に示す実施例において、ビット８から２３は、１６ビットの即値オペランドを含み、ビット２４−２５は２−ビットのワード符号化を含み、ビット２６から３２は７−ビットのオフセットを含み、そして、ビット３３−３５は３−ビットの区画（パーティション）符号化を含む。
【００２９】
図１のシステム１００において、ＲＭＷトランザクションにより、メモリ・データはインタフェース３３を通して送られる最小限の数のメモリ・トランザクションによって変更することができる。例えば、インタフェース３３を通して送られる単一のＲＭＷトランザクションにより、特定のアドレスのデータは変更することができる。
メモリ・アドレスは、図１の記憶装置２３にプレロードされるベースアドレスに関してオフセットとして与えることができる。
【００３０】
一実施例において、このＲＭＷ変更演算は、１６、３２及び６４ビットの算術論理装置（ＡＬＵ）の演算を含む。その演算は飽和加減算とモジュロー２ｎの加減算などの加減算を含む。
加えて、次のような論理演算も、遂行される：論理積（ＡＮＤ）、論理和（ＯＲ）及び排他的論理和（ＸＯＲ）。更に、シフト、比較、増分、減分などのような様々な他の算術又は論理演算が、遂行される。これらの異なるタイプのＲＭＷの演算の各々は、対応するＲＭＷコマンドオペコード符号化を有することができる。
一実施例において、制御装置２２は、他の演算の中で、これらの演算を遂行するために、処理機能２４を含むことができる。
【００３１】
図５を参照すると、一実施例において、このＲＭＷコマンドの各々は、このＲＭＷオペコードによって特定されるメモリデバイス２０のアドレスに格納された１６、３２、又は、６４ビット・オペランドとフレームのビット［２３：８］の１６ビットの即値のオペランド間で演算を遂行する。
一旦このメモリ・オペランドが変更されると、制御装置２２はこのメモリデバイスへこの結果を書き戻す。このメモリ・アドレスは、このオフセット・フィールド（例えば、ビット［３２：２６］）を以前に記憶装置２３にロードされたベースアドレスと組み合わせる（例えば、ＡＤＤ、ＸＯＲなど）ことによって計算することができる。
区画フィールド（例えば、ビット［３５：３３］）は、記憶装置２３内に格納されるこのベースアドレスの１つを選択することができる。このデータのサイズと整列は、このワードフィールドと結合してこのＲＭＷオペコードで決定することができる。
更に詳しくは、１６−ビットＲＭＷコマンドと３２−ビットＲＭＷコマンドについては、ワードフィールドのワード値は、メモリ・オペランドのどちらのビットがデータであるかを決定することができる。一方、６４ビットＲＭＷコマンドについては、このデータが全ての６４のビットであると暗示されるので、このワードフィールドは無視される。
【００３２】
他の実施例では、１つ以上の追加的なＲＭＷオペコードは、演算される様々なデータのサイズを特定することができる。更に詳しくは、１つのＲＭＷオペコードが、メモリ・オペランドの２つの異なる部分に遂行されるべき２つの異なった独立した演算を特定することができる。例えば、１つのそのようなＲＭＷオペコードは、メモリ・オペランドの一部分が４０ビットで、他の部分が２４のビットであることを特定することができる。加えて、この同じＲＭＷオペコードは、制御装置２２が、例えば、２４−ビット部分に対して増分又は減分などの１つの演算を、及び、例えば、この４０−ビット部分に対してＸＯＲのような他の演算をフレームの１６ビット即値オペランドによって、遂行するということを特定することができる。
かくして、１つのＲＭＷオペコードについては、２つの独立した演算は、メモリ・オペランドからの（同一又は異なるサイズの）データの２つの異なる部分に遂行することができる。メモリ・オペランドに遂行できる上述した任意の演算は、両方の部分に遂行することができることに注意されたい。
【００３３】
上記したように、記憶装置２３は、幾つかの記憶ロケーションに幾つかの書き込みベースアドレスを保持することができる。メモリコントローラ２５は、図３−図５に示すフレームと類似していてよい書き込みベース・コマンド・フレームを用いてメモリベースアドレスを記憶装置２３にロードすることができる。
更に詳しくは、一実施例において、書き込みベース・コマンド・フレームは、標準フレームのいずれかのコマンドスロットに書き込みベース・コマンドを含むことができる。この書き込みベース・コマンドは、書き込みベースオペコード、ベースアドレス、及び、区画を含むことができる。書き込みベースフレームを受けると、即座に、制御ユニット２２はフレームのベースアドレスを記憶ロケーションの１つに書き込む。
【００３４】
図６を参照すると、図１のシステムの実施例の動作を記載するフロー図が示されている。ブロック６０１に始まって、メモリコントローラ２５は、ルータ２７からメモリ・リクエストを受け取る。メモリコントローラ２５は、このメモリ・リクエストをメモリ・トランザクションにフォーマット化する（ブロック６０３）。上述の通り、入手できるバンド幅とその他のファクタに応じて、メモリコントローラ２５は、メモリデバイス２０にデータを書き込むためにメモリ書き込みコマンドのいずれかを使用することができる。
更に詳しくは、前出の図に示し、上述したように、例えば、未決の幾つかの読み取りリクエストと書き込みリクエストがあるならば、メモリコントローラ２５は、同じコマンド・フレームに読み取りコマンドを含む能力のほかに、書き込みコマンドのスケジューリング可変性（variability）を利用することができる。代わりに、データのバーストがあるならば、メモリコントローラ２５はこのメモリを図２Ｂに示すメモリ書き込みバースト・コマンドを利用することができる。
上述の通り、１つ以上の書き込み、読み取り、及び／又は、ＲＭＷフレームはトランザクション層でフォーマット化される。
【００３５】
一旦このメモリ・トランザクションがフォーマット化されると、メモリコントローラ２５はインタフェース３３を介してメモリ・サブシステム１５にこのメモリ・トランザクションを送信することができる（ブロック６０５）。このフォーマット化されたフレームは、インタフェース３３にある物理層を介して送られる。
【００３６】
このメモリ・トランザクションコマンドを受け取ると、制御装置２２は、フレームの各々にあるコマンドをデコードする（ブロック６０７）。一旦コマンドがデコードされると、制御装置２２はこのコマンドを再フォーマット化し、それをメモリデバイス２０に送る（ブロック６０９）。更に詳しくは、書き込みコマンドの場合は、制御装置２２はメモリデバイス２０にあるアドレスにデータを送ることができる。
読み取りコマンドの場合は、制御装置はメモリデバイス２０に読み取り動作を遂行することができ、要求されたデータがメモリデバイス２０によって復帰されると、制御装置２２はメモリコントローラ２５にこの要求データを返すことができる。
しかしながら、ＲＭＷコマンドの場合は、制御装置２２は、ＲＭＷフレームの情報から制御装置２２によって算出されるような特定のメモリ・アドレスの読み取り動作を遂行することができる。制御装置２２は、ＲＭＷオペコードにおいて特定される読み取りデータを変更することができて、次に、メモリデバイス２０におけるアドレスにこの変更されたデータを書き戻すことができる。
【００３７】
上述の実施例をかなり詳細に記述したが、一旦、上記の開示を十分に理解すると、多数の変形及び変更は、当業者にとって明らかになる。
本願請求項はこの種の変形及び変更を全て包含すると解釈されることが意図されている。
【符号の説明】
【００３８】
１５：メモリ・サブシステム
２０：メモリデバイス
２２：制御装置
２３：記憶装置
２４：処理装置
２５：メモリコントローラ
２７：ルータ
３３：インタフェース
３３Ａ：直列相互接続
３３Ｂ：並列相互接続
５０：特定用途向け集積回路／ホスト
１００：システム
２００：フレーム
３００：読み取りトランザクションフレーム
４１０：書き込みトランザクションフレーム
４２０：書き込みトランザクションフレーム
４３０：書き込みトランザクションフレーム
４４０：書き込みトランザクションフレーム
４５０：書き込みトランザクションフレーム
５００：読み取り−変更−書き込みトランザクションフレーム
Memory Transactions：メモリ・トランザクション
Memory Requests：メモリ・リクエスト
Ｌ Command Slot：左コマンドスロット
Ｒ Command Slot：右コマンドスロット
Read Opecode：読み取りコマンドオペコード（演算コード）
Address：アドレス
Data-Hi：データ−Ｈｉ
Data-Lo：データ−Ｌｏ
RMW Opecode：読み取り−変更−書き込みコマンドオペコード
Partition：区画符号化
Offset：オフセット
Word：ワード符号化
Immediate：即値オペランド
６０１：メモリ・リクエストを受ける
６０３：メモリ・リクエストを複数のメモリ書き込みコマンドタイプを
含むメモリ・トランザクションにフォーマット化する
６０５：メモリ・トランザクションを送る
６０７：メモリ・トランザクションコマンドを復号化する
６０９：メモリデバイスにメモリ操作を送る
【図１】
0005892838.tif 000002
【図２】
0005892838.tif 000003
【図３】
0005892838.tif 000004
【図４Ａ】
0005892838.tif 000005
【図４Ｂ】
0005892838.tif 000006
【図４Ｃ】
0005892838.tif 000007
【図４Ｄ】
0005892838.tif 000008
【図４Ｅ】
0005892838.tif 000009
【図５】
0005892838.tif 000010
【図６】
0005892838.tif 000011