JP6139010B2 - デバイス - Google Patents

デバイス Download PDF

Info

Publication number
JP6139010B2
JP6139010B2 JP2016500074A JP2016500074A JP6139010B2 JP 6139010 B2 JP6139010 B2 JP 6139010B2 JP 2016500074 A JP2016500074 A JP 2016500074A JP 2016500074 A JP2016500074 A JP 2016500074A JP 6139010 B2 JP6139010 B2 JP 6139010B2
Authority
JP
Japan
Prior art keywords
pulse width
memory module
request signal
controller
bus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2016500074A
Other languages
English (en)
Other versions
JP2016514320A (ja
Inventor
ナーレ、ビル
シー. ジャスパー、ジョナサン
シー. ジャスパー、ジョナサン
ブイ. ラヴレース、ジョン
ブイ. ラヴレース、ジョン
ケー. ナチムス、ムルガサミー
ケー. ナチムス、ムルガサミー
ヂュー、ジュン
エム. コーク、トゥアン
エム. コーク、トゥアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2016514320A publication Critical patent/JP2016514320A/ja
Application granted granted Critical
Publication of JP6139010B2 publication Critical patent/JP6139010B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1678Details of memory controller using bus width
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4243Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40618Refresh operations over multiple banks or interleaving
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/023Detection or location of defective auxiliary circuits, e.g. defective refresh counters in clock generator or timing circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • G11C5/148Details of power up or power down circuits, standby circuits or recovery circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1003Interface circuits for daisy chain or ring bus memory arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1063Control signal output circuits, e.g. status or busy flags, feedback command signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • G11C7/222Clock generating, synchronizing or distributing circuits within memory device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/253Centralized memory
    • G06F2212/2532Centralized memory comprising a plurality of modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Memory System (AREA)
  • Dram (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本明細書に記載された複数の実施形態は、概して、単一のチャネルまたはバス上で、ホストメモリコントローラが、当該チャネルおよびホストメモリコントローラに連結された複数のスロットと互換性のあるピンレイアウトを有する複数のメモリモジュールと通信するメモリシステムに関する。ホストメモリコントローラは、チャネルに連結された複数のメモリモジュールによって使用されるプロトコル、例えば、Double Data Rate Third Generation(DDR3)プロトコルをサポートする。複数の異なるタイプのDual In−Line Memory Module(DIMM)の場合のように、DIMM等の複数のメモリモジュールがバス上にデータを出力するにあたり複数の異なるタイミングを有する場合、ホストメモリコントローラは、異なる複数の連結されたDIMMの間で、それらのタイミングの差異に対し、調整する必要がある。ホストメモリコントローラは、複数の単一のサイクルコマンドを通信することができる。
バスを使用する前に、ホストメモリコントローラは、複数のメモリモジュールを複数の動作のために構成する必要がある。DDR3プロトコルでは、ホストメモリコントローラは、モードレジスタセット(MRS)コマンドを使用して、メモリモジュールパッケージ上の複数のダイナミックランダムアクセスメモリ(DRAM)チップ等の複数のメモリチップ内の最大8つのモードレジスタをプログラムできる。MRSコマンドは、メモリチップ上のモードレジスタを識別し、データが反転されたかどうかを示す反転ビットを含む。バスが整備された後、次にホストメモリコントローラは、リードおよびライトコマンドのために、およびデータを転送するために、バスを使用し得る。
複数のコマンドは、1コマンドにつき、1ビット/レーンで送信され得る。例えば、1Nタイミング等の通常のタイミングモード中、チップセレクト信号が、コマンドのサイクルでバスに配置され、選択されたメモリモジュールに対し、コマンドを受け取るようにさせる。2Nタイミング等の複数の高速動作中、コマンドが追加のセットアップタイムを許容する1クロックサイクル前に、ホストメモリコントローラは、バス上にチップセレクト信号を配置する。
メモリモジュール内の複数の内部クロック信号を管理すべく、クロックイネーブル信号が使用され得る。クロックイネーブル(CKE)ハイ信号は、複数の内部クロック信号をアクティブ化し、かつ、リードおよびライトアクセス中、ハイに維持される。メモリモジュールに対するCKEロー信号は、複数の内部クロック信号、複数のデバイス入力バッファおよび複数の出力ドライバを非アクティブ化する。複数のCKEロー信号を採用することで、パワーダウンさせ、複数の動作をリフレッシュさせる。
ホストメモリコントローラからメモリモジュールへ、複数のライトが通信される場合、メモリモジュールにおける複数のライトは、複数のメモリチップに直接書き込まれ得る。しかしながら、ライトバッファを有する複数のメモリモジュール内では、クレジットシステムが実装可能である。そこでは、ホストメモリコントローラに、ライトクレジットの最大数が割り当てられ、複数の利用可能なライトクレジットが存在しなければ、ライトコマンドを送信できない。ライトコマンドを送信すると、複数のライトクレジットはデクリメントされる。各ライトが、クレジットをホストメモリコントローラに戻すのを完了したとき、メモリモジュールは、バスを介してメッセージを送信する。それにより、メッセージが受信されると、ライトクレジットカウンタをインクリメントする。
リードおよびライトリクエストの送信時、複雑なパターンを通信するのを回避すべく、現行の複数のホストメモリコントローラは、バス上でエラーを引き起こし得る、複雑なパターンを繰り返し生成する確率を減らすために、データをスクランブルし得る。ライトアドレスを備える、スクランブルされたライトデータを受信すると、メモリモジュールは、スクランブルされたライトデータをライトアドレスに格納する。リードリクエストに応答して、スクランブルされたデータが格納され、バスを介してホストメモリコントローラに送信され、デスクランブルされ、使用される。
複数の添付図面を参照しつつ、例示目的で複数の実施形態が記載される。図面は正確な縮尺率ではなく、複数の同一の参照番号は、複数の同様の要素を指す。
メモリシステムを有するシステムに係る一実施形態を示す。 メモリモジュールの一実施形態を示す。 メモリシステムのピンアウト設計に係る一実施形態を示す。 ファンクションをエンコーディングするリクエスト信号を生成および処理する複数の動作に係る一実施形態を示す。 メモリモジュール内の出力に対するタイミング調整を決定する複数の動作に係る一実施形態を示す。 モードレジスタセット(MRS)コマンドの一実施形態を示す。 MRSコマンドを生成および処理するための複数の動作に係る一実施形態を示す。 2パートで、コマンドを出力するためのタイミングチャートを提供する。 2パートで、コマンドを出力するためのタイミングチャートを提供する。 複数のクロックサイクルで送信されるコマンドを生成および受け取るための複数の動作に係る実施形態を示す。 複数のクロックサイクルで送信されるコマンドを生成および受け取るための複数の動作に係る実施形態を示す。 メモリモジュールコントローラに対し、サポートされるインターフェース構成を示すための複数の動作に係る一実施形態を示す。 メモリモジュールコントローラが、サポートされるインターフェース構成に基づいて、複数のアドレスビットを使用するための複数の動作に係る一実施形態を示す。 複数の電力管理動作を示す複数のコマンドを使用するための複数の動作に係る一実施形態を示す。 複数のライトコマンドを送信すべく、複数のライトクレジットを使用し、かつ、ホストメモリコントローラに、複数のライトクレジットを戻す、複数の動作に係る一実施形態を示す。 ライトクレジットカウンタを備えたリードデータパケットを生成するための複数の動作に係る一実施形態を示す。 リードデータパケットを処理するための複数の動作に係る一実施形態を示す。 エラー信号を使用して、複数のエラー動作に係るフローを処理するための複数の動作に係る一実施形態を示す。 ライトエラーを処理するための複数の動作に係る一実施形態を示す。 バスを介して送信されたデータをスクランブルおよびデスクランブルするための複数の動作に係る一実施形態を示す。 メモリモジュール内のライトデータをデスクランブルするための複数の動作に係る一実施形態を示す。 バスインターフェース構成を示すパラメータを設定するための複数の動作に係る一実施形態を示す。 転送リクエストを処理すべく、バスインターフェース構成を選択するための動作に係る一実施形態を示す。
以下の詳細な説明には、本願発明のより完全な理解を提供すべく、多くの具体的な詳細が記載されている。それらは例えば、複数のロジック実装、複数の演算コード、複数のオペランドを指定する手段、リソースパーティショニング/共有/重複の複数の実装、複数のシステムコンポーネントに係る複数のタイプおよび相互関係、およびロジックパーティショニング/統合の複数の選択肢である。しかしながら、本発明は、これらの具体的な詳細がなくても実施可能であることは当業者にとって明白である。他の複数の例において、本発明を不明確にするのを回避すべく、複数の制御構造、複数のゲートレベル回路、および複数の完全なソフトウェア命令シーケンスは、詳細に示されていない。詳細な説明を読んだ当業者であれば、何度も実験を繰り返さなくても、適切な機能を実装できるであろう。
本明細書における「一実施形態」、「ある実施形態」、「例示的な実施形態」等の複数の記載は、記載された実施形態が、特定の機能、構造または特性を含む場合があるが、各実施形態が必ずしもその特定の機能、構造または特性を含むものではないことを示す。さらに、そのような複数の用語は、必ずしも同一の実施形態を意味するものではない。
以下の詳細な説明および特許請求の範囲において、用語「連結された」および「接続された」が、それらの派生語とともに使用され得る。これらの用語は、相互に同義語であることを意図するものではないことが理解されるべきである。「連結された」は、互いに直接物理的または電気的に接触していてもしていなくてもよい、2または2より多い要素が、互いに連携または対話することを示すために使用される。「接続された」は、互いに連結された2または2より多い要素の間で通信を確立させることを示すのに用いられる。複数の特定の実施形態は、複数のメモリデバイスの複数の電子アセンブリに関する。複数の実施形態は、複数の電子アセンブリを形成するための複数のデバイスおよび方法の両方を含む。
図1は、通常マザーボードに搭載される、1または複数のプロセッサ4、ホストメモリコントローラ6および複数のメモリモジュール8a、8bを含む、コンピューティングシステム2に係る一実施形態を示す。複数のプロセッサ4は、中央処理装置、マルチコアプロセッサを備えてよい。ホストメモリコントローラ6は、複数のプロセッサ4からの複数のメモリアクセスリクエストに応答して、チャネル、バスインターフェース等とも言われるバス10を介して、複数のメモリモジュール8a、8bと通信する。ここでは、メモリモジュール8a、8bの両方は、別個かつ独立的に、同一のバス10に接続されている。ホストメモリコントローラ6は、リクエストカウンタ7、ライトクレジットカウンタ9、およびスクランブルシード値11を含んでよい。リクエストカウンタ7は、リクエストカウンタ7で示されるリクエスト数に基づいて、後に複数のグラントを発行する際に使用する、グラントのためのリクエスト信号を受信するとき、インクリメントされる。ライトクレジットカウンタ9は、メモリモジュール8a、8bの1つに、複数のライトリクエストが送信されることを許可する、多数または複数のクレジットを示す。スクランブルシード値11は、メモリモジュール8a、8bの1つからのリードリクエストされたデータをデスクランブルするのに使用される。
図1の実施形態において、メモリモジュール8a、8bは、システム2のマザーボード上の複数のスロットまたはメモリソケットに搭載される。メモリモジュール8a、8bは、マザーボード上の複数のメモリスロット内のピン配置と互換性のあるピン配置を有する、同一または異なるタイプの複数のメモリモジュールを備えてよい。さらに、複数のメモリモジュールは、Double Data Rate Fourth Generation(DDR4)プロトコルおよび追加の複数のプロトコル等の、同一または異なる複数のメモリプロトコルをサポートしてよい。2つのメモリモジュール8a、8bのみが示されているが、複数のメモリモジュールが存在してよい。
メモリモジュール8a、8bの各々は、データを格納するためのメモリチップ12a、14a、16a、18aおよび12b、14b、16b、18bをそれぞれ、メモリモジュールの一方または両方の側に含む。メモリモジュール8a、8bパッケージの一方または両方の側に配置される、複数のDRAMチップ等の複数のメモリチップは、プロセッサ4によって使用されているデータを格納する複数のストレージ要素を備える。
各メモリモジュール8a、8bは、ホストメモリコントローラ6とのメモリ管理および複数のアクセス動作を調整するためのメモリモジュールコントローラ20a、20bを含んでよい。ホストメモリコントローラ6は、バス10に接続されたメモリモジュール8a、8bに対する、複数のリードおよびライト動作並びに複数のメモリ管理動作を管理するため、およびプロセッサ4をメモリモジュール8a、8bに対しやり取りさせるためのロジックを含む。ホストメモリコントローラ6は、プロセッサ4と統合されてよく、あるいはシステム2のマザーボード上のプロセッサ4とは分離したロジックに実装されてよい。
異なるタイプのメモリモジュール8a、8bが複数のメモリソケット内のピンアーキテクチャと互換性がある限り、システム2のマザーボードは、異なる複数のタイプのメモリチップと互換性のあるメモリソケットを含んでよく、異なる複数のタイプのメモリプロトコルをサポートする異なる複数のタイプのメモリデバイスをサポートする異なるタイプのメモリモジュール8a、8bを許容する。
一実施形態において、メモリモジュール8a、8bは、同一または異なるタイプのダイナミックランダムアクセスメモリ(DRAM)を備えてよい。一実施形態において、メモリモジュール8a、8bは、アンバッファードDIMM(UDIMM)、Load Reduced Dual−inline Memory Module(LRDIMM)、Small Outline Dual In−line Memory Module(SODIMM)等のDual In−Line Memory Module(DIMM)を備えてよい。メモリモジュール8a、8bは、様々な形態のメモリを実装してよく、限定はされないがそれらには、NAND型(フラッシュ)メモリ、強誘電体RAM(FeTRAM)、ナノワイヤーベースの不揮発性メモリ、相変化メモリ(PCM)等の3次元(3D)クロスポイントメモリ、メモリスタ技術を組み込むメモリ、磁気抵抗ランダムアクセスメモリ(MRAM)、Spin Transfer Torque(STT)−MRAM等を含む。
特定の複数の実施形態において、複数の異なるタイプのメモリモジュール8a、8bが搭載され、バス10に接続され得るので、メモリモジュール8a、8bは、複数の異なるプロトコルをサポートしてよい。例えば、メモリモジュール8aは、Double Data Rate Fourth Generation(DDR4)Static DRAM(SDRAM)プロトコルに適合するタイプのDIMMを備えてよく、メモリモジュール8bは、同一のバス10上で、DDR4プロトコルを使用するメモリモジュール8aと互換性のある異なるプロトコルを使用してよい。複数の代替的および異なるプロトコルも、メモリモジュール8a、8b内で使用および実装されてよい。
メモリモジュール8a、8bが、複数の異なるDRAMプロトコルをサポートする場合、メモリモジュール8aに特有の第1のプロトコルとしてDDR4等、およびメモリモジュール8bに特有の第2のメモリプロトコルといったように、ホストメモリコントローラ6は複数の異なるプロトコルを使用して、バス10を介して通信するよう構成される。メモリモジュール8aに対するリードリクエストおよび管理リクエストは、第1のメモリプロトコルを用いて、第2のメモリモジュール8bに対しては第2のメモリプロトコルを用いて実装される。
図2は、メモリモジュール8a、8b等のメモリモジュール8の一実施形態のさらなる詳細を提供するものであり、複数のメモリモジュール動作およびホストメモリコントローラ6との複数の対話を実行するメモリモジュールコントローラ20を含むものとして示される。複数の特定の実装において、複数のメモリモジュールのうち一方、例えば8bは、図2のメモリモジュールを含んでよく、8a等の他方のメモリモジュール、例えば、DDR4規格に適合するメモリモジュール8a等はメモリモジュールコントローラ20を含まなくてよい。そのような複数の実施形態においては、RDIMMまたはバッファの場合のように、LRDIMMの場合のように、メモリモジュール8aはレジスタを含んでよい。
メモリモジュール8は、メモリモジュールコントローラ内の複数のモードレジスタ22、リードバッファ24、電力管理動作レジスタ26、ライトバッファ28、ライトクレジットカウンタ30、スクランブルシード値32、およびインターフェースパラメータ34を含んでよい。複数のモードレジスタ22は、メモリモジュールコントローラ内で、モードレジスタセット(MRS)コマンドを使用して構成可能なデータを有する。リードバッファ24は、リードコマンドに応答して、ホストメモリコントローラ6に戻されているリードデータをバッファするためのものである。電力管理動作レジスタ26は、実行すべき複数の電力管理動作を示すものである。ライトバッファ28は、メモリチップ12、14、16、18に書き込まれる前にライトデータをバッファするためのものである。ライトクレジットカウンタ30は、ホストメモリコントローラ6に戻す多数のライトクレジットを示すものである。スクランブルシード値32は、バス10を介してホストメモリコントローラ6に転送されるリードデータをランダム化するのに使用されるものである。インターフェースパラメータ34は、バス10のサポートされるインターフェース構成を識別するものである。複数のバッファおよび複数のパラメータ24、26、28、30、32および34は、メモリモジュールコントローラ20内、あるいはメモリモジュール8内のメモリモジュールコントローラ20の外部にある回路内に実装されてよい。特定の複数のパラメータ26、30、32および34はモードレジスタ22内に実装されてよい。
特定の複数の実施形態において、メモリモジュール8aは、メモリモジュール8bを含むファーメモリのためのキャッシングレイヤとして構成されるニアメモリを備えてよい。そのような構成では、ニアメモリモジュール8aは、特定のファーメモリモジュール8bがキャッシュするよう設計された、最も頻繁にアクセスされる複数のシステムメモリアドレスのアクセス時間を減らす効果を有するべきである。複数のニアメモリデバイスは、それらの対応するファーメモリのためのダイレクトマップ方式のキャッシュとして構成されてよい。
メモリモジュールコントローラ20およびホストメモリコントローラ6の記載された複数の実施形態は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)等のハードウェアロジックにエンコードされてよい。
本願発明の複数の実施形態に係る複数の構成要素は、複数の機械実行可能命令を格納する機械可読媒体としても提供され得る。機械可読媒体は、限定はされないが、フラッシュメモリ、複数の光ディスク、リード専用コンパクトディスク(CD−ROM)、Digital Versatile/Video Disk(DVD)ROM、ランダムアクセスメモリ(RAM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、磁気若しくは光カード、伝播媒体、または複数の電子的命令を格納するのに好適な他のタイプの機械可読媒体を含んでよい。例えば、本発明の複数の実施形態は、リモートコンピュータ(サーバ等)から、リクエストするコンピュータ(クライアント等)に、ネットワーク送信を介して転送され得る、コンピュータプログラムとしてダウンロードされてよい。
図3は、ホストメモリコントローラ6、複数のバス10のラインおよびメモリモジュール8a、8bを有するメモリモジュール8a、8b上の複数のピンの配置を示す。このような複数のピン指定については、以下に記載されるか、または当技術分野において既知である。
[リクエスト信号内の複数のファンクションのエンコーディング]
特定の複数の実施形態において、ホストメモリコントローラ6がリードコマンドの一部として戻すべきデータがリードバッファ24内にあることを示すべく、メモリモジュールコントローラ20は、REQ#50等のリクエスト信号をホストメモリコントローラ6に送信してよい。リクエスト信号は、図3のピンアウトダイアグラムに示される、REQ#クロックイネーブル(CKE)信号50を備えてよい。メモリモジュールコントローラ18は、ホストメモリコントローラ6による検出を保証すべく、最小パルス幅でリクエスト信号を送信してよく、これは、複数の特定の実装において、2クロックサイクルを備えてよい。メモリモジュールコントローラ20はさらに、ホストメモリコントローラ6が実行する追加のファンクションをリクエスト信号内にエンコードしてよい。単一の信号内における動作数および通信される情報を最大化すべく、複数の追加のファンクションをリクエスト信号内にエンコーディングすることによって、複数のファンクションが1つの信号内で示され得る。
図4は、複数の追加のファンクションをホストメモリコントローラ6に通信すべくリクエスト信号を使用する、ホストメモリコントローラ6およびメモリモジュールコントローラ20によって実行される複数の動作の一実施形態を示す。リードバッファ24からホストメモリコントローラ6へデータを転送し返す、リードコマンドの一部であり得る、リクエスト信号を生成する動作の初期化時(ブロック100)において、メモリモジュールコントローラ20はリクエスト信号とともに含むファンクションを決定する(ブロック102において)。そのようなファンクションは、特定のエラー条件若しくは割り込み若しくは他の複数のファンクションといった、ホストメモリコントローラ6が実行すべき複数の追加の動作を示してよい。次に、メモリモジュールコントローラ20は、決定されたファンクションを示す、またはエンコードするために使用されるパルス幅を決定する(ブロック104において)。例えば、ホストメモリコントローラ6によるリクエスト信号の検出を保証すべく、最小パルス幅に等しいパルス幅が使用され、第1のファンクションを示すまたはエンコードしてよく、最小パルス幅より大きい追加の複数のパルス幅が使用され、複数の追加のファンクションを示してよい。例えば、検出を保証するための最小パルス幅が2クロックの場合、リクエスト信号のためのこの最小パルス幅は、1つのファンクションを示してよく、パルス幅6、10、14は、さらなる追加の複数の異なるファンクションを示してよい。パルス幅14は、壊滅的な故障を示してよい。さらに、ホストメモリコントローラ6によるパルス幅の適切な検出を保証すべく、複数の異なるファンクションに関連付けられたリクエスト信号のための複数の異なるパルス幅は、特定の複数の実施形態において、3サイクルのように、クロックサイクルの最小数で分割されてよい。メモリモジュールコントローラ20は、ホストメモリコントローラ6に送信するための、決定されたパルス幅を有するリクエスト信号を生成する(ブロック106において)。
2クロック等の最小または第1のパルス幅を有するピン50上のリクエスト信号REQ0#を検出すると(ブロック108において)、ホストメモリコントローラ6は、リクエスト信号を送信するメモリモジュール8bに対し送信される必要のある多数のグラント信号を示すリクエストカウンタ7をインクリメントする(ブロック110において)。リクエストカウンタ7をインクリメント後、ホストメモリコントローラ6は、リクエストカウンタ7内で示される複数のリクエストが、異なる複数のランダムな時間においてバッチ処理されるよう、複数のグラントリクエストを発行するためのバス10、すなわちデータバス上のスロットが利用可能になるまで待機してよい。グラント信号を受信すると、メモリモジュールコントローラ20は、ホストメモリコントローラ6からのリードリクエストに応答して、収集およびバッファされたデータ等、リードバッファ24内にあるデータをホストメモリコントローラ6に送信(ブロック112において)する。
リクエスト信号50の最小または第1のパルス幅を決定後、リクエスト信号50が測定された最小パルス幅を超えて継続しない場合(ブロック114において)、制御は終了する。あるいは、(ブロック116において)測定されたリクエスト信号が6クロック等の第2のパルス幅を超えて継続しない場合、ホストメモリコントローラ6は、その第2のパルス幅に関連付けられた第2のファンクションを実行してよい(ブロック118において)。あるいは、(ブロック120において)リクエスト信号50が測定された10クロック等の第3のパルス幅を超えて継続しない場合、ホストメモリコントローラ6は、その第3のパルス幅に関連付けられた第3のファンクションを実行してよい(ブロック122において)。パルス幅が継続し、14クロック等の第4のパルス幅が測定される場合(ブロック124において)、ホストメモリコントローラ6は、ホストメモリコントローラ6が実行すべき壊滅的なエラー処理を実行してよい(ブロック126において)。
記載された複数の実施形態は、リクエスト信号の4つの異なるパルス幅に対する4つのファンクションに関するものであるが、複数の特定の実装においては、4つより多いまたは少ないパルス幅によって示される4つより多いまたは少ないファンクションがあり得る。さらに、1つのパルス幅は、実行すべき一連の複数のファンクションを示してよい。
図4の複数の動作において、初期のリクエストグラントファンクションを超える複数のファンクションは、そのパルス幅がそれらの追加のファンクションに関連付けられたパルス幅を超えて継続しないと決定された後に、処理されるのみである。代替の実施形態において、そのパルス幅がその測定されたパルス幅を超えて継続する場合であっても、各追加のファンクションは、そのファンクションに関連付けられたパルス幅を測定したときに実行してよい。よって、パルス幅の複数の測定値がトリガパルス幅を超えるとき、各ファンクションが実行される。
図4の記載された実施形態では、ホストメモリコントローラ6による、パルス幅の検出を保証する最小クロック数によって分割され得る、メモリモジュールコントローラ用の複数の異なるパルス幅を使用することによって、複数の異なるファンクションがメモリモジュールコントローラ20によってリクエスト信号にエンコードされてよい。このように、単一のリクエスト信号で、メモリモジュールコントローラ20は、リードバッファ24からのデータを戻すためのリクエスト等のリクエスト信号、および複数の異なるファンクションの1つをシグナリングしてよい。
[第2のメモリモジュールとの複数のコンポーネントの差異に基づいて、第1のメモリモジュールからの出力タイミングを調整して、第2のメモリモジュールからのタイミングを一致させる]
複数の特定の実装において、メモリモジュール8aおよび8bは、複数の異なるコンポーネントを有する、複数の異なるタイプのメモリモジュールを備えてよい。例えば、メモリモジュール8aは、メモリモジュール8b内に含まれない複数のレジスタおよび複数のデータバッファを含んでも含まなくてもよく、逆も同様である。メモリモジュール8a、8bは複数の異なるメモリプロトコルをサポートしてよい。記載された複数の実施形態は、一方のメモリモジュール、例えば8bがそのタイミングを調整して、他方のメモリモジュール、例えば8aのタイミングに一致させる複数の技術を提供する。その結果、ホストメモリコントローラ6は、複数の異なるタイプのDIMM等の複数の異なるメモリモジュールからの複数の異なるタイミングに調整する必要がない。メモリモジュールコントローラ20a、20bに複数のタイミング調整を処理させることによって、ホストメモリコントローラにおける過度の複数のターンアラウンドサイクルおよび性能損失が回避される。
図5は、メモリモジュールコントローラ20b等のメモリモジュールコントローラ20によって実行される、バス10上の他方のメモリモジュール8a、8bとの複数のコンポーネントの差異に基づいて、出力タイミングを調整する、複数の動作に係る一実施形態を示す。データバッファ24からのデータを出力する動作を初期化すると(ブロック200において)、メモリモジュールコントローラ20bは、チャネル上のメモリモジュール8a、8bのうちの少なくとも1つにある、少なくとも1つのコンポーネントに基づいて、タイミング調整を決定する(ブロック202において)。ブロック204〜208は、タイミング調整を決定するための複数の動作に係る一実施形態を提供する。メモリモジュールコントローラ20bは、他方の第2のメモリモジュール8aに含まれない、出力タイミングに影響を及ぼす少なくとも1つのコンポーネントを有する第1のメモリモジュール8bに応答して、そのタイミングを加速させてよい(ブロック204において)。さらに、第1のメモリモジュール8bに含まれない、第2のメモリモジュール8aにおける出力タイミングに影響を及ぼす少なくとも1つのコンポーネントを有する、バス10上の他方の第2のメモリモジュール8aに応答して、タイミングに遅延が追加されてよい(ブロック206において)。
次に、メモリモジュールコントローラ20bは、追加された任意の遅延またはタイミングの加速から、正味のタイミング調整を決定してよい(ブロック208において)。メモリモジュールコントローラ20bは、第2のメモリモジュール8aの出力タイミングに一致させるべく、決定されたタイミング調整に基づいて、データバッファ24からホストメモリコントローラ6への出力タイミングを調整する(ブロック210において)。
例えば、複数の計算を実行するコントローラ8bを含むメモリモジュール8bが、他方のメモリモジュール8aにないデータバッファ24を含む場合、他方の第2のメモリモジュール8aが第1のメモリモジュール8bに含まれるようなデータバッファを含まないとき、タイミング調整は、出力タイミングの加速を含んでよい。別の実装において、RDIMMの場合のように、他方のメモリモジュール8aが、メモリモジュール8bに含まれない、計算を実行するレジスタを有する場合、メモリモジュール8bに含まれない、他方のメモリモジュール8a内の計算を行うレジスタに合わせるべく、タイミング調整は、出力タイミングを遅延させることを含む。データバッファ24のためのタイミングの加速が、他方のメモリモジュール8a内のレジスタのために追加された遅延より大きい場合、正味のタイミング調整は、タイミングの加速を含む。同様に、追加された遅延が加速より大きい場合、正味の調整は、タイミングに遅延を追加することを含む。複数の計算を行うメモリモジュール8bが、他方のメモリモジュールに含まれる複数のレジスタまたは複数のデータバッファ24を含まない場合、例えば、他方のメモリモジュール8aがRDIMMおよびLRDIMMの場合、メモリモジュールコントローラ20bは、他方のメモリモジュール8a内の複数の追加のコンポーネントによって引き起こされる複数の遅延に合わせるべく、タイミングを遅延させてよい。
メモリモジュール8a、8bが複数のUDIMM、複数のRDIMM、および複数のLRDIMM等の複数の異なるタイプのDIMMを備える場合、メモリモジュール8a、8bは、複数の異なるタイプのコンポーネントを、バス10に対するそれらのコマンド、アドレス、および複数の制御バス上に有してよい。
複数の特定の記載された実施形態において、タイミングが調整される出力は、データバッファ24からのデータ出力をバス10内のデータバス上に備える。代替の複数の実施形態において、調整される複数の出力信号は、データ出力以外の出力を備えてよい。
複数の動作が、複数のタイミング調整を実行する1つのメモリモジュールに関して記載されているが、バス10上の1または複数のメモリモジュール8a、8bが図5に係る複数のタイミング調整を実行してよい。
記載された複数のタイミング調整では、メモリモジュールコントローラ20bは、データバッファ24からの出力等、その出力のタイミングを調整して、他方のメモリモジュール8aからの複数の同様のタイプの出力に対するタイミングと一致させてよく、その結果、ホストメモリコントローラ6は、バス10上の異なるメモリモジュール8a、8bに係る異なる複数の構成に対し合わせるべく、タイミング調整を何ら行う必要がなくなる。
[モードレジスタセット(MRS)コマンド内での複数のレジスタのエンコーディング使用]
メモリモジュールコントローラ20は、複数のモードレジスタ22を含んでよい。特定の複数の実施形態において、メモリモジュールコントローラ20bは、他方のコントローラ8aで使用される第2のメモリプロトコル、例えばDDR4、とは異なる第1のプロトコルを実装してよい。しかしながら、メモリモジュールコントローラ20bは他方のメモリモジュール8aのDDR4のような第2のプロトコルからの特定の複数のコマンド、例えばモードレジスタセット(MRS)コマンド、をサポートしてよく、さらに当該コマンドを、第1のメモリプロトコルを実装するメモリモジュールコントローラ20aによって使用されるのとは異なる目的で使用してよい。
図6は、MRSコマンド250の一実施形態を示す。MRSコマンド250は、DDR4等の別のメモリプロトコルからの複数のMRSフィールドを含んでも含まなくてもよい。コマンド250は、MRS動作を示すオペレーションコード252を指定する。メモリモジュールコントローラ20内の複数のモードレジスタ22の1つに対し、データを提供すべく、アドレスレジスタA0〜A13が使用されてよく、複数のレジスタビット254は、アドレスA0〜A13内のデータを書き込むべきモードレジスタ22を示す。例えば、16個のモードレジスタ22がある場合、4つのレジスタビット254、例えば、BA0、BA1、BG0、BG1が、使用すべき、メモリモジュールコントローラ20内の16個のモードレジスタ22のうちの1つを示してよい。
一実施形態において、MRSコマンド250は、バス10がリードおよびライト動作等の複数のバス動作のために整備される前に、複数の構成パラメータをメモリモジュール8に対し提供すべく使用され得る単一のサイクルコマンドを備えてよい。ここでリードおよびライト動作は、2サイクルコマンドを備えてよい。このように、MRSコマンド250は、図3のピンアウト設計において、ライン52で示されるアドレス入力信号A0〜A17、および図3のピンアウト設計において、ライン54と56とでそれぞれ示されるコマンド入力信号BG1:0およびBA1:0を使用する。特定の複数の実施形態において、アドレス入力信号A14〜16は、MRSコマンドオペレーションコードを含む。
図7は、メモリモジュールコントローラ20内の複数のモードレジスタ22をプログラムすべく、ホストメモリコントローラ6およびメモリモジュールコントローラ20によって実行される、複数の動作の一実施形態を示す。バス10が2クロックで送信される複数のコマンドを含み得るリードおよびライト動作のために整備される前といった初期化中、ホストメモリコントローラ6は、アドレスフィールドA13:0内に含まれるデータで構成すべき、メモリモジュールコントローラ20内のモードレジスタ22を指定するためのMRSコマンド250を生成(ブロック280において)および送信してよい。アドレスフィールドA13:0に対し、MRSコマンド250が1クロックサイクルで送信され得る。
メモリモジュールコントローラ20はMRSコマンド250を受信(ブロック282において)し、ライン54および56上(図3)の複数のレジスタビット254で示されるモードレジスタ22を決定する(ブロック284において)。次に、メモリモジュールコントローラ20は、アドレスビットA0:A13内に提供されたデータを決定されたモードレジスタ22に書き込む(ブロック286において)。
ホストメモリコントローラ6はさらに、メモリチップ12a、14a、16a、18aのうちの1つにある、8つのモードレジスタのうちの1つをプログラムすべく、DDR4プロトコルに従って、DDR4プロトコルを実装する、メモリモジュール8a等のメモリモジュールに対し送信するためのMRSコマンド250を使用してよい。レジスタビットBA0、BA1、BG0はメモリチップ内のモードレジスタを識別し、ビットBG1はそれらのビットが反転されているかどうかを示す。このように、ホストメモリコントローラ6は、複数の異なるメモリプロトコルを実装するメモリコントローラ20a、20bに対し、同一のMRSコマンドフォーマットを使用して、複数の異なるプロトコルに従った複数の異なる動作を発生させてよい。例えば、DDR4をサポートするメモリモジュール8aに対し、MRSコマンド250が使用される場合、MRSコマンド250はメモリチップ12a、14a、16a、18aのうちの1つにあるモードレジスタに対し、データを書き込む。メモリモジュールコントローラ20内の複数のモードレジスタ22を有するメモリモジュール8bに対しMRSコマンド250が使用される場合、MRSコマンド250は、DRAMチップ12、14、16、18ではなく、メモリモジュールコントローラ20内の複数のモードレジスタ22にデータを書き込む。このように、ホストメモリコントローラ6は、DDR4および何らかの他のプロトコル等の複数の異なるメモリプロトコルをサポートする複数のメモリモジュールとともに、同一のMRSコマンドフォーマットを使用してよい。
[チップセレクト信号が前半のコマンドのためにのみ受信される場合、メモリモジュールにより後半のコマンドを受け取る]
複数の記載された実施形態は、メモリモジュール8のための1つのチップセレクト信号を受け取るのみでよい状態にする、メモリモジュールが、二等分等、複数パートでコマンドを受け取るための複数の技術を提供する。その結果、メモリモジュール8は、前半のコマンドが送信されたときから遅延間隔をおいて、後半のコマンドを自動的に受け取るようになる。さらなる複数の実施形態は、2Nタイミング等の高速タイミングモードで後半のコマンドを自動的に受け取るべく、遅延を組み込むための複数の技術を提供する。高速タイミングモードでは、メモリモジュール8a、8bが1Nタイミング等の通常のタイミングモードに対し、より高速で動作している。
特定の複数の実施形態において、複数のコマンドは、2ビット/レーンを占有し、複数のバックツーバッククロックで送信される。これにより、2コマンドではなく、1コマンド内でアドレス全体が送信されることを可能にし、たとえば、行および列の情報を1コマンドで送信する。メモリモジュールコントローラ20は、メモリモジュールコントローラ20上の複数のモードレジスタ22をプログラミングするホストメモリコントローラ6を介して、高速(2N)タイミングモードを認識する。
図8は、複数のリードコマンド等の複数のコマンドに対する、1Nタイミング等の通常のタイミングモードのためのタイミングチャートの一実施形態を提供する。複数のコマンドは、CMD0a、CMD0b、CMD1a、CMD1b、CMD2a、CMD2bで示される2パートで送信される。ホストメモリコントローラ6は、第1のメモリモジュール8aに対し、前半のコマンドCMD0aおよび、図3でSO#ライン58としても示されるチップセレクト信号S0#302を、バス上にクロックサイクル300で配置する。第1のメモリモジュール8aは、チップセレクト信号302の受信時に、サイクル300で前半のコマンドCMD0aを受け取ってよく、さらに、前半のコマンドCMD0aから遅延間隔をおいて、例えば、1クロックサイクル後のクロックサイクル304において、後半のコマンドCMD0bを自動的に受け取ってよい。
ホストメモリコントローラ6は、第2のメモリモジュール8bを選択すべく、前半のコマンドCMD1aおよび、図3でS2#ライン60としても示されるチップセレクト信号S2#306を、バス上にクロックサイクル308で配置してよい。第2のメモリモジュール8bは、チップセレクト信号306の受信時に、サイクル308で前半のコマンドCMD1aを受け取ってよく、さらに、後半のコマンドCMD1bを1クロックサイクル後のサイクル310で自動的に受け取ってよい。
図9は、通常のタイミングより高速度の、2Nタイミング等の高速タイミングモードのためのタイミングチャートの一実施形態を提供する。ここでは、CMD0a、CMD0b、CMD1a、CMD1b、CMD2a、CMD2bとして示される、2クロックサイクルのための各コマンドの両方のパートがバス10上に存在する。ホストメモリコントローラ6は、第1のメモリモジュール8aに対し、2サイクルの前半のコマンドCMD0aをバス上にクロックサイクル320で配置し、図3でSO#ライン58としても示されるチップセレクト信号S0#322をバス上に、前半のコマンドCMD0aがバス10上に配置されてから1サイクル後のクロックサイクル324で配置してよく、よって、高速タイミングモードにおいてチップセレクト信号を遅延させる。第1のメモリモジュール8aは、チップセレクト信号322の受信時に、クロックサイクル324で前半のコマンドCMD0aを受け取ってよく、さらに、後半のコマンドCMD0bをチップセレクト信号322から2クロックサイクル後として示される遅延間隔をおいて、クロックサイクル328の開始時に自動的に受け取ってよい。
ホストメモリコントローラ6は、第2のメモリモジュール8b用に、前半のコマンドCMD1aをサイクル330で、図3でS2#ライン60としても示されるチップセレクト信号S2#332を1サイクル後のサイクル332で配置してよい。第2のメモリモジュール8bは、チップセレクト信号332のクロックサイクル336において、前半のコマンドCMD1aを受け取ってよく、さらに、2クロックサイクル後のサイクル338で、後半のコマンドCMD1bを自動的に読み取ってよい。このように、ホストメモリコントローラ6はチップ信号を前半のコマンドの途中で1クロックサイクル遅延させ、メモリモジュールコントローラ20は、後半のコマンドの読み取りを、前半のコマンドの読み取り後、2サイクル遅延させる。
図10は、バックツーバックサイクルで2ビットを占有する複数のコマンドに対する、1Nタイミングモードのために、ホストメモリコントローラ6およびメモリモジュールコントローラ20によって実行される複数の動作に係る一実施形態を示す。ホストメモリコントローラ6は、1Nタイミングモードで動作するための初期化中、メモリモジュールコントローラ20を複数のモードレジスタ22内の複数のビットを介してプログラムしてよい。通常のタイミングモード1Nで2サイクルコマンドを初期化するとき(ブロック350における)、ホストメモリコントローラ6は、前半のコマンド(1サイクル)をバス10上に第1のクロックサイクルで配置する(ブロック352における)。チップセレクトコマンドも、バス10上に第1のクロックサイクルで配置される(ブロック354における)。メモリモジュールコントローラ20が通常のタイミングモードでプログラムされている場合、メモリモジュールコントローラ20を含む特定のメモリモジュール8に宛てられたチップセレクト信号を検出すると(ブロック356において)、メモリモジュールコントローラ20は、前半のコマンドをバス10上の第1のクロックサイクルで受け取る(ブロック358において)。
さらに、ホストメモリコントローラ6は、後半のコマンド(前半からのバックツーバックサイクルで)をバス10上に、第1のクロックサイクルから1クロックサイクル後の第2のクロックサイクルで配置する(ブロック360において)。チップセレクト信号によって選択されるメモリモジュール8は、チップセレクト信号が受信され、前半のコマンドが受け取られたときから、1サイクルの遅延を待機することによって、後半のコマンドを、バス10上の第2のクロックサイクルで受け取る(ブロック362において)。メモリモジュールコントローラ20は、チップセレクト信号にバス10にアクセスすることを要求することなく、後半のコマンドをバス10上で自動的に受け取ってよい。
図11は、バックツーバックサイクルで2ビットを占有する複数のコマンドに対する、2N等の高速タイミングモードのための、ホストメモリコントローラ6およびメモリモジュールコントローラ20によって実行される複数の動作に係る一実施形態を示す。メモリモジュールコントローラ20は、高速タイミングモードで動作するための初期化中、複数のモードレジスタ22内の複数のビットを介してプログラムされてよい。高速タイミングモードで2サイクルコマンドを初期化するとき(ブロック380における)、ホストメモリコントローラ6は、前半のコマンド(1サイクル)を、バス10上に第1のクロックサイクルで配置する(ブロック382における)。次に、チップセレクト信号が、バス10上に、第1のクロックサイクルから1クロックサイクルとなり得る第2のクロックサイクルで配置される(ブロック384における)。このように、前半のコマンドを配置してから、1クロックサイクル等の遅延において、チップセレクト信号がバス上に配置される。メモリモジュールコントローラ20が高速タイミングモードでプログラムされている場合、メモリモジュールコントローラ20が特定のメモリモジュール8に宛てられたチップセレクト信号を検出すると(ブロック386において)、メモリモジュールコントローラ20は、遅延における第2のクロックサイクルでバス10上の前半のコマンドを受け取る(ブロック388において)。
さらに、ホストメモリコントローラ6は、後半のコマンド(前半からの2サイクル後)をバス10上に、第1のクロックサイクルから2サイクル後の第3のクロックサイクルで配置する(ブロック390において)。チップセレクト信号によって選択されるメモリモジュール8内のメモリモジュールコントローラ20は、チップセレクト信号が受信され、前半のコマンドが受け取られたときから、2サイクルの遅延を待機することによって、後半のコマンドをバス10上で第4のクロックサイクルにおいて受け取る(ブロック392において)。メモリモジュールコントローラ20は、バス10上のチップセレクト信号を待機することなく、後半のコマンドを自動的に受け取ってよい。
複数の記載された実施形態は、2Nタイミング等の高速タイミングモードにおいて、チップセレクト信号が、前半のコマンドを送信してから、1クロック信号分遅延させることを提供する。さらに、メモリモジュールは、チップセレクト信号から2クロック信号後、後半のコマンドを自動的に受け取ってよい。チップセレクト信号におけるこの遅延によって、高速モードにおける、追加のセットアップタイムが可能になる。後半のコマンドを受け取るための遅延によって、チップセレクト信号を要求することなく、コマンドを自動的に受け取ることが可能になる。
代替の複数の実施形態において、記載された1クロック信号とは異なる間隔で、チップセレクト信号がバス上に配置されてよく、後半のコマンドが受け取られてよい。さらに、代替の複数の実施形態において、複数のコマンドは、2より多いパート(複数のビット等)で構成され、2より多いクロックサイクルを使用してよく、かつ、メモリモジュール8a、8bは、受け取るための複数の追加のチップセレクト信号を要求することなく、コマンドの1つの追加パートより多いものを、チップセレクト信号からの複数のクロック信号遅延間隔において、自動的に受け取ってよい。
[メモリモジュール内の複数の高アドレスビットの設定方法を決定する]
メモリモジュールコントローラ20は、異なるピンおよびインターフェース構成を有する複数のメモリモジュール8で動作するよう構成され得る。例えば、1つのメモリモジュールは、SO−DIMM等のより少ないピンを有する別のメモリモジュールより、アドレス指定用のより多くのピンを有する。より少ないアドレス指定用のピンを有するメモリモジュールは、アドレス指定用に利用可能なより多くのピンを有するメモリモジュールより、小さなアドレス空間を提供してよい。サポートされるインターフェース構成は、ホストメモリコントローラ6およびバス10の複数の機能によって変わってよく、あるいはメモリモジュール8のSO−DIMMまたはUDIMM等のピンおよびインターフェース構成の複数の機能によって変わってよい。
そのような複数の実施形態に対し、例えば、メモリモジュールが複数の高アドレスビットのための利用可能な複数のピンを有するかどうかを示す等、複数のサポートされるインターフェース構成を示すべく、メモリモジュールコントローラ20は、複数のモードレジスタ22のうちの1つを使用してよい。そのような場合、メモリモジュールコントローラ20が他の複数のメモリモジュールで利用可能な複数の高アドレスビット用の1または複数のピンを有さないモジュール8で動作している場合、メモリモジュールコントローラ20は予め定められた値、例えばゼロを、当該モジュールで利用不可能なそれらの複数の高アドレスビットのために使用する。このように、メモリモジュールコントローラ20は、それらの高アドレスビットのための複数の値を受信するためのピンがない場合に、複数の高アドレスビット用に値ゼロを前提とする。一実施形態において、複数の高アドレスビットは、図3のピンアウトダイアグラムで示される52のアドレスビットA17および62のビットC2:0を備えてよい。SO−DIMM等の特定の複数のメモリモジュールは、ピン52および62を含まなくてよい。
図12は、アドレス指定用の複数の設定を構成すべく、メモリモジュールコントローラ20によって実行される複数の動作に係る一実施形態を示す。ホストメモリコントローラ6は、サポートされるインターフェース構成を示すMRS信号をメモリモジュール8に対し送信してよい。サポートされるインターフェース構成を示すMRS信号を受信すると(ブロック400において)、メモリモジュールコントローラ20はサポートされるインターフェース構成を示すべく、MRS信号によってアドレス指定されるモードレジスタ22を更新してよい。MRS信号は、SO−DIMM、UDIMM等のDIMMタイプを示すか、あるいは、複数の高アドレスビットがサポートされるか否かといった、インターフェースがサポートする内容を示してよい。応答時、メモリモジュールコントローラ20は、例えば複数の高アドレスビットがサポートされるかどうかを示すといったように、通信されるインターフェース構成を示すべく、インターフェース構成を示すアドレス指定されたモードレジスタ22を設定(ブロック402において)する。
図13は、より高レベルの複数のアドレスビットを使用する、アドレス指定を処理すべく、メモリモジュールコントローラ20によって実行される複数の動作に係る一実施形態を示す。複数のアドレスビットを有するコマンドをホストメモリコントローラ6から受信すると(ブロック420において)、メモリモジュールコントローラ20は、サポートされるインターフェース構成をモードレジスタ22から決定する。そのような情報は、現在のメモリモジュール8が複数の高アドレスビットにおけるアドレス指定をサポートするか否かを示す。サポートされるインターフェース構成が複数の高アドレスビットをサポートしない場合(ブロック422において)、例えは、メモリモジュール8が複数のピン52および62を有さない場合、受信されるアドレスのための少なくとも1つの高アドレスビットは予め定められた値に設定される。すなわち、複数の高アドレスビットのためのピンがない場合、複数の高アドレスビットはゼロと前提される。モードレジスタ22で示されるサポートされるインターフェース構成が、複数の高アドレスビットが利用可能であると示す場合(ブロック422において)、メモリモジュールコントローラ20は、少なくとも1つの高アドレスピン52、62上で受信されるアドレス用に、少なくとも1つの高アドレスビットを使用する(ブロック426において)。
代替の複数の実施形態において、メモリモジュールコントローラ20は、複数のピンを有さないメモリモジュール上に、複数の高アドレスビット以外の複数のアドレスビットのための複数の予め定められた値を供給してよい。
複数の記載された実施形態は、メモリモジュールコントローラが、複数の高アドレスビットを提供するための複数のピンを有さないメモリモジュール構成に対し、複数の高位のアドレスビットを提供すべく、アドレス指定のために利用可能な複数の異なるピン構成を有する複数のメモリモジュール内で動作することを可能にする。このように、メモリモジュールコントローラはSO−DIMMおよびUDIMM等の複数のメモリモジュール内で展開および動作され得、両方のインターフェース構成に対し、複数の完全なアドレス指定機能を提供できる。
[CKEロー信号のための複数の拡張動作を提供する]
複数の記載された実施形態は、複数の電力管理動作の事前構成をメモリモジュール8で可能にする複数の技術を提供する。それは、メモリモジュールコントローラが、図3のピンアウトダイアグラムで示されるピン64または66等のCKEピン上で、クロックイネーブル(CKE)ロー信号を検出すると、後で実行されることになる複数の動作である。これによって、CKEロー信号がアクティブ化されると、定義済みのスリープ状態に入る等、拡張された一連の電力管理動作が実行されることを可能にする。
先に送信されたプリCKEコマンドによって、CKEロー信号の受信時、異なる可能性のある複数のスリープ状態がアクティブ化され得る。そのような示される複数の状態は、Advanced Configuration and Power Interface(ACPI)規格で指定されるものを含んでよい。例えば、S3スタンドバイ状態は、低レベルの電力供給が維持される、メモリモジュール8に対するスリープまたは中断である。S4の休止状態は、メモリモジュール8の内容は不揮発性メモリに保存され、メモリモジュール8は電源が切られる状態である。S5の状態は、最小量電力が電源供給ユニットに供給されるもののメモリモジュール8は電源が切られるものである。その内容が保存される不揮発性メモリは様々な形態で提供されてよく、限定はされないが、NAND(フラッシュ)メモリ、強誘電体RAM(FeTRAM)、ナノワイヤーベースの不揮発性メモリ、相変化メモリ(PCM)等の3次元(3D)クロスポイントメモリ、メモリスタ技術を組み込むメモリ、磁気抵抗ランダムアクセスメモリ(MRAM)、Spin Transfer Torque(STT)‐MRAMを含む。
図14は、CKEロー信号を使用して、複数の電力管理動作を容易化すべく、ホストメモリコントローラ6およびメモリモジュールコントローラ20によって実行される複数の動作に係る一実施形態を示す。例えば、様々な認識されるスリープモードのうちの1つへの切り替えといった、電力管理モードを変更する複数の動作を初期化すべく、ホストメモリコントローラ6は、バス10を介して、メモリモジュールコントローラ20に対し、1または複数の電力管理動作を示す、プリCKEコマンドを送信する(ブロック500において)。一実施形態において、プリCKEコマンドは、1または複数の特定の動作を示す、または一連の動作を表すコードを提供してよい。例えば、プリCKEコマンドは、例えば、複数のACPIスリープモード状態に係るS3、S4、S5等のシステム状態またはスリープモード等の電力管理状態を示してよい。それらをメモリモジュールコントローラ20は、その状態を実装するために実行すべき一連の動作として解釈してよい。
プリCKEコマンドを受信すると(ブロック502において)、メモリモジュールコントローラ20は、電力管理動作レジスタ26を、プリCKEコマンドで示される少なくとも1つの電力管理動作を示すよう設定する。その後、ホストメモリコントローラ6がメモリモジュール8a、8bに対し、示された複数の電力管理動作の状態変更を実装させようとする際、ホストメモリコントローラ6は、ピン64または66(図3)上のローといったように、CKEロー信号56をアサートする(ブロック506において)。CKEロー信号を検出すると(ブロック508において)、メモリモジュールコントローラ20は、電力管理動作レジスタ56がスリープモード状態または特定の複数の動作を示すといったように、実行すべき複数の動作を示しているかどうかを決定する(ブロック510において)。ヌルまたは既定値等、動作が何も示されていない場合、メモリモジュールコントローラ20は、例えば、複数の内部クロック信号の非アクティブ化、プリチャージパワーダウンまたはセルフリフレッシュ動作のように、CKEロー信号を処理するための既定の動作を実行してよい(ブロック512において)。複数の動作または電力モードがレジスタ26で示されている場合、メモリモジュールコントローラ20は、特定の電力管理状態、例えば、スリープ状態を実装すべく、レジスタ26で示される複数の電力管理動作を実行する(ブロック514)。
複数の記載された実施形態は、CKEロー信号を使用して、後で一連の電力管理動作を実行するようメモリモジュールコントローラを構成するための複数の技術を提供する。プリCKEコマンドが送信された後、ホストメモリコントローラ6は、CKEロー信号に応答して通常トリガされるよりも、電力モードを変更するための、より複雑な複数の電力管理動作をトリガすべく、CKEロー信号をアサートする。複数の記載された実施形態では、スリープモードへの移行等、より複雑な電力管理動作がCKEロー信号で初期化され得るので、電力管理のために、より少ない複数の信号が必要とされる。
[複数のライトコマンド用にホストメモリコントローラの複数のライトクレジットを提供する]
複数の記載された実施形態は、バス10上のバス帯域幅の消費を低減すべく、戻される複数のリードデータパケット内に複数のライトクレジットを含めることで、複数のライトコマンドを送信するために使用するホストメモリコントローラ6の複数のライトクレジットを供給する複数の技術を提供する。
図1につき、ホストメモリコントローラ6は、ライトクレジットカウンタ9を含んでおり、ライトクレジットカウンタ9が、複数のポジティブクレジットを有する場合にのみ、複数のライトコマンドを送信する。ライトクレジットカウンタ9は、ライトコマンドを送信するとき、デクリメントされる。各メモリモジュール8a、8bに対し、1つのライトクレジットカウンタ9が存在してよい。メモリモジュール8は、受信されるライトデータをバッファするためのライトバッファ28を含んでおり、受信されるライトデータは後で、メモリチップ12、14、16、18内の複数のストレージ要素にデステージされる。メモリモジュールコントローラ20は、ホストメモリコントローラ6に戻すための累積された複数のライトクレジットを示すライトクレジットカウンタ30を有する。ライトバッファ28の使用を管理すべく、複数のライトクレジットが使用され、よって、ホストメモリコントローラ6はライトデータを送信させて、ライトバッファ28をオーバーフローさせない。
図15は、ホストメモリコントローラ6およびメモリモジュールコントローラ20がライトコマンドを処理するための複数の動作に係る一実施形態を示す。ライトコマンドの生成時、ホストメモリコントローラ6は、ライトクレジットカウンタ30がゼロより大きい、すなわち空以外であるかどうかを決定する(ブロック602において)。その場合、ライトコマンドがメモリモジュール8に対し送信される(ブロック604において)。ホストライトクレジットカウンタ9が空の場合(ブロック602において)、ホストメモリコントローラ6は、ライトコマンドを送信するために複数のクレジットが利用可能になるまで待機する。
ライトコマンドを受信すると(ブロック610において)、メモリモジュールコントローラ20は、ライトデータをライトバッファ30内にバッファする(ブロック612において)。ライトバッファ30からのライトデータをメモリチップ12、14、16、18内の複数のストレージ要素へデステージすると(ブロック614において)、メモリモジュールコントローラ20は、ホストメモリコントローラ6に戻すクレジットを示すライトクレジットカウンタ30をインクリメントし(ブロック616において)、別のライトコマンドを許容するようにする。ライトクレジットカウンタ30が閾値を超えている場合(ブロック618において)メモリモジュールコントローラ20は、リードデータを何も示さない、ライトクレジットカウンタ30内で示される複数のライトクレジットのうち少なくとも1つを示す、リードデータパケットを生成する(ブロック620において)。リードデータパケットがホストメモリコントローラ6に送信され(ブロック622において)、ライトクレジットカウンタ30は、戻されるクレジット数だけ、低減される(ブロック624において)。特定の複数の実施形態において、戻されるクレジット数に制限があってよく、よって、ライトクレジットカウンタ30はゼロに低減されてもされなくてもよい。このように、リードパケットが長時間送信されない場合、メモリモジュールコントローラ20はデータなしでリードデータパケットを送信し、複数のライトクレジットを提供する。その結果、ホストメモリコントローラ8は、複数のライトクレジットが不足せず、複数のライトコマンドを送信することをブロックされる。代替において、複数のライトクレジットがリードデータパケット以外の複数のパケットで戻されてよい。
図16は、ホストメモリコントローラ4に戻すためのリードデータパケットを生成すべく、メモリモジュールコントローラ20によって実行される複数の動作に係る一実施形態を示す。ホストメモリコントローラ6からのリードリクエストに戻すためのリードデータを含むリードデータパケットの生成時(ブロック640において)、ライトクレジットカウンタ30がゼロより大きい場合(ブロック642において)、メモリモジュールコントローラ20は、カウンタ30内の一部または全部のライトクレジットをリードデータパケットに示し(ブロック644において)、リードデータパケットをホストメモリコントローラ6に送信する(ブロック646において)。ライトクレジットカウンタ30は、戻されるライトクレジット数だけ低減される(ブロック648において)。戻されるライトクレジット数は、カウンタ30内のすべてのクレジットであってもよいし、なくてもよい。このように、複数のライトクレジットはリードデータパケット内で一括処理され、ホストメモリコントローラ6に戻される。これにより、情報を通信するためのメッセージ使用を最適化する。複数の応答からなる固定のセットが存在するので、メモリモジュールコントローラ20は、1パケット内にすべてのクレジットを示さなくてくてよい。例えば、メモリモジュールコントローラ20はリードパケット内に、戻すライトクレジット数に対し、0、1、または4を示すことができてよく、または複数のライトクレジットがリードデータなしで戻される場合(図15のブロック620において)、データなしのパケットに対し、0、1、4、または8を示すことができてよい。
図17は、メモリモジュール8からのリードデータパケットを処理すべく、ホストメモリコントローラ6によって実行される複数の動作に係る一実施形態を示す。リードデータパケットの受信時(ブロック660において)、リードデータパケットが複数のライトクレジットを示す場合(ブロック662において)、ホストメモリコントローラ6は、ライトクレジットカウンタ9を、リードデータパケット内で示されるライトクレジット数だけ、インクリメントする(ブロック664において)。ライトクレジットカウンタ9をインクリメントした後(ブロック664から)または提供される複数のライトクレジットが存在しない場合(ブロック662のいいえの分岐から)、リードデータパケットがリードデータを含む場合(ブロック666において)、リードデータが処理される(ブロック670において)。データの読み取り後またはパケットがデータを含まない場合(ブロック666のいいえの分岐から)、リードデータパケットは破棄される(ブロック668において)。
複数の記載された実施形態は、複数のリードパケット内の複数のライトクレジットまたは使用済みの他の複数のメッセージを一括処理することによって、バス10の帯域幅を低減させるように、メモリモジュール8がホストメモリコントローラ6に対し、複数のライトクレジットを通信する、複数の技術を提供する。
[複数のエラー信号を使用して、複数のエラー処理動作を実行する]
複数の記載された実施形態は、ホストメモリコントローラ6とのエラー処理を調整する、メモリモジュール8における簡易なエラーフローのための複数の技術を提供する。複数の記載された実施形態において、メモリモジュールコントローラ20は、図3のピンアウト設計に示されるエラーピン68ERR0#上にエラーをシグナリングしてよい。メモリモジュールコントローラ20は、複数のエラー処理動作の開始をシグナリングすべく、エラーピン68上にエラー(ERR)ロー信号をアサートしてよく、またメモリモジュールコントローラ20は、エラーモードが終了したこと、およびバス10が動作の準備が整った初期状態に戻されたことをシグナリングすべく、エラーピン68上にエラー(ERR)ハイ信号をアサートしてよい。このように、バス10上でのメモリモジュールコントローラ20とホストメモリコントローラ6との間のエラー処理を調整するための通信は、より広範なエラー処理調整で、帯域幅を消費することを回避すべく、制限された数の信号を備える。
図18は、メモリモジュール8内でのエラー検出時に、複数のエラー処理動作を管理するための、メモリモジュールコントローラ20とホストメモリコントローラ6との間の複数の動作に係る一実施形態を示す。エラーを検出すると(ブロック700において)、メモリモジュールコントローラ20は、複数のエラー処理動作が開始されたことをホストメモリコントローラ6に対しシグナリングすべく、バス10上において、ERRロー信号等、第1のエラー信号をピン68上(図3)にアサートする(ブロック702において)。ERRロー信号等、第1のエラー信号をピン68上に検出すると(ブロック704において)、ホストメモリコントローラ6は、第1のエラー信号が受信されたという受信確認を送信(ブロック706において)後、継続して、第1のエラー信号に応答して、エラーを有するメモリモジュール8に対するリード動作およびライト動作を中断する(ブロック708において)。ホストメモリコントローラ6は、ライトクレジットカウンタ9を最大値に設定する等(ブロック710において)、さらなる複数のエラー処理動作を実行してよい。このように、ホストメモリコントローラ6は、エラー処理の一部として、すべてのライトがライトバッファ28からメモリチップ12、14、16、18内の複数のストレージ要素へとフラッシュされることを前提とする。
ホストメモリコントローラ6からの第1のエラー信号の受信に係る受信確認を受信すると(ブロック712において)、メモリモジュールコントローラ20は、バス10を初期状態に戻すための複数のエラー処理動作を実行する。そのような複数の動作は、すべての保留中のリードリクエストの破棄(ブロック716において)、ライトバッファ28内の複数のライトのメモリチップ12、14、16、18内の複数のストレージ要素へのデステージ(ブロック718において)、およびライトクレジットカウンタ30から、戻す複数のライトクレジットを消去(ブロック722において)することが含まれてよい。複数のエラー処理動作の完了後、メモリモジュールコントローラ20は、エラー処理が完了したことをシグナリングすべく、ERRハイ等の第2のエラー信号をエラーピン68上にアサートする(ブロック724において)。この第2のエラー信号を検出すると(ブロック726において)、ホストメモリコントローラ6は、第2のエラー信号の検出に応答して、メモリモジュールに対するリード動作およびライト動作を再開する(ブロック728において)。
複数の記載された実施形態に関し、メモリモジュール8およびホストメモリコントローラ6は、複数のエラー上の多くの通信およびバスを介して実行される複数のトランザクションを交換することなく、限定された数の信号を用いて調整し、複数の完全なエラー処理動作を実行する。各コンポーネント8および20は、他方がメモリモジュール8におけるエラーに応答して、バス10の完全な再初期化を実行することを前提とする。
[ライトリクエストエラーおよびライトリクエスト受け取りを示すためのエラー信号を使用する]
複数の記載された実施形態は、例えば、ライトリクエストの送信から予め定められた時間内に、エラー信号ロー等、エラー信号をアサートしないことによって、ライトリクエストが正常に完了したこと、およびエラー信号をアサートすることによって、ライトリクエストが失敗したことを、メモリモジュールコントローラ20が、ホストメモリコントローラ6に対し、示すための複数の技術を提供する。エラー信号を検出すると、ホストメモリコントローラ6は、ライトリクエストの送信から予め定められた時間内に、エラー信号が受信された場合、ライトリクエストを再送信する。このように、各ライトリクエストの完了後に、複数のライト完了受信確認をホストメモリコントローラ6に対し送信しないことによって、バス10の帯域幅が節約される。
図19は、ライトリクエストおよびライトリクエスト内の複数のエラーの受け取りを示すべく、メモリモジュールコントローラ20およびホストメモリコントローラ6によって実行される複数の動作に係る一実施形態を示す。メモリモジュールコントローラ20が処理中の複数のライトリクエストの1つに関するライトエラーを検出すると(ブロック750において)、メモリモジュールコントローラ20は、エラーロー信号ERR0#等のエラー信号をピン68上にアサートする(図3)。エラーが何も発生していないことを示すべく、メモリモジュールコントローラ20は、エラーハイ信号をアクティブに維持する。メモリモジュールコントローラ20は、複数のライトリクエストエラーと無関係の複数のエラーを示すべく、ピン68上のERR0#信号を追加で使用してよい。さらに、メモリモジュールコントローラ20は、ライトリクエストが送受信されたとき等、ライトリクエストからの予め定められた時間内に、エラーロー信号を送信しないことによって、ライトリクエストの正常終了を暗に示す。
ホストメモリコントローラ6がエラーロー信号を検出する際(ブロック754において)、1または複数のライトリクエストからの予め定められた時間内に、エラーロー信号が受信される場合(ブロック756において)、ホストメモリコントローラ20は、エラーロー信号の受信から予め定められた時間内に送信された1または複数の決定されたリクエストを再送信する(ブロック758において)。特定の複数の実施形態において、エラー信号が複数のライトエラーンに対し無関係である場合であっても、ホストメモリコントローラ20は、複数のライトリクエストを再送信する。このように、ホストメモリコントローラ20は、エラー信号ローが、予め定められた時間内に受信されない場合、複数のライトリクエストを正常に完了したものとして処理し、たとえ、エラー信号ローが複数のライトリクエストエラーに無関係のエラーをシグナリングする場合であっても。エラー信号ローが予め定められた時間内に受信されると、ライトリクエストを失敗したものとして処理する。
複数のライトリクエストを再送信後(ブロック758において)または予め定められた時間内に送信された複数のライトリクエストが存在する場合(ブロック756のいいえの分岐から)、ホストメモリコントローラ6は、エラーロー信号に関連される、複数のライトエラーに無関係の、実行すべきエラー処理動作が存在するかどうかを決定する(ブロック760において)。存在する場合、ホストメモリコントローラ6は、複数のライトエラーに無関係のエラー処理動作を実行する(ブロック762において)。
記載された複数の実施形態に関し、メモリモジュール8は、各ライトの完了後、複数のライト完了受信確認を送信しない。代わりに、ホストメモリコントローラ6は、ライトリクエストの後、予め定められた時間内にエラー信号が受信されない場合にライトが完了したことを前提する。さらに、たとえ、メモリモジュールコントローラ20がライトエラーに無関係のエラーをシグナリングする場合であっても、エラー信号がライトリクエストの送信後、予め定められた時間内に受信される場合は、ホストメモリコントローラ6は、ライトリクエストを再送信する。
[メモリモジュール内のリードデータをスクランブルする]
複数の記載された実施形態は、メモリモジュールコントローラ20が、ライトデータをデスクランブルし、アンスクランブルされたライトデータを格納した後、リードアドレスのスクランブリングを含む、リードリクエストに戻すべく、格納されたデータをスクランブルする複数の技術を提供する。リードおよびライトの両方のためにバス10上で送信されているデータに対するスクランブルは、バス10で複数のエラーを引き起こす可能性のある、送信内で発生する複雑なシーケンスの確率を回避すべく実行される。
リードデータのスクランブルを許容すべく、ホストメモリコントローラ6およびメモリモジュールコントローラ20は、スクランブルシード値11および32(図1および2に示される)をそれぞれ維持する。両方のシード値が共通の値に初期化され、次に、リードデータパケットの処理後、インクリメントされる。その結果、インクリメントされたシード値32および11は個別に、同一リードデータパケットに対し同一値に設定され、リードリクエストに応答してホストメモリコントローラ6に戻されたリードデータパケット内のリードリクエストされたデータをスクランブルおよびデスクランブルするのに使用される。さらに、メモリモジュールコントローラ20およびホストメモリコントローラ6は、データをスクランブルおよびデスクランブルするための、シード値11、32を使用する同一データスクランブルアルゴリズムのための回路ロジックを実装し、バス10で発生する複雑なシーケンスの可能性を除去する。代替の複数の実施形態において、ホストメモリコントローラ6およびメモリモジュールコントローラ20は、当技術分野において既知の複数の追加の動作によって、シード値11および32を更新してよい。
図20は、バス10を介して送信されるリードデータをスクランブルすべく、メモリモジュールコントローラ20およびホストメモリコントローラ6によって実行される複数の動作に係る一実施形態を示す。リードアドレスに対するリードリクエストをホストメモリコントローラ6から受信すると(ブロック800において)、メモリモジュールコントローラ20は、メモリモジュール8内のDRAMチップ12、14、16、18等のストレージ要素からアンスクランブルされたリードデータを取得する(ブロック802において)。メモリモジュールコントローラ20は、スクランブルシード32を使用し(ブロック804において)、リクエストされたリードデータおよびリードアドレスをスクランブルして、ホストメモリコントローラ6からのリードリクエストに戻すべく(ブロック806において)、リードデータパケット内に含める。スクランブラシード32はその後、更新される(ブロック808において)。一実施形態において、その後、スクランブラシード11、32は、リニアフィードバックシフトレジスタ(LFSR)回路を使用して、疑似ランダム方式に更新される。
リードパケットを受信すると、ホストメモリコントローラ6は、リードデータおよびリードアドレスを決定すべく、スクランブラシード11を使用して、リードデータパケットをデスクランブルする(ブロック812において)。次に、リードデータがそのリードリクエストに戻され得るよう、アンスクランブルされたアドレスに関連付けられたリードリクエストが決定される(ブロック814において)。スクランブラシード11が更新される(ブロック816において)。代替の実施形態において、スクランブラシード11および32は、スクランブルおよびデスクランブルに使用される前に、更新されてよい。
図21は、スクランブルされたライトデータを管理すべく、メモリモジュールコントローラ20によって実行される複数の動作に係る一実施形態を示す。スクランブルされたライトデータを有するライトリクエストをホストメモリコントローラ6から受信すると(ブロック830において)、メモリモジュールコントローラ20はライトリクエストのライトアドレスを使用して、スクランブルされたライトデータをデスクランブルし(ブロック832において)、次に、アンスクランブルされたデータをメモリモジュール8内のメモリチップ12、14、16、18に書き込む(ブロック834において)。
複数の記載された実施形態は、メモリモジュールコントローラ20が、アンスクランブルされたリードデータを格納後、シード値11と32とを使用して、リードデータおよびアドレスの両方をスクランブルしてバス10上に戻すことを可能にする。シード値11と32は、各コンポーネント8および20が複数の動作をスクランブルおよびデスクランブルするために更新する。
[使用する複数のバスインターフェース構成の1つを選択する]
複数の記載された実施形態は、メモリモジュール8内で構成するインターフェースパラメータ34を提供する。当該パラメータは、メモリモジュール8によって使用されるバスインターフェース構成を決定すべく、メモリコントローラ20によって使用される。このように、メモリモジュールコントローラ20は、異なる複数のバスインターフェース10、例えば、複数の異なるバス幅、すなわち、9ビットインターフェース、18ビットインターフェース、72ビットインターフェース等の複数のバスデータ幅を有する複数のバスインターフェース、で動作できる。例えば、メモリモジュールコントローラ20がそこに実装され得る異なるタイプのDIMMは、複数の異なるバス幅構成、例えば、72、168、184、240等の異なる数のピン、を有して、複数の異なるバス幅を実装してよい。
図22は、インターフェースパラメータ34を決定すべく(ブロック900において)、メモリモジュールコントローラ20によって実行される複数の動作に係る一実施形態を示す。メモリモジュールコントローラ20は、バス10をスキャンすること、またはホストメモリコントローラ6に対しクエリすることによって、初期化中にバス10インターフェース構成を決定してよい。あるいは、ホストメモリコントローラ6または他のコンポーネントが、初期化中にバス10を介して、バス幅、ピン構成等のバス10インターフェース構成に関する情報を通信してよい。さらなる実施形態において、メモリモジュール8は、メモリモジュール8に連結され、バス10インターフェース構成を通信する、1または複数のストラッピングピンをバス10の外部に有してよい。ホストメモリコントローラ6または他のコンポーネントは、少なくとも1つのストラッピングピン上に、バスインターフェース構成をアサートしてよい。通信すべきサポートされるバスインターフェース構成が2つのみ存在する場合、1つのストラッピングピンが使用されてよい。メモリモジュールコントローラ20がサポートする、3つ以上のサポートされるバスインターフェース構成が存在する場合、3つ以上のバスインターフェース構成を示すための追加の複数のピンが存在してよい。バスインターフェース構成の決定時(ブロック900において)、決定されたインターフェースパラメータを示すべく、インターフェースパラメータ32が設定される。
図23は、バスインターフェース構成に基づいて、転送リクエストを処理すべく、メモリモジュールコントローラ20によって実行される複数の動作に係る一実施形態を示す。転送リクエストを処理する動作の初期化時(ブロック930において)、メモリモジュールコントローラ20は、インターフェースパラメータ32に対応するバスインターフェース構成を選択する(ブロック932において)。この場合、選択されたバス構成は、各々が異なるバス幅およびピン構成を有する、第1、第2、第3、または更なるバス構成のうち1つを備えてよい。例えば、複数のバス構成は、9ビット、18ビット、72ビットのデータバスを備えてよく、これらのバス構成の各々は、異なる数のピンを有してよい。この選択されたバス構成が、複数の転送リクエストおよび他の複数の動作を処理する際に使用される。
メモリモジュールコントローラ20は、選択されたバスインターフェース構成のバス幅に基づいて、転送リクエストを処理する、多数の転送を生成する(ブロック934において)。例えば、選択されたバス構成が、メモリモジュールコントローラ20によってサポートされる他の複数の可能性のある構成より、さらに小さいバス幅を有する場合、そのバス構成は、そのさらに小さいバス幅を収容すべく、より大きいバス幅とより多くのピンを有するサポートされるバスインターフェース構成に要求されるよりも、さらに多くの転送を要求する。このように、メモリモジュールコントローラ20は、選択されたバスインターフェース構成のバス幅に基づいて、転送リクエストを、異なる数のバストランザクションに分割してよい。生成された複数の転送は、選択されたバスインターフェース構成上で転送される(ブロック936において)。
複数の記載された実施形態は、メモリモジュールコントローラ20が、そこに実装されるメモリモジュール8のバス構成をサポートすることを許容すべく、複数の異なるバスインターフェース構成を有するメモリモジュール8内で動作可能なメモリモジュールコントローラ20を提供する。
本明細書全体において、「一実施形態」または「ある実施形態」という言及は、その実施形態に関連付けて記載される特定の特徴、構造、または特性が、本願発明の少なくとも1つの実施形態に含まれていることを示す。従って、本明細書の様々な箇所における「ある実施形態」または「一実施形態」または「代替の実施形態」という3つ以上の言及は、すべて必ずしも同一の実施形態について言及しているわけではないことをここに強調し且つ理解されたい。更に、複数の特定の特徴、構造、または特性は、本発明に係る1または複数の実施形態において、好適に組み合わされてよい。
同様に、本発明の複数の実施形態に係る上記の説明において、1または複数の様々な本発明の態様に係る理解を助けるよう、本開示を簡素化する意図で、様々な特徴は単一の実施形態、図、または説明において場合によってまとめられることを理解されたい。しかしながら、この開示方法は、特許請求された主題が、各請求項に明示的に記載されたものより、多くの特徴を必要とするという意図を反映するものと解釈されるべきではない。そうではなく、以降の特許請求の範囲が反映しているように、複数の発明的態様は、上記で開示されている単一の実施形態のすべての特徴より少ないものに存する。よって、詳細な説明の後に続く、特許請求の範囲は、本明細書において、この詳細な説明に明示的に組み込まれる。本明細書によれば、以下の各項目に記載の事項もまた開示される。
[項目1]
バスを介して、ホストメモリコントローラに連結される、メモリモジュールで使用されるデバイスであって、前記デバイスは、
ホストメモリコントローラに対する、最小パルス幅より大きいか等しいパルス幅を有するリクエスト信号を生成するメモリモジュールコントローラロジックを備えており、
前記最小パルス幅は、前記ホストメモリコントローラが前記リクエスト信号を検出することを保証するために必要な複数のクロックサイクルを備えており、
前記リクエスト信号の前記パルス幅は、前記ホストメモリコントローラに対する前記リクエスト信号に加え、少なくとも1つのファンクションを示す、デバイス。
[項目2]
前記リクエスト信号は、前記ホストメモリコントローラに対し、グラント信号を生成させ、
前記メモリモジュールコントローラロジックはさらに、前記グラント信号の受信に応答して、データを前記ホストメモリコントローラに送信する、項目1に記載のデバイス。
[項目3]
前記パルス幅は、前記ホストメモリコントローラに対し、前記リクエスト信号に応答して、前記グラント信号を送信することに加え、前記パルス幅によって示される前記少なくとも1つのファンクションを実行させる、項目2に記載のデバイス。
[項目4]
前記最小パルス幅に等しいパルス幅は、前記リクエスト信号のみを示し、追加のファンクションを示さない、項目1から3のいずれか一項に記載のデバイス。
[項目5]
前記最小パルス幅より大きい少なくとも第1のパルス幅を有する前記リクエスト信号を生成することは、少なくとも第1のファンクションを示し、
前記第1のパルス幅より大きい少なくとも第2のパルス幅を有する前記リクエスト信号を生成することは、少なくとも第2のファンクションを示し、
前記第2のパルス幅より大きい少なくとも第3のパルス幅を有する前記リクエスト信号を生成することは、少なくとも第3のファンクションを示す、項目1から4のいずれか一項に記載のデバイス。
[項目6]
前記第1のパルス幅を有する前記リクエスト信号が生成されるとき、前記第1のファンクションが示され、
前記第2のパルス幅を有する前記リクエスト信号が生成されるとき、前記第2のファンクションが示され、
前記第3のパルス幅を有する前記リクエスト信号が生成されるとき、前記第3のファンクションが示される、項目5に記載のデバイス。
[項目7]
生成される前記パルス幅は、前記最小パルス幅に等しい複数のパルス幅のうち1つまたは前記最小パルス幅の複数を備え、
前記複数のパルス幅は、前記ホストメモリコントローラによる前記パルス幅の検出を保証するために必要なクロックサイクルの最小数によって分割されており、
異なる複数の生成された前記パルス幅は、前記リクエスト信号内の複数の異なるファンクションをエンコードする、項目1から6のいずれか一項に記載のデバイス。
[項目8]
前記最小パルス幅は、2クロックを備え、
6、10、および14クロックのパルス幅のうちの1つのパルス幅で前記リクエスト信号を生成することは、前記ホストメモリコントローラが前記リクエスト信号の処理に加えて実行する異なるファンクションを示す、項目7に記載のデバイス。
[項目9]
前記リクエスト信号はクロックイネーブル信号を含む、項目1から8のいずれか一項に記載のデバイス。
[項目10]
バスを介して、少なくとも1つのメモリモジュールに連結される、デバイスであって、前記デバイスは、ホストメモリコントローラロジックを備えており、
前記ホストメモリコントローラロジックは、
前記メモリモジュールからの、最小パルス幅より大きいか等しいパルス幅を有するリクエスト信号を検出し、
前記リクエスト信号のパルス幅に対応するファンクションを決定し、
決定された前記ファンクションを実行するためのものであり、
前記最小パルス幅は、前記ホストメモリコントローラが前記リクエスト信号を検出することを保証するために必要な複数のクロックサイクルを有し、
前記リクエスト信号のパルス幅は、前記ホストメモリコントローラに対する前記リクエスト信号に加えて、少なくとも1つのファンクションを示す、デバイス。
[項目11]
前記ホストメモリコントローラロジックがさらに、
前記リクエスト信号の受信に応答して、前記バスを介して、前記メモリモジュールに送信するグラント信号を生成する、項目10に記載のデバイス。
[項目12]
前記ホストメモリコントローラロジックがさらに、
前記パルス幅が前記最小パルス幅に等しいことを決定し、
決定された前記ファンクションが、前記最小パルス幅に等しい前記リクエスト信号の前記パルス幅に応答して、追加のファンクションなしに、前記リクエスト信号を含む、項目10または11に記載のデバイス。
[項目13]
前記ホストメモリコントローラロジックがさらに、
前記パルス幅を決定し、
決定された前記ファンクションは、
第1のファンクション、
第2のファンクション、および
第3のファンクションのうち少なくとも1つを含んでおり、
前記第1のファンクションは、前記最小パルス幅より大きいか等しい少なくとも第1のパルス幅を含む前記決定されたパルス幅に応答し、
前記第2のファンクションは、前記第1のパルス幅より大きい少なくとも第2のパルス幅を含む前記決定されたパルス幅に応答し、
前記第3のファンクションは、前記第2のパルス幅より大きい少なくとも第3のパルス幅を含む前記決定されたパルス幅に応答する、項目10から12のいずれか一項に記載のデバイス。
[項目14]
前記第1のパルス幅を有する前記リクエスト信号が生成されるとき、前記第1のファンクションのみが示され、
前記第2のパルス幅を有する前記リクエスト信号が生成されるとき、前記第2のファンクションが示され、
前記第3のパルス幅を有する前記リクエスト信号が生成されるとき、前記第3のファンクションが示される、項目13に記載のデバイス。
[項目15]
バスを介して、ホストメモリコントローラと、第2のメモリモジュールとに連結される、第1のメモリモジュール内に実装されるデバイスであって、
前記デバイスは、メモリモジュールコントローラロジックを備えており、
前記メモリモジュールコントローラロジックは、
前記第1のメモリモジュールおよび前記第2のメモリモジュールの少なくとも1つにある少なくとも1つのコンポーネントに基づいて、タイミング調整を決定し、
前記第2のメモリモジュールにおける出力タイミングに一致させるべく、決定された前記タイミング調整に基づいて、前記ホストメモリコントローラに対する出力タイミングを調整する、ためのものである、デバイス。
[項目16]
前記タイミング調整を決定することは、
前記第2のメモリモジュールに含まれない、出力タイミングに影響を及ぼす少なくとも1つのコンポーネントを有する前記第1のメモリモジュールに応答して、前記タイミングを加速化させること、および
前記第1のメモリモジュールに含まれない、前記第2のメモリモジュールにおける前記出力タイミングに影響を及ぼす少なくとも1つのコンポーネントを有する前記第2のメモリモジュールに応答して、前記タイミングに遅延を追加すること、を含む、項目15に記載のデバイス。
[項目17]
前記タイミング調整を決定することは、前記タイミングを加速化させること、および前記遅延を追加することの両方を含み、
決定された前記タイミング調整は、前記加速化させことおよび前記遅延を追加することの正味を含む、項目16に記載のデバイス。
[項目18]
前記少なくとも1つのコンポーネントは、前記第1のメモリモジュール内にデータバッファを含み、
前記タイミング調整は、前記第2のメモリモジュールが前記第1のメモリモジュール内に含まれるようなデータバッファを含まない場合に、前記出力タイミングを遅延させることを含む、項目16に記載のデバイス。
[項目19]
前記少なくとも1つのコンポーネントは、前記第2のメモリモジュール内にレジスタを含み、
前記タイミング調整は、前記第2のメモリモジュールが前記第1のメモリモジュール内に含まれない前記レジスタを含む場合に、前記出力タイミングを遅延させることを含む、項目16に記載のデバイス。
[項目20]
前記第2のメモリモジュール内の前記レジスタは、コマンド、アドレス、および複数の制御バス上にある、項目19に記載のデバイス。
[項目21]
調整された前記タイミングを有する前記出力は、前記第1のメモリモジュールのデータバッファからの出力を含む、項目15から20のいずれか一項に記載のデバイス。
[項目22]
前記第1のメモリモジュールおよび前記第2のメモリモジュールは、複数の異なるタイプのDual in−Line Memory Module(DIMM)を含む、項目15から21のいずれか一項に記載のデバイス。
[項目23]
前記第2のメモリモジュールは、アンバッファードDIMM(UDIMM)、レジスタードDIMM(RDIMM)、およびload−reduced DIMM(LRDIMM)のうち1つを含む、項目22に記載のデバイス。
[項目24]
前記タイミング調整は、前記第1のメモリモジュールがデータバッファを含み、かつ、前記第2のメモリモジュールがUDIMMを含む場合に、前記出力タイミングを加速化させることを含む、項目23に記載のデバイス。
[項目25]
前記タイミング調整は、
前記第2のメモリモジュールがRDIMMを含み、かつ、前記第1のメモリモジュールがレジスタを含まない場合に、前記出力タイミングを遅延させること、および
前記第1のメモリモジュールが前記出力上にデータバッファを含む場合に、前記出力タイミングを加速化させること、を含む、項目23に記載のデバイス。
[項目26]
前記タイミング調整は、前記第2のメモリモジュールが前記LRDIMMを含み、かつ、前記第1のメモリモジュールが前記出力上にデータバッファを含まない場合に、前記出力タイミングを遅延させることを含む、項目23に記載のデバイス。
[項目27]
バスを介して、メモリモジュールに連結されるデバイスであって、
前記デバイスは、ホストメモリコントローラロジックを備えており、
前記ホストメモリコントローラロジックは、前記メモリモジュール内の複数のモードレジスタのうちの1つをプログラムすべく、チャネルを介して前記メモリモジュールにモードレジスタコマンドを送信するためのものであり、
前記モードレジスタコマンドは、前記複数のモードレジスタのうちの1つを示し、かつ、示された前記モードレジスタのためのデータを含む、デバイス。
[項目28]
前記メモリモジュールに対するバスが、複数のバス動作のために整備される前の前記メモリモジュールの初期化中に、前記モードレジスタコマンドが前記メモリモジュールに送信される、項目27に記載のデバイス。
[項目29]
前記モードレジスタコマンドは単一のサイクルコマンドを含み、かつ、
前記バスを介して、前記メモリモジュールと通信すべく、前記メモリモジュールの整備後、2サイクルコマンドが使用される、項目28に記載のデバイス。
[項目30]
前記複数のモードレジスタのうちの1つを示し、かつ、示された前記モードレジスタのためのデータを提供すべく、前記モードレジスタコマンドは、複数のアドレス入力信号および複数のコマンド入力信号を使用する、項目28に記載のデバイス。
[項目31]
使用する前記モードレジスタを示すべく、前記モードレジスタコマンドは、前記バス上の前記複数のコマンド入力信号を使用し、かつ、
示された前記モードレジスタのためのデータを提供すべく、前記モードレジスタコマンドは、前記バス上の前記複数のアドレス入力信号を使用する、項目30に記載のデバイス。
[項目32]
前記メモリモジュールは、第1のメモリモジュールを含み、かつ、前記モードレジスタコマンドは、第1のモードレジスタコマンドを含み、前記ホストメモリコントローラロジックはさらに、
バスを介して第2のメモリモジュールに第2のモードレジスタコマンドを送信し、
前記第1のモードレジスタコマンドおよび前記第2のモードレジスタコマンドは、同一フォーマットを有しており、
前記第2のモードレジスタコマンドは、前記第2のメモリモジュールに対し、モードレジスタ内の前記第2のモードレジスタコマンド内のデータを、前記第2のメモリモジュール上の複数のメモリチップのうちの1つに格納させる、項目27から31のいずれか一項に記載のデバイス。
[項目33]
前記メモリモジュール内に16個のモードレジスタが存在し、前記モードレジスタは、前記データを格納するための前記16個のモードレジスタのうちの1つを示す、4つの入力ビットを含む、項目27から32のいずれか一項に記載のデバイス。
[項目34]
バスを介して、ホストメモリコントローラと通信する、メモリモジュール内に実装されるデバイスであって、前記デバイスは、
複数のモードレジスタと、
メモリモジュールコントローラロジックと、を備えており、
前記メモリモジュールコントローラロジックは、
前記複数のモードレジスタのうちの1つをプログラムすべく、チャネルを介して前記ホストメモリコントローラからモードレジスタコマンドを受信し、
前記モードレジスタコマンド内に含まれるデータを、前記メモリモジュールコントローラ内の示された前記モードレジスタに書き込む、ためのものであり、
前記モードレジスタコマンドは、前記複数のモードレジスタのうちの1つを示し、かつ、示された前記モードレジスタのためのデータを含む、デバイス。
[項目35]
前記メモリモジュールに対するバスが、複数のバス動作のために整備される前の前記メモリモジュールの初期化中に、前記モードレジスタコマンドが受信される、項目34に記載のデバイス。
[項目36]
前記モードレジスタコマンドは単一のサイクルコマンドを含み、かつ、
前記バスを介して、前記メモリモジュールと、前記ホストメモリコントローラとの間で通信すべく、前記メモリモジュールの整備後、2サイクルコマンドが使用される、項目35に記載のデバイス。
[項目37]
前記複数のモードレジスタのうちの1つを示し、かつ、示された前記モードレジスタのための前記データを提供すべく、前記モードレジスタコマンドは、前記メモリモジュールに対する複数のアドレス入力信号および複数のコマンド入力信号を使用する、項目34から36のいずれか一項に記載のデバイス。
[項目38]
使用する前記モードレジスタを示すべく、前記モードレジスタコマンドは、前記バス上の前記複数のコマンド入力信号を使用し、かつ、
示された前記モードレジスタのための前記データを提供すべく、前記モードレジスタコマンドは、前記バス上の前記複数のアドレス入力信号を使用する、項目37に記載のデバイス。
[項目39]
バスを介して、メモリモジュールにデータを転送するためのデバイスであって、
前記デバイスは、ホストメモリコントローラロジックを備えており、
前記ホストメモリコントローラロジックは、
前記メモリモジュールのための前半のコマンドを前記バス上に第1のクロックサイクルで配置し、
前記前半のコマンドに対する、前記メモリモジュールのためのチップセレクトコマンドを前記バス上に配置し、
後半のコマンドを前記バス上に、前記第1のクロックサイクルの後の第2のクロックサイクルで配置する、ためのものであり、
前記メモリモジュールは、前記前半のコマンドを受け取ってから遅延間隔を置いて、前記後半のコマンドを受け取る、デバイス。
[項目40]
前記ホストメモリコントローラは、前記メモリモジュールに対し、前記後半のコマンドにアクセスするよう指示する、追加のチップセレクトコマンドを前記バス上に発行しない、項目39に記載のデバイス。
[項目41]
前記第2のクロックサイクルは、前記第1のクロックサイクルから1または2クロックであり、かつ、前記遅延間隔は、前記前半のコマンドが受け取られてから、1または2クロックサイクルである、項目39または40に記載のデバイス。
[項目42]
前記第2のクロックサイクルは、前記第1のクロックサイクルから1クロックであり、かつ、前記遅延間隔は、前記チップセレクトコマンドが通常のタイミングモードで受け取られてから、1クロックサイクルである、項目41に記載のデバイス。
[項目43]
前記ホストメモリコントローラロジックはさらに、高速タイミングモードを初期化し、
前記高速タイミングモードでは、
前記前半のコマンドおよび前記後半のコマンドは、2クロックサイクルでそれぞれ前記バス上に配置され、
前記チップセレクトコマンドは、前記前半のコマンドが前記バス上に配置されたときの前記第1のクロックサイクルから1クロックサイクルで、前記バス上に配置され、
前記第2のクロックサイクルは、前記第1のクロックサイクルから2クロックであり、かつ、
前記遅延間隔は、2クロックサイクルを有する、項目42に記載のデバイス。
[項目44]
前記ホストメモリコントローラロジックはさらに、
前記高速タイミングモードを示すべく、初期化中に前記メモリモジュールをプログラムし、かつ、
前記通常のタイミングモードを示すべく、初期化中に前記メモリモジュールをプログラムする、項目43に記載のデバイス。
[項目45]
前記前半のコマンドおよび前記後半のコマンドは、リードコマンドのための1つのアドレスに係る複数の部分を含む、項目39から44のいずれか一項に記載のデバイス。
[項目46]
バスを介して、ホストメモリコントローラと通信するメモリモジュールに実装されるデバイスであって、
前記デバイスは、メモリモジュールコントローラロジックを備えており、
前記メモリモジュールコントローラロジックは、
前記ホストメモリコントローラによって、第1のクロックサイクルでバス上に配置される前半のコマンドのためのチップセレクトコマンドを受信し、
前記チップセレクトコマンドに応答して、前記バス上の前記前半のコマンドを受け取り、かつ、
前記ホストメモリコントローラによって、前記第1のクロックサイクルの後の第2のクロックサイクルで前記バス上に配置される後半のコマンドを受け取る、ためのものであり、
前記第1のクロックサイクルの後の第2のクロックサイクルは、前記前半のコマンドの受け取りからの遅延間隔である、デバイス。
[項目47]
前記メモリモジュールは、前記ホストメモリコントローラからの追加のチップセレクト信号を自動的に受信することなく、前記バス上の前記後半のコマンドを自動的に受け取る、項目46に記載のデバイス。
[項目48]
前記第2のクロックサイクルは、前記第1のクロックサイクルから1または2クロックであり、かつ、前記遅延間隔は、前記チップセレクトコマンドが受け取られてから、1または2クロックサイクルである、項目46または47に記載のデバイス。
[項目49]
前記第2のクロックサイクルは、前記第1のクロックサイクルから1クロックであり、かつ、前記遅延間隔は、前記チップセレクトコマンドが通常のタイミングモードで受け取られてから、1クロックサイクルである、項目48に記載のデバイス。
[項目50]
前記メモリモジュールコントローラロジックはさらに、高速タイミングモードを初期化し、
前記高速タイミングモードでは、
前記前半のコマンドおよび前記後半のコマンドは、2クロックサイクルでそれぞれ前記バス上に配置され、
前記チップセレクトコマンドは、前記前半のコマンドが前記バス上に配置されたときの前記第1のクロックサイクルから1クロックサイクルで、前記バス上に配置され、
第2のクロックサイクルは、前記第1のクロックサイクルから2クロックであり、かつ、
前記後半のコマンドを受け取る時を決定するために前記メモリモジュールによって使用される前記遅延間隔は、前記前半のコマンドの受け取りから2クロックサイクルを有する、項目49に記載のデバイス。
[項目51]
前記メモリモジュールコントローラロジックはさらに、
前記タイミングモードが前記高速タイミングモードかどうかを決定し、前記タイミングモードが前記高速タイミングモードであるとの決定に応答して、前記高速タイミングモードが初期化され、
前記タイミングモードが前記高速タイミングモードでないとの決定に応答して、前記通常のタイミングモードで動作する、項目50に記載のデバイス。
[項目52]
前記前半のコマンドおよび前記後半のコマンドは、リードコマンドのための1つのアドレスに係る複数の部分を含む、項目46から51のいずれか一項に記載のデバイス。
[項目53]
バスを介して、ホストメモリコントローラから送信される複数のコマンド内の複数のアドレスを処理するためのメモリモジュール内のデバイスであって、
前記デバイスは、メモリモジュールコントローラを備えており、
前記メモリモジュールコントローラは、
前記メモリモジュールための複数の高アドレスビットが利用可能かどうかを決定し、
前記メモリモジュール内の第1のアドレス空間を指定するために、前記複数の高アドレスビットが利用可能でないとの決定に応答して、前記ホストメモリコントローラから通信される複数のアドレスを有する、少なくとも1つの高アドレスビットのための予め定められた値を使用し、かつ、
第2のアドレス空間を指定するために、前記複数の高アドレスビットが利用可能であるとの決定に応答して、前記少なくとも1つの高アドレスビットのために使用される、少なくとも1つのピン上の、前記ホストメモリコントローラから通信される複数の値を使用する、ためのものであり、
前記第2のアドレス空間は、前記第1のアドレス空間よりも大きい、デバイス。
[項目54]
前記メモリモジュールコントローラはさらに、
前記複数の高アドレスビットが利用可能であることを示すコマンドを、前記ホストメモリコントローラから受信し、かつ、
前記複数の高アドレスビットが利用可能であることを示すべく、レジスタを設定し、
前記複数の高アドレスビットが利用可能かどうかの前記決定は、前記レジスタ内の値を読み取ることによってなされる、項目53に記載のデバイス。
[項目55]
前記バスの複数の機能のうちの少なくとも1つ、および前記メモリモジュールのインターフェース構成に基づいて、前記複数の高アドレスビットは利用可能でない、項目54に記載のデバイス。
[項目56]
前記メモリモジュールが、前記バス上でサポートされるものより少ないアドレス指定のために使用されるピンを有する場合、前記複数の高アドレスビットは利用可能でない、項目55に記載のデバイス。
[項目57]
前記メモリモジュールが、Small Outline Dual In−line Memory Module(SODIMM)を含む場合、前記複数の高アドレスビットは利用可能でない、項目56に記載のデバイス。
[項目58]
前記コマンドが、モードレジスタセットコマンド(MRSコマンド)を含み、かつ、
設定される前記レジスタは、前記MRSコマンドによって設定される複数のモードレジスタのうちの1つを含む、項目54に記載のデバイス。
[項目59]
前記メモリモジュールコントローラは、前記バス上および前記メモリモジュール上で、サポートされる異なる複数のインターフェース構成のための異なる複数のアドレス指定機能をサポートする、項目53から58のいずれか一項に記載のデバイス。
[項目60]
バスを介してメモリモジュールに連結されるデバイスであって、
前記デバイスは、ホストメモリコントローラロジックを備えており、
前記ホストメモリコントローラロジックは、
実行すべき少なくとも1つの電力管理動作を示すプリクロックイネーブル(CKE)コマンドを、前記バスを介して、前記メモリモジュールに送信し、かつ、
メモリモジュールコントローラに対し、CKEロー信号に応答して、示される前記少なくとも1つの電力管理動作を実行させるべく、前記プリクロックイネーブル(CKE)コマンドの送信後、前記CKEロー信号を前記メモリモジュールにアサートする、デバイス。
[項目61]
前記プリクロックイネーブル(CKE)コマンドは、複数の電力管理状態のうちの1つの電力管理状態を示し、
示される前記少なくとも1つの電力管理動作は、前記メモリモジュールを、示される前記1つの電力管理状態に構成すべく実行される複数の動作を含む、項目60に記載のデバイス。
[項目62]
前記複数の電力管理状態の各々は、複数の異なるスリープ状態を含み、前記複数の異なるスリープ状態においては、複数の異なるレベルの電力が前記メモリモジュール内の複数の異なるコンポーネントに適用され、
前記CKEロー信号を送信することは、前記メモリモジュールコントローラに対し、前記プリクロックイネーブル(CKE)コマンド内で指定された電力管理スリープ状態に入るための複数の動作を実行させる、項目61に記載のデバイス。
[項目63]
バスを介して、ホストメモリコントローラに連結される、メモリモジュールコントローラ内に実装されるデバイスであって、
前記デバイスは、メモリモジュールコントローラロジックを備えており、
前記メモリモジュールコントローラロジックは、
実行すべき少なくとも1つの電力管理動作を示す、プリクロックイネーブル(CKE)コマンドを受信し、
前記プリクロックイネーブル(CKE)コマンドの受信後、CKEロー信号を検出し、かつ、
前記CKEロー信号に応答して、前記プリクロックイネーブル(CKE)コマンド内の示される前記少なくとも1つの電力管理動作を実行する、ためのものである、デバイス。
[項目64]
前記メモリモジュールコントローラロジックはさらに、
前記少なくとも1つの電力管理動作を示すべく、レジスタを設定し、
前記CKEロー信号に応答して、前記レジスタを読み取ることによって、実行すべき前記少なくとも1つの電力管理動作を決定する、項目63に記載のデバイス。
[項目65]
前記メモリモジュールコントローラロジックはさらに、
実行すべき少なくとも1つの電力管理動作を示さない前記レジスタに応答して、既定のCKEロー処理動作を実行する、項目64に記載のデバイス。
[項目66]
前記プリクロックイネーブル(CKE)コマンドは、複数の電力管理状態のうちの1つの電力管理状態を示し、
実行される前記少なくとも1つの電力管理動作は、前記メモリモジュールを、示される前記1つの電力管理状態に構成すべく実行される複数の動作を含む、項目63から65のいずれか一項に記載のデバイス。
[項目67]
複数の電力管理状態の各々は、複数の異なるスリープ状態を含み、前記複数の異なるスリープ状態においては、複数の異なるレベルの電力が前記メモリモジュール内の複数の異なるコンポーネントに適用され、
示される前記少なくとも1つの電力管理動作を実行することは、前記プリクロックイネーブル(CKE)コマンド内で指定された電力管理スリープ状態に入る、項目63から66のいずれか一項に記載のデバイス。
[項目68]
バスを介して、メモリモジュールに連結される、デバイスであって、
前記デバイスは、ホストメモリコントローラを備えており、
前記ホストメモリコントローラは、
前記メモリモジュールから戻されるリードデータパケットが少なくとも1つのライトクレジットを示すかどうかを決定し、かつ、
前記リードデータパケットが少なくとも1つのライトクレジットを示すとの決定に応答して、複数のライトクレジットをインクリメントする、デバイス。
[項目69]
前記ホストメモリコントローラはさらに、
複数の利用可能なライトクレジットが存在するとの決定に応答して、ライトコマンドを前記メモリモジュールに送信し、かつ、
前記ライトコマンドの送信に応答して、前記複数のライトクレジットをデクリメントする、項目68に記載のデバイス。
[項目70]
前記リードデータパケットは、前記メモリモジュール内のデータを読み取るために、前記ホストメモリコントローラが、前記メモリモジュールに送信したリードリクエストに応答して戻される、項目68または69に記載のデバイス。
[項目71]
複数の前記リードデータパケットは、複数のライトクレジットを示す、項目68から70のいずれか一項に記載のデバイス。
[項目72]
バスを介して、ホストメモリコントローラからの複数のライトリクエストを処理するためのメモリモジュール内のデバイスであって、前記デバイスは、
ライトクレジットカウンタと、
メモリモジュールコントローラロジックと、を備えており、
前記メモリモジュールコントローラロジックは、前記ホストメモリコントローラからのライトリクエストの完了に応答して、前記ライトクレジットカウンタをインクリメントし、
前記ホストメモリコントローラからのリードリクエストに応答して、リードデータパケットを生成し、
前記ホストメモリコントローラに戻すための前記リードデータパケット内の前記ライトクレジットカウンタに示される複数のライトクレジットを示すためのものである、デバイス。
[項目73]
前記メモリモジュールコントローラロジックはさらに、
ライトリクエストのためのライトバッファ内のライトデータを、複数のメモリストレージ要素にデステージすることによって、前記ライトリクエストを完了する、項目72に記載のデバイス。
[項目74]
複数のライトクレジットが前記リードデータパケット内に示される、項目72または73に記載のデバイス。
[項目75]
前記メモリモジュールコントローラロジックはさらに、
前記ライトクレジットカウンタが閾値を超えるかどうかを決定し、および、
前記ライトクレジットカウンタが前記閾値を超えるという決定に応答して、前記ライトクレジットカウンタ内に少なくとも1つの前記ライトクレジットを戻すパケットを前記ホストメモリコントローラに送信する、項目72から74のいずれか一項に記載のデバイス。
[項目76]
前記ライトクレジットカウンタが前記閾値を超える場合に、前記ホストに送信される、ライトクレジット数を示す前記パケットは、リードデータを有さないリードデータパケットを含む、項目75に記載のデバイス。
[項目77]
バスを介してホストメモリコントローラと通信するメモリモジュール内のデバイスであって、前記デバイスは、メモリモジュールコントローラを備えており、
前記メモリモジュールコントローラは、
エラーの検出に応答して、複数のエラー処理動作が実行されていることを、前記ホストメモリコントローラに対し、シグナリングすべく、第1のエラー信号を前記バス上のエラーピンにアサートし、
エラーの検出に応答して、前記バスを初期状態に戻すべく、複数のエラー処理動作を実行し、かつ、
複数のエラー処理動作が完了し、かつ、前記バスが前記初期状態に戻されたことをシグナリングすべく、第2のエラー信号を前記バス上の前記エラーピンにアサートする、デバイス。
[項目78]
前記第1のエラー信号は、エラー信号ローを含み、かつ、前記第2のエラー信号は、エラー信号ハイを含む、項目77に記載のデバイス。
[項目79]
前記複数のエラー処理動作は、
すべての保留中のリードリクエストを破棄し、
ライトバッファ内の複数のライトを、前記メモリモジュール内の複数のストレージ要素にデステージし、かつ、
複数のメモリモジュールコントローラバッファをリセットする、項目77または78に記載のデバイス。
[項目80]
前記複数のエラー処理動作は、戻すための複数のライトクレジットのためのライトクレジットカウンタをリセットすることを含む、項目77から79のいずれか一項に記載のデバイス。
[項目81]
前記ホストメモリコントローラからの、前記第1のエラー信号が受信されたという受信確認の受信に応答して、前記複数のエラー処理動作が実行される、項目77から80のいずれか一項に記載のデバイス。
[項目82]
バスを介してメモリモジュールに連結されるデバイスであって、
前記デバイスは、ホストメモリコントローラロジックを備えており、
前記ホストメモリコントローラロジックは、
エラーピン上に、前記メモリモジュールからの第1のエラー信号を検出し、
前記第1のエラー信号に応答して、前記メモリモジュールに対する、複数のリードおよびライト動作を中断し、
前記エラーピン上に、前記メモリモジュールからの第2のエラー信号を検出し、かつ、
前記第2のエラー信号の検出に応答して、前記メモリモジュールに対する、複数のリードおよびライト動作を再開する、ためのものである、デバイス。
[項目83]
前記第1のエラー信号は、エラー信号ローを含み、かつ、前記第2のエラー信号は、エラー信号ハイを含む、項目82に記載のデバイス。
[項目84]
前記ホストメモリコントローラロジックはさらに、
前記第1のエラー信号が受信されたという受信確認を前記メモリモジュールに送信し、
前記受信確認の送信に応答して、前記複数のリードおよびライト動作を中断することおよび複数のエラー処理動作を実行することが行われる、項目82または83に記載のデバイス。
[項目85]
前記ホストメモリコントローラロジックはさらに、
前記第1のエラー信号に応答して、複数のライトコマンドの送信可能時を示す複数のライトクレジットを最大量に設定する、項目82から84のいずれか一項に記載のデバイス。
[項目86]
バスを介して、ホストメモリコントローラと通信するメモリモジュール内のデバイスであって、
前記デバイスは、メモリモジュールコントローラロジックを備えており、
前記メモリモジュールコントローラロジックは、
前記メモリモジュール内に、ライトリクエストのためのライトエラーを検出し、かつ、
前記ライトエラーの検出に応答して、前記バス上に、前記ホストメモリコントローラに対するエラー信号をアサートする、デバイス。
[項目87]
前記エラー信号は、検出された前記ライトエラーに関する、前記ホストメモリコントローラとの唯一の通信である、項目86に記載のデバイス。
[項目88]
前記エラー信号は、前記バス上のエラーピン上にアサートされたエラーロー信号を含む、項目86または87に記載のデバイス。
[項目89]
前記ライトリクエストの予め定められた時間内に前記エラー信号を送信しないことは、前記ライトリクエストが正常に完了したことを示す、項目86から88のいずれか一項に記載のデバイス。
[項目90]
バスを介して、メモリモジュールに連結されるデバイスであって、
前記デバイスは、ホストメモリコントローラロジックを備えており、
前記ホストメモリコントローラロジックは、
ライトリクエストを前記メモリモジュールに送信し、
前記メモリモジュールからアサートされたエラー信号を検出し、かつ、
前記ライトリクエストの送信の予め定められた時間内に前記エラー信号を検出することに応答して、前記ライトリクエストを再送信する、デバイス。
[項目91]
前記エラー信号は、前記バス上のエラーピン上にアサートされたエラーロー信号を含む、項目90に記載のデバイス。
[項目92]
前記ホストメモリコントローラロジックはさらに、
前記予め定められた時間後に、前記エラー信号を受信しないことに応答して、前記ライトリクエストを正常に完了したものとして処理する、項目90または91に記載のデバイス。
[項目93]
ライトリクエストエラーに無関係のエラーに対し、前記エラー信号が送信された場合において、前記予め定められた時間内に、前記エラー信号が受信されたときは、前記ライトリクエストが再送信される、項目90から92のいずれか一項に記載のデバイス。
[項目94]
前記ライトリクエストを前記再送信することは、前記エラー信号の前記予め定められた時間内に送信された複数のライトリクエストを決定することを含み、
前記再送信は、決定された前記複数のライトリクエストを再送信することを含む、項目90から93のいずれか一項に記載のデバイス。
[項目95]
前記ホストメモリコントローラロジックはさらに、
前記エラー信号に対し決定された、複数のライトリクエストエラーに無関係のエラー処理動作を実行する、項目90から94のいずれか一項に記載のデバイス。
[項目96]
前記ライトリクエストを再送信することに加え、複数のライトエラーに無関係の前記エラー処理動作が実行される、項目95に記載のデバイス。
[項目97]
バスを介してホストメモリコントローラと通信するメモリモジュール内のデバイスであって、前記デバイスは、
スクランブラシードと、
メモリモジュールコントローラロジックと、を備えており、
前記メモリモジュールコントローラロジックは、
リードリクエストに応答して、前記メモリモジュールのストレージ要素に格納されたデータを取得し、
リードデータパケット内に含めるべく、前記スクランブラシードを使用して、取得された前記データをスクランブルし、
スクランブルされた前記データを有する前記リードデータパケットを、前記ホストメモリコントローラに戻し、かつ、
前記スクランブラシードを更新する、ためのものである、デバイス。
[項目98]
前記スクランブラシードは、前記リードデータパケット内に含まれる前記リードデータのアドレスをスクランブルする、項目97に記載のデバイス。
[項目99]
前記スクランブラシードを更新することは、前記スクランブラシードを疑似ランダム方式に更新することを含む、項目97または98に記載のデバイス。
[項目100]
前記メモリモジュールコントローラロジックは、前記リードデータをスクランブルするためのスクランブラアルゴリズムを使用し、
前記スクランブラアルゴリズムは、前記リードデータパケット内のスクランブルされた前記リードデータをスクランブル/デスクランブルするための、前記ホストメモリコントローラにおいて実装された同一のスクランブラ/デスクランブラアルゴリズムを含んでいる、項目97から99のいずれか一項に記載のデバイス。
[項目101]
前記メモリモジュールコントローラロジックは、
前記メモリモジュール内のライトアドレスを示すスクランブルされたライトデータを有するライトリクエストを受信し、
アンスクランブルされたライトデータを生成すべく、前記ライトアドレスを使用して、スクランブルされた前記ライトデータをデスクランブルし、かつ、
前記メモリモジュール内の前記ライトアドレスに、アンスクランブルされた前記ライトデータを格納する、項目97から100のいずれか一項に記載のデバイス。
[項目102]
バスを介して、メモリモジュールと通信するデバイスであって、
前記デバイスは、
スクランブラシードと、
ホストメモリコントローラロジックと、を備えており、
前記ホストメモリコントローラロジックは、
リードリクエストに応答して、戻されるスクランブルされたリードデータを有するリードデータパケットを受信し、
前記リードデータパケットの受信に応答して、前記スクランブラシードを更新し、かつ、
スクランブルされた前記リードデータをデスクランブルすべく、前記スクランブラシードを使用する、ためのものである、デバイス。
[項目103]
前記リードデータのアドレスが前記リードデータパケット内でスクランブルされており、
スクランブルされた前記リードデータをデスクランブルすることはさらに、前記リードデータパケットが戻されるための前記リードリクエストを決定すべく、スクランブルされた前記アドレスをデスクランブルすることを含む、項目102に記載のデバイス。
[項目104]
前記スクランブラシードを更新することは、前記スクランブラシードを疑似ランダム方式に更新することを含む、項目103に記載のデバイス。
[項目105]
前記ホストメモリコントローラロジックは、前記リードデータをスクランブルすべく、スクランブラアルゴリズムを使用し、
前記スクランブラアルゴリズムは、前記リードデータパケット内のスクランブルされた前記リードデータをスクランブル/デスクランブルするための、前記ホストメモリコントローラにおいて実装された同一のスクランブラ/デスクランブラアルゴリズムを含む、項目102から104のいずれか一項に記載のデバイス。
[項目106]
バスを介してホストメモリコントローラと通信するメモリモジュール内のデバイスであって、
前記デバイスは、メモリモジュールコントローラロジックを備えており、
前記メモリモジュールコントローラロジックは、
第1のインターフェースパラメータを示すインターフェースパラメータに応答して、前記バスを介してデータを送信するために使用する第1のバス幅を有する第1のバスインターフェース構成を選択し、かつ、
第2のインターフェースパラメータを示す前記インターフェースパラメータに応答して、前記バスを介してデータを送信するために使用する第2のバス幅を有する第2のバスインターフェース構成を選択するためのものであり、
前記第1のバス幅は、前記第2のバス幅より、さらに少ない複数のビットを有する、デバイス。
[項目107]
前記メモリモジュールコントローラロジックはさらに、
前記第1のインターフェースパラメータを示す前記インターフェースパラメータに応答して、転送リクエストを実行すべく、前記第1のバスインターフェース構成のための第1の転送数を生成し、
前記第2のインターフェースパラメータを示す前記インターフェースパラメータに応答して、前記転送リクエストを実行すべく、前記第1のバスインターフェース構成のための第2の転送数を生成し、
前記第1の転送数は、前記第2の転送数より大きい、項目106に記載のデバイス。
[項目108]
前記メモリモジュールコントローラロジックはさらに、
第3のインターフェースパラメータを示すインターフェースパラメータに応答して、前記バスを介してデータを送信するために使用する第3のバス幅を有する第3のバスインターフェース構成を選択し、
前記第2のバス幅は、前記第3のバス幅より、さらに少ない複数のビットを有する、項目106または107に記載のデバイス。
[項目109]
前記第1のバス幅は9ビット、前記第2のバス幅は18ビット、および前記第3のバス幅は72ビットを含む、項目108に記載のデバイス。
[項目110]
前記メモリモジュールコントローラロジックはさらに、
前記バス上の、受信された少なくとも1つの信号に基づいて、前記インターフェースパラメータを設定する、項目106から109のいずれか一項に記載のデバイス。
[項目111]
前記メモリモジュールコントローラロジックはさらに、
前記バスにアクセスすることによって、前記バスのバス幅を決定し、
前記インターフェースパラメータは、決定された前記バス幅を示す、項目106から110のいずれか一項に記載のデバイス。
[項目112]
前記メモリモジュールコントローラロジックはさらに、
少なくとも1つのストラッピングピン上にアサートされた信号に基づいて、前記インターフェースパラメータを設定し、
前記少なくとも1つのストラッピングピンは前記バスの外部にあり、前記メモリモジュールに連結されており、前記バスの前記第1のバスインターフェース構成および前記第2のバスインターフェース構成の少なくとも1つを示す、項目106から111のいずれか一項に記載のデバイス。

Claims (14)

  1. バスを介して、ホストメモリコントローラに連結される、メモリモジュールで使用されるデバイスであって、前記デバイスは、
    ホストメモリコントローラに対する、最小パルス幅より大きいか等しいパルス幅を有するリクエスト信号を生成するメモリモジュールコントローラロジックを備えており、
    前記最小パルス幅は、前記ホストメモリコントローラが前記リクエスト信号を検出することを保証するために必要な複数のクロックサイクルを備えており、
    前記リクエスト信号の前記パルス幅は、前記ホストメモリコントローラに対する前記リクエスト信号に加え、少なくとも1つのファンクションを示す、デバイス。
  2. 前記リクエスト信号は、前記ホストメモリコントローラに対し、グラント信号を生成させ、
    前記メモリモジュールコントローラロジックはさらに、前記グラント信号の受信に応答して、データを前記ホストメモリコントローラに送信する、請求項1に記載のデバイス。
  3. 前記パルス幅は、前記ホストメモリコントローラに対し、前記リクエスト信号に応答して、前記グラント信号を送信することに加え、前記パルス幅によって示される前記少なくとも1つのファンクションを実行させる、請求項2に記載のデバイス。
  4. 前記最小パルス幅に等しいパルス幅は、前記リクエスト信号のみを示し、追加のファンクションを示さない、請求項1から3のいずれか一項に記載のデバイス。
  5. 前記最小パルス幅より大きい少なくとも第1のパルス幅を有する前記リクエスト信号を生成することは、少なくとも第1のファンクションを示し、
    前記第1のパルス幅より大きい少なくとも第2のパルス幅を有する前記リクエスト信号を生成することは、少なくとも第2のファンクションを示し、
    前記第2のパルス幅より大きい少なくとも第3のパルス幅を有する前記リクエスト信号を生成することは、少なくとも第3のファンクションを示す、請求項1から4のいずれか一項に記載のデバイス。
  6. 前記第1のパルス幅を有する前記リクエスト信号が生成されるとき、前記第1のファンクションが示され、
    前記第2のパルス幅を有する前記リクエスト信号が生成されるとき、前記第2のファンクションが示され、
    前記第3のパルス幅を有する前記リクエスト信号が生成されるとき、前記第3のファンクションが示される、請求項5に記載のデバイス。
  7. 生成される前記パルス幅は、前記最小パルス幅に等しい複数のパルス幅のうち1つまたは前記最小パルス幅の複数を備え、
    前記複数のパルス幅は、前記ホストメモリコントローラによる前記パルス幅の検出を保証するために必要なクロックサイクルの最小数によって分割されており、
    異なる複数の生成された前記パルス幅は、前記リクエスト信号内の複数の異なるファンクションをエンコードする、請求項1から6のいずれか一項に記載のデバイス。
  8. 前記最小パルス幅は、2クロックを備え、
    6、10、および14クロックのパルス幅のうちの1つのパルス幅で前記リクエスト信号を生成することは、前記ホストメモリコントローラが前記リクエスト信号の処理に加えて実行する異なるファンクションを示す、請求項7に記載のデバイス。
  9. 前記リクエスト信号はクロックイネーブル信号を含む、請求項1から8のいずれか一項に記載のデバイス。
  10. バスを介して、少なくとも1つのメモリモジュールに連結される、デバイスであって、前記デバイスは、ホストメモリコントローラロジックを備えており、
    前記ホストメモリコントローラロジックは、
    前記メモリモジュールからの、最小パルス幅より大きいか等しいパルス幅を有するリクエスト信号を検出し、
    前記リクエスト信号のパルス幅に対応するファンクションを決定し、
    決定された前記ファンクションを実行するためのものであり、
    前記最小パルス幅は、前記ホストメモリコントローラが前記リクエスト信号を検出することを保証するために必要な複数のクロックサイクルを有し、
    前記リクエスト信号のパルス幅は、前記ホストメモリコントローラに対する前記リクエスト信号に加えて、少なくとも1つのファンクションを示す、デバイス。
  11. 前記ホストメモリコントローラロジックがさらに、
    前記リクエスト信号の受信に応答して、前記バスを介して、前記メモリモジュールに送信するグラント信号を生成する、請求項10に記載のデバイス。
  12. 前記ホストメモリコントローラロジックがさらに、
    前記パルス幅が前記最小パルス幅に等しいことを決定し、
    決定された前記ファンクションが、前記最小パルス幅に等しい前記リクエスト信号の前記パルス幅に応答して、追加のファンクションなしに、前記リクエスト信号を含む、請求項10または11に記載のデバイス。
  13. 前記ホストメモリコントローラロジックがさらに、
    前記パルス幅を決定し、
    決定された前記ファンクションは、
    第1のファンクション、
    第2のファンクション、および
    第3のファンクションのうち少なくとも1つを含んでおり、
    前記第1のファンクションは、前記最小パルス幅より大きいか等しい少なくとも第1のパルス幅を含む前記決定されたパルス幅に応答し、
    前記第2のファンクションは、前記第1のパルス幅より大きい少なくとも第2のパルス幅を含む前記決定されたパルス幅に応答し、
    前記第3のファンクションは、前記第2のパルス幅より大きい少なくとも第3のパルス幅を含む前記決定されたパルス幅に応答する、請求項10から12のいずれか一項に記載のデバイス。
  14. 前記第1のパルス幅を有する前記リクエスト信号が生成されるとき、前記第1のファンクションのみが示され、
    前記第2のパルス幅を有する前記リクエスト信号が生成されるとき、前記第2のファンクションが示され、
    前記第3のパルス幅を有する前記リクエスト信号が生成されるとき、前記第3のファンクションが示される、請求項13に記載のデバイス。
JP2016500074A 2013-03-15 2013-03-15 デバイス Expired - Fee Related JP6139010B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/032633 WO2014143056A1 (en) 2013-03-15 2013-03-15 A memory system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017087729A Division JP6370958B2 (ja) 2017-04-26 2017-04-26 デバイス

Publications (2)

Publication Number Publication Date
JP2016514320A JP2016514320A (ja) 2016-05-19
JP6139010B2 true JP6139010B2 (ja) 2017-05-31

Family

ID=51537392

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016500074A Expired - Fee Related JP6139010B2 (ja) 2013-03-15 2013-03-15 デバイス

Country Status (8)

Country Link
US (11) US9990246B2 (ja)
EP (1) EP2973571B1 (ja)
JP (1) JP6139010B2 (ja)
KR (2) KR101670917B1 (ja)
CN (1) CN104981872B (ja)
BR (4) BR122016006764B1 (ja)
RU (1) RU2628124C2 (ja)
WO (1) WO2014143056A1 (ja)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9990246B2 (en) 2013-03-15 2018-06-05 Intel Corporation Memory system
WO2014193574A1 (en) * 2013-05-13 2014-12-04 Rambus Inc. Buffer circuit with data bit inversion
US9740423B2 (en) * 2013-07-26 2017-08-22 Hitachi, Ltd. Computer system
IN2013CH04449A (ja) * 2013-09-30 2015-04-03 Empire Technology Dev Llc
US9484070B2 (en) * 2014-04-30 2016-11-01 Micron Technology, Inc. Apparatuses supporting multiple interface types and methods of operating the same
WO2016081192A1 (en) * 2014-11-20 2016-05-26 Rambus Inc. Memory systems and methods for improved power management
US10528410B2 (en) * 2014-12-16 2020-01-07 Intel Corporation Apparatus, method and system to exchange error information in a unified protocol communication
US9524249B2 (en) * 2014-12-23 2016-12-20 Intel Corporation Memory encryption engine integration
WO2016122498A1 (en) 2015-01-28 2016-08-04 Hewlett-Packard Development Company, L.P. Supporting differfent types of memory devices
US9594689B2 (en) * 2015-02-09 2017-03-14 International Business Machines Corporation Designated cache data backup during system operation
US10387259B2 (en) 2015-06-26 2019-08-20 Intel Corporation Instant restart in non volatile system memory computing systems with embedded programmable data checking
JP2017045311A (ja) * 2015-08-27 2017-03-02 株式会社東芝 メモリシステム
US10031677B1 (en) * 2015-10-14 2018-07-24 Rambus Inc. High-throughput low-latency hybrid memory module
CN106611608B (zh) * 2015-10-23 2019-01-15 群联电子股份有限公司 存储器控制电路单元、存储器储存装置与数据传输方法
US9792224B2 (en) 2015-10-23 2017-10-17 Intel Corporation Reducing latency by persisting data relationships in relation to corresponding data in persistent memory
JP2017097825A (ja) * 2015-11-16 2017-06-01 株式会社東芝 ホスト機器および拡張デバイス
US10503686B2 (en) * 2015-12-09 2019-12-10 Microchip Technology Incorporated SPI interface with automatic slave select generation
US9785359B2 (en) * 2016-02-26 2017-10-10 Intel Corporation Sending packets using optimized PIO write sequences without sfences and out of order credit returns
US10163508B2 (en) 2016-02-26 2018-12-25 Intel Corporation Supporting multiple memory types in a memory slot
US10621119B2 (en) 2016-03-03 2020-04-14 Samsung Electronics Co., Ltd. Asynchronous communication protocol compatible with synchronous DDR protocol
US10592114B2 (en) 2016-03-03 2020-03-17 Samsung Electronics Co., Ltd. Coordinated in-module RAS features for synchronous DDR compatible memory
US10310547B2 (en) * 2016-03-05 2019-06-04 Intel Corporation Techniques to mirror a command/address or interpret command/address logic at a memory device
US10152237B2 (en) * 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
KR102525229B1 (ko) 2016-05-13 2023-04-25 에스케이하이닉스 주식회사 메모리 모듈 및 이를 포함하는 시스템
US10163485B2 (en) * 2016-05-25 2018-12-25 Mediatek Inc. Memory module, memory controller and associated control method for read training technique
US10198204B2 (en) 2016-06-01 2019-02-05 Advanced Micro Devices, Inc. Self refresh state machine MOP array
US10459855B2 (en) 2016-07-01 2019-10-29 Intel Corporation Load reduced nonvolatile memory interface
KR20180021284A (ko) * 2016-08-18 2018-03-02 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US20180059933A1 (en) * 2016-08-26 2018-03-01 Sandisk Technologies Llc Electrically-Buffered NV-DIMM and Method for Use Therewith
US10359933B2 (en) * 2016-09-19 2019-07-23 Micron Technology, Inc. Memory devices and electronic systems having a hybrid cache including static and dynamic caches with single and multiple bits per cell, and related methods
CN107885671B (zh) * 2016-09-30 2021-09-14 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
US10521351B2 (en) * 2017-01-12 2019-12-31 International Business Machines Corporation Temporarily suppressing processing of a restrained storage operand request
US10180793B2 (en) * 2017-01-31 2019-01-15 Hewlett Packard Enterprise Development Lp Performance attributes for memory
US10846018B2 (en) * 2017-04-05 2020-11-24 Mediatek Inc. Memory device, memory controller and associated memory system operated according to selected clock signals
JP6780897B2 (ja) 2017-04-14 2020-11-04 ホアウェイ・テクノロジーズ・カンパニー・リミテッド メモリリフレッシュ技術及びコンピュータシステム
CN107291421A (zh) * 2017-06-09 2017-10-24 中国电子科技集团公司第四十研究所 一种可编程图形序列发生系统及方法
US10162406B1 (en) * 2017-08-31 2018-12-25 Micron Technology, Inc. Systems and methods for frequency mode detection and implementation
JP2019046051A (ja) * 2017-08-31 2019-03-22 東芝メモリ株式会社 メモリ装置およびデータ処理装置
US10908820B2 (en) * 2017-09-14 2021-02-02 Samsung Electronics Co., Ltd. Host-based and client-based command scheduling in large bandwidth memory systems
US10996888B2 (en) * 2017-10-31 2021-05-04 Qualcomm Incorporated Write credits management for non-volatile memory
US10769074B2 (en) 2017-11-09 2020-09-08 Microsoft Technology Licensing, Llc Computer memory content movement
DE102018124375A1 (de) * 2017-11-21 2019-05-23 Samsung Electronics Co., Ltd. Betriebsverfahren eines signalempfängers, pulsbreitensteuerungund elektronische vorrichtung mit denselben
KR102370278B1 (ko) * 2017-11-30 2022-03-07 에스케이하이닉스 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 그의 동작방법
KR102493964B1 (ko) 2017-12-18 2023-02-01 삼성전자주식회사 스토리지 컨트롤러, 그것을 포함하는 스토리지 장치, 및 스토리지 컨트롤러의 동작 방법
US11226768B2 (en) * 2018-01-04 2022-01-18 Montage Technology Co., Ltd. Memory controller and method for accessing memory module
US10929029B2 (en) 2018-01-04 2021-02-23 Montage Technology Co., Ltd. Memory controller and method for accessing memory modules and processing sub-modules
CN110008147B (zh) * 2018-01-04 2021-11-19 澜起科技股份有限公司 存储器控制器以及用于对存储模块进行访问的方法
US11048645B2 (en) 2018-02-01 2021-06-29 Samsung Electronics Co., Ltd. Memory module, operation method therof, and operation method of host
US11099995B2 (en) 2018-03-28 2021-08-24 Intel Corporation Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory
US10714159B2 (en) * 2018-05-09 2020-07-14 Micron Technology, Inc. Indication in memory system or sub-system of latency associated with performing an access command
US10963404B2 (en) 2018-06-25 2021-03-30 Intel Corporation High bandwidth DIMM
US10884958B2 (en) 2018-06-25 2021-01-05 Intel Corporation DIMM for a high bandwidth memory channel
KR102029035B1 (ko) * 2018-07-26 2019-10-07 주식회사 우리비전 메인 보드 리버스 인터커넥션을 통한 메모리 모듈의 실장 테스트에 사용되는 메모리 모듈을 수납하는 메인 보드
US10782916B2 (en) 2018-08-08 2020-09-22 Micron Technology, Inc. Proactive return of write credits in a memory system
US11074007B2 (en) * 2018-08-08 2021-07-27 Micron Technology, Inc. Optimize information requests to a memory system
US10969994B2 (en) 2018-08-08 2021-04-06 Micron Technology, Inc. Throttle response signals from a memory system
US11409436B2 (en) 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests
US11061751B2 (en) * 2018-09-06 2021-07-13 Micron Technology, Inc. Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller
US11080210B2 (en) * 2018-09-06 2021-08-03 Micron Technology, Inc. Memory sub-system including an in package sequencer separate from a controller
US10740031B2 (en) 2018-09-25 2020-08-11 International Business Machines Corporation Interface scheduler for a distributed memory system
KR20200040183A (ko) 2018-10-08 2020-04-17 박흥균 라인 형태의 전자빔 방출 장치
US11650943B2 (en) * 2018-10-16 2023-05-16 Micron Technology, Inc. Flexible bus management
US10901657B2 (en) 2018-11-29 2021-01-26 International Business Machines Corporation Dynamic write credit buffer management of non-volatile dual inline memory module
US11403035B2 (en) * 2018-12-19 2022-08-02 Micron Technology, Inc. Memory module including a controller and interfaces for communicating with a host and another memory module
US10606794B1 (en) * 2019-05-14 2020-03-31 Infineon Technologies Ag Clock signal monitor for slave device on a master-slave bus
KR20200142219A (ko) * 2019-06-12 2020-12-22 삼성전자주식회사 전자 장치 및 그의 저장 공간 이용 방법
US11249539B2 (en) 2019-06-28 2022-02-15 Integrated Device Technology, Inc. DDR5 client PMIC power up sequence and state transitions
US11699471B2 (en) 2019-09-25 2023-07-11 Intel Corporation Synchronous dynamic random access memory (SDRAM) dual in-line memory module (DIMM) having increased per data pin bandwidth
JP7419010B2 (ja) * 2019-10-04 2024-01-22 キヤノン株式会社 データ処理システムおよびデータ処理システムの制御方法
US11656673B2 (en) * 2019-12-30 2023-05-23 Micron Technology, Inc. Managing reduced power memory operations
US11182312B2 (en) 2020-04-02 2021-11-23 Micron Technology, Inc. Memory sub-system manufacturing mode
US11372544B2 (en) * 2020-09-24 2022-06-28 Netapp, Inc. Write type based crediting for block level write throttling to control impact to read input/output operations
US11709538B2 (en) * 2020-11-19 2023-07-25 Micron Technology, Inc. Minimizing power loss and reset time with media controller suspend
US11609868B1 (en) * 2020-12-31 2023-03-21 Waymo Llc Control calibration timing to avoid memory write blackout period
US11842056B2 (en) * 2021-10-25 2023-12-12 EMC IP Holding Company, LLC System and method for allocating storage system resources during write throttling

Family Cites Families (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4148099A (en) * 1978-04-11 1979-04-03 Ncr Corporation Memory device having a minimum number of pins
US5448706A (en) * 1992-05-13 1995-09-05 Sharp Microelectronics Technology, Inc. Address generator for multi-channel circular-buffer style processing
JP3369227B2 (ja) 1992-11-09 2003-01-20 株式会社東芝 プロセッサ
US5555250A (en) 1994-10-14 1996-09-10 Compaq Computer Corporation Data error detection and correction system
US5784390A (en) 1995-06-19 1998-07-21 Seagate Technology, Inc. Fast AtA-compatible drive interface with error detection and/or error correction
US5805905A (en) * 1995-09-06 1998-09-08 Opti Inc. Method and apparatus for arbitrating requests at two or more levels of priority using a single request line
US5610745A (en) * 1995-10-26 1997-03-11 Hewlett-Packard Co. Method and apparatus for tracking buffer availability
JPH1078934A (ja) 1996-07-01 1998-03-24 Sun Microsyst Inc パケット切替えコンピュータ・システムのマルチサイズ・バス結合システム
US6260101B1 (en) 1997-03-07 2001-07-10 Advanced Micro Devices, Inc. Microcontroller having dedicated hardware for memory address space expansion supporting both static and dynamic memory devices
DE69836437T2 (de) 1997-12-05 2007-09-27 Intel Corporation, Santa Clara Speichersystem mit speichermodul mit einem speichermodul-steuerbaustein
US6088762A (en) 1998-06-19 2000-07-11 Intel Corporation Power failure mode for a memory controller
US6260127B1 (en) 1998-07-13 2001-07-10 Compaq Computer Corporation Method and apparatus for supporting heterogeneous memory in computer systems
US6457081B1 (en) 1998-11-23 2002-09-24 Advanced Micro Devices, Inc. Packet protocol for reading an indeterminate number of data bytes across a computer interconnection bus
US7363422B2 (en) * 2000-01-05 2008-04-22 Rambus Inc. Configurable width buffered module
US7356639B2 (en) * 2000-01-05 2008-04-08 Rambus Inc. Configurable width buffered module having a bypass circuit
US6683884B1 (en) 2000-03-31 2004-01-27 Intel Corporation Shared credit round robin queuing
US7100028B2 (en) 2000-08-09 2006-08-29 Advanced Micro Devices, Inc. Multiple entry points for system call instructions
US6625685B1 (en) 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US6931128B2 (en) 2001-01-16 2005-08-16 Microsoft Corporation Methods and systems for generating encryption keys using random bit generators
US6658523B2 (en) 2001-03-13 2003-12-02 Micron Technology, Inc. System latency levelization for read data
US6615217B2 (en) * 2001-06-29 2003-09-02 Bull Hn Information Systems Inc. Method and data processing system providing bulk record memory transfers across multiple heterogeneous computer systems
JP3912091B2 (ja) * 2001-12-04 2007-05-09 ソニー株式会社 データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
KR100408419B1 (ko) * 2001-12-19 2003-12-06 삼성전자주식회사 반도체 메모리 장치의 동작 타이밍 제어회로 및 동작타이밍 제어 방법
US7076678B2 (en) 2002-02-11 2006-07-11 Micron Technology, Inc. Method and apparatus for data transfer
US6781911B2 (en) 2002-04-09 2004-08-24 Intel Corporation Early power-down digital memory device and method
US7469420B2 (en) 2002-05-21 2008-12-23 Thomson Licensing Key transport tamper protection
JP4222803B2 (ja) * 2002-09-11 2009-02-12 Necエレクトロニクス株式会社 データ処理装置およびデータ処理回路
KR100524952B1 (ko) 2003-03-07 2005-11-01 삼성전자주식회사 기록 매체의 데이터 보호 방법 및 이를 이용한 디스크드라이브
US7234099B2 (en) 2003-04-14 2007-06-19 International Business Machines Corporation High reliability memory module with a fault tolerant address and command bus
KR100475125B1 (ko) 2003-06-21 2005-03-14 삼성전자주식회사 데이터 버스 폭 변경이 자유로운 이동형 저장 장치 및이에 대한 데이터 버스 폭 설정 방법
JP2005025903A (ja) 2003-07-01 2005-01-27 Nec Micro Systems Ltd 半導体記憶装置
DE602004019797D1 (de) * 2003-09-10 2009-04-16 Qualcomm Inc Schnittstelle für hohe datenrate
US7177989B1 (en) 2003-12-31 2007-02-13 Intel Corporation Retry of a device read transaction
EP1735794B1 (en) 2004-03-31 2011-04-27 Micron Technology, Inc. Reconstruction of signal timing in integrated circuits
US7579683B1 (en) * 2004-06-29 2009-08-25 National Semiconductor Corporation Memory interface optimized for stacked configurations
US8032674B2 (en) 2004-07-19 2011-10-04 Marvell International Ltd. System and method for controlling buffer memory overflow and underflow conditions in storage controllers
US7660938B1 (en) 2004-10-01 2010-02-09 Super Talent Electronics, Inc. Flash card reader and data exchanger utilizing low power extended USB protocol without polling
US7525986B2 (en) 2004-10-28 2009-04-28 Intel Corporation Starvation prevention scheme for a fixed priority PCI-Express arbiter with grant counters using arbitration pools
US7571296B2 (en) 2004-11-11 2009-08-04 Nvidia Corporation Memory controller-adaptive 1T/2T timing control
US7966439B1 (en) * 2004-11-24 2011-06-21 Nvidia Corporation Apparatus, system, and method for a fast data return memory controller
US20060117160A1 (en) * 2004-12-01 2006-06-01 Intel Corporation Method to consolidate memory usage to reduce power consumption
US9384818B2 (en) * 2005-04-21 2016-07-05 Violin Memory Memory power management
US7319612B2 (en) * 2005-05-18 2008-01-15 Intel Corporation Performing multiple read operations via a single read command
JP2007004522A (ja) 2005-06-24 2007-01-11 Renesas Technology Corp 記憶装置
US8335894B1 (en) * 2008-07-25 2012-12-18 Google Inc. Configurable memory system with interface circuit
US8327104B2 (en) 2006-07-31 2012-12-04 Google Inc. Adjusting the timing of signals associated with a memory system
US8055833B2 (en) * 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
DE102005035207A1 (de) 2005-07-27 2007-02-01 Siemens Ag Verfahren und Vorrichtung zur Datenübertragung zwischen zwei relativ zueinander bewegten Komponenten
US7426607B2 (en) 2005-08-05 2008-09-16 Infineon Technologies Ag Memory system and method of operating memory system
US20110022850A1 (en) 2006-07-26 2011-01-27 Hondar Lee Access control for secure portable storage device
US8272781B2 (en) 2006-08-01 2012-09-25 Intel Corporation Dynamic power control of a memory device thermal sensor
US7900079B2 (en) 2006-08-11 2011-03-01 International Business Machines Corporation Data capture window synchronizing method for generating data bit sequences and adjusting capture window on parallel data paths
US7761725B2 (en) 2006-08-30 2010-07-20 Ati Technologies Ulc Clock generation for synchronous circuits with slow settling control signals
JP5056762B2 (ja) 2006-10-24 2012-10-24 富士通株式会社 データパケット送受信システム、データパケット送受信方法およびデータパケット送受信プログラム
US8122202B2 (en) 2007-02-16 2012-02-21 Peter Gillingham Reduced pin count interface
US7624225B2 (en) 2007-03-22 2009-11-24 International Business Machines Corporation System and method for providing synchronous dynamic random access memory (SDRAM) mode register shadowing in a memory system
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US7624211B2 (en) 2007-06-27 2009-11-24 Micron Technology, Inc. Method for bus width negotiation of data storage devices
US7787375B2 (en) 2007-08-06 2010-08-31 International Business Machines Corporation Performing a recovery action in response to a credit depletion notification
US7882324B2 (en) * 2007-10-30 2011-02-01 Qimonda Ag Method and apparatus for synchronizing memory enabled systems with master-slave architecture
US7971081B2 (en) * 2007-12-28 2011-06-28 Intel Corporation System and method for fast platform hibernate and resume
US8045416B2 (en) 2008-03-05 2011-10-25 Micron Technology, Inc. Method and memory device providing reduced quantity of interconnections
US8255783B2 (en) 2008-04-23 2012-08-28 International Business Machines Corporation Apparatus, system and method for providing error protection for data-masking bits
US8154918B2 (en) 2008-06-30 2012-04-10 Sandisk Il Ltd. Method for page- and block based scrambling in non-volatile memory
TWI370361B (en) * 2008-08-21 2012-08-11 Ili Technology Corp Memory access controlling apparatus and control method thereof
US8639874B2 (en) 2008-12-22 2014-01-28 International Business Machines Corporation Power management of a spare DRAM on a buffered DIMM by issuing a power on/off command to the DRAM device
US20120030396A1 (en) 2009-03-02 2012-02-02 Zhichun Zhu Decoupled Memory Modules: Building High-Bandwidth Memory Systems from Low-Speed Dynamic Random Access Memory Devices
TWI416523B (zh) 2009-06-10 2013-11-21 Silicon Motion Inc 非揮發性記憶體之寫入錯誤管理方法、非揮發性記憶體、記憶卡、以及非揮發性記憶體之控制器
KR101585213B1 (ko) 2009-08-18 2016-01-13 삼성전자주식회사 라이트 레벨링 동작을 수행하기 위한 메모리 장치의 제어 방법, 메모리 장치의 라이트 레벨링 방법, 및 라이트 레벨링 동작을 수행하는 메모리 컨트롤러, 메모리 장치, 및 메모리 시스템
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8862966B2 (en) * 2009-09-09 2014-10-14 Advanced Micro Devices, Inc. Adjustment of write timing based on error detection techniques
US8996785B2 (en) 2009-09-21 2015-03-31 Aplus Flash Technology, Inc. NAND-based hybrid NVM design that integrates NAND and NOR in 1-die with serial interface
KR101620348B1 (ko) 2009-10-16 2016-05-12 삼성전자주식회사 내부전원 발생장치, 이를 구비한 멀티채널 메모리 장치 및 이를 채용한 프로세싱 시스템
US8862973B2 (en) * 2009-12-09 2014-10-14 Intel Corporation Method and system for error management in a memory device
JP5421152B2 (ja) 2010-03-08 2014-02-19 ルネサスエレクトロニクス株式会社 半導体集積回路
JP5139465B2 (ja) 2010-03-31 2013-02-06 株式会社東芝 メモリチップ、情報記憶システム、読み出し装置
US8339891B2 (en) 2010-05-25 2012-12-25 Lsi Corporation Power savings and/or dynamic power management in a memory
US8898511B2 (en) 2010-06-24 2014-11-25 International Business Machines Corporation Homogeneous recovery in a redundant memory system
US8972723B2 (en) 2010-07-14 2015-03-03 Sandisk Technologies Inc. Storage device and method for providing a partially-encrypted content file to a host device
MX2013002773A (es) * 2010-09-16 2013-04-05 Apple Inc Controlador de memoria con multiples puertos con puertos asociados con las clases de trafico.
US8615638B2 (en) 2010-10-08 2013-12-24 Qualcomm Incorporated Memory controllers, systems and methods for applying page management policies based on stream transaction information
JP5032647B2 (ja) 2010-11-26 2012-09-26 株式会社東芝 データ記憶装置、コントロール装置及び暗号化方法
US8410819B2 (en) * 2010-12-29 2013-04-02 Stmicroelectronics, Inc. Programmable pulse width discriminator
US8321649B2 (en) 2011-03-18 2012-11-27 Freescale Semiconductor, Inc. Memory controller address and data pin multiplexing
US8665665B2 (en) 2011-03-30 2014-03-04 Mediatek Inc. Apparatus and method to adjust clock duty cycle of memory
US8930647B1 (en) 2011-04-06 2015-01-06 P4tents1, LLC Multiple class memory systems
KR101451369B1 (ko) 2011-04-29 2014-10-16 엘에스아이 코포레이션 암호화된 전송 고체 상태 디스크 제어기
JP5720470B2 (ja) 2011-07-27 2015-05-20 富士通株式会社 処理装置,試験信号生成装置及び試験信号生成方法
US9025409B2 (en) * 2011-08-05 2015-05-05 Rambus Inc. Memory buffers and modules supporting dynamic point-to-point connections
US9047418B2 (en) * 2011-11-22 2015-06-02 Icron Technologies Corporation Methods and devices for extending USB 3.0-compliant communication
US9330031B2 (en) 2011-12-09 2016-05-03 Nvidia Corporation System and method for calibration of serial links using a serial-to-parallel loopback
US9417998B2 (en) * 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US8638153B2 (en) * 2012-03-29 2014-01-28 Qualcomm Incorporated Pulse clock generation logic with built-in level shifter and programmable rising edge and pulse width
US8667205B2 (en) 2012-04-30 2014-03-04 International Business Machines Corporation Deadlock resolution in end-to-end credit protocol
JP5836903B2 (ja) * 2012-09-04 2015-12-24 株式会社東芝 情報処理装置
US8730750B1 (en) * 2012-10-28 2014-05-20 Lsi Corporation Memory device with control circuitry for generating a reset signal in read and write modes of operation
US20140122777A1 (en) 2012-10-31 2014-05-01 Mosaid Technologies Incorporated Flash memory controller having multi mode pin-out
US9990246B2 (en) 2013-03-15 2018-06-05 Intel Corporation Memory system

Also Published As

Publication number Publication date
US10579462B2 (en) 2020-03-03
BR122016006765B1 (pt) 2022-02-01
US20160098195A1 (en) 2016-04-07
BR122016007765B1 (pt) 2022-03-03
US10198306B2 (en) 2019-02-05
US20160098366A1 (en) 2016-04-07
EP2973571A4 (en) 2016-11-02
BR122016006765A2 (pt) 2019-08-27
RU2015134146A (ru) 2017-02-17
US20160132269A1 (en) 2016-05-12
US10783028B2 (en) 2020-09-22
KR101670917B1 (ko) 2016-11-01
US9990246B2 (en) 2018-06-05
US10152370B2 (en) 2018-12-11
US20150149735A1 (en) 2015-05-28
US10747605B2 (en) 2020-08-18
EP2973571B1 (en) 2020-04-22
KR20150120359A (ko) 2015-10-27
CN104981872A (zh) 2015-10-14
CN104981872B (zh) 2018-11-06
EP2973571A1 (en) 2016-01-20
US10795755B2 (en) 2020-10-06
BR122016006764B1 (pt) 2022-02-01
US20160179742A1 (en) 2016-06-23
US20160210187A1 (en) 2016-07-21
US20160147678A1 (en) 2016-05-26
US20160148653A1 (en) 2016-05-26
BR112015019459A2 (pt) 2017-07-18
BR122016006764A2 (pt) 2019-08-27
KR20160127168A (ko) 2016-11-02
WO2014143056A1 (en) 2014-09-18
US20160099044A1 (en) 2016-04-07
US20160211973A1 (en) 2016-07-21
US9852021B2 (en) 2017-12-26
US20160179604A1 (en) 2016-06-23
BR112015019459B1 (pt) 2021-10-19
JP2016514320A (ja) 2016-05-19
BR122016007765A2 (pt) 2019-08-27
US10185618B2 (en) 2019-01-22
RU2628124C2 (ru) 2017-08-15

Similar Documents

Publication Publication Date Title
JP6139010B2 (ja) デバイス
US10002668B2 (en) Memory device, memory module, and memory system
US10095421B2 (en) Hybrid memory module bridge network and buffers
JP6370958B2 (ja) デバイス
US11610624B2 (en) Memory device skipping refresh operation and operation method thereof
CN112052195A (zh) 存储器模块
US20120191898A1 (en) Ddr flash implementation with direct register access to legacy flash functions

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170221

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170328

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170426

R150 Certificate of patent or registration of utility model

Ref document number: 6139010

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees