JP5872560B2 - 高速メモリ・システム - Google Patents

高速メモリ・システム Download PDF

Info

Publication number
JP5872560B2
JP5872560B2 JP2013530377A JP2013530377A JP5872560B2 JP 5872560 B2 JP5872560 B2 JP 5872560B2 JP 2013530377 A JP2013530377 A JP 2013530377A JP 2013530377 A JP2013530377 A JP 2013530377A JP 5872560 B2 JP5872560 B2 JP 5872560B2
Authority
JP
Japan
Prior art keywords
data
memory
flash
input
dma
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
JP2013530377A
Other languages
English (en)
Other versions
JP2014501950A (ja
JP2014501950A5 (ja
Inventor
フロスト,ホロウエイ・エイチ
ハツツエル,レベツカ
Original Assignee
テキサス・メモリー・システムズ・インコーポレイテツド
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 テキサス・メモリー・システムズ・インコーポレイテツド filed Critical テキサス・メモリー・システムズ・インコーポレイテツド
Publication of JP2014501950A publication Critical patent/JP2014501950A/ja
Publication of JP2014501950A5 publication Critical patent/JP2014501950A5/ja
Application granted granted Critical
Publication of JP5872560B2 publication Critical patent/JP5872560B2/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
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • 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
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/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/1673Details of memory controller using buffers
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Bus Control (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Information Transfer Systems (AREA)

Description

本出願は、2010年9月24日に出願された、“High−Speed Memory System”と題された米国特許仮出願第61/386,237号による優先権を主張し、同仮出願は、引用によりその全体が本願に組み込まれる。
本開示は一般的に、外部ホスト装置及び/又は外部通信装置によりアクセスされる記憶システムに関する。
記憶システムは、しばしば、入来するデータ及びデータ要求を受け取り、並びにそれらの要求をデータの記憶又は取り出しのために処理するために、さまざまな方法及びデバイスを用いる。しばしば、そのような記憶システムは、限られた数の入出力ポートしか持たないため、及び/又は、そのシステム内に存在するボトルネックのために、その帯域幅が限定される。そのようなボトルネックは、比較的遅いデータバスの使用と同様に、複雑なスイッチング又は伝送構造、及び/又は伝送プロトコルの使用により生じ得る。
より効果的な、効率的な、及び最適なメモリ・システムが要求される。
開示される実施態様は、より効果的な、効率的な、及び最適な高速メモリ・システムを提供するための方法及び装置に関する。一態様においては、本願で開示される実施態様は、一般に、高速度のシリアル通信を有する、フラッシュ・ベースのメモリ・モジュールに関する。このフラッシュ・ベースのメモリ・モジュールは、複数の入出力(I/O)モジュールであって、それぞれの入出力モジュールは1つ以上の外部通信リンクを通じて、外部デバイスと通信するように構成されている、複数の入出力モジュールを含み、複数のフラッシュ・ベースのメモリ・カードであって、それぞれのフラッシュ・ベースのメモリ・カードは複数のフラッシュ・メモリ素子を含み、それぞれのフラッシュ・メモリ素子は、ブロックに分割された物理メモリ・スペースを有し、それぞれのブロックは更にページに分割されており、それぞれのページは、その上でメモリ操作が遂行される、個別にアドレス可能なメモリロケーションを表し、多数のそのようなメモリロケーションは、1ブロックのグルーピング内で、同時に消去可能である、それぞれの複数のフラッシュ・ベースのメモリ・カードを含み、並びに複数のクロスバー・スイッチング素子であって、それぞれのクロスバー・スイッチング素子は、フラッシュ・ベースのメモリ・カードのそれぞれの1つと接続され、及び前記入出力モジュールのそれぞれの1つが、フラッシュ・ベースのメモリ・カードのそれぞれの1つと通信することが可能なように構成されている、複数のクロスバー・スイッチング素子とを、特に含む。それぞれの入出力モジュールは、それぞれのクロスバー・スイッチング素子と、高速シリアル通信リンクにより接続され、それぞれの高速シリアル通信リンクは、それぞれの入出力モジュールが、それぞれのクロスバー・スイッチング素子への、及びクロスバー・スイッチング素子からのコマンド、命令、及び/又はデータを表すビットを送受信することを可能にし、並びにそれぞれのクロスバー・スイッチング素子は、フラッシュ・ベースのメモリ・カードのそれぞれの1つに、複数の並列通信リンクにより接続され、それぞれの並列通信リンクは、1つのクロスバー・スイッチング素子を、フラッシュ・ベースのメモリ・カードのそれぞれの1つのフラッシュ・メモリ素子と接続している。
一般に、別の態様では、開示される実施態様は、拡張可能な高速メモリに関する。この拡張可能な高速メモリは、印刷回路板(PCB)、PCB上に取り付けられ、及び高速メモリ・カードが、1つ以上の高速シリアル通信リンクを通じた1つ以上の外部デバイスからのコマンド、命令、及び/又はデータをあらわすビットを受信可能になるように構成されたインターフェース回路を含み、PCB上に取り付けられた複数のメモリ素子であって、それぞれのメモリ素子はその上でメモリ操作が遂行される物理的メモリ空間を有する複数のメモリ素子を含み、並びにPCB上に取り付けられた制御装置であって、インターフェース回路及び複数のメモリ素子に接続され、前記制御装置は、メモリ操作を遂行するためにインターフェース回路及びそれぞれのメモリ素子の間の通信を制御するように構成されている、制御装置とを、特に含む。前記インターフェース回路は前記制御装置に、複数の高速シリアル通信回線により接続され、それぞれの高速シリアル通信回線は、高速シリアル通信リンクの1つに対応し、及び前記制御装置は、前記複数のメモリ素子に、所定の数の並列通信回線により接続されており、前記制御装置は、高速シリアル通信リンクからのコマンド、命令及び/又はデータを表すビットを、シリアル・フォーマットから、並列フォーマットに変換するように構成されている。
一般に、更に別の態様では、開示される実施態様は、高速シリアル通信を有するメモリ・モジュールに関する。前記メモリ・モジュールは、第一の複数の入力処理ブロック及び第二の複数の入力処理ブロックを含み、それぞれの入力処理ブロックは、シリアル・フォーマットに従ったコマンド、命令及び/又はデータを表すビットを受け取り、及びそのコマンド、命令及び/又はデータを表すビットを、並列フォーマットに従うように再配列するために構成されており、複数のメモリ素子であって、それぞれのメモリ素子は、その上でメモリ操作が遂行される物理的メモリ空間を有する複数のメモリ素子を含み、及び第一及び第二の複数の入力処理ブロックと前記メモリ素子を接続する制御装置であって、及び前記制御装置はメモリ操作を遂行するために、第一及び第二の複数の入力処理ブロック及びそれぞれのメモリ素子の間の通信を制御するために構成されている、制御装置を特に含む。
前記制御装置は:
(a)第一及び第二の複数の入力処理ブロックにそれぞれ接続された第一の多重チャンネル・バッファー及び第二の多重チャンネル・バッファーであって、それぞれの多重チャンネル・バッファーは、並列フォーマットのコマンド、命令及び/又はデータを表すビットを前記第一及び第二の複数の入力処理ブロックからそれぞれ受け取り、及びコマンド、命令及び/又はデータを表すビットから所定の数のワードを構築するために構成されており、それぞれのワードは所定の数のビットから成っている、第一の多重チャンネル・バッファー及び第二の多重チャンネル・バッファーを含み、
(b)第一のエラー修正及びデータ保護回路、及び第二のエラー修正及びデータ保護回路であって、前記第一及び第二の多重チャンネル・バッファーにそれぞれ接続され、前記第一及び第二のエラー修正及びデータ保護回路は、前記第一及び第二の多重チャンネル・バッファーからのワードを、それぞれ受け取り、前記ワードを用いる1つ以上のエラー修正コードのビットを生成させ、それぞれのワードのための前記エラー修正コードのビットを前記ワードに加え、及びそれぞれのワードを、そのワードに加えられたエラー修正コードのビットとともに出力するために構成されている、第一のエラー修正及びデータ保護回路、及び第二のエラー修正及びデータ保護回路を含み;
(c)第一及び第二の修正及びデータ保護回路にそれぞれ接続された、第一の出力バッファー及び第二の出力バッファーであって、前記第一及び第二の出力バッファーは、第一及び第二のエラー修正及びデータ保護回路の1つからの第一のワードが、第一及び第二の出力バッファーの1つに提供され、及び第一及び第二のエラー修正及びデータ保護回路の別の1つからの次のワードが、第一及び第二の出力バッファーの別の1つに提供されることができるように、順々に第一及び第二のエラー修正及びデータ保護回路からの、前記エラー修正コードビットが加えられたワードを受け取るために構成されている、第一の出力バッファー及び第二の出力バッファーを含み、並びに
(d)メモリ・バッファーであって、前記エラー修正コードのビットが加えられたワードを、前記第一及び第二の出力バッファーから受け取り、及び前記所定の数のワードを所定の方式によって、スーパーワードを形成するために組み合わせるために構成されている、メモリ・バッファーとを特に含む。
本開示の特定の教示に従って構築された高速記憶システムを図示している。 本開示の高速記憶システムにおいて行われ得るDMA読み出し(READ)−修正(MODIFY)−書き込み(WRITE)操作の例を図示している。 本開示の高速記憶システムにおいて行われ得るDMA読み出し−修正−書き込み操作の例を図示している。 本開示の高速記憶システムにおいて行われ得るDMA読み出し−修正−書き込み操作の例を図示している。 本開示の高速記憶システムにおいて用い得る入出力モジュールの例示的な実施態様を図示している。 本開示の高速記憶システムにおいて用い得る入出力モジュールの代替の例示的な実施態様を図示している。 図1に関連して上述された種類のクロスバー・モジュールを実行するための例示的なアプローチの1つを図示している。 本開示のシステムにおいて用い得るメモリ・カードの例示的な実施態様の1つを図示している。 本開示の高速記憶システムにおいて用い得るメモリ・カードの代替的な実施態様の1つを図示している。 入出力モジュールが、クロスバー・モジュールなしで、直接メモリ・ボードと通信する代替的な高速記憶システムを図示している。 図7の高速記憶システムにおいて用い得る高速メモリ・ボードの例示的な実施態様を図示している。 例示的な高速メモリボードの一部分の一般的な詳細を図示している。 高速メモリ・ボードのシリアライザ/デシリアライザ及びパッキング・モジュールの例示的な実施態様を図示している。 高速メモリ・ボードのための先入れ先出し(FIFO)記憶バッファーの例示的な実施態様を図示している。 高速メモリ・ボードのためのFIFO記憶バッファーの例示的な実施態様を図示している。 高速メモリ・ボードのためのFIFO記憶バッファーの例示的な実施態様を図示している。 高速メモリ・ボードのための多重チャンネルFIFOバッファーの例示的な実施態様を図示している。 エラー修正及びデータ保護回路から高速メモリ・ボードの出力FIFOバッファーへのデータ移動の例示的なプロセスを図示している。 エラー修正及びデータ保護回路から高速メモリ・ボードの出力FIFOバッファーへのデータ移動の例示的なプロセスを図示している。 多重の個別高速シリアル通信リンクを通じたデータ移動の例示的なプロセスを図示している。 多重の個別高速シリアル通信リンクを通じたデータ移動の例示的なプロセスを図示している。 データが、高速シリアル通信リンクを通じて移動されるときに、異なるWRITE操作から不適切にデータを「混ぜること」(intermingling)を防止するための例示的なプロセスを図示している。 データが、高速シリアル通信リンクを通じて移動されるときに、異なるWRITE操作から不適切にデータを「混ぜること」(intermingling)を防止するための例示的なプロセスを図示している。 データが、高速シリアル通信リンクを通じて移動されるときに、異なるWRITE操作から不適切にデータを「混ぜること」(intermingling)を防止するための例示的なプロセスを図示している。 データが、高速シリアル通信リンクを通じて移動されるときに、異なるWRITE操作から不適切にデータを「混ぜること」(intermingling)を防止するための例示的なプロセスを図示している。 本開示の高速記憶システムの高速シリアル通信リンクを通じて移動されるデータのためのREAD及びWRITEアクセスの間の競合制御のための例示的なプロセスを図示している。 例示的な制御装置及び本開示の高速記憶システムにおける制御装置及び物理RAMメモリの間の接続を図示している。 図17は、本開示の高速記憶システムにおける2つの基本的なメモリ周期を通じた図16の制御装置の例示的な操作を図示している。
上述の図並びに下記の具体的な構造及び機能の記載は、出願人の発明の範囲、又は添付の請求範囲を限定するために提示されるのではない。むしろ、上述の図及び明細書は、任意の当業者が、特許による保護が求められている発明を作成し、使用することを教示するために提供されている。当業者は、明瞭性及び理解のために、本発明の工業的な実施態様の全ての特徴が記載されるか、又は示されているのではないことを認識するであろう。当技術分野の熟練者は、本発明の態様を組み込んでいる実際の工業的な実施態様の開発が、工業的な実施態様のための開発者の究極の目的を達成するために、莫大な数の、実施に特異的な決断を必要とするであろう事を認識するであろう。実施に特異的な決断としては、おそらく限定はされないが、システム関連、ビジネス関連、政府関連、及び他の制限に対する遵守であって、それらは、具体的な実施、場所により、及び時により変化するであろう。開発者の努力は、絶対的な感覚で、複雑であり、多大な時間を要するものであろうが、そのような努力は、しかしながら、本開示の利益を有する当業者にとっては、日常的な業務であろう。本明細書において開示された発明、及び教示(taught)は、莫大な数の、並びにさまざまな修正及び代替形態を許容するものであることを理解されたい。最後に、限定はされないが、“a”などの、単数形の使用は、その品目の数を限定することを意図していない。また、限定はされないが、「頂点」、「底部」、「左」、「右」、「上の」、「下の」、「下へ」、「上へ」、「側面」などの関係語の使用は、明細書において、図への特定の参照において明瞭性のために用いられ、及び発明又は添付の請求の範囲を限定することを意図していない。
図、特に図1に移るが、ここには、本開示の特定の教示に従い構築される高速記憶システム100が図示されている。一般にこの高速記憶システム100は、READ及びWRITE要求などのデータ関連要求を外部ホスト装置から受け取り、及び物理メモリへの/物理メモリからのデータの記憶及び/又は取り出しのためにそれらの要求を処理する。
例示的な記憶システム100は、接続可能な高帯域記憶システムを提供するために、複数の入出力モジュール,高速シリアル通信チャンネル、設定変更可能なクロスバー・モジュール、並列メモリ・バス、及び物理メモリ・カードを包含して利用する。システム及びその多くの新規な態様の追加的な詳細は。以下で提供される。
図1を参照するが、上記システム100は、複数の入出力(I/O)インターフェース・モジュール102、104、106、108及び110を包含する。この例には、5つの入出力モジュールが図示されているが、入出力モジュールの数は致命的に重要ではなく、変更の対象となる。それぞれの入出力モジュールは、1つ以上の外部ホスト装置と、ホスト通信チャンネル(それぞれ、102a、104a、106a、108a及び110a)を介して連結される。これらのチャンネル102a、104a、106a、108a及び110aは、サーバーや他の装置などの、ホストとして稼動可能な外部デバイスが、入出力インターフェース・モジュール102、104、106、108及び110から、コマンド、命令及びデータを受け取ること、及び/又はそれらへ、コマンド、命令及びデータを提供することを可能にする。
このホスト通信チャンネルは、さまざまな形態をとることができ、及び限定はされないが、ファイバー・チャンネル、インフィニバンド、イーサーネット(登録商標)、及び前面パネル・データ・ポート(FPDP)などのさまざまなプロトコルに従う。この通信リンクの正確な物理及び論理構成はこの開示されたシステムにとり致命的に重要ではないが、開示されたシステムにより提供される利益を最大限に利用するためには、ホスト通信リンクが、高帯域データ移転をサポートする能力があることが望ましい。
図1の例においては、入出力モジュール102、104、106、108及び110のそれぞれは、複数の高速シリアル通信チャンネル(図1に115として集合的に標識されている)により、4つの設定変更可能なクロスバー・モジュール120、122、124及び126に連結されている。以下でより詳細に記載するが、これらのチャンネルは、入出力モジュールがクロスバー・モジュールとの間でコマンド、命令及び/又はデータを通信することを可能にする。
図示された例においては、4つのクロスバー・モジュール120、122、124及び126があるが、クロスバー・モジュールの数は致命的に重要ではなく、変化できることが理解されるであろう。図1では、4つのクロスバー・モジュールのそれぞれが、5つの入出力モジュールのそれぞれと、個別の(distinct)直列システム通信チャンネルを介して連結される。代替的な実施態様は、クロスバー・モジュールの1つ以上が入出力モジュールの全てよりも少ない数に連結されるものに想定される。
図1に反映されているように、例示的なシステムにおいては、それぞれのクロスバー・モジュールは、複数の並列メモリ・バスにより、メモリ・カードの集団に連結されている。例えば、図示された例においては、クロスバー・モジュール120は、メモリ・カードの第一のグループ140に、並列メモリ・バスの第一のグループ130により連結されている。同様の方法で、クロスバー・モジュール122、124及び126は、メモリ・カード・グループ142、144及び146に、それぞれ並列メモリ・バス・グループ132、134及び136を介して連結されている。図示された例においては、それぞれのクロスバー・モジュールは、5つのメモリ・カードのグループに、それぞれがデータ転送と同様に制御、コマンド、モニタリング情報を通信するために使用できる、5つの多重送信並列バスにより連結されている。メモリ・カードの数及びメモリ・インターフェース・バスの種類は、本開示の教示を逸脱することなく変更できることが認識されるであろう。
図示された例においては、それぞれのメモリ・カード、及び従ってメモリ・カードのグループのそれぞれは、一般的にメモリロケーションの特定の範囲に対応する。この特定の範囲は、実際の物理アドレス範囲(例えば、それぞれのアドレスが、前記メモリ・カードに関連付けられている特定の物理メモリロケーションに対応しているアドレスの範囲)、又は論理アドレス範囲(例えば、それぞれの論理アドレスメモリ・カード上の制御装置又は外部制御装置により、メモリ・カードに付随する物理メモリロケーションに対してマップされることができる、論理アドレス範囲)であることができる。
図1の例においては、全体のシステム100は、一連の利用可能な記憶アドレスを外部ホストに提供し、及びそれぞれのメモリ・カードは、一般的にシステム100により提供されるアドレスの特定の範囲に対応する。加えて、メモリ・カードのそれぞれのグループがアドレスの特定の範囲に関連付けられているために、それぞれのクロスバーも、それが接続されているメモリ・カードのグループに対応するアドレスの範囲に関連付けられる。
図1のシステム100においては、システム制御装置150は、入出力モジュール102、104、106、108及び110のそれぞれ、及びクロスバー・モジュール120、122、124及び126のそれぞれに連結されている。システム制御装置は図1の5つの入出力モジュールの全てに接続されているが、そのような接続のうちの1つだけが図示されている。同様に、システム制御装置、及びクロスバー・モジュールの間の4つの接続の内の1つだけが示されている。一般にシステム制御装置150は、タイミング及び同期信号を提供するが、それは、監視、報告及び他の監督タスクの遂行のためにも用い得る。
一般的な操作においては、入出力モジュールのそれぞれは、入出力モジュールが接続されている外部ホスト装置から、外部データ関連要求を、そのホスト通信リンクを通じて受け取る。それぞれの入出力モジュールは、記憶システム100への、又は記憶システム100からのデータの、記憶及び/又は取り出しを可能にするために、これらのデータ関連要求を処理する。図1の実施態様においては、このデータ要求が受け取られ、及び個別の通信「パケット」の形態の応答が返されるが、代替的な通信プロトコルを用いることもできる。
正確なプロトコルの詳細は用途に依存するが、外部プロトコルは、高いデータのスループットを促進するために低い通信オーバーヘッドに対して選択されるべきである。図1のシステムにおいては、前記入出力モジュールにより受け取られて、処理される通信パケットは、典型的にはヘッダー、及びそのパケットがデータを移転するものであれば、データ・ペイロードを含む。ヘッダーの正確な内容及びフォーマットは、用途ごとに異なるが、このヘッダーは典型的には以下のものを含む:(a)要求の種類を識別する識別子(例えば、その要求が、システム内にデータを記憶するためのWRITE要求であるか、又はそのシステム内に以前に記憶されたデータを取り出すためのREAD要求であるのか);(b)要求に関連付けられた特定のアドレスを示す識別子(例えば、WRITE要求については、一般的にその要求に関連付けられたデータの記憶が開始されるロケーションを識別するか、又はREAD要求については、その要求に関連付けられたデータの取り出しが開始されるべきロケーションを識別する、特定の論理又は物理“アドレス”であって、これらのアドレスのそれぞれは、時に「TARGET ADDRESS」と称される);並びにいくつかのシステムについては、(c)データ関連要求のソースの識別(時に「SOURCE ADDRESS」と称される);及び(d)要求に関連付けられたデータの量を示す識別子(例えば、その要求の一部としてのシステムへの保存、又はシステムからの取り出しのためのバイト数、ページ数、又は他のデータ量の表示)。いくつかの通信プロトコルについては、全ての外部データ関連要求は、特定のサイズにされたデータのページ、又は特定の数のデータ・ワードなどの、データの特定の量に関連付けられていると推測される。このようなプロトコルでは、要求が、特定のプロトコルのためのデータの標準量に関することが暗黙的であるために、特定の外部要求に関連付けられたデータの量を明確に指定することは必要ない。
外部デバイスがデータ関連要求を、それらが接続された入出力モジュールに発行するちょうどそのときに、入出力モジュールもDMA(直接メモリ・アクセス)要求、又は単にDMAと呼ばれる要求を、それらが接続されたクロスバー・モジュール及びそれらが取り付けられたメモリ・カードに発行する。それぞれの外部要求は、多重のメモリ・カード、及びクロスバー・モジュールに及ぶシステム・アドレスの範囲にアクセスを要求することができる。たとえ、特定の外部要求が、ただ1つのメモリ・カードにアクセスを要求する場合でも、外部要求に関連付けられたデータの量は、単独のDMA要求に関連付けられたデータの最大量を超える可能性がある。この理由のために、入出力モジュールは、それが受け取るそれぞれの外部要求のために2つ以上のDMA要求を発行することができる。この場合には、それらのDMA要求は、データ記憶又は取り出しが、そのシステム内の正しい物理メモリロケーションで行われるようにメモリ・カードに向けられる。外部READ要求の場合には、例えば、この入出力モジュールは、要求されたデータを、それが保存されているさまざまなロケーションから「収集する」ために、1つ以上のDMA READ要求を発行する。外部WRITE要求の場合には、この入出力モジュールは、全ての受け取られたデータを、それが保存されるべきさまざまなロケーションに送達するために、1つ以上のDMA WRITE要求を一般的に発行する。
一般にDMA WRITE要求は、その要求及び同一のパケット内に存在する関連付けられたデータとともに、「パケット」に編成される。一方、DMA READ要求は、一般的に要求情報(アドレス、データ量など)のみを含む。これらの要求タイプのそれぞれに対する応答は、おおむね相補的である。入出力モジュールにより発行されたそれぞれのDMA WRITE要求に対して、クロスバーは、WRITE操作が成功したか失敗したかを示す状況情報を最小限含むDMA WRITE応答パケットを返す。入出力モジュールから発行されたそれぞれのDMA READ要求に対して、クロスバーは、要求されたデータ及び、最小限返されたデータの正当性を示す状況情報の両方を含むDMA READ応答パケットを返す。
システム内のメモリ・カードそれぞれがフラッシュ・メモリを用いる一実施態様では、それぞれのDMA要求は、データの固定量の移転を、その固定量が単一のフラッシュ・メモリ・「ページ」に記憶された等しいものとして特定する。この例では、1ページは、一般的に個別的にフラッシュ・メモリに書き込まれることが可能な情報の最小量である。
図1のシステム100では、一般的に、DMA要求は固定量のデータ(4キロバイト)を、固定されたアドレス境界上に整列されたアドレス(4キロバイト)から、及びそのアドレスへと、移転することであると定義される。いくつかの場合には、外部WRITE要求により広げられるアドレス範囲が、これらの固定DMA要求アドレス境界上に整列しないことも可能である。図1A〜1Cに示されるように、外部WRITE要求は、DMA要求の許可された開始アドレスに対応しないアドレスから開始されることができる。同様に、DMA WRITE要求は、DMA要求の終了アドレスに対応しないアドレスで終了できる。この「不均衡(misalignment)」が起きるとき、前記入出力カードは、1つ以上の読み出し−修正−書き込み(RMW)操作を遂行できる。読み出し−修正−書き込み操作では、前記入出力モジュールは、外部WRITE要求の開始及び/又は終了にまたがるアドレス範囲からのシステム・メモリからデータを取り出すためにDMA READ要求を発行する。次いで、前記入出力モジュールは、この取り出されたデータの一部を、整列されていないWRITE要求からの外部データによって修正(置換)し、及び次いで、相補的なDMA WRITE要求を発行することにより、この修正されたデータを、システムメモリに返す。このような方法で、前記入出力モジュールは、個別のDMA要求の整列制限に従わないアドレス範囲のシステムメモリ内でのデータの保存を可能にする。
図1Aは、外部WRITE要求が1ページに完全に含まれるが、開始アドレスがDMAアドレス境界に整列していないために、読み出し−修正−書き込み操作が遂行されることを引き起こす、データのアドレス及び量160を特定する、「中に含まれる(contained within)」場合の例を示している。この場合には、1つのDMA READ要求のみが必要である。新しい(修正された)データは、DMA READ要求と同じ(整列された)アドレスを使用する発行されたDMA WRITE要求とともに、以前に保存されたデータのロケーションの上に重ねられる。図1Bは、外部WRITE要求を2つのフラッシュ・ページにまたがる、特定されたアドレス及びデータ量170とともに示している。この「またがる(straddle)」ケースは、データの取り出しのために2つのDMA READ要求を生成させ、及び続いて新しいデータ・イメージを戻すために2つのDMA WRITE要求を生成させる。図1Cは、その特定されたアドレス及びデータ量180が3パージにわたっている外部WRITE要求を示している。この「広がる(spanning)」場合では、入出力カードは、第一のページに対し1つのDMA READ要求を発行し、新しいデータを重ね、及びこの変化に責任を持つためにDMA WRITE要求を発行する。次のページは完全に新しいデータにより上書きされるために、入出力カードは、このページで読み出し−修正−書き込み操作を行う必要はなく、及び整列されたアドレスへ、単にDMA WRITE要求を発行する。しかしながら、新しいデータ・セットの残りは、第3のページを完全には満たさない。従って、入出力カードは、以前に記載した方式でこのページのために読み出し−修正−書き込みを遂行する。これらの3つの場合は、外部WRITE要求操作の種類の、遂行できるサブセットに過ぎず、及び単に読み出し−修正−書き込み操作を図示することが意図されていることが理解されるであろう。
外部要求の構造は一般的にプロトコル依存性である一方、内部DMA要求/応答プロトコルは、一般的に特定のシステムに対して固定されており、及びシステム性能を最大化するために設計されている。図1のシステムでは、DMA要求及びDMA応答はヘッダー、及びもしパケットがデータ転送のためのものである場合には、データ・ペイロードを含むパケットとして構造化される。
DMA要求は典型的には以下のものを含む:(a)DMA要求の種類を示す識別子(すなわち、DMA要求が、データをシステム内に保存するためのWRITE要求であるか、又はシステム内に以前に保存されたデータを取り出すためのREAD要求であるか);(b)そのDMA要求に関連付けられた特定のアドレスを示す識別子(例えば、DMA WRITE要求に対しては、一般的に、要求に関連付けられたデータの保存が開始されるべきロケーションを特定するか、又はDMA READ要求に対しては要求に関連付けられたデータの取り出しが開始されるべきロケーションを特定する、特定の論理又は物理「アドレス」);(c)DMA要求がそこから由来する入出力モジュールを示す識別子;及び(d)それぞれの入出力モジュールに対しては、そのモジュールから由来する特定のDMA要求を一意的に識別する「タグ(tag)」。DMA WRITE要求に対しては、この要求は、その要求に対してシステムメモリ中に保存されるべきデータも含む。図1のシステム100においては、それぞれのDMA要求に関連付けられたデータの量は固定されている。データ量が可変であるシステムに対しては、ヘッダーは更に(e)その要求に関連付けられたデータの量を示す識別子も含む。
DMA応答は典型的に以下のものを含む:(a)DMA応答の種類を示す識別子(すなわち、応答がDMA WRITE要求か、又はDMA READ要求に対応するものか)、(b)それぞれの入出力モジュールに対しては、入出力モジュールにより、それぞれのDMA応答を、それに対応するDMA要求に一意的に関連付けるために使用できる「タグ」、及び(c)DMA WRITE応答に対しては、対応するWRITE操作が成功であるか、失敗であるかを表示し、又はDMA READ要求に対しては、取り出されたデータの正当性を表示する、状況インジケーター。DMA READ応答に対しては、その応答は、さらにオリジナルのDMA READ要求により要求されたデータも含む。
図1のシステム100においては、入出力モジュールは、外部要求を満たすために対応するDMA要求が向けられるべきクロスバー(及び、可能であればそのメモリボード)を決定するために、それがREAD要求であるか、又はWRITE要求であるかを決定するために、特に、その要求を最小限度処理することにより、外部データ関連要求に対して応答する。
上述のように、入出力モジュールにより外部データ関連要求が最小限処理された後に、システムの構成要素は要求を満たすために作動する。例えば、入出力モジュールは、その種類(READ又はWRITE)を識別するためと同時に、外部要求を満たすために発行されるべき特定のDMA要求を決定するために、最初にそれぞれの外部データ関連要求を処理する。この入出力モジュールは、次いで、更なる処理のために、必要なDMA要求を適切なクロスバー・モジュールに伝達する。クロスバー・モジュールは、順々に、(a)それぞれの受け取られたDMA要求が向けられるべきメモリ・カードを決定し、(b)それぞれの受け取られたDMA要求を、シリアル・フォーマットからメモリ・カードに提供するのに適切な並列フォーマットに変換し、及び次いで、(c)それぞれのDMA要求の全部又は一部を、そのアドレス範囲が前記DMA要求に関連付けられているアドレスに広がっている、メモリ・カードに転送する。以下でより詳細に記載するように、メモリ・カード内の電気回路は、提供されたデータを物理メモリに保存するためか(DMA WRITE要求に対して)、又は物理メモリからデータを取り出すか(DMA READ要求に対して)の、いずれかのために、更にそのDMA要求を処理する。一般的に、それぞれのDMA WRITE要求に関連付けられたデータ・ペイロードが、その要求の一部として送達されることに注目することが重要である。いくつかの実施態様では、データが成功裡にメモリ・カードに伝送されたことを確認するために、肯定応答(ACK)信号が、クロスバー・モジュール及びメモリ・カードの間に存在することができる。
入出力モジュールのための高速シリアル・システム通信リンク、及びクロスバー・モジュール、設定変更可能なクロスバー・モジュール、及びクロスバー・モジュールのための高速並列メモリ通信リンク、及びメモリ・カードの組み合わせの使用により、記憶システム100は、極度に高帯域のシステムを提供する。
上記で開示された実施例において、入出力インターフェース・モジュールをクロスバー・モジュールに連結させる高速シリアル通信リンクは、コマンド及び制御情報(例えば、DMA要求のヘッダーに見出される種類の情報)、並びにデータ(例えば、データ・ペイロード中で提供される情報)の両方を運搬するために用いられる。データ・ペイロード中で受け取られた種類のデータの移転を含まない通信を提供するために、いくつかの追加的な最小限のシリアル通信リンクが用いられている代替的な実施態様が想起される。例えば、比較的低帯域、低速のシリアル通信リンクが、通信の特定のカテゴリーに用いることができるであろうし、従って高速リンクから一定量のトラフィックをオフロード(offloading)し、及びこれらのリンクの性能の中で、対応するブーストを達成する実施態様が想起される。それぞれのDMA READ要求及びDMA WRITE応答は、例えば、この方式で伝送でき、その両方ともが、それぞれのパケットの中で、データを移送するDMA WRITE要求及びDMA READ応答に対して高速シリアル・リンクを保存する。DMA READ要求、びDMA WRITE応答はいかなるデータ・ペイロードも転送しないため、それらは一般的にサイズにおいてはるかに小さく、及びより遅い通信リンクを、顕著な性能の低下なしで利用することができるであろう。代替的な実施態様では、DMA READ要求及びDMA WRITE応答は、代替的な低帯域シリアル・チャンネルを通じて転送されるか、全てのクロスバーへ、又は全てのクロスバーから別個に共有される高速リンクを通じるブロードキャストし得る。
高速シリアル・リンクは、データと同様の信号速度において、このサイドバンド・データを提供するために、マルチドロップ・バスを用いて、全てのクロスバーを全ての入出力モジュールに接続するためにも使用し得るであろう。代替的に、前記サイドバンド・リンクは、環状構造において実行し得るであろう。両方の場合に、このことは、追加される競合制御論理(arbitration logic)及びハードウエアを費やして、システム内のポイントツーポイント接続の数を減らすであろうが、より高いデータ処理能力及び帯域幅の追加的利益を伴う。
上記で説明された特定の素子に関する追加的詳細、及びその素子の代替的な実施態様及び/又は全体のシステムは以下で提供される。
入出力モジュール
図1の入出力モジュールは、多くの形態をとることができる。好適な入出力モジュールの1つの例示的な実施態様が図2に提供されている。
図2を参照すると、例示的な入出力モジュール200が図示されている。この例では、入出力モジュール200は、2つの別個のファイバー・チャンネル(FC)ポート(201及び203)を有するインターフェースを提供し、それぞれが、特定の入出力モジュール200がファイバー・チャンネル・ホスト・バス・アダプター(図示されていない)と接続することを可能にし、それによって、外部ホストがSCSI装置としてのシステム100にアクセスすることを可能にする。それぞれのポート(201又は203)は、単独のトランスミット・リンク及び単独のレシーブ・リンクを含み、それぞれのリンクは2.125ギガビット/秒(Gb/sec)、又は4.25Gb/secのいずれかで作動する。それぞれのポートは、ポイントツーポイント及び競合制御型ループ・ファイバー・チャンネル・プロトコルをサポートできる。この物理インターフェース、及び前記SCSI、及びファイバー・チャンネル(FC)プロトコルは、例示的であって、他の物理インターフェース及びプロトコルを用い得ることが理解されるであろう。
図2を参照し、前記例示的な入出力モジュール200は、情報を光と電気フォーマットの間で変換するための光電変換器202a及び202bを含む。一般にこれらの装置のそれぞれ(202a及び202b)は、その外部光レシーブ・リンク(201又は203)で受け取った信号を電気信号に変換し、その電気信号は次いで高速制御装置204に転送される。同様に、これらの装置のそれぞれは、高速制御装置204で受け取られた電気信号を光信号に変換し、この光信号はその外部光トランスミット・リンクを通じて伝送される。周知の光電変換器を用いることができる。
上記で示唆されたように、前記光電変換器は、高速制御装置204に連結される。図2の例では、前記高速制御装置204は、例えばXilinx Virtex−4 FPGA装置のような、構成されたフィールド・プログラマブル・ゲート・アレー(FPGA)である。この制御装置204は、通信リンクにより、Freescale MPC8547プロセッサ206などの、プログラム可能なマイクロプロセッサ(CPU)206及びメモリ208に連結されている。図示された例においては、メモリ208は、DDRメモリ成分から形成されている。
見られるように、前記制御装置204は4つの高速シリアル・システム通信チャンネル210、212、214及び216を提供する。前記プロセッサ206及び制御装置204は、前記外部ファイバー・チャンネル・ポート(201及び203)及び前記4つのシリアル・システム通信チャンネル210、212、214及び216の間でのプロトコル変換機能をともに遂行する。図示された例においては、シリアル・システム通信チャンネルのそれぞれは、トランスミット(TX)サブチャンネル及びレシーブ(RX)サブチャンネルの両方を含む全二重物理層を含む。それぞれのサブチャンネルは、ともに結合されて、10Gb/sデータのデータ移転速度の能力がある単独のサブチャンネルを形成する、2つの個別の5Gb/sシリアル通信リンクを更に含む。この例では、データは、シリアル・システム通信チャンネルを通じて伝送される前に、8B/10Bで符号化され、8G/sec(又は毎秒あたり1Gバイト(GB/sec))のデータ転送速度をもたらす。代替的な符号化のスキーム(例えば、64B/66B符号化)も用い得るであろう。図2の例では、それぞれのシリアル通信チャンネルは、Xilinx Virtex−4FPGA装置内で利用可能なマルチ・ギガビット・トランシーバー(MGT)モジュールを用いて実行されるが、他の同様な実行方法が、本開示の教示を逸脱することなく使用できることが理解されるであろう。FPGA装置のXilinx Virtex−4ファミリーにより可能になるような通信リンクを結合するために利用可能な手順を、前記通信チャンネルを形成するために用いることができる。代替的に、他のシリアル化/脱シリアル化(SerDes)プロトコルに関連付けられた結合スキームも用い得る。
図2の例では、前記入出力インターフェース・モジュール200は、4つのシリアル・システム通信チャンネル210、212、214及び216を提供し、それぞれは、異なるクロスバー・モジュールに接続されている。4つの全二重シリアル・システム通信チャンネルの使用は、それぞれの入出力モジュールに対して、潜在的な4GB/secのリード帯域及び4GB/secのライト帯域を集合的に提供する。もし、図1のシステム100が5個の入出力モジュールを使うならば、例示的な図示されたシステムは、合計20GB/secのリード帯域及び合計20GB/secのライト帯域を有するであろう。
一般に前記高速制御装置204は、FCインターフェース201及び203を通じて受け取られる外部データ関連要求を受け取り、及び処理する。上述したように、それぞれの外部データ関連要求は、典型的には以下を示すヘッダーを含み:(a)要求がREAD又はWRITE要求のどちらであるのか、及び(b)TARGET ADDRESSを示す。このヘッダーは随意に、(c)SOURCE ADDRESS、及び(d)要求に関連付けられたデータの量の表示、を示すことができる。WRITE要求に対しては、前記要求は、更にデータ・ペイロードを含む。前記高速制御装置204は、前記要求を処理し、及びヘッダー情報の大半(しかしデータ・ペイロードではなく)を、プロセッサ又はCPU206に提供できる。このCPU206は、FCプロトコルの少なくともいくつかの部分を管理し、及びシステムインターフェース全体の管理を支援する。
前に説明したように、前記高速制御装置204及びCPU206は、外部ファイバー・チャンネル・リンクを管理するために、ともに作動する。いくらかの最小のCPU支援に加えて、ほとんどの実施態様では、前記高速制御装置204は、外部データ関連要求のそれぞれを満たすために要求される内部DMA要求を発行することに単独で責任を負う。特に、前記高速制御装置204は、それぞれの外部要求を満たすために、発行するべき特定のDMA要求、及びどのクロスバーにそのDMA要求が発行するべきかを決定する。高速制御装置が、外部要求を満たすために、要求されるクロスバー・モジュール及びDMA要求を特定するとすぐに、それは適切なクロスバーに対するDMA要求の発行を開始する。一般に、入出力モジュール200により発行されることのできる、未処理のDMA要求(それらに対する応答が未だ受け取られていない要求)の数は、DMAヘッダー内のタグ・フィールドのサイズにより限定される。比較的小さい移転については、要求されるDMA要求の数は少なく、及び前記高速制御装置204は、応答の受領を待つことなくそれらの全てを発行できる。大きな移転に関しては、要求されるDMA要求の数は大きく、及び前記高速制御装置204は、DMA要求の発行を遅延させるように強いられる。8ビットのタグ値の場合、例えば、前記高速制御装置は、タグ値を再使用することなく、最初に256個のDMA要求を発行できるであろう。それぞれの未処理DMA要求は、一意的にタグ付けされ、前記高速制御装置がそれぞれのDMA応答を対応するDMA要求に関連付けることを可能にする。DMA要求への応答が返されたときに、前記高速制御装置は、完了されたDMA要求からのタグ(それに対するDMA応答が受け取られたもの)の再使用を開始できるであろうし、それにより、その後のDMA要求の発行を可能にする。
一般にDMA要求及びそれらに対応するDMA応答は、シリアル・システム通信チャンネル210、212、214、及び216を通じて移転される。それぞれの入出力モジュールは、4つのシリアル通信チャンネルに提供するために、それは、同時に、又はほぼ同時に、独立して、4つの異なるクロスバー・モジュールへの、又は4つの異なるクロスバー・モジュールからのデータを独立して伝送及び/又は受け取る。
以前に説明したように、前記高速制御装置204は、それぞれの外部データ関連要求を満たすために、READ及びWRITE DMA要求を適正なクロスバー・モジュールに送達することに責任を有する。一実施態様では、前記高速制御装置204は、前記高速制御装置メモリ208中に保持される、ルックアップ・テーブルを使用することにより、それぞれのDMA要求をどのクロスバー・モジュールが受け取るべきかを決定する。この実施態様では、前記制御装置204は、特定のクロスバー・モジュールを有するシステムにより提供されるアドレスの全体範囲の中で、アドレスの特定の範囲に相関する情報を含むルックアップ・テーブルにアクセスし、及び維持する。このアプローチの1つの利益は、それが、設定における、ある程度の柔軟性及びシステムの再配置を提供することである。より更なる実施態様では、メモリ208内部の前記ルックアップ・テーブルは、受け取られたアドレスが、予定のクロスバー・モジュール、及び所定のクロスバー・モジュールに連結された、特定のメモリ・カードと相関させることができるように、提示されたアドレスの特定の範囲を、所定のメモリ・カードと、及びさまざまなメモリ・カードをクロスバー・モジュールと更に関連付ける。
代替的な実施態様では、所定のクロスバー及び受け取られたアドレスの間の関係は所定のアドレス範囲が、常に特定のクロスバー・モジュールに対応できるように「組み込まれ(hardwired)」ている。
もっと別の実施態様では、所定のクロスバー及び受け取られたアドレスの間の関係は動的であり、それにより不合格の、又はさもなければ使用不可能のメモリ・カード又はクロスバーを別のメモリ・カード又はクロスバーに「再マップする」ことを可能にする。
図2の入出力インターフェース・モジュール200などの、入出力モジュールにより発行されるDMA移転は、固定、又は可変のデータ量のいずれかの移転を特定できる。DMA移転サイズが固定されている実施態様については、DMA要求が、移転されるべきデータ量に関する情報を提供することは不必要であり得る。メモリ・カードがフラッシュ・メモリを用いる実施態様では、前記DMA移転サイズは、単独のフラッシュ・メモリ・ページに記憶されるデータ量に固定されている。
DMA操作は、可変量のデータを移転できる。そのような実施態様では、それぞれのDMA要求は、典型的には、移転されるべきデータの量(しばしばデータの最小量の倍数として)の表示を含む。
DMA WRITE操作の間、DMA移転が固定又は可変移転サイズを用いて遂行されるかどうかに無関係に、前記高速制御装置204は、それが取り付けられた外部ホスト装置から受け取るデータをキュー待ちさせる。多重のDMA WRITE要求から成る、より大きなデータ転送については、前記入出力インターフェースは、DMA WRITE要求の発行を開始する前に、全ての外部データの受け取りを待つ必要はない。その代わり、前記高速制御装置は、DMA WRITE要求を発行開始し、及びそれぞれのDMA WRITE要求をサポートするために十分なデータが利用可能になるとすぐに、DMA WRITE要求を発行し続ける。
DMA READ操作の間、前記高速制御装置は、データ流を反対方向にキュー待ちさせる(システムメモリの外へ)。この場合には、前記高速制御装置は、多数のDMA READ要求を発行し、及び次いでDMA READ応答が、個別のクロスバー・モジュールから返されることを待つ。これらの応答は、それらの対応するDMA READ要求とは違う順序で受け取られることができるため、前記高速制御装置は、前記クロスバーから受け取られたデータを、それらのデータが、その正しい順序で送達されることができるまで、キュー待ちさせなければならない。外部データ要求が、256個のDMA READ要求の発行を要求するシナリオを想定すると、最後のDMA READ応答が、第一のDMA READ要求に対応することが可能であり、それにより256個のDMA移転からのデータをキュー待ちさせることを、前記入出力インターフェースに要求する。前記入出力インターフェースは、データが連続して送達される場合にのみ、外部要求者(ホスト装置)へのデータをアンロードできる。
上述された方式によって、前記入出力インターフェース・モジュール200は、前記要求を満たし、及び要求されたデータを外部のホスト装置に提供するために、外部ホストからデータ関連要求を受け取ることができ、システム100内のメモリにアクセスできる。
図2の前記入出力インターフェース・モジュールは、本開示のシステムにおいて使用可能な入出力インターフェース・モジュールの一例でしかないことを理解されたい。代替的な入出力インターフェースを用いることができる。代替的なインターフェースの一例は図3に提供されている。
図3は、複数の高速インフィニバンド・ポート(集合的に301と称されている)を介したデータ関連要求の受け取り能力のある、代替的な入出力インターフェース・モジュール300を図示している。
図3を参照するが、前記例示的な代替的な入出力モジュール300は、複数のインフィニバンド(InfiniBand)ポート301を通じて、データ関連要求及び応答を受け取り、伝送する能力のあるインフィニバンド・インターフェース・チップ302を含む。このインフィニバンド・インターフェース・チップは、Mellanoxから入手できるような、標準インフィニバンド・チップであってよい。
一般に前記インフィニバンド・インターフェース・チップ302は、データ関連要求をインフィニバンド・ポート301を経由して受け取り、及び少なくともコマンド・ヘッダーを、及び外部WRITE要求については、少なくともデータ・ペイロード識別する程度に受け取った要求を最小限復号する。インターフェース・チップ302は、次いで、図3の例ではPCI Express(PCIe)スイッチである、スイッチング素子、ルーティング素子、又は共有メモリ素子305の使用を介して、制御CPU306が利用可能なコマンド・ヘッダー情報を作成する。スイッチング/ルーティング/メモリ素子305を使用して、インターフェース・チップ302は、高速制御装置304(構成されたFPGAであることができる)が利用可能な受け取られたデータも作成する。前記高速制御装置304、多重シリアル・システム通信チャンネル310、312、314及び316を、クロスバー・モジュールに提供し、及び図2の高速制御装置200に関連して上記に記載されているのと同様の方式で、クロスバー・モジュールへの、及びクロスバー・モジュールからの、情報及びデータを受け取り、及び提供するために、受け取られたデータ関連要求を操作する。
上記で説明された、前記入出力インターフェース・モジュール200及び300は、単に例示的であり、及び他の種類の入出力インターフェース・モジュール、異なる物理層、異なる通信プロトコル、及び個別素子(構成されたFPGAsとは対照的に)を用いるものも含めて、本開示を逸脱することなく、使用できるであろうことが、理解されるであろう。
一般に入出力モジュールの主な要件は、外部から提供されたデータ関連要求を受け取り、及び応答することができること、並びにそれらの要求(及びその要求に応答するために情報及びデータを受け取ること)を複数の高速システム通信チャンネルを通じて多重クロスバー・モジュールに伝送できることである。
クロスバー・モジュール
上述したように、本開示のシステム中のそれぞれのクロスバー・モジュールの全体的な一般的機能は:(a)前記入出力モジュールからDMA要求を受け取り、及びそれらのDMA要求(加えて、付随するデータ・ペイロード)を、クロスバー・モジュールに接続された、適切なメモリ・カードに提供すること、並びに(b)取り出されたデータをクロスバー・モジュールに接続されたメモリ・カードから受け取り、及び取り出されたデータ(及び潜在的ないくつかの情報)を、取り出しデータに関連付けられえた前記入出力モジュールに提供することである。
開示されたシステムのクロスバー・モジュールを実行するためには、さまざまなアプローチを用い得る。図4は、図1に関連して上記に記載されたクロスバー・モジュールを実行するための1つの例示的なアプローチを図示している。
図4を参照するが、例示的なクロスバー・モジュール400が図示されている。クロスバー・モジュールはディスクリート電気回路、特定用途向け集積回路(ASICs)、又はこれらの2つの混合により実行できるが、図4の実施態様では、前記クロスバー・モジュール400は、Xilinx Virtex4 FPGAのような構成されたFPGAの使用により実行される。
この例では、構成されたFPGAは、5つのシリアル・システム通信ポート402、404、406、408及び410を提供するために構成されている。それぞれのシリアル通信ポートは、高速、双方向通信チャンネルを、それ自身と、入出力モジュールの前記高速通信ポートの1つとの間に提供するために構成され、及び接続されている。従って、この例では、クロスバー・モジュール400が、5つの全二重通信ポートを提供しているために、それは同時に及び独立してシステム100の前記入出力モジュールのそれぞれと通信できる。従って、シリアル通信が、前記入出力モジュールのそれぞれ及びクロスバー・モジュール400の間に存在するように、通信ポート402は、入出力インターフェース・モジュール102のシリアル通信ポートの1つに連結でき、ポート404は、入出力インターフェース・モジュール104のポートに連結でき、その他も同様である。
上述の5つのシリアル通信ポートを提供することに加えて、図4のクロスバー・モジュール400は、クロスバー・モジュール400及び複数のメモリ・カードの間の通信を可能にするために用いられる、多重並列通信バスも提供する。図4の例では、5つのメモリ・カード412、414、416、418及び420があり、及びクロスバー・モジュール400は、並列バスを用いてメモリ・カードと通信する。図4の例では、クロスバー・モジュール400、及び個別のメモリ・カードのそれぞれの間の通信は、この例では、それぞれのメモリ・カードに対して16ビット長のデータ・バス及び5ビット長の制御バスを含む、並列バスを用いて達成される。
一般的な操作において、クロスバー・モジュール400は、第一にシリアル・システム・リンクの1つを経由して、DMA要求を受け取り、DMA要求が向けられるべき特定のメモリ・カードを特定し、受け取られたDMA要求をシリアル・フォーマットから並列フォーマットに変換し、及びその並列フォーマット化されたDMA要求を適切なメモリ・カードに提供する手段として機能する。加えて、クロスバー・モジュール400は、典型的にはメモリ・カードにより提供されたデータを受け取り、そのデータが、どの入出力モジュールを意図しているか決定し、及び受け取られたデータを、シリアル・システム通信リンクの1つを通じて、DMA応答として適切な入出力モジュールに転送する。
例示的なケースでは、クロスバー・モジュール400は、それぞれの入出力モジュールと、シリアル・インターフェース・バスを用いて通信し、及びそれぞれのメモリ・カードとは、並列インターフェース・バスを用いて通信する。前記入出力インターフェース・バスの実行は、前記入出力モジュールに依存し、及びメモリインターフェース・バスは、メモリ・カードに依存することに注意されたい。理論的には、そのバスが要求されるデータ速度で実行するという前提で、どちらのバスも、シリアル又は並列インターフェースのいずれかにより実行される。インターフェース・バスは、用途依存性であり、及び特定のバスの選択に影響する設計決定は、当業者にとっては自明である。例として、コネクタ密度を最小化するために、前記メモリ・カード・インターフェースは、前記入出力モジュールに本質的に同様である高速シリアル通信として実行されることができ、クロスバーとメモリ間のインターフェースを単純化できるであろう。
クロスバーポートを入出力モジュールに接続するバスのそれぞれは、ポイントツーポイント(point−to−point)であるために、競合制御(arbitration)は最小であり、及びオーバーランを防止することが必要な場合には、クロスバーが前記入出力バスをホールドオフする(holdoff)ることを可能にするために設計されたメカニズムにより規制される。
これらのタスクを遂行するためのFPGAの構成は、本開示の利益を受ける当業者にとり自明である。
メモリ・カード
開示されたシステムで用い得るメモリ・カードは多くの形態をとり得る。さまざまな種類のランダムアクセスメモリ(DDR RAM、DDR2 RAM、DDR3 RAMなどの)及びさまざまな種類のフラッシュ・メモリ(MLCフラッシュ・メモリ及びSLCフラッシュ・メモリなどを含む)を含むさまざまなメモリを使うことができる。メモリ・カードの構造も、部分的には使用されるメモリに応じて変更できる。
図5は、フラッシュ・メモリを用い、及び本開示のシステムにおいて用い得るメモリ・カード500の例示的な実施態様を図示している。図5の例では、このフラッシュ・メモリは、SLCフラッシュ・メモリであるが、MLCフラッシュ・メモリが用いられる実施態様も予測される。
図5を参照するが、このフラッシュ・メモリ・カード500は、システム制御装置をクロスバー・モジュール(図5には図示されていない)の1つと連結させている、並列バス504を通じて情報を受け取るシステム制御装置502を含む。上述したように、並列バス504は、16ビット長のデータ・バス及び5ビット長の制御バスを含む。クロスバー・モジュールから提供されるDMA要求は、システム制御装置502により受け取られて、及び処理される。システム制御装置502は、メモリ・カード及びクロスバー・モジュールの間の通信プロトコルを取り扱い、及びバス・エラー管理のためのエラー修正などの機能を実行できる。加えて、システム制御装置502は、メモリ・カード上のどの特定のメモリ素子が、TARGET ADDRESSと関連付けられているかを決定するために、受け取られたTARGET ADDRESSアドレスを部分的に処理することもできる。
例示的なシステムでは、システム制御装置502は、多数の個別のフラッシュ制御装置506、508、510及び512と、直接接続を介して通信する。システム制御装置502は、個別のフラッシュ制御装置との通信もできるCPU503とも通信する。この通信は、図5に示されるように、フラッシュ制御装置への直接接続を介するか、又はCPU503がフラッシュ制御装置にアクセスするために、システム制御装置502と通信する「通過(pass−through)」接続を介することができる。これは、典型的にはバスのファンアウト(fan−out)を減少させるために行われ、及び当業者には明白な設計検討である。
図示された例においては、システム制御装置502、及びフラッシュ制御装置506、508、510及び512との間の通信は、独立した16ビット長の並列バスを用いて達成され、そのような独立した並列バスは、システム制御装置502及び個別のフラッシュ制御装置506、508、510、及び512のそれぞれの間に連結されている。同様の独立した16ビット長の並列バスは、CPU503がそれぞれのフラッシュ制御装置506、508、510及び512と直接通信する実施態様において使用できる。
個別のフラッシュ制御装置のそれぞれは、物理フラッシュ・メモリ空間513、514、515、及び516、制御装置メモリ517、518、519、及び520(例えば、DDR RAMメモリであってよい)とそれぞれ連結されている。図示された例においては、それぞれの物理フラッシュ・メモリ空間(513〜516)は、10個の独立したフラッシュ・メモリ・チップから形成されている。操作においては、フラッシュ制御装置502は、提供されたデータを特定の物理フラッシュ・メモリに保存し、及び要求されたデータを取り出し、及びそれをシステム制御装置502に提供するために、DMA要求を処理する。多数のさまざまな種類のフラッシュ制御装置を用い得る。好適な制御装置及びその操作の一つは、2009年9月5日に出願された同時係属の米国特許出願第12/554,888号、12/554,891号、及び12/554,892号により詳細が記載されており、参照により本願に組み込まれる。
特に、本開示のシステム100は、前記入出力インターフェース・モジュールにより受け取られたTARGET ADDRESSが、メモリ・カードに提供されるアドレスであるように作動するため、本願のシステムは、フラッシュ・メモリ(究極的に受け取られたTARGET ADDRESSの物理フラッシュ・アドレスロケーションへの移行を必要とする)及びRAMメモリ(又は論理から物理アドレス変換を必要としない他のメモリ)の両方と容易に使用できる。更に、TARGE ADDRESSから物理フラッシュ・アドレスのいかなる変換も、DMA要求がメモリ・カードに提供された後に行われるために、本願のシステムは、フラッシュ・メモリ・カード及びRAMメモリ・カードの両方の使用を可能にする。このことは、受け取られたTARGET ADDRESSを特定の物理フラッシュ・アドレスにマッピングするフラッシュ制御装置の操作が、クロスバー・モジュールをメモリ・カードに連結させるインターフェース・バスにとって、大部分トランスペアレント(transparent)であるためである。
図6は、本開示のシステムにおいて用い得るRAMメモリを用いるメモリ・カード600の代替的な実施態様を図示している。この実施態様においてはクロスバー・モジュールによりメモリ・カードに提供されるアドレスは、アクセスするRAMメモリに対して物理アドレスとして使用される。図を参照するが、メモリ・カード600は単独の多重層印刷回路板に配置され添付されることのできる多数の素子を含む。
一般に、メモリ・カード600は、システム制御装置602を含み、このシステム制御装置602は、図5からの前記制御装置502のように、DMA要求をクロスバー・モジュールから受け取り、及びその要求を、そのシステム(エラー修正を含むか、又はそれと結合されることのできる)のために採用されたプロトコルを用いて処理する。システム制御装置は、次いで要求及びデータ・ペイロードがあれば、それを受け取られたデータのTARGET ADDRESSに対応する、適切な物理アドレスへの急速DMA移転を手配できる(WRITE要求に対して)メモリ制御装置604に渡すか、又はDMA移転を用いて、データをRAMメモリ606(DDR、DDR2、DDR3又は任意の他の高速RAMメモリであってよい)から取り出し、及びそのデータをシステム制御装置602に提供する(READ要求に対して)。図6に示される矢印の方向性は、WRITE操作の例を描写することのみを意味していることが理解されるであろう。実行の目的で、制御装置602及び制御装置604の両方が1つのFPGA装置に結合されることも理解されるであろう。
代替的なシステムの実施態様:
上述のシステム100では、クロスバー・モジュールは、シリアル形式で伝送されたデータ関連要求を受け取り、及びそれらの要求を、メモリ・カードに提供される並列形式の要求に変換するために用いられる。クロスバー・モジュールが除去され、及び前期データ関連要求が、シリアル形式で直接前記入出力モジュールからメモリ・カードに伝送される代替的な実施態様が想起される。
図7は、入出力モジュール又は装置が、クロスバー・モジュールを使わずに高速シリアル通信リンクを用いて直接的にメモリ・ボードと通信できる代替的な記憶システム700を図示している。
図7を参照するが、代替的な記憶システム700は、複数の入出力モジュール701、702、703、704、705、706、707、708、709、710、711、及び712を含み、それらのそれぞれは、1つ以上の外部ホストと、1つ以上の通信チャンネルを経由して連結されている。図示された例においては、それぞれの入出力モジュールは、前記入出力モジュールのそれぞれが、複数のメモリ・ボード740、742、744及び746のそれぞれ1つと通信することを可能にする、複数の高速双方向性全二重シリアル通信チャンネルを提供する。図7の例では、それぞれの入出力モジュール701〜712は、8個のシリアル通信ポートを提供し、及びそれぞれの入出力モジュール及びメモリ・ボードの接続回線は、2つの個別の全二重通信チャンネルを反映することが意図されている。
前記入出力モジュール701〜712は、メモリ・ボード740、742、744及び746に、極度に高帯域通信が可能になる方法で連結されている。例えば、第一の入出力モジュール701は、8個のシリアル・データ・ポート(メモリ・ボードのそれぞれに対して2個)を提供する。従って、前記入出力モジュール701が提供できる最大データ速度は、シリアル通信チャンネルの最大帯域幅の8倍である。
操作においては、前記入出力モジュール701〜712は、図2及び3に関連して上記で記載された、前記入出力モジュールと同様の操作を行う。しかしながら、図7の入出力モジュールは、より多数のシリアル通信チャンネルを提供するため、それらは、同時で、及び独立した、より多くのデータ関連要求又は応答通信を可能にする。このことは、一般的に記憶システム700に、並びに特に前記入出力モジュール701〜712とメモリ・ボード740、742、744及び746の間に、より高い帯域幅をもたらす。例えば、前記入出力モジュール701は、8個のシリアル通信ポート(メモリ・ボードのそれぞれに対して2個)を提供するため、同時(又はほぼ同時)に、及び独立して2つのWRITE要求を、メモリ・ボード740、742、744及び746のそれぞれに対し発行し、合計8個の同時(又はほぼ同時)に処理されたWRITE要求を発行できるであろう。元のシステム100において言及されたように、クロスバーなしでは、同じ競合制御(arbitration)及びホールドオフメカニズムは、いくつかの実施態様ではそれぞれのメモリ・ボードに配置される。
図7の例では、それぞれのシリアル・システム通信リンクは、前記入出力モジュール又は通信装置及びメモリ・ボードへのデータ及び制御情報の両方を、又はそれらからのデータ及び制御情報の両方を、渡させるために用いられる。とりわけ、それぞれのメモリ・ボードは、デジタル・データを受け取り、及びWRITE要求に応答し(メモリ・ボード上の物理的メモリ空間の中の特定のメモリロケーションの中にデジタル・データを記憶させるために)、及びREAD要求に応答する(ボード上の物理メモリの特定のメモリロケーションの中に記憶されたデジタル・データを取り出し及び提供するために)。それぞれの高速シリアル通信リンクは、非常に高速(この実施例では625MB/sec)で、シリアル・データを受け取るか、又は伝送するため、図7のシステムは、非常に高いデータ速度でデータの記憶、又は取り出しができる。
図8は、図7のシステム700で使用するための、例示的なメモリ・ボード800の構造に関する詳細を図示している。
図8に転じて、メモリ・ボード800は、記憶制御ユニット802及び複数の個別のメモリ・チップから形成された物理的メモリ空間804を含む。このメモリ・ボードは、メモリ・ボードが複数のシリアル通信リンクを受け取ることを可能にするために、更に適切なインターフェース回路806を含む。図8では、インターフェース回路806は、メモリ・ボード800が、24個のシリアル通信リンクからの入力を受け取ることを可能にする。図8の例では、さまざまな要素全てが同一の印刷回路板800の上に配置されている。
記憶制御ユニット802は、Xilinxから入手可能な333MHzで稼動するVirtex−6FPGA(XC6VLX240T−2FFG1156CES)などの、フィールド・プログラマブル・ゲート・アレイ(FPGA)の使用により形成できる。しかしながら、記憶制御ユニット802は、代替的に他の種類のFPGA装置、ディスクリート回路、プログラムされたマイクロプロセッサ、又はそれらの任意の、又は全ての組み合わせによっても実行できるであろうことが理解されるであろう。
図示された例においては、物理的メモリ空間804は、Micron Technologies,Incから入手可能な333MHzで稼動するDDR3−800(MT4J128M8BY−25E)のような複数のダブルデータレートダイナミックRAM・チップ、DDR、を用いて構築される。しかしながら、代替的なDDRデバイス、フラッシュ及び他の種類のメモリなどの他の形態のメモリが、本開示の教示を逸脱することなく使用できることが理解されるであろう。
この実施例では、記憶制御ユニット802は、物理的メモリ空間804への288本の外部並列データ回線(図9によりよく示される)を駆動する。メモリ空間は、333MHzでクロックされるDDRメモリを使用するため、図8の前記高速メモリ・ボードは、それぞれのクロック・サイクルに対して物理的メモリ空間内に、最大576ビットのデジタル情報(512ビットのデータ及び64ビットのECC)を記憶する能力があり、従って全体でデータ及びECCについては約24000MB/sec、データ単独では20.83GB/secの記憶速度を提供する。
図9は、例示的な高速メモリ・ボードの構造の一部分をより詳細に図示している。特に、図9は、シリアル通信リンクからのデジタル・データを受け取り、物理的メモリ空間804内への記憶のために、そのようなデータを操作するために使うことができる、図8の記憶制御ユニット802内の構造を図示している。
図9を参照するが、前記高速シリアル通信リンクの1つ、シリアル・リンク900が、記憶制御ユニット802と連結しているところが図示されている。前記高速シリアル通信リンク900は、記憶制御回路802内に配置されるシリアライザ/デシリアライザ及びパッキング・モジュール912に提供される。このシリアライザ/デシリアライザ及びパッキング・モジュール912は、図10Aに更に説明されており、シリアル・リンクが記憶制御ユニット802内に配置されるマルチ・ギガビット・トランシーバー(MGT)1010へ入力されるところを描写している。MGT1010は、シリアル通信リンクからシリアル・データを受け取り、及び定期的に、受け取られたシリアル・データを並列データに変換する。図10Aの実施例に進んで、MGT1010はシリアル・データを受け取り、及び156.25MHzで並列32ビット長のデータを提供する。
図10Aの例では、MGT1010からの32ビット長の並列データは、256ビット長の多重ワード・ディープ先入れ先出し(FIFO)記憶バッファー1012に、MGT1010から受け取られた32ビット長のデータが256ビット長のデータ・ワードにパックされる方式で提供される。このプロセスは図10B〜10Dに一般的に図示されている。
図10Bを参照するが、256ビット長のFIFO記憶装置1012が、256ビット長のワードA1〜A8とパックされるところが模式的に図示されている。256ビット長のワードを形成するために、図示されたシステムでMGT1010からの32ビット長のデータをパックしている方法は以下のものである。第一に、この例ではA1である、最初の32ビット長のワードがMGT1010から受け取られる。その最初の32ビット長のワードA1は、図10Bに反映されているように最初のデータメモリロケーションに記憶される。MGT1010から、この例ではA2である、次の32ビット長のワードが受け取られて、第二のメモリロケーションに記憶され、第三のワードA3が3番目のメモリロケーションに記憶され、図10Bに示されているように、256ビット長のワードA1〜A8を形成するために8個のワードA1〜A8が受け取られ、FIFO1012に記憶されるまで、以下同様となる。
256ビット長のワードA1〜A8が、上述のプロセスで形成され、及びこの例ではB1である、別の32ビット長のワードが、MGT1010から受け取られると、最初のワードA1〜A8は、FIFO1012内の別のメモリロケーションにシフト「下げ」され、及び新しく受け取られた32ビット長のワードは、図10Cに反映されているように、最初のメモリロケーションに記憶される。図10Cに反映されているように、このプロセスは、第二の完全な256ビット長のワードB1〜B8が構築されるまで繰り返される。MGT1010から32ビットのワードを受け取り、受け取られた32ビットのワード256ビットのワードにパックし、及び256ビット長のワードをFIFO1012を通じてシフトさせるプロセスは、FIFO1012内の256ビット長のメモリロケーションが、完全に占められるまで継続する。より完全に占められているFIFO1012の例は、図10Dに図示されている。
スタッキングFIFO1012の「深さ(depth)」は実行に応じて変化するが、図9の例、及び10A〜10Dにおいては、FIFO1012は、少なくとも32個の256ビット長ワードの深さである。このことは、この例では、32個の256ビット長のワードのグループが、物理的メモリ空間804への、又は物理的メモリ空間804からの、データ転送において使用される基本単位であるためである。そのようなものとして、本願では、32個の256ビット長のワードのそれぞれのグループを、基本メモリ周期(Basic Memory Cycle:BMC)単位と称する。この例では、それぞれのBMC単位は8個の、192データビット(32x256)又は1KBのデータを含む。
図9に戻って、パッキングFIFO912からのデータは、多重チャンネルFIFOバッファー914に提供されるが、図9では、それらのうちの1つのチャンネルだけが図示されている。図示された例においては、多重チャンネルFIFOバッファー914は256ビット長であり、データを256ビット/秒の速度でデータを受け取ることができ、及び27.7MHzの速度でクロックされている。データは、シリアライザ/デシリアライザ及びパッキング・モジュール912から、多重チャンネルFIFOバッファー914に、データの完全なBMC単位が、32クロック周期を通じて転送される、バースト転送を用いて提供される。
データの完全なBMC単位が、シリアライザ/デシリアライザ及びパッキング・モジュール912から、多重チャンネルFIFOバッファー914に転送されると、多重チャンネルFIFOバッファー914は、データの完全なBMC単位を、32個の連続的な256ビットの「ワード」の形態で含むようになる。図示された例においては、多重チャンネルFIFOバッファー914の深さは、それがデータの多重BMC単位を記憶することができるようなものである。このことは、多重チャンネルFIFOバッファー914の内容が3つのデータのBMC単位を含むものとして描写されている(1140a、1140b及び1140cのブロックにより表されている)図11に一般的に反映されている。
図9に戻り参照すると、多重チャンネルFIFOバッファー914に記憶されたデータは、333MHzで稼動する256ビット長の並列データ・バスを経由してエラー修正及びデータ保護回路916に提供される。エラー修正及びデータ保護回路916は、受け取られたデータを1つ以上のエラー修正コード(ECC)・ビットを導入するために処理し、及びそのデータの破損に対する強化された保護のためにデータを処理する。ECC処理の例は、当業者にとって周知であり、及びいかなる適切なECC処理機構をも使用できる。加えて、前記エラー修正及びデータ保護回路は、他のデータ保護技法又はチップキル(ChipKill)などの変換、及び強化されたデータ保護のために通常用いられる技法も実行できる。当業者が理解し得るチップキルは、IBMにより開発された進化したECCの形態であり、コンピュータ・メモリ・システムを、いかなる単独のメモリ・チップの不具合からと同時に、単独のメモリ・チップのいかなる部分のマルチビット・エラーからも保護する。チップキルに関する追加的情報は、以下の文献に見出すことができ、これは参照により本願に組み込まれる:Timothy J. Dell,A White Paper on the Benefits of・Chipkill−Correct ECC for PC Server Main Memory,(1997),IBM Microelectronics Division。
エラー修正及びデータ保護回路916の操作の結果として、回路に提供されるそれぞれの256ビット“ワード”にビットが加えられ、及び結果として生成する回路の出力は、この実施例ではそれぞれの256ビットの入力に対して288ビットである。この288ビットの出力はECC及びデータ保護回路916に提供される入力データは、回路916により加えられる保護及びECCビットに対応する。
このデータ保護回路916からの288ビット長の出力は、288ビット長の並列バスを経由して、2つの出力FIFOバッファー918及び920に提供される。この実施例では、この並列バスは、333MHzでクロックされている。データ保護回路からのデータは、ピンポン方式で出力FIFOバッファー918及び920に提供される回路からの第一の288ビット“ワード”が出力FIFOバッファー(例えば、出力FIFOバッファー918)の1つに提供され、一方次の288ビット“ワード”は、次のクロック周期で出力FIFOバッファー(例えば、FIFOバッファー920)の他の1つに提供される。この方式で、完全なBMC単位に対応するデータは、データの半分がそれぞれの出力FIFOバッファーに存在するように、2つの出力FIFOバッファー918及び920に配置される。この実施例では、それぞれの出力FIFOバッファー918及び920の深さは、それぞれのバッファーが、多重BMC単位に対応するデータを保存できるようなものである。
回路916から、出力FIFOバッファー918及び920へのデータ移動のこのプロセスは、図12及び12Aに一般的に図示されており、ここでは出力FIFOバッファー918及び920の例示的な内容は、BMC単位の移転後が図示されている。この図に反映されているように、例示的なBMC単位のデータは、両方のバッファーに含まれ、及び完全なBMC単位を作り上げるデータは、2つの出力FIFOバッファー918及び920の間に「インターリーブ」される。
図9に戻って参照するが、2つの出力FIFOバッファー918及び920からのデータは高速の576ビット長の出力メモリ・バッファー922に提供される。図9の例では、それぞれのFIFO出力バッファー918及び920は、288ビットのデータ及びエラー保護情報を、それぞれのクロック周期で、前記高速出力メモリ・バッファー922に提供し、及び前記高速メモリ・バッファー922への入力は、この実施例では、333MHzでクロックされている。このスピード及びデータ転送速度では、データ(32ワード)の完全なBMC単位は、16クロック周期に変換される。ここで、16ワードがFIFO出力バッファー918及び920のそれぞれに記憶され、及び従ってBMC全体の移転には16周期が必要である。
出力FIFOバッファー918及び920と、前記高速出力メモリ・バッファー922の間の連結は、出力FIFOバッファー918及び920に記憶されていた、かつて、インターリーブされた(interleaved)データが、単一の適正に順序付けられた576ビットの“スーパー・ワード”を形成するために組み合わされるようなものであり、このスーパー・ワードの中では、前記高速シリアル通信リンク900を通じてデータがもともと受け取られたときの順序を反映している。
図9に戻って参照するが、前記高速出力バッファーからのデータは、333MHz DDRでクロックされている288ビット長の並列バスを通じて、物理メモリ804(図示されていない)に提供される。このDDRクロックは、データを両方のクロック・エッジで移転し、出力メモリ・バッファー922からのデータは、効果的に667MHzの速度で移転される。結果として図9の回路のメモリへの効果的なデータ転送速度は20.83GB/secである。
説明の目的のために、図9の実施例は、この実施例では(図7を参照のこと)シリアル入力701である、単独の高速シリアル入力のみとの関連において本システムの操作を図示及び記述している。完全な例示的なシステムにおいては、最大24個の個別の高速シリアル通信リンクが提供され得る。そのような多重シリアル通信リンクを有するシステムからのデータが、本開示のシステムにより処理される方式は、図13A〜13Bに反映されている。
最初に図13Aを参照するが、図9との関係で上記で説明されたものに酷似したシステムが図示されている。しかしながら、図13Aの例では、例示的な高速入力についての入力MGT1010及びパッキングFIFOバッファー1012は、入力処理ブロック1370を形成するために組み合わされている。加えて、それぞれが対応する入力処理ブロックを有する、11個の他のシリアル入力1371〜1381が示されている。これらの入力処理ブロックのそれぞれは、データの完全なBMC単位を、バーストモード方式で多重チャンネルFIFOバッファー914に提供することを可能にするために、図9及び10A〜10Dとの関係で上記に記載された回路のように作動する。
図13Aのシステムの設計のために、ピーク作動状態の間には、WRITE操作からのデータは、ほとんど常に多重チャンネルFIFOバッファー914に提供され、及び多重チャンネルFIFOバッファー914からのデータは、ほとんど常にエラー修正及びデータ保護回路916に提供されるように、このシステムは、データを非常な高速で受け取ることができる。
しかしながら、図13Aのシステムは、好適には、記載されたシステムにより提供される前記高速シリアル通信リンクの半分からのデータを処理する。図13Bに示されるように、この例示的なシステムは、残りの12個のシリアル通信リンクからのデータを処理し、及びそのデータを第二のエラー修正及びデータ保護回路916’に提供する、別の多重チャンネルFIFOバッファー914’を含む、上記に記載されたものと同様の、別の一式の回路を含む。
図13Bに反映されているように、第二のエラー修正及びデータ保護回路916’は、“ピンポン”方式で、その出力を出力FIFOバッファー918及び920に提供する。しかしながら、この例示的なシステムでは、第二のエラー修正及びデータ保護回路916’からのデータを移転する手順は、第一のデータ保護回路916がデータを出力FIFOバッファーの1つ(例えば、出力FIFOバッファー918)に出力している間、第二のエラー修正及びデータ保護回路916’は、データを他の出力FIFOバッファー(例えば、出力FIFOバッファー920)に移転するようなやり方で、第一のエラー修正及びデータ保護回路916とは、「位相ずれ(out−of−phase)」で作動する。次のクロック周期の間、この移転は「スイッチ」する。この方式により、それぞれのクロック周期の間に、データは常に両方の出力FIFOバッファー918及び920に送達される。
異なるWRITE操作からのデータを不適切に「混合する」ことを防止するために、第一及び第二のエラー修正及びデータ保護回路916及び916’により提供されたデータは、単一のシリアル通信リンクを通じて受け取られたデータに見えるように再結合できる方式で、好適には、出力FIFOバッファー918及び920へ移転される。これを達成するための1つのアプローチは、図14A及び14Bに反映されている。
図14A及び14Bを参照するが、第一のデータ転送操作の間、第一のエラー修正及びデータ保護回路916(例えば、ワード0、a0)から移転される準備ができているBMC単位の第一の偶数のワードは、第一の回路916により、第一の回路916のために予約されている出力FIFOバッファー918の一部分に移転される。同時に、第二のエラー修正及びデータ保護回路916’から移転される準備のできているBMC単位の第一の偶数ワード(ワード0、b0)は、第二の回路916’からのデータの記憶のために予約されている出力FIFOバッファー920の一部分に移転される。次のクロック周期の間、第一の回路916中のBMCからの第一の奇数ワード(例えば、ワード1、a1)は、出力FIFOバッファー920の予約された空間に記憶され、及びFIFO916’中のBMCからの第一の偶数ワード(例えば、ワード1、b1)は、出力FIFOバッファー918内の予約された空間に記憶される。この方法により、最大帯域幅が保持されるように、データは常に出力FIFOバッファー918及び920の両方に移転される。
代替的な方法では、第二のエラー修正及びデータ保護回路916’からのデータの書き込みは、全ての偶数のワードが出力FIFOバッファー918に記憶され、及び全ての奇数のワードが出力FIFOバッファー920に記憶できるように、1周期遅らせることができる(図14C及び14Dを参照のこと)。
上記で説明した図9及び他の図に反映されているように、データの受け取り及び処理のための電気回路のために提供することに加え、それが、前記高速シリアル通信チャンネルの1つを通じて、要求されたデータを次いで適切なホストに提供できる入出力インターフェース・モジュールに移転されるように、それぞれのメモリ・カードは、高速のデータ速度でのRAMメモリからのデータの取り出し、及び受け取られたデータを解凍するための同様の構造(本質的に逆順に操作する)を含むことができる。
図示された例においては、メモリ制御装置802を物理RAMメモリ804に連結するデータ及びアドレス回線は、任意の所定の時間に、READアクセスのみ、又はWRITEアクセスのみが遂行できるようになっている。従って、最適の成績を提供するためには、図15に一般的に示されるように、前記制御装置802は、何らかの形態の競合制御を行わなければならない。一実施態様では、この競合制御は、前記制御装置802内に、それぞれのデータ関連要求に対するコマンド・ヘッダー情報を受け取り、及びその情報を、その要求を提供した前記入出力インターフェース・モジュールに関連付けられたバッファー中に記憶する競合制御モジュール1504を組み込むことで達成される。好適な実施態様では、この競合制御モジュール1504は、前記制御装置802が、入出力インターフェース・モジュール単位で、入出力インターフェース・モジュール上のバッファーされた記憶装置の中で、それぞれの入出力インターフェース・モジュールから受け取られたREAD及びWRITE要求又はコマンドのリストを保持するように、READ操作のための個別のバッファー1500及び1502、並びにWRITE操作のための個別のバッファー1501及び1503を保持する。一般にこのリストは、タイム・スタンプ、又は時間順の原理で保持されることができ、及びリストへのそれぞれのエントリーは、入出力インターフェース・モジュールから受け取られたそれぞれのデータ関連要求に関連付けられたコマンド情報、すなわち、TARGET ADDRESS、ワード・カウント(又は移転されるべきデータ量の他の表示)及び移転方向の表示(例えば、それがREAD又はWRITE操作のいずれであるか)を、含むことができる。
性能を最適化するために、READ及びWRITE要求は以下のように処理されることができる:
一般に前記競合制御・モジュール1504は、READ要求を優先し、及び以下で説明する条件が満たされない限り、さまざまな入出力インターフェース・モジュールのために、READ要求バッファー中のREAD要求を先着順の原理で処理する。
もし、競合制御・モジュール1504及び前記制御装置802が、未処理のREAD要求がないように、全てのREAD要求を処理すると、競合制御・モジュール1504及び前記制御装置802は、次いでWRITE要求バッファー中の未処理のWRITE要求を先着順の原理で処理する。
多すぎる未処理のWRITE要求を持つことを避けるため、並びにアドレス待ち時間及び一貫性の問題を助力するために、競合制御・モジュール1504及び前記制御装置802は、未処理のWRITE要求の数が特定の閾値数を越えていると決定された場合には、WRITE要求を処理する。競合制御・モジュール1504は、この閾値を越えている決定を以下のことを考慮して行う:(i)前記入出力インターフェース・モジュールの合計からの全ての未処理のWRITE要求の合計数;(ii)所定の入出力インターフェース・モジュールからの未処理WRITE要求の合計数;又は(iii)上記のいくつかの組み合わせ。例えば、もし未処理WRITE要求の合計数、及び所定の入出力インターフェース・モジュールのためのWRITE要求の数が考慮される場合、競合制御・モジュール1504は、以下のどちらかである場合に、前記制御装置802にWRITE要求を処理させることができる:(i)未処理のWRITE要求の合計数が第一の閾値を越える(この場合には、未処理のWRITE要求は先着順の原理で処理される)又は(ii)所定の入出力インターフェース・モジュールのための未処理のWRITE要求が第二の閾値を越える場合(第一の閾値よりも低くてよい)、この場合には、競合制御・モジュール1504は、前記制御装置802に、先着順の原理で、閾値を越えるバッファーに関連付けられる特定の入出力インターフェース・モジュールにWRITE要求を処理させる。
更に、競合制御部は、妨害又は絞り(throttling)なしで、前記入出力インターフェース・モジュールが、データ及びデータ関連要求を、送信し続けることができるように、それがデータ受け取りに関連付けられた出力FIFOバッファーの1つの中に記憶されたデータが、出力FIFOバッファーの記憶能力の1/2を超える量などの特定の限界を越えたと判断した場合は、WRITE要求を処理でき、この場合にはそのWRITE要求に関連付けられた出力FIFOバッファーが、処理される。
上述のことに加えて、競合制御・モジュール1504は、データの一貫性が維持されるようにどのようにREAD及びWRITE要求が処理されるかを制御することもできる。例えば、未処理のREAD要求が特定のアドレスに向けられること、及び時間的に早い未処理のWRITE要求があることが決定される場合、競合制御・モジュール1504は、適切なデータを、WRITE要求への応答を確実に返すために、前記制御装置802に未処理のWRITE要求を処理させることができる。
メモリ・チップ・アクセス
メモリ制御装置802が物理RAMメモリへ、又は物理RAMメモリからデータを移転するために使用できるさまざまなアプローチ及び方法がある。一実施態様では、前記制御装置802は、競合制御・モジュール1504からコマンド情報をデータ転送のタイミングを制御する開始インジケーターとともに受け取るDDR3メモリ制御モジュールとして機能するか、又はDDR3メモリ制御モジュールを含むことができる。一般に競合制御・モジュール1504から提供されるこのコマンド情報は、以下のものを含むことができる:競合制御の目的で用いられるバッファーに記憶された同じ情報、すなわち、ターゲット・アドレス、及びより具体的には、移転のための開始アドレス;移転されるべきデータの量の識別子、これはワード・カウントであってよい;及び移転方向。メモリ制御モジュールとして作用する前記制御装置802は、次いで、TARGET ADDRESS(開始アドレス)により指示されたときに、適切なメモリ・チップを活性化する。
移転の方向がメモリへのWRITEを示す場合、前記制御装置802は、出力メモリ・バッファー922からのデータを転移する一方、メモリ・チップへのコマンド(例えば、タイミング及びアドレスコマンド)の発行を調整する。
移転の方向がRAMメモリへのREADを示す場合、前記制御装置802は、メモリ・チップからのデータを、データが向けられる前記入出力インターフェース・モジュールに関連付けられた出力FIFOバッファーに転移する一方、適切なアドレス及びタイミング・コマンドのメモリ・チップへの発行を調整する。
1つの実施例では、前記制御装置802は、以前のコマンドに関連付けられたデータ転送が完了する前に、次のコマンド情報のセットを受け取り、従ってシステムが最大の帯域で作動することを可能にする。
物理RAMメモリへの、又は物理RAMからの、データ移転を制御する時の前記制御装置802の概略の作動は、図16及び17に一般的に反映されている。
最初に図16を参照するが、前記物理RAMメモリの1つの特定の配置が示されている。図16の実施態様では、制御装置802が図示され、及び前記制御装置802及び物理RAMメモリの間の接続が示されている。この例では、前記制御装置802に連結された物理RAMメモリは、4つのセクション(1602、1604、1606、及び1608)に分割された72個のメモリ・チップの形態をとり、それぞれのセクションが18個のメモリ・チップを有する。この例では、それぞれのメモリ・チップが、4つのバンク(A、B、C、D)を有する。メモリ・チップは、それらが以下のものを共有するように連結される:(a)アドレス及び制御回線(この実施例では22)、及び(b)データ回線(この実施例では72)。図16に示される連結は物理メモリ・チップを制御装置802に接続するただ1つの方法である。4つのセクションの全ては、個別の制御バスを持つにもかかわらず、調和して作動し、及び同時に同じバンクに対してコマンドが発行される。
メモリ制御装置802の操作に関する追加的な詳細は、図17に見出すことができる。図17は、2つの基本メモリ周期(ここでは第二の基本メモリ周期は未完成として示されている)を通じた前記制御装置802の操作を図示している。一般にそれぞれのメモリ周期は32個の288ビットのワードのDDRメモリへの(又は、DDRメモリからの)移転を含む。この特定の実施例では、この移転は、16の実際のクロック周期を通じて起きる。333MHzでは、これは、それぞれのメモリ・カードに対して、48nsごとに1Kバイトのデータ、又は20.83Gバイト/秒(データ単独)の移転速度を提供する。図7に反映されているシステムが、多数のメモリ・カードを持つことができることを考慮すると、システムの合計の帯域幅は20.83Gバイト/秒よりも顕著に高くなることができ、及び5個以上のメモリ・カードが用いられる場合には、100Gバイト/秒を超えることができる。
図17を参照するが、コマンド・バスを通じてそれぞれのセクションに付随するメモリのバンクAを活性化することにより、基本メモリ周期が開始される。これは、図17の例ではクロック周期1で起きる。4クロック周期後の、クロック周期5では、活性化コマンドが、バンクBに提供される。4周期後の、クロック周期9では、バンクCが活性化され、及びそれより4周期後の、クロック周期13では、バンクDが活性化される。さまざまなバンクを選択的に活性化するこのアプローチは、バンクAは、バンクAに対する次の活性化(activate)コマンドが発行される周期6及び19の間にプレチャージされるために、いかなる物理的プレチャージ時間(precharge time)に違反しないことを可能にする。
さまざまなバンクのそれぞれに対して、バンクが活性化された5周期後に、データ転送が、READであるか、又はWRITEであるかを示すコマンドがその特定のバンクにアサートされる。従って、これは、バンクAに対してはクロック周期6で、バンクBに対してはクロック周期10で、バンクCに対してはクロック周期14で、及びバンクDに対してはクロック周期18で起きる。
移転がREADであるか、又はWRITEであるかの指示の供給の5クロック周期後に、4つの連続周期の間、データがデータ回線に提供される。ダブルデータレート(DDR)でデータが移転されるために、それぞれのメモリクロック周期の間に2ワードが移転される。従ってそれぞれのバンクについて、基本メモリ周期全体にわたって8個の288ビットのワードのデータが移転される(図17中のデータ・バスに対する表記であるW0は、2つの288ビットのワードを包含する)。
説明されている基本メモリ周期の間のデータ転送のコースの間に、クロック周期19でのバンクAに対する活性化コマンドのアサーションにより、次のメモリ周期に対する基本メモリ周期が開始される。次の基本メモリ周期の残りは、第一の基本メモリ周期に関して上記で以前に記述したことに従う。
上記が示すように、完全な1キロバイトのデータが、基本メモリ周期ごとに移転される。一実施態様では、このシステムは、512バイトだけが移転される「ハーフライト」周期を提供できる。そのような半選択書き込み周期では、2つだけの連続したバンクの活性化がアサートされる(例えば、バンクA及びB、又はバンクC及びD)。その他のバンクは、周期の間、アイドル状態にとどまる。移転についてのTARGET ADDRESSは、移転のために4つのバンクの内のどの2つを活性化するかを決定する。
上記の実施態様は説明的であり、及び限定的ではない。上述された本発明の1つ以上の態様を用いる、他の及び更なる開示される実施態様の趣旨を逸脱することなく、他の更なる実施態様を考案することができる。更に、本明細書に記載されたステップの順序は、特別に限定される場合を除き、さまざまな配列で起こることができる。本明細書に記載されたさまざまなステップは、他のステップと組み合わせること、公表されたステップの間に差し挟むこと、及び/又は複数のステップに分割することができる。同様に、素子は機能的に記載されており、及び個別の構成要素として具体化することができ、又は複数の機能を有する構成要素に組み合わせることができる。
開示されている実施態様は、好適な他の実施態様との関連で記載され、全ての実施態様は記載されていない。記載されている実施態様への明白な修正、及び変形は、当業者には利用可能である。開示されている、及び開示されていない実施態様は、本出願人により着想された、本発明の範囲及び適用性を限定、又は制限することを意図していない。本出願人は、以下の特許請求の範囲又は等価物の範囲内に含まれる、そのような修正及び改良の全てを完全に保護することを意図している。

Claims (7)

  1. 高速シリアル通信を有するフラッシュ・ベースのメモリ・システムであって:
    複数の入出力モジュールであり、それぞれの入出力モジュールは1つ以上の外部通信リンクを通じて、外部デバイスと通信するように構成されている複数の入出力モジュール;
    複数のフラッシュ・ベースのメモリ・カードであって、それぞれのフラッシュ・ベースのメモリ・カードは複数のフラッシュ・メモリ素子を含み、それぞれのフラッシュ・メモリ素子は、ブロックに分割された物理メモリ・スペースを有し、それぞれのブロックは更にページに分割されており、それぞれのページは、その上でメモリ操作が遂行される、個別にアドレス可能なメモリロケーションを表し、多数のそのようなメモリロケーションは、1ブロックのグルーピング内で、同時に消去可能である、それぞれの複数のフラッシュ・ベースのメモリ・カード;並びに
    複数のクロスバー・スイッチング素子であって、それぞれのクロスバー・スイッチング素子は、フラッシュ・ベースのメモリ・カードのそれぞれの1つと接続され、及び前記入出力モジュールのそれぞれの1つが、フラッシュ・ベースのメモリ・カードのそれぞれの1つと通信することが可能なように構成されている、複数のクロスバー・スイッチング素子とを含み、
    それぞれの入出力モジュールは、それぞれのクロスバー・スイッチング素子と、高速シリアル通信リンクにより接続され、それぞれの高速シリアル通信リンクは、それぞれの入出力モジュールが、それぞれのクロスバー・スイッチング素子への、及びクロスバー・スイッチング素子からのコマンド、命令、及び/又はデータを表すビットを送受信することを可能にし、並びにそれぞれのクロスバー・スイッチング素子は、フラッシュ・ベースのメモリ・カードのそれぞれの1つに、複数の並列通信リンクにより接続され、それぞれの並列通信リンクは、1つのクロスバー・スイッチング素子を、フラッシュ・ベースのメモリ・カードのそれぞれの1つのフラッシュ・メモリ素子の1つと接続している、フラッシュ・ベースのメモリ・システム
  2. 入出力モジュールから送信されるコマンド、命令、及び/又はデータを表す前記ビットが、読み出し−修正−書き込みを含むDMA要求を含む直接メモリ・アクセス(DMA)要求の一部である、請求項1に記載のフラッシュ・ベースのメモリ・システム
  3. 前記入出力モジュールが、以下のプロトコル:ファイバー・チャンネル(Fibre Channel)、インフィニバンド(InfiniBand)、イーサーネット(Ethernet)、及び前面パネル・データ・ポート(Front Panel Data Port)のうちの1つを含む高速通信プロトコルを用いる1つ以上の外部通信リンクを通じて、外部デバイスと通信するために構成されている請求項1に記載のフラッシュ・ベースのメモリ・システム
  4. それぞれの前記入出力モジュールが、高速通信プロトコルを用いる1つ以上の外部通信リンクを通じて、前記入出力モジュールが外部デバイスと通信可能とするために構成された高速インターフェースを含む、請求項3に記載のフラッシュ・ベースのメモリ・システム
  5. それぞれの前記入出力モジュールが、更に複数のマルチ・ギガビット・トランシーバーを有する高速制御装置を含み、1つの前記マルチ・ギガビット・トランシーバーは前記入出力モジュールに接続されたそれぞれの高速シリアル通信リンクのためであり、それぞれの前記入出力モジュールは、前記マルチ・ギガビット・トランシーバーを用いて、それぞれの前記クロスバー・スイッチング素子との間のコマンド、命令及び/又はデータを表すビットを送受信するために構成される、請求項4に記載のフラッシュ・ベースのメモリ・システム
  6. それぞれの前記入出力モジュールが、更にCPU及び共有スイッチング素子を含み、この共有スイッチング素子は、CPU、1つ以上の外部通信リンクを介する外部デバイス、及び前記マルチ・ギガビット・トランシーバーの間の通信を規制するために構成されている、請求項5に記載のフラッシュ・ベースのメモリ・システム
  7. それぞれの前記クロスバー・スイッチング素子が、複数のマルチ・ギガビット・トランシーバーを有する高速制御装置を含み、それぞれの高速シリアル通信リンクのための1つの前記マルチ・ギガビット・トランシーバーは前記クロスバー・スイッチング素子に接続され、それぞれの前記クロスバー・スイッチング素子は、前記マルチ・ギガビット・トランシーバーを用いて、それぞれの前記入出力モジュールとの間のコマンド、命令及び/又はデータを表すビットを送受信するために構成される、請求項1に記載のフラッシュ・ベースのメモリ・システム
JP2013530377A 2010-09-24 2011-09-23 高速メモリ・システム Expired - Fee Related JP5872560B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US38623710P 2010-09-24 2010-09-24
US61/386,237 2010-09-24
PCT/US2011/053129 WO2012040649A2 (en) 2010-09-24 2011-09-23 High-speed memory system

Publications (3)

Publication Number Publication Date
JP2014501950A JP2014501950A (ja) 2014-01-23
JP2014501950A5 JP2014501950A5 (ja) 2016-01-14
JP5872560B2 true JP5872560B2 (ja) 2016-03-01

Family

ID=45871943

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013530377A Expired - Fee Related JP5872560B2 (ja) 2010-09-24 2011-09-23 高速メモリ・システム

Country Status (6)

Country Link
US (4) US8386887B2 (ja)
JP (1) JP5872560B2 (ja)
CN (1) CN103229155B (ja)
DE (1) DE112011103208T5 (ja)
GB (1) GB2513551B (ja)
WO (1) WO2012040649A2 (ja)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
US8386887B2 (en) * 2010-09-24 2013-02-26 Texas Memory Systems, Inc. High-speed memory system
US8949509B2 (en) * 2010-12-06 2015-02-03 OCZ Storage Solutions Inc. Mass storage systems and methods using solid-state storage media and ancillary interfaces for direct communication between memory cards
US8446170B2 (en) * 2011-05-05 2013-05-21 Actel Corporation FPGA RAM blocks optimized for use as register files
US9065644B2 (en) * 2011-06-23 2015-06-23 Futurewei Technologies, Inc. Full duplex transmission method for high speed backplane system
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
US9740439B2 (en) * 2011-12-23 2017-08-22 International Business Machines Corporation Solid-state storage management
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US9665503B2 (en) 2012-05-22 2017-05-30 Xockets, Inc. Efficient packet handling, redirection, and inspection using offload processors
US20130318268A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Offloading of computation for rack level servers and corresponding methods and systems
US20140089561A1 (en) 2012-09-26 2014-03-27 Kiran Pangal Techniques Associated with Protecting System Critical Data Written to Non-Volatile Memory
WO2014103144A1 (ja) * 2012-12-28 2014-07-03 パナソニック株式会社 インタフェース装置、およびメモリバスシステム
US9378161B1 (en) 2013-01-17 2016-06-28 Xockets, Inc. Full bandwidth packet handling with server systems including offload processors
WO2014113055A1 (en) 2013-01-17 2014-07-24 Xockets IP, LLC Offload processor modules for connection to system memory
US10025735B2 (en) * 2013-01-31 2018-07-17 Seagate Technology Llc Decoupled locking DMA architecture
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9971524B1 (en) 2013-03-15 2018-05-15 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9720603B1 (en) 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9639356B2 (en) 2013-03-15 2017-05-02 Qualcomm Incorporated Arbitrary size table lookup and permutes with crossbar
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9734067B1 (en) 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US9875205B1 (en) * 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US9858084B2 (en) 2013-03-15 2018-01-02 Bitmicro Networks, Inc. Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9519615B2 (en) * 2013-04-09 2016-12-13 Emc Corporation Multiprocessor system with independent direct access to bulk solid state memory resources
CN104424124B (zh) * 2013-09-10 2018-07-06 联想(北京)有限公司 内存装置、电子设备和用于控制内存装置的方法
CN103645999A (zh) * 2013-12-07 2014-03-19 天津光电通信技术有限公司 基于fpga实现8通道收发串口的高速板卡
US9639285B2 (en) * 2014-03-13 2017-05-02 Aupera Technologies, Inc. Distributed raid in a flash based memory system
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US9747048B2 (en) * 2014-06-02 2017-08-29 Micron Technology, Inc. Systems and methods for packing data in a scalable memory system protocol
US10031860B2 (en) 2014-09-24 2018-07-24 Western Digital Technologies, Inc. Memory transfer of objects in a data storage device
US9851901B2 (en) 2014-09-26 2017-12-26 Western Digital Technologies, Inc. Transfer of object memory references in a data storage device
TWI553483B (zh) * 2014-10-13 2016-10-11 瑞昱半導體股份有限公司 處理器及存取記憶體的方法
US10452557B2 (en) 2015-01-28 2019-10-22 Hitachi, Ltd. Storage apparatus, computer system, and method for improved read operation handling
JP5939323B1 (ja) 2015-02-10 2016-06-22 日本電気株式会社 情報処理装置、情報処理方法、及び、プログラム
KR102417182B1 (ko) 2015-06-22 2022-07-05 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
JP6403162B2 (ja) * 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
US9577854B1 (en) 2015-08-20 2017-02-21 Micron Technology, Inc. Apparatuses and methods for asymmetric bi-directional signaling incorporating multi-level encoding
US10423354B2 (en) * 2015-09-23 2019-09-24 Advanced Micro Devices, Inc. Selective data copying between memory modules
WO2017072868A1 (ja) * 2015-10-28 2017-05-04 株式会社日立製作所 ストレージ装置
US10120749B2 (en) * 2016-09-30 2018-11-06 Intel Corporation Extended application of error checking and correction code in memory
KR20180092476A (ko) * 2017-02-09 2018-08-20 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US10164817B2 (en) 2017-03-21 2018-12-25 Micron Technology, Inc. Methods and apparatuses for signal translation in a buffered memory
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
US10705912B2 (en) * 2017-06-07 2020-07-07 Rambus Inc. Energy efficient storage of error-correction-detection information
US10216685B1 (en) * 2017-07-19 2019-02-26 Agiga Tech Inc. Memory modules with nonvolatile storage and rapid, sustained transfer rates
KR102504293B1 (ko) 2017-11-29 2023-02-27 삼성전자 주식회사 패키지 온 패키지 형태의 반도체 패키지
US10515173B2 (en) * 2017-12-29 2019-12-24 Advanced Micro Devices, Inc. Input-output processing on a remote integrated circuit chip
CN109144943A (zh) * 2018-06-26 2019-01-04 深圳市安信智控科技有限公司 基于高速串行通道互连的计算芯片与存储器芯片组合***
US10635610B1 (en) 2019-03-14 2020-04-28 Toshiba Memory Corporation System and method for serial interface memory using switched architecture
CN109933292B (zh) * 2019-03-21 2023-06-09 深圳文脉国际传媒有限公司 存储器命令处理方法、终端及存储介质
CN110188066B (zh) * 2019-05-07 2021-02-02 方一信息科技(上海)有限公司 一种针对大容量数据的FPGA和基于opencl的FPGA算法
TW202141290A (zh) 2020-01-07 2021-11-01 韓商愛思開海力士有限公司 記憶體中處理(pim)系統和pim系統的操作方法
US11315611B2 (en) * 2020-01-07 2022-04-26 SK Hynix Inc. Processing-in-memory (PIM) system and operating methods of the PIM system
US11385837B2 (en) 2020-01-07 2022-07-12 SK Hynix Inc. Memory system
US20230205420A1 (en) * 2021-12-29 2023-06-29 Advanced Micro Devices, Inc. Flexible memory system
US20240220430A1 (en) * 2023-01-04 2024-07-04 Mercedes-Benz Group AG System, device and/or method for processing direct memory access gather and scatter requests

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438146B1 (en) 1998-04-13 2002-08-20 International Business Machines Corporation Multiplexed asynchronous serial communication systems methods and computer program products
US6609167B1 (en) 1999-03-17 2003-08-19 Adaptec, Inc. Host and device serial communication protocols and communication packet formats
US6148354A (en) 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
US6654831B1 (en) 2000-03-07 2003-11-25 International Business Machine Corporation Using multiple controllers together to create data spans
KR100462069B1 (ko) * 2000-12-21 2004-12-17 엘지전자 주식회사 인터넷 텔레포니 게이트웨이 시스템에서 상태 관리 방법
ITVA20010035A1 (it) * 2001-10-16 2003-04-16 St Microelectronics Srl Dispositivo di memoria non volatile con doppia interfaccia di comunicazione seriale/parallela
JP2003124997A (ja) * 2001-10-17 2003-04-25 Fujitsu Ltd パケット処理を行う伝送路終端装置
CA2366397A1 (en) * 2001-12-31 2003-06-30 Tropic Networks Inc. An interface for data transfer between integrated circuits
JP3815400B2 (ja) * 2002-08-08 2006-08-30 ソニー株式会社 アダプタ装置
EP1424635B1 (en) * 2002-11-28 2008-10-29 STMicroelectronics S.r.l. Non volatile memory device architecture, for instance a flash kind, having a serial communication interface
US7109728B2 (en) * 2003-02-25 2006-09-19 Agilent Technologies, Inc. Probe based information storage for probes used for opens detection in in-circuit testing
US7000056B2 (en) * 2003-03-28 2006-02-14 Intel Corporation Method and apparatus for detecting low pin count and serial peripheral interfaces
US20040255054A1 (en) 2003-06-10 2004-12-16 Khein-Seng Pua High-speed data transmission device
US20050050237A1 (en) * 2003-08-28 2005-03-03 Jeddeloh Joseph M. Memory module and method having on-board data search capabilities and processor-based system using such memory modules
JP4080980B2 (ja) * 2003-09-26 2008-04-23 三菱電機株式会社 電子制御装置
US7652922B2 (en) * 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
WO2007036050A1 (en) * 2005-09-30 2007-04-05 Mosaid Technologies Incorporated Memory with output control
US7360137B2 (en) * 2006-05-04 2008-04-15 Westell Technologies, Inc. Flash programmer for programming NAND flash and NOR/NAND combined flash
US7676729B2 (en) * 2006-08-23 2010-03-09 Sun Microsystems, Inc. Data corruption avoidance in DRAM chip sparing
US9058306B2 (en) * 2006-08-31 2015-06-16 Dell Products L.P. Redundant storage enclosure processor (SEP) implementation for use in serial attached SCSI (SAS) environment
US8794526B2 (en) * 2007-06-04 2014-08-05 Hand Held Products, Inc. Indicia reading terminal processing plurality of frames of image data responsively to trigger signal activation
JP4760778B2 (ja) * 2007-06-11 2011-08-31 Tdk株式会社 フラッシュメモリシステム及び同システムに組み込まれるフラッシュメモリモジュール
KR100934227B1 (ko) * 2007-09-21 2009-12-29 한국전자통신연구원 개방형 시리얼 정합 방식을 이용한 메모리 스위칭 컨트롤장치, 그의 동작 방법 및 이에 적용되는 데이터 저장 장치
US8245101B2 (en) 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
US8386887B2 (en) * 2010-09-24 2013-02-26 Texas Memory Systems, Inc. High-speed memory system

Also Published As

Publication number Publication date
JP2014501950A (ja) 2014-01-23
DE112011103208T5 (de) 2013-10-02
GB2513551B (en) 2018-01-10
US20120079352A1 (en) 2012-03-29
GB201304421D0 (en) 2013-04-24
US8386887B2 (en) 2013-02-26
CN103229155A (zh) 2013-07-31
GB2513551A (en) 2014-11-05
US20140215290A1 (en) 2014-07-31
US9110831B2 (en) 2015-08-18
US20130145088A1 (en) 2013-06-06
US9619419B2 (en) 2017-04-11
WO2012040649A3 (en) 2012-06-28
CN103229155B (zh) 2016-11-09
US8694863B2 (en) 2014-04-08
US20150356044A1 (en) 2015-12-10
WO2012040649A2 (en) 2012-03-29

Similar Documents

Publication Publication Date Title
JP5872560B2 (ja) 高速メモリ・システム
US9063561B2 (en) Direct memory access for loopback transfers in a media controller architecture
US7877524B1 (en) Logical address direct memory access with multiple concurrent physical ports and internal switching
US7660911B2 (en) Block-based data striping to flash memory
US6401149B1 (en) Methods for context switching within a disk controller
US7761642B2 (en) Serial advanced technology attachment (SATA) and serial attached small computer system interface (SCSI) (SAS) bridging
US7412571B2 (en) Memory arbitration system and method having an arbitration packet protocol
US7246191B2 (en) Method and apparatus for memory interface
US7308523B1 (en) Flow-splitting and buffering PCI express switch to reduce head-of-line blocking
US6715000B2 (en) Method and device for providing high data rate for a serial peripheral interface
US20090024776A1 (en) High data rate serial peripheral interface
WO2007005553A1 (en) Serial ata port addressing
US20050186832A1 (en) Dual port serial advanced technology attachment (SATA) disk drive
CN1098527A (zh) 外部件互联为基础的计算机***的直接存储器存取逻辑支持
US20030172224A1 (en) DMA mechanism for high-speed packet bus
US20020184453A1 (en) Data bus system including posted reads and writes
US6633927B1 (en) Device and method to minimize data latency and maximize data throughput using multiple data valid signals
KR20050119677A (ko) 기회적 판독 완료 결합
US20220374369A1 (en) Data bus communications
KR20020019437A (ko) 디스크 제어장치의 메모리 구조에 대한 시스템 및 방법
US20060015774A1 (en) System and method for transmitting data in storage controllers
KR970011888B1 (ko) 컴퓨터 시스템용 정보 처리 시스템 및 컴퓨터 시스템내의 데이타 전송 관리 방법
JP2012178637A (ja) 記憶装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150812

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150908

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20151119

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: 20151215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160113

R150 Certificate of patent or registration of utility model

Ref document number: 5872560

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees